diff --git a/.github/workflows/compile-queries.yml b/.github/workflows/compile-queries.yml index c44aa56a7530..bc8a9f8666d6 100644 --- a/.github/workflows/compile-queries.yml +++ b/.github/workflows/compile-queries.yml @@ -10,6 +10,7 @@ on: jobs: compile-queries: + if: github.repository_owner == 'github' runs-on: ubuntu-latest-xl steps: diff --git a/.github/workflows/csharp-qltest.yml b/.github/workflows/csharp-qltest.yml index f9e1db3f4c7f..cc9520de0e25 100644 --- a/.github/workflows/csharp-qltest.yml +++ b/.github/workflows/csharp-qltest.yml @@ -46,6 +46,7 @@ jobs: xargs codeql execute upgrades testdb diff -q testdb/semmlecode.csharp.dbscheme downgrades/initial/semmlecode.csharp.dbscheme qltest: + if: github.repository_owner == 'github' runs-on: ubuntu-latest-xl strategy: fail-fast: false diff --git a/.github/workflows/go-tests-other-os.yml b/.github/workflows/go-tests-other-os.yml index 8b0395fad906..9c489d38600a 100644 --- a/.github/workflows/go-tests-other-os.yml +++ b/.github/workflows/go-tests-other-os.yml @@ -46,6 +46,7 @@ jobs: make test cache="${{ steps.query-cache.outputs.cache-dir }}" test-win: + if: github.repository_owner == 'github' name: Test Windows runs-on: windows-latest-xl steps: diff --git a/.github/workflows/go-tests.yml b/.github/workflows/go-tests.yml index 9d518ac70b65..9a6b2bde7d70 100644 --- a/.github/workflows/go-tests.yml +++ b/.github/workflows/go-tests.yml @@ -19,6 +19,7 @@ env: GO_VERSION: '~1.21.0' jobs: test-linux: + if: github.repository_owner == 'github' name: Test Linux (Ubuntu) runs-on: ubuntu-latest-xl steps: diff --git a/.github/workflows/qhelp-pr-preview.yml b/.github/workflows/qhelp-pr-preview.yml index 8b20fbe00c96..db267175d4e9 100644 --- a/.github/workflows/qhelp-pr-preview.yml +++ b/.github/workflows/qhelp-pr-preview.yml @@ -77,7 +77,7 @@ jobs: done < "${RUNNER_TEMP}/paths.txt" >> comment_body.txt exit "${EXIT_CODE}" - - if: always() + - if: ${{ !cancelled() }} uses: actions/upload-artifact@v3 with: name: comment diff --git a/.github/workflows/ql-for-ql-build.yml b/.github/workflows/ql-for-ql-build.yml index e8ac1fa0f173..c5d237fc0d3d 100644 --- a/.github/workflows/ql-for-ql-build.yml +++ b/.github/workflows/ql-for-ql-build.yml @@ -11,6 +11,7 @@ env: jobs: analyze: + if: github.repository_owner == 'github' runs-on: ubuntu-latest-xl steps: ### Build the queries ### diff --git a/.github/workflows/ruby-build.yml b/.github/workflows/ruby-build.yml index 392c6ff83026..617346470699 100644 --- a/.github/workflows/ruby-build.yml +++ b/.github/workflows/ruby-build.yml @@ -111,6 +111,7 @@ jobs: ruby/extractor/target/release/codeql-extractor-ruby.exe retention-days: 1 compile-queries: + if: github.repository_owner == 'github' runs-on: ubuntu-latest-xl steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/ruby-qltest.yml b/.github/workflows/ruby-qltest.yml index 19d5325091fd..fbac0488b51f 100644 --- a/.github/workflows/ruby-qltest.yml +++ b/.github/workflows/ruby-qltest.yml @@ -50,6 +50,7 @@ jobs: xargs codeql execute upgrades testdb diff -q testdb/ruby.dbscheme downgrades/initial/ruby.dbscheme qltest: + if: github.repository_owner == 'github' runs-on: ubuntu-latest-xl strategy: fail-fast: false diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index ff9cd29e238d..a461fbfdf8ce 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -37,36 +37,40 @@ jobs: # not using a matrix as you cannot depend on a specific job in a matrix, and we want to start linux checks # without waiting for the macOS build build-and-test-macos: + if: github.repository_owner == 'github' runs-on: macos-12-xl steps: - uses: actions/checkout@v4 - uses: ./swift/actions/build-and-test build-and-test-linux: + if: github.repository_owner == 'github' runs-on: ubuntu-latest-xl steps: - uses: actions/checkout@v4 - uses: ./swift/actions/build-and-test qltests-linux: + if: github.repository_owner == 'github' needs: build-and-test-linux runs-on: ubuntu-latest-xl steps: - uses: actions/checkout@v4 - uses: ./swift/actions/run-ql-tests qltests-macos: - if : ${{ github.event_name == 'pull_request' }} + if: ${{ github.repository_owner == 'github' && github.event_name == 'pull_request' }} needs: build-and-test-macos runs-on: macos-12-xl steps: - uses: actions/checkout@v4 - uses: ./swift/actions/run-ql-tests integration-tests-linux: + if: github.repository_owner == 'github' needs: build-and-test-linux runs-on: ubuntu-latest-xl steps: - uses: actions/checkout@v4 - uses: ./swift/actions/run-integration-tests integration-tests-macos: - if : ${{ github.event_name == 'pull_request' }} + if: ${{ github.repository_owner == 'github' && github.event_name == 'pull_request' }} needs: build-and-test-macos runs-on: macos-12-xl timeout-minutes: 60 diff --git a/cpp/ql/lib/change-notes/2024-02-06-flow-out-barrier-function.md b/cpp/ql/lib/change-notes/2024-02-06-flow-out-barrier-function.md deleted file mode 100644 index 70accc67d4c5..000000000000 --- a/cpp/ql/lib/change-notes/2024-02-06-flow-out-barrier-function.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added an abstract class `FlowOutBarrierFunction` that can be used to block flow out of a function. \ No newline at end of file diff --git a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll index 737ad223ac57..68023574c3a8 100644 --- a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll +++ b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll @@ -835,7 +835,11 @@ private predicate namedExprChildPredicates(Expr expr, Element ele, string pred) or expr.(OverloadedArrayExpr).getArrayOffset() = ele and pred = "getArrayOffset()" or - expr.(OverloadedPointerDereferenceExpr).getExpr() = ele and pred = "getExpr()" + // OverloadedPointerDereferenceExpr::getExpr/0 also considers qualifiers, which are already handled above for all Call classes. + not expr.(OverloadedPointerDereferenceExpr).getQualifier() = + expr.(OverloadedPointerDereferenceExpr).getExpr() and + expr.(OverloadedPointerDereferenceExpr).getExpr() = ele and + pred = "getExpr()" or expr.(CommaExpr).getLeftOperand() = ele and pred = "getLeftOperand()" or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 1af95d1bd698..7d4bb6f58663 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -709,7 +709,7 @@ class FinalGlobalValue extends Node, TFinalGlobalValue { override DataFlowType getType() { exists(int indirectionIndex | indirectionIndex = globalUse.getIndirectionIndex() and - result = getTypeImpl(globalUse.getUnspecifiedType(), indirectionIndex - 1) + result = getTypeImpl(globalUse.getUnderlyingType(), indirectionIndex - 1) ) } @@ -740,7 +740,7 @@ class InitialGlobalValue extends Node, TInitialGlobalValue { override DataFlowType getType() { exists(DataFlowType type | - type = globalDef.getUnspecifiedType() and + type = globalDef.getUnderlyingType() and if this.isGLValue() then result = type else result = getTypeImpl(type, globalDef.getIndirectionIndex() - 1) @@ -943,10 +943,13 @@ private Type getTypeImpl0(Type t, int indirectionIndex) { indirectionIndex > 0 and exists(Type stripped | stripped = stripPointer(t.stripTopLevelSpecifiers()) and - // We need to avoid the case where `stripPointer(t) = t` (which can happen on - // iterators that specify a `value_type` that is the iterator itself). Such a type - // would create an infinite loop otherwise. For these cases we simply don't produce - // a result for `getTypeImpl`. + // We need to avoid the case where `stripPointer(t) = t` (which can happen + // on iterators that specify a `value_type` that is the iterator itself). + // Such a type would create an infinite loop otherwise. For these cases we + // simply don't produce a result for `getTypeImpl`. + // To be on the safe side, we check whether the _unspecified_ type has + // changed since this also prevents an infinite loop when `stripped` and + // `t` only differ by const'ness or volatile'ness. stripped.getUnspecifiedType() != t.getUnspecifiedType() and result = getTypeImpl0(stripped, indirectionIndex - 1) ) @@ -996,12 +999,14 @@ private module RawIndirectNodes { override Declaration getEnclosingCallable() { result = this.getFunction() } + override predicate isGLValue() { this.getOperand().isGLValue() } + override DataFlowType getType() { exists(int sub, DataFlowType type, boolean isGLValue | type = getOperandType(this.getOperand(), isGLValue) and if isGLValue = true then sub = 1 else sub = 0 | - result = getTypeImpl(type.getUnspecifiedType(), indirectionIndex - sub) + result = getTypeImpl(type.getUnderlyingType(), indirectionIndex - sub) ) } @@ -1038,12 +1043,14 @@ private module RawIndirectNodes { override Declaration getEnclosingCallable() { result = this.getFunction() } + override predicate isGLValue() { this.getInstruction().isGLValue() } + override DataFlowType getType() { exists(int sub, DataFlowType type, boolean isGLValue | type = getInstructionType(this.getInstruction(), isGLValue) and if isGLValue = true then sub = 1 else sub = 0 | - result = getTypeImpl(type.getUnspecifiedType(), indirectionIndex - sub) + result = getTypeImpl(type.getUnderlyingType(), indirectionIndex - sub) ) } @@ -1136,7 +1143,7 @@ class FinalParameterNode extends Node, TFinalParameterNode { override Declaration getEnclosingCallable() { result = this.getFunction() } - override DataFlowType getType() { result = getTypeImpl(p.getUnspecifiedType(), indirectionIndex) } + override DataFlowType getType() { result = getTypeImpl(p.getUnderlyingType(), indirectionIndex) } final override Location getLocationImpl() { // Parameters can have multiple locations. When there's a unique location we use @@ -1789,7 +1796,7 @@ class VariableNode extends Node, TVariableNode { } override DataFlowType getType() { - result = getTypeImpl(v.getUnspecifiedType(), indirectionIndex - 1) + result = getTypeImpl(v.getUnderlyingType(), indirectionIndex - 1) } final override Location getLocationImpl() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll index bc511d6f340a..e64f22858217 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ProductFlow.qll @@ -507,13 +507,13 @@ module ProductFlow { private predicate pathSuccPlus(TNodePair n1, TNodePair n2) = fastTC(pathSucc/2)(n1, n2) private predicate localPathStep1(Flow1::PathNode pred, Flow1::PathNode succ) { - Flow1::PathGraph::edges(pred, succ) and + Flow1::PathGraph::edges(pred, succ, _, _) and pragma[only_bind_out](pred.getNode().getEnclosingCallable()) = pragma[only_bind_out](succ.getNode().getEnclosingCallable()) } private predicate localPathStep2(Flow2::PathNode pred, Flow2::PathNode succ) { - Flow2::PathGraph::edges(pred, succ) and + Flow2::PathGraph::edges(pred, succ, _, _) and pragma[only_bind_out](pred.getNode().getEnclosingCallable()) = pragma[only_bind_out](succ.getNode().getEnclosingCallable()) } @@ -530,7 +530,7 @@ module ProductFlow { TJump() private predicate intoImpl1(Flow1::PathNode pred1, Flow1::PathNode succ1, DataFlowCall call) { - Flow1::PathGraph::edges(pred1, succ1) and + Flow1::PathGraph::edges(pred1, succ1, _, _) and pred1.getNode().(ArgumentNode).getCall() = call and succ1.getNode() instanceof ParameterNode } @@ -543,7 +543,7 @@ module ProductFlow { } private predicate outImpl1(Flow1::PathNode pred1, Flow1::PathNode succ1, DataFlowCall call) { - Flow1::PathGraph::edges(pred1, succ1) and + Flow1::PathGraph::edges(pred1, succ1, _, _) and exists(ReturnKindExt returnKind | succ1.getNode() = returnKind.getAnOutNode(call) and pred1.getNode().(ReturnNodeExt).getKind() = returnKind @@ -558,7 +558,7 @@ module ProductFlow { } private predicate intoImpl2(Flow2::PathNode pred2, Flow2::PathNode succ2, DataFlowCall call) { - Flow2::PathGraph::edges(pred2, succ2) and + Flow2::PathGraph::edges(pred2, succ2, _, _) and pred2.getNode().(ArgumentNode).getCall() = call and succ2.getNode() instanceof ParameterNode } @@ -571,7 +571,7 @@ module ProductFlow { } private predicate outImpl2(Flow2::PathNode pred2, Flow2::PathNode succ2, DataFlowCall call) { - Flow2::PathGraph::edges(pred2, succ2) and + Flow2::PathGraph::edges(pred2, succ2, _, _) and exists(ReturnKindExt returnKind | succ2.getNode() = returnKind.getAnOutNode(call) and pred2.getNode().(ReturnNodeExt).getKind() = returnKind @@ -590,7 +590,7 @@ module ProductFlow { Declaration predDecl, Declaration succDecl, Flow1::PathNode pred1, Flow1::PathNode succ1, TKind kind ) { - Flow1::PathGraph::edges(pred1, succ1) and + Flow1::PathGraph::edges(pred1, succ1, _, _) and predDecl != succDecl and pred1.getNode().getEnclosingCallable() = predDecl and succ1.getNode().getEnclosingCallable() = succDecl and @@ -610,7 +610,7 @@ module ProductFlow { Declaration predDecl, Declaration succDecl, Flow2::PathNode pred2, Flow2::PathNode succ2, TKind kind ) { - Flow2::PathGraph::edges(pred2, succ2) and + Flow2::PathGraph::edges(pred2, succ2, _, _) and predDecl != succDecl and pred2.getNode().getEnclosingCallable() = predDecl and succ2.getNode().getEnclosingCallable() = succDecl and diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 3e7cfbe9e114..bd63da2ab98e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -2,11 +2,8 @@ private import codeql.ssa.Ssa as SsaImplCommon private import semmle.code.cpp.ir.IR private import DataFlowUtil private import DataFlowImplCommon as DataFlowImplCommon -private import semmle.code.cpp.ir.dataflow.internal.ModelUtil private import semmle.code.cpp.models.interfaces.Allocation as Alloc private import semmle.code.cpp.models.interfaces.DataFlow as DataFlow -private import semmle.code.cpp.models.interfaces.FlowOutBarrier as FOB -private import semmle.code.cpp.models.interfaces.FunctionInputsAndOutputs as FIO private import semmle.code.cpp.ir.internal.IRCppLanguage private import DataFlowPrivate private import ssa0.SsaInternals as SsaInternals0 @@ -548,6 +545,11 @@ class GlobalUse extends UseImpl, TGlobalUse { */ Type getUnspecifiedType() { result = global.getUnspecifiedType() } + /** + * Gets the type of this use, after typedefs have been resolved. + */ + Type getUnderlyingType() { result = global.getUnderlyingType() } + override predicate isCertain() { any() } override BaseSourceVariableInstruction getBase() { none() } @@ -591,11 +593,16 @@ class GlobalDefImpl extends DefOrUseImpl, TGlobalDefImpl { int getIndirection() { result = indirectionIndex } /** - * Gets the type of this use after specifiers have been deeply stripped - * and typedefs have been resolved. + * Gets the type of this definition after specifiers have been deeply + * stripped and typedefs have been resolved. */ Type getUnspecifiedType() { result = global.getUnspecifiedType() } + /** + * Gets the type of this definition, after typedefs have been resolved. + */ + Type getUnderlyingType() { result = global.getUnderlyingType() } + override string toString() { result = "Def of " + this.getSourceVariable() } override Location getLocation() { result = f.getLocation() } @@ -787,30 +794,10 @@ private Node getAPriorDefinition(SsaDefOrUse defOrUse) { ) } -/** - * Holds if there should not be use-use flow out of `n` (or a conversion that - * flows to `n`). - */ -private predicate modeledFlowBarrier(Node n) { - exists(FIO::FunctionInput input, CallInstruction call | - call.getStaticCallTarget().(FOB::FlowOutBarrierFunction).isFlowOutBarrier(input) and - n = callInput(call, input) - ) - or - exists(Operand operand, Instruction instr, Node n0, int indirectionIndex | - modeledFlowBarrier(n0) and - nodeHasInstruction(n0, instr, indirectionIndex) and - conversionFlow(operand, instr, false, _) and - nodeHasOperand(n, operand, indirectionIndex) - ) -} - /** Holds if there is def-use or use-use flow from `nodeFrom` to `nodeTo`. */ predicate ssaFlow(Node nodeFrom, Node nodeTo) { exists(Node nFrom, boolean uncertain, SsaDefOrUse defOrUse | - ssaFlowImpl(defOrUse, nFrom, nodeTo, uncertain) and - not modeledFlowBarrier(nFrom) and - nodeFrom != nodeTo + ssaFlowImpl(defOrUse, nFrom, nodeTo, uncertain) and nodeFrom != nodeTo | if uncertain = true then nodeFrom = [nFrom, getAPriorDefinition(defOrUse)] else nodeFrom = nFrom ) @@ -1115,6 +1102,11 @@ class GlobalDef extends TGlobalDef, SsaDefOrUse { */ DataFlowType getUnspecifiedType() { result = global.getUnspecifiedType() } + /** + * Gets the type of this definition, after typedefs have been resolved. + */ + DataFlowType getUnderlyingType() { result = global.getUnderlyingType() } + /** Gets the `IRFunction` whose body is evaluated after this definition. */ IRFunction getIRFunction() { result = global.getIRFunction() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index c3c4bf897cc9..08908c29bca2 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -474,7 +474,6 @@ private module IRDeclarationEntries { * This class exists to work around the fact that `DeclStmt`s in some cases * do not have `DeclarationEntry`s. Currently, this is the case for: * - `DeclStmt`s in template instantiations. - * - `DeclStmt`s that are generated by the desugaring of range-based for-loops. * * So instead, the IR works with `IRDeclarationEntry`s that synthesize missing * `DeclarationEntry`s when there is no result for `DeclStmt::getDeclarationEntry`. diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll index a540c0a88b60..965ac8daf3bd 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Memset.qll @@ -22,11 +22,28 @@ private class MemsetFunctionModel extends ArrayFunction, DataFlowFunction, Alias ]) } + /** + * Gets the index of the parameter that specifies the fill character to insert, if any. + */ + private int getFillCharParameterIndex() { + ( + this.hasGlobalOrStdOrBslName("memset") + or + this.hasGlobalOrStdName("wmemset") + or + this.hasGlobalName(["__builtin_memset", "__builtin_memset_chk"]) + ) and + result = 1 + } + override predicate hasArrayOutput(int bufParam) { bufParam = 0 } override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { input.isParameter(0) and output.isReturnValue() + or + input.isParameter(this.getFillCharParameterIndex()) and + (output.isParameterDeref(0) or output.isReturnValueDeref()) } override predicate hasArrayWithVariableSize(int bufParam, int countParam) { diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll index cb757800d65e..446e659fac54 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll @@ -1,7 +1,6 @@ import semmle.code.cpp.models.interfaces.DataFlow import semmle.code.cpp.models.interfaces.Taint import semmle.code.cpp.models.interfaces.Alias -import semmle.code.cpp.models.interfaces.FlowOutBarrier /** * The standard function `swap`. A use of `swap` looks like this: @@ -9,7 +8,7 @@ import semmle.code.cpp.models.interfaces.FlowOutBarrier * std::swap(obj1, obj2) * ``` */ -private class Swap extends DataFlowFunction, FlowOutBarrierFunction { +private class Swap extends DataFlowFunction { Swap() { this.hasQualifiedName(["std", "bsl"], "swap") } override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { @@ -19,8 +18,6 @@ private class Swap extends DataFlowFunction, FlowOutBarrierFunction { input.isParameterDeref(1) and output.isParameterDeref(0) } - - override predicate isFlowOutBarrier(FunctionInput input) { input.isParameterDeref([0, 1]) } } /** @@ -29,9 +26,7 @@ private class Swap extends DataFlowFunction, FlowOutBarrierFunction { * obj1.swap(obj2) * ``` */ -private class MemberSwap extends TaintFunction, MemberFunction, AliasFunction, - FlowOutBarrierFunction -{ +private class MemberSwap extends TaintFunction, MemberFunction, AliasFunction { MemberSwap() { this.hasName("swap") and this.getNumberOfParameters() = 1 and @@ -52,8 +47,4 @@ private class MemberSwap extends TaintFunction, MemberFunction, AliasFunction, override predicate parameterEscapesOnlyViaReturn(int index) { index = 0 } override predicate parameterIsAlwaysReturned(int index) { index = 0 } - - override predicate isFlowOutBarrier(FunctionInput input) { - input.isQualifierObject() or input.isParameterDeref(0) - } } diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FlowOutBarrier.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/FlowOutBarrier.qll deleted file mode 100644 index d25e4381dccd..000000000000 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/FlowOutBarrier.qll +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Provides an abstract class for blocking flow out of functions. To use this - * QL library, create a QL class extending `FlowOutBarrierFunction` with a - * characteristic predicate that selects the function or set of functions you - * are modeling. Within that class, override the predicates provided by - * `FlowOutBarrierFunction` to match the flow within that function. - */ - -import semmle.code.cpp.Function -import FunctionInputsAndOutputs - -/** - * A library function for which flow should not continue after reaching one - * of its inputs. - * - * For example, since `std::swap(a, b)` swaps the values pointed to by `a` - * and `b` there should not be use-use flow out of `a` or `b`. - */ -abstract class FlowOutBarrierFunction extends Function { - /** - * Holds if use-use flow should not continue onwards after reaching - * the argument, qualifier, or buffer represented by `input`. - */ - pragma[nomagic] - abstract predicate isFlowOutBarrier(FunctionInput input); -} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-078/WordexpTainted.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-078/WordexpTainted.expected index 20bab064242a..f35b2230f15d 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-078/WordexpTainted.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-078/WordexpTainted.expected @@ -1,5 +1,5 @@ edges -| test.cpp:22:27:22:30 | **argv | test.cpp:29:13:29:20 | *filePath | +| test.cpp:22:27:22:30 | **argv | test.cpp:29:13:29:20 | *filePath | provenance | | nodes | test.cpp:22:27:22:30 | **argv | semmle.label | **argv | | test.cpp:29:13:29:20 | *filePath | semmle.label | *filePath | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected index fe7246092b67..94d399f6195e 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected @@ -1,7 +1,7 @@ edges -| test.cpp:22:17:22:21 | ... * ... | test.cpp:23:33:23:37 | size1 | -| test.cpp:37:24:37:27 | size | test.cpp:37:46:37:49 | size | -| test.cpp:45:36:45:40 | ... * ... | test.cpp:37:24:37:27 | size | +| test.cpp:22:17:22:21 | ... * ... | test.cpp:23:33:23:37 | size1 | provenance | | +| test.cpp:37:24:37:27 | size | test.cpp:37:46:37:49 | size | provenance | | +| test.cpp:45:36:45:40 | ... * ... | test.cpp:37:24:37:27 | size | provenance | | nodes | test.cpp:13:33:13:37 | ... * ... | semmle.label | ... * ... | | test.cpp:15:31:15:35 | ... * ... | semmle.label | ... * ... | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/array-access/ArrayAccessProductFlow.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/array-access/ArrayAccessProductFlow.expected index eab5aabce635..bb062dac2181 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/array-access/ArrayAccessProductFlow.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/array-access/ArrayAccessProductFlow.expected @@ -1,43 +1,43 @@ edges -| test.cpp:4:17:4:22 | call to malloc | test.cpp:6:9:6:11 | arr | -| test.cpp:4:17:4:22 | call to malloc | test.cpp:10:9:10:11 | arr | -| test.cpp:19:9:19:16 | *mk_array [p] | test.cpp:28:19:28:26 | call to mk_array [p] | -| test.cpp:19:9:19:16 | *mk_array [p] | test.cpp:50:18:50:25 | call to mk_array [p] | -| test.cpp:21:5:21:7 | *arr [post update] [p] | test.cpp:22:5:22:7 | *arr [p] | -| test.cpp:21:5:21:24 | ... = ... | test.cpp:21:5:21:7 | *arr [post update] [p] | -| test.cpp:21:13:21:18 | call to malloc | test.cpp:21:5:21:24 | ... = ... | -| test.cpp:22:5:22:7 | *arr [p] | test.cpp:19:9:19:16 | *mk_array [p] | -| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:31:9:31:11 | *arr [p] | -| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:35:9:35:11 | *arr [p] | -| test.cpp:31:9:31:11 | *arr [p] | test.cpp:31:13:31:13 | p | -| test.cpp:35:9:35:11 | *arr [p] | test.cpp:35:13:35:13 | p | -| test.cpp:39:27:39:29 | arr [p] | test.cpp:41:9:41:11 | *arr [p] | -| test.cpp:39:27:39:29 | arr [p] | test.cpp:45:9:45:11 | *arr [p] | -| test.cpp:41:9:41:11 | *arr [p] | test.cpp:41:13:41:13 | p | -| test.cpp:45:9:45:11 | *arr [p] | test.cpp:45:13:45:13 | p | -| test.cpp:50:18:50:25 | call to mk_array [p] | test.cpp:39:27:39:29 | arr [p] | -| test.cpp:55:5:55:7 | *arr [post update] [p] | test.cpp:56:5:56:7 | *arr [p] | -| test.cpp:55:5:55:24 | ... = ... | test.cpp:55:5:55:7 | *arr [post update] [p] | -| test.cpp:55:13:55:18 | call to malloc | test.cpp:55:5:55:24 | ... = ... | -| test.cpp:56:5:56:7 | *arr [p] | test.cpp:59:9:59:11 | *arr [p] | -| test.cpp:56:5:56:7 | *arr [p] | test.cpp:63:9:63:11 | *arr [p] | -| test.cpp:59:9:59:11 | *arr [p] | test.cpp:59:13:59:13 | p | -| test.cpp:63:9:63:11 | *arr [p] | test.cpp:63:13:63:13 | p | -| test.cpp:67:10:67:19 | **mk_array_p [p] | test.cpp:76:20:76:29 | *call to mk_array_p [p] | -| test.cpp:67:10:67:19 | **mk_array_p [p] | test.cpp:98:18:98:27 | *call to mk_array_p [p] | -| test.cpp:69:5:69:7 | *arr [post update] [p] | test.cpp:70:5:70:7 | *arr [p] | -| test.cpp:69:5:69:25 | ... = ... | test.cpp:69:5:69:7 | *arr [post update] [p] | -| test.cpp:69:14:69:19 | call to malloc | test.cpp:69:5:69:25 | ... = ... | -| test.cpp:70:5:70:7 | *arr [p] | test.cpp:67:10:67:19 | **mk_array_p [p] | -| test.cpp:76:20:76:29 | *call to mk_array_p [p] | test.cpp:79:9:79:11 | *arr [p] | -| test.cpp:76:20:76:29 | *call to mk_array_p [p] | test.cpp:83:9:83:11 | *arr [p] | -| test.cpp:79:9:79:11 | *arr [p] | test.cpp:79:14:79:14 | p | -| test.cpp:83:9:83:11 | *arr [p] | test.cpp:83:14:83:14 | p | -| test.cpp:87:28:87:30 | *arr [p] | test.cpp:89:9:89:11 | *arr [p] | -| test.cpp:87:28:87:30 | *arr [p] | test.cpp:93:9:93:11 | *arr [p] | -| test.cpp:89:9:89:11 | *arr [p] | test.cpp:89:14:89:14 | p | -| test.cpp:93:9:93:11 | *arr [p] | test.cpp:93:14:93:14 | p | -| test.cpp:98:18:98:27 | *call to mk_array_p [p] | test.cpp:87:28:87:30 | *arr [p] | +| test.cpp:4:17:4:22 | call to malloc | test.cpp:6:9:6:11 | arr | provenance | | +| test.cpp:4:17:4:22 | call to malloc | test.cpp:10:9:10:11 | arr | provenance | | +| test.cpp:19:9:19:16 | *mk_array [p] | test.cpp:28:19:28:26 | call to mk_array [p] | provenance | | +| test.cpp:19:9:19:16 | *mk_array [p] | test.cpp:50:18:50:25 | call to mk_array [p] | provenance | | +| test.cpp:21:5:21:7 | *arr [post update] [p] | test.cpp:22:5:22:7 | *arr [p] | provenance | | +| test.cpp:21:5:21:24 | ... = ... | test.cpp:21:5:21:7 | *arr [post update] [p] | provenance | | +| test.cpp:21:13:21:18 | call to malloc | test.cpp:21:5:21:24 | ... = ... | provenance | | +| test.cpp:22:5:22:7 | *arr [p] | test.cpp:19:9:19:16 | *mk_array [p] | provenance | | +| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:31:9:31:11 | *arr [p] | provenance | | +| test.cpp:28:19:28:26 | call to mk_array [p] | test.cpp:35:9:35:11 | *arr [p] | provenance | | +| test.cpp:31:9:31:11 | *arr [p] | test.cpp:31:13:31:13 | p | provenance | | +| test.cpp:35:9:35:11 | *arr [p] | test.cpp:35:13:35:13 | p | provenance | | +| test.cpp:39:27:39:29 | arr [p] | test.cpp:41:9:41:11 | *arr [p] | provenance | | +| test.cpp:39:27:39:29 | arr [p] | test.cpp:45:9:45:11 | *arr [p] | provenance | | +| test.cpp:41:9:41:11 | *arr [p] | test.cpp:41:13:41:13 | p | provenance | | +| test.cpp:45:9:45:11 | *arr [p] | test.cpp:45:13:45:13 | p | provenance | | +| test.cpp:50:18:50:25 | call to mk_array [p] | test.cpp:39:27:39:29 | arr [p] | provenance | | +| test.cpp:55:5:55:7 | *arr [post update] [p] | test.cpp:56:5:56:7 | *arr [p] | provenance | | +| test.cpp:55:5:55:24 | ... = ... | test.cpp:55:5:55:7 | *arr [post update] [p] | provenance | | +| test.cpp:55:13:55:18 | call to malloc | test.cpp:55:5:55:24 | ... = ... | provenance | | +| test.cpp:56:5:56:7 | *arr [p] | test.cpp:59:9:59:11 | *arr [p] | provenance | | +| test.cpp:56:5:56:7 | *arr [p] | test.cpp:63:9:63:11 | *arr [p] | provenance | | +| test.cpp:59:9:59:11 | *arr [p] | test.cpp:59:13:59:13 | p | provenance | | +| test.cpp:63:9:63:11 | *arr [p] | test.cpp:63:13:63:13 | p | provenance | | +| test.cpp:67:10:67:19 | **mk_array_p [p] | test.cpp:76:20:76:29 | *call to mk_array_p [p] | provenance | | +| test.cpp:67:10:67:19 | **mk_array_p [p] | test.cpp:98:18:98:27 | *call to mk_array_p [p] | provenance | | +| test.cpp:69:5:69:7 | *arr [post update] [p] | test.cpp:70:5:70:7 | *arr [p] | provenance | | +| test.cpp:69:5:69:25 | ... = ... | test.cpp:69:5:69:7 | *arr [post update] [p] | provenance | | +| test.cpp:69:14:69:19 | call to malloc | test.cpp:69:5:69:25 | ... = ... | provenance | | +| test.cpp:70:5:70:7 | *arr [p] | test.cpp:67:10:67:19 | **mk_array_p [p] | provenance | | +| test.cpp:76:20:76:29 | *call to mk_array_p [p] | test.cpp:79:9:79:11 | *arr [p] | provenance | | +| test.cpp:76:20:76:29 | *call to mk_array_p [p] | test.cpp:83:9:83:11 | *arr [p] | provenance | | +| test.cpp:79:9:79:11 | *arr [p] | test.cpp:79:14:79:14 | p | provenance | | +| test.cpp:83:9:83:11 | *arr [p] | test.cpp:83:14:83:14 | p | provenance | | +| test.cpp:87:28:87:30 | *arr [p] | test.cpp:89:9:89:11 | *arr [p] | provenance | | +| test.cpp:87:28:87:30 | *arr [p] | test.cpp:93:9:93:11 | *arr [p] | provenance | | +| test.cpp:89:9:89:11 | *arr [p] | test.cpp:89:14:89:14 | p | provenance | | +| test.cpp:93:9:93:11 | *arr [p] | test.cpp:93:14:93:14 | p | provenance | | +| test.cpp:98:18:98:27 | *call to mk_array_p [p] | test.cpp:87:28:87:30 | *arr [p] | provenance | | nodes | test.cpp:4:17:4:22 | call to malloc | semmle.label | call to malloc | | test.cpp:6:9:6:11 | arr | semmle.label | arr | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected index 07fbd84e4af1..fee771d8f705 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected @@ -1,74 +1,74 @@ edges -| test.cpp:34:10:34:12 | buf | test.cpp:34:5:34:24 | access to array | -| test.cpp:35:10:35:12 | buf | test.cpp:35:5:35:22 | access to array | -| test.cpp:36:10:36:12 | buf | test.cpp:36:5:36:24 | access to array | -| test.cpp:39:14:39:16 | buf | test.cpp:39:9:39:19 | access to array | -| test.cpp:43:14:43:16 | buf | test.cpp:43:9:43:19 | access to array | -| test.cpp:48:10:48:12 | buf | test.cpp:48:5:48:24 | access to array | -| test.cpp:49:10:49:12 | buf | test.cpp:49:5:49:22 | access to array | -| test.cpp:50:10:50:12 | buf | test.cpp:50:5:50:24 | access to array | -| test.cpp:53:14:53:16 | buf | test.cpp:53:9:53:19 | access to array | -| test.cpp:57:14:57:16 | buf | test.cpp:57:9:57:19 | access to array | -| test.cpp:61:14:61:16 | buf | test.cpp:61:9:61:19 | access to array | -| test.cpp:70:33:70:33 | p | test.cpp:71:5:71:17 | access to array | -| test.cpp:70:33:70:33 | p | test.cpp:72:5:72:15 | access to array | -| test.cpp:76:26:76:46 | & ... | test.cpp:66:32:66:32 | p | -| test.cpp:76:32:76:34 | buf | test.cpp:76:26:76:46 | & ... | -| test.cpp:77:26:77:44 | & ... | test.cpp:66:32:66:32 | p | -| test.cpp:77:32:77:34 | buf | test.cpp:77:26:77:44 | & ... | -| test.cpp:79:27:79:34 | buf | test.cpp:70:33:70:33 | p | -| test.cpp:79:32:79:34 | buf | test.cpp:79:27:79:34 | buf | -| test.cpp:85:34:85:36 | buf | test.cpp:87:5:87:31 | access to array | -| test.cpp:85:34:85:36 | buf | test.cpp:88:5:88:27 | access to array | -| test.cpp:96:13:96:15 | arr | test.cpp:96:13:96:18 | access to array | -| test.cpp:111:17:111:19 | arr | test.cpp:111:17:111:22 | access to array | -| test.cpp:111:17:111:19 | arr | test.cpp:115:35:115:40 | access to array | -| test.cpp:111:17:111:19 | arr | test.cpp:119:17:119:22 | access to array | -| test.cpp:115:35:115:37 | arr | test.cpp:111:17:111:22 | access to array | -| test.cpp:115:35:115:37 | arr | test.cpp:115:35:115:40 | access to array | -| test.cpp:115:35:115:37 | arr | test.cpp:119:17:119:22 | access to array | -| test.cpp:119:17:119:19 | arr | test.cpp:111:17:111:22 | access to array | -| test.cpp:119:17:119:19 | arr | test.cpp:115:35:115:40 | access to array | -| test.cpp:119:17:119:19 | arr | test.cpp:119:17:119:22 | access to array | -| test.cpp:128:9:128:11 | arr | test.cpp:128:9:128:14 | access to array | -| test.cpp:134:25:134:27 | arr | test.cpp:136:9:136:16 | ... += ... | -| test.cpp:136:9:136:16 | ... += ... | test.cpp:138:13:138:15 | arr | -| test.cpp:143:18:143:21 | asdf | test.cpp:134:25:134:27 | arr | -| test.cpp:143:18:143:21 | asdf | test.cpp:143:18:143:21 | asdf | -| test.cpp:146:26:146:26 | *p | test.cpp:147:4:147:9 | -- ... | -| test.cpp:156:12:156:14 | buf | test.cpp:156:12:156:18 | ... + ... | -| test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | *& ... | -| test.cpp:158:17:158:18 | *& ... | test.cpp:146:26:146:26 | *p | -| test.cpp:218:23:218:28 | buffer | test.cpp:220:5:220:11 | access to array | -| test.cpp:218:23:218:28 | buffer | test.cpp:221:5:221:11 | access to array | -| test.cpp:229:25:229:29 | array | test.cpp:231:5:231:10 | access to array | -| test.cpp:229:25:229:29 | array | test.cpp:232:5:232:10 | access to array | -| test.cpp:245:30:245:30 | p | test.cpp:261:27:261:30 | access to array | -| test.cpp:245:30:245:30 | p | test.cpp:261:27:261:30 | access to array | -| test.cpp:274:14:274:20 | buffer3 | test.cpp:245:30:245:30 | p | -| test.cpp:274:14:274:20 | buffer3 | test.cpp:274:14:274:20 | buffer3 | -| test.cpp:277:35:277:35 | p | test.cpp:278:14:278:14 | p | -| test.cpp:278:14:278:14 | p | test.cpp:245:30:245:30 | p | -| test.cpp:283:19:283:25 | buffer1 | test.cpp:277:35:277:35 | p | -| test.cpp:283:19:283:25 | buffer1 | test.cpp:283:19:283:25 | buffer1 | -| test.cpp:286:19:286:25 | buffer2 | test.cpp:277:35:277:35 | p | -| test.cpp:286:19:286:25 | buffer2 | test.cpp:286:19:286:25 | buffer2 | -| test.cpp:289:19:289:25 | buffer3 | test.cpp:277:35:277:35 | p | -| test.cpp:289:19:289:25 | buffer3 | test.cpp:289:19:289:25 | buffer3 | -| test.cpp:292:25:292:27 | arr | test.cpp:299:16:299:21 | access to array | -| test.cpp:292:25:292:27 | arr | test.cpp:299:16:299:21 | access to array | -| test.cpp:306:20:306:23 | arr1 | test.cpp:292:25:292:27 | arr | -| test.cpp:306:20:306:23 | arr1 | test.cpp:306:20:306:23 | arr1 | -| test.cpp:309:20:309:23 | arr2 | test.cpp:292:25:292:27 | arr | -| test.cpp:309:20:309:23 | arr2 | test.cpp:309:20:309:23 | arr2 | -| test.cpp:319:19:319:22 | temp | test.cpp:319:19:319:27 | ... + ... | -| test.cpp:319:19:319:22 | temp | test.cpp:324:23:324:32 | ... + ... | -| test.cpp:319:19:319:27 | ... + ... | test.cpp:325:24:325:26 | end | -| test.cpp:322:19:322:22 | temp | test.cpp:322:19:322:27 | ... + ... | -| test.cpp:322:19:322:22 | temp | test.cpp:324:23:324:32 | ... + ... | -| test.cpp:322:19:322:27 | ... + ... | test.cpp:325:24:325:26 | end | -| test.cpp:324:23:324:26 | temp | test.cpp:324:23:324:32 | ... + ... | -| test.cpp:324:23:324:32 | ... + ... | test.cpp:325:15:325:19 | temp2 | +| test.cpp:34:10:34:12 | buf | test.cpp:34:5:34:24 | access to array | provenance | | +| test.cpp:35:10:35:12 | buf | test.cpp:35:5:35:22 | access to array | provenance | | +| test.cpp:36:10:36:12 | buf | test.cpp:36:5:36:24 | access to array | provenance | | +| test.cpp:39:14:39:16 | buf | test.cpp:39:9:39:19 | access to array | provenance | | +| test.cpp:43:14:43:16 | buf | test.cpp:43:9:43:19 | access to array | provenance | | +| test.cpp:48:10:48:12 | buf | test.cpp:48:5:48:24 | access to array | provenance | | +| test.cpp:49:10:49:12 | buf | test.cpp:49:5:49:22 | access to array | provenance | | +| test.cpp:50:10:50:12 | buf | test.cpp:50:5:50:24 | access to array | provenance | | +| test.cpp:53:14:53:16 | buf | test.cpp:53:9:53:19 | access to array | provenance | | +| test.cpp:57:14:57:16 | buf | test.cpp:57:9:57:19 | access to array | provenance | | +| test.cpp:61:14:61:16 | buf | test.cpp:61:9:61:19 | access to array | provenance | | +| test.cpp:70:33:70:33 | p | test.cpp:71:5:71:17 | access to array | provenance | | +| test.cpp:70:33:70:33 | p | test.cpp:72:5:72:15 | access to array | provenance | | +| test.cpp:76:26:76:46 | & ... | test.cpp:66:32:66:32 | p | provenance | | +| test.cpp:76:32:76:34 | buf | test.cpp:76:26:76:46 | & ... | provenance | | +| test.cpp:77:26:77:44 | & ... | test.cpp:66:32:66:32 | p | provenance | | +| test.cpp:77:32:77:34 | buf | test.cpp:77:26:77:44 | & ... | provenance | | +| test.cpp:79:27:79:34 | buf | test.cpp:70:33:70:33 | p | provenance | | +| test.cpp:79:32:79:34 | buf | test.cpp:79:27:79:34 | buf | provenance | | +| test.cpp:85:34:85:36 | buf | test.cpp:87:5:87:31 | access to array | provenance | | +| test.cpp:85:34:85:36 | buf | test.cpp:88:5:88:27 | access to array | provenance | | +| test.cpp:96:13:96:15 | arr | test.cpp:96:13:96:18 | access to array | provenance | | +| test.cpp:111:17:111:19 | arr | test.cpp:111:17:111:22 | access to array | provenance | | +| test.cpp:111:17:111:19 | arr | test.cpp:115:35:115:40 | access to array | provenance | | +| test.cpp:111:17:111:19 | arr | test.cpp:119:17:119:22 | access to array | provenance | | +| test.cpp:115:35:115:37 | arr | test.cpp:111:17:111:22 | access to array | provenance | | +| test.cpp:115:35:115:37 | arr | test.cpp:115:35:115:40 | access to array | provenance | | +| test.cpp:115:35:115:37 | arr | test.cpp:119:17:119:22 | access to array | provenance | | +| test.cpp:119:17:119:19 | arr | test.cpp:111:17:111:22 | access to array | provenance | | +| test.cpp:119:17:119:19 | arr | test.cpp:115:35:115:40 | access to array | provenance | | +| test.cpp:119:17:119:19 | arr | test.cpp:119:17:119:22 | access to array | provenance | | +| test.cpp:128:9:128:11 | arr | test.cpp:128:9:128:14 | access to array | provenance | | +| test.cpp:134:25:134:27 | arr | test.cpp:136:9:136:16 | ... += ... | provenance | | +| test.cpp:136:9:136:16 | ... += ... | test.cpp:138:13:138:15 | arr | provenance | | +| test.cpp:143:18:143:21 | asdf | test.cpp:134:25:134:27 | arr | provenance | | +| test.cpp:143:18:143:21 | asdf | test.cpp:143:18:143:21 | asdf | provenance | | +| test.cpp:146:26:146:26 | *p | test.cpp:147:4:147:9 | -- ... | provenance | | +| test.cpp:156:12:156:14 | buf | test.cpp:156:12:156:18 | ... + ... | provenance | | +| test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | *& ... | provenance | | +| test.cpp:158:17:158:18 | *& ... | test.cpp:146:26:146:26 | *p | provenance | | +| test.cpp:218:23:218:28 | buffer | test.cpp:220:5:220:11 | access to array | provenance | | +| test.cpp:218:23:218:28 | buffer | test.cpp:221:5:221:11 | access to array | provenance | | +| test.cpp:229:25:229:29 | array | test.cpp:231:5:231:10 | access to array | provenance | | +| test.cpp:229:25:229:29 | array | test.cpp:232:5:232:10 | access to array | provenance | | +| test.cpp:245:30:245:30 | p | test.cpp:261:27:261:30 | access to array | provenance | | +| test.cpp:245:30:245:30 | p | test.cpp:261:27:261:30 | access to array | provenance | | +| test.cpp:274:14:274:20 | buffer3 | test.cpp:245:30:245:30 | p | provenance | | +| test.cpp:274:14:274:20 | buffer3 | test.cpp:274:14:274:20 | buffer3 | provenance | | +| test.cpp:277:35:277:35 | p | test.cpp:278:14:278:14 | p | provenance | | +| test.cpp:278:14:278:14 | p | test.cpp:245:30:245:30 | p | provenance | | +| test.cpp:283:19:283:25 | buffer1 | test.cpp:277:35:277:35 | p | provenance | | +| test.cpp:283:19:283:25 | buffer1 | test.cpp:283:19:283:25 | buffer1 | provenance | | +| test.cpp:286:19:286:25 | buffer2 | test.cpp:277:35:277:35 | p | provenance | | +| test.cpp:286:19:286:25 | buffer2 | test.cpp:286:19:286:25 | buffer2 | provenance | | +| test.cpp:289:19:289:25 | buffer3 | test.cpp:277:35:277:35 | p | provenance | | +| test.cpp:289:19:289:25 | buffer3 | test.cpp:289:19:289:25 | buffer3 | provenance | | +| test.cpp:292:25:292:27 | arr | test.cpp:299:16:299:21 | access to array | provenance | | +| test.cpp:292:25:292:27 | arr | test.cpp:299:16:299:21 | access to array | provenance | | +| test.cpp:306:20:306:23 | arr1 | test.cpp:292:25:292:27 | arr | provenance | | +| test.cpp:306:20:306:23 | arr1 | test.cpp:306:20:306:23 | arr1 | provenance | | +| test.cpp:309:20:309:23 | arr2 | test.cpp:292:25:292:27 | arr | provenance | | +| test.cpp:309:20:309:23 | arr2 | test.cpp:309:20:309:23 | arr2 | provenance | | +| test.cpp:319:19:319:22 | temp | test.cpp:319:19:319:27 | ... + ... | provenance | | +| test.cpp:319:19:319:22 | temp | test.cpp:324:23:324:32 | ... + ... | provenance | | +| test.cpp:319:19:319:27 | ... + ... | test.cpp:325:24:325:26 | end | provenance | | +| test.cpp:322:19:322:22 | temp | test.cpp:322:19:322:27 | ... + ... | provenance | | +| test.cpp:322:19:322:22 | temp | test.cpp:324:23:324:32 | ... + ... | provenance | | +| test.cpp:322:19:322:27 | ... + ... | test.cpp:325:24:325:26 | end | provenance | | +| test.cpp:324:23:324:26 | temp | test.cpp:324:23:324:32 | ... + ... | provenance | | +| test.cpp:324:23:324:32 | ... + ... | test.cpp:325:15:325:19 | temp2 | provenance | | nodes | test.cpp:34:5:34:24 | access to array | semmle.label | access to array | | test.cpp:34:10:34:12 | buf | semmle.label | buf | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-359/semmle/tests/PrivateCleartextWrite.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-359/semmle/tests/PrivateCleartextWrite.expected index 78f724f788c6..ae24fbb77c4e 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-359/semmle/tests/PrivateCleartextWrite.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-359/semmle/tests/PrivateCleartextWrite.expected @@ -1,14 +1,14 @@ edges -| test.cpp:45:18:45:23 | buffer | test.cpp:45:7:45:10 | *func | -| test.cpp:74:24:74:30 | medical | test.cpp:78:24:78:27 | temp | -| test.cpp:74:24:74:30 | medical | test.cpp:81:22:81:28 | medical | -| test.cpp:77:16:77:22 | medical | test.cpp:78:24:78:27 | temp | -| test.cpp:77:16:77:22 | medical | test.cpp:81:22:81:28 | medical | -| test.cpp:81:17:81:20 | call to func | test.cpp:82:24:82:28 | buff5 | -| test.cpp:81:22:81:28 | medical | test.cpp:45:18:45:23 | buffer | -| test.cpp:81:22:81:28 | medical | test.cpp:81:17:81:20 | call to func | -| test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode | -| test.cpp:99:61:99:70 | theZipcode | test.cpp:99:42:99:51 | theZipcode | +| test.cpp:45:18:45:23 | buffer | test.cpp:45:7:45:10 | *func | provenance | | +| test.cpp:74:24:74:30 | medical | test.cpp:78:24:78:27 | temp | provenance | | +| test.cpp:74:24:74:30 | medical | test.cpp:81:22:81:28 | medical | provenance | | +| test.cpp:77:16:77:22 | medical | test.cpp:78:24:78:27 | temp | provenance | | +| test.cpp:77:16:77:22 | medical | test.cpp:81:22:81:28 | medical | provenance | | +| test.cpp:81:17:81:20 | call to func | test.cpp:82:24:82:28 | buff5 | provenance | | +| test.cpp:81:22:81:28 | medical | test.cpp:45:18:45:23 | buffer | provenance | | +| test.cpp:81:22:81:28 | medical | test.cpp:81:17:81:20 | call to func | provenance | | +| test.cpp:96:37:96:46 | theZipcode | test.cpp:99:42:99:51 | theZipcode | provenance | | +| test.cpp:99:61:99:70 | theZipcode | test.cpp:99:42:99:51 | theZipcode | provenance | | nodes | test.cpp:45:7:45:10 | *func | semmle.label | *func | | test.cpp:45:18:45:23 | buffer | semmle.label | buffer | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected index af91d22d4bfb..8b2b371a4e26 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected @@ -165,6 +165,7 @@ postWithInFlow | test.cpp:931:5:931:18 | global_pointer [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:932:5:932:19 | * ... [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:932:6:932:19 | global_pointer [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1045:9:1045:11 | ref arg buf | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected index 93792f406aa4..cc0903c1efbc 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected @@ -25,6 +25,7 @@ postWithInFlow | test.cpp:391:10:391:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:400:10:400:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | | test.cpp:407:10:407:13 | memcpy output argument | PostUpdateNode should not be the target of local flow. | +| test.cpp:1045:9:1045:11 | memset output argument | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected index 6c56bee2699e..2d33f47ba604 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected @@ -309,6 +309,7 @@ irFlow | test.cpp:994:18:994:32 | *call to indirect_source | test.cpp:1003:19:1003:28 | *translated | | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1027:19:1027:28 | *translated | | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1031:19:1031:28 | *translated | +| test.cpp:1045:14:1045:19 | call to source | test.cpp:1046:7:1046:10 | * ... | | true_upon_entry.cpp:9:11:9:16 | call to source | true_upon_entry.cpp:13:8:13:8 | x | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp index 8dcefb20b958..e29619a6800f 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -1037,4 +1037,11 @@ namespace test_gettext { sink(translated); // clean indirect_sink(translated); // clean } +} + +void* memset(void*, int, size_t); + +void memset_test(char* buf) { // $ ast-def=buf + memset(buf, source(), 10); + sink(*buf); // $ ir MISSING: ast } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected index c63c723118bc..6706d79e902b 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected @@ -1,3 +1,18 @@ astTypeBugs irTypeBugs +incorrectBaseType +| clang.cpp:22:8:22:20 | *& ... | Expected 'Node.getType()' to be int, but it was int * | +| clang.cpp:23:17:23:29 | *& ... | Expected 'Node.getType()' to be int, but it was int * | +| flowOut.cpp:50:14:50:15 | *& ... | Expected 'Node.getType()' to be int, but it was int * | +| flowOut.cpp:84:9:84:10 | *& ... | Expected 'Node.getType()' to be int, but it was int * | +| flowOut.cpp:101:13:101:14 | *& ... | Expected 'Node.getType()' to be int, but it was int * | +| self_parameter_flow.cpp:8:8:8:9 | *& ... | Expected 'Node.getType()' to be unsigned char, but it was unsigned char * | +| test.cpp:67:28:67:37 | (reference dereference) | Expected 'Node.getType()' to be const int, but it was int * | +| test.cpp:531:39:531:40 | *& ... | Expected 'Node.getType()' to be int, but it was const int * | +| test.cpp:615:13:615:21 | *& ... | Expected 'Node.getType()' to be int, but it was void | +| test.cpp:704:22:704:25 | *& ... | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:715:24:715:25 | *& ... | Expected 'Node.getType()' to be unsigned char, but it was unsigned char * | +| test.cpp:848:23:848:25 | (reference dereference) | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:854:10:854:36 | * ... | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:867:10:867:30 | * ... | Expected 'Node.getType()' to be const int, but it was int | failures diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql index 5ff9204f3057..b246f392a8d3 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.ql @@ -25,6 +25,17 @@ module IrTest { n != 1 ) } + + query predicate incorrectBaseType(Node n, string msg) { + exists(PointerType pointerType, Type nodeType, Type baseType | + not n.isGLValue() and + pointerType = n.asIndirectExpr(1).getActualType() and + baseType = pointerType.getBaseType() and + nodeType = n.getType() and + nodeType != baseType and + msg = "Expected 'Node.getType()' to be " + baseType + ", but it was " + nodeType + ) + } } import IrTest diff --git a/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected index b000ff9d0892..770a70f2a1d6 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected @@ -1,753 +1,753 @@ edges -| A.cpp:23:10:23:10 | c | A.cpp:25:7:25:17 | ... = ... | -| A.cpp:25:7:25:17 | ... = ... | A.cpp:25:7:25:10 | *this [post update] [c] | -| A.cpp:27:17:27:17 | c | A.cpp:27:22:27:32 | ... = ... | -| A.cpp:27:22:27:32 | ... = ... | A.cpp:27:22:27:25 | *this [post update] [c] | -| A.cpp:28:8:28:10 | *this [c] | A.cpp:28:23:28:26 | *this [c] | -| A.cpp:28:23:28:26 | *this [c] | A.cpp:28:29:28:29 | c | -| A.cpp:28:29:28:29 | c | A.cpp:28:8:28:10 | *get | -| A.cpp:29:23:29:23 | c | A.cpp:31:20:31:20 | c | -| A.cpp:31:14:31:21 | call to B [c] | A.cpp:29:15:29:18 | **make [c] | -| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | -| A.cpp:31:20:31:20 | c | A.cpp:31:14:31:21 | call to B [c] | -| A.cpp:41:5:41:6 | insert output argument | A.cpp:43:10:43:12 | *& ... | -| A.cpp:41:15:41:21 | new | A.cpp:41:5:41:6 | insert output argument | -| A.cpp:47:12:47:18 | new | A.cpp:48:20:48:20 | c | -| A.cpp:48:12:48:18 | *call to make [c] | A.cpp:49:10:49:10 | *b [c] | -| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c | -| A.cpp:48:20:48:20 | c | A.cpp:48:12:48:18 | *call to make [c] | -| A.cpp:49:10:49:10 | *b [c] | A.cpp:49:10:49:13 | c | -| A.cpp:55:5:55:5 | set output argument [c] | A.cpp:56:10:56:10 | *b [c] | -| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | -| A.cpp:55:12:55:19 | new | A.cpp:55:5:55:5 | set output argument [c] | -| A.cpp:56:10:56:10 | *b [c] | A.cpp:28:8:28:10 | *this [c] | -| A.cpp:56:10:56:10 | *b [c] | A.cpp:56:10:56:17 | call to get | -| A.cpp:57:11:57:24 | *new [c] | A.cpp:28:8:28:10 | *this [c] | -| A.cpp:57:11:57:24 | *new [c] | A.cpp:57:10:57:32 | call to get | -| A.cpp:57:11:57:24 | call to B [c] | A.cpp:57:11:57:24 | *new [c] | -| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | -| A.cpp:57:17:57:23 | new | A.cpp:57:11:57:24 | call to B [c] | -| A.cpp:57:17:57:23 | new | A.cpp:57:17:57:23 | new | -| A.cpp:64:10:64:15 | *call to setOnB [c] | A.cpp:66:10:66:11 | *b2 [c] | -| A.cpp:64:21:64:28 | new | A.cpp:64:10:64:15 | *call to setOnB [c] | -| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c | -| A.cpp:66:10:66:11 | *b2 [c] | A.cpp:66:10:66:14 | c | -| A.cpp:73:10:73:19 | *call to setOnBWrap [c] | A.cpp:75:10:75:11 | *b2 [c] | -| A.cpp:73:25:73:32 | new | A.cpp:73:10:73:19 | *call to setOnBWrap [c] | -| A.cpp:73:25:73:32 | new | A.cpp:78:27:78:27 | c | -| A.cpp:75:10:75:11 | *b2 [c] | A.cpp:75:10:75:14 | c | -| A.cpp:78:27:78:27 | c | A.cpp:81:21:81:21 | c | -| A.cpp:81:10:81:15 | *call to setOnB [c] | A.cpp:78:6:78:15 | **setOnBWrap [c] | -| A.cpp:81:21:81:21 | c | A.cpp:81:10:81:15 | *call to setOnB [c] | -| A.cpp:81:21:81:21 | c | A.cpp:85:26:85:26 | c | -| A.cpp:85:26:85:26 | c | A.cpp:90:15:90:15 | c | -| A.cpp:90:7:90:8 | set output argument [c] | A.cpp:85:9:85:14 | **setOnB [c] | -| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | -| A.cpp:90:15:90:15 | c | A.cpp:90:7:90:8 | set output argument [c] | -| A.cpp:98:12:98:18 | new | A.cpp:100:5:100:13 | ... = ... | -| A.cpp:100:5:100:6 | *c1 [post update] [a] | A.cpp:101:8:101:9 | *c1 [a] | -| A.cpp:100:5:100:13 | ... = ... | A.cpp:100:5:100:6 | *c1 [post update] [a] | -| A.cpp:101:8:101:9 | *c1 [a] | A.cpp:103:14:103:14 | *c [a] | -| A.cpp:103:14:103:14 | *c [a] | A.cpp:107:12:107:13 | *c1 [a] | -| A.cpp:103:14:103:14 | *c [a] | A.cpp:120:12:120:13 | *c1 [a] | -| A.cpp:107:12:107:13 | *c1 [a] | A.cpp:107:12:107:16 | a | -| A.cpp:120:12:120:13 | *c1 [a] | A.cpp:120:12:120:16 | a | -| A.cpp:126:5:126:5 | set output argument [c] | A.cpp:131:8:131:8 | f7 output argument [c] | -| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | -| A.cpp:126:12:126:18 | new | A.cpp:126:5:126:5 | set output argument [c] | -| A.cpp:126:12:126:18 | new | A.cpp:126:12:126:18 | new | -| A.cpp:131:8:131:8 | f7 output argument [c] | A.cpp:132:10:132:10 | *b [c] | -| A.cpp:132:10:132:10 | *b [c] | A.cpp:132:10:132:13 | c | -| A.cpp:140:13:140:13 | b | A.cpp:143:7:143:31 | ... = ... | -| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:143:7:143:31 | *... = ... [c] | -| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:151:18:151:18 | D output argument [c] | -| A.cpp:142:7:142:20 | ... = ... | A.cpp:142:7:142:7 | *b [post update] [c] | -| A.cpp:142:14:142:20 | new | A.cpp:142:7:142:20 | ... = ... | -| A.cpp:143:7:143:10 | *this [post update] [*b, c] | A.cpp:151:12:151:24 | call to D [*b, c] | -| A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] | -| A.cpp:143:7:143:31 | *... = ... [c] | A.cpp:143:7:143:10 | *this [post update] [*b, c] | -| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | -| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | -| A.cpp:143:25:143:31 | new | A.cpp:143:7:143:31 | ... = ... | -| A.cpp:150:12:150:18 | new | A.cpp:151:18:151:18 | b | -| A.cpp:151:12:151:24 | call to D [*b, c] | A.cpp:153:10:153:10 | *d [*b, c] | -| A.cpp:151:12:151:24 | call to D [b] | A.cpp:152:10:152:10 | *d [b] | -| A.cpp:151:18:151:18 | D output argument [c] | A.cpp:154:10:154:10 | *b [c] | -| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | -| A.cpp:151:18:151:18 | b | A.cpp:151:12:151:24 | call to D [b] | -| A.cpp:152:10:152:10 | *d [b] | A.cpp:152:10:152:13 | b | -| A.cpp:153:10:153:10 | *d [*b, c] | A.cpp:153:13:153:13 | *b [c] | -| A.cpp:153:13:153:13 | *b [c] | A.cpp:153:10:153:16 | c | -| A.cpp:154:10:154:10 | *b [c] | A.cpp:154:10:154:13 | c | -| A.cpp:159:12:159:18 | new | A.cpp:160:29:160:29 | b | -| A.cpp:160:18:160:60 | call to MyList [head] | A.cpp:161:38:161:39 | *l1 [head] | -| A.cpp:160:29:160:29 | b | A.cpp:160:18:160:60 | call to MyList [head] | -| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | -| A.cpp:161:18:161:40 | call to MyList [*next, head] | A.cpp:162:38:162:39 | *l2 [*next, head] | -| A.cpp:161:38:161:39 | *l1 [head] | A.cpp:161:18:161:40 | call to MyList [*next, head] | -| A.cpp:161:38:161:39 | *l1 [head] | A.cpp:181:32:181:35 | *next [head] | -| A.cpp:162:18:162:40 | call to MyList [*next, *next, head] | A.cpp:165:10:165:11 | *l3 [*next, *next, head] | -| A.cpp:162:18:162:40 | call to MyList [*next, *next, head] | A.cpp:167:44:167:44 | *l [*next, *next, head] | -| A.cpp:162:38:162:39 | *l2 [*next, head] | A.cpp:162:18:162:40 | call to MyList [*next, *next, head] | -| A.cpp:162:38:162:39 | *l2 [*next, head] | A.cpp:181:32:181:35 | *next [*next, head] | -| A.cpp:165:10:165:11 | *l3 [*next, *next, head] | A.cpp:165:14:165:17 | *next [*next, head] | -| A.cpp:165:14:165:17 | *next [*next, head] | A.cpp:165:20:165:23 | *next [head] | -| A.cpp:165:20:165:23 | *next [head] | A.cpp:165:10:165:29 | head | -| A.cpp:167:44:167:44 | *l [*next, *next, head] | A.cpp:167:47:167:50 | *next [*next, head] | -| A.cpp:167:44:167:44 | *l [*next, head] | A.cpp:167:47:167:50 | *next [head] | -| A.cpp:167:47:167:50 | *next [*next, head] | A.cpp:167:44:167:44 | *l [*next, head] | -| A.cpp:167:47:167:50 | *next [head] | A.cpp:169:12:169:12 | *l [head] | -| A.cpp:169:12:169:12 | *l [head] | A.cpp:169:12:169:18 | head | -| A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:20 | ... = ... | -| A.cpp:181:32:181:35 | *next [*next, head] | A.cpp:184:7:184:23 | *... = ... [*next, head] | -| A.cpp:181:32:181:35 | *next [head] | A.cpp:184:7:184:23 | *... = ... [head] | -| A.cpp:183:7:183:20 | ... = ... | A.cpp:183:7:183:10 | *this [post update] [head] | -| A.cpp:184:7:184:23 | *... = ... [*next, head] | A.cpp:184:7:184:10 | *this [post update] [*next, *next, head] | -| A.cpp:184:7:184:23 | *... = ... [head] | A.cpp:184:7:184:10 | *this [post update] [*next, head] | -| B.cpp:6:15:6:24 | new | B.cpp:7:25:7:25 | e | -| B.cpp:7:16:7:35 | call to Box1 [elem1] | B.cpp:8:25:8:26 | *b1 [elem1] | -| B.cpp:7:25:7:25 | e | B.cpp:7:16:7:35 | call to Box1 [elem1] | -| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | -| B.cpp:8:16:8:27 | call to Box2 [*box1, elem1] | B.cpp:9:10:9:11 | *b2 [*box1, elem1] | -| B.cpp:8:25:8:26 | *b1 [elem1] | B.cpp:8:16:8:27 | call to Box2 [*box1, elem1] | -| B.cpp:8:25:8:26 | *b1 [elem1] | B.cpp:44:16:44:17 | *b1 [elem1] | -| B.cpp:9:10:9:11 | *b2 [*box1, elem1] | B.cpp:9:14:9:17 | *box1 [elem1] | -| B.cpp:9:14:9:17 | *box1 [elem1] | B.cpp:9:10:9:24 | elem1 | -| B.cpp:15:15:15:27 | new | B.cpp:16:37:16:37 | e | -| B.cpp:16:16:16:38 | call to Box1 [elem2] | B.cpp:17:25:17:26 | *b1 [elem2] | -| B.cpp:16:37:16:37 | e | B.cpp:16:16:16:38 | call to Box1 [elem2] | -| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | -| B.cpp:17:16:17:27 | call to Box2 [*box1, elem2] | B.cpp:19:10:19:11 | *b2 [*box1, elem2] | -| B.cpp:17:25:17:26 | *b1 [elem2] | B.cpp:17:16:17:27 | call to Box2 [*box1, elem2] | -| B.cpp:17:25:17:26 | *b1 [elem2] | B.cpp:44:16:44:17 | *b1 [elem2] | -| B.cpp:19:10:19:11 | *b2 [*box1, elem2] | B.cpp:19:14:19:17 | *box1 [elem2] | -| B.cpp:19:14:19:17 | *box1 [elem2] | B.cpp:19:10:19:24 | elem2 | -| B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:22 | ... = ... | -| B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:22 | ... = ... | -| B.cpp:35:7:35:22 | ... = ... | B.cpp:35:7:35:10 | *this [post update] [elem1] | -| B.cpp:36:7:36:22 | ... = ... | B.cpp:36:7:36:10 | *this [post update] [elem2] | -| B.cpp:44:16:44:17 | *b1 [elem1] | B.cpp:46:7:46:21 | *... = ... [elem1] | -| B.cpp:44:16:44:17 | *b1 [elem2] | B.cpp:46:7:46:21 | *... = ... [elem2] | -| B.cpp:46:7:46:21 | *... = ... [elem1] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem1] | -| B.cpp:46:7:46:21 | *... = ... [elem2] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | -| C.cpp:18:12:18:18 | call to C [s1] | C.cpp:19:5:19:5 | *c [s1] | -| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:19:5:19:5 | *c [s3] | -| C.cpp:19:5:19:5 | *c [s1] | C.cpp:27:8:27:11 | *this [s1] | -| C.cpp:19:5:19:5 | *c [s3] | C.cpp:27:8:27:11 | *this [s3] | -| C.cpp:22:3:22:3 | *this [post update] [s1] | C.cpp:18:12:18:18 | call to C [s1] | -| C.cpp:22:12:22:21 | new | C.cpp:22:3:22:3 | *this [post update] [s1] | -| C.cpp:22:12:22:21 | new | C.cpp:22:12:22:21 | new | -| C.cpp:24:5:24:8 | *this [post update] [s3] | C.cpp:18:12:18:18 | call to C [s3] | -| C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | *this [post update] [s3] | -| C.cpp:24:16:24:25 | new | C.cpp:24:5:24:25 | ... = ... | -| C.cpp:27:8:27:11 | *this [s1] | C.cpp:29:10:29:11 | *this [s1] | -| C.cpp:27:8:27:11 | *this [s3] | C.cpp:31:10:31:11 | *this [s3] | -| C.cpp:29:10:29:11 | *this [s1] | C.cpp:29:10:29:11 | s1 | -| C.cpp:31:10:31:11 | *this [s3] | C.cpp:31:10:31:11 | s3 | -| D.cpp:10:11:10:17 | *this [elem] | D.cpp:10:30:10:33 | *this [elem] | -| D.cpp:10:30:10:33 | *this [elem] | D.cpp:10:30:10:33 | elem | -| D.cpp:10:30:10:33 | elem | D.cpp:10:11:10:17 | *getElem | -| D.cpp:11:24:11:24 | e | D.cpp:11:29:11:36 | ... = ... | -| D.cpp:11:29:11:36 | ... = ... | D.cpp:11:29:11:32 | *this [post update] [elem] | -| D.cpp:17:11:17:17 | *this [*box, elem] | D.cpp:17:30:17:32 | *this [*box, elem] | -| D.cpp:17:30:17:32 | *box [elem] | D.cpp:17:11:17:17 | **getBox1 [elem] | -| D.cpp:17:30:17:32 | *this [*box, elem] | D.cpp:17:30:17:32 | *box [elem] | -| D.cpp:21:30:21:31 | *b2 [*box, elem] | D.cpp:22:10:22:11 | *b2 [*box, elem] | -| D.cpp:22:10:22:11 | *b2 [*box, elem] | D.cpp:17:11:17:17 | *this [*box, elem] | -| D.cpp:22:10:22:11 | *b2 [*box, elem] | D.cpp:22:14:22:20 | *call to getBox1 [elem] | -| D.cpp:22:14:22:20 | *call to getBox1 [elem] | D.cpp:10:11:10:17 | *this [elem] | -| D.cpp:22:14:22:20 | *call to getBox1 [elem] | D.cpp:22:10:22:33 | call to getElem | -| D.cpp:28:15:28:24 | new | D.cpp:30:5:30:20 | ... = ... | -| D.cpp:30:5:30:5 | *b [post update] [*box, elem] | D.cpp:31:14:31:14 | *b [*box, elem] | -| D.cpp:30:5:30:20 | ... = ... | D.cpp:30:8:30:10 | *box [post update] [elem] | -| D.cpp:30:8:30:10 | *box [post update] [elem] | D.cpp:30:5:30:5 | *b [post update] [*box, elem] | -| D.cpp:31:14:31:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | -| D.cpp:35:15:35:24 | new | D.cpp:37:21:37:21 | e | -| D.cpp:37:5:37:5 | *b [post update] [*box, elem] | D.cpp:38:14:38:14 | *b [*box, elem] | -| D.cpp:37:8:37:10 | setElem output argument [elem] | D.cpp:37:5:37:5 | *b [post update] [*box, elem] | -| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | -| D.cpp:37:21:37:21 | e | D.cpp:37:8:37:10 | setElem output argument [elem] | -| D.cpp:38:14:38:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | -| D.cpp:42:15:42:24 | new | D.cpp:44:5:44:26 | ... = ... | -| D.cpp:44:5:44:5 | getBox1 output argument [*box, elem] | D.cpp:45:14:45:14 | *b [*box, elem] | -| D.cpp:44:5:44:26 | ... = ... | D.cpp:44:8:44:14 | *call to getBox1 [post update] [elem] | -| D.cpp:44:8:44:14 | *call to getBox1 [post update] [elem] | D.cpp:44:5:44:5 | getBox1 output argument [*box, elem] | -| D.cpp:45:14:45:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | -| D.cpp:49:15:49:24 | new | D.cpp:51:27:51:27 | e | -| D.cpp:51:5:51:5 | getBox1 output argument [*box, elem] | D.cpp:52:14:52:14 | *b [*box, elem] | -| D.cpp:51:8:51:14 | setElem output argument [elem] | D.cpp:51:5:51:5 | getBox1 output argument [*box, elem] | -| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | -| D.cpp:51:27:51:27 | e | D.cpp:51:8:51:14 | setElem output argument [elem] | -| D.cpp:52:14:52:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | -| D.cpp:56:15:56:24 | new | D.cpp:58:5:58:27 | ... = ... | -| D.cpp:58:5:58:12 | *boxfield [post update] [*box, elem] | D.cpp:58:5:58:12 | *this [post update] [*boxfield, *box, elem] | -| D.cpp:58:5:58:12 | *this [post update] [*boxfield, *box, elem] | D.cpp:59:5:59:7 | *this [*boxfield, *box, elem] | -| D.cpp:58:5:58:27 | ... = ... | D.cpp:58:15:58:17 | *box [post update] [elem] | -| D.cpp:58:15:58:17 | *box [post update] [elem] | D.cpp:58:5:58:12 | *boxfield [post update] [*box, elem] | -| D.cpp:59:5:59:7 | *this [*boxfield, *box, elem] | D.cpp:63:8:63:10 | *this [*boxfield, *box, elem] | -| D.cpp:63:8:63:10 | *this [*boxfield, *box, elem] | D.cpp:64:10:64:17 | *this [*boxfield, *box, elem] | -| D.cpp:64:10:64:17 | *boxfield [*box, elem] | D.cpp:64:20:64:22 | *box [elem] | -| D.cpp:64:10:64:17 | *this [*boxfield, *box, elem] | D.cpp:64:10:64:17 | *boxfield [*box, elem] | -| D.cpp:64:20:64:22 | *box [elem] | D.cpp:64:10:64:28 | elem | -| E.cpp:19:27:19:27 | *p [data, *buffer] | E.cpp:21:10:21:10 | *p [data, *buffer] | -| E.cpp:21:10:21:10 | *p [data, *buffer] | E.cpp:21:13:21:16 | *data [*buffer] | -| E.cpp:21:13:21:16 | *data [*buffer] | E.cpp:21:18:21:23 | *buffer | -| E.cpp:28:21:28:23 | argument_source output argument | E.cpp:31:10:31:12 | *raw | -| E.cpp:29:21:29:21 | *b [post update] [*buffer] | E.cpp:32:10:32:10 | *b [*buffer] | -| E.cpp:29:21:29:29 | argument_source output argument | E.cpp:29:21:29:21 | *b [post update] [*buffer] | -| E.cpp:30:21:30:21 | *p [post update] [data, *buffer] | E.cpp:33:18:33:19 | *& ... [data, *buffer] | -| E.cpp:30:21:30:33 | argument_source output argument | E.cpp:30:23:30:26 | *data [post update] [*buffer] | -| E.cpp:30:23:30:26 | *data [post update] [*buffer] | E.cpp:30:21:30:21 | *p [post update] [data, *buffer] | -| E.cpp:32:10:32:10 | *b [*buffer] | E.cpp:32:13:32:18 | *buffer | -| E.cpp:33:18:33:19 | *& ... [data, *buffer] | E.cpp:19:27:19:27 | *p [data, *buffer] | -| aliasing.cpp:9:3:9:3 | *s [post update] [m1] | aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | -| aliasing.cpp:9:3:9:22 | ... = ... | aliasing.cpp:9:3:9:3 | *s [post update] [m1] | -| aliasing.cpp:9:11:9:20 | call to user_input | aliasing.cpp:9:3:9:22 | ... = ... | -| aliasing.cpp:13:3:13:3 | *s [post update] [m1] | aliasing.cpp:26:19:26:20 | referenceSetter output argument [m1] | -| aliasing.cpp:13:3:13:21 | ... = ... | aliasing.cpp:13:3:13:3 | *s [post update] [m1] | -| aliasing.cpp:13:10:13:19 | call to user_input | aliasing.cpp:13:3:13:21 | ... = ... | -| aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | aliasing.cpp:29:8:29:9 | *s1 [m1] | -| aliasing.cpp:26:19:26:20 | referenceSetter output argument [m1] | aliasing.cpp:30:8:30:9 | *s2 [m1] | -| aliasing.cpp:29:8:29:9 | *s1 [m1] | aliasing.cpp:29:11:29:12 | m1 | -| aliasing.cpp:30:8:30:9 | *s2 [m1] | aliasing.cpp:30:11:30:12 | m1 | -| aliasing.cpp:60:3:60:4 | *s2 [post update] [m1] | aliasing.cpp:62:8:62:12 | *copy2 [m1] | -| aliasing.cpp:60:3:60:22 | ... = ... | aliasing.cpp:60:3:60:4 | *s2 [post update] [m1] | -| aliasing.cpp:60:11:60:20 | call to user_input | aliasing.cpp:60:3:60:22 | ... = ... | -| aliasing.cpp:62:8:62:12 | *copy2 [m1] | aliasing.cpp:62:14:62:15 | m1 | -| aliasing.cpp:92:3:92:3 | *w [post update] [s, m1] | aliasing.cpp:93:8:93:8 | *w [s, m1] | -| aliasing.cpp:92:3:92:23 | ... = ... | aliasing.cpp:92:5:92:5 | *s [post update] [m1] | -| aliasing.cpp:92:5:92:5 | *s [post update] [m1] | aliasing.cpp:92:3:92:3 | *w [post update] [s, m1] | -| aliasing.cpp:92:12:92:21 | call to user_input | aliasing.cpp:92:3:92:23 | ... = ... | -| aliasing.cpp:93:8:93:8 | *w [s, m1] | aliasing.cpp:93:10:93:10 | *s [m1] | -| aliasing.cpp:93:10:93:10 | *s [m1] | aliasing.cpp:93:12:93:13 | m1 | -| aliasing.cpp:98:3:98:3 | *s [post update] [m1] | aliasing.cpp:101:14:101:19 | *s_copy [m1] | -| aliasing.cpp:98:3:98:21 | ... = ... | aliasing.cpp:98:3:98:3 | *s [post update] [m1] | -| aliasing.cpp:98:10:98:19 | call to user_input | aliasing.cpp:98:3:98:21 | ... = ... | -| aliasing.cpp:101:13:101:22 | *& ... | aliasing.cpp:102:8:102:10 | * ... | -| aliasing.cpp:101:14:101:19 | *s_copy [m1] | aliasing.cpp:101:13:101:22 | *& ... | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:121:15:121:16 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:126:15:126:20 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:131:15:131:16 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:136:15:136:17 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:141:17:141:20 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:158:15:158:20 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:164:15:164:20 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:175:15:175:22 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:187:15:187:22 | taint_a_ptr output argument | -| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:200:15:200:24 | taint_a_ptr output argument | -| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:105:23:105:24 | *pa | -| aliasing.cpp:121:15:121:16 | taint_a_ptr output argument | aliasing.cpp:122:8:122:12 | access to array | -| aliasing.cpp:126:15:126:20 | taint_a_ptr output argument | aliasing.cpp:127:8:127:16 | * ... | -| aliasing.cpp:131:15:131:16 | taint_a_ptr output argument | aliasing.cpp:132:8:132:14 | * ... | -| aliasing.cpp:136:15:136:17 | taint_a_ptr output argument | aliasing.cpp:137:8:137:11 | * ... | -| aliasing.cpp:141:15:141:15 | *s [post update] [*data] | aliasing.cpp:143:8:143:8 | *s [*data] | -| aliasing.cpp:141:17:141:20 | taint_a_ptr output argument | aliasing.cpp:141:15:141:15 | *s [post update] [*data] | -| aliasing.cpp:143:8:143:8 | *s [*data] | aliasing.cpp:143:8:143:16 | access to array | -| aliasing.cpp:143:8:143:8 | *s [*data] | aliasing.cpp:143:10:143:13 | *data | -| aliasing.cpp:143:10:143:13 | *data | aliasing.cpp:143:8:143:16 | access to array | -| aliasing.cpp:158:15:158:15 | *s [post update] [data] | aliasing.cpp:159:9:159:9 | *s [data] | -| aliasing.cpp:158:15:158:20 | taint_a_ptr output argument | aliasing.cpp:158:15:158:15 | *s [post update] [data] | -| aliasing.cpp:159:9:159:9 | *s [data] | aliasing.cpp:159:8:159:14 | * ... | -| aliasing.cpp:164:15:164:15 | *s [post update] [data] | aliasing.cpp:165:8:165:8 | *s [data] | -| aliasing.cpp:164:15:164:20 | taint_a_ptr output argument | aliasing.cpp:164:15:164:15 | *s [post update] [data] | -| aliasing.cpp:165:8:165:8 | *s [data] | aliasing.cpp:165:8:165:16 | access to array | -| aliasing.cpp:175:15:175:22 | taint_a_ptr output argument | aliasing.cpp:175:19:175:19 | *s [post update] [m1] | -| aliasing.cpp:175:16:175:17 | *s2 [post update] [s, m1] | aliasing.cpp:176:8:176:9 | *s2 [s, m1] | -| aliasing.cpp:175:19:175:19 | *s [post update] [m1] | aliasing.cpp:175:16:175:17 | *s2 [post update] [s, m1] | -| aliasing.cpp:176:8:176:9 | *s2 [s, m1] | aliasing.cpp:176:11:176:11 | *s [m1] | -| aliasing.cpp:176:11:176:11 | *s [m1] | aliasing.cpp:176:13:176:14 | m1 | -| aliasing.cpp:187:15:187:22 | taint_a_ptr output argument | aliasing.cpp:187:19:187:19 | *s [post update] [m1] | -| aliasing.cpp:187:16:187:17 | *s2 [post update] [s, m1] | aliasing.cpp:189:8:189:11 | *s2_2 [s, m1] | -| aliasing.cpp:187:19:187:19 | *s [post update] [m1] | aliasing.cpp:187:16:187:17 | *s2 [post update] [s, m1] | -| aliasing.cpp:189:8:189:11 | *s2_2 [s, m1] | aliasing.cpp:189:13:189:13 | *s [m1] | -| aliasing.cpp:189:13:189:13 | *s [m1] | aliasing.cpp:189:15:189:16 | m1 | -| aliasing.cpp:200:15:200:24 | taint_a_ptr output argument | aliasing.cpp:200:21:200:21 | *s [post update] [m1] | -| aliasing.cpp:200:16:200:18 | *ps2 [post update] [s, m1] | aliasing.cpp:201:8:201:10 | *ps2 [s, m1] | -| aliasing.cpp:200:21:200:21 | *s [post update] [m1] | aliasing.cpp:200:16:200:18 | *ps2 [post update] [s, m1] | -| aliasing.cpp:201:8:201:10 | *ps2 [s, m1] | aliasing.cpp:201:13:201:13 | *s [m1] | -| aliasing.cpp:201:13:201:13 | *s [m1] | aliasing.cpp:201:15:201:16 | m1 | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:7:8:7:13 | access to array | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:8:8:8:13 | access to array | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:9:8:9:11 | * ... | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:10:8:10:15 | * ... | -| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:16:8:16:13 | access to array | -| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:17:8:17:13 | access to array | -| arrays.cpp:36:3:36:3 | *o [post update] [nested, arr, data] | arrays.cpp:37:8:37:8 | *o [nested, arr, data] | -| arrays.cpp:36:3:36:3 | *o [post update] [nested, arr, data] | arrays.cpp:38:8:38:8 | *o [nested, arr, data] | -| arrays.cpp:36:3:36:17 | *access to array [post update] [data] | arrays.cpp:36:5:36:10 | *nested [post update] [arr, data] | -| arrays.cpp:36:3:36:37 | ... = ... | arrays.cpp:36:3:36:17 | *access to array [post update] [data] | -| arrays.cpp:36:5:36:10 | *nested [post update] [arr, data] | arrays.cpp:36:3:36:3 | *o [post update] [nested, arr, data] | -| arrays.cpp:36:26:36:35 | call to user_input | arrays.cpp:36:3:36:37 | ... = ... | -| arrays.cpp:37:8:37:8 | *o [nested, arr, data] | arrays.cpp:37:10:37:15 | *nested [arr, data] | -| arrays.cpp:37:8:37:22 | *access to array [data] | arrays.cpp:37:24:37:27 | data | -| arrays.cpp:37:10:37:15 | *nested [arr, data] | arrays.cpp:37:8:37:22 | *access to array [data] | -| arrays.cpp:38:8:38:8 | *o [nested, arr, data] | arrays.cpp:38:10:38:15 | *nested [arr, data] | -| arrays.cpp:38:8:38:22 | *access to array [data] | arrays.cpp:38:24:38:27 | data | -| arrays.cpp:38:10:38:15 | *nested [arr, data] | arrays.cpp:38:8:38:22 | *access to array [data] | -| arrays.cpp:42:3:42:3 | *o [post update] [*indirect, arr, data] | arrays.cpp:43:8:43:8 | *o [*indirect, arr, data] | -| arrays.cpp:42:3:42:3 | *o [post update] [*indirect, arr, data] | arrays.cpp:44:8:44:8 | *o [*indirect, arr, data] | -| arrays.cpp:42:3:42:20 | *access to array [post update] [data] | arrays.cpp:42:5:42:12 | *indirect [post update] [arr, data] | -| arrays.cpp:42:3:42:40 | ... = ... | arrays.cpp:42:3:42:20 | *access to array [post update] [data] | -| arrays.cpp:42:5:42:12 | *indirect [post update] [arr, data] | arrays.cpp:42:3:42:3 | *o [post update] [*indirect, arr, data] | -| arrays.cpp:42:29:42:38 | call to user_input | arrays.cpp:42:3:42:40 | ... = ... | -| arrays.cpp:43:8:43:8 | *o [*indirect, arr, data] | arrays.cpp:43:10:43:17 | *indirect [arr, data] | -| arrays.cpp:43:8:43:25 | *access to array [data] | arrays.cpp:43:27:43:30 | data | -| arrays.cpp:43:10:43:17 | *indirect [arr, data] | arrays.cpp:43:8:43:25 | *access to array [data] | -| arrays.cpp:44:8:44:8 | *o [*indirect, arr, data] | arrays.cpp:44:10:44:17 | *indirect [arr, data] | -| arrays.cpp:44:8:44:25 | *access to array [data] | arrays.cpp:44:27:44:30 | data | -| arrays.cpp:44:10:44:17 | *indirect [arr, data] | arrays.cpp:44:8:44:25 | *access to array [data] | -| arrays.cpp:48:3:48:3 | *o [post update] [*indirect, *ptr, data] | arrays.cpp:49:8:49:8 | *o [*indirect, *ptr, data] | -| arrays.cpp:48:3:48:3 | *o [post update] [*indirect, *ptr, data] | arrays.cpp:50:8:50:8 | *o [*indirect, *ptr, data] | -| arrays.cpp:48:3:48:20 | *access to array [post update] [data] | arrays.cpp:48:5:48:12 | *indirect [post update] [*ptr, data] | -| arrays.cpp:48:3:48:40 | ... = ... | arrays.cpp:48:3:48:20 | *access to array [post update] [data] | -| arrays.cpp:48:5:48:12 | *indirect [post update] [*ptr, data] | arrays.cpp:48:3:48:3 | *o [post update] [*indirect, *ptr, data] | -| arrays.cpp:48:29:48:38 | call to user_input | arrays.cpp:48:3:48:40 | ... = ... | -| arrays.cpp:49:8:49:8 | *o [*indirect, *ptr, data] | arrays.cpp:49:10:49:17 | *indirect [*ptr, data] | -| arrays.cpp:49:8:49:25 | *access to array [data] | arrays.cpp:49:27:49:30 | data | -| arrays.cpp:49:10:49:17 | *indirect [*ptr, data] | arrays.cpp:49:8:49:25 | *access to array [data] | -| arrays.cpp:49:10:49:17 | *indirect [*ptr, data] | arrays.cpp:49:20:49:22 | *ptr [data] | -| arrays.cpp:49:20:49:22 | *ptr [data] | arrays.cpp:49:8:49:25 | *access to array [data] | -| arrays.cpp:50:8:50:8 | *o [*indirect, *ptr, data] | arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | -| arrays.cpp:50:8:50:25 | *access to array [data] | arrays.cpp:50:27:50:30 | data | -| arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | arrays.cpp:50:8:50:25 | *access to array [data] | -| arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | arrays.cpp:50:20:50:22 | *ptr [data] | -| arrays.cpp:50:20:50:22 | *ptr [data] | arrays.cpp:50:8:50:25 | *access to array [data] | -| by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:16 | ... = ... | -| by_reference.cpp:12:5:12:16 | ... = ... | by_reference.cpp:12:5:12:5 | *s [post update] [a] | -| by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:19 | ... = ... | -| by_reference.cpp:16:5:16:19 | ... = ... | by_reference.cpp:16:5:16:8 | *this [post update] [a] | -| by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:23:20:27 | value | -| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | -| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] | -| by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:25:24:29 | value | -| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | -| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] | -| by_reference.cpp:31:46:31:46 | *s [a] | by_reference.cpp:32:12:32:12 | *s [a] | -| by_reference.cpp:32:12:32:12 | *s [a] | by_reference.cpp:32:15:32:15 | a | -| by_reference.cpp:32:15:32:15 | a | by_reference.cpp:31:16:31:28 | *nonMemberGetA | -| by_reference.cpp:35:9:35:19 | *this [a] | by_reference.cpp:36:12:36:15 | *this [a] | -| by_reference.cpp:36:12:36:15 | *this [a] | by_reference.cpp:36:18:36:18 | a | -| by_reference.cpp:36:18:36:18 | a | by_reference.cpp:35:9:35:19 | *getDirectly | -| by_reference.cpp:39:9:39:21 | *this [a] | by_reference.cpp:40:12:40:15 | *this [a] | -| by_reference.cpp:40:12:40:15 | *this [a] | by_reference.cpp:35:9:35:19 | *this [a] | -| by_reference.cpp:40:12:40:15 | *this [a] | by_reference.cpp:40:18:40:28 | call to getDirectly | -| by_reference.cpp:40:18:40:28 | call to getDirectly | by_reference.cpp:39:9:39:21 | *getIndirectly | -| by_reference.cpp:43:9:43:27 | *this [a] | by_reference.cpp:44:26:44:29 | *this [a] | -| by_reference.cpp:44:12:44:24 | call to nonMemberGetA | by_reference.cpp:43:9:43:27 | *getThroughNonMember | -| by_reference.cpp:44:26:44:29 | *this [a] | by_reference.cpp:31:46:31:46 | *s [a] | -| by_reference.cpp:44:26:44:29 | *this [a] | by_reference.cpp:44:12:44:24 | call to nonMemberGetA | -| by_reference.cpp:50:3:50:3 | setDirectly output argument [a] | by_reference.cpp:51:8:51:8 | *s [a] | -| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | -| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:50:3:50:3 | setDirectly output argument [a] | -| by_reference.cpp:51:8:51:8 | *s [a] | by_reference.cpp:35:9:35:19 | *this [a] | -| by_reference.cpp:51:8:51:8 | *s [a] | by_reference.cpp:51:10:51:20 | call to getDirectly | -| by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] | by_reference.cpp:57:8:57:8 | *s [a] | -| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | -| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] | -| by_reference.cpp:57:8:57:8 | *s [a] | by_reference.cpp:39:9:39:21 | *this [a] | -| by_reference.cpp:57:8:57:8 | *s [a] | by_reference.cpp:57:10:57:22 | call to getIndirectly | -| by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] | by_reference.cpp:63:8:63:8 | *s [a] | -| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | -| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] | -| by_reference.cpp:63:8:63:8 | *s [a] | by_reference.cpp:43:9:43:27 | *this [a] | -| by_reference.cpp:63:8:63:8 | *s [a] | by_reference.cpp:63:10:63:28 | call to getThroughNonMember | -| by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] | by_reference.cpp:69:22:69:23 | *& ... [a] | -| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | -| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] | -| by_reference.cpp:69:22:69:23 | *& ... [a] | by_reference.cpp:31:46:31:46 | *s [a] | -| by_reference.cpp:69:22:69:23 | *& ... [a] | by_reference.cpp:69:8:69:20 | call to nonMemberGetA | -| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:102:21:102:39 | taint_inner_a_ptr output argument [a] | -| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:103:27:103:35 | taint_inner_a_ptr output argument [a] | -| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:106:21:106:41 | taint_inner_a_ptr output argument [a] | -| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:107:29:107:37 | taint_inner_a_ptr output argument [a] | -| by_reference.cpp:84:3:84:25 | ... = ... | by_reference.cpp:84:3:84:7 | *inner [post update] [a] | -| by_reference.cpp:84:14:84:23 | call to user_input | by_reference.cpp:84:3:84:25 | ... = ... | -| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:122:21:122:38 | taint_inner_a_ref output argument [a] | -| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:123:21:123:36 | taint_inner_a_ref output argument [a] | -| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:126:21:126:40 | taint_inner_a_ref output argument [a] | -| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:127:21:127:38 | taint_inner_a_ref output argument [a] | -| by_reference.cpp:88:3:88:24 | ... = ... | by_reference.cpp:88:3:88:7 | *inner [post update] [a] | -| by_reference.cpp:88:13:88:22 | call to user_input | by_reference.cpp:88:3:88:24 | ... = ... | -| by_reference.cpp:91:25:91:26 | *pa | by_reference.cpp:104:15:104:22 | taint_a_ptr output argument | -| by_reference.cpp:91:25:91:26 | *pa | by_reference.cpp:108:15:108:24 | taint_a_ptr output argument | -| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:91:25:91:26 | *pa | -| by_reference.cpp:95:25:95:26 | *pa | by_reference.cpp:124:15:124:21 | taint_a_ref output argument | -| by_reference.cpp:95:25:95:26 | *pa | by_reference.cpp:128:15:128:23 | taint_a_ref output argument | -| by_reference.cpp:96:8:96:17 | call to user_input | by_reference.cpp:95:25:95:26 | *pa | -| by_reference.cpp:102:21:102:39 | taint_inner_a_ptr output argument [a] | by_reference.cpp:102:22:102:26 | *outer [post update] [inner_nested, a] | -| by_reference.cpp:102:22:102:26 | *outer [post update] [inner_nested, a] | by_reference.cpp:110:8:110:12 | *outer [inner_nested, a] | -| by_reference.cpp:103:21:103:25 | *outer [post update] [*inner_ptr, a] | by_reference.cpp:111:8:111:12 | *outer [*inner_ptr, a] | -| by_reference.cpp:103:27:103:35 | taint_inner_a_ptr output argument [a] | by_reference.cpp:103:21:103:25 | *outer [post update] [*inner_ptr, a] | -| by_reference.cpp:104:15:104:22 | taint_a_ptr output argument | by_reference.cpp:104:16:104:20 | *outer [post update] [a] | -| by_reference.cpp:104:16:104:20 | *outer [post update] [a] | by_reference.cpp:112:8:112:12 | *outer [a] | -| by_reference.cpp:106:21:106:41 | taint_inner_a_ptr output argument [a] | by_reference.cpp:106:22:106:27 | *pouter [post update] [inner_nested, a] | -| by_reference.cpp:106:22:106:27 | *pouter [post update] [inner_nested, a] | by_reference.cpp:114:8:114:13 | *pouter [inner_nested, a] | -| by_reference.cpp:107:21:107:26 | *pouter [post update] [*inner_ptr, a] | by_reference.cpp:115:8:115:13 | *pouter [*inner_ptr, a] | -| by_reference.cpp:107:29:107:37 | taint_inner_a_ptr output argument [a] | by_reference.cpp:107:21:107:26 | *pouter [post update] [*inner_ptr, a] | -| by_reference.cpp:108:15:108:24 | taint_a_ptr output argument | by_reference.cpp:108:16:108:21 | *pouter [post update] [a] | -| by_reference.cpp:108:16:108:21 | *pouter [post update] [a] | by_reference.cpp:116:8:116:13 | *pouter [a] | -| by_reference.cpp:110:8:110:12 | *outer [inner_nested, a] | by_reference.cpp:110:14:110:25 | *inner_nested [a] | -| by_reference.cpp:110:14:110:25 | *inner_nested [a] | by_reference.cpp:110:27:110:27 | a | -| by_reference.cpp:111:8:111:12 | *outer [*inner_ptr, a] | by_reference.cpp:111:14:111:22 | *inner_ptr [a] | -| by_reference.cpp:111:14:111:22 | *inner_ptr [a] | by_reference.cpp:111:25:111:25 | a | -| by_reference.cpp:112:8:112:12 | *outer [a] | by_reference.cpp:112:14:112:14 | a | -| by_reference.cpp:114:8:114:13 | *pouter [inner_nested, a] | by_reference.cpp:114:16:114:27 | *inner_nested [a] | -| by_reference.cpp:114:16:114:27 | *inner_nested [a] | by_reference.cpp:114:29:114:29 | a | -| by_reference.cpp:115:8:115:13 | *pouter [*inner_ptr, a] | by_reference.cpp:115:16:115:24 | *inner_ptr [a] | -| by_reference.cpp:115:16:115:24 | *inner_ptr [a] | by_reference.cpp:115:27:115:27 | a | -| by_reference.cpp:116:8:116:13 | *pouter [a] | by_reference.cpp:116:16:116:16 | a | -| by_reference.cpp:122:21:122:25 | *outer [post update] [inner_nested, a] | by_reference.cpp:130:8:130:12 | *outer [inner_nested, a] | -| by_reference.cpp:122:21:122:38 | taint_inner_a_ref output argument [a] | by_reference.cpp:122:21:122:25 | *outer [post update] [inner_nested, a] | -| by_reference.cpp:123:21:123:36 | taint_inner_a_ref output argument [a] | by_reference.cpp:123:22:123:26 | *outer [post update] [*inner_ptr, a] | -| by_reference.cpp:123:22:123:26 | *outer [post update] [*inner_ptr, a] | by_reference.cpp:131:8:131:12 | *outer [*inner_ptr, a] | -| by_reference.cpp:124:15:124:19 | *outer [post update] [a] | by_reference.cpp:132:8:132:12 | *outer [a] | -| by_reference.cpp:124:15:124:21 | taint_a_ref output argument | by_reference.cpp:124:15:124:19 | *outer [post update] [a] | -| by_reference.cpp:126:21:126:26 | *pouter [post update] [inner_nested, a] | by_reference.cpp:134:8:134:13 | *pouter [inner_nested, a] | -| by_reference.cpp:126:21:126:40 | taint_inner_a_ref output argument [a] | by_reference.cpp:126:21:126:26 | *pouter [post update] [inner_nested, a] | -| by_reference.cpp:127:21:127:38 | taint_inner_a_ref output argument [a] | by_reference.cpp:127:22:127:27 | *pouter [post update] [*inner_ptr, a] | -| by_reference.cpp:127:22:127:27 | *pouter [post update] [*inner_ptr, a] | by_reference.cpp:135:8:135:13 | *pouter [*inner_ptr, a] | -| by_reference.cpp:128:15:128:20 | *pouter [post update] [a] | by_reference.cpp:136:8:136:13 | *pouter [a] | -| by_reference.cpp:128:15:128:23 | taint_a_ref output argument | by_reference.cpp:128:15:128:20 | *pouter [post update] [a] | -| by_reference.cpp:130:8:130:12 | *outer [inner_nested, a] | by_reference.cpp:130:14:130:25 | *inner_nested [a] | -| by_reference.cpp:130:14:130:25 | *inner_nested [a] | by_reference.cpp:130:27:130:27 | a | -| by_reference.cpp:131:8:131:12 | *outer [*inner_ptr, a] | by_reference.cpp:131:14:131:22 | *inner_ptr [a] | -| by_reference.cpp:131:14:131:22 | *inner_ptr [a] | by_reference.cpp:131:25:131:25 | a | -| by_reference.cpp:132:8:132:12 | *outer [a] | by_reference.cpp:132:14:132:14 | a | -| by_reference.cpp:134:8:134:13 | *pouter [inner_nested, a] | by_reference.cpp:134:16:134:27 | *inner_nested [a] | -| by_reference.cpp:134:16:134:27 | *inner_nested [a] | by_reference.cpp:134:29:134:29 | a | -| by_reference.cpp:135:8:135:13 | *pouter [*inner_ptr, a] | by_reference.cpp:135:16:135:24 | *inner_ptr [a] | -| by_reference.cpp:135:16:135:24 | *inner_ptr [a] | by_reference.cpp:135:27:135:27 | a | -| by_reference.cpp:136:8:136:13 | *pouter [a] | by_reference.cpp:136:16:136:16 | a | -| clearning.cpp:32:3:32:25 | ... = ... | clearning.cpp:32:4:32:4 | *s [post update] [*x] | -| clearning.cpp:32:4:32:4 | *s [post update] [*x] | clearning.cpp:33:5:33:5 | *s [*x] | -| clearning.cpp:32:10:32:19 | call to user_input | clearning.cpp:32:3:32:25 | ... = ... | -| clearning.cpp:33:5:33:5 | *s [*x] | clearning.cpp:34:9:34:9 | *s [*x] | -| clearning.cpp:34:9:34:9 | *s [*x] | clearning.cpp:34:8:34:11 | * ... | -| clearning.cpp:53:3:53:25 | ... = ... | clearning.cpp:53:4:53:4 | *s [post update] [*x] | -| clearning.cpp:53:4:53:4 | *s [post update] [*x] | clearning.cpp:54:3:54:3 | *s [*x] | -| clearning.cpp:53:10:53:19 | call to user_input | clearning.cpp:53:3:53:25 | ... = ... | -| clearning.cpp:54:3:54:3 | *s [*x] | clearning.cpp:54:3:54:7 | *... ++ | -| clearning.cpp:54:3:54:3 | *s [*x] | clearning.cpp:54:5:54:5 | *x | -| clearning.cpp:54:3:54:3 | *s [*x] | clearning.cpp:55:8:55:8 | *s [*x] | -| clearning.cpp:54:3:54:3 | *s [post update] [*x] | clearning.cpp:55:8:55:8 | *s [*x] | -| clearning.cpp:54:3:54:7 | *... ++ | clearning.cpp:54:3:54:3 | *s [post update] [*x] | -| clearning.cpp:54:3:54:7 | *... ++ | clearning.cpp:54:3:54:7 | *... ++ | -| clearning.cpp:54:5:54:5 | *x | clearning.cpp:54:3:54:7 | *... ++ | -| clearning.cpp:55:8:55:8 | *s [*x] | clearning.cpp:55:10:55:10 | *x | -| clearning.cpp:60:3:60:22 | ... = ... | clearning.cpp:60:5:60:5 | *s [post update] [**x] | -| clearning.cpp:60:5:60:5 | *s [post update] [**x] | clearning.cpp:61:3:61:3 | *s [**x] | -| clearning.cpp:60:11:60:20 | call to user_input | clearning.cpp:60:3:60:22 | ... = ... | -| clearning.cpp:61:3:61:3 | *s [**x] | clearning.cpp:61:3:61:7 | **... ++ | -| clearning.cpp:61:3:61:3 | *s [**x] | clearning.cpp:61:5:61:5 | **x | -| clearning.cpp:61:3:61:3 | *s [**x] | clearning.cpp:62:8:62:8 | *s [**x] | -| clearning.cpp:61:3:61:3 | *s [post update] [**x] | clearning.cpp:62:8:62:8 | *s [**x] | -| clearning.cpp:61:3:61:7 | **... ++ | clearning.cpp:61:3:61:3 | *s [post update] [**x] | -| clearning.cpp:61:3:61:7 | **... ++ | clearning.cpp:61:3:61:7 | **... ++ | -| clearning.cpp:61:5:61:5 | **x | clearning.cpp:61:3:61:7 | **... ++ | -| clearning.cpp:62:8:62:8 | *s [**x] | clearning.cpp:62:10:62:10 | **x | -| clearning.cpp:74:18:74:18 | *s [post update] [*val] | clearning.cpp:76:8:76:8 | *s [*val] | -| clearning.cpp:74:20:74:22 | argument_source output argument | clearning.cpp:74:18:74:18 | *s [post update] [*val] | -| clearning.cpp:76:8:76:8 | *s [*val] | clearning.cpp:76:7:76:12 | * ... | -| clearning.cpp:81:18:81:18 | *s [post update] [*val] | clearning.cpp:83:13:83:13 | *s [*val] | -| clearning.cpp:81:20:81:22 | argument_source output argument | clearning.cpp:81:18:81:18 | *s [post update] [*val] | -| clearning.cpp:83:5:83:5 | *s [post update] [*val] | clearning.cpp:84:8:84:8 | *s [*val] | -| clearning.cpp:83:5:83:21 | *... = ... | clearning.cpp:83:5:83:5 | *s [post update] [*val] | -| clearning.cpp:83:13:83:13 | *s [*val] | clearning.cpp:83:13:83:21 | *... + ... | -| clearning.cpp:83:13:83:13 | *s [*val] | clearning.cpp:83:15:83:17 | *val | -| clearning.cpp:83:13:83:21 | *... + ... | clearning.cpp:83:5:83:21 | *... = ... | -| clearning.cpp:83:15:83:17 | *val | clearning.cpp:83:5:83:21 | *... = ... | -| clearning.cpp:84:8:84:8 | *s [*val] | clearning.cpp:84:7:84:12 | * ... | -| clearning.cpp:89:18:89:18 | *s [post update] [*val] | clearning.cpp:90:3:90:3 | *s [*val] | -| clearning.cpp:89:20:89:22 | argument_source output argument | clearning.cpp:89:18:89:18 | *s [post update] [*val] | -| clearning.cpp:90:3:90:3 | *s [*val] | clearning.cpp:90:3:90:9 | *... ++ | -| clearning.cpp:90:3:90:3 | *s [*val] | clearning.cpp:90:5:90:7 | **val | -| clearning.cpp:90:3:90:3 | *s [*val] | clearning.cpp:91:8:91:8 | *s [*val] | -| clearning.cpp:90:3:90:3 | *s [post update] [*val] | clearning.cpp:91:8:91:8 | *s [*val] | -| clearning.cpp:90:3:90:9 | *... ++ | clearning.cpp:90:3:90:3 | *s [post update] [*val] | -| clearning.cpp:90:3:90:9 | *... ++ | clearning.cpp:90:3:90:9 | *... ++ | -| clearning.cpp:90:5:90:7 | **val | clearning.cpp:90:3:90:9 | *... ++ | -| clearning.cpp:91:8:91:8 | *s [*val] | clearning.cpp:91:7:91:12 | * ... | -| clearning.cpp:96:18:96:18 | *s [post update] [*val] | clearning.cpp:97:10:97:10 | *s [*val] | -| clearning.cpp:96:20:96:22 | argument_source output argument | clearning.cpp:96:18:96:18 | *s [post update] [*val] | -| clearning.cpp:97:2:97:2 | *s [post update] [*val] | clearning.cpp:98:8:98:8 | *s [*val] | -| clearning.cpp:97:2:97:18 | *... = ... | clearning.cpp:97:2:97:2 | *s [post update] [*val] | -| clearning.cpp:97:10:97:10 | *s [*val] | clearning.cpp:97:10:97:18 | *... + ... | -| clearning.cpp:97:10:97:10 | *s [*val] | clearning.cpp:97:12:97:14 | *val | -| clearning.cpp:97:10:97:18 | *... + ... | clearning.cpp:97:2:97:18 | *... = ... | -| clearning.cpp:97:12:97:14 | *val | clearning.cpp:97:2:97:18 | *... = ... | -| clearning.cpp:98:8:98:8 | *s [*val] | clearning.cpp:98:7:98:12 | * ... | -| clearning.cpp:103:18:103:18 | *s [post update] [*val] | clearning.cpp:104:2:104:2 | *s [*val] | -| clearning.cpp:103:20:103:22 | argument_source output argument | clearning.cpp:103:18:103:18 | *s [post update] [*val] | -| clearning.cpp:104:2:104:2 | *s [*val] | clearning.cpp:104:2:104:8 | *... ++ | -| clearning.cpp:104:2:104:2 | *s [*val] | clearning.cpp:104:4:104:6 | *val | -| clearning.cpp:104:2:104:2 | *s [*val] | clearning.cpp:105:8:105:8 | *s [*val] | -| clearning.cpp:104:2:104:2 | *s [post update] [*val] | clearning.cpp:105:8:105:8 | *s [*val] | -| clearning.cpp:104:2:104:8 | *... ++ | clearning.cpp:104:2:104:2 | *s [post update] [*val] | -| clearning.cpp:104:2:104:8 | *... ++ | clearning.cpp:104:2:104:8 | *... ++ | -| clearning.cpp:104:4:104:6 | *val | clearning.cpp:104:2:104:8 | *... ++ | -| clearning.cpp:105:8:105:8 | *s [*val] | clearning.cpp:105:7:105:12 | * ... | -| clearning.cpp:110:18:110:18 | *s [post update] [*val] | clearning.cpp:111:4:111:4 | *s [*val] | -| clearning.cpp:110:20:110:22 | argument_source output argument | clearning.cpp:110:18:110:18 | *s [post update] [*val] | -| clearning.cpp:111:2:111:8 | *++ ... | clearning.cpp:111:2:111:8 | *++ ... | -| clearning.cpp:111:2:111:8 | *++ ... | clearning.cpp:111:4:111:4 | *s [post update] [*val] | -| clearning.cpp:111:4:111:4 | *s [*val] | clearning.cpp:111:2:111:8 | *++ ... | -| clearning.cpp:111:4:111:4 | *s [*val] | clearning.cpp:111:6:111:8 | *val | -| clearning.cpp:111:4:111:4 | *s [*val] | clearning.cpp:112:8:112:8 | *s [*val] | -| clearning.cpp:111:4:111:4 | *s [post update] [*val] | clearning.cpp:112:8:112:8 | *s [*val] | -| clearning.cpp:111:6:111:8 | *val | clearning.cpp:111:2:111:8 | *++ ... | -| clearning.cpp:112:8:112:8 | *s [*val] | clearning.cpp:112:7:112:12 | * ... | -| clearning.cpp:117:18:117:18 | *s [post update] [*val] | clearning.cpp:118:2:118:2 | *s [*val] | -| clearning.cpp:117:20:117:22 | argument_source output argument | clearning.cpp:117:18:117:18 | *s [post update] [*val] | -| clearning.cpp:118:2:118:2 | *s [*val] | clearning.cpp:118:2:118:11 | *... += ... | -| clearning.cpp:118:2:118:2 | *s [*val] | clearning.cpp:118:4:118:6 | *val | -| clearning.cpp:118:2:118:2 | *s [*val] | clearning.cpp:119:8:119:8 | *s [*val] | -| clearning.cpp:118:2:118:2 | *s [post update] [*val] | clearning.cpp:119:8:119:8 | *s [*val] | -| clearning.cpp:118:2:118:11 | *... += ... | clearning.cpp:118:2:118:2 | *s [post update] [*val] | -| clearning.cpp:118:2:118:11 | *... += ... | clearning.cpp:118:2:118:11 | *... += ... | -| clearning.cpp:118:4:118:6 | *val | clearning.cpp:118:2:118:11 | *... += ... | -| clearning.cpp:119:8:119:8 | *s [*val] | clearning.cpp:119:7:119:12 | * ... | -| clearning.cpp:151:3:151:3 | *s [post update] [val] | clearning.cpp:152:8:152:8 | *s [val] | -| clearning.cpp:151:3:151:22 | ... = ... | clearning.cpp:151:3:151:3 | *s [post update] [val] | -| clearning.cpp:151:11:151:20 | call to user_input | clearning.cpp:151:3:151:22 | ... = ... | -| clearning.cpp:152:8:152:8 | *s [val] | clearning.cpp:152:10:152:12 | val | -| complex.cpp:9:7:9:7 | *this [a_] | complex.cpp:9:20:9:21 | *this [a_] | -| complex.cpp:9:20:9:21 | *this [a_] | complex.cpp:9:20:9:21 | a_ | -| complex.cpp:9:20:9:21 | a_ | complex.cpp:9:7:9:7 | *a | -| complex.cpp:10:7:10:7 | *this [b_] | complex.cpp:10:20:10:21 | *this [b_] | -| complex.cpp:10:20:10:21 | *this [b_] | complex.cpp:10:20:10:21 | b_ | -| complex.cpp:10:20:10:21 | b_ | complex.cpp:10:7:10:7 | *b | -| complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:27 | ... = ... | -| complex.cpp:11:22:11:27 | ... = ... | complex.cpp:11:22:11:23 | *this [post update] [a_] | -| complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:27 | ... = ... | -| complex.cpp:12:22:12:27 | ... = ... | complex.cpp:12:22:12:23 | *this [post update] [b_] | -| complex.cpp:40:17:40:17 | *b [inner, f, a_] | complex.cpp:42:8:42:8 | *b [inner, f, a_] | -| complex.cpp:40:17:40:17 | *b [inner, f, b_] | complex.cpp:43:8:43:8 | *b [inner, f, b_] | -| complex.cpp:42:8:42:8 | *b [inner, f, a_] | complex.cpp:42:10:42:14 | *inner [f, a_] | -| complex.cpp:42:10:42:14 | *inner [f, a_] | complex.cpp:42:16:42:16 | *f [a_] | -| complex.cpp:42:16:42:16 | *f [a_] | complex.cpp:9:7:9:7 | *this [a_] | -| complex.cpp:42:16:42:16 | *f [a_] | complex.cpp:42:18:42:18 | call to a | -| complex.cpp:43:8:43:8 | *b [inner, f, b_] | complex.cpp:43:10:43:14 | *inner [f, b_] | -| complex.cpp:43:10:43:14 | *inner [f, b_] | complex.cpp:43:16:43:16 | *f [b_] | -| complex.cpp:43:16:43:16 | *f [b_] | complex.cpp:10:7:10:7 | *this [b_] | -| complex.cpp:43:16:43:16 | *f [b_] | complex.cpp:43:18:43:18 | call to b | -| complex.cpp:53:3:53:4 | *b1 [post update] [inner, f, a_] | complex.cpp:59:7:59:8 | *b1 [inner, f, a_] | -| complex.cpp:53:6:53:10 | *inner [post update] [f, a_] | complex.cpp:53:3:53:4 | *b1 [post update] [inner, f, a_] | -| complex.cpp:53:12:53:12 | setA output argument [a_] | complex.cpp:53:6:53:10 | *inner [post update] [f, a_] | -| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | -| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:53:12:53:12 | setA output argument [a_] | -| complex.cpp:54:3:54:4 | *b2 [post update] [inner, f, b_] | complex.cpp:62:7:62:8 | *b2 [inner, f, b_] | -| complex.cpp:54:6:54:10 | *inner [post update] [f, b_] | complex.cpp:54:3:54:4 | *b2 [post update] [inner, f, b_] | -| complex.cpp:54:12:54:12 | setB output argument [b_] | complex.cpp:54:6:54:10 | *inner [post update] [f, b_] | -| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | -| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:54:12:54:12 | setB output argument [b_] | -| complex.cpp:55:3:55:4 | *b3 [post update] [inner, f, a_] | complex.cpp:65:7:65:8 | *b3 [inner, f, a_] | -| complex.cpp:55:6:55:10 | *inner [post update] [f, a_] | complex.cpp:55:3:55:4 | *b3 [post update] [inner, f, a_] | -| complex.cpp:55:12:55:12 | setA output argument [a_] | complex.cpp:55:6:55:10 | *inner [post update] [f, a_] | -| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | -| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:55:12:55:12 | setA output argument [a_] | -| complex.cpp:56:3:56:4 | *b3 [post update] [inner, f, b_] | complex.cpp:65:7:65:8 | *b3 [inner, f, b_] | -| complex.cpp:56:6:56:10 | *inner [post update] [f, b_] | complex.cpp:56:3:56:4 | *b3 [post update] [inner, f, b_] | -| complex.cpp:56:12:56:12 | setB output argument [b_] | complex.cpp:56:6:56:10 | *inner [post update] [f, b_] | -| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | -| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:56:12:56:12 | setB output argument [b_] | -| complex.cpp:59:7:59:8 | *b1 [inner, f, a_] | complex.cpp:40:17:40:17 | *b [inner, f, a_] | -| complex.cpp:62:7:62:8 | *b2 [inner, f, b_] | complex.cpp:40:17:40:17 | *b [inner, f, b_] | -| complex.cpp:65:7:65:8 | *b3 [inner, f, a_] | complex.cpp:40:17:40:17 | *b [inner, f, a_] | -| complex.cpp:65:7:65:8 | *b3 [inner, f, b_] | complex.cpp:40:17:40:17 | *b [inner, f, b_] | -| conflated.cpp:10:3:10:22 | ... = ... | conflated.cpp:10:4:10:5 | *ra [post update] [*p] | -| conflated.cpp:10:4:10:5 | *ra [post update] [*p] | conflated.cpp:11:9:11:10 | *ra [*p] | -| conflated.cpp:10:11:10:20 | call to user_input | conflated.cpp:10:3:10:22 | ... = ... | -| conflated.cpp:11:9:11:10 | *ra [*p] | conflated.cpp:11:8:11:12 | * ... | -| conflated.cpp:19:19:19:21 | argument_source output argument | conflated.cpp:20:8:20:10 | *raw | -| conflated.cpp:29:3:29:4 | *pa [post update] [x] | conflated.cpp:30:8:30:9 | *pa [x] | -| conflated.cpp:29:3:29:22 | ... = ... | conflated.cpp:29:3:29:4 | *pa [post update] [x] | -| conflated.cpp:29:11:29:20 | call to user_input | conflated.cpp:29:3:29:22 | ... = ... | -| conflated.cpp:30:8:30:9 | *pa [x] | conflated.cpp:30:12:30:12 | x | -| conflated.cpp:36:3:36:4 | *pa [post update] [x] | conflated.cpp:37:8:37:9 | *pa [x] | -| conflated.cpp:36:3:36:22 | ... = ... | conflated.cpp:36:3:36:4 | *pa [post update] [x] | -| conflated.cpp:36:11:36:20 | call to user_input | conflated.cpp:36:3:36:22 | ... = ... | -| conflated.cpp:37:8:37:9 | *pa [x] | conflated.cpp:37:12:37:12 | x | -| conflated.cpp:54:3:54:4 | *ll [post update] [*next, y] | conflated.cpp:55:8:55:9 | *ll [*next, y] | -| conflated.cpp:54:3:54:28 | ... = ... | conflated.cpp:54:7:54:10 | *next [post update] [y] | -| conflated.cpp:54:7:54:10 | *next [post update] [y] | conflated.cpp:54:3:54:4 | *ll [post update] [*next, y] | -| conflated.cpp:54:17:54:26 | call to user_input | conflated.cpp:54:3:54:28 | ... = ... | -| conflated.cpp:55:8:55:9 | *ll [*next, y] | conflated.cpp:55:12:55:15 | *next [y] | -| conflated.cpp:55:12:55:15 | *next [y] | conflated.cpp:55:18:55:18 | y | -| conflated.cpp:60:3:60:4 | *ll [post update] [*next, y] | conflated.cpp:61:8:61:9 | *ll [*next, y] | -| conflated.cpp:60:3:60:28 | ... = ... | conflated.cpp:60:7:60:10 | *next [post update] [y] | -| conflated.cpp:60:7:60:10 | *next [post update] [y] | conflated.cpp:60:3:60:4 | *ll [post update] [*next, y] | -| conflated.cpp:60:17:60:26 | call to user_input | conflated.cpp:60:3:60:28 | ... = ... | -| conflated.cpp:61:8:61:9 | *ll [*next, y] | conflated.cpp:61:12:61:15 | *next [y] | -| conflated.cpp:61:12:61:15 | *next [y] | conflated.cpp:61:18:61:18 | y | -| constructors.cpp:18:9:18:9 | *this [a_] | constructors.cpp:18:22:18:23 | *this [a_] | -| constructors.cpp:18:22:18:23 | *this [a_] | constructors.cpp:18:22:18:23 | a_ | -| constructors.cpp:18:22:18:23 | a_ | constructors.cpp:18:9:18:9 | *a | -| constructors.cpp:19:9:19:9 | *this [b_] | constructors.cpp:19:22:19:23 | *this [b_] | -| constructors.cpp:19:22:19:23 | *this [b_] | constructors.cpp:19:22:19:23 | b_ | -| constructors.cpp:19:22:19:23 | b_ | constructors.cpp:19:9:19:9 | *b | -| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | a | -| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | b | -| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:5:23:7 | *this [post update] [a_] | -| constructors.cpp:23:35:23:35 | b | constructors.cpp:23:5:23:7 | *this [post update] [b_] | -| constructors.cpp:26:15:26:15 | *f [a_] | constructors.cpp:28:10:28:10 | *f [a_] | -| constructors.cpp:26:15:26:15 | *f [b_] | constructors.cpp:29:10:29:10 | *f [b_] | -| constructors.cpp:28:10:28:10 | *f [a_] | constructors.cpp:18:9:18:9 | *this [a_] | -| constructors.cpp:28:10:28:10 | *f [a_] | constructors.cpp:28:12:28:12 | call to a | -| constructors.cpp:29:10:29:10 | *f [b_] | constructors.cpp:19:9:19:9 | *this [b_] | -| constructors.cpp:29:10:29:10 | *f [b_] | constructors.cpp:29:12:29:12 | call to b | -| constructors.cpp:34:9:34:9 | call to Foo [a_] | constructors.cpp:40:9:40:9 | *f [a_] | -| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | -| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:34:9:34:9 | call to Foo [a_] | -| constructors.cpp:35:9:35:9 | call to Foo [b_] | constructors.cpp:43:9:43:9 | *g [b_] | -| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | -| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:35:9:35:9 | call to Foo [b_] | -| constructors.cpp:36:9:36:9 | call to Foo [a_] | constructors.cpp:46:9:46:9 | *h [a_] | -| constructors.cpp:36:9:36:9 | call to Foo [b_] | constructors.cpp:46:9:46:9 | *h [b_] | -| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | -| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:36:9:36:9 | call to Foo [a_] | -| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | -| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:36:9:36:9 | call to Foo [b_] | -| constructors.cpp:40:9:40:9 | *f [a_] | constructors.cpp:26:15:26:15 | *f [a_] | -| constructors.cpp:43:9:43:9 | *g [b_] | constructors.cpp:26:15:26:15 | *f [b_] | -| constructors.cpp:46:9:46:9 | *h [a_] | constructors.cpp:26:15:26:15 | *f [a_] | -| constructors.cpp:46:9:46:9 | *h [b_] | constructors.cpp:26:15:26:15 | *f [b_] | -| qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:44 | ... = ... | -| qualifiers.cpp:9:30:9:44 | ... = ... | qualifiers.cpp:9:30:9:33 | *this [post update] [a] | -| qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:64 | ... = ... | -| qualifiers.cpp:12:49:12:64 | ... = ... | qualifiers.cpp:12:49:12:53 | *inner [post update] [a] | -| qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:65 | ... = ... | -| qualifiers.cpp:13:51:13:65 | ... = ... | qualifiers.cpp:13:51:13:55 | *inner [post update] [a] | -| qualifiers.cpp:22:5:22:9 | getInner output argument [*inner, a] | qualifiers.cpp:23:10:23:14 | *outer [*inner, a] | -| qualifiers.cpp:22:5:22:38 | ... = ... | qualifiers.cpp:22:11:22:18 | *call to getInner [post update] [a] | -| qualifiers.cpp:22:11:22:18 | *call to getInner [post update] [a] | qualifiers.cpp:22:5:22:9 | getInner output argument [*inner, a] | -| qualifiers.cpp:22:27:22:36 | call to user_input | qualifiers.cpp:22:5:22:38 | ... = ... | -| qualifiers.cpp:23:10:23:14 | *outer [*inner, a] | qualifiers.cpp:23:16:23:20 | *inner [a] | -| qualifiers.cpp:23:16:23:20 | *inner [a] | qualifiers.cpp:23:23:23:23 | a | -| qualifiers.cpp:27:5:27:9 | getInner output argument [*inner, a] | qualifiers.cpp:28:10:28:14 | *outer [*inner, a] | -| qualifiers.cpp:27:11:27:18 | setA output argument [a] | qualifiers.cpp:27:5:27:9 | getInner output argument [*inner, a] | -| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | -| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:27:11:27:18 | setA output argument [a] | -| qualifiers.cpp:28:10:28:14 | *outer [*inner, a] | qualifiers.cpp:28:16:28:20 | *inner [a] | -| qualifiers.cpp:28:16:28:20 | *inner [a] | qualifiers.cpp:28:23:28:23 | a | -| qualifiers.cpp:32:17:32:21 | getInner output argument [*inner, a] | qualifiers.cpp:33:10:33:14 | *outer [*inner, a] | -| qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] | qualifiers.cpp:32:17:32:21 | getInner output argument [*inner, a] | -| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | -| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] | -| qualifiers.cpp:33:10:33:14 | *outer [*inner, a] | qualifiers.cpp:33:16:33:20 | *inner [a] | -| qualifiers.cpp:33:16:33:20 | *inner [a] | qualifiers.cpp:33:23:33:23 | a | -| qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] | qualifiers.cpp:37:20:37:24 | getInner output argument [*inner, a] | -| qualifiers.cpp:37:20:37:24 | getInner output argument [*inner, a] | qualifiers.cpp:38:10:38:14 | *outer [*inner, a] | -| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | -| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] | -| qualifiers.cpp:38:10:38:14 | *outer [*inner, a] | qualifiers.cpp:38:16:38:20 | *inner [a] | -| qualifiers.cpp:38:16:38:20 | *inner [a] | qualifiers.cpp:38:23:38:23 | a | -| qualifiers.cpp:42:5:42:40 | ... = ... | qualifiers.cpp:42:6:42:22 | ** ... [post update] [a] | -| qualifiers.cpp:42:6:42:22 | ** ... [post update] [a] | qualifiers.cpp:42:7:42:11 | getInner output argument [*inner, a] | -| qualifiers.cpp:42:7:42:11 | getInner output argument [*inner, a] | qualifiers.cpp:43:10:43:14 | *outer [*inner, a] | -| qualifiers.cpp:42:29:42:38 | call to user_input | qualifiers.cpp:42:5:42:40 | ... = ... | -| qualifiers.cpp:43:10:43:14 | *outer [*inner, a] | qualifiers.cpp:43:16:43:20 | *inner [a] | -| qualifiers.cpp:43:16:43:20 | *inner [a] | qualifiers.cpp:43:23:43:23 | a | -| qualifiers.cpp:47:5:47:42 | ... = ... | qualifiers.cpp:47:15:47:22 | *call to getInner [post update] [a] | -| qualifiers.cpp:47:6:47:11 | getInner output argument [*inner, a] | qualifiers.cpp:48:10:48:14 | *outer [*inner, a] | -| qualifiers.cpp:47:15:47:22 | *call to getInner [post update] [a] | qualifiers.cpp:47:6:47:11 | getInner output argument [*inner, a] | -| qualifiers.cpp:47:31:47:40 | call to user_input | qualifiers.cpp:47:5:47:42 | ... = ... | -| qualifiers.cpp:48:10:48:14 | *outer [*inner, a] | qualifiers.cpp:48:16:48:20 | *inner [a] | -| qualifiers.cpp:48:16:48:20 | *inner [a] | qualifiers.cpp:48:23:48:23 | a | -| realistic.cpp:53:9:53:11 | *foo [post update] [bar, *baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | *foo [bar, *baz, userInput, bufferLen] | -| realistic.cpp:53:9:53:18 | *access to array [post update] [*baz, userInput, bufferLen] | realistic.cpp:53:9:53:11 | *foo [post update] [bar, *baz, userInput, bufferLen] | -| realistic.cpp:53:9:53:66 | ... = ... | realistic.cpp:53:25:53:33 | *userInput [post update] [bufferLen] | -| realistic.cpp:53:20:53:22 | *baz [post update] [userInput, bufferLen] | realistic.cpp:53:9:53:18 | *access to array [post update] [*baz, userInput, bufferLen] | -| realistic.cpp:53:25:53:33 | *userInput [post update] [bufferLen] | realistic.cpp:53:20:53:22 | *baz [post update] [userInput, bufferLen] | -| realistic.cpp:53:47:53:66 | call to user_input | realistic.cpp:53:9:53:66 | ... = ... | -| realistic.cpp:61:21:61:23 | *foo [bar, *baz, userInput, bufferLen] | realistic.cpp:61:21:61:30 | *access to array [*baz, userInput, bufferLen] | -| realistic.cpp:61:21:61:30 | *access to array [*baz, userInput, bufferLen] | realistic.cpp:61:32:61:34 | *baz [userInput, bufferLen] | -| realistic.cpp:61:32:61:34 | *baz [userInput, bufferLen] | realistic.cpp:61:37:61:45 | *userInput [bufferLen] | -| realistic.cpp:61:37:61:45 | *userInput [bufferLen] | realistic.cpp:61:14:61:55 | bufferLen | -| simple.cpp:18:9:18:9 | *this [a_] | simple.cpp:18:22:18:23 | *this [a_] | -| simple.cpp:18:22:18:23 | *this [a_] | simple.cpp:18:22:18:23 | a_ | -| simple.cpp:18:22:18:23 | a_ | simple.cpp:18:9:18:9 | *a | -| simple.cpp:19:9:19:9 | *this [b_] | simple.cpp:19:22:19:23 | *this [b_] | -| simple.cpp:19:22:19:23 | *this [b_] | simple.cpp:19:22:19:23 | b_ | -| simple.cpp:19:22:19:23 | b_ | simple.cpp:19:9:19:9 | *b | -| simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:29 | ... = ... | -| simple.cpp:20:24:20:29 | ... = ... | simple.cpp:20:24:20:25 | *this [post update] [a_] | -| simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:29 | ... = ... | -| simple.cpp:21:24:21:29 | ... = ... | simple.cpp:21:24:21:25 | *this [post update] [b_] | -| simple.cpp:26:15:26:15 | *f [a_] | simple.cpp:28:10:28:10 | *f [a_] | -| simple.cpp:26:15:26:15 | *f [b_] | simple.cpp:29:10:29:10 | *f [b_] | -| simple.cpp:28:10:28:10 | *f [a_] | simple.cpp:18:9:18:9 | *this [a_] | -| simple.cpp:28:10:28:10 | *f [a_] | simple.cpp:28:12:28:12 | call to a | -| simple.cpp:29:10:29:10 | *f [b_] | simple.cpp:19:9:19:9 | *this [b_] | -| simple.cpp:29:10:29:10 | *f [b_] | simple.cpp:29:12:29:12 | call to b | -| simple.cpp:39:5:39:5 | setA output argument [a_] | simple.cpp:45:9:45:9 | *f [a_] | -| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | -| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:39:5:39:5 | setA output argument [a_] | -| simple.cpp:40:5:40:5 | setB output argument [b_] | simple.cpp:48:9:48:9 | *g [b_] | -| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | -| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:40:5:40:5 | setB output argument [b_] | -| simple.cpp:41:5:41:5 | setA output argument [a_] | simple.cpp:51:9:51:9 | *h [a_] | -| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | -| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:41:5:41:5 | setA output argument [a_] | -| simple.cpp:42:5:42:5 | setB output argument [b_] | simple.cpp:51:9:51:9 | *h [b_] | -| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | -| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:42:5:42:5 | setB output argument [b_] | -| simple.cpp:45:9:45:9 | *f [a_] | simple.cpp:26:15:26:15 | *f [a_] | -| simple.cpp:48:9:48:9 | *g [b_] | simple.cpp:26:15:26:15 | *f [b_] | -| simple.cpp:51:9:51:9 | *h [a_] | simple.cpp:26:15:26:15 | *f [a_] | -| simple.cpp:51:9:51:9 | *h [b_] | simple.cpp:26:15:26:15 | *f [b_] | -| simple.cpp:65:5:65:5 | *a [post update] [i] | simple.cpp:67:10:67:11 | *a2 [i] | -| simple.cpp:65:5:65:22 | ... = ... | simple.cpp:65:5:65:5 | *a [post update] [i] | -| simple.cpp:65:11:65:20 | call to user_input | simple.cpp:65:5:65:22 | ... = ... | -| simple.cpp:67:10:67:11 | *a2 [i] | simple.cpp:67:13:67:13 | i | -| simple.cpp:78:9:78:15 | *this [f2, f1] | simple.cpp:79:16:79:17 | *this [f2, f1] | -| simple.cpp:79:16:79:17 | *f2 [f1] | simple.cpp:79:19:79:20 | f1 | -| simple.cpp:79:16:79:17 | *this [f2, f1] | simple.cpp:79:16:79:17 | *f2 [f1] | -| simple.cpp:79:19:79:20 | f1 | simple.cpp:78:9:78:15 | *getf2f1 | -| simple.cpp:83:9:83:10 | *f2 [post update] [f1] | simple.cpp:83:9:83:10 | *this [post update] [f2, f1] | -| simple.cpp:83:9:83:10 | *this [post update] [f2, f1] | simple.cpp:84:14:84:20 | *this [f2, f1] | -| simple.cpp:83:9:83:28 | ... = ... | simple.cpp:83:9:83:10 | *f2 [post update] [f1] | -| simple.cpp:83:17:83:26 | call to user_input | simple.cpp:83:9:83:28 | ... = ... | -| simple.cpp:84:14:84:20 | *this [f2, f1] | simple.cpp:78:9:78:15 | *this [f2, f1] | -| simple.cpp:84:14:84:20 | *this [f2, f1] | simple.cpp:84:14:84:20 | call to getf2f1 | -| simple.cpp:92:5:92:5 | *a [post update] [i] | simple.cpp:94:10:94:11 | *a2 [i] | -| simple.cpp:92:5:92:22 | ... = ... | simple.cpp:92:5:92:5 | *a [post update] [i] | -| simple.cpp:92:11:92:20 | call to user_input | simple.cpp:92:5:92:22 | ... = ... | -| simple.cpp:94:10:94:11 | *a2 [i] | simple.cpp:94:13:94:13 | i | -| simple.cpp:103:24:103:24 | x | simple.cpp:104:14:104:14 | x | -| simple.cpp:108:17:108:26 | call to user_input | simple.cpp:109:43:109:43 | x | -| simple.cpp:109:43:109:43 | x | simple.cpp:103:24:103:24 | x | -| struct_init.c:14:24:14:25 | *ab [a] | struct_init.c:15:8:15:9 | *ab [a] | -| struct_init.c:15:8:15:9 | *ab [a] | struct_init.c:15:12:15:12 | a | -| struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:22:8:22:9 | *ab [a] | -| struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:24:10:24:12 | *& ... [a] | -| struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:28:5:28:7 | *& ... [a] | -| struct_init.c:20:13:20:14 | *definition of ab [post update] [a] | struct_init.c:20:13:20:14 | *definition of ab [a] | -| struct_init.c:20:20:20:29 | call to user_input | struct_init.c:20:13:20:14 | *definition of ab [post update] [a] | -| struct_init.c:20:20:20:29 | call to user_input | struct_init.c:20:20:20:29 | call to user_input | -| struct_init.c:22:8:22:9 | *ab [a] | struct_init.c:22:11:22:11 | a | -| struct_init.c:24:10:24:12 | *& ... [a] | struct_init.c:14:24:14:25 | *ab [a] | -| struct_init.c:26:16:26:20 | *definition of outer [nestedAB, a] | struct_init.c:31:8:31:12 | *outer [nestedAB, a] | -| struct_init.c:26:16:26:20 | *definition of outer [nestedAB, a] | struct_init.c:36:11:36:15 | *outer [nestedAB, a] | -| struct_init.c:26:16:26:20 | *definition of outer [post update] [*pointerAB, a] | struct_init.c:33:8:33:12 | *outer [*pointerAB, a] | -| struct_init.c:26:16:26:20 | *definition of outer [post update] [nestedAB, a] | struct_init.c:26:16:26:20 | *definition of outer [nestedAB, a] | -| struct_init.c:26:23:29:3 | *{...} [post update] [a] | struct_init.c:26:16:26:20 | *definition of outer [post update] [nestedAB, a] | -| struct_init.c:27:7:27:16 | call to user_input | struct_init.c:26:23:29:3 | *{...} [post update] [a] | -| struct_init.c:27:7:27:16 | call to user_input | struct_init.c:27:7:27:16 | call to user_input | -| struct_init.c:28:5:28:7 | *& ... [a] | struct_init.c:26:16:26:20 | *definition of outer [post update] [*pointerAB, a] | -| struct_init.c:31:8:31:12 | *outer [nestedAB, a] | struct_init.c:31:14:31:21 | *nestedAB [a] | -| struct_init.c:31:14:31:21 | *nestedAB [a] | struct_init.c:31:23:31:23 | a | -| struct_init.c:33:8:33:12 | *outer [*pointerAB, a] | struct_init.c:33:14:33:22 | *pointerAB [a] | -| struct_init.c:33:14:33:22 | *pointerAB [a] | struct_init.c:33:25:33:25 | a | -| struct_init.c:36:10:36:24 | *& ... [a] | struct_init.c:14:24:14:25 | *ab [a] | -| struct_init.c:36:11:36:15 | *outer [nestedAB, a] | struct_init.c:36:10:36:24 | *& ... [a] | -| struct_init.c:40:13:40:14 | *definition of ab [a] | struct_init.c:43:5:43:7 | *& ... [a] | -| struct_init.c:40:13:40:14 | *definition of ab [post update] [a] | struct_init.c:40:13:40:14 | *definition of ab [a] | -| struct_init.c:40:20:40:29 | call to user_input | struct_init.c:40:13:40:14 | *definition of ab [post update] [a] | -| struct_init.c:40:20:40:29 | call to user_input | struct_init.c:40:20:40:29 | call to user_input | -| struct_init.c:41:16:41:20 | *definition of outer [post update] [*pointerAB, a] | struct_init.c:46:10:46:14 | *outer [*pointerAB, a] | -| struct_init.c:43:5:43:7 | *& ... [a] | struct_init.c:41:16:41:20 | *definition of outer [post update] [*pointerAB, a] | -| struct_init.c:46:10:46:14 | *outer [*pointerAB, a] | struct_init.c:46:16:46:24 | *pointerAB [a] | -| struct_init.c:46:16:46:24 | *pointerAB [a] | struct_init.c:14:24:14:25 | *ab [a] | +| A.cpp:23:10:23:10 | c | A.cpp:25:7:25:17 | ... = ... | provenance | | +| A.cpp:25:7:25:17 | ... = ... | A.cpp:25:7:25:10 | *this [post update] [c] | provenance | | +| A.cpp:27:17:27:17 | c | A.cpp:27:22:27:32 | ... = ... | provenance | | +| A.cpp:27:22:27:32 | ... = ... | A.cpp:27:22:27:25 | *this [post update] [c] | provenance | | +| A.cpp:28:8:28:10 | *this [c] | A.cpp:28:23:28:26 | *this [c] | provenance | | +| A.cpp:28:23:28:26 | *this [c] | A.cpp:28:29:28:29 | c | provenance | | +| A.cpp:28:29:28:29 | c | A.cpp:28:8:28:10 | *get | provenance | | +| A.cpp:29:23:29:23 | c | A.cpp:31:20:31:20 | c | provenance | | +| A.cpp:31:14:31:21 | call to B [c] | A.cpp:29:15:29:18 | **make [c] | provenance | | +| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | provenance | | +| A.cpp:31:20:31:20 | c | A.cpp:31:14:31:21 | call to B [c] | provenance | | +| A.cpp:41:5:41:6 | insert output argument | A.cpp:43:10:43:12 | *& ... | provenance | | +| A.cpp:41:15:41:21 | new | A.cpp:41:5:41:6 | insert output argument | provenance | | +| A.cpp:47:12:47:18 | new | A.cpp:48:20:48:20 | c | provenance | | +| A.cpp:48:12:48:18 | *call to make [c] | A.cpp:49:10:49:10 | *b [c] | provenance | | +| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c | provenance | | +| A.cpp:48:20:48:20 | c | A.cpp:48:12:48:18 | *call to make [c] | provenance | | +| A.cpp:49:10:49:10 | *b [c] | A.cpp:49:10:49:13 | c | provenance | | +| A.cpp:55:5:55:5 | set output argument [c] | A.cpp:56:10:56:10 | *b [c] | provenance | | +| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | provenance | | +| A.cpp:55:12:55:19 | new | A.cpp:55:5:55:5 | set output argument [c] | provenance | | +| A.cpp:56:10:56:10 | *b [c] | A.cpp:28:8:28:10 | *this [c] | provenance | | +| A.cpp:56:10:56:10 | *b [c] | A.cpp:56:10:56:17 | call to get | provenance | | +| A.cpp:57:11:57:24 | *new [c] | A.cpp:28:8:28:10 | *this [c] | provenance | | +| A.cpp:57:11:57:24 | *new [c] | A.cpp:57:10:57:32 | call to get | provenance | | +| A.cpp:57:11:57:24 | call to B [c] | A.cpp:57:11:57:24 | *new [c] | provenance | | +| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | provenance | | +| A.cpp:57:17:57:23 | new | A.cpp:57:11:57:24 | call to B [c] | provenance | | +| A.cpp:57:17:57:23 | new | A.cpp:57:17:57:23 | new | provenance | | +| A.cpp:64:10:64:15 | *call to setOnB [c] | A.cpp:66:10:66:11 | *b2 [c] | provenance | | +| A.cpp:64:21:64:28 | new | A.cpp:64:10:64:15 | *call to setOnB [c] | provenance | | +| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c | provenance | | +| A.cpp:66:10:66:11 | *b2 [c] | A.cpp:66:10:66:14 | c | provenance | | +| A.cpp:73:10:73:19 | *call to setOnBWrap [c] | A.cpp:75:10:75:11 | *b2 [c] | provenance | | +| A.cpp:73:25:73:32 | new | A.cpp:73:10:73:19 | *call to setOnBWrap [c] | provenance | | +| A.cpp:73:25:73:32 | new | A.cpp:78:27:78:27 | c | provenance | | +| A.cpp:75:10:75:11 | *b2 [c] | A.cpp:75:10:75:14 | c | provenance | | +| A.cpp:78:27:78:27 | c | A.cpp:81:21:81:21 | c | provenance | | +| A.cpp:81:10:81:15 | *call to setOnB [c] | A.cpp:78:6:78:15 | **setOnBWrap [c] | provenance | | +| A.cpp:81:21:81:21 | c | A.cpp:81:10:81:15 | *call to setOnB [c] | provenance | | +| A.cpp:81:21:81:21 | c | A.cpp:85:26:85:26 | c | provenance | | +| A.cpp:85:26:85:26 | c | A.cpp:90:15:90:15 | c | provenance | | +| A.cpp:90:7:90:8 | set output argument [c] | A.cpp:85:9:85:14 | **setOnB [c] | provenance | | +| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | provenance | | +| A.cpp:90:15:90:15 | c | A.cpp:90:7:90:8 | set output argument [c] | provenance | | +| A.cpp:98:12:98:18 | new | A.cpp:100:5:100:13 | ... = ... | provenance | | +| A.cpp:100:5:100:6 | *c1 [post update] [a] | A.cpp:101:8:101:9 | *c1 [a] | provenance | | +| A.cpp:100:5:100:13 | ... = ... | A.cpp:100:5:100:6 | *c1 [post update] [a] | provenance | | +| A.cpp:101:8:101:9 | *c1 [a] | A.cpp:103:14:103:14 | *c [a] | provenance | | +| A.cpp:103:14:103:14 | *c [a] | A.cpp:107:12:107:13 | *c1 [a] | provenance | | +| A.cpp:103:14:103:14 | *c [a] | A.cpp:120:12:120:13 | *c1 [a] | provenance | | +| A.cpp:107:12:107:13 | *c1 [a] | A.cpp:107:12:107:16 | a | provenance | | +| A.cpp:120:12:120:13 | *c1 [a] | A.cpp:120:12:120:16 | a | provenance | | +| A.cpp:126:5:126:5 | set output argument [c] | A.cpp:131:8:131:8 | f7 output argument [c] | provenance | | +| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | provenance | | +| A.cpp:126:12:126:18 | new | A.cpp:126:5:126:5 | set output argument [c] | provenance | | +| A.cpp:126:12:126:18 | new | A.cpp:126:12:126:18 | new | provenance | | +| A.cpp:131:8:131:8 | f7 output argument [c] | A.cpp:132:10:132:10 | *b [c] | provenance | | +| A.cpp:132:10:132:10 | *b [c] | A.cpp:132:10:132:13 | c | provenance | | +| A.cpp:140:13:140:13 | b | A.cpp:143:7:143:31 | ... = ... | provenance | | +| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:143:7:143:31 | *... = ... [c] | provenance | | +| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:151:18:151:18 | D output argument [c] | provenance | | +| A.cpp:142:7:142:20 | ... = ... | A.cpp:142:7:142:7 | *b [post update] [c] | provenance | | +| A.cpp:142:14:142:20 | new | A.cpp:142:7:142:20 | ... = ... | provenance | | +| A.cpp:143:7:143:10 | *this [post update] [*b, c] | A.cpp:151:12:151:24 | call to D [*b, c] | provenance | | +| A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] | provenance | | +| A.cpp:143:7:143:31 | *... = ... [c] | A.cpp:143:7:143:10 | *this [post update] [*b, c] | provenance | | +| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | provenance | | +| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | provenance | | +| A.cpp:143:25:143:31 | new | A.cpp:143:7:143:31 | ... = ... | provenance | | +| A.cpp:150:12:150:18 | new | A.cpp:151:18:151:18 | b | provenance | | +| A.cpp:151:12:151:24 | call to D [*b, c] | A.cpp:153:10:153:10 | *d [*b, c] | provenance | | +| A.cpp:151:12:151:24 | call to D [b] | A.cpp:152:10:152:10 | *d [b] | provenance | | +| A.cpp:151:18:151:18 | D output argument [c] | A.cpp:154:10:154:10 | *b [c] | provenance | | +| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | provenance | | +| A.cpp:151:18:151:18 | b | A.cpp:151:12:151:24 | call to D [b] | provenance | | +| A.cpp:152:10:152:10 | *d [b] | A.cpp:152:10:152:13 | b | provenance | | +| A.cpp:153:10:153:10 | *d [*b, c] | A.cpp:153:13:153:13 | *b [c] | provenance | | +| A.cpp:153:13:153:13 | *b [c] | A.cpp:153:10:153:16 | c | provenance | | +| A.cpp:154:10:154:10 | *b [c] | A.cpp:154:10:154:13 | c | provenance | | +| A.cpp:159:12:159:18 | new | A.cpp:160:29:160:29 | b | provenance | | +| A.cpp:160:18:160:60 | call to MyList [head] | A.cpp:161:38:161:39 | *l1 [head] | provenance | | +| A.cpp:160:29:160:29 | b | A.cpp:160:18:160:60 | call to MyList [head] | provenance | | +| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | provenance | | +| A.cpp:161:18:161:40 | call to MyList [*next, head] | A.cpp:162:38:162:39 | *l2 [*next, head] | provenance | | +| A.cpp:161:38:161:39 | *l1 [head] | A.cpp:161:18:161:40 | call to MyList [*next, head] | provenance | | +| A.cpp:161:38:161:39 | *l1 [head] | A.cpp:181:32:181:35 | *next [head] | provenance | | +| A.cpp:162:18:162:40 | call to MyList [*next, *next, head] | A.cpp:165:10:165:11 | *l3 [*next, *next, head] | provenance | | +| A.cpp:162:18:162:40 | call to MyList [*next, *next, head] | A.cpp:167:44:167:44 | *l [*next, *next, head] | provenance | | +| A.cpp:162:38:162:39 | *l2 [*next, head] | A.cpp:162:18:162:40 | call to MyList [*next, *next, head] | provenance | | +| A.cpp:162:38:162:39 | *l2 [*next, head] | A.cpp:181:32:181:35 | *next [*next, head] | provenance | | +| A.cpp:165:10:165:11 | *l3 [*next, *next, head] | A.cpp:165:14:165:17 | *next [*next, head] | provenance | | +| A.cpp:165:14:165:17 | *next [*next, head] | A.cpp:165:20:165:23 | *next [head] | provenance | | +| A.cpp:165:20:165:23 | *next [head] | A.cpp:165:10:165:29 | head | provenance | | +| A.cpp:167:44:167:44 | *l [*next, *next, head] | A.cpp:167:47:167:50 | *next [*next, head] | provenance | | +| A.cpp:167:44:167:44 | *l [*next, head] | A.cpp:167:47:167:50 | *next [head] | provenance | | +| A.cpp:167:47:167:50 | *next [*next, head] | A.cpp:167:44:167:44 | *l [*next, head] | provenance | | +| A.cpp:167:47:167:50 | *next [head] | A.cpp:169:12:169:12 | *l [head] | provenance | | +| A.cpp:169:12:169:12 | *l [head] | A.cpp:169:12:169:18 | head | provenance | | +| A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:20 | ... = ... | provenance | | +| A.cpp:181:32:181:35 | *next [*next, head] | A.cpp:184:7:184:23 | *... = ... [*next, head] | provenance | | +| A.cpp:181:32:181:35 | *next [head] | A.cpp:184:7:184:23 | *... = ... [head] | provenance | | +| A.cpp:183:7:183:20 | ... = ... | A.cpp:183:7:183:10 | *this [post update] [head] | provenance | | +| A.cpp:184:7:184:23 | *... = ... [*next, head] | A.cpp:184:7:184:10 | *this [post update] [*next, *next, head] | provenance | | +| A.cpp:184:7:184:23 | *... = ... [head] | A.cpp:184:7:184:10 | *this [post update] [*next, head] | provenance | | +| B.cpp:6:15:6:24 | new | B.cpp:7:25:7:25 | e | provenance | | +| B.cpp:7:16:7:35 | call to Box1 [elem1] | B.cpp:8:25:8:26 | *b1 [elem1] | provenance | | +| B.cpp:7:25:7:25 | e | B.cpp:7:16:7:35 | call to Box1 [elem1] | provenance | | +| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | provenance | | +| B.cpp:8:16:8:27 | call to Box2 [*box1, elem1] | B.cpp:9:10:9:11 | *b2 [*box1, elem1] | provenance | | +| B.cpp:8:25:8:26 | *b1 [elem1] | B.cpp:8:16:8:27 | call to Box2 [*box1, elem1] | provenance | | +| B.cpp:8:25:8:26 | *b1 [elem1] | B.cpp:44:16:44:17 | *b1 [elem1] | provenance | | +| B.cpp:9:10:9:11 | *b2 [*box1, elem1] | B.cpp:9:14:9:17 | *box1 [elem1] | provenance | | +| B.cpp:9:14:9:17 | *box1 [elem1] | B.cpp:9:10:9:24 | elem1 | provenance | | +| B.cpp:15:15:15:27 | new | B.cpp:16:37:16:37 | e | provenance | | +| B.cpp:16:16:16:38 | call to Box1 [elem2] | B.cpp:17:25:17:26 | *b1 [elem2] | provenance | | +| B.cpp:16:37:16:37 | e | B.cpp:16:16:16:38 | call to Box1 [elem2] | provenance | | +| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | provenance | | +| B.cpp:17:16:17:27 | call to Box2 [*box1, elem2] | B.cpp:19:10:19:11 | *b2 [*box1, elem2] | provenance | | +| B.cpp:17:25:17:26 | *b1 [elem2] | B.cpp:17:16:17:27 | call to Box2 [*box1, elem2] | provenance | | +| B.cpp:17:25:17:26 | *b1 [elem2] | B.cpp:44:16:44:17 | *b1 [elem2] | provenance | | +| B.cpp:19:10:19:11 | *b2 [*box1, elem2] | B.cpp:19:14:19:17 | *box1 [elem2] | provenance | | +| B.cpp:19:14:19:17 | *box1 [elem2] | B.cpp:19:10:19:24 | elem2 | provenance | | +| B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:22 | ... = ... | provenance | | +| B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:22 | ... = ... | provenance | | +| B.cpp:35:7:35:22 | ... = ... | B.cpp:35:7:35:10 | *this [post update] [elem1] | provenance | | +| B.cpp:36:7:36:22 | ... = ... | B.cpp:36:7:36:10 | *this [post update] [elem2] | provenance | | +| B.cpp:44:16:44:17 | *b1 [elem1] | B.cpp:46:7:46:21 | *... = ... [elem1] | provenance | | +| B.cpp:44:16:44:17 | *b1 [elem2] | B.cpp:46:7:46:21 | *... = ... [elem2] | provenance | | +| B.cpp:46:7:46:21 | *... = ... [elem1] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem1] | provenance | | +| B.cpp:46:7:46:21 | *... = ... [elem2] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | provenance | | +| C.cpp:18:12:18:18 | call to C [s1] | C.cpp:19:5:19:5 | *c [s1] | provenance | | +| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:19:5:19:5 | *c [s3] | provenance | | +| C.cpp:19:5:19:5 | *c [s1] | C.cpp:27:8:27:11 | *this [s1] | provenance | | +| C.cpp:19:5:19:5 | *c [s3] | C.cpp:27:8:27:11 | *this [s3] | provenance | | +| C.cpp:22:3:22:3 | *this [post update] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | | +| C.cpp:22:12:22:21 | new | C.cpp:22:3:22:3 | *this [post update] [s1] | provenance | | +| C.cpp:22:12:22:21 | new | C.cpp:22:12:22:21 | new | provenance | | +| C.cpp:24:5:24:8 | *this [post update] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | | +| C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | *this [post update] [s3] | provenance | | +| C.cpp:24:16:24:25 | new | C.cpp:24:5:24:25 | ... = ... | provenance | | +| C.cpp:27:8:27:11 | *this [s1] | C.cpp:29:10:29:11 | *this [s1] | provenance | | +| C.cpp:27:8:27:11 | *this [s3] | C.cpp:31:10:31:11 | *this [s3] | provenance | | +| C.cpp:29:10:29:11 | *this [s1] | C.cpp:29:10:29:11 | s1 | provenance | | +| C.cpp:31:10:31:11 | *this [s3] | C.cpp:31:10:31:11 | s3 | provenance | | +| D.cpp:10:11:10:17 | *this [elem] | D.cpp:10:30:10:33 | *this [elem] | provenance | | +| D.cpp:10:30:10:33 | *this [elem] | D.cpp:10:30:10:33 | elem | provenance | | +| D.cpp:10:30:10:33 | elem | D.cpp:10:11:10:17 | *getElem | provenance | | +| D.cpp:11:24:11:24 | e | D.cpp:11:29:11:36 | ... = ... | provenance | | +| D.cpp:11:29:11:36 | ... = ... | D.cpp:11:29:11:32 | *this [post update] [elem] | provenance | | +| D.cpp:17:11:17:17 | *this [*box, elem] | D.cpp:17:30:17:32 | *this [*box, elem] | provenance | | +| D.cpp:17:30:17:32 | *box [elem] | D.cpp:17:11:17:17 | **getBox1 [elem] | provenance | | +| D.cpp:17:30:17:32 | *this [*box, elem] | D.cpp:17:30:17:32 | *box [elem] | provenance | | +| D.cpp:21:30:21:31 | *b2 [*box, elem] | D.cpp:22:10:22:11 | *b2 [*box, elem] | provenance | | +| D.cpp:22:10:22:11 | *b2 [*box, elem] | D.cpp:17:11:17:17 | *this [*box, elem] | provenance | | +| D.cpp:22:10:22:11 | *b2 [*box, elem] | D.cpp:22:14:22:20 | *call to getBox1 [elem] | provenance | | +| D.cpp:22:14:22:20 | *call to getBox1 [elem] | D.cpp:10:11:10:17 | *this [elem] | provenance | | +| D.cpp:22:14:22:20 | *call to getBox1 [elem] | D.cpp:22:10:22:33 | call to getElem | provenance | | +| D.cpp:28:15:28:24 | new | D.cpp:30:5:30:20 | ... = ... | provenance | | +| D.cpp:30:5:30:5 | *b [post update] [*box, elem] | D.cpp:31:14:31:14 | *b [*box, elem] | provenance | | +| D.cpp:30:5:30:20 | ... = ... | D.cpp:30:8:30:10 | *box [post update] [elem] | provenance | | +| D.cpp:30:8:30:10 | *box [post update] [elem] | D.cpp:30:5:30:5 | *b [post update] [*box, elem] | provenance | | +| D.cpp:31:14:31:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | provenance | | +| D.cpp:35:15:35:24 | new | D.cpp:37:21:37:21 | e | provenance | | +| D.cpp:37:5:37:5 | *b [post update] [*box, elem] | D.cpp:38:14:38:14 | *b [*box, elem] | provenance | | +| D.cpp:37:8:37:10 | setElem output argument [elem] | D.cpp:37:5:37:5 | *b [post update] [*box, elem] | provenance | | +| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | provenance | | +| D.cpp:37:21:37:21 | e | D.cpp:37:8:37:10 | setElem output argument [elem] | provenance | | +| D.cpp:38:14:38:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | provenance | | +| D.cpp:42:15:42:24 | new | D.cpp:44:5:44:26 | ... = ... | provenance | | +| D.cpp:44:5:44:5 | getBox1 output argument [*box, elem] | D.cpp:45:14:45:14 | *b [*box, elem] | provenance | | +| D.cpp:44:5:44:26 | ... = ... | D.cpp:44:8:44:14 | *call to getBox1 [post update] [elem] | provenance | | +| D.cpp:44:8:44:14 | *call to getBox1 [post update] [elem] | D.cpp:44:5:44:5 | getBox1 output argument [*box, elem] | provenance | | +| D.cpp:45:14:45:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | provenance | | +| D.cpp:49:15:49:24 | new | D.cpp:51:27:51:27 | e | provenance | | +| D.cpp:51:5:51:5 | getBox1 output argument [*box, elem] | D.cpp:52:14:52:14 | *b [*box, elem] | provenance | | +| D.cpp:51:8:51:14 | setElem output argument [elem] | D.cpp:51:5:51:5 | getBox1 output argument [*box, elem] | provenance | | +| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | provenance | | +| D.cpp:51:27:51:27 | e | D.cpp:51:8:51:14 | setElem output argument [elem] | provenance | | +| D.cpp:52:14:52:14 | *b [*box, elem] | D.cpp:21:30:21:31 | *b2 [*box, elem] | provenance | | +| D.cpp:56:15:56:24 | new | D.cpp:58:5:58:27 | ... = ... | provenance | | +| D.cpp:58:5:58:12 | *boxfield [post update] [*box, elem] | D.cpp:58:5:58:12 | *this [post update] [*boxfield, *box, elem] | provenance | | +| D.cpp:58:5:58:12 | *this [post update] [*boxfield, *box, elem] | D.cpp:59:5:59:7 | *this [*boxfield, *box, elem] | provenance | | +| D.cpp:58:5:58:27 | ... = ... | D.cpp:58:15:58:17 | *box [post update] [elem] | provenance | | +| D.cpp:58:15:58:17 | *box [post update] [elem] | D.cpp:58:5:58:12 | *boxfield [post update] [*box, elem] | provenance | | +| D.cpp:59:5:59:7 | *this [*boxfield, *box, elem] | D.cpp:63:8:63:10 | *this [*boxfield, *box, elem] | provenance | | +| D.cpp:63:8:63:10 | *this [*boxfield, *box, elem] | D.cpp:64:10:64:17 | *this [*boxfield, *box, elem] | provenance | | +| D.cpp:64:10:64:17 | *boxfield [*box, elem] | D.cpp:64:20:64:22 | *box [elem] | provenance | | +| D.cpp:64:10:64:17 | *this [*boxfield, *box, elem] | D.cpp:64:10:64:17 | *boxfield [*box, elem] | provenance | | +| D.cpp:64:20:64:22 | *box [elem] | D.cpp:64:10:64:28 | elem | provenance | | +| E.cpp:19:27:19:27 | *p [data, *buffer] | E.cpp:21:10:21:10 | *p [data, *buffer] | provenance | | +| E.cpp:21:10:21:10 | *p [data, *buffer] | E.cpp:21:13:21:16 | *data [*buffer] | provenance | | +| E.cpp:21:13:21:16 | *data [*buffer] | E.cpp:21:18:21:23 | *buffer | provenance | | +| E.cpp:28:21:28:23 | argument_source output argument | E.cpp:31:10:31:12 | *raw | provenance | | +| E.cpp:29:21:29:21 | *b [post update] [*buffer] | E.cpp:32:10:32:10 | *b [*buffer] | provenance | | +| E.cpp:29:21:29:29 | argument_source output argument | E.cpp:29:21:29:21 | *b [post update] [*buffer] | provenance | | +| E.cpp:30:21:30:21 | *p [post update] [data, *buffer] | E.cpp:33:18:33:19 | *& ... [data, *buffer] | provenance | | +| E.cpp:30:21:30:33 | argument_source output argument | E.cpp:30:23:30:26 | *data [post update] [*buffer] | provenance | | +| E.cpp:30:23:30:26 | *data [post update] [*buffer] | E.cpp:30:21:30:21 | *p [post update] [data, *buffer] | provenance | | +| E.cpp:32:10:32:10 | *b [*buffer] | E.cpp:32:13:32:18 | *buffer | provenance | | +| E.cpp:33:18:33:19 | *& ... [data, *buffer] | E.cpp:19:27:19:27 | *p [data, *buffer] | provenance | | +| aliasing.cpp:9:3:9:3 | *s [post update] [m1] | aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | provenance | | +| aliasing.cpp:9:3:9:22 | ... = ... | aliasing.cpp:9:3:9:3 | *s [post update] [m1] | provenance | | +| aliasing.cpp:9:11:9:20 | call to user_input | aliasing.cpp:9:3:9:22 | ... = ... | provenance | | +| aliasing.cpp:13:3:13:3 | *s [post update] [m1] | aliasing.cpp:26:19:26:20 | referenceSetter output argument [m1] | provenance | | +| aliasing.cpp:13:3:13:21 | ... = ... | aliasing.cpp:13:3:13:3 | *s [post update] [m1] | provenance | | +| aliasing.cpp:13:10:13:19 | call to user_input | aliasing.cpp:13:3:13:21 | ... = ... | provenance | | +| aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | aliasing.cpp:29:8:29:9 | *s1 [m1] | provenance | | +| aliasing.cpp:26:19:26:20 | referenceSetter output argument [m1] | aliasing.cpp:30:8:30:9 | *s2 [m1] | provenance | | +| aliasing.cpp:29:8:29:9 | *s1 [m1] | aliasing.cpp:29:11:29:12 | m1 | provenance | | +| aliasing.cpp:30:8:30:9 | *s2 [m1] | aliasing.cpp:30:11:30:12 | m1 | provenance | | +| aliasing.cpp:60:3:60:4 | *s2 [post update] [m1] | aliasing.cpp:62:8:62:12 | *copy2 [m1] | provenance | | +| aliasing.cpp:60:3:60:22 | ... = ... | aliasing.cpp:60:3:60:4 | *s2 [post update] [m1] | provenance | | +| aliasing.cpp:60:11:60:20 | call to user_input | aliasing.cpp:60:3:60:22 | ... = ... | provenance | | +| aliasing.cpp:62:8:62:12 | *copy2 [m1] | aliasing.cpp:62:14:62:15 | m1 | provenance | | +| aliasing.cpp:92:3:92:3 | *w [post update] [s, m1] | aliasing.cpp:93:8:93:8 | *w [s, m1] | provenance | | +| aliasing.cpp:92:3:92:23 | ... = ... | aliasing.cpp:92:5:92:5 | *s [post update] [m1] | provenance | | +| aliasing.cpp:92:5:92:5 | *s [post update] [m1] | aliasing.cpp:92:3:92:3 | *w [post update] [s, m1] | provenance | | +| aliasing.cpp:92:12:92:21 | call to user_input | aliasing.cpp:92:3:92:23 | ... = ... | provenance | | +| aliasing.cpp:93:8:93:8 | *w [s, m1] | aliasing.cpp:93:10:93:10 | *s [m1] | provenance | | +| aliasing.cpp:93:10:93:10 | *s [m1] | aliasing.cpp:93:12:93:13 | m1 | provenance | | +| aliasing.cpp:98:3:98:3 | *s [post update] [m1] | aliasing.cpp:101:14:101:19 | *s_copy [m1] | provenance | | +| aliasing.cpp:98:3:98:21 | ... = ... | aliasing.cpp:98:3:98:3 | *s [post update] [m1] | provenance | | +| aliasing.cpp:98:10:98:19 | call to user_input | aliasing.cpp:98:3:98:21 | ... = ... | provenance | | +| aliasing.cpp:101:13:101:22 | *& ... | aliasing.cpp:102:8:102:10 | * ... | provenance | | +| aliasing.cpp:101:14:101:19 | *s_copy [m1] | aliasing.cpp:101:13:101:22 | *& ... | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:121:15:121:16 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:126:15:126:20 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:131:15:131:16 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:136:15:136:17 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:141:17:141:20 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:158:15:158:20 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:164:15:164:20 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:175:15:175:22 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:187:15:187:22 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:105:23:105:24 | *pa | aliasing.cpp:200:15:200:24 | taint_a_ptr output argument | provenance | | +| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:105:23:105:24 | *pa | provenance | | +| aliasing.cpp:121:15:121:16 | taint_a_ptr output argument | aliasing.cpp:122:8:122:12 | access to array | provenance | | +| aliasing.cpp:126:15:126:20 | taint_a_ptr output argument | aliasing.cpp:127:8:127:16 | * ... | provenance | | +| aliasing.cpp:131:15:131:16 | taint_a_ptr output argument | aliasing.cpp:132:8:132:14 | * ... | provenance | | +| aliasing.cpp:136:15:136:17 | taint_a_ptr output argument | aliasing.cpp:137:8:137:11 | * ... | provenance | | +| aliasing.cpp:141:15:141:15 | *s [post update] [*data] | aliasing.cpp:143:8:143:8 | *s [*data] | provenance | | +| aliasing.cpp:141:17:141:20 | taint_a_ptr output argument | aliasing.cpp:141:15:141:15 | *s [post update] [*data] | provenance | | +| aliasing.cpp:143:8:143:8 | *s [*data] | aliasing.cpp:143:8:143:16 | access to array | provenance | | +| aliasing.cpp:143:8:143:8 | *s [*data] | aliasing.cpp:143:10:143:13 | *data | provenance | | +| aliasing.cpp:143:10:143:13 | *data | aliasing.cpp:143:8:143:16 | access to array | provenance | | +| aliasing.cpp:158:15:158:15 | *s [post update] [data] | aliasing.cpp:159:9:159:9 | *s [data] | provenance | | +| aliasing.cpp:158:15:158:20 | taint_a_ptr output argument | aliasing.cpp:158:15:158:15 | *s [post update] [data] | provenance | | +| aliasing.cpp:159:9:159:9 | *s [data] | aliasing.cpp:159:8:159:14 | * ... | provenance | | +| aliasing.cpp:164:15:164:15 | *s [post update] [data] | aliasing.cpp:165:8:165:8 | *s [data] | provenance | | +| aliasing.cpp:164:15:164:20 | taint_a_ptr output argument | aliasing.cpp:164:15:164:15 | *s [post update] [data] | provenance | | +| aliasing.cpp:165:8:165:8 | *s [data] | aliasing.cpp:165:8:165:16 | access to array | provenance | | +| aliasing.cpp:175:15:175:22 | taint_a_ptr output argument | aliasing.cpp:175:19:175:19 | *s [post update] [m1] | provenance | | +| aliasing.cpp:175:16:175:17 | *s2 [post update] [s, m1] | aliasing.cpp:176:8:176:9 | *s2 [s, m1] | provenance | | +| aliasing.cpp:175:19:175:19 | *s [post update] [m1] | aliasing.cpp:175:16:175:17 | *s2 [post update] [s, m1] | provenance | | +| aliasing.cpp:176:8:176:9 | *s2 [s, m1] | aliasing.cpp:176:11:176:11 | *s [m1] | provenance | | +| aliasing.cpp:176:11:176:11 | *s [m1] | aliasing.cpp:176:13:176:14 | m1 | provenance | | +| aliasing.cpp:187:15:187:22 | taint_a_ptr output argument | aliasing.cpp:187:19:187:19 | *s [post update] [m1] | provenance | | +| aliasing.cpp:187:16:187:17 | *s2 [post update] [s, m1] | aliasing.cpp:189:8:189:11 | *s2_2 [s, m1] | provenance | | +| aliasing.cpp:187:19:187:19 | *s [post update] [m1] | aliasing.cpp:187:16:187:17 | *s2 [post update] [s, m1] | provenance | | +| aliasing.cpp:189:8:189:11 | *s2_2 [s, m1] | aliasing.cpp:189:13:189:13 | *s [m1] | provenance | | +| aliasing.cpp:189:13:189:13 | *s [m1] | aliasing.cpp:189:15:189:16 | m1 | provenance | | +| aliasing.cpp:200:15:200:24 | taint_a_ptr output argument | aliasing.cpp:200:21:200:21 | *s [post update] [m1] | provenance | | +| aliasing.cpp:200:16:200:18 | *ps2 [post update] [s, m1] | aliasing.cpp:201:8:201:10 | *ps2 [s, m1] | provenance | | +| aliasing.cpp:200:21:200:21 | *s [post update] [m1] | aliasing.cpp:200:16:200:18 | *ps2 [post update] [s, m1] | provenance | | +| aliasing.cpp:201:8:201:10 | *ps2 [s, m1] | aliasing.cpp:201:13:201:13 | *s [m1] | provenance | | +| aliasing.cpp:201:13:201:13 | *s [m1] | aliasing.cpp:201:15:201:16 | m1 | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:7:8:7:13 | access to array | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:8:8:8:13 | access to array | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:9:8:9:11 | * ... | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:10:8:10:15 | * ... | provenance | | +| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:16:8:16:13 | access to array | provenance | | +| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:17:8:17:13 | access to array | provenance | | +| arrays.cpp:36:3:36:3 | *o [post update] [nested, arr, data] | arrays.cpp:37:8:37:8 | *o [nested, arr, data] | provenance | | +| arrays.cpp:36:3:36:3 | *o [post update] [nested, arr, data] | arrays.cpp:38:8:38:8 | *o [nested, arr, data] | provenance | | +| arrays.cpp:36:3:36:17 | *access to array [post update] [data] | arrays.cpp:36:5:36:10 | *nested [post update] [arr, data] | provenance | | +| arrays.cpp:36:3:36:37 | ... = ... | arrays.cpp:36:3:36:17 | *access to array [post update] [data] | provenance | | +| arrays.cpp:36:5:36:10 | *nested [post update] [arr, data] | arrays.cpp:36:3:36:3 | *o [post update] [nested, arr, data] | provenance | | +| arrays.cpp:36:26:36:35 | call to user_input | arrays.cpp:36:3:36:37 | ... = ... | provenance | | +| arrays.cpp:37:8:37:8 | *o [nested, arr, data] | arrays.cpp:37:10:37:15 | *nested [arr, data] | provenance | | +| arrays.cpp:37:8:37:22 | *access to array [data] | arrays.cpp:37:24:37:27 | data | provenance | | +| arrays.cpp:37:10:37:15 | *nested [arr, data] | arrays.cpp:37:8:37:22 | *access to array [data] | provenance | | +| arrays.cpp:38:8:38:8 | *o [nested, arr, data] | arrays.cpp:38:10:38:15 | *nested [arr, data] | provenance | | +| arrays.cpp:38:8:38:22 | *access to array [data] | arrays.cpp:38:24:38:27 | data | provenance | | +| arrays.cpp:38:10:38:15 | *nested [arr, data] | arrays.cpp:38:8:38:22 | *access to array [data] | provenance | | +| arrays.cpp:42:3:42:3 | *o [post update] [*indirect, arr, data] | arrays.cpp:43:8:43:8 | *o [*indirect, arr, data] | provenance | | +| arrays.cpp:42:3:42:3 | *o [post update] [*indirect, arr, data] | arrays.cpp:44:8:44:8 | *o [*indirect, arr, data] | provenance | | +| arrays.cpp:42:3:42:20 | *access to array [post update] [data] | arrays.cpp:42:5:42:12 | *indirect [post update] [arr, data] | provenance | | +| arrays.cpp:42:3:42:40 | ... = ... | arrays.cpp:42:3:42:20 | *access to array [post update] [data] | provenance | | +| arrays.cpp:42:5:42:12 | *indirect [post update] [arr, data] | arrays.cpp:42:3:42:3 | *o [post update] [*indirect, arr, data] | provenance | | +| arrays.cpp:42:29:42:38 | call to user_input | arrays.cpp:42:3:42:40 | ... = ... | provenance | | +| arrays.cpp:43:8:43:8 | *o [*indirect, arr, data] | arrays.cpp:43:10:43:17 | *indirect [arr, data] | provenance | | +| arrays.cpp:43:8:43:25 | *access to array [data] | arrays.cpp:43:27:43:30 | data | provenance | | +| arrays.cpp:43:10:43:17 | *indirect [arr, data] | arrays.cpp:43:8:43:25 | *access to array [data] | provenance | | +| arrays.cpp:44:8:44:8 | *o [*indirect, arr, data] | arrays.cpp:44:10:44:17 | *indirect [arr, data] | provenance | | +| arrays.cpp:44:8:44:25 | *access to array [data] | arrays.cpp:44:27:44:30 | data | provenance | | +| arrays.cpp:44:10:44:17 | *indirect [arr, data] | arrays.cpp:44:8:44:25 | *access to array [data] | provenance | | +| arrays.cpp:48:3:48:3 | *o [post update] [*indirect, *ptr, data] | arrays.cpp:49:8:49:8 | *o [*indirect, *ptr, data] | provenance | | +| arrays.cpp:48:3:48:3 | *o [post update] [*indirect, *ptr, data] | arrays.cpp:50:8:50:8 | *o [*indirect, *ptr, data] | provenance | | +| arrays.cpp:48:3:48:20 | *access to array [post update] [data] | arrays.cpp:48:5:48:12 | *indirect [post update] [*ptr, data] | provenance | | +| arrays.cpp:48:3:48:40 | ... = ... | arrays.cpp:48:3:48:20 | *access to array [post update] [data] | provenance | | +| arrays.cpp:48:5:48:12 | *indirect [post update] [*ptr, data] | arrays.cpp:48:3:48:3 | *o [post update] [*indirect, *ptr, data] | provenance | | +| arrays.cpp:48:29:48:38 | call to user_input | arrays.cpp:48:3:48:40 | ... = ... | provenance | | +| arrays.cpp:49:8:49:8 | *o [*indirect, *ptr, data] | arrays.cpp:49:10:49:17 | *indirect [*ptr, data] | provenance | | +| arrays.cpp:49:8:49:25 | *access to array [data] | arrays.cpp:49:27:49:30 | data | provenance | | +| arrays.cpp:49:10:49:17 | *indirect [*ptr, data] | arrays.cpp:49:8:49:25 | *access to array [data] | provenance | | +| arrays.cpp:49:10:49:17 | *indirect [*ptr, data] | arrays.cpp:49:20:49:22 | *ptr [data] | provenance | | +| arrays.cpp:49:20:49:22 | *ptr [data] | arrays.cpp:49:8:49:25 | *access to array [data] | provenance | | +| arrays.cpp:50:8:50:8 | *o [*indirect, *ptr, data] | arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | provenance | | +| arrays.cpp:50:8:50:25 | *access to array [data] | arrays.cpp:50:27:50:30 | data | provenance | | +| arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | arrays.cpp:50:8:50:25 | *access to array [data] | provenance | | +| arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | arrays.cpp:50:20:50:22 | *ptr [data] | provenance | | +| arrays.cpp:50:20:50:22 | *ptr [data] | arrays.cpp:50:8:50:25 | *access to array [data] | provenance | | +| by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:16 | ... = ... | provenance | | +| by_reference.cpp:12:5:12:16 | ... = ... | by_reference.cpp:12:5:12:5 | *s [post update] [a] | provenance | | +| by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:19 | ... = ... | provenance | | +| by_reference.cpp:16:5:16:19 | ... = ... | by_reference.cpp:16:5:16:8 | *this [post update] [a] | provenance | | +| by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:23:20:27 | value | provenance | | +| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | provenance | | +| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] | provenance | | +| by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:25:24:29 | value | provenance | | +| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | provenance | | +| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] | provenance | | +| by_reference.cpp:31:46:31:46 | *s [a] | by_reference.cpp:32:12:32:12 | *s [a] | provenance | | +| by_reference.cpp:32:12:32:12 | *s [a] | by_reference.cpp:32:15:32:15 | a | provenance | | +| by_reference.cpp:32:15:32:15 | a | by_reference.cpp:31:16:31:28 | *nonMemberGetA | provenance | | +| by_reference.cpp:35:9:35:19 | *this [a] | by_reference.cpp:36:12:36:15 | *this [a] | provenance | | +| by_reference.cpp:36:12:36:15 | *this [a] | by_reference.cpp:36:18:36:18 | a | provenance | | +| by_reference.cpp:36:18:36:18 | a | by_reference.cpp:35:9:35:19 | *getDirectly | provenance | | +| by_reference.cpp:39:9:39:21 | *this [a] | by_reference.cpp:40:12:40:15 | *this [a] | provenance | | +| by_reference.cpp:40:12:40:15 | *this [a] | by_reference.cpp:35:9:35:19 | *this [a] | provenance | | +| by_reference.cpp:40:12:40:15 | *this [a] | by_reference.cpp:40:18:40:28 | call to getDirectly | provenance | | +| by_reference.cpp:40:18:40:28 | call to getDirectly | by_reference.cpp:39:9:39:21 | *getIndirectly | provenance | | +| by_reference.cpp:43:9:43:27 | *this [a] | by_reference.cpp:44:26:44:29 | *this [a] | provenance | | +| by_reference.cpp:44:12:44:24 | call to nonMemberGetA | by_reference.cpp:43:9:43:27 | *getThroughNonMember | provenance | | +| by_reference.cpp:44:26:44:29 | *this [a] | by_reference.cpp:31:46:31:46 | *s [a] | provenance | | +| by_reference.cpp:44:26:44:29 | *this [a] | by_reference.cpp:44:12:44:24 | call to nonMemberGetA | provenance | | +| by_reference.cpp:50:3:50:3 | setDirectly output argument [a] | by_reference.cpp:51:8:51:8 | *s [a] | provenance | | +| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | provenance | | +| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:50:3:50:3 | setDirectly output argument [a] | provenance | | +| by_reference.cpp:51:8:51:8 | *s [a] | by_reference.cpp:35:9:35:19 | *this [a] | provenance | | +| by_reference.cpp:51:8:51:8 | *s [a] | by_reference.cpp:51:10:51:20 | call to getDirectly | provenance | | +| by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] | by_reference.cpp:57:8:57:8 | *s [a] | provenance | | +| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | provenance | | +| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] | provenance | | +| by_reference.cpp:57:8:57:8 | *s [a] | by_reference.cpp:39:9:39:21 | *this [a] | provenance | | +| by_reference.cpp:57:8:57:8 | *s [a] | by_reference.cpp:57:10:57:22 | call to getIndirectly | provenance | | +| by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] | by_reference.cpp:63:8:63:8 | *s [a] | provenance | | +| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | provenance | | +| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] | provenance | | +| by_reference.cpp:63:8:63:8 | *s [a] | by_reference.cpp:43:9:43:27 | *this [a] | provenance | | +| by_reference.cpp:63:8:63:8 | *s [a] | by_reference.cpp:63:10:63:28 | call to getThroughNonMember | provenance | | +| by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] | by_reference.cpp:69:22:69:23 | *& ... [a] | provenance | | +| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | provenance | | +| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] | provenance | | +| by_reference.cpp:69:22:69:23 | *& ... [a] | by_reference.cpp:31:46:31:46 | *s [a] | provenance | | +| by_reference.cpp:69:22:69:23 | *& ... [a] | by_reference.cpp:69:8:69:20 | call to nonMemberGetA | provenance | | +| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:102:21:102:39 | taint_inner_a_ptr output argument [a] | provenance | | +| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:103:27:103:35 | taint_inner_a_ptr output argument [a] | provenance | | +| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:106:21:106:41 | taint_inner_a_ptr output argument [a] | provenance | | +| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:107:29:107:37 | taint_inner_a_ptr output argument [a] | provenance | | +| by_reference.cpp:84:3:84:25 | ... = ... | by_reference.cpp:84:3:84:7 | *inner [post update] [a] | provenance | | +| by_reference.cpp:84:14:84:23 | call to user_input | by_reference.cpp:84:3:84:25 | ... = ... | provenance | | +| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:122:21:122:38 | taint_inner_a_ref output argument [a] | provenance | | +| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:123:21:123:36 | taint_inner_a_ref output argument [a] | provenance | | +| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:126:21:126:40 | taint_inner_a_ref output argument [a] | provenance | | +| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:127:21:127:38 | taint_inner_a_ref output argument [a] | provenance | | +| by_reference.cpp:88:3:88:24 | ... = ... | by_reference.cpp:88:3:88:7 | *inner [post update] [a] | provenance | | +| by_reference.cpp:88:13:88:22 | call to user_input | by_reference.cpp:88:3:88:24 | ... = ... | provenance | | +| by_reference.cpp:91:25:91:26 | *pa | by_reference.cpp:104:15:104:22 | taint_a_ptr output argument | provenance | | +| by_reference.cpp:91:25:91:26 | *pa | by_reference.cpp:108:15:108:24 | taint_a_ptr output argument | provenance | | +| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:91:25:91:26 | *pa | provenance | | +| by_reference.cpp:95:25:95:26 | *pa | by_reference.cpp:124:15:124:21 | taint_a_ref output argument | provenance | | +| by_reference.cpp:95:25:95:26 | *pa | by_reference.cpp:128:15:128:23 | taint_a_ref output argument | provenance | | +| by_reference.cpp:96:8:96:17 | call to user_input | by_reference.cpp:95:25:95:26 | *pa | provenance | | +| by_reference.cpp:102:21:102:39 | taint_inner_a_ptr output argument [a] | by_reference.cpp:102:22:102:26 | *outer [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:102:22:102:26 | *outer [post update] [inner_nested, a] | by_reference.cpp:110:8:110:12 | *outer [inner_nested, a] | provenance | | +| by_reference.cpp:103:21:103:25 | *outer [post update] [*inner_ptr, a] | by_reference.cpp:111:8:111:12 | *outer [*inner_ptr, a] | provenance | | +| by_reference.cpp:103:27:103:35 | taint_inner_a_ptr output argument [a] | by_reference.cpp:103:21:103:25 | *outer [post update] [*inner_ptr, a] | provenance | | +| by_reference.cpp:104:15:104:22 | taint_a_ptr output argument | by_reference.cpp:104:16:104:20 | *outer [post update] [a] | provenance | | +| by_reference.cpp:104:16:104:20 | *outer [post update] [a] | by_reference.cpp:112:8:112:12 | *outer [a] | provenance | | +| by_reference.cpp:106:21:106:41 | taint_inner_a_ptr output argument [a] | by_reference.cpp:106:22:106:27 | *pouter [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:106:22:106:27 | *pouter [post update] [inner_nested, a] | by_reference.cpp:114:8:114:13 | *pouter [inner_nested, a] | provenance | | +| by_reference.cpp:107:21:107:26 | *pouter [post update] [*inner_ptr, a] | by_reference.cpp:115:8:115:13 | *pouter [*inner_ptr, a] | provenance | | +| by_reference.cpp:107:29:107:37 | taint_inner_a_ptr output argument [a] | by_reference.cpp:107:21:107:26 | *pouter [post update] [*inner_ptr, a] | provenance | | +| by_reference.cpp:108:15:108:24 | taint_a_ptr output argument | by_reference.cpp:108:16:108:21 | *pouter [post update] [a] | provenance | | +| by_reference.cpp:108:16:108:21 | *pouter [post update] [a] | by_reference.cpp:116:8:116:13 | *pouter [a] | provenance | | +| by_reference.cpp:110:8:110:12 | *outer [inner_nested, a] | by_reference.cpp:110:14:110:25 | *inner_nested [a] | provenance | | +| by_reference.cpp:110:14:110:25 | *inner_nested [a] | by_reference.cpp:110:27:110:27 | a | provenance | | +| by_reference.cpp:111:8:111:12 | *outer [*inner_ptr, a] | by_reference.cpp:111:14:111:22 | *inner_ptr [a] | provenance | | +| by_reference.cpp:111:14:111:22 | *inner_ptr [a] | by_reference.cpp:111:25:111:25 | a | provenance | | +| by_reference.cpp:112:8:112:12 | *outer [a] | by_reference.cpp:112:14:112:14 | a | provenance | | +| by_reference.cpp:114:8:114:13 | *pouter [inner_nested, a] | by_reference.cpp:114:16:114:27 | *inner_nested [a] | provenance | | +| by_reference.cpp:114:16:114:27 | *inner_nested [a] | by_reference.cpp:114:29:114:29 | a | provenance | | +| by_reference.cpp:115:8:115:13 | *pouter [*inner_ptr, a] | by_reference.cpp:115:16:115:24 | *inner_ptr [a] | provenance | | +| by_reference.cpp:115:16:115:24 | *inner_ptr [a] | by_reference.cpp:115:27:115:27 | a | provenance | | +| by_reference.cpp:116:8:116:13 | *pouter [a] | by_reference.cpp:116:16:116:16 | a | provenance | | +| by_reference.cpp:122:21:122:25 | *outer [post update] [inner_nested, a] | by_reference.cpp:130:8:130:12 | *outer [inner_nested, a] | provenance | | +| by_reference.cpp:122:21:122:38 | taint_inner_a_ref output argument [a] | by_reference.cpp:122:21:122:25 | *outer [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:123:21:123:36 | taint_inner_a_ref output argument [a] | by_reference.cpp:123:22:123:26 | *outer [post update] [*inner_ptr, a] | provenance | | +| by_reference.cpp:123:22:123:26 | *outer [post update] [*inner_ptr, a] | by_reference.cpp:131:8:131:12 | *outer [*inner_ptr, a] | provenance | | +| by_reference.cpp:124:15:124:19 | *outer [post update] [a] | by_reference.cpp:132:8:132:12 | *outer [a] | provenance | | +| by_reference.cpp:124:15:124:21 | taint_a_ref output argument | by_reference.cpp:124:15:124:19 | *outer [post update] [a] | provenance | | +| by_reference.cpp:126:21:126:26 | *pouter [post update] [inner_nested, a] | by_reference.cpp:134:8:134:13 | *pouter [inner_nested, a] | provenance | | +| by_reference.cpp:126:21:126:40 | taint_inner_a_ref output argument [a] | by_reference.cpp:126:21:126:26 | *pouter [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:127:21:127:38 | taint_inner_a_ref output argument [a] | by_reference.cpp:127:22:127:27 | *pouter [post update] [*inner_ptr, a] | provenance | | +| by_reference.cpp:127:22:127:27 | *pouter [post update] [*inner_ptr, a] | by_reference.cpp:135:8:135:13 | *pouter [*inner_ptr, a] | provenance | | +| by_reference.cpp:128:15:128:20 | *pouter [post update] [a] | by_reference.cpp:136:8:136:13 | *pouter [a] | provenance | | +| by_reference.cpp:128:15:128:23 | taint_a_ref output argument | by_reference.cpp:128:15:128:20 | *pouter [post update] [a] | provenance | | +| by_reference.cpp:130:8:130:12 | *outer [inner_nested, a] | by_reference.cpp:130:14:130:25 | *inner_nested [a] | provenance | | +| by_reference.cpp:130:14:130:25 | *inner_nested [a] | by_reference.cpp:130:27:130:27 | a | provenance | | +| by_reference.cpp:131:8:131:12 | *outer [*inner_ptr, a] | by_reference.cpp:131:14:131:22 | *inner_ptr [a] | provenance | | +| by_reference.cpp:131:14:131:22 | *inner_ptr [a] | by_reference.cpp:131:25:131:25 | a | provenance | | +| by_reference.cpp:132:8:132:12 | *outer [a] | by_reference.cpp:132:14:132:14 | a | provenance | | +| by_reference.cpp:134:8:134:13 | *pouter [inner_nested, a] | by_reference.cpp:134:16:134:27 | *inner_nested [a] | provenance | | +| by_reference.cpp:134:16:134:27 | *inner_nested [a] | by_reference.cpp:134:29:134:29 | a | provenance | | +| by_reference.cpp:135:8:135:13 | *pouter [*inner_ptr, a] | by_reference.cpp:135:16:135:24 | *inner_ptr [a] | provenance | | +| by_reference.cpp:135:16:135:24 | *inner_ptr [a] | by_reference.cpp:135:27:135:27 | a | provenance | | +| by_reference.cpp:136:8:136:13 | *pouter [a] | by_reference.cpp:136:16:136:16 | a | provenance | | +| clearning.cpp:32:3:32:25 | ... = ... | clearning.cpp:32:4:32:4 | *s [post update] [*x] | provenance | | +| clearning.cpp:32:4:32:4 | *s [post update] [*x] | clearning.cpp:33:5:33:5 | *s [*x] | provenance | | +| clearning.cpp:32:10:32:19 | call to user_input | clearning.cpp:32:3:32:25 | ... = ... | provenance | | +| clearning.cpp:33:5:33:5 | *s [*x] | clearning.cpp:34:9:34:9 | *s [*x] | provenance | | +| clearning.cpp:34:9:34:9 | *s [*x] | clearning.cpp:34:8:34:11 | * ... | provenance | | +| clearning.cpp:53:3:53:25 | ... = ... | clearning.cpp:53:4:53:4 | *s [post update] [*x] | provenance | | +| clearning.cpp:53:4:53:4 | *s [post update] [*x] | clearning.cpp:54:3:54:3 | *s [*x] | provenance | | +| clearning.cpp:53:10:53:19 | call to user_input | clearning.cpp:53:3:53:25 | ... = ... | provenance | | +| clearning.cpp:54:3:54:3 | *s [*x] | clearning.cpp:54:3:54:7 | *... ++ | provenance | | +| clearning.cpp:54:3:54:3 | *s [*x] | clearning.cpp:54:5:54:5 | *x | provenance | | +| clearning.cpp:54:3:54:3 | *s [*x] | clearning.cpp:55:8:55:8 | *s [*x] | provenance | | +| clearning.cpp:54:3:54:3 | *s [post update] [*x] | clearning.cpp:55:8:55:8 | *s [*x] | provenance | | +| clearning.cpp:54:3:54:7 | *... ++ | clearning.cpp:54:3:54:3 | *s [post update] [*x] | provenance | | +| clearning.cpp:54:3:54:7 | *... ++ | clearning.cpp:54:3:54:7 | *... ++ | provenance | | +| clearning.cpp:54:5:54:5 | *x | clearning.cpp:54:3:54:7 | *... ++ | provenance | | +| clearning.cpp:55:8:55:8 | *s [*x] | clearning.cpp:55:10:55:10 | *x | provenance | | +| clearning.cpp:60:3:60:22 | ... = ... | clearning.cpp:60:5:60:5 | *s [post update] [**x] | provenance | | +| clearning.cpp:60:5:60:5 | *s [post update] [**x] | clearning.cpp:61:3:61:3 | *s [**x] | provenance | | +| clearning.cpp:60:11:60:20 | call to user_input | clearning.cpp:60:3:60:22 | ... = ... | provenance | | +| clearning.cpp:61:3:61:3 | *s [**x] | clearning.cpp:61:3:61:7 | **... ++ | provenance | | +| clearning.cpp:61:3:61:3 | *s [**x] | clearning.cpp:61:5:61:5 | **x | provenance | | +| clearning.cpp:61:3:61:3 | *s [**x] | clearning.cpp:62:8:62:8 | *s [**x] | provenance | | +| clearning.cpp:61:3:61:3 | *s [post update] [**x] | clearning.cpp:62:8:62:8 | *s [**x] | provenance | | +| clearning.cpp:61:3:61:7 | **... ++ | clearning.cpp:61:3:61:3 | *s [post update] [**x] | provenance | | +| clearning.cpp:61:3:61:7 | **... ++ | clearning.cpp:61:3:61:7 | **... ++ | provenance | | +| clearning.cpp:61:5:61:5 | **x | clearning.cpp:61:3:61:7 | **... ++ | provenance | | +| clearning.cpp:62:8:62:8 | *s [**x] | clearning.cpp:62:10:62:10 | **x | provenance | | +| clearning.cpp:74:18:74:18 | *s [post update] [*val] | clearning.cpp:76:8:76:8 | *s [*val] | provenance | | +| clearning.cpp:74:20:74:22 | argument_source output argument | clearning.cpp:74:18:74:18 | *s [post update] [*val] | provenance | | +| clearning.cpp:76:8:76:8 | *s [*val] | clearning.cpp:76:7:76:12 | * ... | provenance | | +| clearning.cpp:81:18:81:18 | *s [post update] [*val] | clearning.cpp:83:13:83:13 | *s [*val] | provenance | | +| clearning.cpp:81:20:81:22 | argument_source output argument | clearning.cpp:81:18:81:18 | *s [post update] [*val] | provenance | | +| clearning.cpp:83:5:83:5 | *s [post update] [*val] | clearning.cpp:84:8:84:8 | *s [*val] | provenance | | +| clearning.cpp:83:5:83:21 | *... = ... | clearning.cpp:83:5:83:5 | *s [post update] [*val] | provenance | | +| clearning.cpp:83:13:83:13 | *s [*val] | clearning.cpp:83:13:83:21 | *... + ... | provenance | | +| clearning.cpp:83:13:83:13 | *s [*val] | clearning.cpp:83:15:83:17 | *val | provenance | | +| clearning.cpp:83:13:83:21 | *... + ... | clearning.cpp:83:5:83:21 | *... = ... | provenance | | +| clearning.cpp:83:15:83:17 | *val | clearning.cpp:83:5:83:21 | *... = ... | provenance | | +| clearning.cpp:84:8:84:8 | *s [*val] | clearning.cpp:84:7:84:12 | * ... | provenance | | +| clearning.cpp:89:18:89:18 | *s [post update] [*val] | clearning.cpp:90:3:90:3 | *s [*val] | provenance | | +| clearning.cpp:89:20:89:22 | argument_source output argument | clearning.cpp:89:18:89:18 | *s [post update] [*val] | provenance | | +| clearning.cpp:90:3:90:3 | *s [*val] | clearning.cpp:90:3:90:9 | *... ++ | provenance | | +| clearning.cpp:90:3:90:3 | *s [*val] | clearning.cpp:90:5:90:7 | **val | provenance | | +| clearning.cpp:90:3:90:3 | *s [*val] | clearning.cpp:91:8:91:8 | *s [*val] | provenance | | +| clearning.cpp:90:3:90:3 | *s [post update] [*val] | clearning.cpp:91:8:91:8 | *s [*val] | provenance | | +| clearning.cpp:90:3:90:9 | *... ++ | clearning.cpp:90:3:90:3 | *s [post update] [*val] | provenance | | +| clearning.cpp:90:3:90:9 | *... ++ | clearning.cpp:90:3:90:9 | *... ++ | provenance | | +| clearning.cpp:90:5:90:7 | **val | clearning.cpp:90:3:90:9 | *... ++ | provenance | | +| clearning.cpp:91:8:91:8 | *s [*val] | clearning.cpp:91:7:91:12 | * ... | provenance | | +| clearning.cpp:96:18:96:18 | *s [post update] [*val] | clearning.cpp:97:10:97:10 | *s [*val] | provenance | | +| clearning.cpp:96:20:96:22 | argument_source output argument | clearning.cpp:96:18:96:18 | *s [post update] [*val] | provenance | | +| clearning.cpp:97:2:97:2 | *s [post update] [*val] | clearning.cpp:98:8:98:8 | *s [*val] | provenance | | +| clearning.cpp:97:2:97:18 | *... = ... | clearning.cpp:97:2:97:2 | *s [post update] [*val] | provenance | | +| clearning.cpp:97:10:97:10 | *s [*val] | clearning.cpp:97:10:97:18 | *... + ... | provenance | | +| clearning.cpp:97:10:97:10 | *s [*val] | clearning.cpp:97:12:97:14 | *val | provenance | | +| clearning.cpp:97:10:97:18 | *... + ... | clearning.cpp:97:2:97:18 | *... = ... | provenance | | +| clearning.cpp:97:12:97:14 | *val | clearning.cpp:97:2:97:18 | *... = ... | provenance | | +| clearning.cpp:98:8:98:8 | *s [*val] | clearning.cpp:98:7:98:12 | * ... | provenance | | +| clearning.cpp:103:18:103:18 | *s [post update] [*val] | clearning.cpp:104:2:104:2 | *s [*val] | provenance | | +| clearning.cpp:103:20:103:22 | argument_source output argument | clearning.cpp:103:18:103:18 | *s [post update] [*val] | provenance | | +| clearning.cpp:104:2:104:2 | *s [*val] | clearning.cpp:104:2:104:8 | *... ++ | provenance | | +| clearning.cpp:104:2:104:2 | *s [*val] | clearning.cpp:104:4:104:6 | *val | provenance | | +| clearning.cpp:104:2:104:2 | *s [*val] | clearning.cpp:105:8:105:8 | *s [*val] | provenance | | +| clearning.cpp:104:2:104:2 | *s [post update] [*val] | clearning.cpp:105:8:105:8 | *s [*val] | provenance | | +| clearning.cpp:104:2:104:8 | *... ++ | clearning.cpp:104:2:104:2 | *s [post update] [*val] | provenance | | +| clearning.cpp:104:2:104:8 | *... ++ | clearning.cpp:104:2:104:8 | *... ++ | provenance | | +| clearning.cpp:104:4:104:6 | *val | clearning.cpp:104:2:104:8 | *... ++ | provenance | | +| clearning.cpp:105:8:105:8 | *s [*val] | clearning.cpp:105:7:105:12 | * ... | provenance | | +| clearning.cpp:110:18:110:18 | *s [post update] [*val] | clearning.cpp:111:4:111:4 | *s [*val] | provenance | | +| clearning.cpp:110:20:110:22 | argument_source output argument | clearning.cpp:110:18:110:18 | *s [post update] [*val] | provenance | | +| clearning.cpp:111:2:111:8 | *++ ... | clearning.cpp:111:2:111:8 | *++ ... | provenance | | +| clearning.cpp:111:2:111:8 | *++ ... | clearning.cpp:111:4:111:4 | *s [post update] [*val] | provenance | | +| clearning.cpp:111:4:111:4 | *s [*val] | clearning.cpp:111:2:111:8 | *++ ... | provenance | | +| clearning.cpp:111:4:111:4 | *s [*val] | clearning.cpp:111:6:111:8 | *val | provenance | | +| clearning.cpp:111:4:111:4 | *s [*val] | clearning.cpp:112:8:112:8 | *s [*val] | provenance | | +| clearning.cpp:111:4:111:4 | *s [post update] [*val] | clearning.cpp:112:8:112:8 | *s [*val] | provenance | | +| clearning.cpp:111:6:111:8 | *val | clearning.cpp:111:2:111:8 | *++ ... | provenance | | +| clearning.cpp:112:8:112:8 | *s [*val] | clearning.cpp:112:7:112:12 | * ... | provenance | | +| clearning.cpp:117:18:117:18 | *s [post update] [*val] | clearning.cpp:118:2:118:2 | *s [*val] | provenance | | +| clearning.cpp:117:20:117:22 | argument_source output argument | clearning.cpp:117:18:117:18 | *s [post update] [*val] | provenance | | +| clearning.cpp:118:2:118:2 | *s [*val] | clearning.cpp:118:2:118:11 | *... += ... | provenance | | +| clearning.cpp:118:2:118:2 | *s [*val] | clearning.cpp:118:4:118:6 | *val | provenance | | +| clearning.cpp:118:2:118:2 | *s [*val] | clearning.cpp:119:8:119:8 | *s [*val] | provenance | | +| clearning.cpp:118:2:118:2 | *s [post update] [*val] | clearning.cpp:119:8:119:8 | *s [*val] | provenance | | +| clearning.cpp:118:2:118:11 | *... += ... | clearning.cpp:118:2:118:2 | *s [post update] [*val] | provenance | | +| clearning.cpp:118:2:118:11 | *... += ... | clearning.cpp:118:2:118:11 | *... += ... | provenance | | +| clearning.cpp:118:4:118:6 | *val | clearning.cpp:118:2:118:11 | *... += ... | provenance | | +| clearning.cpp:119:8:119:8 | *s [*val] | clearning.cpp:119:7:119:12 | * ... | provenance | | +| clearning.cpp:151:3:151:3 | *s [post update] [val] | clearning.cpp:152:8:152:8 | *s [val] | provenance | | +| clearning.cpp:151:3:151:22 | ... = ... | clearning.cpp:151:3:151:3 | *s [post update] [val] | provenance | | +| clearning.cpp:151:11:151:20 | call to user_input | clearning.cpp:151:3:151:22 | ... = ... | provenance | | +| clearning.cpp:152:8:152:8 | *s [val] | clearning.cpp:152:10:152:12 | val | provenance | | +| complex.cpp:9:7:9:7 | *this [a_] | complex.cpp:9:20:9:21 | *this [a_] | provenance | | +| complex.cpp:9:20:9:21 | *this [a_] | complex.cpp:9:20:9:21 | a_ | provenance | | +| complex.cpp:9:20:9:21 | a_ | complex.cpp:9:7:9:7 | *a | provenance | | +| complex.cpp:10:7:10:7 | *this [b_] | complex.cpp:10:20:10:21 | *this [b_] | provenance | | +| complex.cpp:10:20:10:21 | *this [b_] | complex.cpp:10:20:10:21 | b_ | provenance | | +| complex.cpp:10:20:10:21 | b_ | complex.cpp:10:7:10:7 | *b | provenance | | +| complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:27 | ... = ... | provenance | | +| complex.cpp:11:22:11:27 | ... = ... | complex.cpp:11:22:11:23 | *this [post update] [a_] | provenance | | +| complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:27 | ... = ... | provenance | | +| complex.cpp:12:22:12:27 | ... = ... | complex.cpp:12:22:12:23 | *this [post update] [b_] | provenance | | +| complex.cpp:40:17:40:17 | *b [inner, f, a_] | complex.cpp:42:8:42:8 | *b [inner, f, a_] | provenance | | +| complex.cpp:40:17:40:17 | *b [inner, f, b_] | complex.cpp:43:8:43:8 | *b [inner, f, b_] | provenance | | +| complex.cpp:42:8:42:8 | *b [inner, f, a_] | complex.cpp:42:10:42:14 | *inner [f, a_] | provenance | | +| complex.cpp:42:10:42:14 | *inner [f, a_] | complex.cpp:42:16:42:16 | *f [a_] | provenance | | +| complex.cpp:42:16:42:16 | *f [a_] | complex.cpp:9:7:9:7 | *this [a_] | provenance | | +| complex.cpp:42:16:42:16 | *f [a_] | complex.cpp:42:18:42:18 | call to a | provenance | | +| complex.cpp:43:8:43:8 | *b [inner, f, b_] | complex.cpp:43:10:43:14 | *inner [f, b_] | provenance | | +| complex.cpp:43:10:43:14 | *inner [f, b_] | complex.cpp:43:16:43:16 | *f [b_] | provenance | | +| complex.cpp:43:16:43:16 | *f [b_] | complex.cpp:10:7:10:7 | *this [b_] | provenance | | +| complex.cpp:43:16:43:16 | *f [b_] | complex.cpp:43:18:43:18 | call to b | provenance | | +| complex.cpp:53:3:53:4 | *b1 [post update] [inner, f, a_] | complex.cpp:59:7:59:8 | *b1 [inner, f, a_] | provenance | | +| complex.cpp:53:6:53:10 | *inner [post update] [f, a_] | complex.cpp:53:3:53:4 | *b1 [post update] [inner, f, a_] | provenance | | +| complex.cpp:53:12:53:12 | setA output argument [a_] | complex.cpp:53:6:53:10 | *inner [post update] [f, a_] | provenance | | +| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | provenance | | +| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:53:12:53:12 | setA output argument [a_] | provenance | | +| complex.cpp:54:3:54:4 | *b2 [post update] [inner, f, b_] | complex.cpp:62:7:62:8 | *b2 [inner, f, b_] | provenance | | +| complex.cpp:54:6:54:10 | *inner [post update] [f, b_] | complex.cpp:54:3:54:4 | *b2 [post update] [inner, f, b_] | provenance | | +| complex.cpp:54:12:54:12 | setB output argument [b_] | complex.cpp:54:6:54:10 | *inner [post update] [f, b_] | provenance | | +| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | provenance | | +| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:54:12:54:12 | setB output argument [b_] | provenance | | +| complex.cpp:55:3:55:4 | *b3 [post update] [inner, f, a_] | complex.cpp:65:7:65:8 | *b3 [inner, f, a_] | provenance | | +| complex.cpp:55:6:55:10 | *inner [post update] [f, a_] | complex.cpp:55:3:55:4 | *b3 [post update] [inner, f, a_] | provenance | | +| complex.cpp:55:12:55:12 | setA output argument [a_] | complex.cpp:55:6:55:10 | *inner [post update] [f, a_] | provenance | | +| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | provenance | | +| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:55:12:55:12 | setA output argument [a_] | provenance | | +| complex.cpp:56:3:56:4 | *b3 [post update] [inner, f, b_] | complex.cpp:65:7:65:8 | *b3 [inner, f, b_] | provenance | | +| complex.cpp:56:6:56:10 | *inner [post update] [f, b_] | complex.cpp:56:3:56:4 | *b3 [post update] [inner, f, b_] | provenance | | +| complex.cpp:56:12:56:12 | setB output argument [b_] | complex.cpp:56:6:56:10 | *inner [post update] [f, b_] | provenance | | +| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | provenance | | +| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:56:12:56:12 | setB output argument [b_] | provenance | | +| complex.cpp:59:7:59:8 | *b1 [inner, f, a_] | complex.cpp:40:17:40:17 | *b [inner, f, a_] | provenance | | +| complex.cpp:62:7:62:8 | *b2 [inner, f, b_] | complex.cpp:40:17:40:17 | *b [inner, f, b_] | provenance | | +| complex.cpp:65:7:65:8 | *b3 [inner, f, a_] | complex.cpp:40:17:40:17 | *b [inner, f, a_] | provenance | | +| complex.cpp:65:7:65:8 | *b3 [inner, f, b_] | complex.cpp:40:17:40:17 | *b [inner, f, b_] | provenance | | +| conflated.cpp:10:3:10:22 | ... = ... | conflated.cpp:10:4:10:5 | *ra [post update] [*p] | provenance | | +| conflated.cpp:10:4:10:5 | *ra [post update] [*p] | conflated.cpp:11:9:11:10 | *ra [*p] | provenance | | +| conflated.cpp:10:11:10:20 | call to user_input | conflated.cpp:10:3:10:22 | ... = ... | provenance | | +| conflated.cpp:11:9:11:10 | *ra [*p] | conflated.cpp:11:8:11:12 | * ... | provenance | | +| conflated.cpp:19:19:19:21 | argument_source output argument | conflated.cpp:20:8:20:10 | *raw | provenance | | +| conflated.cpp:29:3:29:4 | *pa [post update] [x] | conflated.cpp:30:8:30:9 | *pa [x] | provenance | | +| conflated.cpp:29:3:29:22 | ... = ... | conflated.cpp:29:3:29:4 | *pa [post update] [x] | provenance | | +| conflated.cpp:29:11:29:20 | call to user_input | conflated.cpp:29:3:29:22 | ... = ... | provenance | | +| conflated.cpp:30:8:30:9 | *pa [x] | conflated.cpp:30:12:30:12 | x | provenance | | +| conflated.cpp:36:3:36:4 | *pa [post update] [x] | conflated.cpp:37:8:37:9 | *pa [x] | provenance | | +| conflated.cpp:36:3:36:22 | ... = ... | conflated.cpp:36:3:36:4 | *pa [post update] [x] | provenance | | +| conflated.cpp:36:11:36:20 | call to user_input | conflated.cpp:36:3:36:22 | ... = ... | provenance | | +| conflated.cpp:37:8:37:9 | *pa [x] | conflated.cpp:37:12:37:12 | x | provenance | | +| conflated.cpp:54:3:54:4 | *ll [post update] [*next, y] | conflated.cpp:55:8:55:9 | *ll [*next, y] | provenance | | +| conflated.cpp:54:3:54:28 | ... = ... | conflated.cpp:54:7:54:10 | *next [post update] [y] | provenance | | +| conflated.cpp:54:7:54:10 | *next [post update] [y] | conflated.cpp:54:3:54:4 | *ll [post update] [*next, y] | provenance | | +| conflated.cpp:54:17:54:26 | call to user_input | conflated.cpp:54:3:54:28 | ... = ... | provenance | | +| conflated.cpp:55:8:55:9 | *ll [*next, y] | conflated.cpp:55:12:55:15 | *next [y] | provenance | | +| conflated.cpp:55:12:55:15 | *next [y] | conflated.cpp:55:18:55:18 | y | provenance | | +| conflated.cpp:60:3:60:4 | *ll [post update] [*next, y] | conflated.cpp:61:8:61:9 | *ll [*next, y] | provenance | | +| conflated.cpp:60:3:60:28 | ... = ... | conflated.cpp:60:7:60:10 | *next [post update] [y] | provenance | | +| conflated.cpp:60:7:60:10 | *next [post update] [y] | conflated.cpp:60:3:60:4 | *ll [post update] [*next, y] | provenance | | +| conflated.cpp:60:17:60:26 | call to user_input | conflated.cpp:60:3:60:28 | ... = ... | provenance | | +| conflated.cpp:61:8:61:9 | *ll [*next, y] | conflated.cpp:61:12:61:15 | *next [y] | provenance | | +| conflated.cpp:61:12:61:15 | *next [y] | conflated.cpp:61:18:61:18 | y | provenance | | +| constructors.cpp:18:9:18:9 | *this [a_] | constructors.cpp:18:22:18:23 | *this [a_] | provenance | | +| constructors.cpp:18:22:18:23 | *this [a_] | constructors.cpp:18:22:18:23 | a_ | provenance | | +| constructors.cpp:18:22:18:23 | a_ | constructors.cpp:18:9:18:9 | *a | provenance | | +| constructors.cpp:19:9:19:9 | *this [b_] | constructors.cpp:19:22:19:23 | *this [b_] | provenance | | +| constructors.cpp:19:22:19:23 | *this [b_] | constructors.cpp:19:22:19:23 | b_ | provenance | | +| constructors.cpp:19:22:19:23 | b_ | constructors.cpp:19:9:19:9 | *b | provenance | | +| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | a | provenance | | +| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | b | provenance | | +| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:5:23:7 | *this [post update] [a_] | provenance | | +| constructors.cpp:23:35:23:35 | b | constructors.cpp:23:5:23:7 | *this [post update] [b_] | provenance | | +| constructors.cpp:26:15:26:15 | *f [a_] | constructors.cpp:28:10:28:10 | *f [a_] | provenance | | +| constructors.cpp:26:15:26:15 | *f [b_] | constructors.cpp:29:10:29:10 | *f [b_] | provenance | | +| constructors.cpp:28:10:28:10 | *f [a_] | constructors.cpp:18:9:18:9 | *this [a_] | provenance | | +| constructors.cpp:28:10:28:10 | *f [a_] | constructors.cpp:28:12:28:12 | call to a | provenance | | +| constructors.cpp:29:10:29:10 | *f [b_] | constructors.cpp:19:9:19:9 | *this [b_] | provenance | | +| constructors.cpp:29:10:29:10 | *f [b_] | constructors.cpp:29:12:29:12 | call to b | provenance | | +| constructors.cpp:34:9:34:9 | call to Foo [a_] | constructors.cpp:40:9:40:9 | *f [a_] | provenance | | +| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | provenance | | +| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:34:9:34:9 | call to Foo [a_] | provenance | | +| constructors.cpp:35:9:35:9 | call to Foo [b_] | constructors.cpp:43:9:43:9 | *g [b_] | provenance | | +| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | provenance | | +| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:35:9:35:9 | call to Foo [b_] | provenance | | +| constructors.cpp:36:9:36:9 | call to Foo [a_] | constructors.cpp:46:9:46:9 | *h [a_] | provenance | | +| constructors.cpp:36:9:36:9 | call to Foo [b_] | constructors.cpp:46:9:46:9 | *h [b_] | provenance | | +| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | provenance | | +| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:36:9:36:9 | call to Foo [a_] | provenance | | +| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | provenance | | +| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:36:9:36:9 | call to Foo [b_] | provenance | | +| constructors.cpp:40:9:40:9 | *f [a_] | constructors.cpp:26:15:26:15 | *f [a_] | provenance | | +| constructors.cpp:43:9:43:9 | *g [b_] | constructors.cpp:26:15:26:15 | *f [b_] | provenance | | +| constructors.cpp:46:9:46:9 | *h [a_] | constructors.cpp:26:15:26:15 | *f [a_] | provenance | | +| constructors.cpp:46:9:46:9 | *h [b_] | constructors.cpp:26:15:26:15 | *f [b_] | provenance | | +| qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:44 | ... = ... | provenance | | +| qualifiers.cpp:9:30:9:44 | ... = ... | qualifiers.cpp:9:30:9:33 | *this [post update] [a] | provenance | | +| qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:64 | ... = ... | provenance | | +| qualifiers.cpp:12:49:12:64 | ... = ... | qualifiers.cpp:12:49:12:53 | *inner [post update] [a] | provenance | | +| qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:65 | ... = ... | provenance | | +| qualifiers.cpp:13:51:13:65 | ... = ... | qualifiers.cpp:13:51:13:55 | *inner [post update] [a] | provenance | | +| qualifiers.cpp:22:5:22:9 | getInner output argument [*inner, a] | qualifiers.cpp:23:10:23:14 | *outer [*inner, a] | provenance | | +| qualifiers.cpp:22:5:22:38 | ... = ... | qualifiers.cpp:22:11:22:18 | *call to getInner [post update] [a] | provenance | | +| qualifiers.cpp:22:11:22:18 | *call to getInner [post update] [a] | qualifiers.cpp:22:5:22:9 | getInner output argument [*inner, a] | provenance | | +| qualifiers.cpp:22:27:22:36 | call to user_input | qualifiers.cpp:22:5:22:38 | ... = ... | provenance | | +| qualifiers.cpp:23:10:23:14 | *outer [*inner, a] | qualifiers.cpp:23:16:23:20 | *inner [a] | provenance | | +| qualifiers.cpp:23:16:23:20 | *inner [a] | qualifiers.cpp:23:23:23:23 | a | provenance | | +| qualifiers.cpp:27:5:27:9 | getInner output argument [*inner, a] | qualifiers.cpp:28:10:28:14 | *outer [*inner, a] | provenance | | +| qualifiers.cpp:27:11:27:18 | setA output argument [a] | qualifiers.cpp:27:5:27:9 | getInner output argument [*inner, a] | provenance | | +| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | provenance | | +| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:27:11:27:18 | setA output argument [a] | provenance | | +| qualifiers.cpp:28:10:28:14 | *outer [*inner, a] | qualifiers.cpp:28:16:28:20 | *inner [a] | provenance | | +| qualifiers.cpp:28:16:28:20 | *inner [a] | qualifiers.cpp:28:23:28:23 | a | provenance | | +| qualifiers.cpp:32:17:32:21 | getInner output argument [*inner, a] | qualifiers.cpp:33:10:33:14 | *outer [*inner, a] | provenance | | +| qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] | qualifiers.cpp:32:17:32:21 | getInner output argument [*inner, a] | provenance | | +| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | provenance | | +| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] | provenance | | +| qualifiers.cpp:33:10:33:14 | *outer [*inner, a] | qualifiers.cpp:33:16:33:20 | *inner [a] | provenance | | +| qualifiers.cpp:33:16:33:20 | *inner [a] | qualifiers.cpp:33:23:33:23 | a | provenance | | +| qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] | qualifiers.cpp:37:20:37:24 | getInner output argument [*inner, a] | provenance | | +| qualifiers.cpp:37:20:37:24 | getInner output argument [*inner, a] | qualifiers.cpp:38:10:38:14 | *outer [*inner, a] | provenance | | +| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | provenance | | +| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] | provenance | | +| qualifiers.cpp:38:10:38:14 | *outer [*inner, a] | qualifiers.cpp:38:16:38:20 | *inner [a] | provenance | | +| qualifiers.cpp:38:16:38:20 | *inner [a] | qualifiers.cpp:38:23:38:23 | a | provenance | | +| qualifiers.cpp:42:5:42:40 | ... = ... | qualifiers.cpp:42:6:42:22 | ** ... [post update] [a] | provenance | | +| qualifiers.cpp:42:6:42:22 | ** ... [post update] [a] | qualifiers.cpp:42:7:42:11 | getInner output argument [*inner, a] | provenance | | +| qualifiers.cpp:42:7:42:11 | getInner output argument [*inner, a] | qualifiers.cpp:43:10:43:14 | *outer [*inner, a] | provenance | | +| qualifiers.cpp:42:29:42:38 | call to user_input | qualifiers.cpp:42:5:42:40 | ... = ... | provenance | | +| qualifiers.cpp:43:10:43:14 | *outer [*inner, a] | qualifiers.cpp:43:16:43:20 | *inner [a] | provenance | | +| qualifiers.cpp:43:16:43:20 | *inner [a] | qualifiers.cpp:43:23:43:23 | a | provenance | | +| qualifiers.cpp:47:5:47:42 | ... = ... | qualifiers.cpp:47:15:47:22 | *call to getInner [post update] [a] | provenance | | +| qualifiers.cpp:47:6:47:11 | getInner output argument [*inner, a] | qualifiers.cpp:48:10:48:14 | *outer [*inner, a] | provenance | | +| qualifiers.cpp:47:15:47:22 | *call to getInner [post update] [a] | qualifiers.cpp:47:6:47:11 | getInner output argument [*inner, a] | provenance | | +| qualifiers.cpp:47:31:47:40 | call to user_input | qualifiers.cpp:47:5:47:42 | ... = ... | provenance | | +| qualifiers.cpp:48:10:48:14 | *outer [*inner, a] | qualifiers.cpp:48:16:48:20 | *inner [a] | provenance | | +| qualifiers.cpp:48:16:48:20 | *inner [a] | qualifiers.cpp:48:23:48:23 | a | provenance | | +| realistic.cpp:53:9:53:11 | *foo [post update] [bar, *baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | *foo [bar, *baz, userInput, bufferLen] | provenance | | +| realistic.cpp:53:9:53:18 | *access to array [post update] [*baz, userInput, bufferLen] | realistic.cpp:53:9:53:11 | *foo [post update] [bar, *baz, userInput, bufferLen] | provenance | | +| realistic.cpp:53:9:53:66 | ... = ... | realistic.cpp:53:25:53:33 | *userInput [post update] [bufferLen] | provenance | | +| realistic.cpp:53:20:53:22 | *baz [post update] [userInput, bufferLen] | realistic.cpp:53:9:53:18 | *access to array [post update] [*baz, userInput, bufferLen] | provenance | | +| realistic.cpp:53:25:53:33 | *userInput [post update] [bufferLen] | realistic.cpp:53:20:53:22 | *baz [post update] [userInput, bufferLen] | provenance | | +| realistic.cpp:53:47:53:66 | call to user_input | realistic.cpp:53:9:53:66 | ... = ... | provenance | | +| realistic.cpp:61:21:61:23 | *foo [bar, *baz, userInput, bufferLen] | realistic.cpp:61:21:61:30 | *access to array [*baz, userInput, bufferLen] | provenance | | +| realistic.cpp:61:21:61:30 | *access to array [*baz, userInput, bufferLen] | realistic.cpp:61:32:61:34 | *baz [userInput, bufferLen] | provenance | | +| realistic.cpp:61:32:61:34 | *baz [userInput, bufferLen] | realistic.cpp:61:37:61:45 | *userInput [bufferLen] | provenance | | +| realistic.cpp:61:37:61:45 | *userInput [bufferLen] | realistic.cpp:61:14:61:55 | bufferLen | provenance | | +| simple.cpp:18:9:18:9 | *this [a_] | simple.cpp:18:22:18:23 | *this [a_] | provenance | | +| simple.cpp:18:22:18:23 | *this [a_] | simple.cpp:18:22:18:23 | a_ | provenance | | +| simple.cpp:18:22:18:23 | a_ | simple.cpp:18:9:18:9 | *a | provenance | | +| simple.cpp:19:9:19:9 | *this [b_] | simple.cpp:19:22:19:23 | *this [b_] | provenance | | +| simple.cpp:19:22:19:23 | *this [b_] | simple.cpp:19:22:19:23 | b_ | provenance | | +| simple.cpp:19:22:19:23 | b_ | simple.cpp:19:9:19:9 | *b | provenance | | +| simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:29 | ... = ... | provenance | | +| simple.cpp:20:24:20:29 | ... = ... | simple.cpp:20:24:20:25 | *this [post update] [a_] | provenance | | +| simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:29 | ... = ... | provenance | | +| simple.cpp:21:24:21:29 | ... = ... | simple.cpp:21:24:21:25 | *this [post update] [b_] | provenance | | +| simple.cpp:26:15:26:15 | *f [a_] | simple.cpp:28:10:28:10 | *f [a_] | provenance | | +| simple.cpp:26:15:26:15 | *f [b_] | simple.cpp:29:10:29:10 | *f [b_] | provenance | | +| simple.cpp:28:10:28:10 | *f [a_] | simple.cpp:18:9:18:9 | *this [a_] | provenance | | +| simple.cpp:28:10:28:10 | *f [a_] | simple.cpp:28:12:28:12 | call to a | provenance | | +| simple.cpp:29:10:29:10 | *f [b_] | simple.cpp:19:9:19:9 | *this [b_] | provenance | | +| simple.cpp:29:10:29:10 | *f [b_] | simple.cpp:29:12:29:12 | call to b | provenance | | +| simple.cpp:39:5:39:5 | setA output argument [a_] | simple.cpp:45:9:45:9 | *f [a_] | provenance | | +| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | provenance | | +| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:39:5:39:5 | setA output argument [a_] | provenance | | +| simple.cpp:40:5:40:5 | setB output argument [b_] | simple.cpp:48:9:48:9 | *g [b_] | provenance | | +| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | provenance | | +| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:40:5:40:5 | setB output argument [b_] | provenance | | +| simple.cpp:41:5:41:5 | setA output argument [a_] | simple.cpp:51:9:51:9 | *h [a_] | provenance | | +| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | provenance | | +| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:41:5:41:5 | setA output argument [a_] | provenance | | +| simple.cpp:42:5:42:5 | setB output argument [b_] | simple.cpp:51:9:51:9 | *h [b_] | provenance | | +| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | provenance | | +| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:42:5:42:5 | setB output argument [b_] | provenance | | +| simple.cpp:45:9:45:9 | *f [a_] | simple.cpp:26:15:26:15 | *f [a_] | provenance | | +| simple.cpp:48:9:48:9 | *g [b_] | simple.cpp:26:15:26:15 | *f [b_] | provenance | | +| simple.cpp:51:9:51:9 | *h [a_] | simple.cpp:26:15:26:15 | *f [a_] | provenance | | +| simple.cpp:51:9:51:9 | *h [b_] | simple.cpp:26:15:26:15 | *f [b_] | provenance | | +| simple.cpp:65:5:65:5 | *a [post update] [i] | simple.cpp:67:10:67:11 | *a2 [i] | provenance | | +| simple.cpp:65:5:65:22 | ... = ... | simple.cpp:65:5:65:5 | *a [post update] [i] | provenance | | +| simple.cpp:65:11:65:20 | call to user_input | simple.cpp:65:5:65:22 | ... = ... | provenance | | +| simple.cpp:67:10:67:11 | *a2 [i] | simple.cpp:67:13:67:13 | i | provenance | | +| simple.cpp:78:9:78:15 | *this [f2, f1] | simple.cpp:79:16:79:17 | *this [f2, f1] | provenance | | +| simple.cpp:79:16:79:17 | *f2 [f1] | simple.cpp:79:19:79:20 | f1 | provenance | | +| simple.cpp:79:16:79:17 | *this [f2, f1] | simple.cpp:79:16:79:17 | *f2 [f1] | provenance | | +| simple.cpp:79:19:79:20 | f1 | simple.cpp:78:9:78:15 | *getf2f1 | provenance | | +| simple.cpp:83:9:83:10 | *f2 [post update] [f1] | simple.cpp:83:9:83:10 | *this [post update] [f2, f1] | provenance | | +| simple.cpp:83:9:83:10 | *this [post update] [f2, f1] | simple.cpp:84:14:84:20 | *this [f2, f1] | provenance | | +| simple.cpp:83:9:83:28 | ... = ... | simple.cpp:83:9:83:10 | *f2 [post update] [f1] | provenance | | +| simple.cpp:83:17:83:26 | call to user_input | simple.cpp:83:9:83:28 | ... = ... | provenance | | +| simple.cpp:84:14:84:20 | *this [f2, f1] | simple.cpp:78:9:78:15 | *this [f2, f1] | provenance | | +| simple.cpp:84:14:84:20 | *this [f2, f1] | simple.cpp:84:14:84:20 | call to getf2f1 | provenance | | +| simple.cpp:92:5:92:5 | *a [post update] [i] | simple.cpp:94:10:94:11 | *a2 [i] | provenance | | +| simple.cpp:92:5:92:22 | ... = ... | simple.cpp:92:5:92:5 | *a [post update] [i] | provenance | | +| simple.cpp:92:11:92:20 | call to user_input | simple.cpp:92:5:92:22 | ... = ... | provenance | | +| simple.cpp:94:10:94:11 | *a2 [i] | simple.cpp:94:13:94:13 | i | provenance | | +| simple.cpp:103:24:103:24 | x | simple.cpp:104:14:104:14 | x | provenance | | +| simple.cpp:108:17:108:26 | call to user_input | simple.cpp:109:43:109:43 | x | provenance | | +| simple.cpp:109:43:109:43 | x | simple.cpp:103:24:103:24 | x | provenance | | +| struct_init.c:14:24:14:25 | *ab [a] | struct_init.c:15:8:15:9 | *ab [a] | provenance | | +| struct_init.c:15:8:15:9 | *ab [a] | struct_init.c:15:12:15:12 | a | provenance | | +| struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:22:8:22:9 | *ab [a] | provenance | | +| struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:24:10:24:12 | *& ... [a] | provenance | | +| struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:28:5:28:7 | *& ... [a] | provenance | | +| struct_init.c:20:13:20:14 | *definition of ab [post update] [a] | struct_init.c:20:13:20:14 | *definition of ab [a] | provenance | | +| struct_init.c:20:20:20:29 | call to user_input | struct_init.c:20:13:20:14 | *definition of ab [post update] [a] | provenance | | +| struct_init.c:20:20:20:29 | call to user_input | struct_init.c:20:20:20:29 | call to user_input | provenance | | +| struct_init.c:22:8:22:9 | *ab [a] | struct_init.c:22:11:22:11 | a | provenance | | +| struct_init.c:24:10:24:12 | *& ... [a] | struct_init.c:14:24:14:25 | *ab [a] | provenance | | +| struct_init.c:26:16:26:20 | *definition of outer [nestedAB, a] | struct_init.c:31:8:31:12 | *outer [nestedAB, a] | provenance | | +| struct_init.c:26:16:26:20 | *definition of outer [nestedAB, a] | struct_init.c:36:11:36:15 | *outer [nestedAB, a] | provenance | | +| struct_init.c:26:16:26:20 | *definition of outer [post update] [*pointerAB, a] | struct_init.c:33:8:33:12 | *outer [*pointerAB, a] | provenance | | +| struct_init.c:26:16:26:20 | *definition of outer [post update] [nestedAB, a] | struct_init.c:26:16:26:20 | *definition of outer [nestedAB, a] | provenance | | +| struct_init.c:26:23:29:3 | *{...} [post update] [a] | struct_init.c:26:16:26:20 | *definition of outer [post update] [nestedAB, a] | provenance | | +| struct_init.c:27:7:27:16 | call to user_input | struct_init.c:26:23:29:3 | *{...} [post update] [a] | provenance | | +| struct_init.c:27:7:27:16 | call to user_input | struct_init.c:27:7:27:16 | call to user_input | provenance | | +| struct_init.c:28:5:28:7 | *& ... [a] | struct_init.c:26:16:26:20 | *definition of outer [post update] [*pointerAB, a] | provenance | | +| struct_init.c:31:8:31:12 | *outer [nestedAB, a] | struct_init.c:31:14:31:21 | *nestedAB [a] | provenance | | +| struct_init.c:31:14:31:21 | *nestedAB [a] | struct_init.c:31:23:31:23 | a | provenance | | +| struct_init.c:33:8:33:12 | *outer [*pointerAB, a] | struct_init.c:33:14:33:22 | *pointerAB [a] | provenance | | +| struct_init.c:33:14:33:22 | *pointerAB [a] | struct_init.c:33:25:33:25 | a | provenance | | +| struct_init.c:36:10:36:24 | *& ... [a] | struct_init.c:14:24:14:25 | *ab [a] | provenance | | +| struct_init.c:36:11:36:15 | *outer [nestedAB, a] | struct_init.c:36:10:36:24 | *& ... [a] | provenance | | +| struct_init.c:40:13:40:14 | *definition of ab [a] | struct_init.c:43:5:43:7 | *& ... [a] | provenance | | +| struct_init.c:40:13:40:14 | *definition of ab [post update] [a] | struct_init.c:40:13:40:14 | *definition of ab [a] | provenance | | +| struct_init.c:40:20:40:29 | call to user_input | struct_init.c:40:13:40:14 | *definition of ab [post update] [a] | provenance | | +| struct_init.c:40:20:40:29 | call to user_input | struct_init.c:40:20:40:29 | call to user_input | provenance | | +| struct_init.c:41:16:41:20 | *definition of outer [post update] [*pointerAB, a] | struct_init.c:46:10:46:14 | *outer [*pointerAB, a] | provenance | | +| struct_init.c:43:5:43:7 | *& ... [a] | struct_init.c:41:16:41:20 | *definition of outer [post update] [*pointerAB, a] | provenance | | +| struct_init.c:46:10:46:14 | *outer [*pointerAB, a] | struct_init.c:46:16:46:24 | *pointerAB [a] | provenance | | +| struct_init.c:46:16:46:24 | *pointerAB [a] | struct_init.c:14:24:14:25 | *ab [a] | provenance | | nodes | A.cpp:23:10:23:10 | c | semmle.label | c | | A.cpp:25:7:25:10 | *this [post update] [c] | semmle.label | *this [post update] [c] | diff --git a/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected b/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected index 78b3832ea92e..3eebd355b14b 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected @@ -1,751 +1,751 @@ edges -| A.cpp:23:10:23:10 | c | A.cpp:25:7:25:17 | ... = ... | -| A.cpp:25:7:25:17 | ... = ... | A.cpp:25:7:25:10 | this [post update] [c] | -| A.cpp:27:17:27:17 | c | A.cpp:27:22:27:32 | ... = ... | -| A.cpp:27:22:27:32 | ... = ... | A.cpp:27:22:27:25 | this [post update] [c] | -| A.cpp:28:8:28:10 | this [c] | A.cpp:28:23:28:26 | this [c] | -| A.cpp:28:23:28:26 | this [c] | A.cpp:28:29:28:29 | c | -| A.cpp:29:23:29:23 | c | A.cpp:31:20:31:20 | c | -| A.cpp:31:14:31:21 | call to B [c] | A.cpp:31:14:31:21 | new [c] | -| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | -| A.cpp:31:20:31:20 | c | A.cpp:31:14:31:21 | call to B [c] | -| A.cpp:41:5:41:6 | ref arg ct | A.cpp:43:11:43:12 | ct | -| A.cpp:41:15:41:21 | new | A.cpp:41:5:41:6 | ref arg ct | -| A.cpp:43:11:43:12 | ct | A.cpp:43:10:43:12 | & ... | -| A.cpp:47:12:47:18 | new | A.cpp:48:20:48:20 | c | -| A.cpp:48:12:48:18 | call to make [c] | A.cpp:49:10:49:10 | b [c] | -| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c | -| A.cpp:48:20:48:20 | c | A.cpp:48:12:48:18 | call to make [c] | -| A.cpp:49:10:49:10 | b [c] | A.cpp:49:13:49:13 | c | -| A.cpp:55:5:55:5 | ref arg b [c] | A.cpp:56:10:56:10 | b [c] | -| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | -| A.cpp:55:12:55:19 | new | A.cpp:55:5:55:5 | ref arg b [c] | -| A.cpp:56:10:56:10 | b [c] | A.cpp:28:8:28:10 | this [c] | -| A.cpp:56:10:56:10 | b [c] | A.cpp:56:13:56:15 | call to get | -| A.cpp:57:11:57:24 | call to B [c] | A.cpp:57:11:57:24 | new [c] | -| A.cpp:57:11:57:24 | new [c] | A.cpp:28:8:28:10 | this [c] | -| A.cpp:57:11:57:24 | new [c] | A.cpp:57:28:57:30 | call to get | -| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | -| A.cpp:57:17:57:23 | new | A.cpp:57:11:57:24 | call to B [c] | -| A.cpp:64:10:64:15 | call to setOnB [c] | A.cpp:66:10:66:11 | b2 [c] | -| A.cpp:64:21:64:28 | new | A.cpp:64:10:64:15 | call to setOnB [c] | -| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c | -| A.cpp:66:10:66:11 | b2 [c] | A.cpp:66:14:66:14 | c | -| A.cpp:73:10:73:19 | call to setOnBWrap [c] | A.cpp:75:10:75:11 | b2 [c] | -| A.cpp:73:25:73:32 | new | A.cpp:73:10:73:19 | call to setOnBWrap [c] | -| A.cpp:73:25:73:32 | new | A.cpp:78:27:78:27 | c | -| A.cpp:75:10:75:11 | b2 [c] | A.cpp:75:14:75:14 | c | -| A.cpp:78:27:78:27 | c | A.cpp:81:21:81:21 | c | -| A.cpp:81:10:81:15 | call to setOnB [c] | A.cpp:82:12:82:24 | ... ? ... : ... [c] | -| A.cpp:81:21:81:21 | c | A.cpp:81:10:81:15 | call to setOnB [c] | -| A.cpp:81:21:81:21 | c | A.cpp:85:26:85:26 | c | -| A.cpp:85:26:85:26 | c | A.cpp:90:15:90:15 | c | -| A.cpp:90:7:90:8 | ref arg b2 [c] | A.cpp:91:14:91:15 | b2 [c] | -| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | -| A.cpp:90:15:90:15 | c | A.cpp:90:7:90:8 | ref arg b2 [c] | -| A.cpp:98:12:98:18 | new | A.cpp:100:5:100:13 | ... = ... | -| A.cpp:100:5:100:6 | c1 [post update] [a] | A.cpp:101:8:101:9 | c1 [a] | -| A.cpp:100:5:100:13 | ... = ... | A.cpp:100:5:100:6 | c1 [post update] [a] | -| A.cpp:101:8:101:9 | c1 [a] | A.cpp:103:14:103:14 | c [a] | -| A.cpp:103:14:103:14 | c [a] | A.cpp:107:12:107:13 | c1 [a] | -| A.cpp:103:14:103:14 | c [a] | A.cpp:120:12:120:13 | c1 [a] | -| A.cpp:107:12:107:13 | c1 [a] | A.cpp:107:16:107:16 | a | -| A.cpp:120:12:120:13 | c1 [a] | A.cpp:120:16:120:16 | a | -| A.cpp:124:14:124:14 | b [c] | A.cpp:131:8:131:8 | ref arg b [c] | -| A.cpp:126:5:126:5 | ref arg b [c] | A.cpp:124:14:124:14 | b [c] | -| A.cpp:126:5:126:5 | ref arg b [c] | A.cpp:131:8:131:8 | ref arg b [c] | -| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | -| A.cpp:126:12:126:18 | new | A.cpp:126:5:126:5 | ref arg b [c] | -| A.cpp:131:8:131:8 | ref arg b [c] | A.cpp:132:10:132:10 | b [c] | -| A.cpp:132:10:132:10 | b [c] | A.cpp:132:13:132:13 | c | -| A.cpp:140:13:140:13 | b | A.cpp:143:7:143:31 | ... = ... | -| A.cpp:140:13:140:13 | b [c] | A.cpp:151:18:151:18 | ref arg b [c] | -| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:140:13:140:13 | b [c] | -| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:143:7:143:31 | ... = ... [c] | -| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:151:18:151:18 | ref arg b [c] | -| A.cpp:142:7:142:20 | ... = ... | A.cpp:142:7:142:7 | b [post update] [c] | -| A.cpp:142:14:142:20 | new | A.cpp:142:7:142:20 | ... = ... | -| A.cpp:143:7:143:10 | this [post update] [b, c] | A.cpp:151:12:151:24 | call to D [b, c] | -| A.cpp:143:7:143:10 | this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] | -| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | this [post update] [b] | -| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | this [post update] [b] | -| A.cpp:143:7:143:31 | ... = ... [c] | A.cpp:143:7:143:10 | this [post update] [b, c] | -| A.cpp:143:25:143:31 | new | A.cpp:143:7:143:31 | ... = ... | -| A.cpp:150:12:150:18 | new | A.cpp:151:18:151:18 | b | -| A.cpp:151:12:151:24 | call to D [b, c] | A.cpp:152:10:152:10 | d [b, c] | -| A.cpp:151:12:151:24 | call to D [b, c] | A.cpp:153:10:153:10 | d [b, c] | -| A.cpp:151:12:151:24 | call to D [b] | A.cpp:152:10:152:10 | d [b] | -| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | -| A.cpp:151:18:151:18 | b | A.cpp:151:12:151:24 | call to D [b] | -| A.cpp:151:18:151:18 | ref arg b [c] | A.cpp:154:10:154:10 | b [c] | -| A.cpp:152:10:152:10 | d [b, c] | A.cpp:152:13:152:13 | b [c] | -| A.cpp:152:10:152:10 | d [b] | A.cpp:152:13:152:13 | b | -| A.cpp:152:10:152:10 | d [post update] [b, c] | A.cpp:153:10:153:10 | d [b, c] | -| A.cpp:152:13:152:13 | b [c] | A.cpp:152:13:152:13 | ref arg b [c] | -| A.cpp:152:13:152:13 | b [c] | A.cpp:173:26:173:26 | o [c] | -| A.cpp:152:13:152:13 | ref arg b [c] | A.cpp:152:10:152:10 | d [post update] [b, c] | -| A.cpp:153:10:153:10 | d [b, c] | A.cpp:153:13:153:13 | b [c] | -| A.cpp:153:13:153:13 | b [c] | A.cpp:153:16:153:16 | c | -| A.cpp:154:10:154:10 | b [c] | A.cpp:154:13:154:13 | c | -| A.cpp:159:12:159:18 | new | A.cpp:160:29:160:29 | b | -| A.cpp:160:18:160:60 | call to MyList [head] | A.cpp:161:38:161:39 | l1 [head] | -| A.cpp:160:29:160:29 | b | A.cpp:160:18:160:60 | call to MyList [head] | -| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | -| A.cpp:161:18:161:40 | call to MyList [next, head] | A.cpp:162:38:162:39 | l2 [next, head] | -| A.cpp:161:38:161:39 | l1 [head] | A.cpp:161:18:161:40 | call to MyList [next, head] | -| A.cpp:161:38:161:39 | l1 [head] | A.cpp:181:32:181:35 | next [head] | -| A.cpp:162:18:162:40 | call to MyList [next, next, head] | A.cpp:165:10:165:11 | l3 [next, next, head] | -| A.cpp:162:18:162:40 | call to MyList [next, next, head] | A.cpp:167:44:167:44 | l [next, next, head] | -| A.cpp:162:38:162:39 | l2 [next, head] | A.cpp:162:18:162:40 | call to MyList [next, next, head] | -| A.cpp:162:38:162:39 | l2 [next, head] | A.cpp:181:32:181:35 | next [next, head] | -| A.cpp:165:10:165:11 | l3 [next, next, head] | A.cpp:165:14:165:17 | next [next, head] | -| A.cpp:165:10:165:11 | l3 [post update] [next, next, head] | A.cpp:167:44:167:44 | l [next, next, head] | -| A.cpp:165:14:165:17 | next [next, head] | A.cpp:165:20:165:23 | next [head] | -| A.cpp:165:14:165:17 | next [post update] [next, head] | A.cpp:165:10:165:11 | l3 [post update] [next, next, head] | -| A.cpp:165:20:165:23 | next [head] | A.cpp:165:26:165:29 | head | -| A.cpp:165:20:165:23 | next [head] | A.cpp:165:26:165:29 | head | -| A.cpp:165:20:165:23 | next [post update] [head] | A.cpp:165:14:165:17 | next [post update] [next, head] | -| A.cpp:165:26:165:29 | head | A.cpp:165:26:165:29 | ref arg head | -| A.cpp:165:26:165:29 | head | A.cpp:173:26:173:26 | o | -| A.cpp:165:26:165:29 | ref arg head | A.cpp:165:20:165:23 | next [post update] [head] | -| A.cpp:167:44:167:44 | l [next, head] | A.cpp:167:47:167:50 | next [head] | -| A.cpp:167:44:167:44 | l [next, next, head] | A.cpp:167:47:167:50 | next [next, head] | -| A.cpp:167:47:167:50 | next [head] | A.cpp:169:12:169:12 | l [head] | -| A.cpp:167:47:167:50 | next [next, head] | A.cpp:167:44:167:44 | l [next, head] | -| A.cpp:169:12:169:12 | l [head] | A.cpp:169:15:169:18 | head | -| A.cpp:173:26:173:26 | o | A.cpp:173:26:173:26 | o | -| A.cpp:173:26:173:26 | o [c] | A.cpp:173:26:173:26 | o [c] | -| A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:20 | ... = ... | -| A.cpp:181:32:181:35 | next [head] | A.cpp:184:7:184:23 | ... = ... [head] | -| A.cpp:181:32:181:35 | next [next, head] | A.cpp:184:7:184:23 | ... = ... [next, head] | -| A.cpp:183:7:183:20 | ... = ... | A.cpp:183:7:183:10 | this [post update] [head] | -| A.cpp:184:7:184:23 | ... = ... [head] | A.cpp:184:7:184:10 | this [post update] [next, head] | -| A.cpp:184:7:184:23 | ... = ... [next, head] | A.cpp:184:7:184:10 | this [post update] [next, next, head] | -| B.cpp:6:15:6:24 | new | B.cpp:7:25:7:25 | e | -| B.cpp:7:16:7:35 | call to Box1 [elem1] | B.cpp:8:25:8:26 | b1 [elem1] | -| B.cpp:7:25:7:25 | e | B.cpp:7:16:7:35 | call to Box1 [elem1] | -| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | -| B.cpp:8:16:8:27 | call to Box2 [box1, elem1] | B.cpp:9:10:9:11 | b2 [box1, elem1] | -| B.cpp:8:25:8:26 | b1 [elem1] | B.cpp:8:16:8:27 | call to Box2 [box1, elem1] | -| B.cpp:8:25:8:26 | b1 [elem1] | B.cpp:44:16:44:17 | b1 [elem1] | -| B.cpp:9:10:9:11 | b2 [box1, elem1] | B.cpp:9:14:9:17 | box1 [elem1] | -| B.cpp:9:14:9:17 | box1 [elem1] | B.cpp:9:20:9:24 | elem1 | -| B.cpp:15:15:15:27 | new | B.cpp:16:37:16:37 | e | -| B.cpp:16:16:16:38 | call to Box1 [elem2] | B.cpp:17:25:17:26 | b1 [elem2] | -| B.cpp:16:37:16:37 | e | B.cpp:16:16:16:38 | call to Box1 [elem2] | -| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | -| B.cpp:17:16:17:27 | call to Box2 [box1, elem2] | B.cpp:19:10:19:11 | b2 [box1, elem2] | -| B.cpp:17:25:17:26 | b1 [elem2] | B.cpp:17:16:17:27 | call to Box2 [box1, elem2] | -| B.cpp:17:25:17:26 | b1 [elem2] | B.cpp:44:16:44:17 | b1 [elem2] | -| B.cpp:19:10:19:11 | b2 [box1, elem2] | B.cpp:19:14:19:17 | box1 [elem2] | -| B.cpp:19:14:19:17 | box1 [elem2] | B.cpp:19:20:19:24 | elem2 | -| B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:22 | ... = ... | -| B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:22 | ... = ... | -| B.cpp:35:7:35:22 | ... = ... | B.cpp:35:7:35:10 | this [post update] [elem1] | -| B.cpp:36:7:36:22 | ... = ... | B.cpp:36:7:36:10 | this [post update] [elem2] | -| B.cpp:44:16:44:17 | b1 [elem1] | B.cpp:46:7:46:21 | ... = ... [elem1] | -| B.cpp:44:16:44:17 | b1 [elem2] | B.cpp:46:7:46:21 | ... = ... [elem2] | -| B.cpp:46:7:46:21 | ... = ... [elem1] | B.cpp:46:7:46:10 | this [post update] [box1, elem1] | -| B.cpp:46:7:46:21 | ... = ... [elem2] | B.cpp:46:7:46:10 | this [post update] [box1, elem2] | -| C.cpp:18:12:18:18 | call to C [s1] | C.cpp:19:5:19:5 | c [s1] | -| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:19:5:19:5 | c [s3] | -| C.cpp:19:5:19:5 | c [s1] | C.cpp:27:8:27:11 | this [s1] | -| C.cpp:19:5:19:5 | c [s3] | C.cpp:27:8:27:11 | this [s3] | -| C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | C.cpp:18:12:18:18 | call to C [s1] | -| C.cpp:22:12:22:21 | new | C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | -| C.cpp:24:5:24:8 | this [post update] [s3] | C.cpp:18:12:18:18 | call to C [s3] | -| C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | this [post update] [s3] | -| C.cpp:24:16:24:25 | new | C.cpp:24:5:24:25 | ... = ... | -| C.cpp:27:8:27:11 | this [s1] | C.cpp:29:10:29:11 | this [s1] | -| C.cpp:27:8:27:11 | this [s3] | C.cpp:31:10:31:11 | this [s3] | -| C.cpp:29:10:29:11 | this [s1] | C.cpp:29:10:29:11 | s1 | -| C.cpp:31:10:31:11 | this [s3] | C.cpp:31:10:31:11 | s3 | -| D.cpp:10:11:10:17 | this [elem] | D.cpp:10:30:10:33 | this [elem] | -| D.cpp:10:30:10:33 | this [elem] | D.cpp:10:30:10:33 | elem | -| D.cpp:11:24:11:24 | e | D.cpp:11:29:11:36 | ... = ... | -| D.cpp:11:29:11:36 | ... = ... | D.cpp:11:29:11:32 | this [post update] [elem] | -| D.cpp:17:11:17:17 | this [box, elem] | D.cpp:17:30:17:32 | this [box, elem] | -| D.cpp:17:30:17:32 | this [box, elem] | D.cpp:17:30:17:32 | box [elem] | -| D.cpp:21:30:21:31 | b2 [box, elem] | D.cpp:22:10:22:11 | b2 [box, elem] | -| D.cpp:22:10:22:11 | b2 [box, elem] | D.cpp:17:11:17:17 | this [box, elem] | -| D.cpp:22:10:22:11 | b2 [box, elem] | D.cpp:22:14:22:20 | call to getBox1 [elem] | -| D.cpp:22:14:22:20 | call to getBox1 [elem] | D.cpp:10:11:10:17 | this [elem] | -| D.cpp:22:14:22:20 | call to getBox1 [elem] | D.cpp:22:25:22:31 | call to getElem | -| D.cpp:28:15:28:24 | new | D.cpp:30:5:30:20 | ... = ... | -| D.cpp:30:5:30:5 | b [post update] [box, elem] | D.cpp:31:14:31:14 | b [box, elem] | -| D.cpp:30:5:30:20 | ... = ... | D.cpp:30:8:30:10 | box [post update] [elem] | -| D.cpp:30:8:30:10 | box [post update] [elem] | D.cpp:30:5:30:5 | b [post update] [box, elem] | -| D.cpp:31:14:31:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | -| D.cpp:35:15:35:24 | new | D.cpp:37:21:37:21 | e | -| D.cpp:37:5:37:5 | b [post update] [box, elem] | D.cpp:38:14:38:14 | b [box, elem] | -| D.cpp:37:8:37:10 | ref arg box [elem] | D.cpp:37:5:37:5 | b [post update] [box, elem] | -| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | -| D.cpp:37:21:37:21 | e | D.cpp:37:8:37:10 | ref arg box [elem] | -| D.cpp:38:14:38:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | -| D.cpp:42:15:42:24 | new | D.cpp:44:5:44:26 | ... = ... | -| D.cpp:44:5:44:5 | ref arg b [box, elem] | D.cpp:45:14:45:14 | b [box, elem] | -| D.cpp:44:5:44:26 | ... = ... | D.cpp:44:8:44:14 | call to getBox1 [post update] [elem] | -| D.cpp:44:8:44:14 | call to getBox1 [post update] [elem] | D.cpp:44:5:44:5 | ref arg b [box, elem] | -| D.cpp:45:14:45:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | -| D.cpp:49:15:49:24 | new | D.cpp:51:27:51:27 | e | -| D.cpp:51:5:51:5 | ref arg b [box, elem] | D.cpp:52:14:52:14 | b [box, elem] | -| D.cpp:51:8:51:14 | ref arg call to getBox1 [elem] | D.cpp:51:5:51:5 | ref arg b [box, elem] | -| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | -| D.cpp:51:27:51:27 | e | D.cpp:51:8:51:14 | ref arg call to getBox1 [elem] | -| D.cpp:52:14:52:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | -| D.cpp:56:15:56:24 | new | D.cpp:58:5:58:27 | ... = ... | -| D.cpp:58:5:58:12 | boxfield [post update] [box, elem] | D.cpp:58:5:58:12 | this [post update] [boxfield, box, elem] | -| D.cpp:58:5:58:12 | this [post update] [boxfield, box, elem] | D.cpp:59:5:59:7 | this [boxfield, box, elem] | -| D.cpp:58:5:58:27 | ... = ... | D.cpp:58:15:58:17 | box [post update] [elem] | -| D.cpp:58:15:58:17 | box [post update] [elem] | D.cpp:58:5:58:12 | boxfield [post update] [box, elem] | -| D.cpp:59:5:59:7 | this [boxfield, box, elem] | D.cpp:63:8:63:10 | this [boxfield, box, elem] | -| D.cpp:63:8:63:10 | this [boxfield, box, elem] | D.cpp:64:10:64:17 | this [boxfield, box, elem] | -| D.cpp:64:10:64:17 | boxfield [box, elem] | D.cpp:64:20:64:22 | box [elem] | -| D.cpp:64:10:64:17 | this [boxfield, box, elem] | D.cpp:64:10:64:17 | boxfield [box, elem] | -| D.cpp:64:20:64:22 | box [elem] | D.cpp:64:25:64:28 | elem | -| E.cpp:19:27:19:27 | p [data, buffer] | E.cpp:21:10:21:10 | p [data, buffer] | -| E.cpp:21:10:21:10 | p [data, buffer] | E.cpp:21:13:21:16 | data [buffer] | -| E.cpp:21:13:21:16 | data [buffer] | E.cpp:21:18:21:23 | buffer | -| E.cpp:28:21:28:23 | ref arg raw | E.cpp:31:10:31:12 | raw | -| E.cpp:29:21:29:21 | b [post update] [buffer] | E.cpp:32:10:32:10 | b [buffer] | -| E.cpp:29:24:29:29 | ref arg buffer | E.cpp:29:21:29:21 | b [post update] [buffer] | -| E.cpp:30:21:30:21 | p [post update] [data, buffer] | E.cpp:33:19:33:19 | p [data, buffer] | -| E.cpp:30:23:30:26 | data [post update] [buffer] | E.cpp:30:21:30:21 | p [post update] [data, buffer] | -| E.cpp:30:28:30:33 | ref arg buffer | E.cpp:30:23:30:26 | data [post update] [buffer] | -| E.cpp:32:10:32:10 | b [buffer] | E.cpp:32:13:32:18 | buffer | -| E.cpp:33:18:33:19 | & ... [data, buffer] | E.cpp:19:27:19:27 | p [data, buffer] | -| E.cpp:33:19:33:19 | p [data, buffer] | E.cpp:33:18:33:19 | & ... [data, buffer] | -| aliasing.cpp:8:23:8:23 | s [m1] | aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | -| aliasing.cpp:9:3:9:3 | s [post update] [m1] | aliasing.cpp:8:23:8:23 | s [m1] | -| aliasing.cpp:9:3:9:3 | s [post update] [m1] | aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | -| aliasing.cpp:9:3:9:22 | ... = ... | aliasing.cpp:9:3:9:3 | s [post update] [m1] | -| aliasing.cpp:9:11:9:20 | call to user_input | aliasing.cpp:9:3:9:22 | ... = ... | -| aliasing.cpp:12:25:12:25 | s [m1] | aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | -| aliasing.cpp:13:3:13:3 | s [post update] [m1] | aliasing.cpp:12:25:12:25 | s [m1] | -| aliasing.cpp:13:3:13:3 | s [post update] [m1] | aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | -| aliasing.cpp:13:3:13:21 | ... = ... | aliasing.cpp:13:3:13:3 | s [post update] [m1] | -| aliasing.cpp:13:10:13:19 | call to user_input | aliasing.cpp:13:3:13:21 | ... = ... | -| aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | aliasing.cpp:29:8:29:9 | s1 [m1] | -| aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | aliasing.cpp:30:8:30:9 | s2 [m1] | -| aliasing.cpp:29:8:29:9 | s1 [m1] | aliasing.cpp:29:11:29:12 | m1 | -| aliasing.cpp:30:8:30:9 | s2 [m1] | aliasing.cpp:30:11:30:12 | m1 | -| aliasing.cpp:60:3:60:4 | s2 [post update] [m1] | aliasing.cpp:62:8:62:12 | copy2 [m1] | -| aliasing.cpp:60:3:60:22 | ... = ... | aliasing.cpp:60:3:60:4 | s2 [post update] [m1] | -| aliasing.cpp:60:11:60:20 | call to user_input | aliasing.cpp:60:3:60:22 | ... = ... | -| aliasing.cpp:62:8:62:12 | copy2 [m1] | aliasing.cpp:62:14:62:15 | m1 | -| aliasing.cpp:92:3:92:3 | w [post update] [s, m1] | aliasing.cpp:93:8:93:8 | w [s, m1] | -| aliasing.cpp:92:3:92:23 | ... = ... | aliasing.cpp:92:5:92:5 | s [post update] [m1] | -| aliasing.cpp:92:5:92:5 | s [post update] [m1] | aliasing.cpp:92:3:92:3 | w [post update] [s, m1] | -| aliasing.cpp:92:12:92:21 | call to user_input | aliasing.cpp:92:3:92:23 | ... = ... | -| aliasing.cpp:93:8:93:8 | w [s, m1] | aliasing.cpp:93:10:93:10 | s [m1] | -| aliasing.cpp:93:10:93:10 | s [m1] | aliasing.cpp:93:12:93:13 | m1 | -| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:158:17:158:20 | ref arg data | -| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:164:17:164:20 | ref arg data | -| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:175:15:175:22 | ref arg & ... | -| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:187:15:187:22 | ref arg & ... | -| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:200:15:200:24 | ref arg & ... | -| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:158:17:158:20 | ref arg data | -| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:164:17:164:20 | ref arg data | -| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:175:15:175:22 | ref arg & ... | -| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:187:15:187:22 | ref arg & ... | -| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:200:15:200:24 | ref arg & ... | -| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:105:23:105:24 | pa | -| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:106:4:106:5 | pa [inner post update] | -| aliasing.cpp:158:15:158:15 | s [post update] [data] | aliasing.cpp:159:9:159:9 | s [data] | -| aliasing.cpp:158:17:158:20 | ref arg data | aliasing.cpp:158:15:158:15 | s [post update] [data] | -| aliasing.cpp:159:9:159:9 | s [data] | aliasing.cpp:159:11:159:14 | data | -| aliasing.cpp:159:11:159:14 | data | aliasing.cpp:159:8:159:14 | * ... | -| aliasing.cpp:164:15:164:15 | s [post update] [data] | aliasing.cpp:165:8:165:8 | s [data] | -| aliasing.cpp:164:17:164:20 | ref arg data | aliasing.cpp:164:15:164:15 | s [post update] [data] | -| aliasing.cpp:165:8:165:8 | s [data] | aliasing.cpp:165:10:165:13 | data | -| aliasing.cpp:165:10:165:13 | data | aliasing.cpp:165:8:165:16 | access to array | -| aliasing.cpp:175:15:175:22 | ref arg & ... | aliasing.cpp:175:21:175:22 | m1 [inner post update] | -| aliasing.cpp:175:16:175:17 | s2 [post update] [s, m1] | aliasing.cpp:176:8:176:9 | s2 [s, m1] | -| aliasing.cpp:175:19:175:19 | s [post update] [m1] | aliasing.cpp:175:16:175:17 | s2 [post update] [s, m1] | -| aliasing.cpp:175:21:175:22 | m1 [inner post update] | aliasing.cpp:175:19:175:19 | s [post update] [m1] | -| aliasing.cpp:176:8:176:9 | s2 [s, m1] | aliasing.cpp:176:11:176:11 | s [m1] | -| aliasing.cpp:176:11:176:11 | s [m1] | aliasing.cpp:176:13:176:14 | m1 | -| aliasing.cpp:187:15:187:22 | ref arg & ... | aliasing.cpp:187:21:187:22 | m1 [inner post update] | -| aliasing.cpp:187:16:187:17 | s2 [post update] [s, m1] | aliasing.cpp:189:8:189:11 | s2_2 [s, m1] | -| aliasing.cpp:187:19:187:19 | s [post update] [m1] | aliasing.cpp:187:16:187:17 | s2 [post update] [s, m1] | -| aliasing.cpp:187:21:187:22 | m1 [inner post update] | aliasing.cpp:187:19:187:19 | s [post update] [m1] | -| aliasing.cpp:189:8:189:11 | s2_2 [s, m1] | aliasing.cpp:189:13:189:13 | s [m1] | -| aliasing.cpp:189:13:189:13 | s [m1] | aliasing.cpp:189:15:189:16 | m1 | -| aliasing.cpp:200:15:200:24 | ref arg & ... | aliasing.cpp:200:23:200:24 | m1 [inner post update] | -| aliasing.cpp:200:16:200:18 | ps2 [post update] [s, m1] | aliasing.cpp:201:8:201:10 | ps2 [s, m1] | -| aliasing.cpp:200:21:200:21 | s [post update] [m1] | aliasing.cpp:200:16:200:18 | ps2 [post update] [s, m1] | -| aliasing.cpp:200:23:200:24 | m1 [inner post update] | aliasing.cpp:200:21:200:21 | s [post update] [m1] | -| aliasing.cpp:201:8:201:10 | ps2 [s, m1] | aliasing.cpp:201:13:201:13 | s [m1] | -| aliasing.cpp:201:13:201:13 | s [m1] | aliasing.cpp:201:15:201:16 | m1 | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:7:8:7:13 | access to array | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:8:8:8:13 | access to array | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:9:8:9:11 | * ... | -| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:10:8:10:15 | * ... | -| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:16:8:16:13 | access to array | -| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:17:8:17:13 | access to array | -| arrays.cpp:36:3:36:3 | o [post update] [nested, arr, data] | arrays.cpp:37:8:37:8 | o [nested, arr, data] | -| arrays.cpp:36:3:36:3 | o [post update] [nested, arr, data] | arrays.cpp:38:8:38:8 | o [nested, arr, data] | -| arrays.cpp:36:3:36:17 | access to array [post update] [data] | arrays.cpp:36:12:36:14 | arr [inner post update] [data] | -| arrays.cpp:36:3:36:37 | ... = ... | arrays.cpp:36:3:36:17 | access to array [post update] [data] | -| arrays.cpp:36:5:36:10 | nested [post update] [arr, data] | arrays.cpp:36:3:36:3 | o [post update] [nested, arr, data] | -| arrays.cpp:36:12:36:14 | arr [inner post update] [data] | arrays.cpp:36:5:36:10 | nested [post update] [arr, data] | -| arrays.cpp:36:26:36:35 | call to user_input | arrays.cpp:36:3:36:37 | ... = ... | -| arrays.cpp:37:8:37:8 | o [nested, arr, data] | arrays.cpp:37:10:37:15 | nested [arr, data] | -| arrays.cpp:37:8:37:8 | o [post update] [nested, arr, data] | arrays.cpp:38:8:38:8 | o [nested, arr, data] | -| arrays.cpp:37:8:37:22 | access to array [data] | arrays.cpp:37:24:37:27 | data | -| arrays.cpp:37:8:37:22 | access to array [data] | arrays.cpp:37:24:37:27 | data | -| arrays.cpp:37:8:37:22 | access to array [post update] [data] | arrays.cpp:37:17:37:19 | arr [inner post update] [data] | -| arrays.cpp:37:10:37:15 | nested [arr, data] | arrays.cpp:37:17:37:19 | arr [data] | -| arrays.cpp:37:10:37:15 | nested [post update] [arr, data] | arrays.cpp:37:8:37:8 | o [post update] [nested, arr, data] | -| arrays.cpp:37:17:37:19 | arr [data] | arrays.cpp:37:8:37:22 | access to array [data] | -| arrays.cpp:37:17:37:19 | arr [inner post update] [data] | arrays.cpp:37:10:37:15 | nested [post update] [arr, data] | -| arrays.cpp:37:24:37:27 | data | arrays.cpp:37:24:37:27 | ref arg data | -| arrays.cpp:37:24:37:27 | data | realistic.cpp:41:17:41:17 | o | -| arrays.cpp:37:24:37:27 | ref arg data | arrays.cpp:37:8:37:22 | access to array [post update] [data] | -| arrays.cpp:38:8:38:8 | o [nested, arr, data] | arrays.cpp:38:10:38:15 | nested [arr, data] | -| arrays.cpp:38:8:38:22 | access to array [data] | arrays.cpp:38:24:38:27 | data | -| arrays.cpp:38:10:38:15 | nested [arr, data] | arrays.cpp:38:17:38:19 | arr [data] | -| arrays.cpp:38:17:38:19 | arr [data] | arrays.cpp:38:8:38:22 | access to array [data] | -| arrays.cpp:42:3:42:3 | o [post update] [indirect, arr, data] | arrays.cpp:43:8:43:8 | o [indirect, arr, data] | -| arrays.cpp:42:3:42:3 | o [post update] [indirect, arr, data] | arrays.cpp:44:8:44:8 | o [indirect, arr, data] | -| arrays.cpp:42:3:42:20 | access to array [post update] [data] | arrays.cpp:42:15:42:17 | arr [inner post update] [data] | -| arrays.cpp:42:3:42:40 | ... = ... | arrays.cpp:42:3:42:20 | access to array [post update] [data] | -| arrays.cpp:42:5:42:12 | indirect [post update] [arr, data] | arrays.cpp:42:3:42:3 | o [post update] [indirect, arr, data] | -| arrays.cpp:42:15:42:17 | arr [inner post update] [data] | arrays.cpp:42:5:42:12 | indirect [post update] [arr, data] | -| arrays.cpp:42:29:42:38 | call to user_input | arrays.cpp:42:3:42:40 | ... = ... | -| arrays.cpp:43:8:43:8 | o [indirect, arr, data] | arrays.cpp:43:10:43:17 | indirect [arr, data] | -| arrays.cpp:43:8:43:8 | o [post update] [indirect, arr, data] | arrays.cpp:44:8:44:8 | o [indirect, arr, data] | -| arrays.cpp:43:8:43:25 | access to array [data] | arrays.cpp:43:27:43:30 | data | -| arrays.cpp:43:8:43:25 | access to array [data] | arrays.cpp:43:27:43:30 | data | -| arrays.cpp:43:8:43:25 | access to array [post update] [data] | arrays.cpp:43:20:43:22 | arr [inner post update] [data] | -| arrays.cpp:43:10:43:17 | indirect [arr, data] | arrays.cpp:43:20:43:22 | arr [data] | -| arrays.cpp:43:10:43:17 | indirect [post update] [arr, data] | arrays.cpp:43:8:43:8 | o [post update] [indirect, arr, data] | -| arrays.cpp:43:20:43:22 | arr [data] | arrays.cpp:43:8:43:25 | access to array [data] | -| arrays.cpp:43:20:43:22 | arr [inner post update] [data] | arrays.cpp:43:10:43:17 | indirect [post update] [arr, data] | -| arrays.cpp:43:27:43:30 | data | arrays.cpp:43:27:43:30 | ref arg data | -| arrays.cpp:43:27:43:30 | data | realistic.cpp:41:17:41:17 | o | -| arrays.cpp:43:27:43:30 | ref arg data | arrays.cpp:43:8:43:25 | access to array [post update] [data] | -| arrays.cpp:44:8:44:8 | o [indirect, arr, data] | arrays.cpp:44:10:44:17 | indirect [arr, data] | -| arrays.cpp:44:8:44:25 | access to array [data] | arrays.cpp:44:27:44:30 | data | -| arrays.cpp:44:10:44:17 | indirect [arr, data] | arrays.cpp:44:20:44:22 | arr [data] | -| arrays.cpp:44:20:44:22 | arr [data] | arrays.cpp:44:8:44:25 | access to array [data] | -| by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:16 | ... = ... | -| by_reference.cpp:12:5:12:5 | s [post update] [a] | by_reference.cpp:11:39:11:39 | s [a] | -| by_reference.cpp:12:5:12:16 | ... = ... | by_reference.cpp:12:5:12:5 | s [post update] [a] | -| by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:19 | ... = ... | -| by_reference.cpp:16:5:16:19 | ... = ... | by_reference.cpp:16:5:16:8 | this [post update] [a] | -| by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:23:20:27 | value | -| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | -| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:20:5:20:8 | ref arg this [a] | -| by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:25:24:29 | value | -| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | -| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:24:19:24:22 | ref arg this [a] | -| by_reference.cpp:31:46:31:46 | s [a] | by_reference.cpp:32:12:32:12 | s [a] | -| by_reference.cpp:32:12:32:12 | s [a] | by_reference.cpp:32:15:32:15 | a | -| by_reference.cpp:35:9:35:19 | this [a] | by_reference.cpp:36:12:36:15 | this [a] | -| by_reference.cpp:36:12:36:15 | this [a] | by_reference.cpp:36:18:36:18 | a | -| by_reference.cpp:39:9:39:21 | this [a] | by_reference.cpp:40:12:40:15 | this [a] | -| by_reference.cpp:40:12:40:15 | this [a] | by_reference.cpp:35:9:35:19 | this [a] | -| by_reference.cpp:40:12:40:15 | this [a] | by_reference.cpp:40:18:40:28 | call to getDirectly | -| by_reference.cpp:43:9:43:27 | this [a] | by_reference.cpp:44:26:44:29 | this [a] | -| by_reference.cpp:44:26:44:29 | this [a] | by_reference.cpp:31:46:31:46 | s [a] | -| by_reference.cpp:44:26:44:29 | this [a] | by_reference.cpp:44:12:44:24 | call to nonMemberGetA | -| by_reference.cpp:50:3:50:3 | ref arg s [a] | by_reference.cpp:51:8:51:8 | s [a] | -| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | -| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:50:3:50:3 | ref arg s [a] | -| by_reference.cpp:51:8:51:8 | s [a] | by_reference.cpp:35:9:35:19 | this [a] | -| by_reference.cpp:51:8:51:8 | s [a] | by_reference.cpp:51:10:51:20 | call to getDirectly | -| by_reference.cpp:56:3:56:3 | ref arg s [a] | by_reference.cpp:57:8:57:8 | s [a] | -| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | -| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:56:3:56:3 | ref arg s [a] | -| by_reference.cpp:57:8:57:8 | s [a] | by_reference.cpp:39:9:39:21 | this [a] | -| by_reference.cpp:57:8:57:8 | s [a] | by_reference.cpp:57:10:57:22 | call to getIndirectly | -| by_reference.cpp:62:3:62:3 | ref arg s [a] | by_reference.cpp:63:8:63:8 | s [a] | -| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | -| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:62:3:62:3 | ref arg s [a] | -| by_reference.cpp:63:8:63:8 | s [a] | by_reference.cpp:43:9:43:27 | this [a] | -| by_reference.cpp:63:8:63:8 | s [a] | by_reference.cpp:63:10:63:28 | call to getThroughNonMember | -| by_reference.cpp:68:17:68:18 | ref arg & ... [a] | by_reference.cpp:69:23:69:23 | s [a] | -| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | -| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:68:17:68:18 | ref arg & ... [a] | -| by_reference.cpp:69:22:69:23 | & ... [a] | by_reference.cpp:31:46:31:46 | s [a] | -| by_reference.cpp:69:22:69:23 | & ... [a] | by_reference.cpp:69:8:69:20 | call to nonMemberGetA | -| by_reference.cpp:69:23:69:23 | s [a] | by_reference.cpp:69:22:69:23 | & ... [a] | -| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:102:21:102:39 | ref arg & ... [a] | -| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | -| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:106:21:106:41 | ref arg & ... [a] | -| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | -| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:83:31:83:35 | inner [a] | -| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:102:21:102:39 | ref arg & ... [a] | -| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | -| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:106:21:106:41 | ref arg & ... [a] | -| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | -| by_reference.cpp:84:3:84:25 | ... = ... | by_reference.cpp:84:3:84:7 | inner [post update] [a] | -| by_reference.cpp:84:14:84:23 | call to user_input | by_reference.cpp:84:3:84:25 | ... = ... | -| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | -| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:123:21:123:36 | ref arg * ... [a] | -| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | -| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:127:21:127:38 | ref arg * ... [a] | -| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:87:31:87:35 | inner [a] | -| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | -| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:123:21:123:36 | ref arg * ... [a] | -| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | -| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:127:21:127:38 | ref arg * ... [a] | -| by_reference.cpp:88:3:88:24 | ... = ... | by_reference.cpp:88:3:88:7 | inner [post update] [a] | -| by_reference.cpp:88:13:88:22 | call to user_input | by_reference.cpp:88:3:88:24 | ... = ... | -| by_reference.cpp:91:25:91:26 | pa | by_reference.cpp:104:15:104:22 | ref arg & ... | -| by_reference.cpp:91:25:91:26 | pa | by_reference.cpp:108:15:108:24 | ref arg & ... | -| by_reference.cpp:92:4:92:5 | pa [inner post update] | by_reference.cpp:104:15:104:22 | ref arg & ... | -| by_reference.cpp:92:4:92:5 | pa [inner post update] | by_reference.cpp:108:15:108:24 | ref arg & ... | -| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:91:25:91:26 | pa | -| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:92:4:92:5 | pa [inner post update] | -| by_reference.cpp:95:25:95:26 | pa | by_reference.cpp:124:21:124:21 | ref arg a | -| by_reference.cpp:95:25:95:26 | pa | by_reference.cpp:128:23:128:23 | ref arg a | -| by_reference.cpp:96:8:96:17 | call to user_input | by_reference.cpp:95:25:95:26 | pa | -| by_reference.cpp:102:21:102:39 | ref arg & ... [a] | by_reference.cpp:102:28:102:39 | inner_nested [inner post update] [a] | -| by_reference.cpp:102:22:102:26 | outer [post update] [inner_nested, a] | by_reference.cpp:110:8:110:12 | outer [inner_nested, a] | -| by_reference.cpp:102:28:102:39 | inner_nested [inner post update] [a] | by_reference.cpp:102:22:102:26 | outer [post update] [inner_nested, a] | -| by_reference.cpp:103:21:103:25 | outer [post update] [inner_ptr, a] | by_reference.cpp:111:8:111:12 | outer [inner_ptr, a] | -| by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | by_reference.cpp:103:21:103:25 | outer [post update] [inner_ptr, a] | -| by_reference.cpp:104:15:104:22 | ref arg & ... | by_reference.cpp:104:22:104:22 | a [inner post update] | -| by_reference.cpp:104:16:104:20 | outer [post update] [a] | by_reference.cpp:112:8:112:12 | outer [a] | -| by_reference.cpp:104:22:104:22 | a [inner post update] | by_reference.cpp:104:16:104:20 | outer [post update] [a] | -| by_reference.cpp:106:21:106:41 | ref arg & ... [a] | by_reference.cpp:106:30:106:41 | inner_nested [inner post update] [a] | -| by_reference.cpp:106:22:106:27 | pouter [post update] [inner_nested, a] | by_reference.cpp:114:8:114:13 | pouter [inner_nested, a] | -| by_reference.cpp:106:30:106:41 | inner_nested [inner post update] [a] | by_reference.cpp:106:22:106:27 | pouter [post update] [inner_nested, a] | -| by_reference.cpp:107:21:107:26 | pouter [post update] [inner_ptr, a] | by_reference.cpp:115:8:115:13 | pouter [inner_ptr, a] | -| by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | by_reference.cpp:107:21:107:26 | pouter [post update] [inner_ptr, a] | -| by_reference.cpp:108:15:108:24 | ref arg & ... | by_reference.cpp:108:24:108:24 | a [inner post update] | -| by_reference.cpp:108:16:108:21 | pouter [post update] [a] | by_reference.cpp:116:8:116:13 | pouter [a] | -| by_reference.cpp:108:24:108:24 | a [inner post update] | by_reference.cpp:108:16:108:21 | pouter [post update] [a] | -| by_reference.cpp:110:8:110:12 | outer [inner_nested, a] | by_reference.cpp:110:14:110:25 | inner_nested [a] | -| by_reference.cpp:110:14:110:25 | inner_nested [a] | by_reference.cpp:110:27:110:27 | a | -| by_reference.cpp:111:8:111:12 | outer [inner_ptr, a] | by_reference.cpp:111:14:111:22 | inner_ptr [a] | -| by_reference.cpp:111:14:111:22 | inner_ptr [a] | by_reference.cpp:111:25:111:25 | a | -| by_reference.cpp:112:8:112:12 | outer [a] | by_reference.cpp:112:14:112:14 | a | -| by_reference.cpp:114:8:114:13 | pouter [inner_nested, a] | by_reference.cpp:114:16:114:27 | inner_nested [a] | -| by_reference.cpp:114:16:114:27 | inner_nested [a] | by_reference.cpp:114:29:114:29 | a | -| by_reference.cpp:115:8:115:13 | pouter [inner_ptr, a] | by_reference.cpp:115:16:115:24 | inner_ptr [a] | -| by_reference.cpp:115:16:115:24 | inner_ptr [a] | by_reference.cpp:115:27:115:27 | a | -| by_reference.cpp:116:8:116:13 | pouter [a] | by_reference.cpp:116:16:116:16 | a | -| by_reference.cpp:122:21:122:25 | outer [post update] [inner_nested, a] | by_reference.cpp:130:8:130:12 | outer [inner_nested, a] | -| by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | by_reference.cpp:122:21:122:25 | outer [post update] [inner_nested, a] | -| by_reference.cpp:123:21:123:36 | ref arg * ... [a] | by_reference.cpp:123:28:123:36 | inner_ptr [inner post update] [a] | -| by_reference.cpp:123:22:123:26 | outer [post update] [inner_ptr, a] | by_reference.cpp:131:8:131:12 | outer [inner_ptr, a] | -| by_reference.cpp:123:28:123:36 | inner_ptr [inner post update] [a] | by_reference.cpp:123:22:123:26 | outer [post update] [inner_ptr, a] | -| by_reference.cpp:124:15:124:19 | outer [post update] [a] | by_reference.cpp:132:8:132:12 | outer [a] | -| by_reference.cpp:124:21:124:21 | ref arg a | by_reference.cpp:124:15:124:19 | outer [post update] [a] | -| by_reference.cpp:126:21:126:26 | pouter [post update] [inner_nested, a] | by_reference.cpp:134:8:134:13 | pouter [inner_nested, a] | -| by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | by_reference.cpp:126:21:126:26 | pouter [post update] [inner_nested, a] | -| by_reference.cpp:127:21:127:38 | ref arg * ... [a] | by_reference.cpp:127:30:127:38 | inner_ptr [inner post update] [a] | -| by_reference.cpp:127:22:127:27 | pouter [post update] [inner_ptr, a] | by_reference.cpp:135:8:135:13 | pouter [inner_ptr, a] | -| by_reference.cpp:127:30:127:38 | inner_ptr [inner post update] [a] | by_reference.cpp:127:22:127:27 | pouter [post update] [inner_ptr, a] | -| by_reference.cpp:128:15:128:20 | pouter [post update] [a] | by_reference.cpp:136:8:136:13 | pouter [a] | -| by_reference.cpp:128:23:128:23 | ref arg a | by_reference.cpp:128:15:128:20 | pouter [post update] [a] | -| by_reference.cpp:130:8:130:12 | outer [inner_nested, a] | by_reference.cpp:130:14:130:25 | inner_nested [a] | -| by_reference.cpp:130:14:130:25 | inner_nested [a] | by_reference.cpp:130:27:130:27 | a | -| by_reference.cpp:131:8:131:12 | outer [inner_ptr, a] | by_reference.cpp:131:14:131:22 | inner_ptr [a] | -| by_reference.cpp:131:14:131:22 | inner_ptr [a] | by_reference.cpp:131:25:131:25 | a | -| by_reference.cpp:132:8:132:12 | outer [a] | by_reference.cpp:132:14:132:14 | a | -| by_reference.cpp:134:8:134:13 | pouter [inner_nested, a] | by_reference.cpp:134:16:134:27 | inner_nested [a] | -| by_reference.cpp:134:16:134:27 | inner_nested [a] | by_reference.cpp:134:29:134:29 | a | -| by_reference.cpp:135:8:135:13 | pouter [inner_ptr, a] | by_reference.cpp:135:16:135:24 | inner_ptr [a] | -| by_reference.cpp:135:16:135:24 | inner_ptr [a] | by_reference.cpp:135:27:135:27 | a | -| by_reference.cpp:136:8:136:13 | pouter [a] | by_reference.cpp:136:16:136:16 | a | -| clearning.cpp:53:4:53:4 | s [post update] [x] | clearning.cpp:55:8:55:8 | s [x] | -| clearning.cpp:53:6:53:6 | x [inner post update] | clearning.cpp:53:4:53:4 | s [post update] [x] | -| clearning.cpp:53:10:53:19 | call to user_input | clearning.cpp:53:6:53:6 | x [inner post update] | -| clearning.cpp:55:8:55:8 | s [x] | clearning.cpp:55:10:55:10 | x | -| clearning.cpp:124:2:124:2 | s [post update] [val] | clearning.cpp:126:7:126:7 | s [val] | -| clearning.cpp:124:2:124:25 | ... = ... | clearning.cpp:124:2:124:2 | s [post update] [val] | -| clearning.cpp:124:10:124:19 | call to user_input | clearning.cpp:124:2:124:25 | ... = ... | -| clearning.cpp:126:7:126:7 | s [val] | clearning.cpp:126:9:126:11 | val | -| clearning.cpp:131:2:131:2 | s [post update] [val] | clearning.cpp:133:7:133:7 | s [val] | -| clearning.cpp:131:2:131:25 | ... = ... | clearning.cpp:131:2:131:2 | s [post update] [val] | -| clearning.cpp:131:10:131:19 | call to user_input | clearning.cpp:131:2:131:25 | ... = ... | -| clearning.cpp:133:7:133:7 | s [val] | clearning.cpp:133:9:133:11 | val | -| clearning.cpp:138:2:138:2 | s [post update] [val] | clearning.cpp:140:7:140:7 | s [val] | -| clearning.cpp:138:2:138:25 | ... = ... | clearning.cpp:138:2:138:2 | s [post update] [val] | -| clearning.cpp:138:10:138:19 | call to user_input | clearning.cpp:138:2:138:25 | ... = ... | -| clearning.cpp:140:7:140:7 | s [val] | clearning.cpp:140:9:140:11 | val | -| clearning.cpp:151:3:151:3 | s [post update] [val] | clearning.cpp:152:8:152:8 | s [val] | -| clearning.cpp:151:3:151:22 | ... = ... | clearning.cpp:151:3:151:3 | s [post update] [val] | -| clearning.cpp:151:11:151:20 | call to user_input | clearning.cpp:151:3:151:22 | ... = ... | -| clearning.cpp:152:8:152:8 | s [val] | clearning.cpp:152:10:152:12 | val | -| clearning.cpp:157:3:157:3 | s [post update] [val] | clearning.cpp:159:8:159:8 | s [val] | -| clearning.cpp:157:3:157:22 | ... = ... | clearning.cpp:157:3:157:3 | s [post update] [val] | -| clearning.cpp:157:11:157:20 | call to user_input | clearning.cpp:157:3:157:22 | ... = ... | -| clearning.cpp:159:8:159:8 | s [val] | clearning.cpp:159:10:159:12 | val | -| clearning.cpp:164:3:164:3 | s [post update] [val] | clearning.cpp:166:8:166:8 | s [val] | -| clearning.cpp:164:3:164:22 | ... = ... | clearning.cpp:164:3:164:3 | s [post update] [val] | -| clearning.cpp:164:11:164:20 | call to user_input | clearning.cpp:164:3:164:22 | ... = ... | -| clearning.cpp:166:8:166:8 | s [val] | clearning.cpp:166:10:166:12 | val | -| clearning.cpp:171:3:171:3 | s [post update] [val] | clearning.cpp:173:8:173:8 | s [val] | -| clearning.cpp:171:3:171:22 | ... = ... | clearning.cpp:171:3:171:3 | s [post update] [val] | -| clearning.cpp:171:11:171:20 | call to user_input | clearning.cpp:171:3:171:22 | ... = ... | -| clearning.cpp:173:8:173:8 | s [val] | clearning.cpp:173:10:173:12 | val | -| clearning.cpp:178:3:178:3 | s [post update] [val] | clearning.cpp:180:8:180:8 | s [val] | -| clearning.cpp:178:3:178:22 | ... = ... | clearning.cpp:178:3:178:3 | s [post update] [val] | -| clearning.cpp:178:11:178:20 | call to user_input | clearning.cpp:178:3:178:22 | ... = ... | -| clearning.cpp:180:8:180:8 | s [val] | clearning.cpp:180:10:180:12 | val | -| complex.cpp:9:7:9:7 | this [a_] | complex.cpp:9:20:9:21 | this [a_] | -| complex.cpp:9:20:9:21 | this [a_] | complex.cpp:9:20:9:21 | a_ | -| complex.cpp:10:7:10:7 | this [b_] | complex.cpp:10:20:10:21 | this [b_] | -| complex.cpp:10:20:10:21 | this [b_] | complex.cpp:10:20:10:21 | b_ | -| complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:27 | ... = ... | -| complex.cpp:11:22:11:27 | ... = ... | complex.cpp:11:22:11:23 | this [post update] [a_] | -| complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:27 | ... = ... | -| complex.cpp:12:22:12:27 | ... = ... | complex.cpp:12:22:12:23 | this [post update] [b_] | -| complex.cpp:40:17:40:17 | b [inner, f, a_] | complex.cpp:42:8:42:8 | b [inner, f, a_] | -| complex.cpp:40:17:40:17 | b [inner, f, b_] | complex.cpp:43:8:43:8 | b [inner, f, b_] | -| complex.cpp:42:8:42:8 | b [inner, f, a_] | complex.cpp:42:10:42:14 | inner [f, a_] | -| complex.cpp:42:10:42:14 | inner [f, a_] | complex.cpp:42:16:42:16 | f [a_] | -| complex.cpp:42:16:42:16 | f [a_] | complex.cpp:9:7:9:7 | this [a_] | -| complex.cpp:42:16:42:16 | f [a_] | complex.cpp:42:18:42:18 | call to a | -| complex.cpp:43:8:43:8 | b [inner, f, b_] | complex.cpp:43:10:43:14 | inner [f, b_] | -| complex.cpp:43:10:43:14 | inner [f, b_] | complex.cpp:43:16:43:16 | f [b_] | -| complex.cpp:43:16:43:16 | f [b_] | complex.cpp:10:7:10:7 | this [b_] | -| complex.cpp:43:16:43:16 | f [b_] | complex.cpp:43:18:43:18 | call to b | -| complex.cpp:53:3:53:4 | b1 [post update] [inner, f, a_] | complex.cpp:59:7:59:8 | b1 [inner, f, a_] | -| complex.cpp:53:6:53:10 | inner [post update] [f, a_] | complex.cpp:53:3:53:4 | b1 [post update] [inner, f, a_] | -| complex.cpp:53:12:53:12 | ref arg f [a_] | complex.cpp:53:6:53:10 | inner [post update] [f, a_] | -| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | -| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:53:12:53:12 | ref arg f [a_] | -| complex.cpp:54:3:54:4 | b2 [post update] [inner, f, b_] | complex.cpp:62:7:62:8 | b2 [inner, f, b_] | -| complex.cpp:54:6:54:10 | inner [post update] [f, b_] | complex.cpp:54:3:54:4 | b2 [post update] [inner, f, b_] | -| complex.cpp:54:12:54:12 | ref arg f [b_] | complex.cpp:54:6:54:10 | inner [post update] [f, b_] | -| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | -| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:54:12:54:12 | ref arg f [b_] | -| complex.cpp:55:3:55:4 | b3 [post update] [inner, f, a_] | complex.cpp:65:7:65:8 | b3 [inner, f, a_] | -| complex.cpp:55:6:55:10 | inner [post update] [f, a_] | complex.cpp:55:3:55:4 | b3 [post update] [inner, f, a_] | -| complex.cpp:55:12:55:12 | ref arg f [a_] | complex.cpp:55:6:55:10 | inner [post update] [f, a_] | -| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | -| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:55:12:55:12 | ref arg f [a_] | -| complex.cpp:56:3:56:4 | b3 [post update] [inner, f, b_] | complex.cpp:65:7:65:8 | b3 [inner, f, b_] | -| complex.cpp:56:6:56:10 | inner [post update] [f, b_] | complex.cpp:56:3:56:4 | b3 [post update] [inner, f, b_] | -| complex.cpp:56:12:56:12 | ref arg f [b_] | complex.cpp:56:6:56:10 | inner [post update] [f, b_] | -| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | -| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:56:12:56:12 | ref arg f [b_] | -| complex.cpp:59:7:59:8 | b1 [inner, f, a_] | complex.cpp:40:17:40:17 | b [inner, f, a_] | -| complex.cpp:62:7:62:8 | b2 [inner, f, b_] | complex.cpp:40:17:40:17 | b [inner, f, b_] | -| complex.cpp:65:7:65:8 | b3 [inner, f, a_] | complex.cpp:40:17:40:17 | b [inner, f, a_] | -| complex.cpp:65:7:65:8 | b3 [inner, f, b_] | complex.cpp:40:17:40:17 | b [inner, f, b_] | -| conflated.cpp:19:19:19:21 | ref arg raw | conflated.cpp:20:8:20:10 | raw | -| conflated.cpp:29:3:29:4 | pa [post update] [x] | conflated.cpp:30:8:30:9 | pa [x] | -| conflated.cpp:29:3:29:22 | ... = ... | conflated.cpp:29:3:29:4 | pa [post update] [x] | -| conflated.cpp:29:11:29:20 | call to user_input | conflated.cpp:29:3:29:22 | ... = ... | -| conflated.cpp:30:8:30:9 | pa [x] | conflated.cpp:30:12:30:12 | x | -| conflated.cpp:36:3:36:4 | pa [post update] [x] | conflated.cpp:37:8:37:9 | pa [x] | -| conflated.cpp:36:3:36:22 | ... = ... | conflated.cpp:36:3:36:4 | pa [post update] [x] | -| conflated.cpp:36:11:36:20 | call to user_input | conflated.cpp:36:3:36:22 | ... = ... | -| conflated.cpp:37:8:37:9 | pa [x] | conflated.cpp:37:12:37:12 | x | -| conflated.cpp:54:3:54:4 | ll [post update] [next, y] | conflated.cpp:55:8:55:9 | ll [next, y] | -| conflated.cpp:54:3:54:28 | ... = ... | conflated.cpp:54:7:54:10 | next [post update] [y] | -| conflated.cpp:54:7:54:10 | next [post update] [y] | conflated.cpp:54:3:54:4 | ll [post update] [next, y] | -| conflated.cpp:54:17:54:26 | call to user_input | conflated.cpp:54:3:54:28 | ... = ... | -| conflated.cpp:55:8:55:9 | ll [next, y] | conflated.cpp:55:12:55:15 | next [y] | -| conflated.cpp:55:12:55:15 | next [y] | conflated.cpp:55:18:55:18 | y | -| conflated.cpp:60:3:60:4 | ll [post update] [next, y] | conflated.cpp:61:8:61:9 | ll [next, y] | -| conflated.cpp:60:3:60:28 | ... = ... | conflated.cpp:60:7:60:10 | next [post update] [y] | -| conflated.cpp:60:7:60:10 | next [post update] [y] | conflated.cpp:60:3:60:4 | ll [post update] [next, y] | -| conflated.cpp:60:17:60:26 | call to user_input | conflated.cpp:60:3:60:28 | ... = ... | -| conflated.cpp:61:8:61:9 | ll [next, y] | conflated.cpp:61:12:61:15 | next [y] | -| conflated.cpp:61:12:61:15 | next [y] | conflated.cpp:61:18:61:18 | y | -| constructors.cpp:18:9:18:9 | this [a_] | constructors.cpp:18:22:18:23 | this [a_] | -| constructors.cpp:18:22:18:23 | this [a_] | constructors.cpp:18:22:18:23 | a_ | -| constructors.cpp:19:9:19:9 | this [b_] | constructors.cpp:19:22:19:23 | this [b_] | -| constructors.cpp:19:22:19:23 | this [b_] | constructors.cpp:19:22:19:23 | b_ | -| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | a | -| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | b | -| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:25:23:29 | constructor init of field a_ [post-this] [a_] | -| constructors.cpp:23:35:23:35 | b | constructors.cpp:23:32:23:36 | constructor init of field b_ [post-this] [b_] | -| constructors.cpp:26:15:26:15 | f [a_] | constructors.cpp:28:10:28:10 | f [a_] | -| constructors.cpp:26:15:26:15 | f [b_] | constructors.cpp:29:10:29:10 | f [b_] | -| constructors.cpp:28:10:28:10 | f [a_] | constructors.cpp:18:9:18:9 | this [a_] | -| constructors.cpp:28:10:28:10 | f [a_] | constructors.cpp:28:12:28:12 | call to a | -| constructors.cpp:29:10:29:10 | f [b_] | constructors.cpp:19:9:19:9 | this [b_] | -| constructors.cpp:29:10:29:10 | f [b_] | constructors.cpp:29:12:29:12 | call to b | -| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | -| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:34:11:34:26 | call to Foo [a_] | -| constructors.cpp:34:11:34:26 | call to Foo [a_] | constructors.cpp:40:9:40:9 | f [a_] | -| constructors.cpp:35:11:35:26 | call to Foo [b_] | constructors.cpp:43:9:43:9 | g [b_] | -| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | -| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:35:11:35:26 | call to Foo [b_] | -| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | -| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:36:11:36:37 | call to Foo [a_] | -| constructors.cpp:36:11:36:37 | call to Foo [a_] | constructors.cpp:46:9:46:9 | h [a_] | -| constructors.cpp:36:11:36:37 | call to Foo [b_] | constructors.cpp:46:9:46:9 | h [b_] | -| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | -| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:36:11:36:37 | call to Foo [b_] | -| constructors.cpp:40:9:40:9 | f [a_] | constructors.cpp:26:15:26:15 | f [a_] | -| constructors.cpp:43:9:43:9 | g [b_] | constructors.cpp:26:15:26:15 | f [b_] | -| constructors.cpp:46:9:46:9 | h [a_] | constructors.cpp:26:15:26:15 | f [a_] | -| constructors.cpp:46:9:46:9 | h [b_] | constructors.cpp:26:15:26:15 | f [b_] | -| qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:44 | ... = ... | -| qualifiers.cpp:9:30:9:44 | ... = ... | qualifiers.cpp:9:30:9:33 | this [post update] [a] | -| qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:64 | ... = ... | -| qualifiers.cpp:12:49:12:53 | inner [post update] [a] | qualifiers.cpp:12:27:12:31 | inner [a] | -| qualifiers.cpp:12:49:12:64 | ... = ... | qualifiers.cpp:12:49:12:53 | inner [post update] [a] | -| qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:65 | ... = ... | -| qualifiers.cpp:13:51:13:55 | inner [post update] [a] | qualifiers.cpp:13:29:13:33 | inner [a] | -| qualifiers.cpp:13:51:13:65 | ... = ... | qualifiers.cpp:13:51:13:55 | inner [post update] [a] | -| qualifiers.cpp:22:5:22:9 | ref arg outer [inner, a] | qualifiers.cpp:23:10:23:14 | outer [inner, a] | -| qualifiers.cpp:22:5:22:38 | ... = ... | qualifiers.cpp:22:11:22:18 | call to getInner [post update] [a] | -| qualifiers.cpp:22:11:22:18 | call to getInner [post update] [a] | qualifiers.cpp:22:5:22:9 | ref arg outer [inner, a] | -| qualifiers.cpp:22:27:22:36 | call to user_input | qualifiers.cpp:22:5:22:38 | ... = ... | -| qualifiers.cpp:23:10:23:14 | outer [inner, a] | qualifiers.cpp:23:16:23:20 | inner [a] | -| qualifiers.cpp:23:16:23:20 | inner [a] | qualifiers.cpp:23:23:23:23 | a | -| qualifiers.cpp:27:5:27:9 | ref arg outer [inner, a] | qualifiers.cpp:28:10:28:14 | outer [inner, a] | -| qualifiers.cpp:27:11:27:18 | ref arg call to getInner [a] | qualifiers.cpp:27:5:27:9 | ref arg outer [inner, a] | -| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | -| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:27:11:27:18 | ref arg call to getInner [a] | -| qualifiers.cpp:28:10:28:14 | outer [inner, a] | qualifiers.cpp:28:16:28:20 | inner [a] | -| qualifiers.cpp:28:16:28:20 | inner [a] | qualifiers.cpp:28:23:28:23 | a | -| qualifiers.cpp:32:17:32:21 | ref arg outer [inner, a] | qualifiers.cpp:33:10:33:14 | outer [inner, a] | -| qualifiers.cpp:32:23:32:30 | ref arg call to getInner [a] | qualifiers.cpp:32:17:32:21 | ref arg outer [inner, a] | -| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | -| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:32:23:32:30 | ref arg call to getInner [a] | -| qualifiers.cpp:33:10:33:14 | outer [inner, a] | qualifiers.cpp:33:16:33:20 | inner [a] | -| qualifiers.cpp:33:16:33:20 | inner [a] | qualifiers.cpp:33:23:33:23 | a | -| qualifiers.cpp:37:19:37:35 | ref arg * ... [a] | qualifiers.cpp:37:26:37:33 | call to getInner [inner post update] [a] | -| qualifiers.cpp:37:20:37:24 | ref arg outer [inner, a] | qualifiers.cpp:38:10:38:14 | outer [inner, a] | -| qualifiers.cpp:37:26:37:33 | call to getInner [inner post update] [a] | qualifiers.cpp:37:20:37:24 | ref arg outer [inner, a] | -| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | -| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:37:19:37:35 | ref arg * ... [a] | -| qualifiers.cpp:38:10:38:14 | outer [inner, a] | qualifiers.cpp:38:16:38:20 | inner [a] | -| qualifiers.cpp:38:16:38:20 | inner [a] | qualifiers.cpp:38:23:38:23 | a | -| qualifiers.cpp:42:5:42:40 | ... = ... | qualifiers.cpp:42:6:42:22 | * ... [post update] [a] | -| qualifiers.cpp:42:6:42:22 | * ... [post update] [a] | qualifiers.cpp:42:13:42:20 | call to getInner [inner post update] [a] | -| qualifiers.cpp:42:7:42:11 | ref arg outer [inner, a] | qualifiers.cpp:43:10:43:14 | outer [inner, a] | -| qualifiers.cpp:42:13:42:20 | call to getInner [inner post update] [a] | qualifiers.cpp:42:7:42:11 | ref arg outer [inner, a] | -| qualifiers.cpp:42:29:42:38 | call to user_input | qualifiers.cpp:42:5:42:40 | ... = ... | -| qualifiers.cpp:43:10:43:14 | outer [inner, a] | qualifiers.cpp:43:16:43:20 | inner [a] | -| qualifiers.cpp:43:16:43:20 | inner [a] | qualifiers.cpp:43:23:43:23 | a | -| qualifiers.cpp:47:5:47:42 | ... = ... | qualifiers.cpp:47:15:47:22 | call to getInner [post update] [a] | -| qualifiers.cpp:47:6:47:11 | ref arg & ... [inner, a] | qualifiers.cpp:48:10:48:14 | outer [inner, a] | -| qualifiers.cpp:47:15:47:22 | call to getInner [post update] [a] | qualifiers.cpp:47:6:47:11 | ref arg & ... [inner, a] | -| qualifiers.cpp:47:31:47:40 | call to user_input | qualifiers.cpp:47:5:47:42 | ... = ... | -| qualifiers.cpp:48:10:48:14 | outer [inner, a] | qualifiers.cpp:48:16:48:20 | inner [a] | -| qualifiers.cpp:48:16:48:20 | inner [a] | qualifiers.cpp:48:23:48:23 | a | -| realistic.cpp:41:17:41:17 | o | realistic.cpp:41:17:41:17 | o | -| realistic.cpp:53:9:53:11 | foo [post update] [bar, baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | foo [bar, baz, userInput, bufferLen] | -| realistic.cpp:53:9:53:18 | access to array [post update] [baz, userInput, bufferLen] | realistic.cpp:53:13:53:15 | bar [inner post update] [baz, userInput, bufferLen] | -| realistic.cpp:53:9:53:66 | ... = ... | realistic.cpp:53:25:53:33 | userInput [post update] [bufferLen] | -| realistic.cpp:53:13:53:15 | bar [inner post update] [baz, userInput, bufferLen] | realistic.cpp:53:9:53:11 | foo [post update] [bar, baz, userInput, bufferLen] | -| realistic.cpp:53:20:53:22 | baz [post update] [userInput, bufferLen] | realistic.cpp:53:9:53:18 | access to array [post update] [baz, userInput, bufferLen] | -| realistic.cpp:53:25:53:33 | userInput [post update] [bufferLen] | realistic.cpp:53:20:53:22 | baz [post update] [userInput, bufferLen] | -| realistic.cpp:53:55:53:64 | call to user_input | realistic.cpp:53:9:53:66 | ... = ... | -| realistic.cpp:61:21:61:23 | foo [bar, baz, userInput, bufferLen] | realistic.cpp:61:25:61:27 | bar [baz, userInput, bufferLen] | -| realistic.cpp:61:21:61:23 | foo [post update] [bar, baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | foo [bar, baz, userInput, bufferLen] | -| realistic.cpp:61:21:61:30 | access to array [baz, userInput, bufferLen] | realistic.cpp:61:32:61:34 | baz [userInput, bufferLen] | -| realistic.cpp:61:21:61:30 | access to array [post update] [baz, userInput, bufferLen] | realistic.cpp:61:25:61:27 | bar [inner post update] [baz, userInput, bufferLen] | -| realistic.cpp:61:25:61:27 | bar [baz, userInput, bufferLen] | realistic.cpp:61:21:61:30 | access to array [baz, userInput, bufferLen] | -| realistic.cpp:61:25:61:27 | bar [inner post update] [baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | foo [post update] [bar, baz, userInput, bufferLen] | -| realistic.cpp:61:32:61:34 | baz [post update] [userInput, bufferLen] | realistic.cpp:61:21:61:30 | access to array [post update] [baz, userInput, bufferLen] | -| realistic.cpp:61:32:61:34 | baz [userInput, bufferLen] | realistic.cpp:61:37:61:45 | userInput [bufferLen] | -| realistic.cpp:61:37:61:45 | userInput [bufferLen] | realistic.cpp:61:47:61:55 | bufferLen | -| realistic.cpp:61:37:61:45 | userInput [bufferLen] | realistic.cpp:61:47:61:55 | bufferLen | -| realistic.cpp:61:37:61:45 | userInput [post update] [bufferLen] | realistic.cpp:61:32:61:34 | baz [post update] [userInput, bufferLen] | -| realistic.cpp:61:47:61:55 | bufferLen | realistic.cpp:41:17:41:17 | o | -| realistic.cpp:61:47:61:55 | bufferLen | realistic.cpp:61:47:61:55 | ref arg bufferLen | -| realistic.cpp:61:47:61:55 | ref arg bufferLen | realistic.cpp:61:37:61:45 | userInput [post update] [bufferLen] | -| simple.cpp:18:9:18:9 | this [a_] | simple.cpp:18:22:18:23 | this [a_] | -| simple.cpp:18:22:18:23 | this [a_] | simple.cpp:18:22:18:23 | a_ | -| simple.cpp:19:9:19:9 | this [b_] | simple.cpp:19:22:19:23 | this [b_] | -| simple.cpp:19:22:19:23 | this [b_] | simple.cpp:19:22:19:23 | b_ | -| simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:29 | ... = ... | -| simple.cpp:20:24:20:29 | ... = ... | simple.cpp:20:24:20:25 | this [post update] [a_] | -| simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:29 | ... = ... | -| simple.cpp:21:24:21:29 | ... = ... | simple.cpp:21:24:21:25 | this [post update] [b_] | -| simple.cpp:26:15:26:15 | f [a_] | simple.cpp:28:10:28:10 | f [a_] | -| simple.cpp:26:15:26:15 | f [b_] | simple.cpp:29:10:29:10 | f [b_] | -| simple.cpp:28:10:28:10 | f [a_] | simple.cpp:18:9:18:9 | this [a_] | -| simple.cpp:28:10:28:10 | f [a_] | simple.cpp:28:12:28:12 | call to a | -| simple.cpp:29:10:29:10 | f [b_] | simple.cpp:19:9:19:9 | this [b_] | -| simple.cpp:29:10:29:10 | f [b_] | simple.cpp:29:12:29:12 | call to b | -| simple.cpp:39:5:39:5 | ref arg f [a_] | simple.cpp:45:9:45:9 | f [a_] | -| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | -| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:39:5:39:5 | ref arg f [a_] | -| simple.cpp:40:5:40:5 | ref arg g [b_] | simple.cpp:48:9:48:9 | g [b_] | -| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | -| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:40:5:40:5 | ref arg g [b_] | -| simple.cpp:41:5:41:5 | ref arg h [a_] | simple.cpp:51:9:51:9 | h [a_] | -| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | -| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:41:5:41:5 | ref arg h [a_] | -| simple.cpp:42:5:42:5 | ref arg h [b_] | simple.cpp:51:9:51:9 | h [b_] | -| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | -| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:42:5:42:5 | ref arg h [b_] | -| simple.cpp:45:9:45:9 | f [a_] | simple.cpp:26:15:26:15 | f [a_] | -| simple.cpp:48:9:48:9 | g [b_] | simple.cpp:26:15:26:15 | f [b_] | -| simple.cpp:51:9:51:9 | h [a_] | simple.cpp:26:15:26:15 | f [a_] | -| simple.cpp:51:9:51:9 | h [b_] | simple.cpp:26:15:26:15 | f [b_] | -| simple.cpp:65:5:65:5 | a [post update] [i] | simple.cpp:67:10:67:11 | a2 [i] | -| simple.cpp:65:5:65:22 | ... = ... | simple.cpp:65:5:65:5 | a [post update] [i] | -| simple.cpp:65:11:65:20 | call to user_input | simple.cpp:65:5:65:22 | ... = ... | -| simple.cpp:67:10:67:11 | a2 [i] | simple.cpp:67:13:67:13 | i | -| simple.cpp:78:9:78:15 | this [f2, f1] | simple.cpp:79:16:79:17 | this [f2, f1] | -| simple.cpp:79:16:79:17 | f2 [f1] | simple.cpp:79:19:79:20 | f1 | -| simple.cpp:79:16:79:17 | this [f2, f1] | simple.cpp:79:16:79:17 | f2 [f1] | -| simple.cpp:83:9:83:10 | f2 [post update] [f1] | simple.cpp:83:9:83:10 | this [post update] [f2, f1] | -| simple.cpp:83:9:83:10 | this [post update] [f2, f1] | simple.cpp:84:14:84:20 | this [f2, f1] | -| simple.cpp:83:9:83:28 | ... = ... | simple.cpp:83:9:83:10 | f2 [post update] [f1] | -| simple.cpp:83:17:83:26 | call to user_input | simple.cpp:83:9:83:28 | ... = ... | -| simple.cpp:84:14:84:20 | this [f2, f1] | simple.cpp:78:9:78:15 | this [f2, f1] | -| simple.cpp:84:14:84:20 | this [f2, f1] | simple.cpp:84:14:84:20 | call to getf2f1 | -| simple.cpp:92:5:92:5 | a [post update] [i] | simple.cpp:94:10:94:11 | a2 [i] | -| simple.cpp:92:5:92:22 | ... = ... | simple.cpp:92:5:92:5 | a [post update] [i] | -| simple.cpp:92:11:92:20 | call to user_input | simple.cpp:92:5:92:22 | ... = ... | -| simple.cpp:94:10:94:11 | a2 [i] | simple.cpp:94:13:94:13 | i | -| struct_init.c:14:24:14:25 | ab [a] | struct_init.c:14:24:14:25 | ab [a] | -| struct_init.c:14:24:14:25 | ab [a] | struct_init.c:15:8:15:9 | ab [a] | -| struct_init.c:15:8:15:9 | ab [a] | struct_init.c:15:12:15:12 | a | -| struct_init.c:15:8:15:9 | ab [a] | struct_init.c:15:12:15:12 | a | -| struct_init.c:15:8:15:9 | ab [post update] [a] | struct_init.c:14:24:14:25 | ab [a] | -| struct_init.c:15:12:15:12 | a | realistic.cpp:41:17:41:17 | o | -| struct_init.c:15:12:15:12 | a | struct_init.c:15:12:15:12 | ref arg a | -| struct_init.c:15:12:15:12 | ref arg a | struct_init.c:15:8:15:9 | ab [post update] [a] | -| struct_init.c:20:17:20:36 | {...} [a] | struct_init.c:22:8:22:9 | ab [a] | -| struct_init.c:20:17:20:36 | {...} [a] | struct_init.c:24:11:24:12 | ab [a] | -| struct_init.c:20:17:20:36 | {...} [a] | struct_init.c:28:6:28:7 | ab [a] | -| struct_init.c:20:20:20:29 | call to user_input | struct_init.c:20:17:20:36 | {...} [a] | -| struct_init.c:22:8:22:9 | ab [a] | struct_init.c:22:11:22:11 | a | -| struct_init.c:22:8:22:9 | ab [a] | struct_init.c:22:11:22:11 | a | -| struct_init.c:22:8:22:9 | ab [post update] [a] | struct_init.c:24:11:24:12 | ab [a] | -| struct_init.c:22:8:22:9 | ab [post update] [a] | struct_init.c:28:6:28:7 | ab [a] | -| struct_init.c:22:11:22:11 | a | realistic.cpp:41:17:41:17 | o | -| struct_init.c:22:11:22:11 | a | struct_init.c:22:11:22:11 | ref arg a | -| struct_init.c:22:11:22:11 | ref arg a | struct_init.c:22:8:22:9 | ab [post update] [a] | -| struct_init.c:24:10:24:12 | & ... [a] | struct_init.c:14:24:14:25 | ab [a] | -| struct_init.c:24:10:24:12 | & ... [a] | struct_init.c:24:10:24:12 | ref arg & ... [a] | -| struct_init.c:24:10:24:12 | ref arg & ... [a] | struct_init.c:28:6:28:7 | ab [a] | -| struct_init.c:24:11:24:12 | ab [a] | struct_init.c:24:10:24:12 | & ... [a] | -| struct_init.c:26:23:29:3 | {...} [nestedAB, a] | struct_init.c:31:8:31:12 | outer [nestedAB, a] | -| struct_init.c:26:23:29:3 | {...} [nestedAB, a] | struct_init.c:36:11:36:15 | outer [nestedAB, a] | -| struct_init.c:26:23:29:3 | {...} [pointerAB, a] | struct_init.c:33:8:33:12 | outer [pointerAB, a] | -| struct_init.c:27:5:27:23 | {...} [a] | struct_init.c:26:23:29:3 | {...} [nestedAB, a] | -| struct_init.c:27:7:27:16 | call to user_input | struct_init.c:27:5:27:23 | {...} [a] | -| struct_init.c:28:5:28:7 | & ... [a] | struct_init.c:26:23:29:3 | {...} [pointerAB, a] | -| struct_init.c:28:6:28:7 | ab [a] | struct_init.c:28:5:28:7 | & ... [a] | -| struct_init.c:31:8:31:12 | outer [nestedAB, a] | struct_init.c:31:14:31:21 | nestedAB [a] | -| struct_init.c:31:8:31:12 | outer [post update] [nestedAB, a] | struct_init.c:36:11:36:15 | outer [nestedAB, a] | -| struct_init.c:31:14:31:21 | nestedAB [a] | struct_init.c:31:23:31:23 | a | -| struct_init.c:31:14:31:21 | nestedAB [a] | struct_init.c:31:23:31:23 | a | -| struct_init.c:31:14:31:21 | nestedAB [post update] [a] | struct_init.c:31:8:31:12 | outer [post update] [nestedAB, a] | -| struct_init.c:31:23:31:23 | a | realistic.cpp:41:17:41:17 | o | -| struct_init.c:31:23:31:23 | a | struct_init.c:31:23:31:23 | ref arg a | -| struct_init.c:31:23:31:23 | ref arg a | struct_init.c:31:14:31:21 | nestedAB [post update] [a] | -| struct_init.c:33:8:33:12 | outer [pointerAB, a] | struct_init.c:33:14:33:22 | pointerAB [a] | -| struct_init.c:33:14:33:22 | pointerAB [a] | struct_init.c:33:25:33:25 | a | -| struct_init.c:36:10:36:24 | & ... [a] | struct_init.c:14:24:14:25 | ab [a] | -| struct_init.c:36:11:36:15 | outer [nestedAB, a] | struct_init.c:36:17:36:24 | nestedAB [a] | -| struct_init.c:36:17:36:24 | nestedAB [a] | struct_init.c:36:10:36:24 | & ... [a] | -| struct_init.c:40:17:40:36 | {...} [a] | struct_init.c:43:6:43:7 | ab [a] | -| struct_init.c:40:20:40:29 | call to user_input | struct_init.c:40:17:40:36 | {...} [a] | -| struct_init.c:41:23:44:3 | {...} [pointerAB, a] | struct_init.c:46:10:46:14 | outer [pointerAB, a] | -| struct_init.c:43:5:43:7 | & ... [a] | struct_init.c:41:23:44:3 | {...} [pointerAB, a] | -| struct_init.c:43:6:43:7 | ab [a] | struct_init.c:43:5:43:7 | & ... [a] | -| struct_init.c:46:10:46:14 | outer [pointerAB, a] | struct_init.c:46:16:46:24 | pointerAB [a] | -| struct_init.c:46:16:46:24 | pointerAB [a] | struct_init.c:14:24:14:25 | ab [a] | +| A.cpp:23:10:23:10 | c | A.cpp:25:7:25:17 | ... = ... | provenance | | +| A.cpp:25:7:25:17 | ... = ... | A.cpp:25:7:25:10 | this [post update] [c] | provenance | | +| A.cpp:27:17:27:17 | c | A.cpp:27:22:27:32 | ... = ... | provenance | | +| A.cpp:27:22:27:32 | ... = ... | A.cpp:27:22:27:25 | this [post update] [c] | provenance | | +| A.cpp:28:8:28:10 | this [c] | A.cpp:28:23:28:26 | this [c] | provenance | | +| A.cpp:28:23:28:26 | this [c] | A.cpp:28:29:28:29 | c | provenance | | +| A.cpp:29:23:29:23 | c | A.cpp:31:20:31:20 | c | provenance | | +| A.cpp:31:14:31:21 | call to B [c] | A.cpp:31:14:31:21 | new [c] | provenance | | +| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | provenance | | +| A.cpp:31:20:31:20 | c | A.cpp:31:14:31:21 | call to B [c] | provenance | | +| A.cpp:41:5:41:6 | ref arg ct | A.cpp:43:11:43:12 | ct | provenance | | +| A.cpp:41:15:41:21 | new | A.cpp:41:5:41:6 | ref arg ct | provenance | | +| A.cpp:43:11:43:12 | ct | A.cpp:43:10:43:12 | & ... | provenance | | +| A.cpp:47:12:47:18 | new | A.cpp:48:20:48:20 | c | provenance | | +| A.cpp:48:12:48:18 | call to make [c] | A.cpp:49:10:49:10 | b [c] | provenance | | +| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c | provenance | | +| A.cpp:48:20:48:20 | c | A.cpp:48:12:48:18 | call to make [c] | provenance | | +| A.cpp:49:10:49:10 | b [c] | A.cpp:49:13:49:13 | c | provenance | | +| A.cpp:55:5:55:5 | ref arg b [c] | A.cpp:56:10:56:10 | b [c] | provenance | | +| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | provenance | | +| A.cpp:55:12:55:19 | new | A.cpp:55:5:55:5 | ref arg b [c] | provenance | | +| A.cpp:56:10:56:10 | b [c] | A.cpp:28:8:28:10 | this [c] | provenance | | +| A.cpp:56:10:56:10 | b [c] | A.cpp:56:13:56:15 | call to get | provenance | | +| A.cpp:57:11:57:24 | call to B [c] | A.cpp:57:11:57:24 | new [c] | provenance | | +| A.cpp:57:11:57:24 | new [c] | A.cpp:28:8:28:10 | this [c] | provenance | | +| A.cpp:57:11:57:24 | new [c] | A.cpp:57:28:57:30 | call to get | provenance | | +| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | provenance | | +| A.cpp:57:17:57:23 | new | A.cpp:57:11:57:24 | call to B [c] | provenance | | +| A.cpp:64:10:64:15 | call to setOnB [c] | A.cpp:66:10:66:11 | b2 [c] | provenance | | +| A.cpp:64:21:64:28 | new | A.cpp:64:10:64:15 | call to setOnB [c] | provenance | | +| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c | provenance | | +| A.cpp:66:10:66:11 | b2 [c] | A.cpp:66:14:66:14 | c | provenance | | +| A.cpp:73:10:73:19 | call to setOnBWrap [c] | A.cpp:75:10:75:11 | b2 [c] | provenance | | +| A.cpp:73:25:73:32 | new | A.cpp:73:10:73:19 | call to setOnBWrap [c] | provenance | | +| A.cpp:73:25:73:32 | new | A.cpp:78:27:78:27 | c | provenance | | +| A.cpp:75:10:75:11 | b2 [c] | A.cpp:75:14:75:14 | c | provenance | | +| A.cpp:78:27:78:27 | c | A.cpp:81:21:81:21 | c | provenance | | +| A.cpp:81:10:81:15 | call to setOnB [c] | A.cpp:82:12:82:24 | ... ? ... : ... [c] | provenance | | +| A.cpp:81:21:81:21 | c | A.cpp:81:10:81:15 | call to setOnB [c] | provenance | | +| A.cpp:81:21:81:21 | c | A.cpp:85:26:85:26 | c | provenance | | +| A.cpp:85:26:85:26 | c | A.cpp:90:15:90:15 | c | provenance | | +| A.cpp:90:7:90:8 | ref arg b2 [c] | A.cpp:91:14:91:15 | b2 [c] | provenance | | +| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | provenance | | +| A.cpp:90:15:90:15 | c | A.cpp:90:7:90:8 | ref arg b2 [c] | provenance | | +| A.cpp:98:12:98:18 | new | A.cpp:100:5:100:13 | ... = ... | provenance | | +| A.cpp:100:5:100:6 | c1 [post update] [a] | A.cpp:101:8:101:9 | c1 [a] | provenance | | +| A.cpp:100:5:100:13 | ... = ... | A.cpp:100:5:100:6 | c1 [post update] [a] | provenance | | +| A.cpp:101:8:101:9 | c1 [a] | A.cpp:103:14:103:14 | c [a] | provenance | | +| A.cpp:103:14:103:14 | c [a] | A.cpp:107:12:107:13 | c1 [a] | provenance | | +| A.cpp:103:14:103:14 | c [a] | A.cpp:120:12:120:13 | c1 [a] | provenance | | +| A.cpp:107:12:107:13 | c1 [a] | A.cpp:107:16:107:16 | a | provenance | | +| A.cpp:120:12:120:13 | c1 [a] | A.cpp:120:16:120:16 | a | provenance | | +| A.cpp:124:14:124:14 | b [c] | A.cpp:131:8:131:8 | ref arg b [c] | provenance | | +| A.cpp:126:5:126:5 | ref arg b [c] | A.cpp:124:14:124:14 | b [c] | provenance | | +| A.cpp:126:5:126:5 | ref arg b [c] | A.cpp:131:8:131:8 | ref arg b [c] | provenance | | +| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | provenance | | +| A.cpp:126:12:126:18 | new | A.cpp:126:5:126:5 | ref arg b [c] | provenance | | +| A.cpp:131:8:131:8 | ref arg b [c] | A.cpp:132:10:132:10 | b [c] | provenance | | +| A.cpp:132:10:132:10 | b [c] | A.cpp:132:13:132:13 | c | provenance | | +| A.cpp:140:13:140:13 | b | A.cpp:143:7:143:31 | ... = ... | provenance | | +| A.cpp:140:13:140:13 | b [c] | A.cpp:151:18:151:18 | ref arg b [c] | provenance | | +| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:140:13:140:13 | b [c] | provenance | | +| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:143:7:143:31 | ... = ... [c] | provenance | | +| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:151:18:151:18 | ref arg b [c] | provenance | | +| A.cpp:142:7:142:20 | ... = ... | A.cpp:142:7:142:7 | b [post update] [c] | provenance | | +| A.cpp:142:14:142:20 | new | A.cpp:142:7:142:20 | ... = ... | provenance | | +| A.cpp:143:7:143:10 | this [post update] [b, c] | A.cpp:151:12:151:24 | call to D [b, c] | provenance | | +| A.cpp:143:7:143:10 | this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] | provenance | | +| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | this [post update] [b] | provenance | | +| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | this [post update] [b] | provenance | | +| A.cpp:143:7:143:31 | ... = ... [c] | A.cpp:143:7:143:10 | this [post update] [b, c] | provenance | | +| A.cpp:143:25:143:31 | new | A.cpp:143:7:143:31 | ... = ... | provenance | | +| A.cpp:150:12:150:18 | new | A.cpp:151:18:151:18 | b | provenance | | +| A.cpp:151:12:151:24 | call to D [b, c] | A.cpp:152:10:152:10 | d [b, c] | provenance | | +| A.cpp:151:12:151:24 | call to D [b, c] | A.cpp:153:10:153:10 | d [b, c] | provenance | | +| A.cpp:151:12:151:24 | call to D [b] | A.cpp:152:10:152:10 | d [b] | provenance | | +| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | provenance | | +| A.cpp:151:18:151:18 | b | A.cpp:151:12:151:24 | call to D [b] | provenance | | +| A.cpp:151:18:151:18 | ref arg b [c] | A.cpp:154:10:154:10 | b [c] | provenance | | +| A.cpp:152:10:152:10 | d [b, c] | A.cpp:152:13:152:13 | b [c] | provenance | | +| A.cpp:152:10:152:10 | d [b] | A.cpp:152:13:152:13 | b | provenance | | +| A.cpp:152:10:152:10 | d [post update] [b, c] | A.cpp:153:10:153:10 | d [b, c] | provenance | | +| A.cpp:152:13:152:13 | b [c] | A.cpp:152:13:152:13 | ref arg b [c] | provenance | | +| A.cpp:152:13:152:13 | b [c] | A.cpp:173:26:173:26 | o [c] | provenance | | +| A.cpp:152:13:152:13 | ref arg b [c] | A.cpp:152:10:152:10 | d [post update] [b, c] | provenance | | +| A.cpp:153:10:153:10 | d [b, c] | A.cpp:153:13:153:13 | b [c] | provenance | | +| A.cpp:153:13:153:13 | b [c] | A.cpp:153:16:153:16 | c | provenance | | +| A.cpp:154:10:154:10 | b [c] | A.cpp:154:13:154:13 | c | provenance | | +| A.cpp:159:12:159:18 | new | A.cpp:160:29:160:29 | b | provenance | | +| A.cpp:160:18:160:60 | call to MyList [head] | A.cpp:161:38:161:39 | l1 [head] | provenance | | +| A.cpp:160:29:160:29 | b | A.cpp:160:18:160:60 | call to MyList [head] | provenance | | +| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | provenance | | +| A.cpp:161:18:161:40 | call to MyList [next, head] | A.cpp:162:38:162:39 | l2 [next, head] | provenance | | +| A.cpp:161:38:161:39 | l1 [head] | A.cpp:161:18:161:40 | call to MyList [next, head] | provenance | | +| A.cpp:161:38:161:39 | l1 [head] | A.cpp:181:32:181:35 | next [head] | provenance | | +| A.cpp:162:18:162:40 | call to MyList [next, next, head] | A.cpp:165:10:165:11 | l3 [next, next, head] | provenance | | +| A.cpp:162:18:162:40 | call to MyList [next, next, head] | A.cpp:167:44:167:44 | l [next, next, head] | provenance | | +| A.cpp:162:38:162:39 | l2 [next, head] | A.cpp:162:18:162:40 | call to MyList [next, next, head] | provenance | | +| A.cpp:162:38:162:39 | l2 [next, head] | A.cpp:181:32:181:35 | next [next, head] | provenance | | +| A.cpp:165:10:165:11 | l3 [next, next, head] | A.cpp:165:14:165:17 | next [next, head] | provenance | | +| A.cpp:165:10:165:11 | l3 [post update] [next, next, head] | A.cpp:167:44:167:44 | l [next, next, head] | provenance | | +| A.cpp:165:14:165:17 | next [next, head] | A.cpp:165:20:165:23 | next [head] | provenance | | +| A.cpp:165:14:165:17 | next [post update] [next, head] | A.cpp:165:10:165:11 | l3 [post update] [next, next, head] | provenance | | +| A.cpp:165:20:165:23 | next [head] | A.cpp:165:26:165:29 | head | provenance | | +| A.cpp:165:20:165:23 | next [head] | A.cpp:165:26:165:29 | head | provenance | | +| A.cpp:165:20:165:23 | next [post update] [head] | A.cpp:165:14:165:17 | next [post update] [next, head] | provenance | | +| A.cpp:165:26:165:29 | head | A.cpp:165:26:165:29 | ref arg head | provenance | | +| A.cpp:165:26:165:29 | head | A.cpp:173:26:173:26 | o | provenance | | +| A.cpp:165:26:165:29 | ref arg head | A.cpp:165:20:165:23 | next [post update] [head] | provenance | | +| A.cpp:167:44:167:44 | l [next, head] | A.cpp:167:47:167:50 | next [head] | provenance | | +| A.cpp:167:44:167:44 | l [next, next, head] | A.cpp:167:47:167:50 | next [next, head] | provenance | | +| A.cpp:167:47:167:50 | next [head] | A.cpp:169:12:169:12 | l [head] | provenance | | +| A.cpp:167:47:167:50 | next [next, head] | A.cpp:167:44:167:44 | l [next, head] | provenance | | +| A.cpp:169:12:169:12 | l [head] | A.cpp:169:15:169:18 | head | provenance | | +| A.cpp:173:26:173:26 | o | A.cpp:173:26:173:26 | o | provenance | | +| A.cpp:173:26:173:26 | o [c] | A.cpp:173:26:173:26 | o [c] | provenance | | +| A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:20 | ... = ... | provenance | | +| A.cpp:181:32:181:35 | next [head] | A.cpp:184:7:184:23 | ... = ... [head] | provenance | | +| A.cpp:181:32:181:35 | next [next, head] | A.cpp:184:7:184:23 | ... = ... [next, head] | provenance | | +| A.cpp:183:7:183:20 | ... = ... | A.cpp:183:7:183:10 | this [post update] [head] | provenance | | +| A.cpp:184:7:184:23 | ... = ... [head] | A.cpp:184:7:184:10 | this [post update] [next, head] | provenance | | +| A.cpp:184:7:184:23 | ... = ... [next, head] | A.cpp:184:7:184:10 | this [post update] [next, next, head] | provenance | | +| B.cpp:6:15:6:24 | new | B.cpp:7:25:7:25 | e | provenance | | +| B.cpp:7:16:7:35 | call to Box1 [elem1] | B.cpp:8:25:8:26 | b1 [elem1] | provenance | | +| B.cpp:7:25:7:25 | e | B.cpp:7:16:7:35 | call to Box1 [elem1] | provenance | | +| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | provenance | | +| B.cpp:8:16:8:27 | call to Box2 [box1, elem1] | B.cpp:9:10:9:11 | b2 [box1, elem1] | provenance | | +| B.cpp:8:25:8:26 | b1 [elem1] | B.cpp:8:16:8:27 | call to Box2 [box1, elem1] | provenance | | +| B.cpp:8:25:8:26 | b1 [elem1] | B.cpp:44:16:44:17 | b1 [elem1] | provenance | | +| B.cpp:9:10:9:11 | b2 [box1, elem1] | B.cpp:9:14:9:17 | box1 [elem1] | provenance | | +| B.cpp:9:14:9:17 | box1 [elem1] | B.cpp:9:20:9:24 | elem1 | provenance | | +| B.cpp:15:15:15:27 | new | B.cpp:16:37:16:37 | e | provenance | | +| B.cpp:16:16:16:38 | call to Box1 [elem2] | B.cpp:17:25:17:26 | b1 [elem2] | provenance | | +| B.cpp:16:37:16:37 | e | B.cpp:16:16:16:38 | call to Box1 [elem2] | provenance | | +| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | provenance | | +| B.cpp:17:16:17:27 | call to Box2 [box1, elem2] | B.cpp:19:10:19:11 | b2 [box1, elem2] | provenance | | +| B.cpp:17:25:17:26 | b1 [elem2] | B.cpp:17:16:17:27 | call to Box2 [box1, elem2] | provenance | | +| B.cpp:17:25:17:26 | b1 [elem2] | B.cpp:44:16:44:17 | b1 [elem2] | provenance | | +| B.cpp:19:10:19:11 | b2 [box1, elem2] | B.cpp:19:14:19:17 | box1 [elem2] | provenance | | +| B.cpp:19:14:19:17 | box1 [elem2] | B.cpp:19:20:19:24 | elem2 | provenance | | +| B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:22 | ... = ... | provenance | | +| B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:22 | ... = ... | provenance | | +| B.cpp:35:7:35:22 | ... = ... | B.cpp:35:7:35:10 | this [post update] [elem1] | provenance | | +| B.cpp:36:7:36:22 | ... = ... | B.cpp:36:7:36:10 | this [post update] [elem2] | provenance | | +| B.cpp:44:16:44:17 | b1 [elem1] | B.cpp:46:7:46:21 | ... = ... [elem1] | provenance | | +| B.cpp:44:16:44:17 | b1 [elem2] | B.cpp:46:7:46:21 | ... = ... [elem2] | provenance | | +| B.cpp:46:7:46:21 | ... = ... [elem1] | B.cpp:46:7:46:10 | this [post update] [box1, elem1] | provenance | | +| B.cpp:46:7:46:21 | ... = ... [elem2] | B.cpp:46:7:46:10 | this [post update] [box1, elem2] | provenance | | +| C.cpp:18:12:18:18 | call to C [s1] | C.cpp:19:5:19:5 | c [s1] | provenance | | +| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:19:5:19:5 | c [s3] | provenance | | +| C.cpp:19:5:19:5 | c [s1] | C.cpp:27:8:27:11 | this [s1] | provenance | | +| C.cpp:19:5:19:5 | c [s3] | C.cpp:27:8:27:11 | this [s3] | provenance | | +| C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | | +| C.cpp:22:12:22:21 | new | C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | provenance | | +| C.cpp:24:5:24:8 | this [post update] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | | +| C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | this [post update] [s3] | provenance | | +| C.cpp:24:16:24:25 | new | C.cpp:24:5:24:25 | ... = ... | provenance | | +| C.cpp:27:8:27:11 | this [s1] | C.cpp:29:10:29:11 | this [s1] | provenance | | +| C.cpp:27:8:27:11 | this [s3] | C.cpp:31:10:31:11 | this [s3] | provenance | | +| C.cpp:29:10:29:11 | this [s1] | C.cpp:29:10:29:11 | s1 | provenance | | +| C.cpp:31:10:31:11 | this [s3] | C.cpp:31:10:31:11 | s3 | provenance | | +| D.cpp:10:11:10:17 | this [elem] | D.cpp:10:30:10:33 | this [elem] | provenance | | +| D.cpp:10:30:10:33 | this [elem] | D.cpp:10:30:10:33 | elem | provenance | | +| D.cpp:11:24:11:24 | e | D.cpp:11:29:11:36 | ... = ... | provenance | | +| D.cpp:11:29:11:36 | ... = ... | D.cpp:11:29:11:32 | this [post update] [elem] | provenance | | +| D.cpp:17:11:17:17 | this [box, elem] | D.cpp:17:30:17:32 | this [box, elem] | provenance | | +| D.cpp:17:30:17:32 | this [box, elem] | D.cpp:17:30:17:32 | box [elem] | provenance | | +| D.cpp:21:30:21:31 | b2 [box, elem] | D.cpp:22:10:22:11 | b2 [box, elem] | provenance | | +| D.cpp:22:10:22:11 | b2 [box, elem] | D.cpp:17:11:17:17 | this [box, elem] | provenance | | +| D.cpp:22:10:22:11 | b2 [box, elem] | D.cpp:22:14:22:20 | call to getBox1 [elem] | provenance | | +| D.cpp:22:14:22:20 | call to getBox1 [elem] | D.cpp:10:11:10:17 | this [elem] | provenance | | +| D.cpp:22:14:22:20 | call to getBox1 [elem] | D.cpp:22:25:22:31 | call to getElem | provenance | | +| D.cpp:28:15:28:24 | new | D.cpp:30:5:30:20 | ... = ... | provenance | | +| D.cpp:30:5:30:5 | b [post update] [box, elem] | D.cpp:31:14:31:14 | b [box, elem] | provenance | | +| D.cpp:30:5:30:20 | ... = ... | D.cpp:30:8:30:10 | box [post update] [elem] | provenance | | +| D.cpp:30:8:30:10 | box [post update] [elem] | D.cpp:30:5:30:5 | b [post update] [box, elem] | provenance | | +| D.cpp:31:14:31:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | provenance | | +| D.cpp:35:15:35:24 | new | D.cpp:37:21:37:21 | e | provenance | | +| D.cpp:37:5:37:5 | b [post update] [box, elem] | D.cpp:38:14:38:14 | b [box, elem] | provenance | | +| D.cpp:37:8:37:10 | ref arg box [elem] | D.cpp:37:5:37:5 | b [post update] [box, elem] | provenance | | +| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | provenance | | +| D.cpp:37:21:37:21 | e | D.cpp:37:8:37:10 | ref arg box [elem] | provenance | | +| D.cpp:38:14:38:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | provenance | | +| D.cpp:42:15:42:24 | new | D.cpp:44:5:44:26 | ... = ... | provenance | | +| D.cpp:44:5:44:5 | ref arg b [box, elem] | D.cpp:45:14:45:14 | b [box, elem] | provenance | | +| D.cpp:44:5:44:26 | ... = ... | D.cpp:44:8:44:14 | call to getBox1 [post update] [elem] | provenance | | +| D.cpp:44:8:44:14 | call to getBox1 [post update] [elem] | D.cpp:44:5:44:5 | ref arg b [box, elem] | provenance | | +| D.cpp:45:14:45:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | provenance | | +| D.cpp:49:15:49:24 | new | D.cpp:51:27:51:27 | e | provenance | | +| D.cpp:51:5:51:5 | ref arg b [box, elem] | D.cpp:52:14:52:14 | b [box, elem] | provenance | | +| D.cpp:51:8:51:14 | ref arg call to getBox1 [elem] | D.cpp:51:5:51:5 | ref arg b [box, elem] | provenance | | +| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | provenance | | +| D.cpp:51:27:51:27 | e | D.cpp:51:8:51:14 | ref arg call to getBox1 [elem] | provenance | | +| D.cpp:52:14:52:14 | b [box, elem] | D.cpp:21:30:21:31 | b2 [box, elem] | provenance | | +| D.cpp:56:15:56:24 | new | D.cpp:58:5:58:27 | ... = ... | provenance | | +| D.cpp:58:5:58:12 | boxfield [post update] [box, elem] | D.cpp:58:5:58:12 | this [post update] [boxfield, box, elem] | provenance | | +| D.cpp:58:5:58:12 | this [post update] [boxfield, box, elem] | D.cpp:59:5:59:7 | this [boxfield, box, elem] | provenance | | +| D.cpp:58:5:58:27 | ... = ... | D.cpp:58:15:58:17 | box [post update] [elem] | provenance | | +| D.cpp:58:15:58:17 | box [post update] [elem] | D.cpp:58:5:58:12 | boxfield [post update] [box, elem] | provenance | | +| D.cpp:59:5:59:7 | this [boxfield, box, elem] | D.cpp:63:8:63:10 | this [boxfield, box, elem] | provenance | | +| D.cpp:63:8:63:10 | this [boxfield, box, elem] | D.cpp:64:10:64:17 | this [boxfield, box, elem] | provenance | | +| D.cpp:64:10:64:17 | boxfield [box, elem] | D.cpp:64:20:64:22 | box [elem] | provenance | | +| D.cpp:64:10:64:17 | this [boxfield, box, elem] | D.cpp:64:10:64:17 | boxfield [box, elem] | provenance | | +| D.cpp:64:20:64:22 | box [elem] | D.cpp:64:25:64:28 | elem | provenance | | +| E.cpp:19:27:19:27 | p [data, buffer] | E.cpp:21:10:21:10 | p [data, buffer] | provenance | | +| E.cpp:21:10:21:10 | p [data, buffer] | E.cpp:21:13:21:16 | data [buffer] | provenance | | +| E.cpp:21:13:21:16 | data [buffer] | E.cpp:21:18:21:23 | buffer | provenance | | +| E.cpp:28:21:28:23 | ref arg raw | E.cpp:31:10:31:12 | raw | provenance | | +| E.cpp:29:21:29:21 | b [post update] [buffer] | E.cpp:32:10:32:10 | b [buffer] | provenance | | +| E.cpp:29:24:29:29 | ref arg buffer | E.cpp:29:21:29:21 | b [post update] [buffer] | provenance | | +| E.cpp:30:21:30:21 | p [post update] [data, buffer] | E.cpp:33:19:33:19 | p [data, buffer] | provenance | | +| E.cpp:30:23:30:26 | data [post update] [buffer] | E.cpp:30:21:30:21 | p [post update] [data, buffer] | provenance | | +| E.cpp:30:28:30:33 | ref arg buffer | E.cpp:30:23:30:26 | data [post update] [buffer] | provenance | | +| E.cpp:32:10:32:10 | b [buffer] | E.cpp:32:13:32:18 | buffer | provenance | | +| E.cpp:33:18:33:19 | & ... [data, buffer] | E.cpp:19:27:19:27 | p [data, buffer] | provenance | | +| E.cpp:33:19:33:19 | p [data, buffer] | E.cpp:33:18:33:19 | & ... [data, buffer] | provenance | | +| aliasing.cpp:8:23:8:23 | s [m1] | aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | provenance | | +| aliasing.cpp:9:3:9:3 | s [post update] [m1] | aliasing.cpp:8:23:8:23 | s [m1] | provenance | | +| aliasing.cpp:9:3:9:3 | s [post update] [m1] | aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | provenance | | +| aliasing.cpp:9:3:9:22 | ... = ... | aliasing.cpp:9:3:9:3 | s [post update] [m1] | provenance | | +| aliasing.cpp:9:11:9:20 | call to user_input | aliasing.cpp:9:3:9:22 | ... = ... | provenance | | +| aliasing.cpp:12:25:12:25 | s [m1] | aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | provenance | | +| aliasing.cpp:13:3:13:3 | s [post update] [m1] | aliasing.cpp:12:25:12:25 | s [m1] | provenance | | +| aliasing.cpp:13:3:13:3 | s [post update] [m1] | aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | provenance | | +| aliasing.cpp:13:3:13:21 | ... = ... | aliasing.cpp:13:3:13:3 | s [post update] [m1] | provenance | | +| aliasing.cpp:13:10:13:19 | call to user_input | aliasing.cpp:13:3:13:21 | ... = ... | provenance | | +| aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | aliasing.cpp:29:8:29:9 | s1 [m1] | provenance | | +| aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | aliasing.cpp:30:8:30:9 | s2 [m1] | provenance | | +| aliasing.cpp:29:8:29:9 | s1 [m1] | aliasing.cpp:29:11:29:12 | m1 | provenance | | +| aliasing.cpp:30:8:30:9 | s2 [m1] | aliasing.cpp:30:11:30:12 | m1 | provenance | | +| aliasing.cpp:60:3:60:4 | s2 [post update] [m1] | aliasing.cpp:62:8:62:12 | copy2 [m1] | provenance | | +| aliasing.cpp:60:3:60:22 | ... = ... | aliasing.cpp:60:3:60:4 | s2 [post update] [m1] | provenance | | +| aliasing.cpp:60:11:60:20 | call to user_input | aliasing.cpp:60:3:60:22 | ... = ... | provenance | | +| aliasing.cpp:62:8:62:12 | copy2 [m1] | aliasing.cpp:62:14:62:15 | m1 | provenance | | +| aliasing.cpp:92:3:92:3 | w [post update] [s, m1] | aliasing.cpp:93:8:93:8 | w [s, m1] | provenance | | +| aliasing.cpp:92:3:92:23 | ... = ... | aliasing.cpp:92:5:92:5 | s [post update] [m1] | provenance | | +| aliasing.cpp:92:5:92:5 | s [post update] [m1] | aliasing.cpp:92:3:92:3 | w [post update] [s, m1] | provenance | | +| aliasing.cpp:92:12:92:21 | call to user_input | aliasing.cpp:92:3:92:23 | ... = ... | provenance | | +| aliasing.cpp:93:8:93:8 | w [s, m1] | aliasing.cpp:93:10:93:10 | s [m1] | provenance | | +| aliasing.cpp:93:10:93:10 | s [m1] | aliasing.cpp:93:12:93:13 | m1 | provenance | | +| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:158:17:158:20 | ref arg data | provenance | | +| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:164:17:164:20 | ref arg data | provenance | | +| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:175:15:175:22 | ref arg & ... | provenance | | +| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:187:15:187:22 | ref arg & ... | provenance | | +| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:200:15:200:24 | ref arg & ... | provenance | | +| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:158:17:158:20 | ref arg data | provenance | | +| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:164:17:164:20 | ref arg data | provenance | | +| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:175:15:175:22 | ref arg & ... | provenance | | +| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:187:15:187:22 | ref arg & ... | provenance | | +| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:200:15:200:24 | ref arg & ... | provenance | | +| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:105:23:105:24 | pa | provenance | | +| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:106:4:106:5 | pa [inner post update] | provenance | | +| aliasing.cpp:158:15:158:15 | s [post update] [data] | aliasing.cpp:159:9:159:9 | s [data] | provenance | | +| aliasing.cpp:158:17:158:20 | ref arg data | aliasing.cpp:158:15:158:15 | s [post update] [data] | provenance | | +| aliasing.cpp:159:9:159:9 | s [data] | aliasing.cpp:159:11:159:14 | data | provenance | | +| aliasing.cpp:159:11:159:14 | data | aliasing.cpp:159:8:159:14 | * ... | provenance | | +| aliasing.cpp:164:15:164:15 | s [post update] [data] | aliasing.cpp:165:8:165:8 | s [data] | provenance | | +| aliasing.cpp:164:17:164:20 | ref arg data | aliasing.cpp:164:15:164:15 | s [post update] [data] | provenance | | +| aliasing.cpp:165:8:165:8 | s [data] | aliasing.cpp:165:10:165:13 | data | provenance | | +| aliasing.cpp:165:10:165:13 | data | aliasing.cpp:165:8:165:16 | access to array | provenance | | +| aliasing.cpp:175:15:175:22 | ref arg & ... | aliasing.cpp:175:21:175:22 | m1 [inner post update] | provenance | | +| aliasing.cpp:175:16:175:17 | s2 [post update] [s, m1] | aliasing.cpp:176:8:176:9 | s2 [s, m1] | provenance | | +| aliasing.cpp:175:19:175:19 | s [post update] [m1] | aliasing.cpp:175:16:175:17 | s2 [post update] [s, m1] | provenance | | +| aliasing.cpp:175:21:175:22 | m1 [inner post update] | aliasing.cpp:175:19:175:19 | s [post update] [m1] | provenance | | +| aliasing.cpp:176:8:176:9 | s2 [s, m1] | aliasing.cpp:176:11:176:11 | s [m1] | provenance | | +| aliasing.cpp:176:11:176:11 | s [m1] | aliasing.cpp:176:13:176:14 | m1 | provenance | | +| aliasing.cpp:187:15:187:22 | ref arg & ... | aliasing.cpp:187:21:187:22 | m1 [inner post update] | provenance | | +| aliasing.cpp:187:16:187:17 | s2 [post update] [s, m1] | aliasing.cpp:189:8:189:11 | s2_2 [s, m1] | provenance | | +| aliasing.cpp:187:19:187:19 | s [post update] [m1] | aliasing.cpp:187:16:187:17 | s2 [post update] [s, m1] | provenance | | +| aliasing.cpp:187:21:187:22 | m1 [inner post update] | aliasing.cpp:187:19:187:19 | s [post update] [m1] | provenance | | +| aliasing.cpp:189:8:189:11 | s2_2 [s, m1] | aliasing.cpp:189:13:189:13 | s [m1] | provenance | | +| aliasing.cpp:189:13:189:13 | s [m1] | aliasing.cpp:189:15:189:16 | m1 | provenance | | +| aliasing.cpp:200:15:200:24 | ref arg & ... | aliasing.cpp:200:23:200:24 | m1 [inner post update] | provenance | | +| aliasing.cpp:200:16:200:18 | ps2 [post update] [s, m1] | aliasing.cpp:201:8:201:10 | ps2 [s, m1] | provenance | | +| aliasing.cpp:200:21:200:21 | s [post update] [m1] | aliasing.cpp:200:16:200:18 | ps2 [post update] [s, m1] | provenance | | +| aliasing.cpp:200:23:200:24 | m1 [inner post update] | aliasing.cpp:200:21:200:21 | s [post update] [m1] | provenance | | +| aliasing.cpp:201:8:201:10 | ps2 [s, m1] | aliasing.cpp:201:13:201:13 | s [m1] | provenance | | +| aliasing.cpp:201:13:201:13 | s [m1] | aliasing.cpp:201:15:201:16 | m1 | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:7:8:7:13 | access to array | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:8:8:8:13 | access to array | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:9:8:9:11 | * ... | provenance | | +| arrays.cpp:6:12:6:21 | call to user_input | arrays.cpp:10:8:10:15 | * ... | provenance | | +| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:16:8:16:13 | access to array | provenance | | +| arrays.cpp:15:14:15:23 | call to user_input | arrays.cpp:17:8:17:13 | access to array | provenance | | +| arrays.cpp:36:3:36:3 | o [post update] [nested, arr, data] | arrays.cpp:37:8:37:8 | o [nested, arr, data] | provenance | | +| arrays.cpp:36:3:36:3 | o [post update] [nested, arr, data] | arrays.cpp:38:8:38:8 | o [nested, arr, data] | provenance | | +| arrays.cpp:36:3:36:17 | access to array [post update] [data] | arrays.cpp:36:12:36:14 | arr [inner post update] [data] | provenance | | +| arrays.cpp:36:3:36:37 | ... = ... | arrays.cpp:36:3:36:17 | access to array [post update] [data] | provenance | | +| arrays.cpp:36:5:36:10 | nested [post update] [arr, data] | arrays.cpp:36:3:36:3 | o [post update] [nested, arr, data] | provenance | | +| arrays.cpp:36:12:36:14 | arr [inner post update] [data] | arrays.cpp:36:5:36:10 | nested [post update] [arr, data] | provenance | | +| arrays.cpp:36:26:36:35 | call to user_input | arrays.cpp:36:3:36:37 | ... = ... | provenance | | +| arrays.cpp:37:8:37:8 | o [nested, arr, data] | arrays.cpp:37:10:37:15 | nested [arr, data] | provenance | | +| arrays.cpp:37:8:37:8 | o [post update] [nested, arr, data] | arrays.cpp:38:8:38:8 | o [nested, arr, data] | provenance | | +| arrays.cpp:37:8:37:22 | access to array [data] | arrays.cpp:37:24:37:27 | data | provenance | | +| arrays.cpp:37:8:37:22 | access to array [data] | arrays.cpp:37:24:37:27 | data | provenance | | +| arrays.cpp:37:8:37:22 | access to array [post update] [data] | arrays.cpp:37:17:37:19 | arr [inner post update] [data] | provenance | | +| arrays.cpp:37:10:37:15 | nested [arr, data] | arrays.cpp:37:17:37:19 | arr [data] | provenance | | +| arrays.cpp:37:10:37:15 | nested [post update] [arr, data] | arrays.cpp:37:8:37:8 | o [post update] [nested, arr, data] | provenance | | +| arrays.cpp:37:17:37:19 | arr [data] | arrays.cpp:37:8:37:22 | access to array [data] | provenance | | +| arrays.cpp:37:17:37:19 | arr [inner post update] [data] | arrays.cpp:37:10:37:15 | nested [post update] [arr, data] | provenance | | +| arrays.cpp:37:24:37:27 | data | arrays.cpp:37:24:37:27 | ref arg data | provenance | | +| arrays.cpp:37:24:37:27 | data | realistic.cpp:41:17:41:17 | o | provenance | | +| arrays.cpp:37:24:37:27 | ref arg data | arrays.cpp:37:8:37:22 | access to array [post update] [data] | provenance | | +| arrays.cpp:38:8:38:8 | o [nested, arr, data] | arrays.cpp:38:10:38:15 | nested [arr, data] | provenance | | +| arrays.cpp:38:8:38:22 | access to array [data] | arrays.cpp:38:24:38:27 | data | provenance | | +| arrays.cpp:38:10:38:15 | nested [arr, data] | arrays.cpp:38:17:38:19 | arr [data] | provenance | | +| arrays.cpp:38:17:38:19 | arr [data] | arrays.cpp:38:8:38:22 | access to array [data] | provenance | | +| arrays.cpp:42:3:42:3 | o [post update] [indirect, arr, data] | arrays.cpp:43:8:43:8 | o [indirect, arr, data] | provenance | | +| arrays.cpp:42:3:42:3 | o [post update] [indirect, arr, data] | arrays.cpp:44:8:44:8 | o [indirect, arr, data] | provenance | | +| arrays.cpp:42:3:42:20 | access to array [post update] [data] | arrays.cpp:42:15:42:17 | arr [inner post update] [data] | provenance | | +| arrays.cpp:42:3:42:40 | ... = ... | arrays.cpp:42:3:42:20 | access to array [post update] [data] | provenance | | +| arrays.cpp:42:5:42:12 | indirect [post update] [arr, data] | arrays.cpp:42:3:42:3 | o [post update] [indirect, arr, data] | provenance | | +| arrays.cpp:42:15:42:17 | arr [inner post update] [data] | arrays.cpp:42:5:42:12 | indirect [post update] [arr, data] | provenance | | +| arrays.cpp:42:29:42:38 | call to user_input | arrays.cpp:42:3:42:40 | ... = ... | provenance | | +| arrays.cpp:43:8:43:8 | o [indirect, arr, data] | arrays.cpp:43:10:43:17 | indirect [arr, data] | provenance | | +| arrays.cpp:43:8:43:8 | o [post update] [indirect, arr, data] | arrays.cpp:44:8:44:8 | o [indirect, arr, data] | provenance | | +| arrays.cpp:43:8:43:25 | access to array [data] | arrays.cpp:43:27:43:30 | data | provenance | | +| arrays.cpp:43:8:43:25 | access to array [data] | arrays.cpp:43:27:43:30 | data | provenance | | +| arrays.cpp:43:8:43:25 | access to array [post update] [data] | arrays.cpp:43:20:43:22 | arr [inner post update] [data] | provenance | | +| arrays.cpp:43:10:43:17 | indirect [arr, data] | arrays.cpp:43:20:43:22 | arr [data] | provenance | | +| arrays.cpp:43:10:43:17 | indirect [post update] [arr, data] | arrays.cpp:43:8:43:8 | o [post update] [indirect, arr, data] | provenance | | +| arrays.cpp:43:20:43:22 | arr [data] | arrays.cpp:43:8:43:25 | access to array [data] | provenance | | +| arrays.cpp:43:20:43:22 | arr [inner post update] [data] | arrays.cpp:43:10:43:17 | indirect [post update] [arr, data] | provenance | | +| arrays.cpp:43:27:43:30 | data | arrays.cpp:43:27:43:30 | ref arg data | provenance | | +| arrays.cpp:43:27:43:30 | data | realistic.cpp:41:17:41:17 | o | provenance | | +| arrays.cpp:43:27:43:30 | ref arg data | arrays.cpp:43:8:43:25 | access to array [post update] [data] | provenance | | +| arrays.cpp:44:8:44:8 | o [indirect, arr, data] | arrays.cpp:44:10:44:17 | indirect [arr, data] | provenance | | +| arrays.cpp:44:8:44:25 | access to array [data] | arrays.cpp:44:27:44:30 | data | provenance | | +| arrays.cpp:44:10:44:17 | indirect [arr, data] | arrays.cpp:44:20:44:22 | arr [data] | provenance | | +| arrays.cpp:44:20:44:22 | arr [data] | arrays.cpp:44:8:44:25 | access to array [data] | provenance | | +| by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:16 | ... = ... | provenance | | +| by_reference.cpp:12:5:12:5 | s [post update] [a] | by_reference.cpp:11:39:11:39 | s [a] | provenance | | +| by_reference.cpp:12:5:12:16 | ... = ... | by_reference.cpp:12:5:12:5 | s [post update] [a] | provenance | | +| by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:19 | ... = ... | provenance | | +| by_reference.cpp:16:5:16:19 | ... = ... | by_reference.cpp:16:5:16:8 | this [post update] [a] | provenance | | +| by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:23:20:27 | value | provenance | | +| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | provenance | | +| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:20:5:20:8 | ref arg this [a] | provenance | | +| by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:25:24:29 | value | provenance | | +| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | provenance | | +| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:24:19:24:22 | ref arg this [a] | provenance | | +| by_reference.cpp:31:46:31:46 | s [a] | by_reference.cpp:32:12:32:12 | s [a] | provenance | | +| by_reference.cpp:32:12:32:12 | s [a] | by_reference.cpp:32:15:32:15 | a | provenance | | +| by_reference.cpp:35:9:35:19 | this [a] | by_reference.cpp:36:12:36:15 | this [a] | provenance | | +| by_reference.cpp:36:12:36:15 | this [a] | by_reference.cpp:36:18:36:18 | a | provenance | | +| by_reference.cpp:39:9:39:21 | this [a] | by_reference.cpp:40:12:40:15 | this [a] | provenance | | +| by_reference.cpp:40:12:40:15 | this [a] | by_reference.cpp:35:9:35:19 | this [a] | provenance | | +| by_reference.cpp:40:12:40:15 | this [a] | by_reference.cpp:40:18:40:28 | call to getDirectly | provenance | | +| by_reference.cpp:43:9:43:27 | this [a] | by_reference.cpp:44:26:44:29 | this [a] | provenance | | +| by_reference.cpp:44:26:44:29 | this [a] | by_reference.cpp:31:46:31:46 | s [a] | provenance | | +| by_reference.cpp:44:26:44:29 | this [a] | by_reference.cpp:44:12:44:24 | call to nonMemberGetA | provenance | | +| by_reference.cpp:50:3:50:3 | ref arg s [a] | by_reference.cpp:51:8:51:8 | s [a] | provenance | | +| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | provenance | | +| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:50:3:50:3 | ref arg s [a] | provenance | | +| by_reference.cpp:51:8:51:8 | s [a] | by_reference.cpp:35:9:35:19 | this [a] | provenance | | +| by_reference.cpp:51:8:51:8 | s [a] | by_reference.cpp:51:10:51:20 | call to getDirectly | provenance | | +| by_reference.cpp:56:3:56:3 | ref arg s [a] | by_reference.cpp:57:8:57:8 | s [a] | provenance | | +| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | provenance | | +| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:56:3:56:3 | ref arg s [a] | provenance | | +| by_reference.cpp:57:8:57:8 | s [a] | by_reference.cpp:39:9:39:21 | this [a] | provenance | | +| by_reference.cpp:57:8:57:8 | s [a] | by_reference.cpp:57:10:57:22 | call to getIndirectly | provenance | | +| by_reference.cpp:62:3:62:3 | ref arg s [a] | by_reference.cpp:63:8:63:8 | s [a] | provenance | | +| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | provenance | | +| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:62:3:62:3 | ref arg s [a] | provenance | | +| by_reference.cpp:63:8:63:8 | s [a] | by_reference.cpp:43:9:43:27 | this [a] | provenance | | +| by_reference.cpp:63:8:63:8 | s [a] | by_reference.cpp:63:10:63:28 | call to getThroughNonMember | provenance | | +| by_reference.cpp:68:17:68:18 | ref arg & ... [a] | by_reference.cpp:69:23:69:23 | s [a] | provenance | | +| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | provenance | | +| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:68:17:68:18 | ref arg & ... [a] | provenance | | +| by_reference.cpp:69:22:69:23 | & ... [a] | by_reference.cpp:31:46:31:46 | s [a] | provenance | | +| by_reference.cpp:69:22:69:23 | & ... [a] | by_reference.cpp:69:8:69:20 | call to nonMemberGetA | provenance | | +| by_reference.cpp:69:23:69:23 | s [a] | by_reference.cpp:69:22:69:23 | & ... [a] | provenance | | +| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:102:21:102:39 | ref arg & ... [a] | provenance | | +| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | provenance | | +| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:106:21:106:41 | ref arg & ... [a] | provenance | | +| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | provenance | | +| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:83:31:83:35 | inner [a] | provenance | | +| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:102:21:102:39 | ref arg & ... [a] | provenance | | +| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | provenance | | +| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:106:21:106:41 | ref arg & ... [a] | provenance | | +| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | provenance | | +| by_reference.cpp:84:3:84:25 | ... = ... | by_reference.cpp:84:3:84:7 | inner [post update] [a] | provenance | | +| by_reference.cpp:84:14:84:23 | call to user_input | by_reference.cpp:84:3:84:25 | ... = ... | provenance | | +| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | provenance | | +| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:123:21:123:36 | ref arg * ... [a] | provenance | | +| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | provenance | | +| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:127:21:127:38 | ref arg * ... [a] | provenance | | +| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:87:31:87:35 | inner [a] | provenance | | +| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | provenance | | +| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:123:21:123:36 | ref arg * ... [a] | provenance | | +| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | provenance | | +| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:127:21:127:38 | ref arg * ... [a] | provenance | | +| by_reference.cpp:88:3:88:24 | ... = ... | by_reference.cpp:88:3:88:7 | inner [post update] [a] | provenance | | +| by_reference.cpp:88:13:88:22 | call to user_input | by_reference.cpp:88:3:88:24 | ... = ... | provenance | | +| by_reference.cpp:91:25:91:26 | pa | by_reference.cpp:104:15:104:22 | ref arg & ... | provenance | | +| by_reference.cpp:91:25:91:26 | pa | by_reference.cpp:108:15:108:24 | ref arg & ... | provenance | | +| by_reference.cpp:92:4:92:5 | pa [inner post update] | by_reference.cpp:104:15:104:22 | ref arg & ... | provenance | | +| by_reference.cpp:92:4:92:5 | pa [inner post update] | by_reference.cpp:108:15:108:24 | ref arg & ... | provenance | | +| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:91:25:91:26 | pa | provenance | | +| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:92:4:92:5 | pa [inner post update] | provenance | | +| by_reference.cpp:95:25:95:26 | pa | by_reference.cpp:124:21:124:21 | ref arg a | provenance | | +| by_reference.cpp:95:25:95:26 | pa | by_reference.cpp:128:23:128:23 | ref arg a | provenance | | +| by_reference.cpp:96:8:96:17 | call to user_input | by_reference.cpp:95:25:95:26 | pa | provenance | | +| by_reference.cpp:102:21:102:39 | ref arg & ... [a] | by_reference.cpp:102:28:102:39 | inner_nested [inner post update] [a] | provenance | | +| by_reference.cpp:102:22:102:26 | outer [post update] [inner_nested, a] | by_reference.cpp:110:8:110:12 | outer [inner_nested, a] | provenance | | +| by_reference.cpp:102:28:102:39 | inner_nested [inner post update] [a] | by_reference.cpp:102:22:102:26 | outer [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:103:21:103:25 | outer [post update] [inner_ptr, a] | by_reference.cpp:111:8:111:12 | outer [inner_ptr, a] | provenance | | +| by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | by_reference.cpp:103:21:103:25 | outer [post update] [inner_ptr, a] | provenance | | +| by_reference.cpp:104:15:104:22 | ref arg & ... | by_reference.cpp:104:22:104:22 | a [inner post update] | provenance | | +| by_reference.cpp:104:16:104:20 | outer [post update] [a] | by_reference.cpp:112:8:112:12 | outer [a] | provenance | | +| by_reference.cpp:104:22:104:22 | a [inner post update] | by_reference.cpp:104:16:104:20 | outer [post update] [a] | provenance | | +| by_reference.cpp:106:21:106:41 | ref arg & ... [a] | by_reference.cpp:106:30:106:41 | inner_nested [inner post update] [a] | provenance | | +| by_reference.cpp:106:22:106:27 | pouter [post update] [inner_nested, a] | by_reference.cpp:114:8:114:13 | pouter [inner_nested, a] | provenance | | +| by_reference.cpp:106:30:106:41 | inner_nested [inner post update] [a] | by_reference.cpp:106:22:106:27 | pouter [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:107:21:107:26 | pouter [post update] [inner_ptr, a] | by_reference.cpp:115:8:115:13 | pouter [inner_ptr, a] | provenance | | +| by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | by_reference.cpp:107:21:107:26 | pouter [post update] [inner_ptr, a] | provenance | | +| by_reference.cpp:108:15:108:24 | ref arg & ... | by_reference.cpp:108:24:108:24 | a [inner post update] | provenance | | +| by_reference.cpp:108:16:108:21 | pouter [post update] [a] | by_reference.cpp:116:8:116:13 | pouter [a] | provenance | | +| by_reference.cpp:108:24:108:24 | a [inner post update] | by_reference.cpp:108:16:108:21 | pouter [post update] [a] | provenance | | +| by_reference.cpp:110:8:110:12 | outer [inner_nested, a] | by_reference.cpp:110:14:110:25 | inner_nested [a] | provenance | | +| by_reference.cpp:110:14:110:25 | inner_nested [a] | by_reference.cpp:110:27:110:27 | a | provenance | | +| by_reference.cpp:111:8:111:12 | outer [inner_ptr, a] | by_reference.cpp:111:14:111:22 | inner_ptr [a] | provenance | | +| by_reference.cpp:111:14:111:22 | inner_ptr [a] | by_reference.cpp:111:25:111:25 | a | provenance | | +| by_reference.cpp:112:8:112:12 | outer [a] | by_reference.cpp:112:14:112:14 | a | provenance | | +| by_reference.cpp:114:8:114:13 | pouter [inner_nested, a] | by_reference.cpp:114:16:114:27 | inner_nested [a] | provenance | | +| by_reference.cpp:114:16:114:27 | inner_nested [a] | by_reference.cpp:114:29:114:29 | a | provenance | | +| by_reference.cpp:115:8:115:13 | pouter [inner_ptr, a] | by_reference.cpp:115:16:115:24 | inner_ptr [a] | provenance | | +| by_reference.cpp:115:16:115:24 | inner_ptr [a] | by_reference.cpp:115:27:115:27 | a | provenance | | +| by_reference.cpp:116:8:116:13 | pouter [a] | by_reference.cpp:116:16:116:16 | a | provenance | | +| by_reference.cpp:122:21:122:25 | outer [post update] [inner_nested, a] | by_reference.cpp:130:8:130:12 | outer [inner_nested, a] | provenance | | +| by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | by_reference.cpp:122:21:122:25 | outer [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:123:21:123:36 | ref arg * ... [a] | by_reference.cpp:123:28:123:36 | inner_ptr [inner post update] [a] | provenance | | +| by_reference.cpp:123:22:123:26 | outer [post update] [inner_ptr, a] | by_reference.cpp:131:8:131:12 | outer [inner_ptr, a] | provenance | | +| by_reference.cpp:123:28:123:36 | inner_ptr [inner post update] [a] | by_reference.cpp:123:22:123:26 | outer [post update] [inner_ptr, a] | provenance | | +| by_reference.cpp:124:15:124:19 | outer [post update] [a] | by_reference.cpp:132:8:132:12 | outer [a] | provenance | | +| by_reference.cpp:124:21:124:21 | ref arg a | by_reference.cpp:124:15:124:19 | outer [post update] [a] | provenance | | +| by_reference.cpp:126:21:126:26 | pouter [post update] [inner_nested, a] | by_reference.cpp:134:8:134:13 | pouter [inner_nested, a] | provenance | | +| by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | by_reference.cpp:126:21:126:26 | pouter [post update] [inner_nested, a] | provenance | | +| by_reference.cpp:127:21:127:38 | ref arg * ... [a] | by_reference.cpp:127:30:127:38 | inner_ptr [inner post update] [a] | provenance | | +| by_reference.cpp:127:22:127:27 | pouter [post update] [inner_ptr, a] | by_reference.cpp:135:8:135:13 | pouter [inner_ptr, a] | provenance | | +| by_reference.cpp:127:30:127:38 | inner_ptr [inner post update] [a] | by_reference.cpp:127:22:127:27 | pouter [post update] [inner_ptr, a] | provenance | | +| by_reference.cpp:128:15:128:20 | pouter [post update] [a] | by_reference.cpp:136:8:136:13 | pouter [a] | provenance | | +| by_reference.cpp:128:23:128:23 | ref arg a | by_reference.cpp:128:15:128:20 | pouter [post update] [a] | provenance | | +| by_reference.cpp:130:8:130:12 | outer [inner_nested, a] | by_reference.cpp:130:14:130:25 | inner_nested [a] | provenance | | +| by_reference.cpp:130:14:130:25 | inner_nested [a] | by_reference.cpp:130:27:130:27 | a | provenance | | +| by_reference.cpp:131:8:131:12 | outer [inner_ptr, a] | by_reference.cpp:131:14:131:22 | inner_ptr [a] | provenance | | +| by_reference.cpp:131:14:131:22 | inner_ptr [a] | by_reference.cpp:131:25:131:25 | a | provenance | | +| by_reference.cpp:132:8:132:12 | outer [a] | by_reference.cpp:132:14:132:14 | a | provenance | | +| by_reference.cpp:134:8:134:13 | pouter [inner_nested, a] | by_reference.cpp:134:16:134:27 | inner_nested [a] | provenance | | +| by_reference.cpp:134:16:134:27 | inner_nested [a] | by_reference.cpp:134:29:134:29 | a | provenance | | +| by_reference.cpp:135:8:135:13 | pouter [inner_ptr, a] | by_reference.cpp:135:16:135:24 | inner_ptr [a] | provenance | | +| by_reference.cpp:135:16:135:24 | inner_ptr [a] | by_reference.cpp:135:27:135:27 | a | provenance | | +| by_reference.cpp:136:8:136:13 | pouter [a] | by_reference.cpp:136:16:136:16 | a | provenance | | +| clearning.cpp:53:4:53:4 | s [post update] [x] | clearning.cpp:55:8:55:8 | s [x] | provenance | | +| clearning.cpp:53:6:53:6 | x [inner post update] | clearning.cpp:53:4:53:4 | s [post update] [x] | provenance | | +| clearning.cpp:53:10:53:19 | call to user_input | clearning.cpp:53:6:53:6 | x [inner post update] | provenance | | +| clearning.cpp:55:8:55:8 | s [x] | clearning.cpp:55:10:55:10 | x | provenance | | +| clearning.cpp:124:2:124:2 | s [post update] [val] | clearning.cpp:126:7:126:7 | s [val] | provenance | | +| clearning.cpp:124:2:124:25 | ... = ... | clearning.cpp:124:2:124:2 | s [post update] [val] | provenance | | +| clearning.cpp:124:10:124:19 | call to user_input | clearning.cpp:124:2:124:25 | ... = ... | provenance | | +| clearning.cpp:126:7:126:7 | s [val] | clearning.cpp:126:9:126:11 | val | provenance | | +| clearning.cpp:131:2:131:2 | s [post update] [val] | clearning.cpp:133:7:133:7 | s [val] | provenance | | +| clearning.cpp:131:2:131:25 | ... = ... | clearning.cpp:131:2:131:2 | s [post update] [val] | provenance | | +| clearning.cpp:131:10:131:19 | call to user_input | clearning.cpp:131:2:131:25 | ... = ... | provenance | | +| clearning.cpp:133:7:133:7 | s [val] | clearning.cpp:133:9:133:11 | val | provenance | | +| clearning.cpp:138:2:138:2 | s [post update] [val] | clearning.cpp:140:7:140:7 | s [val] | provenance | | +| clearning.cpp:138:2:138:25 | ... = ... | clearning.cpp:138:2:138:2 | s [post update] [val] | provenance | | +| clearning.cpp:138:10:138:19 | call to user_input | clearning.cpp:138:2:138:25 | ... = ... | provenance | | +| clearning.cpp:140:7:140:7 | s [val] | clearning.cpp:140:9:140:11 | val | provenance | | +| clearning.cpp:151:3:151:3 | s [post update] [val] | clearning.cpp:152:8:152:8 | s [val] | provenance | | +| clearning.cpp:151:3:151:22 | ... = ... | clearning.cpp:151:3:151:3 | s [post update] [val] | provenance | | +| clearning.cpp:151:11:151:20 | call to user_input | clearning.cpp:151:3:151:22 | ... = ... | provenance | | +| clearning.cpp:152:8:152:8 | s [val] | clearning.cpp:152:10:152:12 | val | provenance | | +| clearning.cpp:157:3:157:3 | s [post update] [val] | clearning.cpp:159:8:159:8 | s [val] | provenance | | +| clearning.cpp:157:3:157:22 | ... = ... | clearning.cpp:157:3:157:3 | s [post update] [val] | provenance | | +| clearning.cpp:157:11:157:20 | call to user_input | clearning.cpp:157:3:157:22 | ... = ... | provenance | | +| clearning.cpp:159:8:159:8 | s [val] | clearning.cpp:159:10:159:12 | val | provenance | | +| clearning.cpp:164:3:164:3 | s [post update] [val] | clearning.cpp:166:8:166:8 | s [val] | provenance | | +| clearning.cpp:164:3:164:22 | ... = ... | clearning.cpp:164:3:164:3 | s [post update] [val] | provenance | | +| clearning.cpp:164:11:164:20 | call to user_input | clearning.cpp:164:3:164:22 | ... = ... | provenance | | +| clearning.cpp:166:8:166:8 | s [val] | clearning.cpp:166:10:166:12 | val | provenance | | +| clearning.cpp:171:3:171:3 | s [post update] [val] | clearning.cpp:173:8:173:8 | s [val] | provenance | | +| clearning.cpp:171:3:171:22 | ... = ... | clearning.cpp:171:3:171:3 | s [post update] [val] | provenance | | +| clearning.cpp:171:11:171:20 | call to user_input | clearning.cpp:171:3:171:22 | ... = ... | provenance | | +| clearning.cpp:173:8:173:8 | s [val] | clearning.cpp:173:10:173:12 | val | provenance | | +| clearning.cpp:178:3:178:3 | s [post update] [val] | clearning.cpp:180:8:180:8 | s [val] | provenance | | +| clearning.cpp:178:3:178:22 | ... = ... | clearning.cpp:178:3:178:3 | s [post update] [val] | provenance | | +| clearning.cpp:178:11:178:20 | call to user_input | clearning.cpp:178:3:178:22 | ... = ... | provenance | | +| clearning.cpp:180:8:180:8 | s [val] | clearning.cpp:180:10:180:12 | val | provenance | | +| complex.cpp:9:7:9:7 | this [a_] | complex.cpp:9:20:9:21 | this [a_] | provenance | | +| complex.cpp:9:20:9:21 | this [a_] | complex.cpp:9:20:9:21 | a_ | provenance | | +| complex.cpp:10:7:10:7 | this [b_] | complex.cpp:10:20:10:21 | this [b_] | provenance | | +| complex.cpp:10:20:10:21 | this [b_] | complex.cpp:10:20:10:21 | b_ | provenance | | +| complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:27 | ... = ... | provenance | | +| complex.cpp:11:22:11:27 | ... = ... | complex.cpp:11:22:11:23 | this [post update] [a_] | provenance | | +| complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:27 | ... = ... | provenance | | +| complex.cpp:12:22:12:27 | ... = ... | complex.cpp:12:22:12:23 | this [post update] [b_] | provenance | | +| complex.cpp:40:17:40:17 | b [inner, f, a_] | complex.cpp:42:8:42:8 | b [inner, f, a_] | provenance | | +| complex.cpp:40:17:40:17 | b [inner, f, b_] | complex.cpp:43:8:43:8 | b [inner, f, b_] | provenance | | +| complex.cpp:42:8:42:8 | b [inner, f, a_] | complex.cpp:42:10:42:14 | inner [f, a_] | provenance | | +| complex.cpp:42:10:42:14 | inner [f, a_] | complex.cpp:42:16:42:16 | f [a_] | provenance | | +| complex.cpp:42:16:42:16 | f [a_] | complex.cpp:9:7:9:7 | this [a_] | provenance | | +| complex.cpp:42:16:42:16 | f [a_] | complex.cpp:42:18:42:18 | call to a | provenance | | +| complex.cpp:43:8:43:8 | b [inner, f, b_] | complex.cpp:43:10:43:14 | inner [f, b_] | provenance | | +| complex.cpp:43:10:43:14 | inner [f, b_] | complex.cpp:43:16:43:16 | f [b_] | provenance | | +| complex.cpp:43:16:43:16 | f [b_] | complex.cpp:10:7:10:7 | this [b_] | provenance | | +| complex.cpp:43:16:43:16 | f [b_] | complex.cpp:43:18:43:18 | call to b | provenance | | +| complex.cpp:53:3:53:4 | b1 [post update] [inner, f, a_] | complex.cpp:59:7:59:8 | b1 [inner, f, a_] | provenance | | +| complex.cpp:53:6:53:10 | inner [post update] [f, a_] | complex.cpp:53:3:53:4 | b1 [post update] [inner, f, a_] | provenance | | +| complex.cpp:53:12:53:12 | ref arg f [a_] | complex.cpp:53:6:53:10 | inner [post update] [f, a_] | provenance | | +| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | provenance | | +| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:53:12:53:12 | ref arg f [a_] | provenance | | +| complex.cpp:54:3:54:4 | b2 [post update] [inner, f, b_] | complex.cpp:62:7:62:8 | b2 [inner, f, b_] | provenance | | +| complex.cpp:54:6:54:10 | inner [post update] [f, b_] | complex.cpp:54:3:54:4 | b2 [post update] [inner, f, b_] | provenance | | +| complex.cpp:54:12:54:12 | ref arg f [b_] | complex.cpp:54:6:54:10 | inner [post update] [f, b_] | provenance | | +| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | provenance | | +| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:54:12:54:12 | ref arg f [b_] | provenance | | +| complex.cpp:55:3:55:4 | b3 [post update] [inner, f, a_] | complex.cpp:65:7:65:8 | b3 [inner, f, a_] | provenance | | +| complex.cpp:55:6:55:10 | inner [post update] [f, a_] | complex.cpp:55:3:55:4 | b3 [post update] [inner, f, a_] | provenance | | +| complex.cpp:55:12:55:12 | ref arg f [a_] | complex.cpp:55:6:55:10 | inner [post update] [f, a_] | provenance | | +| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | provenance | | +| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:55:12:55:12 | ref arg f [a_] | provenance | | +| complex.cpp:56:3:56:4 | b3 [post update] [inner, f, b_] | complex.cpp:65:7:65:8 | b3 [inner, f, b_] | provenance | | +| complex.cpp:56:6:56:10 | inner [post update] [f, b_] | complex.cpp:56:3:56:4 | b3 [post update] [inner, f, b_] | provenance | | +| complex.cpp:56:12:56:12 | ref arg f [b_] | complex.cpp:56:6:56:10 | inner [post update] [f, b_] | provenance | | +| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | provenance | | +| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:56:12:56:12 | ref arg f [b_] | provenance | | +| complex.cpp:59:7:59:8 | b1 [inner, f, a_] | complex.cpp:40:17:40:17 | b [inner, f, a_] | provenance | | +| complex.cpp:62:7:62:8 | b2 [inner, f, b_] | complex.cpp:40:17:40:17 | b [inner, f, b_] | provenance | | +| complex.cpp:65:7:65:8 | b3 [inner, f, a_] | complex.cpp:40:17:40:17 | b [inner, f, a_] | provenance | | +| complex.cpp:65:7:65:8 | b3 [inner, f, b_] | complex.cpp:40:17:40:17 | b [inner, f, b_] | provenance | | +| conflated.cpp:19:19:19:21 | ref arg raw | conflated.cpp:20:8:20:10 | raw | provenance | | +| conflated.cpp:29:3:29:4 | pa [post update] [x] | conflated.cpp:30:8:30:9 | pa [x] | provenance | | +| conflated.cpp:29:3:29:22 | ... = ... | conflated.cpp:29:3:29:4 | pa [post update] [x] | provenance | | +| conflated.cpp:29:11:29:20 | call to user_input | conflated.cpp:29:3:29:22 | ... = ... | provenance | | +| conflated.cpp:30:8:30:9 | pa [x] | conflated.cpp:30:12:30:12 | x | provenance | | +| conflated.cpp:36:3:36:4 | pa [post update] [x] | conflated.cpp:37:8:37:9 | pa [x] | provenance | | +| conflated.cpp:36:3:36:22 | ... = ... | conflated.cpp:36:3:36:4 | pa [post update] [x] | provenance | | +| conflated.cpp:36:11:36:20 | call to user_input | conflated.cpp:36:3:36:22 | ... = ... | provenance | | +| conflated.cpp:37:8:37:9 | pa [x] | conflated.cpp:37:12:37:12 | x | provenance | | +| conflated.cpp:54:3:54:4 | ll [post update] [next, y] | conflated.cpp:55:8:55:9 | ll [next, y] | provenance | | +| conflated.cpp:54:3:54:28 | ... = ... | conflated.cpp:54:7:54:10 | next [post update] [y] | provenance | | +| conflated.cpp:54:7:54:10 | next [post update] [y] | conflated.cpp:54:3:54:4 | ll [post update] [next, y] | provenance | | +| conflated.cpp:54:17:54:26 | call to user_input | conflated.cpp:54:3:54:28 | ... = ... | provenance | | +| conflated.cpp:55:8:55:9 | ll [next, y] | conflated.cpp:55:12:55:15 | next [y] | provenance | | +| conflated.cpp:55:12:55:15 | next [y] | conflated.cpp:55:18:55:18 | y | provenance | | +| conflated.cpp:60:3:60:4 | ll [post update] [next, y] | conflated.cpp:61:8:61:9 | ll [next, y] | provenance | | +| conflated.cpp:60:3:60:28 | ... = ... | conflated.cpp:60:7:60:10 | next [post update] [y] | provenance | | +| conflated.cpp:60:7:60:10 | next [post update] [y] | conflated.cpp:60:3:60:4 | ll [post update] [next, y] | provenance | | +| conflated.cpp:60:17:60:26 | call to user_input | conflated.cpp:60:3:60:28 | ... = ... | provenance | | +| conflated.cpp:61:8:61:9 | ll [next, y] | conflated.cpp:61:12:61:15 | next [y] | provenance | | +| conflated.cpp:61:12:61:15 | next [y] | conflated.cpp:61:18:61:18 | y | provenance | | +| constructors.cpp:18:9:18:9 | this [a_] | constructors.cpp:18:22:18:23 | this [a_] | provenance | | +| constructors.cpp:18:22:18:23 | this [a_] | constructors.cpp:18:22:18:23 | a_ | provenance | | +| constructors.cpp:19:9:19:9 | this [b_] | constructors.cpp:19:22:19:23 | this [b_] | provenance | | +| constructors.cpp:19:22:19:23 | this [b_] | constructors.cpp:19:22:19:23 | b_ | provenance | | +| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | a | provenance | | +| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | b | provenance | | +| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:25:23:29 | constructor init of field a_ [post-this] [a_] | provenance | | +| constructors.cpp:23:35:23:35 | b | constructors.cpp:23:32:23:36 | constructor init of field b_ [post-this] [b_] | provenance | | +| constructors.cpp:26:15:26:15 | f [a_] | constructors.cpp:28:10:28:10 | f [a_] | provenance | | +| constructors.cpp:26:15:26:15 | f [b_] | constructors.cpp:29:10:29:10 | f [b_] | provenance | | +| constructors.cpp:28:10:28:10 | f [a_] | constructors.cpp:18:9:18:9 | this [a_] | provenance | | +| constructors.cpp:28:10:28:10 | f [a_] | constructors.cpp:28:12:28:12 | call to a | provenance | | +| constructors.cpp:29:10:29:10 | f [b_] | constructors.cpp:19:9:19:9 | this [b_] | provenance | | +| constructors.cpp:29:10:29:10 | f [b_] | constructors.cpp:29:12:29:12 | call to b | provenance | | +| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | provenance | | +| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:34:11:34:26 | call to Foo [a_] | provenance | | +| constructors.cpp:34:11:34:26 | call to Foo [a_] | constructors.cpp:40:9:40:9 | f [a_] | provenance | | +| constructors.cpp:35:11:35:26 | call to Foo [b_] | constructors.cpp:43:9:43:9 | g [b_] | provenance | | +| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | provenance | | +| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:35:11:35:26 | call to Foo [b_] | provenance | | +| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | provenance | | +| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:36:11:36:37 | call to Foo [a_] | provenance | | +| constructors.cpp:36:11:36:37 | call to Foo [a_] | constructors.cpp:46:9:46:9 | h [a_] | provenance | | +| constructors.cpp:36:11:36:37 | call to Foo [b_] | constructors.cpp:46:9:46:9 | h [b_] | provenance | | +| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | provenance | | +| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:36:11:36:37 | call to Foo [b_] | provenance | | +| constructors.cpp:40:9:40:9 | f [a_] | constructors.cpp:26:15:26:15 | f [a_] | provenance | | +| constructors.cpp:43:9:43:9 | g [b_] | constructors.cpp:26:15:26:15 | f [b_] | provenance | | +| constructors.cpp:46:9:46:9 | h [a_] | constructors.cpp:26:15:26:15 | f [a_] | provenance | | +| constructors.cpp:46:9:46:9 | h [b_] | constructors.cpp:26:15:26:15 | f [b_] | provenance | | +| qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:44 | ... = ... | provenance | | +| qualifiers.cpp:9:30:9:44 | ... = ... | qualifiers.cpp:9:30:9:33 | this [post update] [a] | provenance | | +| qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:64 | ... = ... | provenance | | +| qualifiers.cpp:12:49:12:53 | inner [post update] [a] | qualifiers.cpp:12:27:12:31 | inner [a] | provenance | | +| qualifiers.cpp:12:49:12:64 | ... = ... | qualifiers.cpp:12:49:12:53 | inner [post update] [a] | provenance | | +| qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:65 | ... = ... | provenance | | +| qualifiers.cpp:13:51:13:55 | inner [post update] [a] | qualifiers.cpp:13:29:13:33 | inner [a] | provenance | | +| qualifiers.cpp:13:51:13:65 | ... = ... | qualifiers.cpp:13:51:13:55 | inner [post update] [a] | provenance | | +| qualifiers.cpp:22:5:22:9 | ref arg outer [inner, a] | qualifiers.cpp:23:10:23:14 | outer [inner, a] | provenance | | +| qualifiers.cpp:22:5:22:38 | ... = ... | qualifiers.cpp:22:11:22:18 | call to getInner [post update] [a] | provenance | | +| qualifiers.cpp:22:11:22:18 | call to getInner [post update] [a] | qualifiers.cpp:22:5:22:9 | ref arg outer [inner, a] | provenance | | +| qualifiers.cpp:22:27:22:36 | call to user_input | qualifiers.cpp:22:5:22:38 | ... = ... | provenance | | +| qualifiers.cpp:23:10:23:14 | outer [inner, a] | qualifiers.cpp:23:16:23:20 | inner [a] | provenance | | +| qualifiers.cpp:23:16:23:20 | inner [a] | qualifiers.cpp:23:23:23:23 | a | provenance | | +| qualifiers.cpp:27:5:27:9 | ref arg outer [inner, a] | qualifiers.cpp:28:10:28:14 | outer [inner, a] | provenance | | +| qualifiers.cpp:27:11:27:18 | ref arg call to getInner [a] | qualifiers.cpp:27:5:27:9 | ref arg outer [inner, a] | provenance | | +| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | provenance | | +| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:27:11:27:18 | ref arg call to getInner [a] | provenance | | +| qualifiers.cpp:28:10:28:14 | outer [inner, a] | qualifiers.cpp:28:16:28:20 | inner [a] | provenance | | +| qualifiers.cpp:28:16:28:20 | inner [a] | qualifiers.cpp:28:23:28:23 | a | provenance | | +| qualifiers.cpp:32:17:32:21 | ref arg outer [inner, a] | qualifiers.cpp:33:10:33:14 | outer [inner, a] | provenance | | +| qualifiers.cpp:32:23:32:30 | ref arg call to getInner [a] | qualifiers.cpp:32:17:32:21 | ref arg outer [inner, a] | provenance | | +| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | provenance | | +| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:32:23:32:30 | ref arg call to getInner [a] | provenance | | +| qualifiers.cpp:33:10:33:14 | outer [inner, a] | qualifiers.cpp:33:16:33:20 | inner [a] | provenance | | +| qualifiers.cpp:33:16:33:20 | inner [a] | qualifiers.cpp:33:23:33:23 | a | provenance | | +| qualifiers.cpp:37:19:37:35 | ref arg * ... [a] | qualifiers.cpp:37:26:37:33 | call to getInner [inner post update] [a] | provenance | | +| qualifiers.cpp:37:20:37:24 | ref arg outer [inner, a] | qualifiers.cpp:38:10:38:14 | outer [inner, a] | provenance | | +| qualifiers.cpp:37:26:37:33 | call to getInner [inner post update] [a] | qualifiers.cpp:37:20:37:24 | ref arg outer [inner, a] | provenance | | +| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | provenance | | +| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:37:19:37:35 | ref arg * ... [a] | provenance | | +| qualifiers.cpp:38:10:38:14 | outer [inner, a] | qualifiers.cpp:38:16:38:20 | inner [a] | provenance | | +| qualifiers.cpp:38:16:38:20 | inner [a] | qualifiers.cpp:38:23:38:23 | a | provenance | | +| qualifiers.cpp:42:5:42:40 | ... = ... | qualifiers.cpp:42:6:42:22 | * ... [post update] [a] | provenance | | +| qualifiers.cpp:42:6:42:22 | * ... [post update] [a] | qualifiers.cpp:42:13:42:20 | call to getInner [inner post update] [a] | provenance | | +| qualifiers.cpp:42:7:42:11 | ref arg outer [inner, a] | qualifiers.cpp:43:10:43:14 | outer [inner, a] | provenance | | +| qualifiers.cpp:42:13:42:20 | call to getInner [inner post update] [a] | qualifiers.cpp:42:7:42:11 | ref arg outer [inner, a] | provenance | | +| qualifiers.cpp:42:29:42:38 | call to user_input | qualifiers.cpp:42:5:42:40 | ... = ... | provenance | | +| qualifiers.cpp:43:10:43:14 | outer [inner, a] | qualifiers.cpp:43:16:43:20 | inner [a] | provenance | | +| qualifiers.cpp:43:16:43:20 | inner [a] | qualifiers.cpp:43:23:43:23 | a | provenance | | +| qualifiers.cpp:47:5:47:42 | ... = ... | qualifiers.cpp:47:15:47:22 | call to getInner [post update] [a] | provenance | | +| qualifiers.cpp:47:6:47:11 | ref arg & ... [inner, a] | qualifiers.cpp:48:10:48:14 | outer [inner, a] | provenance | | +| qualifiers.cpp:47:15:47:22 | call to getInner [post update] [a] | qualifiers.cpp:47:6:47:11 | ref arg & ... [inner, a] | provenance | | +| qualifiers.cpp:47:31:47:40 | call to user_input | qualifiers.cpp:47:5:47:42 | ... = ... | provenance | | +| qualifiers.cpp:48:10:48:14 | outer [inner, a] | qualifiers.cpp:48:16:48:20 | inner [a] | provenance | | +| qualifiers.cpp:48:16:48:20 | inner [a] | qualifiers.cpp:48:23:48:23 | a | provenance | | +| realistic.cpp:41:17:41:17 | o | realistic.cpp:41:17:41:17 | o | provenance | | +| realistic.cpp:53:9:53:11 | foo [post update] [bar, baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | foo [bar, baz, userInput, bufferLen] | provenance | | +| realistic.cpp:53:9:53:18 | access to array [post update] [baz, userInput, bufferLen] | realistic.cpp:53:13:53:15 | bar [inner post update] [baz, userInput, bufferLen] | provenance | | +| realistic.cpp:53:9:53:66 | ... = ... | realistic.cpp:53:25:53:33 | userInput [post update] [bufferLen] | provenance | | +| realistic.cpp:53:13:53:15 | bar [inner post update] [baz, userInput, bufferLen] | realistic.cpp:53:9:53:11 | foo [post update] [bar, baz, userInput, bufferLen] | provenance | | +| realistic.cpp:53:20:53:22 | baz [post update] [userInput, bufferLen] | realistic.cpp:53:9:53:18 | access to array [post update] [baz, userInput, bufferLen] | provenance | | +| realistic.cpp:53:25:53:33 | userInput [post update] [bufferLen] | realistic.cpp:53:20:53:22 | baz [post update] [userInput, bufferLen] | provenance | | +| realistic.cpp:53:55:53:64 | call to user_input | realistic.cpp:53:9:53:66 | ... = ... | provenance | | +| realistic.cpp:61:21:61:23 | foo [bar, baz, userInput, bufferLen] | realistic.cpp:61:25:61:27 | bar [baz, userInput, bufferLen] | provenance | | +| realistic.cpp:61:21:61:23 | foo [post update] [bar, baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | foo [bar, baz, userInput, bufferLen] | provenance | | +| realistic.cpp:61:21:61:30 | access to array [baz, userInput, bufferLen] | realistic.cpp:61:32:61:34 | baz [userInput, bufferLen] | provenance | | +| realistic.cpp:61:21:61:30 | access to array [post update] [baz, userInput, bufferLen] | realistic.cpp:61:25:61:27 | bar [inner post update] [baz, userInput, bufferLen] | provenance | | +| realistic.cpp:61:25:61:27 | bar [baz, userInput, bufferLen] | realistic.cpp:61:21:61:30 | access to array [baz, userInput, bufferLen] | provenance | | +| realistic.cpp:61:25:61:27 | bar [inner post update] [baz, userInput, bufferLen] | realistic.cpp:61:21:61:23 | foo [post update] [bar, baz, userInput, bufferLen] | provenance | | +| realistic.cpp:61:32:61:34 | baz [post update] [userInput, bufferLen] | realistic.cpp:61:21:61:30 | access to array [post update] [baz, userInput, bufferLen] | provenance | | +| realistic.cpp:61:32:61:34 | baz [userInput, bufferLen] | realistic.cpp:61:37:61:45 | userInput [bufferLen] | provenance | | +| realistic.cpp:61:37:61:45 | userInput [bufferLen] | realistic.cpp:61:47:61:55 | bufferLen | provenance | | +| realistic.cpp:61:37:61:45 | userInput [bufferLen] | realistic.cpp:61:47:61:55 | bufferLen | provenance | | +| realistic.cpp:61:37:61:45 | userInput [post update] [bufferLen] | realistic.cpp:61:32:61:34 | baz [post update] [userInput, bufferLen] | provenance | | +| realistic.cpp:61:47:61:55 | bufferLen | realistic.cpp:41:17:41:17 | o | provenance | | +| realistic.cpp:61:47:61:55 | bufferLen | realistic.cpp:61:47:61:55 | ref arg bufferLen | provenance | | +| realistic.cpp:61:47:61:55 | ref arg bufferLen | realistic.cpp:61:37:61:45 | userInput [post update] [bufferLen] | provenance | | +| simple.cpp:18:9:18:9 | this [a_] | simple.cpp:18:22:18:23 | this [a_] | provenance | | +| simple.cpp:18:22:18:23 | this [a_] | simple.cpp:18:22:18:23 | a_ | provenance | | +| simple.cpp:19:9:19:9 | this [b_] | simple.cpp:19:22:19:23 | this [b_] | provenance | | +| simple.cpp:19:22:19:23 | this [b_] | simple.cpp:19:22:19:23 | b_ | provenance | | +| simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:29 | ... = ... | provenance | | +| simple.cpp:20:24:20:29 | ... = ... | simple.cpp:20:24:20:25 | this [post update] [a_] | provenance | | +| simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:29 | ... = ... | provenance | | +| simple.cpp:21:24:21:29 | ... = ... | simple.cpp:21:24:21:25 | this [post update] [b_] | provenance | | +| simple.cpp:26:15:26:15 | f [a_] | simple.cpp:28:10:28:10 | f [a_] | provenance | | +| simple.cpp:26:15:26:15 | f [b_] | simple.cpp:29:10:29:10 | f [b_] | provenance | | +| simple.cpp:28:10:28:10 | f [a_] | simple.cpp:18:9:18:9 | this [a_] | provenance | | +| simple.cpp:28:10:28:10 | f [a_] | simple.cpp:28:12:28:12 | call to a | provenance | | +| simple.cpp:29:10:29:10 | f [b_] | simple.cpp:19:9:19:9 | this [b_] | provenance | | +| simple.cpp:29:10:29:10 | f [b_] | simple.cpp:29:12:29:12 | call to b | provenance | | +| simple.cpp:39:5:39:5 | ref arg f [a_] | simple.cpp:45:9:45:9 | f [a_] | provenance | | +| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | provenance | | +| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:39:5:39:5 | ref arg f [a_] | provenance | | +| simple.cpp:40:5:40:5 | ref arg g [b_] | simple.cpp:48:9:48:9 | g [b_] | provenance | | +| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | provenance | | +| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:40:5:40:5 | ref arg g [b_] | provenance | | +| simple.cpp:41:5:41:5 | ref arg h [a_] | simple.cpp:51:9:51:9 | h [a_] | provenance | | +| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | provenance | | +| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:41:5:41:5 | ref arg h [a_] | provenance | | +| simple.cpp:42:5:42:5 | ref arg h [b_] | simple.cpp:51:9:51:9 | h [b_] | provenance | | +| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | provenance | | +| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:42:5:42:5 | ref arg h [b_] | provenance | | +| simple.cpp:45:9:45:9 | f [a_] | simple.cpp:26:15:26:15 | f [a_] | provenance | | +| simple.cpp:48:9:48:9 | g [b_] | simple.cpp:26:15:26:15 | f [b_] | provenance | | +| simple.cpp:51:9:51:9 | h [a_] | simple.cpp:26:15:26:15 | f [a_] | provenance | | +| simple.cpp:51:9:51:9 | h [b_] | simple.cpp:26:15:26:15 | f [b_] | provenance | | +| simple.cpp:65:5:65:5 | a [post update] [i] | simple.cpp:67:10:67:11 | a2 [i] | provenance | | +| simple.cpp:65:5:65:22 | ... = ... | simple.cpp:65:5:65:5 | a [post update] [i] | provenance | | +| simple.cpp:65:11:65:20 | call to user_input | simple.cpp:65:5:65:22 | ... = ... | provenance | | +| simple.cpp:67:10:67:11 | a2 [i] | simple.cpp:67:13:67:13 | i | provenance | | +| simple.cpp:78:9:78:15 | this [f2, f1] | simple.cpp:79:16:79:17 | this [f2, f1] | provenance | | +| simple.cpp:79:16:79:17 | f2 [f1] | simple.cpp:79:19:79:20 | f1 | provenance | | +| simple.cpp:79:16:79:17 | this [f2, f1] | simple.cpp:79:16:79:17 | f2 [f1] | provenance | | +| simple.cpp:83:9:83:10 | f2 [post update] [f1] | simple.cpp:83:9:83:10 | this [post update] [f2, f1] | provenance | | +| simple.cpp:83:9:83:10 | this [post update] [f2, f1] | simple.cpp:84:14:84:20 | this [f2, f1] | provenance | | +| simple.cpp:83:9:83:28 | ... = ... | simple.cpp:83:9:83:10 | f2 [post update] [f1] | provenance | | +| simple.cpp:83:17:83:26 | call to user_input | simple.cpp:83:9:83:28 | ... = ... | provenance | | +| simple.cpp:84:14:84:20 | this [f2, f1] | simple.cpp:78:9:78:15 | this [f2, f1] | provenance | | +| simple.cpp:84:14:84:20 | this [f2, f1] | simple.cpp:84:14:84:20 | call to getf2f1 | provenance | | +| simple.cpp:92:5:92:5 | a [post update] [i] | simple.cpp:94:10:94:11 | a2 [i] | provenance | | +| simple.cpp:92:5:92:22 | ... = ... | simple.cpp:92:5:92:5 | a [post update] [i] | provenance | | +| simple.cpp:92:11:92:20 | call to user_input | simple.cpp:92:5:92:22 | ... = ... | provenance | | +| simple.cpp:94:10:94:11 | a2 [i] | simple.cpp:94:13:94:13 | i | provenance | | +| struct_init.c:14:24:14:25 | ab [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | | +| struct_init.c:14:24:14:25 | ab [a] | struct_init.c:15:8:15:9 | ab [a] | provenance | | +| struct_init.c:15:8:15:9 | ab [a] | struct_init.c:15:12:15:12 | a | provenance | | +| struct_init.c:15:8:15:9 | ab [a] | struct_init.c:15:12:15:12 | a | provenance | | +| struct_init.c:15:8:15:9 | ab [post update] [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | | +| struct_init.c:15:12:15:12 | a | realistic.cpp:41:17:41:17 | o | provenance | | +| struct_init.c:15:12:15:12 | a | struct_init.c:15:12:15:12 | ref arg a | provenance | | +| struct_init.c:15:12:15:12 | ref arg a | struct_init.c:15:8:15:9 | ab [post update] [a] | provenance | | +| struct_init.c:20:17:20:36 | {...} [a] | struct_init.c:22:8:22:9 | ab [a] | provenance | | +| struct_init.c:20:17:20:36 | {...} [a] | struct_init.c:24:11:24:12 | ab [a] | provenance | | +| struct_init.c:20:17:20:36 | {...} [a] | struct_init.c:28:6:28:7 | ab [a] | provenance | | +| struct_init.c:20:20:20:29 | call to user_input | struct_init.c:20:17:20:36 | {...} [a] | provenance | | +| struct_init.c:22:8:22:9 | ab [a] | struct_init.c:22:11:22:11 | a | provenance | | +| struct_init.c:22:8:22:9 | ab [a] | struct_init.c:22:11:22:11 | a | provenance | | +| struct_init.c:22:8:22:9 | ab [post update] [a] | struct_init.c:24:11:24:12 | ab [a] | provenance | | +| struct_init.c:22:8:22:9 | ab [post update] [a] | struct_init.c:28:6:28:7 | ab [a] | provenance | | +| struct_init.c:22:11:22:11 | a | realistic.cpp:41:17:41:17 | o | provenance | | +| struct_init.c:22:11:22:11 | a | struct_init.c:22:11:22:11 | ref arg a | provenance | | +| struct_init.c:22:11:22:11 | ref arg a | struct_init.c:22:8:22:9 | ab [post update] [a] | provenance | | +| struct_init.c:24:10:24:12 | & ... [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | | +| struct_init.c:24:10:24:12 | & ... [a] | struct_init.c:24:10:24:12 | ref arg & ... [a] | provenance | | +| struct_init.c:24:10:24:12 | ref arg & ... [a] | struct_init.c:28:6:28:7 | ab [a] | provenance | | +| struct_init.c:24:11:24:12 | ab [a] | struct_init.c:24:10:24:12 | & ... [a] | provenance | | +| struct_init.c:26:23:29:3 | {...} [nestedAB, a] | struct_init.c:31:8:31:12 | outer [nestedAB, a] | provenance | | +| struct_init.c:26:23:29:3 | {...} [nestedAB, a] | struct_init.c:36:11:36:15 | outer [nestedAB, a] | provenance | | +| struct_init.c:26:23:29:3 | {...} [pointerAB, a] | struct_init.c:33:8:33:12 | outer [pointerAB, a] | provenance | | +| struct_init.c:27:5:27:23 | {...} [a] | struct_init.c:26:23:29:3 | {...} [nestedAB, a] | provenance | | +| struct_init.c:27:7:27:16 | call to user_input | struct_init.c:27:5:27:23 | {...} [a] | provenance | | +| struct_init.c:28:5:28:7 | & ... [a] | struct_init.c:26:23:29:3 | {...} [pointerAB, a] | provenance | | +| struct_init.c:28:6:28:7 | ab [a] | struct_init.c:28:5:28:7 | & ... [a] | provenance | | +| struct_init.c:31:8:31:12 | outer [nestedAB, a] | struct_init.c:31:14:31:21 | nestedAB [a] | provenance | | +| struct_init.c:31:8:31:12 | outer [post update] [nestedAB, a] | struct_init.c:36:11:36:15 | outer [nestedAB, a] | provenance | | +| struct_init.c:31:14:31:21 | nestedAB [a] | struct_init.c:31:23:31:23 | a | provenance | | +| struct_init.c:31:14:31:21 | nestedAB [a] | struct_init.c:31:23:31:23 | a | provenance | | +| struct_init.c:31:14:31:21 | nestedAB [post update] [a] | struct_init.c:31:8:31:12 | outer [post update] [nestedAB, a] | provenance | | +| struct_init.c:31:23:31:23 | a | realistic.cpp:41:17:41:17 | o | provenance | | +| struct_init.c:31:23:31:23 | a | struct_init.c:31:23:31:23 | ref arg a | provenance | | +| struct_init.c:31:23:31:23 | ref arg a | struct_init.c:31:14:31:21 | nestedAB [post update] [a] | provenance | | +| struct_init.c:33:8:33:12 | outer [pointerAB, a] | struct_init.c:33:14:33:22 | pointerAB [a] | provenance | | +| struct_init.c:33:14:33:22 | pointerAB [a] | struct_init.c:33:25:33:25 | a | provenance | | +| struct_init.c:36:10:36:24 | & ... [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | | +| struct_init.c:36:11:36:15 | outer [nestedAB, a] | struct_init.c:36:17:36:24 | nestedAB [a] | provenance | | +| struct_init.c:36:17:36:24 | nestedAB [a] | struct_init.c:36:10:36:24 | & ... [a] | provenance | | +| struct_init.c:40:17:40:36 | {...} [a] | struct_init.c:43:6:43:7 | ab [a] | provenance | | +| struct_init.c:40:20:40:29 | call to user_input | struct_init.c:40:17:40:36 | {...} [a] | provenance | | +| struct_init.c:41:23:44:3 | {...} [pointerAB, a] | struct_init.c:46:10:46:14 | outer [pointerAB, a] | provenance | | +| struct_init.c:43:5:43:7 | & ... [a] | struct_init.c:41:23:44:3 | {...} [pointerAB, a] | provenance | | +| struct_init.c:43:6:43:7 | ab [a] | struct_init.c:43:5:43:7 | & ... [a] | provenance | | +| struct_init.c:46:10:46:14 | outer [pointerAB, a] | struct_init.c:46:16:46:24 | pointerAB [a] | provenance | | +| struct_init.c:46:16:46:24 | pointerAB [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | | nodes | A.cpp:23:10:23:10 | c | semmle.label | c | | A.cpp:25:7:25:10 | this [post update] [c] | semmle.label | this [post update] [c] | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp index 555f39779bf2..8eeb80a0f83e 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp @@ -71,11 +71,11 @@ void test_pair() sink(i.second); // $ MISSING: ast,ir sink(i); // $ ast,ir sink(j.first); - sink(j.second); // $ SPURIOUS: ast - sink(j); // $ SPURIOUS: ast + sink(j.second); // $ SPURIOUS: ast,ir + sink(j); // $ SPURIOUS: ast,ir sink(k.first); - sink(k.second); // $ SPURIOUS: ast - sink(k); // $ SPURIOUS: ast + sink(k.second); // $ SPURIOUS: ast,ir + sink(k); // $ SPURIOUS: ast,ir sink(l.first); sink(l.second); // $ MISSING: ast,ir sink(l); // $ ast,ir @@ -196,10 +196,10 @@ void test_map() sink(m18); // $ ast,ir m15.swap(m16); m17.swap(m18); - sink(m15); // $ SPURIOUS: ast + sink(m15); // $ SPURIOUS: ast,ir sink(m16); // $ ast,ir sink(m17); // $ ast,ir - sink(m18); // $ SPURIOUS: ast + sink(m18); // $ SPURIOUS: ast,ir // merge std::map m19, m20, m21, m22; @@ -345,10 +345,10 @@ void test_unordered_map() sink(m18); // $ ast,ir m15.swap(m16); m17.swap(m18); - sink(m15); // $ SPURIOUS: ast + sink(m15); // $ SPURIOUS: ast,ir sink(m16); // $ ast,ir sink(m17); // $ ast,ir - sink(m18); // $ SPURIOUS: ast + sink(m18); // $ SPURIOUS: ast,ir // merge std::unordered_map m19, m20, m21, m22; diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp index 7c906fb72d21..c6c19d90089b 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/set.cpp @@ -81,10 +81,10 @@ void test_set() sink(s15); // $ ast,ir s12.swap(s13); s14.swap(s15); - sink(s12); // $ SPURIOUS: ast + sink(s12); // $ SPURIOUS: ast,ir sink(s13); // $ ast,ir sink(s14); // $ ast,ir - sink(s15); // $ SPURIOUS: ast + sink(s15); // $ SPURIOUS: ast,ir // merge std::set s16, s17, s18, s19; @@ -193,10 +193,10 @@ void test_unordered_set() sink(s15); // $ ast,ir s12.swap(s13); s14.swap(s15); - sink(s12); // $ SPURIOUS: ast + sink(s12); // $ SPURIOUS: ast,ir sink(s13); // $ ast,ir sink(s14); // $ ast,ir - sink(s15); // $ SPURIOUS: ast + sink(s15); // $ SPURIOUS: ast,ir // merge std::unordered_set s16, s17, s18, s19; diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp index 4f2c4afd6b0d..e2b99945724a 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/string.cpp @@ -280,9 +280,9 @@ void test_string_swap() { s4.swap(s3); sink(s1); // $ ast,ir - sink(s2); // $ SPURIOUS: ast + sink(s2); // $ SPURIOUS: ast,ir sink(s3); // $ ast,ir - sink(s4); // $ SPURIOUS: ast + sink(s4); // $ SPURIOUS: ast,ir } void test_string_clear() { diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp index 57310dfef6fd..a84b3606f922 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/stringstream.cpp @@ -118,9 +118,9 @@ void test_stringstream_swap() ss4.swap(ss3); sink(ss1); // $ ast,ir - sink(ss2); // $ SPURIOUS: ast + sink(ss2); // $ SPURIOUS: ast,ir sink(ss3); // $ ast,ir - sink(ss4); // $ SPURIOUS: ast + sink(ss4); // $ SPURIOUS: ast,ir } void test_stringstream_in() diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index 1ca4957b529b..eeefa6dd427b 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -212,7 +212,7 @@ void test_swap() { std::swap(x, y); - sink(x); // $ SPURIOUS: ast + sink(x); // $ SPURIOUS: ast,ir sink(y); // $ ast,ir } diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp index 14834e2a5e9d..a26ac8f05132 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp @@ -114,10 +114,10 @@ void test_vector_swap() { v1.swap(v2); v3.swap(v4); - sink(v1); // $ SPURIOUS: ast + sink(v1); // $ SPURIOUS: ast,ir sink(v2); // $ ast,ir sink(v3); // $ ast,ir - sink(v4); // $ SPURIOUS: ast + sink(v4); // $ SPURIOUS: ast,ir } void test_vector_clear() { diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 41fb6a467b0f..79eb2dc70f2c 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -9382,14 +9382,30 @@ ir.cpp: # 1054| getRightOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1054| Type = [IntType] int # 1054| ValueCategory = prvalue(load) +# 1059| [CopyAssignmentOperator] vector& vector::operator=(vector const&) +# 1059| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const vector & # 1059| [CopyAssignmentOperator] vector& vector::operator=(vector const&) # 1059| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const vector & -# 1059| [MoveAssignmentOperator] vector& vector::operator=(vector&&) +# 1059| [CopyConstructor] void vector::vector(vector const&) # 1059| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] vector && +#-----| Type = [LValueReferenceType] const vector & +# 1059| [CopyConstructor] void vector::vector(vector const&) +# 1059| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const vector & +# 1060| [CopyAssignmentOperator] vector::iterator& vector::iterator::operator=(vector::iterator const public&) +# 1060| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const iterator & +# 1060| [MoveAssignmentOperator] vector::iterator& vector::iterator::operator=(vector::iterator&&) +# 1060| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] iterator && # 1060| [CopyAssignmentOperator] vector::iterator& vector::iterator::operator=(vector::iterator const public&) # 1060| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) @@ -9398,14 +9414,22 @@ ir.cpp: # 1060| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] iterator && +# 1062| [MemberFunction] vector::iterator& vector::iterator::operator++() +# 1062| : # 1062| [MemberFunction] vector::iterator& vector::iterator::operator++() # 1062| : # 1062| [MemberFunction] vector::iterator& vector::iterator::operator++() # 1062| : +# 1063| [ConstMemberFunction] ClassWithDestructor& vector::iterator::operator*() const +# 1063| : # 1063| [ConstMemberFunction] T& vector::iterator::operator*() const # 1063| : # 1063| [ConstMemberFunction] int& vector::iterator::operator*() const # 1063| : +# 1065| [ConstMemberFunction] bool vector::iterator::operator!=(vector::iterator) const +# 1065| : +# 1065| getParameter(0): [Parameter] right +# 1065| Type = [NestedStruct] iterator # 1065| [ConstMemberFunction] bool vector::iterator::operator!=(vector::iterator) const # 1065| : # 1065| getParameter(0): [Parameter] right @@ -9414,1208 +9438,1297 @@ ir.cpp: # 1065| : # 1065| getParameter(0): [Parameter] right # 1065| Type = [NestedStruct] iterator -# 1068| [ConstMemberFunction] vector::iterator vector::begin() const +# 1068| [Constructor] void vector::vector(ClassWithDestructor) # 1068| : -# 1068| [ConstMemberFunction] vector::iterator vector::begin() const +# 1068| getParameter(0): [Parameter] (unnamed parameter 0) +# 1068| Type = [Class] ClassWithDestructor +# 1068| [Constructor] void vector::vector(T) # 1068| : -# 1069| [ConstMemberFunction] vector::iterator vector::end() const -# 1069| : -# 1069| [ConstMemberFunction] vector::iterator vector::end() const +# 1068| getParameter(0): [Parameter] (unnamed parameter 0) +# 1068| Type = [TemplateParameter] T +# 1069| [Destructor] void vector::~vector() # 1069| : -# 1073| [Operator,TemplateFunction,TopLevelFunction] bool operator==(iterator, iterator) -# 1073| : -# 1073| getParameter(0): [Parameter] left -# 1073| Type = [TemplateParameter] iterator -# 1073| getParameter(1): [Parameter] right -# 1073| Type = [TemplateParameter] iterator -# 1075| [Operator,TemplateFunction,TopLevelFunction] bool operator!=(iterator, iterator) +# 1070| [ConstMemberFunction] vector::iterator vector::begin() const +# 1070| : +# 1070| [ConstMemberFunction] vector::iterator vector::begin() const +# 1070| : +# 1070| [ConstMemberFunction] vector::iterator vector::begin() const +# 1070| : +# 1071| [ConstMemberFunction] vector::iterator vector::end() const +# 1071| : +# 1071| [ConstMemberFunction] vector::iterator vector::end() const +# 1071| : +# 1071| [ConstMemberFunction] vector::iterator vector::end() const +# 1071| : +# 1075| [Operator,TemplateFunction,TopLevelFunction] bool operator==(iterator, iterator) # 1075| : # 1075| getParameter(0): [Parameter] left # 1075| Type = [TemplateParameter] iterator # 1075| getParameter(1): [Parameter] right # 1075| Type = [TemplateParameter] iterator -# 1077| [TopLevelFunction] void RangeBasedFor(vector const&) +# 1077| [Operator,TemplateFunction,TopLevelFunction] bool operator!=(iterator, iterator) # 1077| : -# 1077| getParameter(0): [Parameter] v -# 1077| Type = [LValueReferenceType] const vector & -# 1077| getEntryPoint(): [BlockStmt] { ... } -# 1078| getStmt(0): [RangeBasedForStmt] for(...:...) ... -# 1078| getChild(0): [DeclStmt] declaration -# 1078| getBeginEndDeclaration(): [DeclStmt] declaration -# 1078| getCondition(): [FunctionCall] call to operator!= -# 1078| Type = [BoolType] bool -# 1078| ValueCategory = prvalue -# 1078| getQualifier(): [VariableAccess] (__begin) -# 1078| Type = [NestedStruct] iterator -# 1078| ValueCategory = lvalue -# 1078| getArgument(0): [VariableAccess] (__end) -# 1078| Type = [NestedStruct] iterator -# 1078| ValueCategory = prvalue(load) +# 1077| getParameter(0): [Parameter] left +# 1077| Type = [TemplateParameter] iterator +# 1077| getParameter(1): [Parameter] right +# 1077| Type = [TemplateParameter] iterator +# 1079| [TopLevelFunction] void RangeBasedFor(vector const&) +# 1079| : +# 1079| getParameter(0): [Parameter] v +# 1079| Type = [LValueReferenceType] const vector & +# 1079| getEntryPoint(): [BlockStmt] { ... } +# 1080| getStmt(0): [RangeBasedForStmt] for(...:...) ... +# 1080| getChild(0): [DeclStmt] declaration +# 1080| getDeclarationEntry(0): (no string representation) +# 1080| Type = [LValueReferenceType] const vector & +#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) +# 1080| getExpr(): [VariableAccess] v +# 1080| Type = [LValueReferenceType] const vector & +# 1080| ValueCategory = prvalue(load) +# 1080| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1080| Type = [LValueReferenceType] const vector & +# 1080| ValueCategory = prvalue +# 1080| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1080| Type = [SpecifiedType] const vector +# 1080| ValueCategory = lvalue +# 1080| getBeginEndDeclaration(): [DeclStmt] declaration +# 1080| getDeclarationEntry(0): (no string representation) +# 1080| Type = [NestedStruct] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) +# 1080| getExpr(): [FunctionCall] call to begin +# 1080| Type = [NestedStruct] iterator +# 1080| ValueCategory = prvalue +# 1080| getQualifier(): [VariableAccess] (__range) +# 1080| Type = [LValueReferenceType] const vector & +# 1080| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +# 1080| getDeclarationEntry(1): (no string representation) +# 1080| Type = [NestedStruct] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) +# 1080| getExpr(): [FunctionCall] call to end +# 1080| Type = [NestedStruct] iterator +# 1080| ValueCategory = prvalue +# 1080| getQualifier(): [VariableAccess] (__range) +# 1080| Type = [LValueReferenceType] const vector & +# 1080| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +# 1080| getCondition(): [FunctionCall] call to operator!= +# 1080| Type = [BoolType] bool +# 1080| ValueCategory = prvalue +# 1080| getQualifier(): [VariableAccess] (__begin) +# 1080| Type = [NestedStruct] iterator +# 1080| ValueCategory = lvalue +# 1080| getArgument(0): [VariableAccess] (__end) +# 1080| Type = [NestedStruct] iterator +# 1080| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator #-----| ValueCategory = lvalue -# 1078| getUpdate(): [FunctionCall] call to operator++ -# 1078| Type = [LValueReferenceType] iterator & -# 1078| ValueCategory = prvalue -# 1078| getQualifier(): [VariableAccess] (__begin) -# 1078| Type = [NestedStruct] iterator -# 1078| ValueCategory = lvalue -# 1078| getChild(4): [DeclStmt] declaration -# 1078| getStmt(): [BlockStmt] { ... } -# 1079| getStmt(0): [IfStmt] if (...) ... -# 1079| getCondition(): [GTExpr] ... > ... -# 1079| Type = [BoolType] bool -# 1079| ValueCategory = prvalue -# 1079| getGreaterOperand(): [VariableAccess] e -# 1079| Type = [IntType] int -# 1079| ValueCategory = prvalue(load) -# 1079| getLesserOperand(): [Literal] 0 -# 1079| Type = [IntType] int -# 1079| Value = [Literal] 0 -# 1079| ValueCategory = prvalue -# 1079| getThen(): [BlockStmt] { ... } -# 1080| getStmt(0): [ContinueStmt] continue; -# 1078| getStmt(1): [LabelStmt] label ...: -# 1078| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1078| Type = [NestedStruct] iterator -# 1078| ValueCategory = lvalue -# 1084| getStmt(1): [RangeBasedForStmt] for(...:...) ... -# 1084| getChild(0): [DeclStmt] declaration -# 1084| getBeginEndDeclaration(): [DeclStmt] declaration -# 1084| getCondition(): [FunctionCall] call to operator!= -# 1084| Type = [BoolType] bool -# 1084| ValueCategory = prvalue -# 1084| getQualifier(): [VariableAccess] (__begin) -# 1084| Type = [NestedStruct] iterator -# 1084| ValueCategory = lvalue -# 1084| getArgument(0): [VariableAccess] (__end) -# 1084| Type = [NestedStruct] iterator -# 1084| ValueCategory = prvalue(load) +# 1080| getUpdate(): [FunctionCall] call to operator++ +# 1080| Type = [LValueReferenceType] iterator & +# 1080| ValueCategory = prvalue +# 1080| getQualifier(): [VariableAccess] (__begin) +# 1080| Type = [NestedStruct] iterator +# 1080| ValueCategory = lvalue +# 1080| getChild(4): [DeclStmt] declaration +# 1080| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e +# 1080| Type = [IntType] int +# 1080| getVariable().getInitializer(): [Initializer] initializer for e +# 1080| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 1080| Type = [LValueReferenceType] int & +# 1080| ValueCategory = prvalue +# 1080| getQualifier(): [VariableAccess] (__begin) +# 1080| Type = [NestedStruct] iterator +# 1080| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator +#-----| ValueCategory = lvalue +# 1080| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1080| Type = [IntType] int +# 1080| ValueCategory = prvalue(load) +# 1080| getStmt(): [BlockStmt] { ... } +# 1081| getStmt(0): [IfStmt] if (...) ... +# 1081| getCondition(): [GTExpr] ... > ... +# 1081| Type = [BoolType] bool +# 1081| ValueCategory = prvalue +# 1081| getGreaterOperand(): [VariableAccess] e +# 1081| Type = [IntType] int +# 1081| ValueCategory = prvalue(load) +# 1081| getLesserOperand(): [Literal] 0 +# 1081| Type = [IntType] int +# 1081| Value = [Literal] 0 +# 1081| ValueCategory = prvalue +# 1081| getThen(): [BlockStmt] { ... } +# 1082| getStmt(0): [ContinueStmt] continue; +# 1080| getStmt(1): [LabelStmt] label ...: +# 1080| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1080| Type = [NestedStruct] iterator +# 1080| ValueCategory = lvalue +# 1086| getStmt(1): [RangeBasedForStmt] for(...:...) ... +# 1086| getChild(0): [DeclStmt] declaration +# 1086| getDeclarationEntry(0): (no string representation) +# 1086| Type = [LValueReferenceType] const vector & +#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) +# 1086| getExpr(): [VariableAccess] v +# 1086| Type = [LValueReferenceType] const vector & +# 1086| ValueCategory = prvalue(load) +# 1086| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1086| Type = [LValueReferenceType] const vector & +# 1086| ValueCategory = prvalue +# 1086| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1086| Type = [SpecifiedType] const vector +# 1086| ValueCategory = lvalue +# 1086| getBeginEndDeclaration(): [DeclStmt] declaration +# 1086| getDeclarationEntry(0): (no string representation) +# 1086| Type = [NestedStruct] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) +# 1086| getExpr(): [FunctionCall] call to begin +# 1086| Type = [NestedStruct] iterator +# 1086| ValueCategory = prvalue +# 1086| getQualifier(): [VariableAccess] (__range) +# 1086| Type = [LValueReferenceType] const vector & +# 1086| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +# 1086| getDeclarationEntry(1): (no string representation) +# 1086| Type = [NestedStruct] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) +# 1086| getExpr(): [FunctionCall] call to end +# 1086| Type = [NestedStruct] iterator +# 1086| ValueCategory = prvalue +# 1086| getQualifier(): [VariableAccess] (__range) +# 1086| Type = [LValueReferenceType] const vector & +# 1086| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +# 1086| getCondition(): [FunctionCall] call to operator!= +# 1086| Type = [BoolType] bool +# 1086| ValueCategory = prvalue +# 1086| getQualifier(): [VariableAccess] (__begin) +# 1086| Type = [NestedStruct] iterator +# 1086| ValueCategory = lvalue +# 1086| getArgument(0): [VariableAccess] (__end) +# 1086| Type = [NestedStruct] iterator +# 1086| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator #-----| ValueCategory = lvalue -# 1084| getUpdate(): [FunctionCall] call to operator++ -# 1084| Type = [LValueReferenceType] iterator & -# 1084| ValueCategory = prvalue -# 1084| getQualifier(): [VariableAccess] (__begin) -# 1084| Type = [NestedStruct] iterator -# 1084| ValueCategory = lvalue -# 1084| getChild(4): [DeclStmt] declaration -# 1084| getStmt(): [BlockStmt] { ... } -# 1085| getStmt(0): [IfStmt] if (...) ... -# 1085| getCondition(): [LTExpr] ... < ... -# 1085| Type = [BoolType] bool -# 1085| ValueCategory = prvalue -# 1085| getLesserOperand(): [VariableAccess] e -# 1085| Type = [LValueReferenceType] const int & -# 1085| ValueCategory = prvalue(load) -# 1085| getGreaterOperand(): [Literal] 5 -# 1085| Type = [IntType] int -# 1085| Value = [Literal] 5 -# 1085| ValueCategory = prvalue -# 1085| getLesserOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1085| Type = [IntType] int -# 1085| ValueCategory = prvalue(load) -# 1085| getThen(): [BlockStmt] { ... } -# 1086| getStmt(0): [BreakStmt] break; -# 1084| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1084| Type = [NestedStruct] iterator -# 1084| ValueCategory = lvalue -# 1088| getStmt(2): [LabelStmt] label ...: -# 1089| getStmt(3): [ReturnStmt] return ... -# 1108| [TopLevelFunction] int AsmStmt(int) -# 1108| : -# 1108| getParameter(0): [Parameter] x -# 1108| Type = [IntType] int -# 1108| getEntryPoint(): [BlockStmt] { ... } -# 1109| getStmt(0): [AsmStmt] asm statement -# 1110| getStmt(1): [ReturnStmt] return ... -# 1110| getExpr(): [VariableAccess] x -# 1110| Type = [IntType] int -# 1110| ValueCategory = prvalue(load) -# 1113| [TopLevelFunction] void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) -# 1113| : -# 1113| getParameter(0): [Parameter] a -# 1113| Type = [LValueReferenceType] unsigned int & -# 1113| getParameter(1): [Parameter] b -# 1113| Type = [IntType] unsigned int -# 1113| getParameter(2): [Parameter] c -# 1113| Type = [LValueReferenceType] unsigned int & -# 1113| getParameter(3): [Parameter] d -# 1113| Type = [IntType] unsigned int -# 1114| getEntryPoint(): [BlockStmt] { ... } -# 1115| getStmt(0): [AsmStmt] asm statement -# 1118| getChild(0): [VariableAccess] a -# 1118| Type = [LValueReferenceType] unsigned int & -# 1118| ValueCategory = prvalue(load) -# 1118| getChild(1): [VariableAccess] b -# 1118| Type = [IntType] unsigned int -# 1118| ValueCategory = lvalue -# 1118| getChild(2): [VariableAccess] c -# 1118| Type = [LValueReferenceType] unsigned int & -# 1118| ValueCategory = prvalue(load) -# 1118| getChild(3): [VariableAccess] d -# 1118| Type = [IntType] unsigned int -# 1118| ValueCategory = prvalue(load) -# 1118| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1118| Type = [IntType] unsigned int -# 1118| ValueCategory = lvalue -# 1118| getChild(2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1118| Type = [IntType] unsigned int -# 1118| ValueCategory = prvalue(load) -# 1120| getStmt(1): [ReturnStmt] return ... -# 1122| [TopLevelFunction] void ExternDeclarations() -# 1122| : -# 1123| getEntryPoint(): [BlockStmt] { ... } -# 1124| getStmt(0): [DeclStmt] declaration -# 1124| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1124| Type = [IntType] int -# 1125| getStmt(1): [DeclStmt] declaration -# 1125| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1125| Type = [IntType] int -# 1126| getStmt(2): [DeclStmt] declaration -# 1126| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1086| getUpdate(): [FunctionCall] call to operator++ +# 1086| Type = [LValueReferenceType] iterator & +# 1086| ValueCategory = prvalue +# 1086| getQualifier(): [VariableAccess] (__begin) +# 1086| Type = [NestedStruct] iterator +# 1086| ValueCategory = lvalue +# 1086| getChild(4): [DeclStmt] declaration +# 1086| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e +# 1086| Type = [LValueReferenceType] const int & +# 1086| getVariable().getInitializer(): [Initializer] initializer for e +# 1086| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 1086| Type = [LValueReferenceType] int & +# 1086| ValueCategory = prvalue +# 1086| getQualifier(): [VariableAccess] (__begin) +# 1086| Type = [NestedStruct] iterator +# 1086| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator +#-----| ValueCategory = lvalue +# 1086| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1086| Type = [LValueReferenceType] const int & +# 1086| ValueCategory = prvalue +# 1086| getExpr(): [CStyleCast] (const int)... +# 1086| Conversion = [GlvalueConversion] glvalue conversion +# 1086| Type = [SpecifiedType] const int +# 1086| ValueCategory = lvalue +# 1086| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1086| Type = [IntType] int +# 1086| ValueCategory = lvalue +# 1086| getStmt(): [BlockStmt] { ... } +# 1087| getStmt(0): [IfStmt] if (...) ... +# 1087| getCondition(): [LTExpr] ... < ... +# 1087| Type = [BoolType] bool +# 1087| ValueCategory = prvalue +# 1087| getLesserOperand(): [VariableAccess] e +# 1087| Type = [LValueReferenceType] const int & +# 1087| ValueCategory = prvalue(load) +# 1087| getGreaterOperand(): [Literal] 5 +# 1087| Type = [IntType] int +# 1087| Value = [Literal] 5 +# 1087| ValueCategory = prvalue +# 1087| getLesserOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1087| Type = [IntType] int +# 1087| ValueCategory = prvalue(load) +# 1087| getThen(): [BlockStmt] { ... } +# 1088| getStmt(0): [BreakStmt] break; +# 1086| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1086| Type = [NestedStruct] iterator +# 1086| ValueCategory = lvalue +# 1090| getStmt(2): [LabelStmt] label ...: +# 1091| getStmt(3): [ReturnStmt] return ... +# 1110| [TopLevelFunction] int AsmStmt(int) +# 1110| : +# 1110| getParameter(0): [Parameter] x +# 1110| Type = [IntType] int +# 1110| getEntryPoint(): [BlockStmt] { ... } +# 1111| getStmt(0): [AsmStmt] asm statement +# 1112| getStmt(1): [ReturnStmt] return ... +# 1112| getExpr(): [VariableAccess] x +# 1112| Type = [IntType] int +# 1112| ValueCategory = prvalue(load) +# 1115| [TopLevelFunction] void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) +# 1115| : +# 1115| getParameter(0): [Parameter] a +# 1115| Type = [LValueReferenceType] unsigned int & +# 1115| getParameter(1): [Parameter] b +# 1115| Type = [IntType] unsigned int +# 1115| getParameter(2): [Parameter] c +# 1115| Type = [LValueReferenceType] unsigned int & +# 1115| getParameter(3): [Parameter] d +# 1115| Type = [IntType] unsigned int +# 1116| getEntryPoint(): [BlockStmt] { ... } +# 1117| getStmt(0): [AsmStmt] asm statement +# 1120| getChild(0): [VariableAccess] a +# 1120| Type = [LValueReferenceType] unsigned int & +# 1120| ValueCategory = prvalue(load) +# 1120| getChild(1): [VariableAccess] b +# 1120| Type = [IntType] unsigned int +# 1120| ValueCategory = lvalue +# 1120| getChild(2): [VariableAccess] c +# 1120| Type = [LValueReferenceType] unsigned int & +# 1120| ValueCategory = prvalue(load) +# 1120| getChild(3): [VariableAccess] d +# 1120| Type = [IntType] unsigned int +# 1120| ValueCategory = prvalue(load) +# 1120| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1120| Type = [IntType] unsigned int +# 1120| ValueCategory = lvalue +# 1120| getChild(2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1120| Type = [IntType] unsigned int +# 1120| ValueCategory = prvalue(load) +# 1122| getStmt(1): [ReturnStmt] return ... +# 1124| [TopLevelFunction] void ExternDeclarations() +# 1124| : +# 1125| getEntryPoint(): [BlockStmt] { ... } +# 1126| getStmt(0): [DeclStmt] declaration +# 1126| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g # 1126| Type = [IntType] int -# 1126| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of f -# 1126| Type = [IntType] int -# 1127| getStmt(3): [DeclStmt] declaration -# 1127| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z -# 1127| Type = [IntType] int -# 1127| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of w +# 1127| getStmt(1): [DeclStmt] declaration +# 1127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1127| Type = [IntType] int -# 1127| getDeclarationEntry(2): [VariableDeclarationEntry] definition of h -# 1127| Type = [IntType] int -# 1128| getStmt(4): [DeclStmt] declaration -# 1128| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of d -# 1128| Type = [CTypedefType,LocalTypedefType] d -# 1129| getStmt(5): [ReturnStmt] return ... -# 1126| [TopLevelFunction] int f(float) -# 1126| : -# 1126| getParameter(0): [Parameter] (unnamed parameter 0) -# 1126| Type = [FloatType] float -# 1127| [TopLevelFunction] int z(float) -# 1127| : -# 1127| getParameter(0): [Parameter] (unnamed parameter 0) -# 1127| Type = [FloatType] float -# 1127| [TopLevelFunction] int w(float) -# 1127| : -# 1127| getParameter(0): [Parameter] (unnamed parameter 0) -# 1127| Type = [FloatType] float -# 1137| [TopLevelFunction] void ExternDeclarationsInMacro() -# 1137| : -# 1138| getEntryPoint(): [BlockStmt] { ... } -# 1139| getStmt(0): [DeclStmt] declaration -# 1139| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1139| Type = [IntType] int -# 1139| getStmt(1): [ForStmt] for(...;...;...) ... -# 1139| getInitialization(): [DeclStmt] declaration -# 1139| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1139| Type = [IntType] int -# 1139| getVariable().getInitializer(): [Initializer] initializer for i -# 1139| getExpr(): [Literal] 0 -# 1139| Type = [IntType] int -# 1139| Value = [Literal] 0 -# 1139| ValueCategory = prvalue -# 1139| getCondition(): [LTExpr] ... < ... -# 1139| Type = [BoolType] bool -# 1139| ValueCategory = prvalue -# 1139| getLesserOperand(): [VariableAccess] i -# 1139| Type = [IntType] int -# 1139| ValueCategory = prvalue(load) -# 1139| getGreaterOperand(): [Literal] 10 -# 1139| Type = [IntType] int -# 1139| Value = [Literal] 10 -# 1139| ValueCategory = prvalue -# 1139| getUpdate(): [PrefixIncrExpr] ++ ... -# 1139| Type = [IntType] int -# 1139| ValueCategory = lvalue -# 1139| getOperand(): [VariableAccess] i -# 1139| Type = [IntType] int -# 1139| ValueCategory = lvalue -# 1139| getStmt(): [BlockStmt] { ... } -# 1139| getStmt(0): [DeclStmt] declaration -# 1139| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1139| Type = [IntType] int -# 1139| getStmt(2): [EmptyStmt] ; -# 1140| getStmt(3): [ReturnStmt] return ... -# 1142| [TopLevelFunction] void TryCatchNoCatchAny(bool) -# 1142| : -# 1142| getParameter(0): [Parameter] b -# 1142| Type = [BoolType] bool -# 1142| getEntryPoint(): [BlockStmt] { ... } -# 1143| getStmt(0): [TryStmt] try { ... } -# 1143| getStmt(): [BlockStmt] { ... } -# 1144| getStmt(0): [DeclStmt] declaration -# 1144| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1144| Type = [IntType] int -# 1144| getVariable().getInitializer(): [Initializer] initializer for x -# 1144| getExpr(): [Literal] 5 -# 1144| Type = [IntType] int -# 1144| Value = [Literal] 5 -# 1144| ValueCategory = prvalue -# 1145| getStmt(1): [IfStmt] if (...) ... -# 1145| getCondition(): [VariableAccess] b -# 1145| Type = [BoolType] bool -# 1145| ValueCategory = prvalue(load) -# 1145| getThen(): [BlockStmt] { ... } -# 1146| getStmt(0): [ExprStmt] ExprStmt -# 1146| getExpr(): [ThrowExpr] throw ... -# 1146| Type = [PointerType] const char * +# 1128| getStmt(2): [DeclStmt] declaration +# 1128| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1128| Type = [IntType] int +# 1128| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of f +# 1128| Type = [IntType] int +# 1129| getStmt(3): [DeclStmt] declaration +# 1129| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z +# 1129| Type = [IntType] int +# 1129| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of w +# 1129| Type = [IntType] int +# 1129| getDeclarationEntry(2): [VariableDeclarationEntry] definition of h +# 1129| Type = [IntType] int +# 1130| getStmt(4): [DeclStmt] declaration +# 1130| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of d +# 1130| Type = [CTypedefType,LocalTypedefType] d +# 1131| getStmt(5): [ReturnStmt] return ... +# 1128| [TopLevelFunction] int f(float) +# 1128| : +# 1128| getParameter(0): [Parameter] (unnamed parameter 0) +# 1128| Type = [FloatType] float +# 1129| [TopLevelFunction] int z(float) +# 1129| : +# 1129| getParameter(0): [Parameter] (unnamed parameter 0) +# 1129| Type = [FloatType] float +# 1129| [TopLevelFunction] int w(float) +# 1129| : +# 1129| getParameter(0): [Parameter] (unnamed parameter 0) +# 1129| Type = [FloatType] float +# 1139| [TopLevelFunction] void ExternDeclarationsInMacro() +# 1139| : +# 1140| getEntryPoint(): [BlockStmt] { ... } +# 1141| getStmt(0): [DeclStmt] declaration +# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1141| Type = [IntType] int +# 1141| getStmt(1): [ForStmt] for(...;...;...) ... +# 1141| getInitialization(): [DeclStmt] declaration +# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1141| Type = [IntType] int +# 1141| getVariable().getInitializer(): [Initializer] initializer for i +# 1141| getExpr(): [Literal] 0 +# 1141| Type = [IntType] int +# 1141| Value = [Literal] 0 +# 1141| ValueCategory = prvalue +# 1141| getCondition(): [LTExpr] ... < ... +# 1141| Type = [BoolType] bool +# 1141| ValueCategory = prvalue +# 1141| getLesserOperand(): [VariableAccess] i +# 1141| Type = [IntType] int +# 1141| ValueCategory = prvalue(load) +# 1141| getGreaterOperand(): [Literal] 10 +# 1141| Type = [IntType] int +# 1141| Value = [Literal] 10 +# 1141| ValueCategory = prvalue +# 1141| getUpdate(): [PrefixIncrExpr] ++ ... +# 1141| Type = [IntType] int +# 1141| ValueCategory = lvalue +# 1141| getOperand(): [VariableAccess] i +# 1141| Type = [IntType] int +# 1141| ValueCategory = lvalue +# 1141| getStmt(): [BlockStmt] { ... } +# 1141| getStmt(0): [DeclStmt] declaration +# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1141| Type = [IntType] int +# 1141| getStmt(2): [EmptyStmt] ; +# 1142| getStmt(3): [ReturnStmt] return ... +# 1144| [TopLevelFunction] void TryCatchNoCatchAny(bool) +# 1144| : +# 1144| getParameter(0): [Parameter] b +# 1144| Type = [BoolType] bool +# 1144| getEntryPoint(): [BlockStmt] { ... } +# 1145| getStmt(0): [TryStmt] try { ... } +# 1145| getStmt(): [BlockStmt] { ... } +# 1146| getStmt(0): [DeclStmt] declaration +# 1146| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1146| Type = [IntType] int +# 1146| getVariable().getInitializer(): [Initializer] initializer for x +# 1146| getExpr(): [Literal] 5 +# 1146| Type = [IntType] int +# 1146| Value = [Literal] 5 # 1146| ValueCategory = prvalue -# 1146| getExpr(): string literal -# 1146| Type = [ArrayType] const char[15] -# 1146| Value = [StringLiteral] "string literal" -# 1146| ValueCategory = lvalue -# 1146| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1146| Type = [PointerType] const char * -# 1146| ValueCategory = prvalue -# 1148| getElse(): [IfStmt] if (...) ... -# 1148| getCondition(): [LTExpr] ... < ... -# 1148| Type = [BoolType] bool -# 1148| ValueCategory = prvalue -# 1148| getLesserOperand(): [VariableAccess] x -# 1148| Type = [IntType] int -# 1148| ValueCategory = prvalue(load) -# 1148| getGreaterOperand(): [Literal] 2 -# 1148| Type = [IntType] int -# 1148| Value = [Literal] 2 +# 1147| getStmt(1): [IfStmt] if (...) ... +# 1147| getCondition(): [VariableAccess] b +# 1147| Type = [BoolType] bool +# 1147| ValueCategory = prvalue(load) +# 1147| getThen(): [BlockStmt] { ... } +# 1148| getStmt(0): [ExprStmt] ExprStmt +# 1148| getExpr(): [ThrowExpr] throw ... +# 1148| Type = [PointerType] const char * # 1148| ValueCategory = prvalue -# 1148| getThen(): [BlockStmt] { ... } -# 1149| getStmt(0): [ExprStmt] ExprStmt -# 1149| getExpr(): [AssignExpr] ... = ... -# 1149| Type = [IntType] int -# 1149| ValueCategory = lvalue -# 1149| getLValue(): [VariableAccess] x -# 1149| Type = [IntType] int -# 1149| ValueCategory = lvalue -# 1149| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1149| Type = [IntType] int -# 1149| ValueCategory = prvalue -# 1149| getCondition(): [VariableAccess] b -# 1149| Type = [BoolType] bool -# 1149| ValueCategory = prvalue(load) -# 1149| getThen(): [Literal] 7 -# 1149| Type = [IntType] int -# 1149| Value = [Literal] 7 -# 1149| ValueCategory = prvalue -# 1149| getElse(): [ThrowExpr] throw ... -# 1149| Type = [Struct] String -# 1149| ValueCategory = prvalue -# 1149| getExpr(): [ConstructorCall] call to String -# 1149| Type = [VoidType] void -# 1149| ValueCategory = prvalue -# 1149| getArgument(0): String object -# 1149| Type = [ArrayType] const char[14] -# 1149| Value = [StringLiteral] "String object" -# 1149| ValueCategory = lvalue -# 1149| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1149| Type = [PointerType] const char * -# 1149| ValueCategory = prvalue -# 1151| getStmt(2): [ExprStmt] ExprStmt -# 1151| getExpr(): [AssignExpr] ... = ... -# 1151| Type = [IntType] int -# 1151| ValueCategory = lvalue -# 1151| getLValue(): [VariableAccess] x -# 1151| Type = [IntType] int -# 1151| ValueCategory = lvalue -# 1151| getRValue(): [Literal] 7 -# 1151| Type = [IntType] int -# 1151| Value = [Literal] 7 -# 1151| ValueCategory = prvalue -# 1153| getChild(1): [Handler] -# 1153| getBlock(): [CatchBlock] { ... } -# 1154| getStmt(0): [ExprStmt] ExprStmt -# 1154| getExpr(): [ThrowExpr] throw ... -# 1154| Type = [Struct] String -# 1154| ValueCategory = prvalue -# 1154| getExpr(): [ConstructorCall] call to String -# 1154| Type = [VoidType] void -# 1154| ValueCategory = prvalue -# 1154| getArgument(0): [VariableAccess] s -# 1154| Type = [PointerType] const char * -# 1154| ValueCategory = prvalue(load) -# 1156| getChild(2): [Handler] -# 1156| getBlock(): [CatchBlock] { ... } -# 1158| getStmt(1): [ReturnStmt] return ... -# 1162| [TopLevelFunction] void VectorTypes(int) -# 1162| : -# 1162| getParameter(0): [Parameter] i -# 1162| Type = [IntType] int -# 1162| getEntryPoint(): [BlockStmt] { ... } -# 1163| getStmt(0): [DeclStmt] declaration -# 1163| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4 -# 1163| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1163| getVariable().getInitializer(): [Initializer] initializer for vi4 -# 1163| getExpr(): [VectorAggregateLiteral] {...} -# 1163| Type = [GNUVectorType] __attribute((vector_size(16UL))) int -# 1163| ValueCategory = prvalue -# 1163| getAnElementExpr(0): [Literal] 0 -# 1163| Type = [IntType] int -# 1163| Value = [Literal] 0 -# 1163| ValueCategory = prvalue -# 1163| getAnElementExpr(1): [Literal] 1 -# 1163| Type = [IntType] int -# 1163| Value = [Literal] 1 -# 1163| ValueCategory = prvalue -# 1163| getAnElementExpr(2): [Literal] 2 -# 1163| Type = [IntType] int -# 1163| Value = [Literal] 2 -# 1163| ValueCategory = prvalue -# 1163| getAnElementExpr(3): [Literal] 3 -# 1163| Type = [IntType] int -# 1163| Value = [Literal] 3 -# 1163| ValueCategory = prvalue -# 1164| getStmt(1): [DeclStmt] declaration -# 1164| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1164| Type = [IntType] int -# 1164| getVariable().getInitializer(): [Initializer] initializer for x -# 1164| getExpr(): [ArrayExpr] access to array -# 1164| Type = [IntType] int -# 1164| ValueCategory = prvalue(load) -# 1164| getArrayBase(): [VariableAccess] vi4 -# 1164| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1164| ValueCategory = lvalue -# 1164| getArrayOffset(): [VariableAccess] i -# 1164| Type = [IntType] int -# 1164| ValueCategory = prvalue(load) -# 1165| getStmt(2): [ExprStmt] ExprStmt -# 1165| getExpr(): [AssignExpr] ... = ... -# 1165| Type = [IntType] int -# 1165| ValueCategory = lvalue -# 1165| getLValue(): [ArrayExpr] access to array -# 1165| Type = [IntType] int -# 1165| ValueCategory = lvalue -# 1165| getArrayBase(): [VariableAccess] vi4 -# 1165| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1165| ValueCategory = lvalue -# 1165| getArrayOffset(): [VariableAccess] i -# 1165| Type = [IntType] int -# 1165| ValueCategory = prvalue(load) -# 1165| getRValue(): [VariableAccess] x -# 1165| Type = [IntType] int -# 1165| ValueCategory = prvalue(load) -# 1166| getStmt(3): [DeclStmt] declaration -# 1166| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4_shuffle -# 1166| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1166| getVariable().getInitializer(): [Initializer] initializer for vi4_shuffle -# 1166| getExpr(): [BuiltInOperationBuiltInShuffleVector] __builtin_shufflevector -# 1166| Type = [GNUVectorType] __attribute((vector_size(16))) int -# 1166| ValueCategory = prvalue -# 1166| getChild(0): [VariableAccess] vi4 -# 1166| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1166| ValueCategory = prvalue(load) -# 1166| getChild(1): [VariableAccess] vi4 +# 1148| getExpr(): string literal +# 1148| Type = [ArrayType] const char[15] +# 1148| Value = [StringLiteral] "string literal" +# 1148| ValueCategory = lvalue +# 1148| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1148| Type = [PointerType] const char * +# 1148| ValueCategory = prvalue +# 1150| getElse(): [IfStmt] if (...) ... +# 1150| getCondition(): [LTExpr] ... < ... +# 1150| Type = [BoolType] bool +# 1150| ValueCategory = prvalue +# 1150| getLesserOperand(): [VariableAccess] x +# 1150| Type = [IntType] int +# 1150| ValueCategory = prvalue(load) +# 1150| getGreaterOperand(): [Literal] 2 +# 1150| Type = [IntType] int +# 1150| Value = [Literal] 2 +# 1150| ValueCategory = prvalue +# 1150| getThen(): [BlockStmt] { ... } +# 1151| getStmt(0): [ExprStmt] ExprStmt +# 1151| getExpr(): [AssignExpr] ... = ... +# 1151| Type = [IntType] int +# 1151| ValueCategory = lvalue +# 1151| getLValue(): [VariableAccess] x +# 1151| Type = [IntType] int +# 1151| ValueCategory = lvalue +# 1151| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1151| Type = [IntType] int +# 1151| ValueCategory = prvalue +# 1151| getCondition(): [VariableAccess] b +# 1151| Type = [BoolType] bool +# 1151| ValueCategory = prvalue(load) +# 1151| getThen(): [Literal] 7 +# 1151| Type = [IntType] int +# 1151| Value = [Literal] 7 +# 1151| ValueCategory = prvalue +# 1151| getElse(): [ThrowExpr] throw ... +# 1151| Type = [Struct] String +# 1151| ValueCategory = prvalue +# 1151| getExpr(): [ConstructorCall] call to String +# 1151| Type = [VoidType] void +# 1151| ValueCategory = prvalue +# 1151| getArgument(0): String object +# 1151| Type = [ArrayType] const char[14] +# 1151| Value = [StringLiteral] "String object" +# 1151| ValueCategory = lvalue +# 1151| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1151| Type = [PointerType] const char * +# 1151| ValueCategory = prvalue +# 1153| getStmt(2): [ExprStmt] ExprStmt +# 1153| getExpr(): [AssignExpr] ... = ... +# 1153| Type = [IntType] int +# 1153| ValueCategory = lvalue +# 1153| getLValue(): [VariableAccess] x +# 1153| Type = [IntType] int +# 1153| ValueCategory = lvalue +# 1153| getRValue(): [Literal] 7 +# 1153| Type = [IntType] int +# 1153| Value = [Literal] 7 +# 1153| ValueCategory = prvalue +# 1155| getChild(1): [Handler] +# 1155| getBlock(): [CatchBlock] { ... } +# 1156| getStmt(0): [ExprStmt] ExprStmt +# 1156| getExpr(): [ThrowExpr] throw ... +# 1156| Type = [Struct] String +# 1156| ValueCategory = prvalue +# 1156| getExpr(): [ConstructorCall] call to String +# 1156| Type = [VoidType] void +# 1156| ValueCategory = prvalue +# 1156| getArgument(0): [VariableAccess] s +# 1156| Type = [PointerType] const char * +# 1156| ValueCategory = prvalue(load) +# 1158| getChild(2): [Handler] +# 1158| getBlock(): [CatchBlock] { ... } +# 1160| getStmt(1): [ReturnStmt] return ... +# 1164| [TopLevelFunction] void VectorTypes(int) +# 1164| : +# 1164| getParameter(0): [Parameter] i +# 1164| Type = [IntType] int +# 1164| getEntryPoint(): [BlockStmt] { ... } +# 1165| getStmt(0): [DeclStmt] declaration +# 1165| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4 +# 1165| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1165| getVariable().getInitializer(): [Initializer] initializer for vi4 +# 1165| getExpr(): [VectorAggregateLiteral] {...} +# 1165| Type = [GNUVectorType] __attribute((vector_size(16UL))) int +# 1165| ValueCategory = prvalue +# 1165| getAnElementExpr(0): [Literal] 0 +# 1165| Type = [IntType] int +# 1165| Value = [Literal] 0 +# 1165| ValueCategory = prvalue +# 1165| getAnElementExpr(1): [Literal] 1 +# 1165| Type = [IntType] int +# 1165| Value = [Literal] 1 +# 1165| ValueCategory = prvalue +# 1165| getAnElementExpr(2): [Literal] 2 +# 1165| Type = [IntType] int +# 1165| Value = [Literal] 2 +# 1165| ValueCategory = prvalue +# 1165| getAnElementExpr(3): [Literal] 3 +# 1165| Type = [IntType] int +# 1165| Value = [Literal] 3 +# 1165| ValueCategory = prvalue +# 1166| getStmt(1): [DeclStmt] declaration +# 1166| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1166| Type = [IntType] int +# 1166| getVariable().getInitializer(): [Initializer] initializer for x +# 1166| getExpr(): [ArrayExpr] access to array +# 1166| Type = [IntType] int +# 1166| ValueCategory = prvalue(load) +# 1166| getArrayBase(): [VariableAccess] vi4 # 1166| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1166| ValueCategory = prvalue(load) -# 1166| getChild(2): [AddExpr] ... + ... -# 1166| Type = [IntType] int -# 1166| Value = [AddExpr] 3 -# 1166| ValueCategory = prvalue -# 1166| getLeftOperand(): [Literal] 3 -# 1166| Type = [IntType] int -# 1166| Value = [Literal] 3 -# 1166| ValueCategory = prvalue -# 1166| getRightOperand(): [Literal] 0 -# 1166| Type = [IntType] int -# 1166| Value = [Literal] 0 -# 1166| ValueCategory = prvalue -# 1166| getChild(3): [Literal] 2 +# 1166| ValueCategory = lvalue +# 1166| getArrayOffset(): [VariableAccess] i # 1166| Type = [IntType] int -# 1166| Value = [Literal] 2 -# 1166| ValueCategory = prvalue -# 1166| getChild(4): [Literal] 1 -# 1166| Type = [IntType] int -# 1166| Value = [Literal] 1 -# 1166| ValueCategory = prvalue -# 1166| getChild(5): [Literal] 0 -# 1166| Type = [IntType] int -# 1166| Value = [Literal] 0 -# 1166| ValueCategory = prvalue -# 1167| getStmt(4): [ExprStmt] ExprStmt +# 1166| ValueCategory = prvalue(load) +# 1167| getStmt(2): [ExprStmt] ExprStmt # 1167| getExpr(): [AssignExpr] ... = ... -# 1167| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1167| Type = [IntType] int # 1167| ValueCategory = lvalue -# 1167| getLValue(): [VariableAccess] vi4 -# 1167| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1167| getLValue(): [ArrayExpr] access to array +# 1167| Type = [IntType] int # 1167| ValueCategory = lvalue -# 1167| getRValue(): [AddExpr] ... + ... -# 1167| Type = [GNUVectorType] __attribute((vector_size(16UL))) int -# 1167| ValueCategory = prvalue -# 1167| getLeftOperand(): [VariableAccess] vi4 -# 1167| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1167| ValueCategory = prvalue(load) -# 1167| getRightOperand(): [VariableAccess] vi4_shuffle +# 1167| getArrayBase(): [VariableAccess] vi4 # 1167| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1167| ValueCategory = lvalue +# 1167| getArrayOffset(): [VariableAccess] i +# 1167| Type = [IntType] int # 1167| ValueCategory = prvalue(load) -# 1168| getStmt(5): [ReturnStmt] return ... -# 1170| [TopLevelFunction] void* memcpy(void*, void*, int) -# 1170| : -# 1170| getParameter(0): [Parameter] dst -# 1170| Type = [VoidPointerType] void * -# 1170| getParameter(1): [Parameter] src -# 1170| Type = [VoidPointerType] void * -# 1170| getParameter(2): [Parameter] size -# 1170| Type = [IntType] int -# 1172| [TopLevelFunction] int ModeledCallTarget(int) +# 1167| getRValue(): [VariableAccess] x +# 1167| Type = [IntType] int +# 1167| ValueCategory = prvalue(load) +# 1168| getStmt(3): [DeclStmt] declaration +# 1168| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4_shuffle +# 1168| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1168| getVariable().getInitializer(): [Initializer] initializer for vi4_shuffle +# 1168| getExpr(): [BuiltInOperationBuiltInShuffleVector] __builtin_shufflevector +# 1168| Type = [GNUVectorType] __attribute((vector_size(16))) int +# 1168| ValueCategory = prvalue +# 1168| getChild(0): [VariableAccess] vi4 +# 1168| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1168| ValueCategory = prvalue(load) +# 1168| getChild(1): [VariableAccess] vi4 +# 1168| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1168| ValueCategory = prvalue(load) +# 1168| getChild(2): [AddExpr] ... + ... +# 1168| Type = [IntType] int +# 1168| Value = [AddExpr] 3 +# 1168| ValueCategory = prvalue +# 1168| getLeftOperand(): [Literal] 3 +# 1168| Type = [IntType] int +# 1168| Value = [Literal] 3 +# 1168| ValueCategory = prvalue +# 1168| getRightOperand(): [Literal] 0 +# 1168| Type = [IntType] int +# 1168| Value = [Literal] 0 +# 1168| ValueCategory = prvalue +# 1168| getChild(3): [Literal] 2 +# 1168| Type = [IntType] int +# 1168| Value = [Literal] 2 +# 1168| ValueCategory = prvalue +# 1168| getChild(4): [Literal] 1 +# 1168| Type = [IntType] int +# 1168| Value = [Literal] 1 +# 1168| ValueCategory = prvalue +# 1168| getChild(5): [Literal] 0 +# 1168| Type = [IntType] int +# 1168| Value = [Literal] 0 +# 1168| ValueCategory = prvalue +# 1169| getStmt(4): [ExprStmt] ExprStmt +# 1169| getExpr(): [AssignExpr] ... = ... +# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1169| ValueCategory = lvalue +# 1169| getLValue(): [VariableAccess] vi4 +# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1169| ValueCategory = lvalue +# 1169| getRValue(): [AddExpr] ... + ... +# 1169| Type = [GNUVectorType] __attribute((vector_size(16UL))) int +# 1169| ValueCategory = prvalue +# 1169| getLeftOperand(): [VariableAccess] vi4 +# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1169| ValueCategory = prvalue(load) +# 1169| getRightOperand(): [VariableAccess] vi4_shuffle +# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1169| ValueCategory = prvalue(load) +# 1170| getStmt(5): [ReturnStmt] return ... +# 1172| [TopLevelFunction] void* memcpy(void*, void*, int) # 1172| : -# 1172| getParameter(0): [Parameter] x +# 1172| getParameter(0): [Parameter] dst +# 1172| Type = [VoidPointerType] void * +# 1172| getParameter(1): [Parameter] src +# 1172| Type = [VoidPointerType] void * +# 1172| getParameter(2): [Parameter] size # 1172| Type = [IntType] int -# 1172| getEntryPoint(): [BlockStmt] { ... } -# 1173| getStmt(0): [DeclStmt] declaration -# 1173| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1173| Type = [IntType] int -# 1174| getStmt(1): [ExprStmt] ExprStmt -# 1174| getExpr(): [FunctionCall] call to memcpy -# 1174| Type = [VoidPointerType] void * -# 1174| ValueCategory = prvalue -# 1174| getArgument(0): [AddressOfExpr] & ... -# 1174| Type = [IntPointerType] int * -# 1174| ValueCategory = prvalue -# 1174| getOperand(): [VariableAccess] y -# 1174| Type = [IntType] int -# 1174| ValueCategory = lvalue -# 1174| getArgument(1): [AddressOfExpr] & ... -# 1174| Type = [IntPointerType] int * -# 1174| ValueCategory = prvalue -# 1174| getOperand(): [VariableAccess] x -# 1174| Type = [IntType] int -# 1174| ValueCategory = lvalue -# 1174| getArgument(2): [SizeofTypeOperator] sizeof(int) -# 1174| Type = [LongType] unsigned long -# 1174| Value = [SizeofTypeOperator] 4 -# 1174| ValueCategory = prvalue -# 1174| getArgument(0).getFullyConverted(): [CStyleCast] (void *)... -# 1174| Conversion = [PointerConversion] pointer conversion -# 1174| Type = [VoidPointerType] void * -# 1174| ValueCategory = prvalue -# 1174| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... -# 1174| Conversion = [PointerConversion] pointer conversion -# 1174| Type = [VoidPointerType] void * -# 1174| ValueCategory = prvalue -# 1174| getArgument(2).getFullyConverted(): [CStyleCast] (int)... -# 1174| Conversion = [IntegralConversion] integral conversion -# 1174| Type = [IntType] int -# 1174| Value = [CStyleCast] 4 -# 1174| ValueCategory = prvalue -# 1175| getStmt(2): [ReturnStmt] return ... -# 1175| getExpr(): [VariableAccess] y +# 1174| [TopLevelFunction] int ModeledCallTarget(int) +# 1174| : +# 1174| getParameter(0): [Parameter] x +# 1174| Type = [IntType] int +# 1174| getEntryPoint(): [BlockStmt] { ... } +# 1175| getStmt(0): [DeclStmt] declaration +# 1175| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1175| Type = [IntType] int -# 1175| ValueCategory = prvalue(load) -# 1178| [TopLevelFunction] String ReturnObjectImpl() -# 1178| : -# 1178| getEntryPoint(): [BlockStmt] { ... } -# 1179| getStmt(0): [ReturnStmt] return ... -# 1179| getExpr(): [ConstructorCall] call to String -# 1179| Type = [VoidType] void -# 1179| ValueCategory = prvalue -# 1179| getArgument(0): foo -# 1179| Type = [ArrayType] const char[4] -# 1179| Value = [StringLiteral] "foo" -# 1179| ValueCategory = lvalue -# 1179| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1179| Type = [PointerType] const char * -# 1179| ValueCategory = prvalue -# 1182| [TopLevelFunction] void switch1Case(int) -# 1182| : -# 1182| getParameter(0): [Parameter] x -# 1182| Type = [IntType] int -# 1182| getEntryPoint(): [BlockStmt] { ... } -# 1183| getStmt(0): [DeclStmt] declaration -# 1183| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1183| Type = [IntType] int -# 1183| getVariable().getInitializer(): [Initializer] initializer for y -# 1183| getExpr(): [Literal] 0 -# 1183| Type = [IntType] int -# 1183| Value = [Literal] 0 -# 1183| ValueCategory = prvalue -# 1184| getStmt(1): [SwitchStmt] switch (...) ... -# 1184| getExpr(): [VariableAccess] x -# 1184| Type = [IntType] int -# 1184| ValueCategory = prvalue(load) -# 1184| getStmt(): [BlockStmt] { ... } -# 1185| getStmt(0): [SwitchCase] case ...: -# 1185| getExpr(): [Literal] 1 +# 1176| getStmt(1): [ExprStmt] ExprStmt +# 1176| getExpr(): [FunctionCall] call to memcpy +# 1176| Type = [VoidPointerType] void * +# 1176| ValueCategory = prvalue +# 1176| getArgument(0): [AddressOfExpr] & ... +# 1176| Type = [IntPointerType] int * +# 1176| ValueCategory = prvalue +# 1176| getOperand(): [VariableAccess] y +# 1176| Type = [IntType] int +# 1176| ValueCategory = lvalue +# 1176| getArgument(1): [AddressOfExpr] & ... +# 1176| Type = [IntPointerType] int * +# 1176| ValueCategory = prvalue +# 1176| getOperand(): [VariableAccess] x +# 1176| Type = [IntType] int +# 1176| ValueCategory = lvalue +# 1176| getArgument(2): [SizeofTypeOperator] sizeof(int) +# 1176| Type = [LongType] unsigned long +# 1176| Value = [SizeofTypeOperator] 4 +# 1176| ValueCategory = prvalue +# 1176| getArgument(0).getFullyConverted(): [CStyleCast] (void *)... +# 1176| Conversion = [PointerConversion] pointer conversion +# 1176| Type = [VoidPointerType] void * +# 1176| ValueCategory = prvalue +# 1176| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... +# 1176| Conversion = [PointerConversion] pointer conversion +# 1176| Type = [VoidPointerType] void * +# 1176| ValueCategory = prvalue +# 1176| getArgument(2).getFullyConverted(): [CStyleCast] (int)... +# 1176| Conversion = [IntegralConversion] integral conversion +# 1176| Type = [IntType] int +# 1176| Value = [CStyleCast] 4 +# 1176| ValueCategory = prvalue +# 1177| getStmt(2): [ReturnStmt] return ... +# 1177| getExpr(): [VariableAccess] y +# 1177| Type = [IntType] int +# 1177| ValueCategory = prvalue(load) +# 1180| [TopLevelFunction] String ReturnObjectImpl() +# 1180| : +# 1180| getEntryPoint(): [BlockStmt] { ... } +# 1181| getStmt(0): [ReturnStmt] return ... +# 1181| getExpr(): [ConstructorCall] call to String +# 1181| Type = [VoidType] void +# 1181| ValueCategory = prvalue +# 1181| getArgument(0): foo +# 1181| Type = [ArrayType] const char[4] +# 1181| Value = [StringLiteral] "foo" +# 1181| ValueCategory = lvalue +# 1181| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1181| Type = [PointerType] const char * +# 1181| ValueCategory = prvalue +# 1184| [TopLevelFunction] void switch1Case(int) +# 1184| : +# 1184| getParameter(0): [Parameter] x +# 1184| Type = [IntType] int +# 1184| getEntryPoint(): [BlockStmt] { ... } +# 1185| getStmt(0): [DeclStmt] declaration +# 1185| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1185| Type = [IntType] int +# 1185| getVariable().getInitializer(): [Initializer] initializer for y +# 1185| getExpr(): [Literal] 0 # 1185| Type = [IntType] int -# 1185| Value = [Literal] 1 +# 1185| Value = [Literal] 0 # 1185| ValueCategory = prvalue -# 1186| getStmt(1): [ExprStmt] ExprStmt -# 1186| getExpr(): [AssignExpr] ... = ... -# 1186| Type = [IntType] int -# 1186| ValueCategory = lvalue -# 1186| getLValue(): [VariableAccess] y -# 1186| Type = [IntType] int -# 1186| ValueCategory = lvalue -# 1186| getRValue(): [Literal] 2 -# 1186| Type = [IntType] int -# 1186| Value = [Literal] 2 -# 1186| ValueCategory = prvalue -# 1188| getStmt(2): [DeclStmt] declaration -# 1188| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1188| Type = [IntType] int -# 1188| getVariable().getInitializer(): [Initializer] initializer for z -# 1188| getExpr(): [VariableAccess] y +# 1186| getStmt(1): [SwitchStmt] switch (...) ... +# 1186| getExpr(): [VariableAccess] x +# 1186| Type = [IntType] int +# 1186| ValueCategory = prvalue(load) +# 1186| getStmt(): [BlockStmt] { ... } +# 1187| getStmt(0): [SwitchCase] case ...: +# 1187| getExpr(): [Literal] 1 +# 1187| Type = [IntType] int +# 1187| Value = [Literal] 1 +# 1187| ValueCategory = prvalue +# 1188| getStmt(1): [ExprStmt] ExprStmt +# 1188| getExpr(): [AssignExpr] ... = ... # 1188| Type = [IntType] int -# 1188| ValueCategory = prvalue(load) -# 1189| getStmt(3): [ReturnStmt] return ... -# 1191| [TopLevelFunction] void switch2Case_fallthrough(int) -# 1191| : -# 1191| getParameter(0): [Parameter] x -# 1191| Type = [IntType] int -# 1191| getEntryPoint(): [BlockStmt] { ... } -# 1192| getStmt(0): [DeclStmt] declaration -# 1192| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1192| Type = [IntType] int -# 1192| getVariable().getInitializer(): [Initializer] initializer for y -# 1192| getExpr(): [Literal] 0 -# 1192| Type = [IntType] int -# 1192| Value = [Literal] 0 -# 1192| ValueCategory = prvalue -# 1193| getStmt(1): [SwitchStmt] switch (...) ... -# 1193| getExpr(): [VariableAccess] x -# 1193| Type = [IntType] int -# 1193| ValueCategory = prvalue(load) -# 1193| getStmt(): [BlockStmt] { ... } -# 1194| getStmt(0): [SwitchCase] case ...: -# 1194| getExpr(): [Literal] 1 +# 1188| ValueCategory = lvalue +# 1188| getLValue(): [VariableAccess] y +# 1188| Type = [IntType] int +# 1188| ValueCategory = lvalue +# 1188| getRValue(): [Literal] 2 +# 1188| Type = [IntType] int +# 1188| Value = [Literal] 2 +# 1188| ValueCategory = prvalue +# 1190| getStmt(2): [DeclStmt] declaration +# 1190| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1190| Type = [IntType] int +# 1190| getVariable().getInitializer(): [Initializer] initializer for z +# 1190| getExpr(): [VariableAccess] y +# 1190| Type = [IntType] int +# 1190| ValueCategory = prvalue(load) +# 1191| getStmt(3): [ReturnStmt] return ... +# 1193| [TopLevelFunction] void switch2Case_fallthrough(int) +# 1193| : +# 1193| getParameter(0): [Parameter] x +# 1193| Type = [IntType] int +# 1193| getEntryPoint(): [BlockStmt] { ... } +# 1194| getStmt(0): [DeclStmt] declaration +# 1194| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1194| Type = [IntType] int +# 1194| getVariable().getInitializer(): [Initializer] initializer for y +# 1194| getExpr(): [Literal] 0 # 1194| Type = [IntType] int -# 1194| Value = [Literal] 1 +# 1194| Value = [Literal] 0 # 1194| ValueCategory = prvalue -# 1195| getStmt(1): [ExprStmt] ExprStmt -# 1195| getExpr(): [AssignExpr] ... = ... -# 1195| Type = [IntType] int -# 1195| ValueCategory = lvalue -# 1195| getLValue(): [VariableAccess] y -# 1195| Type = [IntType] int -# 1195| ValueCategory = lvalue -# 1195| getRValue(): [Literal] 2 -# 1195| Type = [IntType] int -# 1195| Value = [Literal] 2 -# 1195| ValueCategory = prvalue -# 1196| getStmt(2): [SwitchCase] case ...: -# 1196| getExpr(): [Literal] 2 +# 1195| getStmt(1): [SwitchStmt] switch (...) ... +# 1195| getExpr(): [VariableAccess] x +# 1195| Type = [IntType] int +# 1195| ValueCategory = prvalue(load) +# 1195| getStmt(): [BlockStmt] { ... } +# 1196| getStmt(0): [SwitchCase] case ...: +# 1196| getExpr(): [Literal] 1 # 1196| Type = [IntType] int -# 1196| Value = [Literal] 2 +# 1196| Value = [Literal] 1 # 1196| ValueCategory = prvalue -# 1197| getStmt(3): [ExprStmt] ExprStmt +# 1197| getStmt(1): [ExprStmt] ExprStmt # 1197| getExpr(): [AssignExpr] ... = ... # 1197| Type = [IntType] int # 1197| ValueCategory = lvalue # 1197| getLValue(): [VariableAccess] y # 1197| Type = [IntType] int # 1197| ValueCategory = lvalue -# 1197| getRValue(): [Literal] 3 +# 1197| getRValue(): [Literal] 2 # 1197| Type = [IntType] int -# 1197| Value = [Literal] 3 +# 1197| Value = [Literal] 2 # 1197| ValueCategory = prvalue -# 1199| getStmt(2): [DeclStmt] declaration -# 1199| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1199| Type = [IntType] int -# 1199| getVariable().getInitializer(): [Initializer] initializer for z -# 1199| getExpr(): [VariableAccess] y +# 1198| getStmt(2): [SwitchCase] case ...: +# 1198| getExpr(): [Literal] 2 +# 1198| Type = [IntType] int +# 1198| Value = [Literal] 2 +# 1198| ValueCategory = prvalue +# 1199| getStmt(3): [ExprStmt] ExprStmt +# 1199| getExpr(): [AssignExpr] ... = ... # 1199| Type = [IntType] int -# 1199| ValueCategory = prvalue(load) -# 1200| getStmt(3): [ReturnStmt] return ... -# 1202| [TopLevelFunction] void switch2Case(int) -# 1202| : -# 1202| getParameter(0): [Parameter] x -# 1202| Type = [IntType] int -# 1202| getEntryPoint(): [BlockStmt] { ... } -# 1203| getStmt(0): [DeclStmt] declaration -# 1203| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1203| Type = [IntType] int -# 1203| getVariable().getInitializer(): [Initializer] initializer for y -# 1203| getExpr(): [Literal] 0 -# 1203| Type = [IntType] int -# 1203| Value = [Literal] 0 -# 1203| ValueCategory = prvalue -# 1204| getStmt(1): [SwitchStmt] switch (...) ... -# 1204| getExpr(): [VariableAccess] x -# 1204| Type = [IntType] int -# 1204| ValueCategory = prvalue(load) -# 1204| getStmt(): [BlockStmt] { ... } -# 1205| getStmt(0): [SwitchCase] case ...: -# 1205| getExpr(): [Literal] 1 +# 1199| ValueCategory = lvalue +# 1199| getLValue(): [VariableAccess] y +# 1199| Type = [IntType] int +# 1199| ValueCategory = lvalue +# 1199| getRValue(): [Literal] 3 +# 1199| Type = [IntType] int +# 1199| Value = [Literal] 3 +# 1199| ValueCategory = prvalue +# 1201| getStmt(2): [DeclStmt] declaration +# 1201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1201| Type = [IntType] int +# 1201| getVariable().getInitializer(): [Initializer] initializer for z +# 1201| getExpr(): [VariableAccess] y +# 1201| Type = [IntType] int +# 1201| ValueCategory = prvalue(load) +# 1202| getStmt(3): [ReturnStmt] return ... +# 1204| [TopLevelFunction] void switch2Case(int) +# 1204| : +# 1204| getParameter(0): [Parameter] x +# 1204| Type = [IntType] int +# 1204| getEntryPoint(): [BlockStmt] { ... } +# 1205| getStmt(0): [DeclStmt] declaration +# 1205| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1205| Type = [IntType] int +# 1205| getVariable().getInitializer(): [Initializer] initializer for y +# 1205| getExpr(): [Literal] 0 # 1205| Type = [IntType] int -# 1205| Value = [Literal] 1 +# 1205| Value = [Literal] 0 # 1205| ValueCategory = prvalue -# 1206| getStmt(1): [ExprStmt] ExprStmt -# 1206| getExpr(): [AssignExpr] ... = ... -# 1206| Type = [IntType] int -# 1206| ValueCategory = lvalue -# 1206| getLValue(): [VariableAccess] y -# 1206| Type = [IntType] int -# 1206| ValueCategory = lvalue -# 1206| getRValue(): [Literal] 2 -# 1206| Type = [IntType] int -# 1206| Value = [Literal] 2 -# 1206| ValueCategory = prvalue -# 1207| getStmt(2): [BreakStmt] break; -# 1208| getStmt(3): [SwitchCase] case ...: -# 1208| getExpr(): [Literal] 2 +# 1206| getStmt(1): [SwitchStmt] switch (...) ... +# 1206| getExpr(): [VariableAccess] x +# 1206| Type = [IntType] int +# 1206| ValueCategory = prvalue(load) +# 1206| getStmt(): [BlockStmt] { ... } +# 1207| getStmt(0): [SwitchCase] case ...: +# 1207| getExpr(): [Literal] 1 +# 1207| Type = [IntType] int +# 1207| Value = [Literal] 1 +# 1207| ValueCategory = prvalue +# 1208| getStmt(1): [ExprStmt] ExprStmt +# 1208| getExpr(): [AssignExpr] ... = ... # 1208| Type = [IntType] int -# 1208| Value = [Literal] 2 -# 1208| ValueCategory = prvalue -# 1209| getStmt(4): [ExprStmt] ExprStmt -# 1209| getExpr(): [AssignExpr] ... = ... -# 1209| Type = [IntType] int -# 1209| ValueCategory = lvalue -# 1209| getLValue(): [VariableAccess] y -# 1209| Type = [IntType] int -# 1209| ValueCategory = lvalue -# 1209| getRValue(): [Literal] 3 -# 1209| Type = [IntType] int -# 1209| Value = [Literal] 3 -# 1209| ValueCategory = prvalue -# 1210| getStmt(2): [LabelStmt] label ...: -# 1211| getStmt(3): [DeclStmt] declaration -# 1211| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1211| Type = [IntType] int -# 1211| getVariable().getInitializer(): [Initializer] initializer for z -# 1211| getExpr(): [VariableAccess] y +# 1208| ValueCategory = lvalue +# 1208| getLValue(): [VariableAccess] y +# 1208| Type = [IntType] int +# 1208| ValueCategory = lvalue +# 1208| getRValue(): [Literal] 2 +# 1208| Type = [IntType] int +# 1208| Value = [Literal] 2 +# 1208| ValueCategory = prvalue +# 1209| getStmt(2): [BreakStmt] break; +# 1210| getStmt(3): [SwitchCase] case ...: +# 1210| getExpr(): [Literal] 2 +# 1210| Type = [IntType] int +# 1210| Value = [Literal] 2 +# 1210| ValueCategory = prvalue +# 1211| getStmt(4): [ExprStmt] ExprStmt +# 1211| getExpr(): [AssignExpr] ... = ... # 1211| Type = [IntType] int -# 1211| ValueCategory = prvalue(load) -# 1212| getStmt(4): [ReturnStmt] return ... -# 1214| [TopLevelFunction] void switch2Case_default(int) -# 1214| : -# 1214| getParameter(0): [Parameter] x -# 1214| Type = [IntType] int -# 1214| getEntryPoint(): [BlockStmt] { ... } -# 1215| getStmt(0): [DeclStmt] declaration -# 1215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1215| Type = [IntType] int -# 1215| getVariable().getInitializer(): [Initializer] initializer for y -# 1215| getExpr(): [Literal] 0 -# 1215| Type = [IntType] int -# 1215| Value = [Literal] 0 -# 1215| ValueCategory = prvalue -# 1216| getStmt(1): [SwitchStmt] switch (...) ... -# 1216| getExpr(): [VariableAccess] x -# 1216| Type = [IntType] int -# 1216| ValueCategory = prvalue(load) -# 1216| getStmt(): [BlockStmt] { ... } -# 1217| getStmt(0): [SwitchCase] case ...: -# 1217| getExpr(): [Literal] 1 +# 1211| ValueCategory = lvalue +# 1211| getLValue(): [VariableAccess] y +# 1211| Type = [IntType] int +# 1211| ValueCategory = lvalue +# 1211| getRValue(): [Literal] 3 +# 1211| Type = [IntType] int +# 1211| Value = [Literal] 3 +# 1211| ValueCategory = prvalue +# 1212| getStmt(2): [LabelStmt] label ...: +# 1213| getStmt(3): [DeclStmt] declaration +# 1213| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1213| Type = [IntType] int +# 1213| getVariable().getInitializer(): [Initializer] initializer for z +# 1213| getExpr(): [VariableAccess] y +# 1213| Type = [IntType] int +# 1213| ValueCategory = prvalue(load) +# 1214| getStmt(4): [ReturnStmt] return ... +# 1216| [TopLevelFunction] void switch2Case_default(int) +# 1216| : +# 1216| getParameter(0): [Parameter] x +# 1216| Type = [IntType] int +# 1216| getEntryPoint(): [BlockStmt] { ... } +# 1217| getStmt(0): [DeclStmt] declaration +# 1217| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1217| Type = [IntType] int +# 1217| getVariable().getInitializer(): [Initializer] initializer for y +# 1217| getExpr(): [Literal] 0 # 1217| Type = [IntType] int -# 1217| Value = [Literal] 1 +# 1217| Value = [Literal] 0 # 1217| ValueCategory = prvalue -# 1218| getStmt(1): [ExprStmt] ExprStmt -# 1218| getExpr(): [AssignExpr] ... = ... -# 1218| Type = [IntType] int -# 1218| ValueCategory = lvalue -# 1218| getLValue(): [VariableAccess] y -# 1218| Type = [IntType] int -# 1218| ValueCategory = lvalue -# 1218| getRValue(): [Literal] 2 -# 1218| Type = [IntType] int -# 1218| Value = [Literal] 2 -# 1218| ValueCategory = prvalue -# 1219| getStmt(2): [BreakStmt] break; -# 1221| getStmt(3): [SwitchCase] case ...: -# 1221| getExpr(): [Literal] 2 -# 1221| Type = [IntType] int -# 1221| Value = [Literal] 2 -# 1221| ValueCategory = prvalue -# 1222| getStmt(4): [ExprStmt] ExprStmt -# 1222| getExpr(): [AssignExpr] ... = ... -# 1222| Type = [IntType] int -# 1222| ValueCategory = lvalue -# 1222| getLValue(): [VariableAccess] y -# 1222| Type = [IntType] int -# 1222| ValueCategory = lvalue -# 1222| getRValue(): [Literal] 3 -# 1222| Type = [IntType] int -# 1222| Value = [Literal] 3 -# 1222| ValueCategory = prvalue -# 1223| getStmt(5): [BreakStmt] break; -# 1225| getStmt(6): [SwitchCase] default: -# 1226| getStmt(7): [ExprStmt] ExprStmt -# 1226| getExpr(): [AssignExpr] ... = ... -# 1226| Type = [IntType] int -# 1226| ValueCategory = lvalue -# 1226| getLValue(): [VariableAccess] y -# 1226| Type = [IntType] int -# 1226| ValueCategory = lvalue -# 1226| getRValue(): [Literal] 4 -# 1226| Type = [IntType] int -# 1226| Value = [Literal] 4 -# 1226| ValueCategory = prvalue -# 1227| getStmt(2): [LabelStmt] label ...: -# 1228| getStmt(3): [DeclStmt] declaration -# 1228| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1228| Type = [IntType] int -# 1228| getVariable().getInitializer(): [Initializer] initializer for z -# 1228| getExpr(): [VariableAccess] y +# 1218| getStmt(1): [SwitchStmt] switch (...) ... +# 1218| getExpr(): [VariableAccess] x +# 1218| Type = [IntType] int +# 1218| ValueCategory = prvalue(load) +# 1218| getStmt(): [BlockStmt] { ... } +# 1219| getStmt(0): [SwitchCase] case ...: +# 1219| getExpr(): [Literal] 1 +# 1219| Type = [IntType] int +# 1219| Value = [Literal] 1 +# 1219| ValueCategory = prvalue +# 1220| getStmt(1): [ExprStmt] ExprStmt +# 1220| getExpr(): [AssignExpr] ... = ... +# 1220| Type = [IntType] int +# 1220| ValueCategory = lvalue +# 1220| getLValue(): [VariableAccess] y +# 1220| Type = [IntType] int +# 1220| ValueCategory = lvalue +# 1220| getRValue(): [Literal] 2 +# 1220| Type = [IntType] int +# 1220| Value = [Literal] 2 +# 1220| ValueCategory = prvalue +# 1221| getStmt(2): [BreakStmt] break; +# 1223| getStmt(3): [SwitchCase] case ...: +# 1223| getExpr(): [Literal] 2 +# 1223| Type = [IntType] int +# 1223| Value = [Literal] 2 +# 1223| ValueCategory = prvalue +# 1224| getStmt(4): [ExprStmt] ExprStmt +# 1224| getExpr(): [AssignExpr] ... = ... +# 1224| Type = [IntType] int +# 1224| ValueCategory = lvalue +# 1224| getLValue(): [VariableAccess] y +# 1224| Type = [IntType] int +# 1224| ValueCategory = lvalue +# 1224| getRValue(): [Literal] 3 +# 1224| Type = [IntType] int +# 1224| Value = [Literal] 3 +# 1224| ValueCategory = prvalue +# 1225| getStmt(5): [BreakStmt] break; +# 1227| getStmt(6): [SwitchCase] default: +# 1228| getStmt(7): [ExprStmt] ExprStmt +# 1228| getExpr(): [AssignExpr] ... = ... # 1228| Type = [IntType] int -# 1228| ValueCategory = prvalue(load) -# 1229| getStmt(4): [ReturnStmt] return ... -# 1231| [TopLevelFunction] int staticLocalInit(int) -# 1231| : -# 1231| getParameter(0): [Parameter] x -# 1231| Type = [IntType] int -# 1231| getEntryPoint(): [BlockStmt] { ... } -# 1232| getStmt(0): [DeclStmt] declaration -# 1232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1232| Type = [IntType] int -# 1232| getVariable().getInitializer(): [Initializer] initializer for a -# 1232| getExpr(): [Literal] 0 -# 1232| Type = [IntType] int -# 1232| Value = [Literal] 0 -# 1232| ValueCategory = prvalue -# 1233| getStmt(1): [DeclStmt] declaration -# 1233| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1233| Type = [IntType] int -# 1233| getVariable().getInitializer(): [Initializer] initializer for b -# 1233| getExpr(): [SizeofExprOperator] sizeof() -# 1233| Type = [LongType] unsigned long -# 1233| Value = [SizeofExprOperator] 4 -# 1233| ValueCategory = prvalue -# 1233| getExprOperand(): [VariableAccess] x -# 1233| Type = [IntType] int -# 1233| ValueCategory = lvalue -# 1233| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 1233| Type = [IntType] int -# 1233| ValueCategory = lvalue -# 1233| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 1233| Conversion = [IntegralConversion] integral conversion -# 1233| Type = [IntType] int -# 1233| Value = [CStyleCast] 4 -# 1233| ValueCategory = prvalue -# 1234| getStmt(2): [DeclStmt] declaration -# 1234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1228| ValueCategory = lvalue +# 1228| getLValue(): [VariableAccess] y +# 1228| Type = [IntType] int +# 1228| ValueCategory = lvalue +# 1228| getRValue(): [Literal] 4 +# 1228| Type = [IntType] int +# 1228| Value = [Literal] 4 +# 1228| ValueCategory = prvalue +# 1229| getStmt(2): [LabelStmt] label ...: +# 1230| getStmt(3): [DeclStmt] declaration +# 1230| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1230| Type = [IntType] int +# 1230| getVariable().getInitializer(): [Initializer] initializer for z +# 1230| getExpr(): [VariableAccess] y +# 1230| Type = [IntType] int +# 1230| ValueCategory = prvalue(load) +# 1231| getStmt(4): [ReturnStmt] return ... +# 1233| [TopLevelFunction] int staticLocalInit(int) +# 1233| : +# 1233| getParameter(0): [Parameter] x +# 1233| Type = [IntType] int +# 1233| getEntryPoint(): [BlockStmt] { ... } +# 1234| getStmt(0): [DeclStmt] declaration +# 1234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a # 1234| Type = [IntType] int -# 1234| getVariable().getInitializer(): [Initializer] initializer for c -# 1234| getExpr(): [VariableAccess] x +# 1234| getVariable().getInitializer(): [Initializer] initializer for a +# 1234| getExpr(): [Literal] 0 # 1234| Type = [IntType] int -# 1234| ValueCategory = prvalue(load) -# 1235| getStmt(3): [DeclStmt] declaration -# 1235| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1234| Value = [Literal] 0 +# 1234| ValueCategory = prvalue +# 1235| getStmt(1): [DeclStmt] declaration +# 1235| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b # 1235| Type = [IntType] int -# 1237| getStmt(4): [ReturnStmt] return ... -# 1237| getExpr(): [AddExpr] ... + ... +# 1235| getVariable().getInitializer(): [Initializer] initializer for b +# 1235| getExpr(): [SizeofExprOperator] sizeof() +# 1235| Type = [LongType] unsigned long +# 1235| Value = [SizeofExprOperator] 4 +# 1235| ValueCategory = prvalue +# 1235| getExprOperand(): [VariableAccess] x +# 1235| Type = [IntType] int +# 1235| ValueCategory = lvalue +# 1235| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 1235| Type = [IntType] int +# 1235| ValueCategory = lvalue +# 1235| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 1235| Conversion = [IntegralConversion] integral conversion +# 1235| Type = [IntType] int +# 1235| Value = [CStyleCast] 4 +# 1235| ValueCategory = prvalue +# 1236| getStmt(2): [DeclStmt] declaration +# 1236| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1236| Type = [IntType] int +# 1236| getVariable().getInitializer(): [Initializer] initializer for c +# 1236| getExpr(): [VariableAccess] x +# 1236| Type = [IntType] int +# 1236| ValueCategory = prvalue(load) +# 1237| getStmt(3): [DeclStmt] declaration +# 1237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue -# 1237| getLeftOperand(): [AddExpr] ... + ... -# 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue -# 1237| getLeftOperand(): [AddExpr] ... + ... -# 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue -# 1237| getLeftOperand(): [VariableAccess] a -# 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue(load) -# 1237| getRightOperand(): [VariableAccess] b -# 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue(load) -# 1237| getRightOperand(): [VariableAccess] c -# 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue(load) -# 1237| getRightOperand(): [VariableAccess] d -# 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue(load) -# 1240| [TopLevelFunction] void staticLocalWithConstructor(char const*) -# 1240| : -# 1240| getParameter(0): [Parameter] dynamic -# 1240| Type = [PointerType] const char * -# 1240| getEntryPoint(): [BlockStmt] { ... } -# 1241| getStmt(0): [DeclStmt] declaration -# 1241| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1241| Type = [Struct] String +# 1239| getStmt(4): [ReturnStmt] return ... +# 1239| getExpr(): [AddExpr] ... + ... +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue +# 1239| getLeftOperand(): [AddExpr] ... + ... +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue +# 1239| getLeftOperand(): [AddExpr] ... + ... +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue +# 1239| getLeftOperand(): [VariableAccess] a +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue(load) +# 1239| getRightOperand(): [VariableAccess] b +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue(load) +# 1239| getRightOperand(): [VariableAccess] c +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue(load) +# 1239| getRightOperand(): [VariableAccess] d +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue(load) +# 1242| [TopLevelFunction] void staticLocalWithConstructor(char const*) +# 1242| : +# 1242| getParameter(0): [Parameter] dynamic +# 1242| Type = [PointerType] const char * +# 1242| getEntryPoint(): [BlockStmt] { ... } +# 1243| getStmt(0): [DeclStmt] declaration +# 1243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 1243| Type = [Struct] String #-----| getVariable().getInitializer(): [Initializer] initializer for a #-----| getExpr(): [ConstructorCall] call to String #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 1242| getStmt(1): [DeclStmt] declaration -# 1242| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1242| Type = [Struct] String -# 1242| getVariable().getInitializer(): [Initializer] initializer for b -# 1242| getExpr(): [ConstructorCall] call to String -# 1242| Type = [VoidType] void -# 1242| ValueCategory = prvalue -# 1242| getArgument(0): static -# 1242| Type = [ArrayType] const char[7] -# 1242| Value = [StringLiteral] "static" -# 1242| ValueCategory = lvalue -# 1242| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1242| Type = [PointerType] const char * -# 1242| ValueCategory = prvalue -# 1243| getStmt(2): [DeclStmt] declaration -# 1243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1243| Type = [Struct] String -# 1243| getVariable().getInitializer(): [Initializer] initializer for c -# 1243| getExpr(): [ConstructorCall] call to String -# 1243| Type = [VoidType] void -# 1243| ValueCategory = prvalue -# 1243| getArgument(0): [VariableAccess] dynamic -# 1243| Type = [PointerType] const char * -# 1243| ValueCategory = prvalue(load) -# 1244| getStmt(3): [ReturnStmt] return ... -# 1244| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1244| Type = [VoidType] void -# 1244| ValueCategory = prvalue -# 1244| getQualifier(): [VariableAccess] c -# 1244| Type = [Struct] String -# 1244| ValueCategory = lvalue -# 1244| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 1244| Type = [VoidType] void -# 1244| ValueCategory = prvalue -# 1244| getQualifier(): [VariableAccess] b -# 1244| Type = [Struct] String -# 1244| ValueCategory = lvalue -# 1244| getImplicitDestructorCall(2): [DestructorCall] call to ~String -# 1244| Type = [VoidType] void -# 1244| ValueCategory = prvalue -# 1244| getQualifier(): [VariableAccess] a -# 1244| Type = [Struct] String -# 1244| ValueCategory = lvalue -# 1248| [TopLevelFunction] char* strcpy(char*, char const*) -# 1248| : -# 1248| getParameter(0): [Parameter] destination -# 1248| Type = [CharPointerType] char * -# 1248| getParameter(1): [Parameter] source -# 1248| Type = [PointerType] const char * -# 1249| [TopLevelFunction] char* strcat(char*, char const*) -# 1249| : -# 1249| getParameter(0): [Parameter] destination -# 1249| Type = [CharPointerType] char * -# 1249| getParameter(1): [Parameter] source -# 1249| Type = [PointerType] const char * -# 1251| [TopLevelFunction] void test_strings(char*, char*) +# 1244| getStmt(1): [DeclStmt] declaration +# 1244| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1244| Type = [Struct] String +# 1244| getVariable().getInitializer(): [Initializer] initializer for b +# 1244| getExpr(): [ConstructorCall] call to String +# 1244| Type = [VoidType] void +# 1244| ValueCategory = prvalue +# 1244| getArgument(0): static +# 1244| Type = [ArrayType] const char[7] +# 1244| Value = [StringLiteral] "static" +# 1244| ValueCategory = lvalue +# 1244| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1244| Type = [PointerType] const char * +# 1244| ValueCategory = prvalue +# 1245| getStmt(2): [DeclStmt] declaration +# 1245| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1245| Type = [Struct] String +# 1245| getVariable().getInitializer(): [Initializer] initializer for c +# 1245| getExpr(): [ConstructorCall] call to String +# 1245| Type = [VoidType] void +# 1245| ValueCategory = prvalue +# 1245| getArgument(0): [VariableAccess] dynamic +# 1245| Type = [PointerType] const char * +# 1245| ValueCategory = prvalue(load) +# 1246| getStmt(3): [ReturnStmt] return ... +# 1246| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1246| Type = [VoidType] void +# 1246| ValueCategory = prvalue +# 1246| getQualifier(): [VariableAccess] c +# 1246| Type = [Struct] String +# 1246| ValueCategory = lvalue +# 1246| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 1246| Type = [VoidType] void +# 1246| ValueCategory = prvalue +# 1246| getQualifier(): [VariableAccess] b +# 1246| Type = [Struct] String +# 1246| ValueCategory = lvalue +# 1246| getImplicitDestructorCall(2): [DestructorCall] call to ~String +# 1246| Type = [VoidType] void +# 1246| ValueCategory = prvalue +# 1246| getQualifier(): [VariableAccess] a +# 1246| Type = [Struct] String +# 1246| ValueCategory = lvalue +# 1250| [TopLevelFunction] char* strcpy(char*, char const*) +# 1250| : +# 1250| getParameter(0): [Parameter] destination +# 1250| Type = [CharPointerType] char * +# 1250| getParameter(1): [Parameter] source +# 1250| Type = [PointerType] const char * +# 1251| [TopLevelFunction] char* strcat(char*, char const*) # 1251| : -# 1251| getParameter(0): [Parameter] s1 -# 1251| Type = [CharPointerType] char * -# 1251| getParameter(1): [Parameter] s2 +# 1251| getParameter(0): [Parameter] destination # 1251| Type = [CharPointerType] char * -# 1251| getEntryPoint(): [BlockStmt] { ... } -# 1252| getStmt(0): [DeclStmt] declaration -# 1252| getDeclarationEntry(0): [VariableDeclarationEntry] definition of buffer -# 1252| Type = [ArrayType] char[1024] -# 1252| getVariable().getInitializer(): [Initializer] initializer for buffer -# 1252| getExpr(): [ArrayAggregateLiteral] {...} -# 1252| Type = [ArrayType] char[1024] -# 1252| ValueCategory = prvalue -# 1252| getAnElementExpr(0): [Literal] 0 -# 1252| Type = [IntType] int -# 1252| Value = [Literal] 0 -# 1252| ValueCategory = prvalue -# 1252| getAnElementExpr(0).getFullyConverted(): [CStyleCast] (char)... -# 1252| Conversion = [IntegralConversion] integral conversion -# 1252| Type = [PlainCharType] char -# 1252| Value = [CStyleCast] 0 -# 1252| ValueCategory = prvalue -# 1254| getStmt(1): [ExprStmt] ExprStmt -# 1254| getExpr(): [FunctionCall] call to strcpy -# 1254| Type = [CharPointerType] char * -# 1254| ValueCategory = prvalue -# 1254| getArgument(0): [VariableAccess] buffer -# 1254| Type = [ArrayType] char[1024] -# 1254| ValueCategory = lvalue -# 1254| getArgument(1): [VariableAccess] s1 -# 1254| Type = [CharPointerType] char * -# 1254| ValueCategory = prvalue(load) -# 1254| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1254| Type = [CharPointerType] char * -# 1254| ValueCategory = prvalue -# 1254| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... -# 1254| Conversion = [PointerConversion] pointer conversion -# 1254| Type = [PointerType] const char * -# 1254| ValueCategory = prvalue -# 1255| getStmt(2): [ExprStmt] ExprStmt -# 1255| getExpr(): [FunctionCall] call to strcat -# 1255| Type = [CharPointerType] char * -# 1255| ValueCategory = prvalue -# 1255| getArgument(0): [VariableAccess] buffer -# 1255| Type = [ArrayType] char[1024] -# 1255| ValueCategory = lvalue -# 1255| getArgument(1): [VariableAccess] s2 -# 1255| Type = [CharPointerType] char * -# 1255| ValueCategory = prvalue(load) -# 1255| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1255| Type = [CharPointerType] char * -# 1255| ValueCategory = prvalue -# 1255| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... -# 1255| Conversion = [PointerConversion] pointer conversion -# 1255| Type = [PointerType] const char * -# 1255| ValueCategory = prvalue -# 1256| getStmt(3): [ReturnStmt] return ... -# 1258| [CopyAssignmentOperator] A& A::operator=(A const&) -# 1258| : +# 1251| getParameter(1): [Parameter] source +# 1251| Type = [PointerType] const char * +# 1253| [TopLevelFunction] void test_strings(char*, char*) +# 1253| : +# 1253| getParameter(0): [Parameter] s1 +# 1253| Type = [CharPointerType] char * +# 1253| getParameter(1): [Parameter] s2 +# 1253| Type = [CharPointerType] char * +# 1253| getEntryPoint(): [BlockStmt] { ... } +# 1254| getStmt(0): [DeclStmt] declaration +# 1254| getDeclarationEntry(0): [VariableDeclarationEntry] definition of buffer +# 1254| Type = [ArrayType] char[1024] +# 1254| getVariable().getInitializer(): [Initializer] initializer for buffer +# 1254| getExpr(): [ArrayAggregateLiteral] {...} +# 1254| Type = [ArrayType] char[1024] +# 1254| ValueCategory = prvalue +# 1254| getAnElementExpr(0): [Literal] 0 +# 1254| Type = [IntType] int +# 1254| Value = [Literal] 0 +# 1254| ValueCategory = prvalue +# 1254| getAnElementExpr(0).getFullyConverted(): [CStyleCast] (char)... +# 1254| Conversion = [IntegralConversion] integral conversion +# 1254| Type = [PlainCharType] char +# 1254| Value = [CStyleCast] 0 +# 1254| ValueCategory = prvalue +# 1256| getStmt(1): [ExprStmt] ExprStmt +# 1256| getExpr(): [FunctionCall] call to strcpy +# 1256| Type = [CharPointerType] char * +# 1256| ValueCategory = prvalue +# 1256| getArgument(0): [VariableAccess] buffer +# 1256| Type = [ArrayType] char[1024] +# 1256| ValueCategory = lvalue +# 1256| getArgument(1): [VariableAccess] s1 +# 1256| Type = [CharPointerType] char * +# 1256| ValueCategory = prvalue(load) +# 1256| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1256| Type = [CharPointerType] char * +# 1256| ValueCategory = prvalue +# 1256| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... +# 1256| Conversion = [PointerConversion] pointer conversion +# 1256| Type = [PointerType] const char * +# 1256| ValueCategory = prvalue +# 1257| getStmt(2): [ExprStmt] ExprStmt +# 1257| getExpr(): [FunctionCall] call to strcat +# 1257| Type = [CharPointerType] char * +# 1257| ValueCategory = prvalue +# 1257| getArgument(0): [VariableAccess] buffer +# 1257| Type = [ArrayType] char[1024] +# 1257| ValueCategory = lvalue +# 1257| getArgument(1): [VariableAccess] s2 +# 1257| Type = [CharPointerType] char * +# 1257| ValueCategory = prvalue(load) +# 1257| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1257| Type = [CharPointerType] char * +# 1257| ValueCategory = prvalue +# 1257| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... +# 1257| Conversion = [PointerConversion] pointer conversion +# 1257| Type = [PointerType] const char * +# 1257| ValueCategory = prvalue +# 1258| getStmt(3): [ReturnStmt] return ... +# 1260| [CopyAssignmentOperator] A& A::operator=(A const&) +# 1260| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1258| [MoveAssignmentOperator] A& A::operator=(A&&) -# 1258| : +# 1260| [MoveAssignmentOperator] A& A::operator=(A&&) +# 1260| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && -# 1261| [MemberFunction] void A::static_member(A*, int) -# 1261| : -# 1261| getParameter(0): [Parameter] a -# 1261| Type = [PointerType] A * -# 1261| getParameter(1): [Parameter] x -# 1261| Type = [IntType] int -# 1261| getEntryPoint(): [BlockStmt] { ... } -# 1262| getStmt(0): [ExprStmt] ExprStmt -# 1262| getExpr(): [AssignExpr] ... = ... -# 1262| Type = [IntType] int -# 1262| ValueCategory = lvalue -# 1262| getLValue(): [PointerFieldAccess] member -# 1262| Type = [IntType] int -# 1262| ValueCategory = lvalue -# 1262| getQualifier(): [VariableAccess] a -# 1262| Type = [PointerType] A * -# 1262| ValueCategory = prvalue(load) -# 1262| getRValue(): [VariableAccess] x -# 1262| Type = [IntType] int -# 1262| ValueCategory = prvalue(load) -# 1263| getStmt(1): [ReturnStmt] return ... -# 1265| [MemberFunction] void A::static_member_without_def() -# 1265| : -# 1268| [TopLevelFunction] A* getAnInstanceOfA() -# 1268| : -# 1270| [TopLevelFunction] void test_static_member_functions(int, A*) +# 1263| [MemberFunction] void A::static_member(A*, int) +# 1263| : +# 1263| getParameter(0): [Parameter] a +# 1263| Type = [PointerType] A * +# 1263| getParameter(1): [Parameter] x +# 1263| Type = [IntType] int +# 1263| getEntryPoint(): [BlockStmt] { ... } +# 1264| getStmt(0): [ExprStmt] ExprStmt +# 1264| getExpr(): [AssignExpr] ... = ... +# 1264| Type = [IntType] int +# 1264| ValueCategory = lvalue +# 1264| getLValue(): [PointerFieldAccess] member +# 1264| Type = [IntType] int +# 1264| ValueCategory = lvalue +# 1264| getQualifier(): [VariableAccess] a +# 1264| Type = [PointerType] A * +# 1264| ValueCategory = prvalue(load) +# 1264| getRValue(): [VariableAccess] x +# 1264| Type = [IntType] int +# 1264| ValueCategory = prvalue(load) +# 1265| getStmt(1): [ReturnStmt] return ... +# 1267| [MemberFunction] void A::static_member_without_def() +# 1267| : +# 1270| [TopLevelFunction] A* getAnInstanceOfA() # 1270| : -# 1270| getParameter(0): [Parameter] int_arg -# 1270| Type = [IntType] int -# 1270| getParameter(1): [Parameter] a_arg -# 1270| Type = [PointerType] A * -# 1270| getEntryPoint(): [BlockStmt] { ... } -# 1271| getStmt(0): [DeclStmt] declaration -# 1271| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1271| Type = [Class] C -# 1271| getVariable().getInitializer(): [Initializer] initializer for c -# 1271| getExpr(): [ConstructorCall] call to C -# 1271| Type = [VoidType] void -# 1271| ValueCategory = prvalue -# 1272| getStmt(1): [ExprStmt] ExprStmt -# 1272| getExpr(): [FunctionCall] call to StaticMemberFunction -# 1272| Type = [IntType] int -# 1272| ValueCategory = prvalue -# 1272| getQualifier(): [VariableAccess] c -# 1272| Type = [Class] C -# 1272| ValueCategory = lvalue -# 1272| getArgument(0): [Literal] 10 -# 1272| Type = [IntType] int -# 1272| Value = [Literal] 10 -# 1272| ValueCategory = prvalue -# 1273| getStmt(2): [ExprStmt] ExprStmt -# 1273| getExpr(): [FunctionCall] call to StaticMemberFunction -# 1273| Type = [IntType] int -# 1273| ValueCategory = prvalue -# 1273| getArgument(0): [Literal] 10 -# 1273| Type = [IntType] int -# 1273| Value = [Literal] 10 -# 1273| ValueCategory = prvalue -# 1275| getStmt(3): [DeclStmt] declaration -# 1275| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1275| Type = [Struct] A -# 1276| getStmt(4): [ExprStmt] ExprStmt -# 1276| getExpr(): [FunctionCall] call to static_member -# 1276| Type = [VoidType] void -# 1276| ValueCategory = prvalue -# 1276| getQualifier(): [VariableAccess] a -# 1276| Type = [Struct] A -# 1276| ValueCategory = lvalue -# 1276| getArgument(0): [AddressOfExpr] & ... -# 1276| Type = [PointerType] A * -# 1276| ValueCategory = prvalue -# 1276| getOperand(): [VariableAccess] a -# 1276| Type = [Struct] A -# 1276| ValueCategory = lvalue -# 1276| getArgument(1): [VariableAccess] int_arg -# 1276| Type = [IntType] int -# 1276| ValueCategory = prvalue(load) -# 1277| getStmt(5): [ExprStmt] ExprStmt -# 1277| getExpr(): [FunctionCall] call to static_member -# 1277| Type = [VoidType] void -# 1277| ValueCategory = prvalue -# 1277| getArgument(0): [AddressOfExpr] & ... -# 1277| Type = [PointerType] A * -# 1277| ValueCategory = prvalue -# 1277| getOperand(): [VariableAccess] a -# 1277| Type = [Struct] A -# 1277| ValueCategory = lvalue -# 1277| getArgument(1): [VariableAccess] int_arg -# 1277| Type = [IntType] int -# 1277| ValueCategory = prvalue(load) -# 1279| getStmt(6): [ExprStmt] ExprStmt +# 1272| [TopLevelFunction] void test_static_member_functions(int, A*) +# 1272| : +# 1272| getParameter(0): [Parameter] int_arg +# 1272| Type = [IntType] int +# 1272| getParameter(1): [Parameter] a_arg +# 1272| Type = [PointerType] A * +# 1272| getEntryPoint(): [BlockStmt] { ... } +# 1273| getStmt(0): [DeclStmt] declaration +# 1273| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1273| Type = [Class] C +# 1273| getVariable().getInitializer(): [Initializer] initializer for c +# 1273| getExpr(): [ConstructorCall] call to C +# 1273| Type = [VoidType] void +# 1273| ValueCategory = prvalue +# 1274| getStmt(1): [ExprStmt] ExprStmt +# 1274| getExpr(): [FunctionCall] call to StaticMemberFunction +# 1274| Type = [IntType] int +# 1274| ValueCategory = prvalue +# 1274| getQualifier(): [VariableAccess] c +# 1274| Type = [Class] C +# 1274| ValueCategory = lvalue +# 1274| getArgument(0): [Literal] 10 +# 1274| Type = [IntType] int +# 1274| Value = [Literal] 10 +# 1274| ValueCategory = prvalue +# 1275| getStmt(2): [ExprStmt] ExprStmt +# 1275| getExpr(): [FunctionCall] call to StaticMemberFunction +# 1275| Type = [IntType] int +# 1275| ValueCategory = prvalue +# 1275| getArgument(0): [Literal] 10 +# 1275| Type = [IntType] int +# 1275| Value = [Literal] 10 +# 1275| ValueCategory = prvalue +# 1277| getStmt(3): [DeclStmt] declaration +# 1277| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 1277| Type = [Struct] A +# 1278| getStmt(4): [ExprStmt] ExprStmt +# 1278| getExpr(): [FunctionCall] call to static_member +# 1278| Type = [VoidType] void +# 1278| ValueCategory = prvalue +# 1278| getQualifier(): [VariableAccess] a +# 1278| Type = [Struct] A +# 1278| ValueCategory = lvalue +# 1278| getArgument(0): [AddressOfExpr] & ... +# 1278| Type = [PointerType] A * +# 1278| ValueCategory = prvalue +# 1278| getOperand(): [VariableAccess] a +# 1278| Type = [Struct] A +# 1278| ValueCategory = lvalue +# 1278| getArgument(1): [VariableAccess] int_arg +# 1278| Type = [IntType] int +# 1278| ValueCategory = prvalue(load) +# 1279| getStmt(5): [ExprStmt] ExprStmt # 1279| getExpr(): [FunctionCall] call to static_member # 1279| Type = [VoidType] void # 1279| ValueCategory = prvalue -# 1279| getQualifier(): [AddressOfExpr] & ... +# 1279| getArgument(0): [AddressOfExpr] & ... # 1279| Type = [PointerType] A * # 1279| ValueCategory = prvalue # 1279| getOperand(): [VariableAccess] a # 1279| Type = [Struct] A # 1279| ValueCategory = lvalue -# 1279| getArgument(0): [VariableAccess] a_arg -# 1279| Type = [PointerType] A * -# 1279| ValueCategory = prvalue(load) -# 1279| getArgument(1): [AddExpr] ... + ... +# 1279| getArgument(1): [VariableAccess] int_arg # 1279| Type = [IntType] int -# 1279| ValueCategory = prvalue -# 1279| getLeftOperand(): [VariableAccess] int_arg -# 1279| Type = [IntType] int -# 1279| ValueCategory = prvalue(load) -# 1279| getRightOperand(): [Literal] 2 -# 1279| Type = [IntType] int -# 1279| Value = [Literal] 2 -# 1279| ValueCategory = prvalue -# 1279| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 1279| Type = [PointerType] A * -# 1279| ValueCategory = prvalue -# 1280| getStmt(7): [ExprStmt] ExprStmt -# 1280| getExpr(): [FunctionCall] call to static_member -# 1280| Type = [VoidType] void -# 1280| ValueCategory = prvalue -# 1280| getQualifier(): [PointerDereferenceExpr] * ... -# 1280| Type = [Struct] A -# 1280| ValueCategory = lvalue -# 1280| getOperand(): [VariableAccess] a_arg -# 1280| Type = [PointerType] A * -# 1280| ValueCategory = prvalue(load) -# 1280| getArgument(0): [AddressOfExpr] & ... -# 1280| Type = [PointerType] A * -# 1280| ValueCategory = prvalue -# 1280| getOperand(): [VariableAccess] a -# 1280| Type = [Struct] A -# 1280| ValueCategory = lvalue -# 1280| getArgument(1): [Literal] 99 -# 1280| Type = [IntType] int -# 1280| Value = [Literal] 99 -# 1280| ValueCategory = prvalue -# 1280| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 1280| Type = [Struct] A -# 1280| ValueCategory = lvalue -# 1281| getStmt(8): [ExprStmt] ExprStmt +# 1279| ValueCategory = prvalue(load) +# 1281| getStmt(6): [ExprStmt] ExprStmt # 1281| getExpr(): [FunctionCall] call to static_member # 1281| Type = [VoidType] void # 1281| ValueCategory = prvalue -# 1281| getQualifier(): [VariableAccess] a_arg +# 1281| getQualifier(): [AddressOfExpr] & ... # 1281| Type = [PointerType] A * -# 1281| ValueCategory = prvalue(load) +# 1281| ValueCategory = prvalue +# 1281| getOperand(): [VariableAccess] a +# 1281| Type = [Struct] A +# 1281| ValueCategory = lvalue # 1281| getArgument(0): [VariableAccess] a_arg # 1281| Type = [PointerType] A * # 1281| ValueCategory = prvalue(load) -# 1281| getArgument(1): [UnaryMinusExpr] - ... +# 1281| getArgument(1): [AddExpr] ... + ... # 1281| Type = [IntType] int -# 1281| Value = [UnaryMinusExpr] -1 # 1281| ValueCategory = prvalue -# 1281| getOperand(): [Literal] 1 +# 1281| getLeftOperand(): [VariableAccess] int_arg +# 1281| Type = [IntType] int +# 1281| ValueCategory = prvalue(load) +# 1281| getRightOperand(): [Literal] 2 # 1281| Type = [IntType] int -# 1281| Value = [Literal] 1 +# 1281| Value = [Literal] 2 # 1281| ValueCategory = prvalue -# 1283| getStmt(9): [ExprStmt] ExprStmt -# 1283| getExpr(): [FunctionCall] call to static_member_without_def +# 1281| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 1281| Type = [PointerType] A * +# 1281| ValueCategory = prvalue +# 1282| getStmt(7): [ExprStmt] ExprStmt +# 1282| getExpr(): [FunctionCall] call to static_member +# 1282| Type = [VoidType] void +# 1282| ValueCategory = prvalue +# 1282| getQualifier(): [PointerDereferenceExpr] * ... +# 1282| Type = [Struct] A +# 1282| ValueCategory = lvalue +# 1282| getOperand(): [VariableAccess] a_arg +# 1282| Type = [PointerType] A * +# 1282| ValueCategory = prvalue(load) +# 1282| getArgument(0): [AddressOfExpr] & ... +# 1282| Type = [PointerType] A * +# 1282| ValueCategory = prvalue +# 1282| getOperand(): [VariableAccess] a +# 1282| Type = [Struct] A +# 1282| ValueCategory = lvalue +# 1282| getArgument(1): [Literal] 99 +# 1282| Type = [IntType] int +# 1282| Value = [Literal] 99 +# 1282| ValueCategory = prvalue +# 1282| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 1282| Type = [Struct] A +# 1282| ValueCategory = lvalue +# 1283| getStmt(8): [ExprStmt] ExprStmt +# 1283| getExpr(): [FunctionCall] call to static_member # 1283| Type = [VoidType] void # 1283| ValueCategory = prvalue -# 1283| getQualifier(): [VariableAccess] a -# 1283| Type = [Struct] A -# 1283| ValueCategory = lvalue -# 1284| getStmt(10): [ExprStmt] ExprStmt -# 1284| getExpr(): [FunctionCall] call to static_member_without_def -# 1284| Type = [VoidType] void -# 1284| ValueCategory = prvalue -# 1286| getStmt(11): [ExprStmt] ExprStmt +# 1283| getQualifier(): [VariableAccess] a_arg +# 1283| Type = [PointerType] A * +# 1283| ValueCategory = prvalue(load) +# 1283| getArgument(0): [VariableAccess] a_arg +# 1283| Type = [PointerType] A * +# 1283| ValueCategory = prvalue(load) +# 1283| getArgument(1): [UnaryMinusExpr] - ... +# 1283| Type = [IntType] int +# 1283| Value = [UnaryMinusExpr] -1 +# 1283| ValueCategory = prvalue +# 1283| getOperand(): [Literal] 1 +# 1283| Type = [IntType] int +# 1283| Value = [Literal] 1 +# 1283| ValueCategory = prvalue +# 1285| getStmt(9): [ExprStmt] ExprStmt +# 1285| getExpr(): [FunctionCall] call to static_member_without_def +# 1285| Type = [VoidType] void +# 1285| ValueCategory = prvalue +# 1285| getQualifier(): [VariableAccess] a +# 1285| Type = [Struct] A +# 1285| ValueCategory = lvalue +# 1286| getStmt(10): [ExprStmt] ExprStmt # 1286| getExpr(): [FunctionCall] call to static_member_without_def # 1286| Type = [VoidType] void # 1286| ValueCategory = prvalue -# 1286| getQualifier(): [FunctionCall] call to getAnInstanceOfA -# 1286| Type = [PointerType] A * -# 1286| ValueCategory = prvalue -# 1287| getStmt(12): [ReturnStmt] return ... -# 1287| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1287| Type = [VoidType] void -# 1287| ValueCategory = prvalue -# 1287| getQualifier(): [VariableAccess] c -# 1287| Type = [Class] C -# 1287| ValueCategory = lvalue -# 1289| [TopLevelFunction] int missingReturnValue(bool, int) -# 1289| : -# 1289| getParameter(0): [Parameter] b -# 1289| Type = [BoolType] bool -# 1289| getParameter(1): [Parameter] x -# 1289| Type = [IntType] int -# 1289| getEntryPoint(): [BlockStmt] { ... } -# 1290| getStmt(0): [IfStmt] if (...) ... -# 1290| getCondition(): [VariableAccess] b -# 1290| Type = [BoolType] bool -# 1290| ValueCategory = prvalue(load) -# 1290| getThen(): [BlockStmt] { ... } -# 1291| getStmt(0): [ReturnStmt] return ... -# 1291| getExpr(): [VariableAccess] x -# 1291| Type = [IntType] int -# 1291| ValueCategory = prvalue(load) -# 1293| getStmt(1): [ReturnStmt] return ... -# 1295| [TopLevelFunction] void returnVoid(int, int) -# 1295| : -# 1295| getParameter(0): [Parameter] x -# 1295| Type = [IntType] int -# 1295| getParameter(1): [Parameter] y -# 1295| Type = [IntType] int -# 1295| getEntryPoint(): [BlockStmt] { ... } -# 1296| getStmt(0): [ReturnStmt] return ... -# 1296| getExpr(): [FunctionCall] call to IntegerOps -# 1296| Type = [VoidType] void -# 1296| ValueCategory = prvalue -# 1296| getArgument(0): [VariableAccess] x -# 1296| Type = [IntType] int -# 1296| ValueCategory = prvalue(load) -# 1296| getArgument(1): [VariableAccess] y -# 1296| Type = [IntType] int -# 1296| ValueCategory = prvalue(load) -# 1299| [TopLevelFunction] void gccBinaryConditional(bool, int, long) -# 1299| : -# 1299| getParameter(0): [Parameter] b -# 1299| Type = [BoolType] bool -# 1299| getParameter(1): [Parameter] x -# 1299| Type = [IntType] int -# 1299| getParameter(2): [Parameter] y -# 1299| Type = [LongType] long -# 1299| getEntryPoint(): [BlockStmt] { ... } -# 1300| getStmt(0): [DeclStmt] declaration -# 1300| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1300| Type = [IntType] int -# 1300| getVariable().getInitializer(): [Initializer] initializer for z -# 1300| getExpr(): [VariableAccess] x -# 1300| Type = [IntType] int -# 1300| ValueCategory = prvalue(load) -# 1301| getStmt(1): [ExprStmt] ExprStmt -# 1301| getExpr(): [AssignExpr] ... = ... -# 1301| Type = [IntType] int -# 1301| ValueCategory = lvalue -# 1301| getLValue(): [VariableAccess] z -# 1301| Type = [IntType] int -# 1301| ValueCategory = lvalue -# 1301| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1301| Type = [IntType] int -# 1301| ValueCategory = prvalue(load) -# 1301| getCondition(): [VariableAccess] b -# 1301| Type = [BoolType] bool -# 1301| ValueCategory = prvalue(load) -# 1301| getElse(): [VariableAccess] x -# 1301| Type = [IntType] int -# 1301| ValueCategory = prvalue(load) -# 1302| getStmt(2): [ExprStmt] ExprStmt -# 1302| getExpr(): [AssignExpr] ... = ... +# 1288| getStmt(11): [ExprStmt] ExprStmt +# 1288| getExpr(): [FunctionCall] call to static_member_without_def +# 1288| Type = [VoidType] void +# 1288| ValueCategory = prvalue +# 1288| getQualifier(): [FunctionCall] call to getAnInstanceOfA +# 1288| Type = [PointerType] A * +# 1288| ValueCategory = prvalue +# 1289| getStmt(12): [ReturnStmt] return ... +# 1289| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1289| Type = [VoidType] void +# 1289| ValueCategory = prvalue +# 1289| getQualifier(): [VariableAccess] c +# 1289| Type = [Class] C +# 1289| ValueCategory = lvalue +# 1291| [TopLevelFunction] int missingReturnValue(bool, int) +# 1291| : +# 1291| getParameter(0): [Parameter] b +# 1291| Type = [BoolType] bool +# 1291| getParameter(1): [Parameter] x +# 1291| Type = [IntType] int +# 1291| getEntryPoint(): [BlockStmt] { ... } +# 1292| getStmt(0): [IfStmt] if (...) ... +# 1292| getCondition(): [VariableAccess] b +# 1292| Type = [BoolType] bool +# 1292| ValueCategory = prvalue(load) +# 1292| getThen(): [BlockStmt] { ... } +# 1293| getStmt(0): [ReturnStmt] return ... +# 1293| getExpr(): [VariableAccess] x +# 1293| Type = [IntType] int +# 1293| ValueCategory = prvalue(load) +# 1295| getStmt(1): [ReturnStmt] return ... +# 1297| [TopLevelFunction] void returnVoid(int, int) +# 1297| : +# 1297| getParameter(0): [Parameter] x +# 1297| Type = [IntType] int +# 1297| getParameter(1): [Parameter] y +# 1297| Type = [IntType] int +# 1297| getEntryPoint(): [BlockStmt] { ... } +# 1298| getStmt(0): [ReturnStmt] return ... +# 1298| getExpr(): [FunctionCall] call to IntegerOps +# 1298| Type = [VoidType] void +# 1298| ValueCategory = prvalue +# 1298| getArgument(0): [VariableAccess] x +# 1298| Type = [IntType] int +# 1298| ValueCategory = prvalue(load) +# 1298| getArgument(1): [VariableAccess] y +# 1298| Type = [IntType] int +# 1298| ValueCategory = prvalue(load) +# 1301| [TopLevelFunction] void gccBinaryConditional(bool, int, long) +# 1301| : +# 1301| getParameter(0): [Parameter] b +# 1301| Type = [BoolType] bool +# 1301| getParameter(1): [Parameter] x +# 1301| Type = [IntType] int +# 1301| getParameter(2): [Parameter] y +# 1301| Type = [LongType] long +# 1301| getEntryPoint(): [BlockStmt] { ... } +# 1302| getStmt(0): [DeclStmt] declaration +# 1302| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z # 1302| Type = [IntType] int -# 1302| ValueCategory = lvalue -# 1302| getLValue(): [VariableAccess] z -# 1302| Type = [IntType] int -# 1302| ValueCategory = lvalue -# 1302| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1302| Type = [LongType] long -# 1302| ValueCategory = prvalue(load) -# 1302| getCondition(): [VariableAccess] b -# 1302| Type = [BoolType] bool +# 1302| getVariable().getInitializer(): [Initializer] initializer for z +# 1302| getExpr(): [VariableAccess] x +# 1302| Type = [IntType] int # 1302| ValueCategory = prvalue(load) -# 1302| getElse(): [VariableAccess] y -# 1302| Type = [LongType] long -# 1302| ValueCategory = prvalue(load) -# 1302| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1302| Conversion = [IntegralConversion] integral conversion -# 1302| Type = [IntType] int -# 1302| ValueCategory = prvalue -# 1303| getStmt(3): [ExprStmt] ExprStmt +# 1303| getStmt(1): [ExprStmt] ExprStmt # 1303| getExpr(): [AssignExpr] ... = ... # 1303| Type = [IntType] int # 1303| ValueCategory = lvalue @@ -10625,17 +10738,13 @@ ir.cpp: # 1303| getRValue(): [ConditionalExpr] ... ? ... : ... # 1303| Type = [IntType] int # 1303| ValueCategory = prvalue(load) -# 1303| getCondition(): [VariableAccess] x -# 1303| Type = [IntType] int +# 1303| getCondition(): [VariableAccess] b +# 1303| Type = [BoolType] bool # 1303| ValueCategory = prvalue(load) # 1303| getElse(): [VariableAccess] x # 1303| Type = [IntType] int # 1303| ValueCategory = prvalue(load) -# 1303| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1303| Conversion = [BoolConversion] conversion to bool -# 1303| Type = [BoolType] bool -# 1303| ValueCategory = prvalue -# 1304| getStmt(4): [ExprStmt] ExprStmt +# 1304| getStmt(2): [ExprStmt] ExprStmt # 1304| getExpr(): [AssignExpr] ... = ... # 1304| Type = [IntType] int # 1304| ValueCategory = lvalue @@ -10645,21 +10754,17 @@ ir.cpp: # 1304| getRValue(): [ConditionalExpr] ... ? ... : ... # 1304| Type = [LongType] long # 1304| ValueCategory = prvalue(load) -# 1304| getCondition(): [VariableAccess] x -# 1304| Type = [IntType] int +# 1304| getCondition(): [VariableAccess] b +# 1304| Type = [BoolType] bool # 1304| ValueCategory = prvalue(load) # 1304| getElse(): [VariableAccess] y # 1304| Type = [LongType] long # 1304| ValueCategory = prvalue(load) -# 1304| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1304| Conversion = [BoolConversion] conversion to bool -# 1304| Type = [BoolType] bool -# 1304| ValueCategory = prvalue # 1304| getRValue().getFullyConverted(): [CStyleCast] (int)... # 1304| Conversion = [IntegralConversion] integral conversion # 1304| Type = [IntType] int # 1304| ValueCategory = prvalue -# 1305| getStmt(5): [ExprStmt] ExprStmt +# 1305| getStmt(3): [ExprStmt] ExprStmt # 1305| getExpr(): [AssignExpr] ... = ... # 1305| Type = [IntType] int # 1305| ValueCategory = lvalue @@ -10667,10 +10772,10 @@ ir.cpp: # 1305| Type = [IntType] int # 1305| ValueCategory = lvalue # 1305| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1305| Type = [LongType] long +# 1305| Type = [IntType] int # 1305| ValueCategory = prvalue(load) -# 1305| getCondition(): [VariableAccess] y -# 1305| Type = [LongType] long +# 1305| getCondition(): [VariableAccess] x +# 1305| Type = [IntType] int # 1305| ValueCategory = prvalue(load) # 1305| getElse(): [VariableAccess] x # 1305| Type = [IntType] int @@ -10679,15 +10784,7 @@ ir.cpp: # 1305| Conversion = [BoolConversion] conversion to bool # 1305| Type = [BoolType] bool # 1305| ValueCategory = prvalue -# 1305| getElse().getFullyConverted(): [CStyleCast] (long)... -# 1305| Conversion = [IntegralConversion] integral conversion -# 1305| Type = [LongType] long -# 1305| ValueCategory = prvalue -# 1305| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1305| Conversion = [IntegralConversion] integral conversion -# 1305| Type = [IntType] int -# 1305| ValueCategory = prvalue -# 1306| getStmt(6): [ExprStmt] ExprStmt +# 1306| getStmt(4): [ExprStmt] ExprStmt # 1306| getExpr(): [AssignExpr] ... = ... # 1306| Type = [IntType] int # 1306| ValueCategory = lvalue @@ -10697,8 +10794,8 @@ ir.cpp: # 1306| getRValue(): [ConditionalExpr] ... ? ... : ... # 1306| Type = [LongType] long # 1306| ValueCategory = prvalue(load) -# 1306| getCondition(): [VariableAccess] y -# 1306| Type = [LongType] long +# 1306| getCondition(): [VariableAccess] x +# 1306| Type = [IntType] int # 1306| ValueCategory = prvalue(load) # 1306| getElse(): [VariableAccess] y # 1306| Type = [LongType] long @@ -10711,7 +10808,35 @@ ir.cpp: # 1306| Conversion = [IntegralConversion] integral conversion # 1306| Type = [IntType] int # 1306| ValueCategory = prvalue -# 1308| getStmt(7): [ExprStmt] ExprStmt +# 1307| getStmt(5): [ExprStmt] ExprStmt +# 1307| getExpr(): [AssignExpr] ... = ... +# 1307| Type = [IntType] int +# 1307| ValueCategory = lvalue +# 1307| getLValue(): [VariableAccess] z +# 1307| Type = [IntType] int +# 1307| ValueCategory = lvalue +# 1307| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1307| Type = [LongType] long +# 1307| ValueCategory = prvalue(load) +# 1307| getCondition(): [VariableAccess] y +# 1307| Type = [LongType] long +# 1307| ValueCategory = prvalue(load) +# 1307| getElse(): [VariableAccess] x +# 1307| Type = [IntType] int +# 1307| ValueCategory = prvalue(load) +# 1307| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1307| Conversion = [BoolConversion] conversion to bool +# 1307| Type = [BoolType] bool +# 1307| ValueCategory = prvalue +# 1307| getElse().getFullyConverted(): [CStyleCast] (long)... +# 1307| Conversion = [IntegralConversion] integral conversion +# 1307| Type = [LongType] long +# 1307| ValueCategory = prvalue +# 1307| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1307| Conversion = [IntegralConversion] integral conversion +# 1307| Type = [IntType] int +# 1307| ValueCategory = prvalue +# 1308| getStmt(6): [ExprStmt] ExprStmt # 1308| getExpr(): [AssignExpr] ... = ... # 1308| Type = [IntType] int # 1308| ValueCategory = lvalue @@ -10719,319 +10844,303 @@ ir.cpp: # 1308| Type = [IntType] int # 1308| ValueCategory = lvalue # 1308| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1308| Type = [IntType] int +# 1308| Type = [LongType] long # 1308| ValueCategory = prvalue(load) -# 1308| getCondition(): [LogicalOrExpr] ... || ... -# 1308| Type = [BoolType] bool -# 1308| ValueCategory = prvalue -# 1308| getLeftOperand(): [LogicalAndExpr] ... && ... -# 1308| Type = [BoolType] bool -# 1308| ValueCategory = prvalue -# 1308| getLeftOperand(): [VariableAccess] x -# 1308| Type = [IntType] int -# 1308| ValueCategory = prvalue(load) -# 1308| getRightOperand(): [VariableAccess] b -# 1308| Type = [BoolType] bool -# 1308| ValueCategory = prvalue(load) -# 1308| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... -# 1308| Conversion = [BoolConversion] conversion to bool -# 1308| Type = [BoolType] bool -# 1308| ValueCategory = prvalue -# 1308| getRightOperand(): [VariableAccess] y -# 1308| Type = [LongType] long -# 1308| ValueCategory = prvalue(load) -# 1308| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... -# 1308| Conversion = [BoolConversion] conversion to bool -# 1308| Type = [BoolType] bool -# 1308| ValueCategory = prvalue -# 1308| getElse(): [VariableAccess] x -# 1308| Type = [IntType] int +# 1308| getCondition(): [VariableAccess] y +# 1308| Type = [LongType] long # 1308| ValueCategory = prvalue(load) -# 1308| getCondition().getFullyConverted(): [ParenthesisExpr] (...) +# 1308| getElse(): [VariableAccess] y +# 1308| Type = [LongType] long +# 1308| ValueCategory = prvalue(load) +# 1308| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1308| Conversion = [BoolConversion] conversion to bool # 1308| Type = [BoolType] bool # 1308| ValueCategory = prvalue -# 1309| getStmt(8): [ReturnStmt] return ... -# 1311| [TopLevelFunction] bool predicateA() -# 1311| : -# 1312| [TopLevelFunction] bool predicateB() -# 1312| : -# 1314| [TopLevelFunction] int shortCircuitConditional(int, int) +# 1308| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1308| Conversion = [IntegralConversion] integral conversion +# 1308| Type = [IntType] int +# 1308| ValueCategory = prvalue +# 1310| getStmt(7): [ExprStmt] ExprStmt +# 1310| getExpr(): [AssignExpr] ... = ... +# 1310| Type = [IntType] int +# 1310| ValueCategory = lvalue +# 1310| getLValue(): [VariableAccess] z +# 1310| Type = [IntType] int +# 1310| ValueCategory = lvalue +# 1310| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1310| Type = [IntType] int +# 1310| ValueCategory = prvalue(load) +# 1310| getCondition(): [LogicalOrExpr] ... || ... +# 1310| Type = [BoolType] bool +# 1310| ValueCategory = prvalue +# 1310| getLeftOperand(): [LogicalAndExpr] ... && ... +# 1310| Type = [BoolType] bool +# 1310| ValueCategory = prvalue +# 1310| getLeftOperand(): [VariableAccess] x +# 1310| Type = [IntType] int +# 1310| ValueCategory = prvalue(load) +# 1310| getRightOperand(): [VariableAccess] b +# 1310| Type = [BoolType] bool +# 1310| ValueCategory = prvalue(load) +# 1310| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... +# 1310| Conversion = [BoolConversion] conversion to bool +# 1310| Type = [BoolType] bool +# 1310| ValueCategory = prvalue +# 1310| getRightOperand(): [VariableAccess] y +# 1310| Type = [LongType] long +# 1310| ValueCategory = prvalue(load) +# 1310| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 1310| Conversion = [BoolConversion] conversion to bool +# 1310| Type = [BoolType] bool +# 1310| ValueCategory = prvalue +# 1310| getElse(): [VariableAccess] x +# 1310| Type = [IntType] int +# 1310| ValueCategory = prvalue(load) +# 1310| getCondition().getFullyConverted(): [ParenthesisExpr] (...) +# 1310| Type = [BoolType] bool +# 1310| ValueCategory = prvalue +# 1311| getStmt(8): [ReturnStmt] return ... +# 1313| [TopLevelFunction] bool predicateA() +# 1313| : +# 1314| [TopLevelFunction] bool predicateB() # 1314| : -# 1314| getParameter(0): [Parameter] x -# 1314| Type = [IntType] int -# 1314| getParameter(1): [Parameter] y -# 1314| Type = [IntType] int -# 1314| getEntryPoint(): [BlockStmt] { ... } -# 1315| getStmt(0): [ReturnStmt] return ... -# 1315| getExpr(): [ConditionalExpr] ... ? ... : ... -# 1315| Type = [IntType] int -# 1315| ValueCategory = prvalue(load) -# 1315| getCondition(): [LogicalAndExpr] ... && ... -# 1315| Type = [BoolType] bool -# 1315| ValueCategory = prvalue -# 1315| getLeftOperand(): [FunctionCall] call to predicateA -# 1315| Type = [BoolType] bool -# 1315| ValueCategory = prvalue -# 1315| getRightOperand(): [FunctionCall] call to predicateB -# 1315| Type = [BoolType] bool -# 1315| ValueCategory = prvalue -# 1315| getThen(): [VariableAccess] x -# 1315| Type = [IntType] int -# 1315| ValueCategory = prvalue(load) -# 1315| getElse(): [VariableAccess] y -# 1315| Type = [IntType] int -# 1315| ValueCategory = prvalue(load) -# 1318| [Operator,TopLevelFunction] void* operator new(size_t, void*) -# 1318| : -# 1318| getParameter(0): [Parameter] (unnamed parameter 0) -# 1318| Type = [CTypedefType,Size_t] size_t -# 1318| getParameter(1): [Parameter] (unnamed parameter 1) -# 1318| Type = [VoidPointerType] void * -# 1320| [TopLevelFunction] void f(int*) +# 1316| [TopLevelFunction] int shortCircuitConditional(int, int) +# 1316| : +# 1316| getParameter(0): [Parameter] x +# 1316| Type = [IntType] int +# 1316| getParameter(1): [Parameter] y +# 1316| Type = [IntType] int +# 1316| getEntryPoint(): [BlockStmt] { ... } +# 1317| getStmt(0): [ReturnStmt] return ... +# 1317| getExpr(): [ConditionalExpr] ... ? ... : ... +# 1317| Type = [IntType] int +# 1317| ValueCategory = prvalue(load) +# 1317| getCondition(): [LogicalAndExpr] ... && ... +# 1317| Type = [BoolType] bool +# 1317| ValueCategory = prvalue +# 1317| getLeftOperand(): [FunctionCall] call to predicateA +# 1317| Type = [BoolType] bool +# 1317| ValueCategory = prvalue +# 1317| getRightOperand(): [FunctionCall] call to predicateB +# 1317| Type = [BoolType] bool +# 1317| ValueCategory = prvalue +# 1317| getThen(): [VariableAccess] x +# 1317| Type = [IntType] int +# 1317| ValueCategory = prvalue(load) +# 1317| getElse(): [VariableAccess] y +# 1317| Type = [IntType] int +# 1317| ValueCategory = prvalue(load) +# 1320| [Operator,TopLevelFunction] void* operator new(size_t, void*) # 1320| : -# 1320| getParameter(0): [Parameter] p -# 1320| Type = [IntPointerType] int * -# 1321| getEntryPoint(): [BlockStmt] { ... } -# 1322| getStmt(0): [ExprStmt] ExprStmt -# 1322| getExpr(): [NewExpr] new -# 1322| Type = [IntPointerType] int * -# 1322| ValueCategory = prvalue -# 1322| getAllocatorCall(): [FunctionCall] call to operator new -# 1322| Type = [VoidPointerType] void * -# 1322| ValueCategory = prvalue -# 1322| getArgument(0): [ErrorExpr] -# 1322| Type = [LongType] unsigned long -# 1322| ValueCategory = prvalue -# 1322| getArgument(1): [VariableAccess] p -# 1322| Type = [IntPointerType] int * -# 1322| ValueCategory = prvalue(load) -# 1322| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... -# 1322| Conversion = [PointerConversion] pointer conversion -# 1322| Type = [VoidPointerType] void * -# 1322| ValueCategory = prvalue -# 1323| getStmt(1): [ReturnStmt] return ... -# 1326| [FunctionTemplateInstantiation,TopLevelFunction] Point defaultConstruct() -# 1326| : -# 1326| getEntryPoint(): [BlockStmt] { ... } -# 1327| getStmt(0): [ReturnStmt] return ... -# 1327| getExpr(): [Literal] 0 -# 1327| Type = [Struct] Point -# 1327| Value = [Literal] 0 -# 1327| ValueCategory = prvalue -# 1326| [FunctionTemplateInstantiation,TopLevelFunction] String defaultConstruct() -# 1326| : -# 1326| getEntryPoint(): [BlockStmt] { ... } -# 1327| getStmt(0): [ReturnStmt] return ... -# 1327| getExpr(): [ConstructorCall] call to String -# 1327| Type = [VoidType] void -# 1327| ValueCategory = prvalue -# 1326| [TemplateFunction,TopLevelFunction] T defaultConstruct() -# 1326| : -# 1326| getEntryPoint(): [BlockStmt] { ... } -# 1327| getStmt(0): [ReturnStmt] return ... -# 1327| getExpr(): [Literal] 0 -# 1327| Type = [TemplateParameter] T -# 1327| Value = [Literal] 0 -# 1327| ValueCategory = prvalue -# 1327| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1327| Type = [TemplateParameter] T -# 1327| ValueCategory = prvalue(load) -# 1326| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor defaultConstruct() -# 1326| : -# 1326| getEntryPoint(): [BlockStmt] { ... } -# 1327| getStmt(0): [ReturnStmt] return ... -# 1327| getExpr(): [ConstructorCall] call to copy_constructor -# 1327| Type = [VoidType] void -# 1327| ValueCategory = prvalue -# 1326| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only defaultConstruct() -# 1326| : -# 1326| getEntryPoint(): [BlockStmt] { ... } -# 1327| getStmt(0): [ReturnStmt] return ... -# 1327| getExpr(): [Literal] 0 -# 1327| Type = [Class] destructor_only -# 1327| Value = [Literal] 0 -# 1327| ValueCategory = prvalue -# 1330| [CopyAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only const&) -# 1330| : +# 1320| getParameter(0): [Parameter] (unnamed parameter 0) +# 1320| Type = [CTypedefType,Size_t] size_t +# 1320| getParameter(1): [Parameter] (unnamed parameter 1) +# 1320| Type = [VoidPointerType] void * +# 1322| [TopLevelFunction] void f(int*) +# 1322| : +# 1322| getParameter(0): [Parameter] p +# 1322| Type = [IntPointerType] int * +# 1323| getEntryPoint(): [BlockStmt] { ... } +# 1324| getStmt(0): [ExprStmt] ExprStmt +# 1324| getExpr(): [NewExpr] new +# 1324| Type = [IntPointerType] int * +# 1324| ValueCategory = prvalue +# 1324| getAllocatorCall(): [FunctionCall] call to operator new +# 1324| Type = [VoidPointerType] void * +# 1324| ValueCategory = prvalue +# 1324| getArgument(0): [ErrorExpr] +# 1324| Type = [LongType] unsigned long +# 1324| ValueCategory = prvalue +# 1324| getArgument(1): [VariableAccess] p +# 1324| Type = [IntPointerType] int * +# 1324| ValueCategory = prvalue(load) +# 1324| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... +# 1324| Conversion = [PointerConversion] pointer conversion +# 1324| Type = [VoidPointerType] void * +# 1324| ValueCategory = prvalue +# 1325| getStmt(1): [ReturnStmt] return ... +# 1328| [FunctionTemplateInstantiation,TopLevelFunction] Point defaultConstruct() +# 1328| : +# 1328| getEntryPoint(): [BlockStmt] { ... } +# 1329| getStmt(0): [ReturnStmt] return ... +# 1329| getExpr(): [Literal] 0 +# 1329| Type = [Struct] Point +# 1329| Value = [Literal] 0 +# 1329| ValueCategory = prvalue +# 1328| [FunctionTemplateInstantiation,TopLevelFunction] String defaultConstruct() +# 1328| : +# 1328| getEntryPoint(): [BlockStmt] { ... } +# 1329| getStmt(0): [ReturnStmt] return ... +# 1329| getExpr(): [ConstructorCall] call to String +# 1329| Type = [VoidType] void +# 1329| ValueCategory = prvalue +# 1328| [TemplateFunction,TopLevelFunction] T defaultConstruct() +# 1328| : +# 1328| getEntryPoint(): [BlockStmt] { ... } +# 1329| getStmt(0): [ReturnStmt] return ... +# 1329| getExpr(): [Literal] 0 +# 1329| Type = [TemplateParameter] T +# 1329| Value = [Literal] 0 +# 1329| ValueCategory = prvalue +# 1329| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1329| Type = [TemplateParameter] T +# 1329| ValueCategory = prvalue(load) +# 1328| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor defaultConstruct() +# 1328| : +# 1328| getEntryPoint(): [BlockStmt] { ... } +# 1329| getStmt(0): [ReturnStmt] return ... +# 1329| getExpr(): [ConstructorCall] call to copy_constructor +# 1329| Type = [VoidType] void +# 1329| ValueCategory = prvalue +# 1328| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only defaultConstruct() +# 1328| : +# 1328| getEntryPoint(): [BlockStmt] { ... } +# 1329| getStmt(0): [ReturnStmt] return ... +# 1329| getExpr(): [Literal] 0 +# 1329| Type = [Class] destructor_only +# 1329| Value = [Literal] 0 +# 1329| ValueCategory = prvalue +# 1332| [CopyAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only const&) +# 1332| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const constructor_only & -# 1330| [MoveAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only&&) -# 1330| : +# 1332| [MoveAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only&&) +# 1332| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] constructor_only && -# 1330| [CopyConstructor] void constructor_only::constructor_only(constructor_only const&) -# 1330| : +# 1332| [CopyConstructor] void constructor_only::constructor_only(constructor_only const&) +# 1332| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const constructor_only & -# 1330| [MoveConstructor] void constructor_only::constructor_only(constructor_only&&) -# 1330| : +# 1332| [MoveConstructor] void constructor_only::constructor_only(constructor_only&&) +# 1332| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] constructor_only && -# 1335| [Constructor] void constructor_only::constructor_only(int) -# 1335| : -# 1335| getParameter(0): [Parameter] x -# 1335| Type = [IntType] int -# 1338| [CopyAssignmentOperator] copy_constructor& copy_constructor::operator=(copy_constructor const&) -# 1338| : +# 1337| [Constructor] void constructor_only::constructor_only(int) +# 1337| : +# 1337| getParameter(0): [Parameter] x +# 1337| Type = [IntType] int +# 1340| [CopyAssignmentOperator] copy_constructor& copy_constructor::operator=(copy_constructor const&) +# 1340| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const copy_constructor & -# 1343| [Constructor] void copy_constructor::copy_constructor() -# 1343| : -# 1344| [CopyConstructor] void copy_constructor::copy_constructor(copy_constructor const&) -# 1344| : -# 1344| getParameter(0): [Parameter] (unnamed parameter 0) -# 1344| Type = [LValueReferenceType] const copy_constructor & -# 1346| [MemberFunction] void copy_constructor::method() +# 1345| [Constructor] void copy_constructor::copy_constructor() +# 1345| : +# 1346| [CopyConstructor] void copy_constructor::copy_constructor(copy_constructor const&) # 1346| : -# 1349| [CopyAssignmentOperator] destructor_only& destructor_only::operator=(destructor_only const&) -# 1349| : +# 1346| getParameter(0): [Parameter] (unnamed parameter 0) +# 1346| Type = [LValueReferenceType] const copy_constructor & +# 1348| [MemberFunction] void copy_constructor::method() +# 1348| : +# 1351| [CopyAssignmentOperator] destructor_only& destructor_only::operator=(destructor_only const&) +# 1351| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const destructor_only & -# 1349| [Constructor] void destructor_only::destructor_only() -# 1349| : -# 1351| [Destructor] void destructor_only::~destructor_only() +# 1351| [Constructor] void destructor_only::destructor_only() # 1351| : -# 1353| [MemberFunction] void destructor_only::method() +# 1353| [Destructor] void destructor_only::~destructor_only() # 1353| : -# 1357| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(Point const&) -# 1357| : -# 1357| getParameter(0): [Parameter] v -# 1357| Type = [LValueReferenceType] const Point & -# 1357| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(String const&) -# 1357| : -# 1357| getParameter(0): [Parameter] v -# 1357| Type = [LValueReferenceType] const String & -# 1357| [TemplateFunction,TopLevelFunction] void acceptRef(T const&) -# 1357| : -# 1357| getParameter(0): [Parameter] v -# 1357| Type = [LValueReferenceType] const T & -# 1357| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(copy_constructor const&) -# 1357| : -# 1357| getParameter(0): [Parameter] v -# 1357| Type = [LValueReferenceType] const copy_constructor & -# 1357| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(destructor_only const&) -# 1357| : -# 1357| getParameter(0): [Parameter] v -# 1357| Type = [LValueReferenceType] const destructor_only & -# 1360| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(Point) -# 1360| : -# 1360| getParameter(0): [Parameter] v -# 1360| Type = [Struct] Point -# 1360| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(String) -# 1360| : -# 1360| getParameter(0): [Parameter] v -# 1360| Type = [Struct] String -# 1360| [TemplateFunction,TopLevelFunction] void acceptValue(T) -# 1360| : -# 1360| getParameter(0): [Parameter] v -# 1360| Type = [TemplateParameter] T -# 1360| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(copy_constructor) -# 1360| : -# 1360| getParameter(0): [Parameter] v -# 1360| Type = [Class] copy_constructor -# 1360| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(destructor_only) -# 1360| : -# 1360| getParameter(0): [Parameter] v -# 1360| Type = [Class] destructor_only -# 1363| [FunctionTemplateInstantiation,TopLevelFunction] POD_Derived returnValue() -# 1363| : -# 1363| [FunctionTemplateInstantiation,TopLevelFunction] POD_Middle returnValue() -# 1363| : -# 1363| [FunctionTemplateInstantiation,TopLevelFunction] Point returnValue() -# 1363| : -# 1363| [FunctionTemplateInstantiation,TopLevelFunction] String returnValue() -# 1363| : -# 1363| [TemplateFunction,TopLevelFunction] T returnValue() -# 1363| : -# 1363| [FunctionTemplateInstantiation,TopLevelFunction] UnusualFields returnValue() -# 1363| : -# 1363| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor returnValue() -# 1363| : -# 1363| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only returnValue() -# 1363| : -# 1365| [TopLevelFunction] void temporary_string() +# 1355| [MemberFunction] void destructor_only::method() +# 1355| : +# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(Point const&) +# 1359| : +# 1359| getParameter(0): [Parameter] v +# 1359| Type = [LValueReferenceType] const Point & +# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(String const&) +# 1359| : +# 1359| getParameter(0): [Parameter] v +# 1359| Type = [LValueReferenceType] const String & +# 1359| [TemplateFunction,TopLevelFunction] void acceptRef(T const&) +# 1359| : +# 1359| getParameter(0): [Parameter] v +# 1359| Type = [LValueReferenceType] const T & +# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(copy_constructor const&) +# 1359| : +# 1359| getParameter(0): [Parameter] v +# 1359| Type = [LValueReferenceType] const copy_constructor & +# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(destructor_only const&) +# 1359| : +# 1359| getParameter(0): [Parameter] v +# 1359| Type = [LValueReferenceType] const destructor_only & +# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(Point) +# 1362| : +# 1362| getParameter(0): [Parameter] v +# 1362| Type = [Struct] Point +# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(String) +# 1362| : +# 1362| getParameter(0): [Parameter] v +# 1362| Type = [Struct] String +# 1362| [TemplateFunction,TopLevelFunction] void acceptValue(T) +# 1362| : +# 1362| getParameter(0): [Parameter] v +# 1362| Type = [TemplateParameter] T +# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(copy_constructor) +# 1362| : +# 1362| getParameter(0): [Parameter] v +# 1362| Type = [Class] copy_constructor +# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(destructor_only) +# 1362| : +# 1362| getParameter(0): [Parameter] v +# 1362| Type = [Class] destructor_only +# 1365| [FunctionTemplateInstantiation,TopLevelFunction] POD_Derived returnValue() +# 1365| : +# 1365| [FunctionTemplateInstantiation,TopLevelFunction] POD_Middle returnValue() +# 1365| : +# 1365| [FunctionTemplateInstantiation,TopLevelFunction] Point returnValue() +# 1365| : +# 1365| [FunctionTemplateInstantiation,TopLevelFunction] String returnValue() +# 1365| : +# 1365| [TemplateFunction,TopLevelFunction] T returnValue() +# 1365| : +# 1365| [FunctionTemplateInstantiation,TopLevelFunction] UnusualFields returnValue() +# 1365| : +# 1365| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor returnValue() # 1365| : -# 1365| getEntryPoint(): [BlockStmt] { ... } -# 1366| getStmt(0): [DeclStmt] declaration -# 1366| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 1366| Type = [Struct] String -# 1366| getVariable().getInitializer(): [Initializer] initializer for s -# 1366| getExpr(): [FunctionCall] call to returnValue -# 1366| Type = [Struct] String -# 1366| ValueCategory = prvalue -# 1367| getStmt(1): [DeclStmt] declaration -# 1367| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs -# 1367| Type = [LValueReferenceType] const String & -# 1367| getVariable().getInitializer(): [Initializer] initializer for rs -# 1367| getExpr(): [FunctionCall] call to returnValue -# 1367| Type = [Struct] String -# 1367| ValueCategory = prvalue -# 1367| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1367| Type = [LValueReferenceType] const String & -# 1367| ValueCategory = prvalue -# 1367| getExpr(): [CStyleCast] (const String)... -# 1367| Conversion = [GlvalueConversion] glvalue conversion -# 1367| Type = [SpecifiedType] const String -# 1367| ValueCategory = lvalue -# 1367| getExpr(): [TemporaryObjectExpr] temporary object -# 1367| Type = [Struct] String -# 1367| ValueCategory = lvalue -# 1369| getStmt(2): [ExprStmt] ExprStmt -# 1369| getExpr(): [FunctionCall] call to acceptRef -# 1369| Type = [VoidType] void -# 1369| ValueCategory = prvalue -# 1369| getArgument(0): [VariableAccess] s -# 1369| Type = [Struct] String -# 1369| ValueCategory = lvalue -# 1369| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1369| Type = [LValueReferenceType] const String & -# 1369| ValueCategory = prvalue -# 1369| getExpr(): [CStyleCast] (const String)... -# 1369| Conversion = [GlvalueConversion] glvalue conversion -# 1369| Type = [SpecifiedType] const String -# 1369| ValueCategory = lvalue -# 1370| getStmt(3): [ExprStmt] ExprStmt -# 1370| getExpr(): [FunctionCall] call to acceptRef -# 1370| Type = [VoidType] void -# 1370| ValueCategory = prvalue -# 1370| getArgument(0): [ConstructorCall] call to String -# 1370| Type = [VoidType] void -# 1370| ValueCategory = prvalue -# 1370| getArgument(0): foo -# 1370| Type = [ArrayType] const char[4] -# 1370| Value = [StringLiteral] "foo" -# 1370| ValueCategory = lvalue -# 1370| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1370| Type = [PointerType] const char * -# 1370| ValueCategory = prvalue -# 1370| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1370| Type = [LValueReferenceType] const String & -# 1370| ValueCategory = prvalue -# 1370| getExpr(): [TemporaryObjectExpr] temporary object -# 1370| Type = [SpecifiedType] const String -# 1370| ValueCategory = lvalue -# 1371| getStmt(4): [ExprStmt] ExprStmt -# 1371| getExpr(): [FunctionCall] call to acceptValue +# 1365| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only returnValue() +# 1365| : +# 1367| [TopLevelFunction] void temporary_string() +# 1367| : +# 1367| getEntryPoint(): [BlockStmt] { ... } +# 1368| getStmt(0): [DeclStmt] declaration +# 1368| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 1368| Type = [Struct] String +# 1368| getVariable().getInitializer(): [Initializer] initializer for s +# 1368| getExpr(): [FunctionCall] call to returnValue +# 1368| Type = [Struct] String +# 1368| ValueCategory = prvalue +# 1369| getStmt(1): [DeclStmt] declaration +# 1369| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs +# 1369| Type = [LValueReferenceType] const String & +# 1369| getVariable().getInitializer(): [Initializer] initializer for rs +# 1369| getExpr(): [FunctionCall] call to returnValue +# 1369| Type = [Struct] String +# 1369| ValueCategory = prvalue +# 1369| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1369| Type = [LValueReferenceType] const String & +# 1369| ValueCategory = prvalue +# 1369| getExpr(): [CStyleCast] (const String)... +# 1369| Conversion = [GlvalueConversion] glvalue conversion +# 1369| Type = [SpecifiedType] const String +# 1369| ValueCategory = lvalue +# 1369| getExpr(): [TemporaryObjectExpr] temporary object +# 1369| Type = [Struct] String +# 1369| ValueCategory = lvalue +# 1371| getStmt(2): [ExprStmt] ExprStmt +# 1371| getExpr(): [FunctionCall] call to acceptRef # 1371| Type = [VoidType] void # 1371| ValueCategory = prvalue -# 1371| getArgument(0): [ConstructorCall] call to String -# 1371| Type = [VoidType] void -# 1371| ValueCategory = prvalue -# 1371| getArgument(0): [VariableAccess] s -# 1371| Type = [Struct] String -# 1371| ValueCategory = lvalue -# 1371| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1371| Type = [LValueReferenceType] const String & -# 1371| ValueCategory = prvalue -# 1371| getExpr(): [CStyleCast] (const String)... -# 1371| Conversion = [GlvalueConversion] glvalue conversion -# 1371| Type = [SpecifiedType] const String -# 1371| ValueCategory = lvalue -# 1371| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1371| getArgument(0): [VariableAccess] s # 1371| Type = [Struct] String # 1371| ValueCategory = lvalue -# 1372| getStmt(5): [ExprStmt] ExprStmt -# 1372| getExpr(): [FunctionCall] call to acceptValue +# 1371| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1371| Type = [LValueReferenceType] const String & +# 1371| ValueCategory = prvalue +# 1371| getExpr(): [CStyleCast] (const String)... +# 1371| Conversion = [GlvalueConversion] glvalue conversion +# 1371| Type = [SpecifiedType] const String +# 1371| ValueCategory = lvalue +# 1372| getStmt(3): [ExprStmt] ExprStmt +# 1372| getExpr(): [FunctionCall] call to acceptRef # 1372| Type = [VoidType] void # 1372| ValueCategory = prvalue # 1372| getArgument(0): [ConstructorCall] call to String @@ -11044,468 +11153,508 @@ ir.cpp: # 1372| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 1372| Type = [PointerType] const char * # 1372| ValueCategory = prvalue -# 1372| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1372| Type = [Struct] String -# 1372| ValueCategory = lvalue -# 1373| getStmt(6): [ExprStmt] ExprStmt -# 1373| getExpr(): [FunctionCall] call to c_str -# 1373| Type = [PointerType] const char * +# 1372| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1372| Type = [LValueReferenceType] const String & +# 1372| ValueCategory = prvalue +# 1372| getExpr(): [TemporaryObjectExpr] temporary object +# 1372| Type = [SpecifiedType] const String +# 1372| ValueCategory = lvalue +# 1373| getStmt(4): [ExprStmt] ExprStmt +# 1373| getExpr(): [FunctionCall] call to acceptValue +# 1373| Type = [VoidType] void # 1373| ValueCategory = prvalue -# 1373| getQualifier(): [ConstructorCall] call to String +# 1373| getArgument(0): [ConstructorCall] call to String # 1373| Type = [VoidType] void # 1373| ValueCategory = prvalue -# 1373| getQualifier().getFullyConverted(): [CStyleCast] (const String)... -# 1373| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion -# 1373| Type = [SpecifiedType] const String -# 1373| ValueCategory = prvalue -# 1373| getExpr(): [TemporaryObjectExpr] temporary object +# 1373| getArgument(0): [VariableAccess] s # 1373| Type = [Struct] String -# 1373| ValueCategory = prvalue(load) -# 1374| getStmt(7): [ExprStmt] ExprStmt -# 1374| getExpr(): [FunctionCall] call to c_str -# 1374| Type = [PointerType] const char * +# 1373| ValueCategory = lvalue +# 1373| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1373| Type = [LValueReferenceType] const String & +# 1373| ValueCategory = prvalue +# 1373| getExpr(): [CStyleCast] (const String)... +# 1373| Conversion = [GlvalueConversion] glvalue conversion +# 1373| Type = [SpecifiedType] const String +# 1373| ValueCategory = lvalue +# 1373| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1373| Type = [Struct] String +# 1373| ValueCategory = lvalue +# 1374| getStmt(5): [ExprStmt] ExprStmt +# 1374| getExpr(): [FunctionCall] call to acceptValue +# 1374| Type = [VoidType] void # 1374| ValueCategory = prvalue -# 1374| getQualifier(): [FunctionCall] call to returnValue -# 1374| Type = [Struct] String +# 1374| getArgument(0): [ConstructorCall] call to String +# 1374| Type = [VoidType] void # 1374| ValueCategory = prvalue -# 1374| getQualifier().getFullyConverted(): [CStyleCast] (const String)... -# 1374| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion -# 1374| Type = [SpecifiedType] const String -# 1374| ValueCategory = prvalue -# 1374| getExpr(): [TemporaryObjectExpr] temporary object -# 1374| Type = [Struct] String -# 1374| ValueCategory = prvalue(load) -# 1376| getStmt(8): [ExprStmt] ExprStmt -# 1376| getExpr(): [FunctionCall] call to defaultConstruct -# 1376| Type = [Struct] String -# 1376| ValueCategory = prvalue -# 1376| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1376| Type = [Struct] String +# 1374| getArgument(0): foo +# 1374| Type = [ArrayType] const char[4] +# 1374| Value = [StringLiteral] "foo" +# 1374| ValueCategory = lvalue +# 1374| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1374| Type = [PointerType] const char * +# 1374| ValueCategory = prvalue +# 1374| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1374| Type = [Struct] String +# 1374| ValueCategory = lvalue +# 1375| getStmt(6): [ExprStmt] ExprStmt +# 1375| getExpr(): [FunctionCall] call to c_str +# 1375| Type = [PointerType] const char * +# 1375| ValueCategory = prvalue +# 1375| getQualifier(): [ConstructorCall] call to String +# 1375| Type = [VoidType] void +# 1375| ValueCategory = prvalue +# 1375| getQualifier().getFullyConverted(): [CStyleCast] (const String)... +# 1375| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion +# 1375| Type = [SpecifiedType] const String +# 1375| ValueCategory = prvalue +# 1375| getExpr(): [TemporaryObjectExpr] temporary object +# 1375| Type = [Struct] String +# 1375| ValueCategory = prvalue(load) +# 1376| getStmt(7): [ExprStmt] ExprStmt +# 1376| getExpr(): [FunctionCall] call to c_str +# 1376| Type = [PointerType] const char * # 1376| ValueCategory = prvalue -# 1377| getStmt(9): [ReturnStmt] return ... -# 1377| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1377| Type = [VoidType] void -# 1377| ValueCategory = prvalue -# 1377| getQualifier(): [VariableAccess] s -# 1377| Type = [Struct] String -# 1377| ValueCategory = lvalue -# 1379| [TopLevelFunction] void temporary_destructor_only() -# 1379| : -# 1379| getEntryPoint(): [BlockStmt] { ... } -# 1380| getStmt(0): [DeclStmt] declaration -# 1380| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1380| Type = [Class] destructor_only -# 1380| getVariable().getInitializer(): [Initializer] initializer for d -# 1380| getExpr(): [FunctionCall] call to returnValue -# 1380| Type = [Class] destructor_only -# 1380| ValueCategory = prvalue -# 1381| getStmt(1): [DeclStmt] declaration -# 1381| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1381| Type = [LValueReferenceType] const destructor_only & -# 1381| getVariable().getInitializer(): [Initializer] initializer for rd -# 1381| getExpr(): [FunctionCall] call to returnValue -# 1381| Type = [Class] destructor_only -# 1381| ValueCategory = prvalue -# 1381| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1381| Type = [LValueReferenceType] const destructor_only & -# 1381| ValueCategory = prvalue -# 1381| getExpr(): [CStyleCast] (const destructor_only)... -# 1381| Conversion = [GlvalueConversion] glvalue conversion -# 1381| Type = [SpecifiedType] const destructor_only -# 1381| ValueCategory = lvalue -# 1381| getExpr(): [TemporaryObjectExpr] temporary object -# 1381| Type = [Class] destructor_only -# 1381| ValueCategory = lvalue -# 1382| getStmt(2): [DeclStmt] declaration -# 1382| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1376| getQualifier(): [FunctionCall] call to returnValue +# 1376| Type = [Struct] String +# 1376| ValueCategory = prvalue +# 1376| getQualifier().getFullyConverted(): [CStyleCast] (const String)... +# 1376| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion +# 1376| Type = [SpecifiedType] const String +# 1376| ValueCategory = prvalue +# 1376| getExpr(): [TemporaryObjectExpr] temporary object +# 1376| Type = [Struct] String +# 1376| ValueCategory = prvalue(load) +# 1378| getStmt(8): [ExprStmt] ExprStmt +# 1378| getExpr(): [FunctionCall] call to defaultConstruct +# 1378| Type = [Struct] String +# 1378| ValueCategory = prvalue +# 1378| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1378| Type = [Struct] String +# 1378| ValueCategory = prvalue +# 1379| getStmt(9): [ReturnStmt] return ... +# 1379| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1379| Type = [VoidType] void +# 1379| ValueCategory = prvalue +# 1379| getQualifier(): [VariableAccess] s +# 1379| Type = [Struct] String +# 1379| ValueCategory = lvalue +# 1381| [TopLevelFunction] void temporary_destructor_only() +# 1381| : +# 1381| getEntryPoint(): [BlockStmt] { ... } +# 1382| getStmt(0): [DeclStmt] declaration +# 1382| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 1382| Type = [Class] destructor_only -# 1383| getStmt(3): [ExprStmt] ExprStmt -# 1383| getExpr(): [FunctionCall] call to acceptRef -# 1383| Type = [VoidType] void -# 1383| ValueCategory = prvalue -# 1383| getArgument(0): [VariableAccess] d -# 1383| Type = [Class] destructor_only -# 1383| ValueCategory = lvalue -# 1383| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1383| Type = [LValueReferenceType] const destructor_only & -# 1383| ValueCategory = prvalue -# 1383| getExpr(): [CStyleCast] (const destructor_only)... -# 1383| Conversion = [GlvalueConversion] glvalue conversion -# 1383| Type = [SpecifiedType] const destructor_only -# 1383| ValueCategory = lvalue -# 1384| getStmt(4): [ExprStmt] ExprStmt -# 1384| getExpr(): [FunctionCall] call to acceptValue -# 1384| Type = [VoidType] void -# 1384| ValueCategory = prvalue -# 1384| getArgument(0): [VariableAccess] d -# 1384| Type = [Class] destructor_only -# 1384| ValueCategory = prvalue(load) -# 1384| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1384| Type = [Class] destructor_only -# 1384| ValueCategory = lvalue -# 1385| getStmt(5): [ExprStmt] ExprStmt -# 1385| getExpr(): [FunctionCall] call to method +# 1382| getVariable().getInitializer(): [Initializer] initializer for d +# 1382| getExpr(): [FunctionCall] call to returnValue +# 1382| Type = [Class] destructor_only +# 1382| ValueCategory = prvalue +# 1383| getStmt(1): [DeclStmt] declaration +# 1383| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1383| Type = [LValueReferenceType] const destructor_only & +# 1383| getVariable().getInitializer(): [Initializer] initializer for rd +# 1383| getExpr(): [FunctionCall] call to returnValue +# 1383| Type = [Class] destructor_only +# 1383| ValueCategory = prvalue +# 1383| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1383| Type = [LValueReferenceType] const destructor_only & +# 1383| ValueCategory = prvalue +# 1383| getExpr(): [CStyleCast] (const destructor_only)... +# 1383| Conversion = [GlvalueConversion] glvalue conversion +# 1383| Type = [SpecifiedType] const destructor_only +# 1383| ValueCategory = lvalue +# 1383| getExpr(): [TemporaryObjectExpr] temporary object +# 1383| Type = [Class] destructor_only +# 1383| ValueCategory = lvalue +# 1384| getStmt(2): [DeclStmt] declaration +# 1384| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1384| Type = [Class] destructor_only +# 1385| getStmt(3): [ExprStmt] ExprStmt +# 1385| getExpr(): [FunctionCall] call to acceptRef # 1385| Type = [VoidType] void # 1385| ValueCategory = prvalue -# 1385| getQualifier(): [Literal] 0 +# 1385| getArgument(0): [VariableAccess] d # 1385| Type = [Class] destructor_only -# 1385| Value = [Literal] 0 +# 1385| ValueCategory = lvalue +# 1385| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1385| Type = [LValueReferenceType] const destructor_only & # 1385| ValueCategory = prvalue -# 1385| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1385| Type = [Class] destructor_only -# 1385| ValueCategory = prvalue(load) -# 1386| getStmt(6): [ExprStmt] ExprStmt -# 1386| getExpr(): [FunctionCall] call to method +# 1385| getExpr(): [CStyleCast] (const destructor_only)... +# 1385| Conversion = [GlvalueConversion] glvalue conversion +# 1385| Type = [SpecifiedType] const destructor_only +# 1385| ValueCategory = lvalue +# 1386| getStmt(4): [ExprStmt] ExprStmt +# 1386| getExpr(): [FunctionCall] call to acceptValue # 1386| Type = [VoidType] void # 1386| ValueCategory = prvalue -# 1386| getQualifier(): [FunctionCall] call to returnValue -# 1386| Type = [Class] destructor_only -# 1386| ValueCategory = prvalue -# 1386| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1386| getArgument(0): [VariableAccess] d # 1386| Type = [Class] destructor_only # 1386| ValueCategory = prvalue(load) -# 1388| getStmt(7): [ExprStmt] ExprStmt -# 1388| getExpr(): [FunctionCall] call to defaultConstruct -# 1388| Type = [Class] destructor_only -# 1388| ValueCategory = prvalue -# 1388| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1388| Type = [Class] destructor_only +# 1386| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1386| Type = [Class] destructor_only +# 1386| ValueCategory = lvalue +# 1387| getStmt(5): [ExprStmt] ExprStmt +# 1387| getExpr(): [FunctionCall] call to method +# 1387| Type = [VoidType] void +# 1387| ValueCategory = prvalue +# 1387| getQualifier(): [Literal] 0 +# 1387| Type = [Class] destructor_only +# 1387| Value = [Literal] 0 +# 1387| ValueCategory = prvalue +# 1387| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1387| Type = [Class] destructor_only +# 1387| ValueCategory = prvalue(load) +# 1388| getStmt(6): [ExprStmt] ExprStmt +# 1388| getExpr(): [FunctionCall] call to method +# 1388| Type = [VoidType] void # 1388| ValueCategory = prvalue -# 1389| getStmt(8): [ReturnStmt] return ... -# 1389| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only -# 1389| Type = [VoidType] void -# 1389| ValueCategory = prvalue -# 1389| getQualifier(): [VariableAccess] d2 -# 1389| Type = [Class] destructor_only -# 1389| ValueCategory = lvalue -# 1389| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only -# 1389| Type = [VoidType] void -# 1389| ValueCategory = prvalue -# 1389| getQualifier(): [VariableAccess] d -# 1389| Type = [Class] destructor_only -# 1389| ValueCategory = lvalue -# 1391| [TopLevelFunction] void temporary_copy_constructor() -# 1391| : -# 1391| getEntryPoint(): [BlockStmt] { ... } -# 1392| getStmt(0): [DeclStmt] declaration -# 1392| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1392| Type = [Class] copy_constructor -# 1392| getVariable().getInitializer(): [Initializer] initializer for d -# 1392| getExpr(): [FunctionCall] call to returnValue -# 1392| Type = [Class] copy_constructor -# 1392| ValueCategory = prvalue -# 1393| getStmt(1): [DeclStmt] declaration -# 1393| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1393| Type = [LValueReferenceType] const copy_constructor & -# 1393| getVariable().getInitializer(): [Initializer] initializer for rd -# 1393| getExpr(): [FunctionCall] call to returnValue -# 1393| Type = [Class] copy_constructor -# 1393| ValueCategory = prvalue -# 1393| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1393| Type = [LValueReferenceType] const copy_constructor & -# 1393| ValueCategory = prvalue -# 1393| getExpr(): [CStyleCast] (const copy_constructor)... -# 1393| Conversion = [GlvalueConversion] glvalue conversion -# 1393| Type = [SpecifiedType] const copy_constructor -# 1393| ValueCategory = lvalue -# 1393| getExpr(): [TemporaryObjectExpr] temporary object -# 1393| Type = [Class] copy_constructor -# 1393| ValueCategory = lvalue -# 1394| getStmt(2): [DeclStmt] declaration -# 1394| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1388| getQualifier(): [FunctionCall] call to returnValue +# 1388| Type = [Class] destructor_only +# 1388| ValueCategory = prvalue +# 1388| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1388| Type = [Class] destructor_only +# 1388| ValueCategory = prvalue(load) +# 1390| getStmt(7): [ExprStmt] ExprStmt +# 1390| getExpr(): [FunctionCall] call to defaultConstruct +# 1390| Type = [Class] destructor_only +# 1390| ValueCategory = prvalue +# 1390| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1390| Type = [Class] destructor_only +# 1390| ValueCategory = prvalue +# 1391| getStmt(8): [ReturnStmt] return ... +# 1391| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1391| Type = [VoidType] void +# 1391| ValueCategory = prvalue +# 1391| getQualifier(): [VariableAccess] d2 +# 1391| Type = [Class] destructor_only +# 1391| ValueCategory = lvalue +# 1391| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only +# 1391| Type = [VoidType] void +# 1391| ValueCategory = prvalue +# 1391| getQualifier(): [VariableAccess] d +# 1391| Type = [Class] destructor_only +# 1391| ValueCategory = lvalue +# 1393| [TopLevelFunction] void temporary_copy_constructor() +# 1393| : +# 1393| getEntryPoint(): [BlockStmt] { ... } +# 1394| getStmt(0): [DeclStmt] declaration +# 1394| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 1394| Type = [Class] copy_constructor -# 1394| getVariable().getInitializer(): [Initializer] initializer for d2 -# 1394| getExpr(): [ConstructorCall] call to copy_constructor -# 1394| Type = [VoidType] void +# 1394| getVariable().getInitializer(): [Initializer] initializer for d +# 1394| getExpr(): [FunctionCall] call to returnValue +# 1394| Type = [Class] copy_constructor # 1394| ValueCategory = prvalue -# 1395| getStmt(3): [ExprStmt] ExprStmt -# 1395| getExpr(): [FunctionCall] call to acceptRef -# 1395| Type = [VoidType] void -# 1395| ValueCategory = prvalue -# 1395| getArgument(0): [VariableAccess] d -# 1395| Type = [Class] copy_constructor -# 1395| ValueCategory = lvalue -# 1395| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1395| Type = [LValueReferenceType] const copy_constructor & -# 1395| ValueCategory = prvalue -# 1395| getExpr(): [CStyleCast] (const copy_constructor)... -# 1395| Conversion = [GlvalueConversion] glvalue conversion -# 1395| Type = [SpecifiedType] const copy_constructor -# 1395| ValueCategory = lvalue -# 1396| getStmt(4): [ExprStmt] ExprStmt -# 1396| getExpr(): [FunctionCall] call to acceptValue -# 1396| Type = [VoidType] void -# 1396| ValueCategory = prvalue -# 1396| getArgument(0): [ConstructorCall] call to copy_constructor -# 1396| Type = [VoidType] void -# 1396| ValueCategory = prvalue -# 1396| getArgument(0): [VariableAccess] d -# 1396| Type = [Class] copy_constructor -# 1396| ValueCategory = lvalue -# 1396| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1396| Type = [LValueReferenceType] const copy_constructor & +# 1395| getStmt(1): [DeclStmt] declaration +# 1395| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1395| Type = [LValueReferenceType] const copy_constructor & +# 1395| getVariable().getInitializer(): [Initializer] initializer for rd +# 1395| getExpr(): [FunctionCall] call to returnValue +# 1395| Type = [Class] copy_constructor +# 1395| ValueCategory = prvalue +# 1395| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1395| Type = [LValueReferenceType] const copy_constructor & +# 1395| ValueCategory = prvalue +# 1395| getExpr(): [CStyleCast] (const copy_constructor)... +# 1395| Conversion = [GlvalueConversion] glvalue conversion +# 1395| Type = [SpecifiedType] const copy_constructor +# 1395| ValueCategory = lvalue +# 1395| getExpr(): [TemporaryObjectExpr] temporary object +# 1395| Type = [Class] copy_constructor +# 1395| ValueCategory = lvalue +# 1396| getStmt(2): [DeclStmt] declaration +# 1396| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1396| Type = [Class] copy_constructor +# 1396| getVariable().getInitializer(): [Initializer] initializer for d2 +# 1396| getExpr(): [ConstructorCall] call to copy_constructor +# 1396| Type = [VoidType] void # 1396| ValueCategory = prvalue -# 1396| getExpr(): [CStyleCast] (const copy_constructor)... -# 1396| Conversion = [GlvalueConversion] glvalue conversion -# 1396| Type = [SpecifiedType] const copy_constructor -# 1396| ValueCategory = lvalue -# 1396| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1396| Type = [Class] copy_constructor -# 1396| ValueCategory = lvalue -# 1397| getStmt(5): [ExprStmt] ExprStmt -# 1397| getExpr(): [FunctionCall] call to method +# 1397| getStmt(3): [ExprStmt] ExprStmt +# 1397| getExpr(): [FunctionCall] call to acceptRef # 1397| Type = [VoidType] void # 1397| ValueCategory = prvalue -# 1397| getQualifier(): [ConstructorCall] call to copy_constructor -# 1397| Type = [VoidType] void -# 1397| ValueCategory = prvalue -# 1397| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1397| getArgument(0): [VariableAccess] d # 1397| Type = [Class] copy_constructor -# 1397| ValueCategory = prvalue(load) -# 1398| getStmt(6): [ExprStmt] ExprStmt -# 1398| getExpr(): [FunctionCall] call to method +# 1397| ValueCategory = lvalue +# 1397| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1397| Type = [LValueReferenceType] const copy_constructor & +# 1397| ValueCategory = prvalue +# 1397| getExpr(): [CStyleCast] (const copy_constructor)... +# 1397| Conversion = [GlvalueConversion] glvalue conversion +# 1397| Type = [SpecifiedType] const copy_constructor +# 1397| ValueCategory = lvalue +# 1398| getStmt(4): [ExprStmt] ExprStmt +# 1398| getExpr(): [FunctionCall] call to acceptValue # 1398| Type = [VoidType] void # 1398| ValueCategory = prvalue -# 1398| getQualifier(): [FunctionCall] call to returnValue -# 1398| Type = [Class] copy_constructor +# 1398| getArgument(0): [ConstructorCall] call to copy_constructor +# 1398| Type = [VoidType] void # 1398| ValueCategory = prvalue -# 1398| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1398| getArgument(0): [VariableAccess] d +# 1398| Type = [Class] copy_constructor +# 1398| ValueCategory = lvalue +# 1398| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1398| Type = [LValueReferenceType] const copy_constructor & +# 1398| ValueCategory = prvalue +# 1398| getExpr(): [CStyleCast] (const copy_constructor)... +# 1398| Conversion = [GlvalueConversion] glvalue conversion +# 1398| Type = [SpecifiedType] const copy_constructor +# 1398| ValueCategory = lvalue +# 1398| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 1398| Type = [Class] copy_constructor -# 1398| ValueCategory = prvalue(load) -# 1399| getStmt(7): [ExprStmt] ExprStmt -# 1399| getExpr(): [FunctionCall] call to defaultConstruct -# 1399| Type = [Class] copy_constructor +# 1398| ValueCategory = lvalue +# 1399| getStmt(5): [ExprStmt] ExprStmt +# 1399| getExpr(): [FunctionCall] call to method +# 1399| Type = [VoidType] void # 1399| ValueCategory = prvalue -# 1399| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1399| Type = [Class] copy_constructor -# 1399| ValueCategory = prvalue -# 1401| getStmt(8): [DeclStmt] declaration -# 1401| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1401| Type = [IntType] int -# 1401| getVariable().getInitializer(): [Initializer] initializer for y -# 1401| getExpr(): [ValueFieldAccess] y -# 1401| Type = [IntType] int -# 1401| ValueCategory = prvalue -# 1401| getQualifier(): [FunctionCall] call to returnValue -# 1401| Type = [Class] copy_constructor -# 1401| ValueCategory = prvalue -# 1401| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1401| Type = [Class] copy_constructor -# 1401| ValueCategory = prvalue(load) -# 1402| getStmt(9): [ReturnStmt] return ... -# 1404| [TopLevelFunction] void temporary_point() -# 1404| : -# 1404| getEntryPoint(): [BlockStmt] { ... } -# 1405| getStmt(0): [DeclStmt] declaration -# 1405| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 1405| Type = [Struct] Point -# 1405| getVariable().getInitializer(): [Initializer] initializer for p -# 1405| getExpr(): [FunctionCall] call to returnValue -# 1405| Type = [Struct] Point -# 1405| ValueCategory = prvalue -# 1406| getStmt(1): [DeclStmt] declaration -# 1406| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rp -# 1406| Type = [LValueReferenceType] const Point & -# 1406| getVariable().getInitializer(): [Initializer] initializer for rp -# 1406| getExpr(): [FunctionCall] call to returnValue -# 1406| Type = [Struct] Point -# 1406| ValueCategory = prvalue -# 1406| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1406| Type = [LValueReferenceType] const Point & -# 1406| ValueCategory = prvalue -# 1406| getExpr(): [CStyleCast] (const Point)... -# 1406| Conversion = [GlvalueConversion] glvalue conversion -# 1406| Type = [SpecifiedType] const Point -# 1406| ValueCategory = lvalue -# 1406| getExpr(): [TemporaryObjectExpr] temporary object -# 1406| Type = [Struct] Point -# 1406| ValueCategory = lvalue -# 1408| getStmt(2): [ExprStmt] ExprStmt -# 1408| getExpr(): [FunctionCall] call to acceptRef -# 1408| Type = [VoidType] void -# 1408| ValueCategory = prvalue -# 1408| getArgument(0): [VariableAccess] p -# 1408| Type = [Struct] Point -# 1408| ValueCategory = lvalue -# 1408| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1408| Type = [LValueReferenceType] const Point & -# 1408| ValueCategory = prvalue -# 1408| getExpr(): [CStyleCast] (const Point)... -# 1408| Conversion = [GlvalueConversion] glvalue conversion -# 1408| Type = [SpecifiedType] const Point -# 1408| ValueCategory = lvalue -# 1409| getStmt(3): [ExprStmt] ExprStmt -# 1409| getExpr(): [FunctionCall] call to acceptValue -# 1409| Type = [VoidType] void -# 1409| ValueCategory = prvalue -# 1409| getArgument(0): [VariableAccess] p -# 1409| Type = [Struct] Point -# 1409| ValueCategory = prvalue(load) -# 1410| getStmt(4): [ExprStmt] ExprStmt -# 1410| getExpr(): [ValueFieldAccess] x -# 1410| Type = [IntType] int -# 1410| Value = [ValueFieldAccess] 0 +# 1399| getQualifier(): [ConstructorCall] call to copy_constructor +# 1399| Type = [VoidType] void +# 1399| ValueCategory = prvalue +# 1399| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1399| Type = [Class] copy_constructor +# 1399| ValueCategory = prvalue(load) +# 1400| getStmt(6): [ExprStmt] ExprStmt +# 1400| getExpr(): [FunctionCall] call to method +# 1400| Type = [VoidType] void +# 1400| ValueCategory = prvalue +# 1400| getQualifier(): [FunctionCall] call to returnValue +# 1400| Type = [Class] copy_constructor +# 1400| ValueCategory = prvalue +# 1400| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1400| Type = [Class] copy_constructor +# 1400| ValueCategory = prvalue(load) +# 1401| getStmt(7): [ExprStmt] ExprStmt +# 1401| getExpr(): [FunctionCall] call to defaultConstruct +# 1401| Type = [Class] copy_constructor +# 1401| ValueCategory = prvalue +# 1401| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1401| Type = [Class] copy_constructor +# 1401| ValueCategory = prvalue +# 1403| getStmt(8): [DeclStmt] declaration +# 1403| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1403| Type = [IntType] int +# 1403| getVariable().getInitializer(): [Initializer] initializer for y +# 1403| getExpr(): [ValueFieldAccess] y +# 1403| Type = [IntType] int +# 1403| ValueCategory = prvalue +# 1403| getQualifier(): [FunctionCall] call to returnValue +# 1403| Type = [Class] copy_constructor +# 1403| ValueCategory = prvalue +# 1403| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1403| Type = [Class] copy_constructor +# 1403| ValueCategory = prvalue(load) +# 1404| getStmt(9): [ReturnStmt] return ... +# 1406| [TopLevelFunction] void temporary_point() +# 1406| : +# 1406| getEntryPoint(): [BlockStmt] { ... } +# 1407| getStmt(0): [DeclStmt] declaration +# 1407| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 1407| Type = [Struct] Point +# 1407| getVariable().getInitializer(): [Initializer] initializer for p +# 1407| getExpr(): [FunctionCall] call to returnValue +# 1407| Type = [Struct] Point +# 1407| ValueCategory = prvalue +# 1408| getStmt(1): [DeclStmt] declaration +# 1408| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rp +# 1408| Type = [LValueReferenceType] const Point & +# 1408| getVariable().getInitializer(): [Initializer] initializer for rp +# 1408| getExpr(): [FunctionCall] call to returnValue +# 1408| Type = [Struct] Point +# 1408| ValueCategory = prvalue +# 1408| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1408| Type = [LValueReferenceType] const Point & +# 1408| ValueCategory = prvalue +# 1408| getExpr(): [CStyleCast] (const Point)... +# 1408| Conversion = [GlvalueConversion] glvalue conversion +# 1408| Type = [SpecifiedType] const Point +# 1408| ValueCategory = lvalue +# 1408| getExpr(): [TemporaryObjectExpr] temporary object +# 1408| Type = [Struct] Point +# 1408| ValueCategory = lvalue +# 1410| getStmt(2): [ExprStmt] ExprStmt +# 1410| getExpr(): [FunctionCall] call to acceptRef +# 1410| Type = [VoidType] void # 1410| ValueCategory = prvalue -# 1410| getQualifier(): [Literal] 0 +# 1410| getArgument(0): [VariableAccess] p # 1410| Type = [Struct] Point -# 1410| Value = [Literal] 0 +# 1410| ValueCategory = lvalue +# 1410| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1410| Type = [LValueReferenceType] const Point & # 1410| ValueCategory = prvalue -# 1410| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1410| Type = [Struct] Point -# 1410| ValueCategory = prvalue(load) -# 1411| getStmt(5): [DeclStmt] declaration -# 1411| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1411| Type = [IntType] int -# 1411| getVariable().getInitializer(): [Initializer] initializer for y -# 1411| getExpr(): [ValueFieldAccess] y -# 1411| Type = [IntType] int -# 1411| ValueCategory = prvalue -# 1411| getQualifier(): [FunctionCall] call to returnValue -# 1411| Type = [Struct] Point -# 1411| ValueCategory = prvalue -# 1413| getStmt(6): [ExprStmt] ExprStmt -# 1413| getExpr(): [FunctionCall] call to defaultConstruct -# 1413| Type = [Struct] Point -# 1413| ValueCategory = prvalue -# 1414| getStmt(7): [ReturnStmt] return ... -# 1416| [CopyAssignmentOperator] UnusualFields& UnusualFields::operator=(UnusualFields const&) -# 1416| : +# 1410| getExpr(): [CStyleCast] (const Point)... +# 1410| Conversion = [GlvalueConversion] glvalue conversion +# 1410| Type = [SpecifiedType] const Point +# 1410| ValueCategory = lvalue +# 1411| getStmt(3): [ExprStmt] ExprStmt +# 1411| getExpr(): [FunctionCall] call to acceptValue +# 1411| Type = [VoidType] void +# 1411| ValueCategory = prvalue +# 1411| getArgument(0): [VariableAccess] p +# 1411| Type = [Struct] Point +# 1411| ValueCategory = prvalue(load) +# 1412| getStmt(4): [ExprStmt] ExprStmt +# 1412| getExpr(): [ValueFieldAccess] x +# 1412| Type = [IntType] int +# 1412| Value = [ValueFieldAccess] 0 +# 1412| ValueCategory = prvalue +# 1412| getQualifier(): [Literal] 0 +# 1412| Type = [Struct] Point +# 1412| Value = [Literal] 0 +# 1412| ValueCategory = prvalue +# 1412| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1412| Type = [Struct] Point +# 1412| ValueCategory = prvalue(load) +# 1413| getStmt(5): [DeclStmt] declaration +# 1413| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1413| Type = [IntType] int +# 1413| getVariable().getInitializer(): [Initializer] initializer for y +# 1413| getExpr(): [ValueFieldAccess] y +# 1413| Type = [IntType] int +# 1413| ValueCategory = prvalue +# 1413| getQualifier(): [FunctionCall] call to returnValue +# 1413| Type = [Struct] Point +# 1413| ValueCategory = prvalue +# 1415| getStmt(6): [ExprStmt] ExprStmt +# 1415| getExpr(): [FunctionCall] call to defaultConstruct +# 1415| Type = [Struct] Point +# 1415| ValueCategory = prvalue +# 1416| getStmt(7): [ReturnStmt] return ... +# 1418| [CopyAssignmentOperator] UnusualFields& UnusualFields::operator=(UnusualFields const&) +# 1418| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const UnusualFields & -# 1416| [Constructor] void UnusualFields::UnusualFields() -# 1416| : -# 1416| [CopyConstructor] void UnusualFields::UnusualFields(UnusualFields const&) -# 1416| : +# 1418| [Constructor] void UnusualFields::UnusualFields() +# 1418| : +# 1418| [CopyConstructor] void UnusualFields::UnusualFields(UnusualFields const&) +# 1418| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const UnusualFields & -# 1416| [MoveConstructor] void UnusualFields::UnusualFields(UnusualFields&&) -# 1416| : +# 1418| [MoveConstructor] void UnusualFields::UnusualFields(UnusualFields&&) +# 1418| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] UnusualFields && -# 1421| [TopLevelFunction] void temporary_unusual_fields() -# 1421| : -# 1421| getEntryPoint(): [BlockStmt] { ... } -# 1422| getStmt(0): [DeclStmt] declaration -# 1422| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx -# 1422| Type = [LValueReferenceType] const int & -# 1422| getVariable().getInitializer(): [Initializer] initializer for rx -# 1422| getExpr(): [ValueFieldAccess] r -# 1422| Type = [LValueReferenceType] int & -# 1422| ValueCategory = prvalue -# 1422| getQualifier(): [FunctionCall] call to returnValue -# 1422| Type = [Struct] UnusualFields -# 1422| ValueCategory = prvalue -# 1422| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1422| Type = [LValueReferenceType] const int & -# 1422| ValueCategory = prvalue -# 1422| getExpr(): [CStyleCast] (const int)... -# 1422| Conversion = [GlvalueConversion] glvalue conversion -# 1422| Type = [SpecifiedType] const int -# 1422| ValueCategory = lvalue -# 1422| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1422| Type = [IntType] int -# 1422| ValueCategory = lvalue -# 1423| getStmt(1): [DeclStmt] declaration -# 1423| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1423| Type = [IntType] int -# 1423| getVariable().getInitializer(): [Initializer] initializer for x -# 1423| getExpr(): [ValueFieldAccess] r -# 1423| Type = [LValueReferenceType] int & -# 1423| ValueCategory = prvalue -# 1423| getQualifier(): [FunctionCall] call to returnValue -# 1423| Type = [Struct] UnusualFields -# 1423| ValueCategory = prvalue -# 1423| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1423| Type = [IntType] int -# 1423| ValueCategory = prvalue(load) -# 1425| getStmt(2): [DeclStmt] declaration -# 1425| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rf -# 1425| Type = [LValueReferenceType] const float & -# 1425| getVariable().getInitializer(): [Initializer] initializer for rf -# 1425| getExpr(): [ArrayExpr] access to array -# 1425| Type = [FloatType] float -# 1425| ValueCategory = lvalue -# 1425| getArrayBase(): [ValueFieldAccess] a -# 1425| Type = [ArrayType] float[10] -# 1425| ValueCategory = prvalue -# 1425| getQualifier(): [FunctionCall] call to returnValue -# 1425| Type = [Struct] UnusualFields -# 1425| ValueCategory = prvalue -# 1425| getArrayOffset(): [Literal] 3 -# 1425| Type = [IntType] int -# 1425| Value = [Literal] 3 -# 1425| ValueCategory = prvalue -# 1425| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1425| Type = [PointerType] float * -# 1425| ValueCategory = prvalue -# 1425| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1425| Type = [LValueReferenceType] const float & +# 1423| [TopLevelFunction] void temporary_unusual_fields() +# 1423| : +# 1423| getEntryPoint(): [BlockStmt] { ... } +# 1424| getStmt(0): [DeclStmt] declaration +# 1424| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx +# 1424| Type = [LValueReferenceType] const int & +# 1424| getVariable().getInitializer(): [Initializer] initializer for rx +# 1424| getExpr(): [ValueFieldAccess] r +# 1424| Type = [LValueReferenceType] int & +# 1424| ValueCategory = prvalue +# 1424| getQualifier(): [FunctionCall] call to returnValue +# 1424| Type = [Struct] UnusualFields +# 1424| ValueCategory = prvalue +# 1424| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1424| Type = [LValueReferenceType] const int & +# 1424| ValueCategory = prvalue +# 1424| getExpr(): [CStyleCast] (const int)... +# 1424| Conversion = [GlvalueConversion] glvalue conversion +# 1424| Type = [SpecifiedType] const int +# 1424| ValueCategory = lvalue +# 1424| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1424| Type = [IntType] int +# 1424| ValueCategory = lvalue +# 1425| getStmt(1): [DeclStmt] declaration +# 1425| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1425| Type = [IntType] int +# 1425| getVariable().getInitializer(): [Initializer] initializer for x +# 1425| getExpr(): [ValueFieldAccess] r +# 1425| Type = [LValueReferenceType] int & # 1425| ValueCategory = prvalue -# 1425| getExpr(): [CStyleCast] (const float)... -# 1425| Conversion = [GlvalueConversion] glvalue conversion -# 1425| Type = [SpecifiedType] const float -# 1425| ValueCategory = lvalue -# 1426| getStmt(3): [DeclStmt] declaration -# 1426| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f -# 1426| Type = [FloatType] float -# 1426| getVariable().getInitializer(): [Initializer] initializer for f -# 1426| getExpr(): [ArrayExpr] access to array -# 1426| Type = [FloatType] float -# 1426| ValueCategory = prvalue(load) -# 1426| getArrayBase(): [ValueFieldAccess] a -# 1426| Type = [ArrayType] float[10] -# 1426| ValueCategory = prvalue -# 1426| getQualifier(): [FunctionCall] call to returnValue -# 1426| Type = [Struct] UnusualFields -# 1426| ValueCategory = prvalue -# 1426| getArrayOffset(): [Literal] 5 -# 1426| Type = [IntType] int -# 1426| Value = [Literal] 5 -# 1426| ValueCategory = prvalue -# 1426| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1426| Type = [PointerType] float * -# 1426| ValueCategory = prvalue -# 1427| getStmt(4): [ReturnStmt] return ... -# 1429| [CopyAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base const&) -# 1429| : +# 1425| getQualifier(): [FunctionCall] call to returnValue +# 1425| Type = [Struct] UnusualFields +# 1425| ValueCategory = prvalue +# 1425| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1425| Type = [IntType] int +# 1425| ValueCategory = prvalue(load) +# 1427| getStmt(2): [DeclStmt] declaration +# 1427| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rf +# 1427| Type = [LValueReferenceType] const float & +# 1427| getVariable().getInitializer(): [Initializer] initializer for rf +# 1427| getExpr(): [ArrayExpr] access to array +# 1427| Type = [FloatType] float +# 1427| ValueCategory = lvalue +# 1427| getArrayBase(): [ValueFieldAccess] a +# 1427| Type = [ArrayType] float[10] +# 1427| ValueCategory = prvalue +# 1427| getQualifier(): [FunctionCall] call to returnValue +# 1427| Type = [Struct] UnusualFields +# 1427| ValueCategory = prvalue +# 1427| getArrayOffset(): [Literal] 3 +# 1427| Type = [IntType] int +# 1427| Value = [Literal] 3 +# 1427| ValueCategory = prvalue +# 1427| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1427| Type = [PointerType] float * +# 1427| ValueCategory = prvalue +# 1427| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1427| Type = [LValueReferenceType] const float & +# 1427| ValueCategory = prvalue +# 1427| getExpr(): [CStyleCast] (const float)... +# 1427| Conversion = [GlvalueConversion] glvalue conversion +# 1427| Type = [SpecifiedType] const float +# 1427| ValueCategory = lvalue +# 1428| getStmt(3): [DeclStmt] declaration +# 1428| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 1428| Type = [FloatType] float +# 1428| getVariable().getInitializer(): [Initializer] initializer for f +# 1428| getExpr(): [ArrayExpr] access to array +# 1428| Type = [FloatType] float +# 1428| ValueCategory = prvalue(load) +# 1428| getArrayBase(): [ValueFieldAccess] a +# 1428| Type = [ArrayType] float[10] +# 1428| ValueCategory = prvalue +# 1428| getQualifier(): [FunctionCall] call to returnValue +# 1428| Type = [Struct] UnusualFields +# 1428| ValueCategory = prvalue +# 1428| getArrayOffset(): [Literal] 5 +# 1428| Type = [IntType] int +# 1428| Value = [Literal] 5 +# 1428| ValueCategory = prvalue +# 1428| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1428| Type = [PointerType] float * +# 1428| ValueCategory = prvalue +# 1429| getStmt(4): [ReturnStmt] return ... +# 1431| [CopyAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base const&) +# 1431| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Base & -# 1429| [MoveAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base&&) -# 1429| : +# 1431| [MoveAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base&&) +# 1431| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Base && -# 1432| [ConstMemberFunction] float POD_Base::f() const -# 1432| : -# 1435| [CopyAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle const&) -# 1435| : +# 1434| [ConstMemberFunction] float POD_Base::f() const +# 1434| : +# 1437| [CopyAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle const&) +# 1437| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Middle & -# 1435| [MoveAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle&&) -# 1435| : +# 1437| [MoveAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle&&) +# 1437| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Middle && -# 1435| [Constructor] void POD_Middle::POD_Middle() -# 1435| : -# 1439| [CopyAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived const&) -# 1439| : +# 1437| [Constructor] void POD_Middle::POD_Middle() +# 1437| : +# 1441| [CopyAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived const&) +# 1441| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Derived & -# 1439| [MoveAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived&&) -# 1439| : +# 1441| [MoveAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived&&) +# 1441| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Derived && -# 1439| [Constructor] void POD_Derived::POD_Derived() -# 1439| : -# 1443| [TopLevelFunction] void temporary_hierarchy() -# 1443| : -# 1443| getEntryPoint(): [BlockStmt] { ... } -# 1444| getStmt(0): [DeclStmt] declaration -# 1444| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1444| Type = [Struct] POD_Base -# 1444| getVariable().getInitializer(): [Initializer] initializer for b -# 1444| getExpr(): [FunctionCall] call to returnValue -# 1444| Type = [Struct] POD_Middle -# 1444| ValueCategory = prvalue +# 1441| [Constructor] void POD_Derived::POD_Derived() +# 1441| : +# 1445| [TopLevelFunction] void temporary_hierarchy() +# 1445| : +# 1445| getEntryPoint(): [BlockStmt] { ... } +# 1446| getStmt(0): [DeclStmt] declaration +# 1446| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1446| Type = [Struct] POD_Base +# 1446| getVariable().getInitializer(): [Initializer] initializer for b +# 1446| getExpr(): [FunctionCall] call to returnValue +# 1446| Type = [Struct] POD_Middle +# 1446| ValueCategory = prvalue #-----| getExpr().getFullyConverted(): [CStyleCast] (POD_Base)... #-----| Conversion = [BaseClassConversion] base class conversion #-----| Type = [Struct] POD_Base @@ -11513,40 +11662,40 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Middle #-----| ValueCategory = xvalue -# 1445| getStmt(1): [ExprStmt] ExprStmt -# 1445| getExpr(): [AssignExpr] ... = ... -# 1445| Type = [Struct] POD_Base -# 1445| ValueCategory = lvalue -# 1445| getLValue(): [VariableAccess] b -# 1445| Type = [Struct] POD_Base -# 1445| ValueCategory = lvalue -# 1445| getRValue(): [FunctionCall] call to returnValue -# 1445| Type = [Struct] POD_Derived -# 1445| ValueCategory = prvalue -# 1445| getRValue().getFullyConverted(): [CStyleCast] (POD_Base)... -# 1445| Conversion = [BaseClassConversion] base class conversion -# 1445| Type = [Struct] POD_Base -# 1445| ValueCategory = prvalue(load) -# 1445| getExpr(): [CStyleCast] (POD_Middle)... -# 1445| Conversion = [BaseClassConversion] base class conversion -# 1445| Type = [Struct] POD_Middle -# 1445| ValueCategory = lvalue -# 1445| getExpr(): [TemporaryObjectExpr] temporary object -# 1445| Type = [Struct] POD_Derived -# 1445| ValueCategory = lvalue -# 1445| getExpr(): [ParenthesisExpr] (...) -# 1445| Type = [Struct] POD_Derived -# 1445| ValueCategory = prvalue -# 1446| getStmt(2): [DeclStmt] declaration -# 1446| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1446| Type = [IntType] int -# 1446| getVariable().getInitializer(): [Initializer] initializer for x -# 1446| getExpr(): [ValueFieldAccess] x -# 1446| Type = [IntType] int -# 1446| ValueCategory = prvalue(load) -# 1446| getQualifier(): [FunctionCall] call to returnValue -# 1446| Type = [Struct] POD_Derived -# 1446| ValueCategory = prvalue +# 1447| getStmt(1): [ExprStmt] ExprStmt +# 1447| getExpr(): [AssignExpr] ... = ... +# 1447| Type = [Struct] POD_Base +# 1447| ValueCategory = lvalue +# 1447| getLValue(): [VariableAccess] b +# 1447| Type = [Struct] POD_Base +# 1447| ValueCategory = lvalue +# 1447| getRValue(): [FunctionCall] call to returnValue +# 1447| Type = [Struct] POD_Derived +# 1447| ValueCategory = prvalue +# 1447| getRValue().getFullyConverted(): [CStyleCast] (POD_Base)... +# 1447| Conversion = [BaseClassConversion] base class conversion +# 1447| Type = [Struct] POD_Base +# 1447| ValueCategory = prvalue(load) +# 1447| getExpr(): [CStyleCast] (POD_Middle)... +# 1447| Conversion = [BaseClassConversion] base class conversion +# 1447| Type = [Struct] POD_Middle +# 1447| ValueCategory = lvalue +# 1447| getExpr(): [TemporaryObjectExpr] temporary object +# 1447| Type = [Struct] POD_Derived +# 1447| ValueCategory = lvalue +# 1447| getExpr(): [ParenthesisExpr] (...) +# 1447| Type = [Struct] POD_Derived +# 1447| ValueCategory = prvalue +# 1448| getStmt(2): [DeclStmt] declaration +# 1448| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1448| Type = [IntType] int +# 1448| getVariable().getInitializer(): [Initializer] initializer for x +# 1448| getExpr(): [ValueFieldAccess] x +# 1448| Type = [IntType] int +# 1448| ValueCategory = prvalue(load) +# 1448| getQualifier(): [FunctionCall] call to returnValue +# 1448| Type = [Struct] POD_Derived +# 1448| ValueCategory = prvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (POD_Base)... #-----| Conversion = [BaseClassConversion] base class conversion #-----| Type = [Struct] POD_Base @@ -11558,16 +11707,16 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Derived #-----| ValueCategory = xvalue -# 1447| getStmt(3): [DeclStmt] declaration -# 1447| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f -# 1447| Type = [FloatType] float -# 1447| getVariable().getInitializer(): [Initializer] initializer for f -# 1447| getExpr(): [FunctionCall] call to f -# 1447| Type = [FloatType] float -# 1447| ValueCategory = prvalue -# 1447| getQualifier(): [FunctionCall] call to returnValue -# 1447| Type = [Struct] POD_Derived -# 1447| ValueCategory = prvalue +# 1449| getStmt(3): [DeclStmt] declaration +# 1449| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 1449| Type = [FloatType] float +# 1449| getVariable().getInitializer(): [Initializer] initializer for f +# 1449| getExpr(): [FunctionCall] call to f +# 1449| Type = [FloatType] float +# 1449| ValueCategory = prvalue +# 1449| getQualifier(): [FunctionCall] call to returnValue +# 1449| Type = [Struct] POD_Derived +# 1449| ValueCategory = prvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const POD_Base)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const POD_Base @@ -11583,99 +11732,99 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Derived #-----| ValueCategory = xvalue -# 1447| getExpr(): [ParenthesisExpr] (...) -# 1447| Type = [Struct] POD_Derived -# 1447| ValueCategory = prvalue -# 1448| getStmt(4): [ReturnStmt] return ... -# 1450| [CopyAssignmentOperator] Inheritance_Test_B& Inheritance_Test_B::operator=(Inheritance_Test_B const&) -# 1450| : +# 1449| getExpr(): [ParenthesisExpr] (...) +# 1449| Type = [Struct] POD_Derived +# 1449| ValueCategory = prvalue +# 1450| getStmt(4): [ReturnStmt] return ... +# 1452| [CopyAssignmentOperator] Inheritance_Test_B& Inheritance_Test_B::operator=(Inheritance_Test_B const&) +# 1452| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_B & -# 1450| [Constructor] void Inheritance_Test_B::Inheritance_Test_B() -# 1450| : -# 1451| [Destructor] void Inheritance_Test_B::~Inheritance_Test_B() -# 1451| : -# 1451| getEntryPoint(): [BlockStmt] { ... } -# 1451| getStmt(0): [ReturnStmt] return ... -# 1451| : -# 1454| [CopyAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A const&) -# 1454| : +# 1452| [Constructor] void Inheritance_Test_B::Inheritance_Test_B() +# 1452| : +# 1453| [Destructor] void Inheritance_Test_B::~Inheritance_Test_B() +# 1453| : +# 1453| getEntryPoint(): [BlockStmt] { ... } +# 1453| getStmt(0): [ReturnStmt] return ... +# 1453| : +# 1456| [CopyAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A const&) +# 1456| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_A & -# 1454| [MoveAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A&&) -# 1454| : +# 1456| [MoveAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A&&) +# 1456| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Inheritance_Test_A && -# 1454| [CopyConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A const&) -# 1454| : +# 1456| [CopyConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A const&) +# 1456| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_A & -# 1454| [MoveConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A&&) -# 1454| : +# 1456| [MoveConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A&&) +# 1456| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Inheritance_Test_A && -# 1454| [Destructor] void Inheritance_Test_A::~Inheritance_Test_A() -# 1454| : -# 1457| [Constructor] void Inheritance_Test_A::Inheritance_Test_A() -# 1457| : -# 1457| : -# 1457| getInitializer(0): (no string representation) -# 1457| Type = [Struct] Inheritance_Test_B -# 1457| ValueCategory = prvalue -# 1457| getInitializer(1): [ConstructorFieldInit] constructor init of field x -# 1457| Type = [IntType] int -# 1457| ValueCategory = prvalue -# 1457| getExpr(): [Literal] 42 -# 1457| Type = [IntType] int -# 1457| Value = [Literal] 42 -# 1457| ValueCategory = prvalue -# 1457| getEntryPoint(): [BlockStmt] { ... } -# 1458| getStmt(0): [ExprStmt] ExprStmt -# 1458| getExpr(): [AssignExpr] ... = ... -# 1458| Type = [IntType] int -# 1458| ValueCategory = lvalue -# 1458| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] y -# 1458| Type = [IntType] int -# 1458| ValueCategory = lvalue -# 1458| getQualifier(): [ThisExpr] this -# 1458| Type = [PointerType] Inheritance_Test_A * -# 1458| ValueCategory = prvalue(load) -# 1458| getRValue(): [Literal] 3 -# 1458| Type = [IntType] int -# 1458| Value = [Literal] 3 -# 1458| ValueCategory = prvalue -# 1459| getStmt(1): [ReturnStmt] return ... -# 1462| [TopLevelFunction] void array_structured_binding() -# 1462| : -# 1462| getEntryPoint(): [BlockStmt] { ... } -# 1463| getStmt(0): [DeclStmt] declaration -# 1463| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs -# 1463| Type = [ArrayType] int[2] -# 1463| getVariable().getInitializer(): [Initializer] initializer for xs -# 1463| getExpr(): [ArrayAggregateLiteral] {...} -# 1463| Type = [ArrayType] int[2] -# 1463| ValueCategory = prvalue -# 1463| getAnElementExpr(0): [Literal] 1 -# 1463| Type = [IntType] int -# 1463| Value = [Literal] 1 -# 1463| ValueCategory = prvalue -# 1463| getAnElementExpr(1): [Literal] 2 -# 1463| Type = [IntType] int -# 1463| Value = [Literal] 2 -# 1463| ValueCategory = prvalue -# 1465| getStmt(1): [BlockStmt] { ... } -# 1466| getStmt(0): [DeclStmt] declaration -# 1466| getDeclarationEntry(0): (no string representation) -# 1466| Type = [LValueReferenceType] int(&)[2] -# 1466| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1466| getExpr(): [VariableAccess] xs -# 1466| Type = [ArrayType] int[2] -# 1466| ValueCategory = lvalue -# 1466| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1466| Type = [LValueReferenceType] int(&)[2] -# 1466| ValueCategory = prvalue -# 1466| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 -# 1466| Type = [IntType] int +# 1456| [Destructor] void Inheritance_Test_A::~Inheritance_Test_A() +# 1456| : +# 1459| [Constructor] void Inheritance_Test_A::Inheritance_Test_A() +# 1459| : +# 1459| : +# 1459| getInitializer(0): (no string representation) +# 1459| Type = [Struct] Inheritance_Test_B +# 1459| ValueCategory = prvalue +# 1459| getInitializer(1): [ConstructorFieldInit] constructor init of field x +# 1459| Type = [IntType] int +# 1459| ValueCategory = prvalue +# 1459| getExpr(): [Literal] 42 +# 1459| Type = [IntType] int +# 1459| Value = [Literal] 42 +# 1459| ValueCategory = prvalue +# 1459| getEntryPoint(): [BlockStmt] { ... } +# 1460| getStmt(0): [ExprStmt] ExprStmt +# 1460| getExpr(): [AssignExpr] ... = ... +# 1460| Type = [IntType] int +# 1460| ValueCategory = lvalue +# 1460| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] y +# 1460| Type = [IntType] int +# 1460| ValueCategory = lvalue +# 1460| getQualifier(): [ThisExpr] this +# 1460| Type = [PointerType] Inheritance_Test_A * +# 1460| ValueCategory = prvalue(load) +# 1460| getRValue(): [Literal] 3 +# 1460| Type = [IntType] int +# 1460| Value = [Literal] 3 +# 1460| ValueCategory = prvalue +# 1461| getStmt(1): [ReturnStmt] return ... +# 1464| [TopLevelFunction] void array_structured_binding() +# 1464| : +# 1464| getEntryPoint(): [BlockStmt] { ... } +# 1465| getStmt(0): [DeclStmt] declaration +# 1465| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs +# 1465| Type = [ArrayType] int[2] +# 1465| getVariable().getInitializer(): [Initializer] initializer for xs +# 1465| getExpr(): [ArrayAggregateLiteral] {...} +# 1465| Type = [ArrayType] int[2] +# 1465| ValueCategory = prvalue +# 1465| getAnElementExpr(0): [Literal] 1 +# 1465| Type = [IntType] int +# 1465| Value = [Literal] 1 +# 1465| ValueCategory = prvalue +# 1465| getAnElementExpr(1): [Literal] 2 +# 1465| Type = [IntType] int +# 1465| Value = [Literal] 2 +# 1465| ValueCategory = prvalue +# 1467| getStmt(1): [BlockStmt] { ... } +# 1468| getStmt(0): [DeclStmt] declaration +# 1468| getDeclarationEntry(0): (no string representation) +# 1468| Type = [LValueReferenceType] int(&)[2] +# 1468| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1468| getExpr(): [VariableAccess] xs +# 1468| Type = [ArrayType] int[2] +# 1468| ValueCategory = lvalue +# 1468| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1468| Type = [LValueReferenceType] int(&)[2] +# 1468| ValueCategory = prvalue +# 1468| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 +# 1468| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x0 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -11693,8 +11842,8 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ArrayType] int[2] #-----| ValueCategory = lvalue -# 1466| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 -# 1466| Type = [IntType] int +# 1468| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 +# 1468| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x1 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -11712,1345 +11861,1307 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ArrayType] int[2] #-----| ValueCategory = lvalue -# 1467| getStmt(1): [ExprStmt] ExprStmt -# 1467| getExpr(): [AssignExpr] ... = ... -# 1467| Type = [IntType] int -# 1467| ValueCategory = lvalue -# 1467| getLValue(): [VariableAccess] x1 -# 1467| Type = [IntType] int -# 1467| ValueCategory = lvalue -# 1467| getRValue(): [Literal] 3 -# 1467| Type = [IntType] int -# 1467| Value = [Literal] 3 -# 1467| ValueCategory = prvalue -# 1468| getStmt(2): [DeclStmt] declaration -# 1468| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 -# 1468| Type = [LValueReferenceType] int & -# 1468| getVariable().getInitializer(): [Initializer] initializer for rx1 -# 1468| getExpr(): [VariableAccess] x1 -# 1468| Type = [IntType] int -# 1468| ValueCategory = lvalue -# 1468| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1468| Type = [LValueReferenceType] int & -# 1468| ValueCategory = prvalue -# 1469| getStmt(3): [DeclStmt] declaration -# 1469| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1469| getStmt(1): [ExprStmt] ExprStmt +# 1469| getExpr(): [AssignExpr] ... = ... # 1469| Type = [IntType] int -# 1469| getVariable().getInitializer(): [Initializer] initializer for x -# 1469| getExpr(): [VariableAccess] x1 -# 1469| Type = [IntType] int -# 1469| ValueCategory = prvalue(load) -# 1472| getStmt(2): [BlockStmt] { ... } -# 1473| getStmt(0): [DeclStmt] declaration -# 1473| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1473| Type = [LValueReferenceType] int(&)[2] -# 1473| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1473| getExpr(): [VariableAccess] xs -# 1473| Type = [ArrayType] int[2] -# 1473| ValueCategory = lvalue -# 1473| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1473| Type = [LValueReferenceType] int(&)[2] -# 1473| ValueCategory = prvalue -# 1474| getStmt(1): [DeclStmt] declaration -# 1474| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 -# 1474| Type = [LValueReferenceType] int & -# 1474| getVariable().getInitializer(): [Initializer] initializer for x0 -# 1474| getExpr(): [ArrayExpr] access to array -# 1474| Type = [IntType] int -# 1474| ValueCategory = lvalue -# 1474| getArrayBase(): [VariableAccess] unnamed_local_variable -# 1474| Type = [LValueReferenceType] int(&)[2] -# 1474| ValueCategory = prvalue(load) -# 1474| getArrayOffset(): [Literal] 0 -# 1474| Type = [IntType] int -# 1474| Value = [Literal] 0 -# 1474| ValueCategory = prvalue -# 1474| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1474| Type = [IntPointerType] int * -# 1474| ValueCategory = prvalue -# 1474| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1474| Type = [ArrayType] int[2] -# 1474| ValueCategory = lvalue -# 1474| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1474| Type = [LValueReferenceType] int & -# 1474| ValueCategory = prvalue -# 1475| getStmt(2): [DeclStmt] declaration -# 1475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 -# 1475| Type = [LValueReferenceType] int & -# 1475| getVariable().getInitializer(): [Initializer] initializer for x1 -# 1475| getExpr(): [ArrayExpr] access to array -# 1475| Type = [IntType] int +# 1469| ValueCategory = lvalue +# 1469| getLValue(): [VariableAccess] x1 +# 1469| Type = [IntType] int +# 1469| ValueCategory = lvalue +# 1469| getRValue(): [Literal] 3 +# 1469| Type = [IntType] int +# 1469| Value = [Literal] 3 +# 1469| ValueCategory = prvalue +# 1470| getStmt(2): [DeclStmt] declaration +# 1470| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1470| Type = [LValueReferenceType] int & +# 1470| getVariable().getInitializer(): [Initializer] initializer for rx1 +# 1470| getExpr(): [VariableAccess] x1 +# 1470| Type = [IntType] int +# 1470| ValueCategory = lvalue +# 1470| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1470| Type = [LValueReferenceType] int & +# 1470| ValueCategory = prvalue +# 1471| getStmt(3): [DeclStmt] declaration +# 1471| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1471| Type = [IntType] int +# 1471| getVariable().getInitializer(): [Initializer] initializer for x +# 1471| getExpr(): [VariableAccess] x1 +# 1471| Type = [IntType] int +# 1471| ValueCategory = prvalue(load) +# 1474| getStmt(2): [BlockStmt] { ... } +# 1475| getStmt(0): [DeclStmt] declaration +# 1475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1475| Type = [LValueReferenceType] int(&)[2] +# 1475| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1475| getExpr(): [VariableAccess] xs +# 1475| Type = [ArrayType] int[2] # 1475| ValueCategory = lvalue -# 1475| getArrayBase(): [VariableAccess] unnamed_local_variable -# 1475| Type = [LValueReferenceType] int(&)[2] -# 1475| ValueCategory = prvalue(load) -# 1475| getArrayOffset(): [Literal] 1 -# 1475| Type = [IntType] int -# 1475| Value = [Literal] 1 -# 1475| ValueCategory = prvalue -# 1475| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1475| Type = [IntPointerType] int * -# 1475| ValueCategory = prvalue -# 1475| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1475| Type = [ArrayType] int[2] -# 1475| ValueCategory = lvalue # 1475| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1475| Type = [LValueReferenceType] int & +# 1475| Type = [LValueReferenceType] int(&)[2] # 1475| ValueCategory = prvalue -# 1476| getStmt(3): [ExprStmt] ExprStmt -# 1476| getExpr(): [AssignExpr] ... = ... -# 1476| Type = [IntType] int -# 1476| ValueCategory = lvalue -# 1476| getLValue(): [VariableAccess] x1 -# 1476| Type = [LValueReferenceType] int & -# 1476| ValueCategory = prvalue(load) -# 1476| getRValue(): [Literal] 3 -# 1476| Type = [IntType] int -# 1476| Value = [Literal] 3 -# 1476| ValueCategory = prvalue -# 1476| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1476| Type = [IntType] int -# 1476| ValueCategory = lvalue -# 1477| getStmt(4): [DeclStmt] declaration -# 1477| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1476| getStmt(1): [DeclStmt] declaration +# 1476| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 +# 1476| Type = [LValueReferenceType] int & +# 1476| getVariable().getInitializer(): [Initializer] initializer for x0 +# 1476| getExpr(): [ArrayExpr] access to array +# 1476| Type = [IntType] int +# 1476| ValueCategory = lvalue +# 1476| getArrayBase(): [VariableAccess] unnamed_local_variable +# 1476| Type = [LValueReferenceType] int(&)[2] +# 1476| ValueCategory = prvalue(load) +# 1476| getArrayOffset(): [Literal] 0 +# 1476| Type = [IntType] int +# 1476| Value = [Literal] 0 +# 1476| ValueCategory = prvalue +# 1476| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1476| Type = [IntPointerType] int * +# 1476| ValueCategory = prvalue +# 1476| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1476| Type = [ArrayType] int[2] +# 1476| ValueCategory = lvalue +# 1476| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1476| Type = [LValueReferenceType] int & +# 1476| ValueCategory = prvalue +# 1477| getStmt(2): [DeclStmt] declaration +# 1477| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 # 1477| Type = [LValueReferenceType] int & -# 1477| getVariable().getInitializer(): [Initializer] initializer for rx1 -# 1477| getExpr(): [VariableAccess] x1 -# 1477| Type = [LValueReferenceType] int & -# 1477| ValueCategory = prvalue(load) +# 1477| getVariable().getInitializer(): [Initializer] initializer for x1 +# 1477| getExpr(): [ArrayExpr] access to array +# 1477| Type = [IntType] int +# 1477| ValueCategory = lvalue +# 1477| getArrayBase(): [VariableAccess] unnamed_local_variable +# 1477| Type = [LValueReferenceType] int(&)[2] +# 1477| ValueCategory = prvalue(load) +# 1477| getArrayOffset(): [Literal] 1 +# 1477| Type = [IntType] int +# 1477| Value = [Literal] 1 +# 1477| ValueCategory = prvalue +# 1477| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1477| Type = [IntPointerType] int * +# 1477| ValueCategory = prvalue +# 1477| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1477| Type = [ArrayType] int[2] +# 1477| ValueCategory = lvalue # 1477| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) # 1477| Type = [LValueReferenceType] int & # 1477| ValueCategory = prvalue -# 1477| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1477| Type = [IntType] int -# 1477| ValueCategory = lvalue -# 1478| getStmt(5): [DeclStmt] declaration -# 1478| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1478| getStmt(3): [ExprStmt] ExprStmt +# 1478| getExpr(): [AssignExpr] ... = ... # 1478| Type = [IntType] int -# 1478| getVariable().getInitializer(): [Initializer] initializer for x -# 1478| getExpr(): [VariableAccess] x1 -# 1478| Type = [LValueReferenceType] int & -# 1478| ValueCategory = prvalue(load) -# 1478| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1478| Type = [IntType] int -# 1478| ValueCategory = prvalue(load) -# 1480| getStmt(3): [ReturnStmt] return ... -# 1482| [CopyAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct const&) -# 1482| : +# 1478| ValueCategory = lvalue +# 1478| getLValue(): [VariableAccess] x1 +# 1478| Type = [LValueReferenceType] int & +# 1478| ValueCategory = prvalue(load) +# 1478| getRValue(): [Literal] 3 +# 1478| Type = [IntType] int +# 1478| Value = [Literal] 3 +# 1478| ValueCategory = prvalue +# 1478| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1478| Type = [IntType] int +# 1478| ValueCategory = lvalue +# 1479| getStmt(4): [DeclStmt] declaration +# 1479| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1479| Type = [LValueReferenceType] int & +# 1479| getVariable().getInitializer(): [Initializer] initializer for rx1 +# 1479| getExpr(): [VariableAccess] x1 +# 1479| Type = [LValueReferenceType] int & +# 1479| ValueCategory = prvalue(load) +# 1479| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1479| Type = [LValueReferenceType] int & +# 1479| ValueCategory = prvalue +# 1479| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1479| Type = [IntType] int +# 1479| ValueCategory = lvalue +# 1480| getStmt(5): [DeclStmt] declaration +# 1480| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1480| Type = [IntType] int +# 1480| getVariable().getInitializer(): [Initializer] initializer for x +# 1480| getExpr(): [VariableAccess] x1 +# 1480| Type = [LValueReferenceType] int & +# 1480| ValueCategory = prvalue(load) +# 1480| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1480| Type = [IntType] int +# 1480| ValueCategory = prvalue(load) +# 1482| getStmt(3): [ReturnStmt] return ... +# 1484| [CopyAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct const&) +# 1484| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberMemberStruct & -# 1482| [MoveAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct&&) -# 1482| : +# 1484| [MoveAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct&&) +# 1484| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberMemberStruct && -# 1482| [Constructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1482| : -# 1482| : -# 1482| getInitializer(0): [ConstructorFieldInit] constructor init of field x -# 1482| Type = [IntType] int -# 1482| ValueCategory = prvalue -# 1482| getEntryPoint(): [BlockStmt] { ... } -# 1482| getStmt(0): [ReturnStmt] return ... -# 1482| [CopyConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct const&) -# 1482| : +# 1484| [Constructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1484| : +# 1484| : +# 1484| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 1484| Type = [IntType] int +# 1484| ValueCategory = prvalue +# 1484| getEntryPoint(): [BlockStmt] { ... } +# 1484| getStmt(0): [ReturnStmt] return ... +# 1484| [CopyConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct const&) +# 1484| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberMemberStruct & -# 1482| [MoveConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct&&) -# 1482| : +# 1484| [MoveConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct&&) +# 1484| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberMemberStruct && -# 1486| [CopyAssignmentOperator] StructuredBindingDataMemberStruct& StructuredBindingDataMemberStruct::operator=(StructuredBindingDataMemberStruct const&) -# 1486| : +# 1488| [CopyAssignmentOperator] StructuredBindingDataMemberStruct& StructuredBindingDataMemberStruct::operator=(StructuredBindingDataMemberStruct const&) +# 1488| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| [Constructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1486| : -# 1486| : -# 1486| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1486| Type = [IntType] int -# 1486| ValueCategory = prvalue -# 1486| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1486| Type = [DoubleType] double -# 1486| ValueCategory = prvalue -# 1486| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1486| Type = [LValueReferenceType] int & -# 1486| ValueCategory = prvalue -# 1486| getInitializer(3): [ConstructorFieldInit] constructor init of field p -# 1486| Type = [IntPointerType] int * -# 1486| ValueCategory = prvalue -# 1486| getInitializer(4): [ConstructorFieldInit] constructor init of field xs -# 1486| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1486| ValueCategory = prvalue -# 1486| getInitializer(5): [ConstructorFieldInit] constructor init of field r_alt -# 1486| Type = [CTypedefType,NestedTypedefType] RefType -# 1486| ValueCategory = prvalue -# 1486| getInitializer(6): [ConstructorFieldInit] constructor init of field m -# 1486| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberMemberStruct -# 1486| Type = [VoidType] void -# 1486| ValueCategory = prvalue -# 1486| getEntryPoint(): [BlockStmt] { ... } -# 1486| getStmt(0): [ReturnStmt] return ... -# 1486| [CopyConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1486| : +# 1488| [Constructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1488| : +# 1488| : +# 1488| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1488| Type = [IntType] int +# 1488| ValueCategory = prvalue +# 1488| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1488| Type = [DoubleType] double +# 1488| ValueCategory = prvalue +# 1488| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1488| Type = [LValueReferenceType] int & +# 1488| ValueCategory = prvalue +# 1488| getInitializer(3): [ConstructorFieldInit] constructor init of field p +# 1488| Type = [IntPointerType] int * +# 1488| ValueCategory = prvalue +# 1488| getInitializer(4): [ConstructorFieldInit] constructor init of field xs +# 1488| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1488| ValueCategory = prvalue +# 1488| getInitializer(5): [ConstructorFieldInit] constructor init of field r_alt +# 1488| Type = [CTypedefType,NestedTypedefType] RefType +# 1488| ValueCategory = prvalue +# 1488| getInitializer(6): [ConstructorFieldInit] constructor init of field m +# 1488| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberMemberStruct +# 1488| Type = [VoidType] void +# 1488| ValueCategory = prvalue +# 1488| getEntryPoint(): [BlockStmt] { ... } +# 1488| getStmt(0): [ReturnStmt] return ... +# 1488| [CopyConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1488| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| : -# 1486| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1486| Type = [IntType] int -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] i -# 1486| Type = [IntType] int -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1486| Type = [DoubleType] double -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] d -# 1486| Type = [DoubleType] double -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getInitializer(2): [ConstructorFieldInit] constructor init of field b -# 1486| Type = [IntType] unsigned int -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] b -# 1486| Type = [IntType] unsigned int -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getInitializer(3): [ConstructorFieldInit] constructor init of field r -# 1486| Type = [LValueReferenceType] int & -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] r -# 1486| Type = [LValueReferenceType] int & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getInitializer(4): [ConstructorFieldInit] constructor init of field p -# 1486| Type = [IntPointerType] int * -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] p -# 1486| Type = [IntPointerType] int * -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getInitializer(5): [ConstructorFieldInit] constructor init of field xs -# 1486| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] xs -# 1486| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getInitializer(6): [ConstructorFieldInit] constructor init of field r_alt -# 1486| Type = [CTypedefType,NestedTypedefType] RefType -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] r_alt -# 1486| Type = [CTypedefType,NestedTypedefType] RefType -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getInitializer(7): [ConstructorFieldInit] constructor init of field m -# 1486| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1486| ValueCategory = prvalue -# 1486| getExpr(): [ReferenceFieldAccess] m -# 1486| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1486| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1486| ValueCategory = prvalue(load) -# 1486| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1486| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1486| ValueCategory = lvalue -# 1486| getEntryPoint(): [BlockStmt] { ... } -# 1486| getStmt(0): [ReturnStmt] return ... -# 1486| [MoveConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct&&) -# 1486| : +# 1488| : +# 1488| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1488| Type = [IntType] int +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] i +# 1488| Type = [IntType] int +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1488| Type = [DoubleType] double +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] d +# 1488| Type = [DoubleType] double +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getInitializer(2): [ConstructorFieldInit] constructor init of field b +# 1488| Type = [IntType] unsigned int +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] b +# 1488| Type = [IntType] unsigned int +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getInitializer(3): [ConstructorFieldInit] constructor init of field r +# 1488| Type = [LValueReferenceType] int & +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] r +# 1488| Type = [LValueReferenceType] int & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getInitializer(4): [ConstructorFieldInit] constructor init of field p +# 1488| Type = [IntPointerType] int * +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] p +# 1488| Type = [IntPointerType] int * +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getInitializer(5): [ConstructorFieldInit] constructor init of field xs +# 1488| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] xs +# 1488| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getInitializer(6): [ConstructorFieldInit] constructor init of field r_alt +# 1488| Type = [CTypedefType,NestedTypedefType] RefType +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] r_alt +# 1488| Type = [CTypedefType,NestedTypedefType] RefType +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getInitializer(7): [ConstructorFieldInit] constructor init of field m +# 1488| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1488| ValueCategory = prvalue +# 1488| getExpr(): [ReferenceFieldAccess] m +# 1488| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1488| ValueCategory = prvalue(load) +# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1488| ValueCategory = lvalue +# 1488| getEntryPoint(): [BlockStmt] { ... } +# 1488| getStmt(0): [ReturnStmt] return ... +# 1488| [MoveConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct&&) +# 1488| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberStruct && -# 1499| [TopLevelFunction] void data_member_structured_binding() -# 1499| : -# 1499| getEntryPoint(): [BlockStmt] { ... } -# 1500| getStmt(0): [DeclStmt] declaration -# 1500| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 1500| Type = [Struct] StructuredBindingDataMemberStruct -# 1500| getVariable().getInitializer(): [Initializer] initializer for s -# 1500| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberStruct -# 1500| Type = [VoidType] void -# 1500| ValueCategory = prvalue -# 1502| getStmt(1): [BlockStmt] { ... } -# 1503| getStmt(0): [DeclStmt] declaration -# 1503| getDeclarationEntry(0): (no string representation) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1503| getExpr(): [VariableAccess] s -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = prvalue(load) -# 1503| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1503| Type = [IntType] int +# 1501| [TopLevelFunction] void data_member_structured_binding() +# 1501| : +# 1501| getEntryPoint(): [BlockStmt] { ... } +# 1502| getStmt(0): [DeclStmt] declaration +# 1502| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 1502| Type = [Struct] StructuredBindingDataMemberStruct +# 1502| getVariable().getInitializer(): [Initializer] initializer for s +# 1502| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberStruct +# 1502| Type = [VoidType] void +# 1502| ValueCategory = prvalue +# 1504| getStmt(1): [BlockStmt] { ... } +# 1505| getStmt(0): [DeclStmt] declaration +# 1505| getDeclarationEntry(0): (no string representation) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1505| getExpr(): [VariableAccess] s +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = prvalue(load) +# 1505| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1505| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1503| getExpr(): [ValueFieldAccess] i -# 1503| Type = [IntType] int -# 1503| ValueCategory = lvalue -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d -# 1503| Type = [DoubleType] double +# 1505| getExpr(): [ValueFieldAccess] i +# 1505| Type = [IntType] int +# 1505| ValueCategory = lvalue +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1505| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d +# 1505| Type = [DoubleType] double #-----| getVariable().getInitializer(): [Initializer] initializer for d -# 1503| getExpr(): [ValueFieldAccess] d -# 1503| Type = [DoubleType] double -# 1503| ValueCategory = lvalue -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getDeclarationEntry(3): [VariableDeclarationEntry] definition of b -# 1503| Type = [IntType] unsigned int +# 1505| getExpr(): [ValueFieldAccess] d +# 1505| Type = [DoubleType] double +# 1505| ValueCategory = lvalue +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1505| getDeclarationEntry(3): [VariableDeclarationEntry] definition of b +# 1505| Type = [IntType] unsigned int #-----| getVariable().getInitializer(): [Initializer] initializer for b -# 1503| getExpr(): [ValueFieldAccess] b -# 1503| Type = [IntType] unsigned int -# 1503| ValueCategory = lvalue -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getDeclarationEntry(4): [VariableDeclarationEntry] definition of r -# 1503| Type = [IntType] int +# 1505| getExpr(): [ValueFieldAccess] b +# 1505| Type = [IntType] unsigned int +# 1505| ValueCategory = lvalue +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1505| getDeclarationEntry(4): [VariableDeclarationEntry] definition of r +# 1505| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1503| getExpr(): [ValueFieldAccess] r -# 1503| Type = [LValueReferenceType] int & -# 1503| ValueCategory = prvalue(load) -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1503| Type = [IntType] int -# 1503| ValueCategory = lvalue -# 1503| getDeclarationEntry(5): [VariableDeclarationEntry] definition of p -# 1503| Type = [IntPointerType] int * +# 1505| getExpr(): [ValueFieldAccess] r +# 1505| Type = [LValueReferenceType] int & +# 1505| ValueCategory = prvalue(load) +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1505| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1505| Type = [IntType] int +# 1505| ValueCategory = lvalue +# 1505| getDeclarationEntry(5): [VariableDeclarationEntry] definition of p +# 1505| Type = [IntPointerType] int * #-----| getVariable().getInitializer(): [Initializer] initializer for p -# 1503| getExpr(): [ValueFieldAccess] p -# 1503| Type = [IntPointerType] int * -# 1503| ValueCategory = lvalue -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getDeclarationEntry(6): [VariableDeclarationEntry] definition of xs -# 1503| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1505| getExpr(): [ValueFieldAccess] p +# 1505| Type = [IntPointerType] int * +# 1505| ValueCategory = lvalue +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1505| getDeclarationEntry(6): [VariableDeclarationEntry] definition of xs +# 1505| Type = [CTypedefType,NestedTypedefType] ArrayType #-----| getVariable().getInitializer(): [Initializer] initializer for xs -# 1503| getExpr(): [ValueFieldAccess] xs -# 1503| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1503| ValueCategory = lvalue -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getDeclarationEntry(7): [VariableDeclarationEntry] definition of r_alt -# 1503| Type = [IntType] int +# 1505| getExpr(): [ValueFieldAccess] xs +# 1505| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1505| ValueCategory = lvalue +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1505| getDeclarationEntry(7): [VariableDeclarationEntry] definition of r_alt +# 1505| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for r_alt -# 1503| getExpr(): [ValueFieldAccess] r_alt -# 1503| Type = [CTypedefType,NestedTypedefType] RefType -# 1503| ValueCategory = prvalue(load) -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1503| Type = [IntType] int -# 1503| ValueCategory = lvalue -# 1503| getDeclarationEntry(8): [VariableDeclarationEntry] definition of m -# 1503| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1505| getExpr(): [ValueFieldAccess] r_alt +# 1505| Type = [CTypedefType,NestedTypedefType] RefType +# 1505| ValueCategory = prvalue(load) +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1505| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1505| Type = [IntType] int +# 1505| ValueCategory = lvalue +# 1505| getDeclarationEntry(8): [VariableDeclarationEntry] definition of m +# 1505| Type = [Struct] StructuredBindingDataMemberMemberStruct #-----| getVariable().getInitializer(): [Initializer] initializer for m -# 1503| getExpr(): [ValueFieldAccess] m -# 1503| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1503| ValueCategory = lvalue -# 1503| getQualifier(): [VariableAccess] (unnamed local variable) -# 1503| Type = [Struct] StructuredBindingDataMemberStruct -# 1503| ValueCategory = lvalue -# 1504| getStmt(1): [ExprStmt] ExprStmt -# 1504| getExpr(): [AssignExpr] ... = ... -# 1504| Type = [DoubleType] double -# 1504| ValueCategory = lvalue -# 1504| getLValue(): [VariableAccess] d -# 1504| Type = [DoubleType] double -# 1504| ValueCategory = lvalue -# 1504| getRValue(): [Literal] 4.0 -# 1504| Type = [DoubleType] double -# 1504| Value = [Literal] 4.0 -# 1504| ValueCategory = prvalue -# 1505| getStmt(2): [DeclStmt] declaration -# 1505| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1505| Type = [LValueReferenceType] double & -# 1505| getVariable().getInitializer(): [Initializer] initializer for rd -# 1505| getExpr(): [VariableAccess] d -# 1505| Type = [DoubleType] double +# 1505| getExpr(): [ValueFieldAccess] m +# 1505| Type = [Struct] StructuredBindingDataMemberMemberStruct # 1505| ValueCategory = lvalue -# 1505| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1505| Type = [LValueReferenceType] double & -# 1505| ValueCategory = prvalue -# 1506| getStmt(3): [DeclStmt] declaration -# 1506| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1506| Type = [IntType] int -# 1506| getVariable().getInitializer(): [Initializer] initializer for v -# 1506| getExpr(): [VariableAccess] i -# 1506| Type = [IntType] int -# 1506| ValueCategory = prvalue(load) -# 1507| getStmt(4): [ExprStmt] ExprStmt -# 1507| getExpr(): [AssignExpr] ... = ... -# 1507| Type = [IntType] int -# 1507| ValueCategory = lvalue -# 1507| getLValue(): [VariableAccess] r -# 1507| Type = [IntType] int -# 1507| ValueCategory = lvalue -# 1507| getRValue(): [Literal] 5 -# 1507| Type = [IntType] int -# 1507| Value = [Literal] 5 -# 1507| ValueCategory = prvalue -# 1508| getStmt(5): [ExprStmt] ExprStmt -# 1508| getExpr(): [AssignExpr] ... = ... +# 1505| getQualifier(): [VariableAccess] (unnamed local variable) +# 1505| Type = [Struct] StructuredBindingDataMemberStruct +# 1505| ValueCategory = lvalue +# 1506| getStmt(1): [ExprStmt] ExprStmt +# 1506| getExpr(): [AssignExpr] ... = ... +# 1506| Type = [DoubleType] double +# 1506| ValueCategory = lvalue +# 1506| getLValue(): [VariableAccess] d +# 1506| Type = [DoubleType] double +# 1506| ValueCategory = lvalue +# 1506| getRValue(): [Literal] 4.0 +# 1506| Type = [DoubleType] double +# 1506| Value = [Literal] 4.0 +# 1506| ValueCategory = prvalue +# 1507| getStmt(2): [DeclStmt] declaration +# 1507| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1507| Type = [LValueReferenceType] double & +# 1507| getVariable().getInitializer(): [Initializer] initializer for rd +# 1507| getExpr(): [VariableAccess] d +# 1507| Type = [DoubleType] double +# 1507| ValueCategory = lvalue +# 1507| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1507| Type = [LValueReferenceType] double & +# 1507| ValueCategory = prvalue +# 1508| getStmt(3): [DeclStmt] declaration +# 1508| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v # 1508| Type = [IntType] int -# 1508| ValueCategory = lvalue -# 1508| getLValue(): [PointerDereferenceExpr] * ... -# 1508| Type = [IntType] int -# 1508| ValueCategory = lvalue -# 1508| getOperand(): [VariableAccess] p -# 1508| Type = [IntPointerType] int * +# 1508| getVariable().getInitializer(): [Initializer] initializer for v +# 1508| getExpr(): [VariableAccess] i +# 1508| Type = [IntType] int # 1508| ValueCategory = prvalue(load) -# 1508| getRValue(): [Literal] 6 -# 1508| Type = [IntType] int -# 1508| Value = [Literal] 6 -# 1508| ValueCategory = prvalue -# 1509| getStmt(6): [DeclStmt] declaration -# 1509| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1509| Type = [LValueReferenceType] int & -# 1509| getVariable().getInitializer(): [Initializer] initializer for rr -# 1509| getExpr(): [VariableAccess] r -# 1509| Type = [IntType] int -# 1509| ValueCategory = lvalue -# 1509| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1509| Type = [LValueReferenceType] int & -# 1509| ValueCategory = prvalue -# 1510| getStmt(7): [DeclStmt] declaration -# 1510| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr -# 1510| Type = [IntPointerType] int * -# 1510| getVariable().getInitializer(): [Initializer] initializer for pr -# 1510| getExpr(): [AddressOfExpr] & ... +# 1509| getStmt(4): [ExprStmt] ExprStmt +# 1509| getExpr(): [AssignExpr] ... = ... +# 1509| Type = [IntType] int +# 1509| ValueCategory = lvalue +# 1509| getLValue(): [VariableAccess] r +# 1509| Type = [IntType] int +# 1509| ValueCategory = lvalue +# 1509| getRValue(): [Literal] 5 +# 1509| Type = [IntType] int +# 1509| Value = [Literal] 5 +# 1509| ValueCategory = prvalue +# 1510| getStmt(5): [ExprStmt] ExprStmt +# 1510| getExpr(): [AssignExpr] ... = ... +# 1510| Type = [IntType] int +# 1510| ValueCategory = lvalue +# 1510| getLValue(): [PointerDereferenceExpr] * ... +# 1510| Type = [IntType] int +# 1510| ValueCategory = lvalue +# 1510| getOperand(): [VariableAccess] p # 1510| Type = [IntPointerType] int * -# 1510| ValueCategory = prvalue -# 1510| getOperand(): [VariableAccess] r -# 1510| Type = [IntType] int -# 1510| ValueCategory = lvalue -# 1511| getStmt(8): [DeclStmt] declaration -# 1511| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1511| Type = [IntType] int -# 1511| getVariable().getInitializer(): [Initializer] initializer for w +# 1510| ValueCategory = prvalue(load) +# 1510| getRValue(): [Literal] 6 +# 1510| Type = [IntType] int +# 1510| Value = [Literal] 6 +# 1510| ValueCategory = prvalue +# 1511| getStmt(6): [DeclStmt] declaration +# 1511| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1511| Type = [LValueReferenceType] int & +# 1511| getVariable().getInitializer(): [Initializer] initializer for rr # 1511| getExpr(): [VariableAccess] r # 1511| Type = [IntType] int -# 1511| ValueCategory = prvalue(load) -# 1514| getStmt(2): [BlockStmt] { ... } -# 1515| getStmt(0): [DeclStmt] declaration -# 1515| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1515| Type = [Struct] StructuredBindingDataMemberStruct -# 1515| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1515| getExpr(): [VariableAccess] s -# 1515| Type = [Struct] StructuredBindingDataMemberStruct -# 1515| ValueCategory = prvalue(load) -# 1516| getStmt(1): [DeclStmt] declaration -# 1516| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1516| Type = [LValueReferenceType] int & -# 1516| getVariable().getInitializer(): [Initializer] initializer for i -# 1516| getExpr(): [ValueFieldAccess] i -# 1516| Type = [IntType] int -# 1516| ValueCategory = lvalue -# 1516| getQualifier(): [VariableAccess] unnamed_local_variable -# 1516| Type = [Struct] StructuredBindingDataMemberStruct -# 1516| ValueCategory = lvalue -# 1516| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1516| Type = [LValueReferenceType] int & -# 1516| ValueCategory = prvalue -# 1517| getStmt(2): [DeclStmt] declaration -# 1517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1517| Type = [LValueReferenceType] double & -# 1517| getVariable().getInitializer(): [Initializer] initializer for d -# 1517| getExpr(): [ValueFieldAccess] d -# 1517| Type = [DoubleType] double -# 1517| ValueCategory = lvalue -# 1517| getQualifier(): [VariableAccess] unnamed_local_variable -# 1517| Type = [Struct] StructuredBindingDataMemberStruct -# 1517| ValueCategory = lvalue -# 1517| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1517| Type = [LValueReferenceType] double & -# 1517| ValueCategory = prvalue -# 1519| getStmt(3): [DeclStmt] declaration -# 1519| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1519| Type = [LValueReferenceType] int & -# 1519| getVariable().getInitializer(): [Initializer] initializer for r -# 1519| getExpr(): [ValueFieldAccess] r -# 1519| Type = [LValueReferenceType] int & -# 1519| ValueCategory = prvalue(load) +# 1511| ValueCategory = lvalue +# 1511| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1511| Type = [LValueReferenceType] int & +# 1511| ValueCategory = prvalue +# 1512| getStmt(7): [DeclStmt] declaration +# 1512| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr +# 1512| Type = [IntPointerType] int * +# 1512| getVariable().getInitializer(): [Initializer] initializer for pr +# 1512| getExpr(): [AddressOfExpr] & ... +# 1512| Type = [IntPointerType] int * +# 1512| ValueCategory = prvalue +# 1512| getOperand(): [VariableAccess] r +# 1512| Type = [IntType] int +# 1512| ValueCategory = lvalue +# 1513| getStmt(8): [DeclStmt] declaration +# 1513| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1513| Type = [IntType] int +# 1513| getVariable().getInitializer(): [Initializer] initializer for w +# 1513| getExpr(): [VariableAccess] r +# 1513| Type = [IntType] int +# 1513| ValueCategory = prvalue(load) +# 1516| getStmt(2): [BlockStmt] { ... } +# 1517| getStmt(0): [DeclStmt] declaration +# 1517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1517| Type = [Struct] StructuredBindingDataMemberStruct +# 1517| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1517| getExpr(): [VariableAccess] s +# 1517| Type = [Struct] StructuredBindingDataMemberStruct +# 1517| ValueCategory = prvalue(load) +# 1518| getStmt(1): [DeclStmt] declaration +# 1518| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1518| Type = [LValueReferenceType] int & +# 1518| getVariable().getInitializer(): [Initializer] initializer for i +# 1518| getExpr(): [ValueFieldAccess] i +# 1518| Type = [IntType] int +# 1518| ValueCategory = lvalue +# 1518| getQualifier(): [VariableAccess] unnamed_local_variable +# 1518| Type = [Struct] StructuredBindingDataMemberStruct +# 1518| ValueCategory = lvalue +# 1518| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1518| Type = [LValueReferenceType] int & +# 1518| ValueCategory = prvalue +# 1519| getStmt(2): [DeclStmt] declaration +# 1519| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1519| Type = [LValueReferenceType] double & +# 1519| getVariable().getInitializer(): [Initializer] initializer for d +# 1519| getExpr(): [ValueFieldAccess] d +# 1519| Type = [DoubleType] double +# 1519| ValueCategory = lvalue # 1519| getQualifier(): [VariableAccess] unnamed_local_variable # 1519| Type = [Struct] StructuredBindingDataMemberStruct # 1519| ValueCategory = lvalue # 1519| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1519| Type = [LValueReferenceType] int & +# 1519| Type = [LValueReferenceType] double & # 1519| ValueCategory = prvalue -# 1519| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1519| Type = [IntType] int -# 1519| ValueCategory = lvalue -# 1520| getStmt(4): [DeclStmt] declaration -# 1520| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 1520| Type = [LValueReferenceType] int *& -# 1520| getVariable().getInitializer(): [Initializer] initializer for p -# 1520| getExpr(): [ValueFieldAccess] p -# 1520| Type = [IntPointerType] int * -# 1520| ValueCategory = lvalue -# 1520| getQualifier(): [VariableAccess] unnamed_local_variable -# 1520| Type = [Struct] StructuredBindingDataMemberStruct -# 1520| ValueCategory = lvalue -# 1520| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1520| Type = [LValueReferenceType] int *& -# 1520| ValueCategory = prvalue -# 1521| getStmt(5): [ExprStmt] ExprStmt -# 1521| getExpr(): [AssignExpr] ... = ... -# 1521| Type = [DoubleType] double -# 1521| ValueCategory = lvalue -# 1521| getLValue(): [VariableAccess] d -# 1521| Type = [LValueReferenceType] double & -# 1521| ValueCategory = prvalue(load) -# 1521| getRValue(): [Literal] 4.0 -# 1521| Type = [DoubleType] double -# 1521| Value = [Literal] 4.0 -# 1521| ValueCategory = prvalue -# 1521| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1521| Type = [DoubleType] double -# 1521| ValueCategory = lvalue -# 1522| getStmt(6): [DeclStmt] declaration -# 1522| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1522| Type = [LValueReferenceType] double & -# 1522| getVariable().getInitializer(): [Initializer] initializer for rd -# 1522| getExpr(): [VariableAccess] d -# 1522| Type = [LValueReferenceType] double & -# 1522| ValueCategory = prvalue(load) +# 1521| getStmt(3): [DeclStmt] declaration +# 1521| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1521| Type = [LValueReferenceType] int & +# 1521| getVariable().getInitializer(): [Initializer] initializer for r +# 1521| getExpr(): [ValueFieldAccess] r +# 1521| Type = [LValueReferenceType] int & +# 1521| ValueCategory = prvalue(load) +# 1521| getQualifier(): [VariableAccess] unnamed_local_variable +# 1521| Type = [Struct] StructuredBindingDataMemberStruct +# 1521| ValueCategory = lvalue +# 1521| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1521| Type = [LValueReferenceType] int & +# 1521| ValueCategory = prvalue +# 1521| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1521| Type = [IntType] int +# 1521| ValueCategory = lvalue +# 1522| getStmt(4): [DeclStmt] declaration +# 1522| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 1522| Type = [LValueReferenceType] int *& +# 1522| getVariable().getInitializer(): [Initializer] initializer for p +# 1522| getExpr(): [ValueFieldAccess] p +# 1522| Type = [IntPointerType] int * +# 1522| ValueCategory = lvalue +# 1522| getQualifier(): [VariableAccess] unnamed_local_variable +# 1522| Type = [Struct] StructuredBindingDataMemberStruct +# 1522| ValueCategory = lvalue # 1522| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1522| Type = [LValueReferenceType] double & +# 1522| Type = [LValueReferenceType] int *& # 1522| ValueCategory = prvalue -# 1522| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1522| Type = [DoubleType] double -# 1522| ValueCategory = lvalue -# 1523| getStmt(7): [DeclStmt] declaration -# 1523| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1523| Type = [IntType] int -# 1523| getVariable().getInitializer(): [Initializer] initializer for v -# 1523| getExpr(): [VariableAccess] i -# 1523| Type = [LValueReferenceType] int & -# 1523| ValueCategory = prvalue(load) -# 1523| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1523| Type = [IntType] int -# 1523| ValueCategory = prvalue(load) -# 1524| getStmt(8): [ExprStmt] ExprStmt -# 1524| getExpr(): [AssignExpr] ... = ... -# 1524| Type = [IntType] int -# 1524| ValueCategory = lvalue -# 1524| getLValue(): [VariableAccess] r -# 1524| Type = [LValueReferenceType] int & -# 1524| ValueCategory = prvalue(load) -# 1524| getRValue(): [Literal] 5 -# 1524| Type = [IntType] int -# 1524| Value = [Literal] 5 -# 1524| ValueCategory = prvalue -# 1524| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1524| Type = [IntType] int -# 1524| ValueCategory = lvalue -# 1525| getStmt(9): [ExprStmt] ExprStmt -# 1525| getExpr(): [AssignExpr] ... = ... +# 1523| getStmt(5): [ExprStmt] ExprStmt +# 1523| getExpr(): [AssignExpr] ... = ... +# 1523| Type = [DoubleType] double +# 1523| ValueCategory = lvalue +# 1523| getLValue(): [VariableAccess] d +# 1523| Type = [LValueReferenceType] double & +# 1523| ValueCategory = prvalue(load) +# 1523| getRValue(): [Literal] 4.0 +# 1523| Type = [DoubleType] double +# 1523| Value = [Literal] 4.0 +# 1523| ValueCategory = prvalue +# 1523| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1523| Type = [DoubleType] double +# 1523| ValueCategory = lvalue +# 1524| getStmt(6): [DeclStmt] declaration +# 1524| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1524| Type = [LValueReferenceType] double & +# 1524| getVariable().getInitializer(): [Initializer] initializer for rd +# 1524| getExpr(): [VariableAccess] d +# 1524| Type = [LValueReferenceType] double & +# 1524| ValueCategory = prvalue(load) +# 1524| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1524| Type = [LValueReferenceType] double & +# 1524| ValueCategory = prvalue +# 1524| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1524| Type = [DoubleType] double +# 1524| ValueCategory = lvalue +# 1525| getStmt(7): [DeclStmt] declaration +# 1525| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v # 1525| Type = [IntType] int -# 1525| ValueCategory = lvalue -# 1525| getLValue(): [PointerDereferenceExpr] * ... -# 1525| Type = [IntType] int -# 1525| ValueCategory = lvalue -# 1525| getOperand(): [VariableAccess] p -# 1525| Type = [LValueReferenceType] int *& +# 1525| getVariable().getInitializer(): [Initializer] initializer for v +# 1525| getExpr(): [VariableAccess] i +# 1525| Type = [LValueReferenceType] int & # 1525| ValueCategory = prvalue(load) -# 1525| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1525| Type = [IntPointerType] int * +# 1525| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1525| Type = [IntType] int # 1525| ValueCategory = prvalue(load) -# 1525| getRValue(): [Literal] 6 -# 1525| Type = [IntType] int -# 1525| Value = [Literal] 6 -# 1525| ValueCategory = prvalue -# 1526| getStmt(10): [DeclStmt] declaration -# 1526| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1526| Type = [LValueReferenceType] int & -# 1526| getVariable().getInitializer(): [Initializer] initializer for rr -# 1526| getExpr(): [VariableAccess] r -# 1526| Type = [LValueReferenceType] int & -# 1526| ValueCategory = prvalue(load) -# 1526| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1526| Type = [LValueReferenceType] int & -# 1526| ValueCategory = prvalue -# 1526| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1526| Type = [IntType] int -# 1526| ValueCategory = lvalue -# 1527| getStmt(11): [DeclStmt] declaration -# 1527| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr -# 1527| Type = [IntPointerType] int * -# 1527| getVariable().getInitializer(): [Initializer] initializer for pr -# 1527| getExpr(): [AddressOfExpr] & ... +# 1526| getStmt(8): [ExprStmt] ExprStmt +# 1526| getExpr(): [AssignExpr] ... = ... +# 1526| Type = [IntType] int +# 1526| ValueCategory = lvalue +# 1526| getLValue(): [VariableAccess] r +# 1526| Type = [LValueReferenceType] int & +# 1526| ValueCategory = prvalue(load) +# 1526| getRValue(): [Literal] 5 +# 1526| Type = [IntType] int +# 1526| Value = [Literal] 5 +# 1526| ValueCategory = prvalue +# 1526| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1526| Type = [IntType] int +# 1526| ValueCategory = lvalue +# 1527| getStmt(9): [ExprStmt] ExprStmt +# 1527| getExpr(): [AssignExpr] ... = ... +# 1527| Type = [IntType] int +# 1527| ValueCategory = lvalue +# 1527| getLValue(): [PointerDereferenceExpr] * ... +# 1527| Type = [IntType] int +# 1527| ValueCategory = lvalue +# 1527| getOperand(): [VariableAccess] p +# 1527| Type = [LValueReferenceType] int *& +# 1527| ValueCategory = prvalue(load) +# 1527| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1527| Type = [IntPointerType] int * -# 1527| ValueCategory = prvalue -# 1527| getOperand(): [VariableAccess] r -# 1527| Type = [LValueReferenceType] int & -# 1527| ValueCategory = prvalue(load) -# 1527| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1527| Type = [IntType] int -# 1527| ValueCategory = lvalue -# 1528| getStmt(12): [DeclStmt] declaration -# 1528| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1528| Type = [IntType] int -# 1528| getVariable().getInitializer(): [Initializer] initializer for w +# 1527| ValueCategory = prvalue(load) +# 1527| getRValue(): [Literal] 6 +# 1527| Type = [IntType] int +# 1527| Value = [Literal] 6 +# 1527| ValueCategory = prvalue +# 1528| getStmt(10): [DeclStmt] declaration +# 1528| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1528| Type = [LValueReferenceType] int & +# 1528| getVariable().getInitializer(): [Initializer] initializer for rr # 1528| getExpr(): [VariableAccess] r # 1528| Type = [LValueReferenceType] int & # 1528| ValueCategory = prvalue(load) -# 1528| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1528| Type = [IntType] int -# 1528| ValueCategory = prvalue(load) -# 1530| getStmt(3): [ReturnStmt] return ... -# 1539| [CopyAssignmentOperator] StructuredBindingTupleRefGet& StructuredBindingTupleRefGet::operator=(StructuredBindingTupleRefGet const&) -# 1539| : +# 1528| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1528| Type = [LValueReferenceType] int & +# 1528| ValueCategory = prvalue +# 1528| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1528| Type = [IntType] int +# 1528| ValueCategory = lvalue +# 1529| getStmt(11): [DeclStmt] declaration +# 1529| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr +# 1529| Type = [IntPointerType] int * +# 1529| getVariable().getInitializer(): [Initializer] initializer for pr +# 1529| getExpr(): [AddressOfExpr] & ... +# 1529| Type = [IntPointerType] int * +# 1529| ValueCategory = prvalue +# 1529| getOperand(): [VariableAccess] r +# 1529| Type = [LValueReferenceType] int & +# 1529| ValueCategory = prvalue(load) +# 1529| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1529| Type = [IntType] int +# 1529| ValueCategory = lvalue +# 1530| getStmt(12): [DeclStmt] declaration +# 1530| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1530| Type = [IntType] int +# 1530| getVariable().getInitializer(): [Initializer] initializer for w +# 1530| getExpr(): [VariableAccess] r +# 1530| Type = [LValueReferenceType] int & +# 1530| ValueCategory = prvalue(load) +# 1530| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1530| Type = [IntType] int +# 1530| ValueCategory = prvalue(load) +# 1532| getStmt(3): [ReturnStmt] return ... +# 1541| [CopyAssignmentOperator] StructuredBindingTupleRefGet& StructuredBindingTupleRefGet::operator=(StructuredBindingTupleRefGet const&) +# 1541| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1539| [Constructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1539| : -# 1539| : -# 1539| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1539| Type = [IntType] int -# 1539| ValueCategory = prvalue -# 1539| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1539| Type = [DoubleType] double -# 1539| ValueCategory = prvalue -# 1539| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1539| Type = [LValueReferenceType] int & -# 1539| ValueCategory = prvalue -# 1539| getEntryPoint(): [BlockStmt] { ... } -# 1539| getStmt(0): [ReturnStmt] return ... -# 1539| [CopyConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1539| : +# 1541| [Constructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1541| : +# 1541| : +# 1541| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1541| Type = [IntType] int +# 1541| ValueCategory = prvalue +# 1541| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1541| Type = [DoubleType] double +# 1541| ValueCategory = prvalue +# 1541| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1541| Type = [LValueReferenceType] int & +# 1541| ValueCategory = prvalue +# 1541| getEntryPoint(): [BlockStmt] { ... } +# 1541| getStmt(0): [ReturnStmt] return ... +# 1541| [CopyConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1541| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1539| : -# 1539| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1539| Type = [IntType] int -# 1539| ValueCategory = prvalue -# 1539| getExpr(): [ReferenceFieldAccess] i -# 1539| Type = [IntType] int -# 1539| ValueCategory = prvalue(load) -# 1539| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1539| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1539| ValueCategory = prvalue(load) -# 1539| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1539| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1539| ValueCategory = lvalue -# 1539| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1539| Type = [DoubleType] double -# 1539| ValueCategory = prvalue -# 1539| getExpr(): [ReferenceFieldAccess] d -# 1539| Type = [DoubleType] double -# 1539| ValueCategory = prvalue(load) -# 1539| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1539| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1539| ValueCategory = prvalue(load) -# 1539| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1539| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1539| ValueCategory = lvalue -# 1539| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1539| Type = [LValueReferenceType] int & -# 1539| ValueCategory = prvalue -# 1539| getExpr(): [ReferenceFieldAccess] r -# 1539| Type = [LValueReferenceType] int & -# 1539| ValueCategory = prvalue(load) -# 1539| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1539| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1539| ValueCategory = prvalue(load) -# 1539| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1539| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1539| ValueCategory = lvalue -# 1539| getEntryPoint(): [BlockStmt] { ... } -# 1539| getStmt(0): [ReturnStmt] return ... -# 1539| [MoveConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet&&) -# 1539| : +# 1541| : +# 1541| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1541| Type = [IntType] int +# 1541| ValueCategory = prvalue +# 1541| getExpr(): [ReferenceFieldAccess] i +# 1541| Type = [IntType] int +# 1541| ValueCategory = prvalue(load) +# 1541| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1541| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1541| ValueCategory = prvalue(load) +# 1541| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1541| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1541| ValueCategory = lvalue +# 1541| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1541| Type = [DoubleType] double +# 1541| ValueCategory = prvalue +# 1541| getExpr(): [ReferenceFieldAccess] d +# 1541| Type = [DoubleType] double +# 1541| ValueCategory = prvalue(load) +# 1541| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1541| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1541| ValueCategory = prvalue(load) +# 1541| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1541| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1541| ValueCategory = lvalue +# 1541| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1541| Type = [LValueReferenceType] int & +# 1541| ValueCategory = prvalue +# 1541| getExpr(): [ReferenceFieldAccess] r +# 1541| Type = [LValueReferenceType] int & +# 1541| ValueCategory = prvalue(load) +# 1541| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1541| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1541| ValueCategory = prvalue(load) +# 1541| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1541| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1541| ValueCategory = lvalue +# 1541| getEntryPoint(): [BlockStmt] { ... } +# 1541| getStmt(0): [ReturnStmt] return ... +# 1541| [MoveConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet&&) +# 1541| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingTupleRefGet && -# 1545| [MemberFunction,TemplateFunction] type& StructuredBindingTupleRefGet::get() -# 1545| : -# 1549| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) -# 1549| : +# 1547| [MemberFunction,TemplateFunction] type& StructuredBindingTupleRefGet::get() +# 1547| : +# 1551| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) +# 1551| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_size & -# 1549| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) -# 1549| : +# 1551| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) +# 1551| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_size && -# 1554| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1554| : +# 1556| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1556| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<0, StructuredBindingTupleRefGet> & -# 1554| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1554| : +# 1556| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1556| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<0, StructuredBindingTupleRefGet> && -# 1558| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1558| : +# 1560| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1560| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<1, StructuredBindingTupleRefGet> & -# 1558| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1558| : +# 1560| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1560| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<1, StructuredBindingTupleRefGet> && -# 1562| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1562| : +# 1564| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1564| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<2, StructuredBindingTupleRefGet> & -# 1562| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1562| : +# 1564| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1564| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<2, StructuredBindingTupleRefGet> && -# 1567| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1567| : -# 1567| getEntryPoint(): [BlockStmt] { ... } -# 1568| getStmt(0): [ReturnStmt] return ... -# 1568| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i -# 1568| Type = [IntType] int -# 1568| ValueCategory = lvalue -# 1568| getQualifier(): [ThisExpr] this -# 1568| Type = [PointerType] StructuredBindingTupleRefGet * -# 1568| ValueCategory = prvalue(load) +# 1569| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1569| : +# 1569| getEntryPoint(): [BlockStmt] { ... } +# 1570| getStmt(0): [ReturnStmt] return ... +# 1570| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i +# 1570| Type = [IntType] int +# 1570| ValueCategory = lvalue +# 1570| getQualifier(): [ThisExpr] this +# 1570| Type = [PointerType] StructuredBindingTupleRefGet * +# 1570| ValueCategory = prvalue(load) #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] int & #-----| ValueCategory = prvalue -# 1571| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1571| : -# 1571| getEntryPoint(): [BlockStmt] { ... } -# 1572| getStmt(0): [ReturnStmt] return ... -# 1572| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] d -# 1572| Type = [DoubleType] double -# 1572| ValueCategory = lvalue -# 1572| getQualifier(): [ThisExpr] this -# 1572| Type = [PointerType] StructuredBindingTupleRefGet * -# 1572| ValueCategory = prvalue(load) +# 1573| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1573| : +# 1573| getEntryPoint(): [BlockStmt] { ... } +# 1574| getStmt(0): [ReturnStmt] return ... +# 1574| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] d +# 1574| Type = [DoubleType] double +# 1574| ValueCategory = lvalue +# 1574| getQualifier(): [ThisExpr] this +# 1574| Type = [PointerType] StructuredBindingTupleRefGet * +# 1574| ValueCategory = prvalue(load) #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] double & #-----| ValueCategory = prvalue -# 1575| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleRefGet::get() -# 1575| : -# 1575| getEntryPoint(): [BlockStmt] { ... } -# 1576| getStmt(0): [ReturnStmt] return ... -# 1576| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r -# 1576| Type = [LValueReferenceType] int & -# 1576| ValueCategory = prvalue(load) -# 1576| getQualifier(): [ThisExpr] this -# 1576| Type = [PointerType] StructuredBindingTupleRefGet * -# 1576| ValueCategory = prvalue(load) -# 1576| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1576| Type = [LValueReferenceType] int & -# 1576| ValueCategory = prvalue -# 1576| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1576| Type = [IntType] int -# 1576| ValueCategory = lvalue -# 1579| [TopLevelFunction] void tuple_structured_binding_ref_get() -# 1579| : -# 1579| getEntryPoint(): [BlockStmt] { ... } -# 1580| getStmt(0): [DeclStmt] declaration -# 1580| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t -# 1580| Type = [Struct] StructuredBindingTupleRefGet -# 1580| getVariable().getInitializer(): [Initializer] initializer for t -# 1580| getExpr(): [ConstructorCall] call to StructuredBindingTupleRefGet -# 1580| Type = [VoidType] void -# 1580| ValueCategory = prvalue -# 1582| getStmt(1): [BlockStmt] { ... } -# 1583| getStmt(0): [DeclStmt] declaration -# 1583| getDeclarationEntry(0): (no string representation) -# 1583| Type = [Struct] StructuredBindingTupleRefGet -# 1583| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1583| getExpr(): [VariableAccess] t -# 1583| Type = [Struct] StructuredBindingTupleRefGet -# 1583| ValueCategory = prvalue(load) -# 1583| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1583| Type = [LValueReferenceType] type & +# 1577| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleRefGet::get() +# 1577| : +# 1577| getEntryPoint(): [BlockStmt] { ... } +# 1578| getStmt(0): [ReturnStmt] return ... +# 1578| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r +# 1578| Type = [LValueReferenceType] int & +# 1578| ValueCategory = prvalue(load) +# 1578| getQualifier(): [ThisExpr] this +# 1578| Type = [PointerType] StructuredBindingTupleRefGet * +# 1578| ValueCategory = prvalue(load) +# 1578| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1578| Type = [LValueReferenceType] int & +# 1578| ValueCategory = prvalue +# 1578| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1578| Type = [IntType] int +# 1578| ValueCategory = lvalue +# 1581| [TopLevelFunction] void tuple_structured_binding_ref_get() +# 1581| : +# 1581| getEntryPoint(): [BlockStmt] { ... } +# 1582| getStmt(0): [DeclStmt] declaration +# 1582| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 1582| Type = [Struct] StructuredBindingTupleRefGet +# 1582| getVariable().getInitializer(): [Initializer] initializer for t +# 1582| getExpr(): [ConstructorCall] call to StructuredBindingTupleRefGet +# 1582| Type = [VoidType] void +# 1582| ValueCategory = prvalue +# 1584| getStmt(1): [BlockStmt] { ... } +# 1585| getStmt(0): [DeclStmt] declaration +# 1585| getDeclarationEntry(0): (no string representation) +# 1585| Type = [Struct] StructuredBindingTupleRefGet +# 1585| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1585| getExpr(): [VariableAccess] t +# 1585| Type = [Struct] StructuredBindingTupleRefGet +# 1585| ValueCategory = prvalue(load) +# 1585| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1585| Type = [LValueReferenceType] type & #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1583| getExpr(): [FunctionCall] call to get -# 1583| Type = [LValueReferenceType] type & -# 1583| ValueCategory = prvalue -# 1583| getQualifier(): [VariableAccess] (unnamed local variable) -# 1583| Type = [Struct] StructuredBindingTupleRefGet -# 1583| ValueCategory = xvalue -# 1583| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1583| Type = [LValueReferenceType] type & -# 1583| ValueCategory = prvalue -# 1583| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1583| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1583| ValueCategory = lvalue -# 1583| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d -# 1583| Type = [LValueReferenceType] type & +# 1585| getExpr(): [FunctionCall] call to get +# 1585| Type = [LValueReferenceType] type & +# 1585| ValueCategory = prvalue +# 1585| getQualifier(): [VariableAccess] (unnamed local variable) +# 1585| Type = [Struct] StructuredBindingTupleRefGet +# 1585| ValueCategory = xvalue +# 1585| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1585| Type = [LValueReferenceType] type & +# 1585| ValueCategory = prvalue +# 1585| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1585| ValueCategory = lvalue +# 1585| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d +# 1585| Type = [LValueReferenceType] type & #-----| getVariable().getInitializer(): [Initializer] initializer for d -# 1583| getExpr(): [FunctionCall] call to get -# 1583| Type = [LValueReferenceType] type & -# 1583| ValueCategory = prvalue -# 1583| getQualifier(): [VariableAccess] (unnamed local variable) -# 1583| Type = [Struct] StructuredBindingTupleRefGet -# 1583| ValueCategory = xvalue -# 1583| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1583| Type = [LValueReferenceType] type & -# 1583| ValueCategory = prvalue -# 1583| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1583| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1583| ValueCategory = lvalue -# 1583| getDeclarationEntry(3): [VariableDeclarationEntry] definition of r -# 1583| Type = [NestedTypedefType,UsingAliasTypedefType] type -#-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1583| getExpr(): [FunctionCall] call to get -# 1583| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1583| ValueCategory = prvalue -# 1583| getQualifier(): [VariableAccess] (unnamed local variable) -# 1583| Type = [Struct] StructuredBindingTupleRefGet -# 1583| ValueCategory = xvalue -# 1583| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1583| Type = [LValueReferenceType] int & -# 1583| ValueCategory = prvalue -# 1583| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1583| Type = [IntType] int -# 1583| ValueCategory = lvalue -# 1584| getStmt(1): [ExprStmt] ExprStmt -# 1584| getExpr(): [AssignExpr] ... = ... -# 1584| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1584| ValueCategory = lvalue -# 1584| getLValue(): [VariableAccess] d -# 1584| Type = [LValueReferenceType] type & -# 1584| ValueCategory = prvalue(load) -# 1584| getRValue(): [Literal] 4.0 -# 1584| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1584| Value = [Literal] 4.0 -# 1584| ValueCategory = prvalue -# 1584| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1584| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1584| ValueCategory = lvalue -# 1585| getStmt(2): [DeclStmt] declaration -# 1585| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1585| Type = [LValueReferenceType] double & -# 1585| getVariable().getInitializer(): [Initializer] initializer for rd -# 1585| getExpr(): [VariableAccess] d +# 1585| getExpr(): [FunctionCall] call to get # 1585| Type = [LValueReferenceType] type & -# 1585| ValueCategory = prvalue(load) +# 1585| ValueCategory = prvalue +# 1585| getQualifier(): [VariableAccess] (unnamed local variable) +# 1585| Type = [Struct] StructuredBindingTupleRefGet +# 1585| ValueCategory = xvalue # 1585| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) # 1585| Type = [LValueReferenceType] type & # 1585| ValueCategory = prvalue # 1585| getExpr(): [ReferenceDereferenceExpr] (reference dereference) # 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1585| ValueCategory = lvalue -# 1586| getStmt(3): [DeclStmt] declaration -# 1586| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1586| Type = [IntType] int -# 1586| getVariable().getInitializer(): [Initializer] initializer for v -# 1586| getExpr(): [VariableAccess] i -# 1586| Type = [LValueReferenceType] type & -# 1586| ValueCategory = prvalue(load) -# 1586| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1586| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1586| ValueCategory = prvalue(load) -# 1587| getStmt(4): [ExprStmt] ExprStmt -# 1587| getExpr(): [AssignExpr] ... = ... -# 1587| Type = [IntType] int -# 1587| ValueCategory = lvalue -# 1587| getLValue(): [VariableAccess] r -# 1587| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1587| ValueCategory = prvalue(load) -# 1587| getRValue(): [Literal] 5 -# 1587| Type = [IntType] int -# 1587| Value = [Literal] 5 -# 1587| ValueCategory = prvalue -# 1587| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1587| Type = [IntType] int -# 1587| ValueCategory = lvalue -# 1588| getStmt(5): [DeclStmt] declaration -# 1588| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1588| Type = [LValueReferenceType] int & -# 1588| getVariable().getInitializer(): [Initializer] initializer for rr -# 1588| getExpr(): [VariableAccess] r +# 1585| getDeclarationEntry(3): [VariableDeclarationEntry] definition of r +# 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type +#-----| getVariable().getInitializer(): [Initializer] initializer for r +# 1585| getExpr(): [FunctionCall] call to get +# 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1585| ValueCategory = prvalue +# 1585| getQualifier(): [VariableAccess] (unnamed local variable) +# 1585| Type = [Struct] StructuredBindingTupleRefGet +# 1585| ValueCategory = xvalue +# 1585| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1585| Type = [LValueReferenceType] int & +# 1585| ValueCategory = prvalue +# 1585| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1585| Type = [IntType] int +# 1585| ValueCategory = lvalue +# 1586| getStmt(1): [ExprStmt] ExprStmt +# 1586| getExpr(): [AssignExpr] ... = ... +# 1586| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1586| ValueCategory = lvalue +# 1586| getLValue(): [VariableAccess] d +# 1586| Type = [LValueReferenceType] type & +# 1586| ValueCategory = prvalue(load) +# 1586| getRValue(): [Literal] 4.0 +# 1586| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1586| Value = [Literal] 4.0 +# 1586| ValueCategory = prvalue +# 1586| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1586| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1586| ValueCategory = lvalue +# 1587| getStmt(2): [DeclStmt] declaration +# 1587| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1587| Type = [LValueReferenceType] double & +# 1587| getVariable().getInitializer(): [Initializer] initializer for rd +# 1587| getExpr(): [VariableAccess] d +# 1587| Type = [LValueReferenceType] type & +# 1587| ValueCategory = prvalue(load) +# 1587| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1587| Type = [LValueReferenceType] type & +# 1587| ValueCategory = prvalue +# 1587| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1587| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1587| ValueCategory = lvalue +# 1588| getStmt(3): [DeclStmt] declaration +# 1588| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1588| Type = [IntType] int +# 1588| getVariable().getInitializer(): [Initializer] initializer for v +# 1588| getExpr(): [VariableAccess] i +# 1588| Type = [LValueReferenceType] type & +# 1588| ValueCategory = prvalue(load) +# 1588| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1588| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1588| ValueCategory = prvalue(load) -# 1588| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1588| Type = [LValueReferenceType] int & -# 1588| ValueCategory = prvalue -# 1588| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1588| Type = [IntType] int -# 1588| ValueCategory = lvalue -# 1589| getStmt(6): [DeclStmt] declaration -# 1589| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1589| getStmt(4): [ExprStmt] ExprStmt +# 1589| getExpr(): [AssignExpr] ... = ... # 1589| Type = [IntType] int -# 1589| getVariable().getInitializer(): [Initializer] initializer for w -# 1589| getExpr(): [VariableAccess] r -# 1589| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1589| ValueCategory = prvalue(load) -# 1589| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1589| Type = [IntType] int -# 1589| ValueCategory = prvalue(load) -# 1592| getStmt(2): [BlockStmt] { ... } -# 1593| getStmt(0): [DeclStmt] declaration -# 1593| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1593| Type = [Struct] StructuredBindingTupleRefGet -# 1593| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1593| getExpr(): [VariableAccess] t -# 1593| Type = [Struct] StructuredBindingTupleRefGet -# 1593| ValueCategory = prvalue(load) -# 1594| getStmt(1): [DeclStmt] declaration -# 1594| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1594| Type = [LValueReferenceType] type & -# 1594| getVariable().getInitializer(): [Initializer] initializer for i -# 1594| getExpr(): [FunctionCall] call to get -# 1594| Type = [LValueReferenceType] type & -# 1594| ValueCategory = prvalue -# 1594| getQualifier(): [VariableAccess] unnamed_local_variable -# 1594| Type = [Struct] StructuredBindingTupleRefGet -# 1594| ValueCategory = lvalue -# 1594| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1594| Type = [LValueReferenceType] type & -# 1594| ValueCategory = prvalue -# 1594| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1594| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1594| ValueCategory = lvalue -# 1595| getStmt(2): [DeclStmt] declaration -# 1595| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1595| Type = [LValueReferenceType] type & -# 1595| getVariable().getInitializer(): [Initializer] initializer for d -# 1595| getExpr(): [FunctionCall] call to get -# 1595| Type = [LValueReferenceType] type & -# 1595| ValueCategory = prvalue -# 1595| getQualifier(): [VariableAccess] unnamed_local_variable -# 1595| Type = [Struct] StructuredBindingTupleRefGet -# 1595| ValueCategory = lvalue -# 1595| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1595| Type = [LValueReferenceType] type & -# 1595| ValueCategory = prvalue -# 1595| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1595| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1595| ValueCategory = lvalue -# 1596| getStmt(3): [DeclStmt] declaration -# 1596| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1596| Type = [LValueReferenceType] int & -# 1596| getVariable().getInitializer(): [Initializer] initializer for r +# 1589| ValueCategory = lvalue +# 1589| getLValue(): [VariableAccess] r +# 1589| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1589| ValueCategory = prvalue(load) +# 1589| getRValue(): [Literal] 5 +# 1589| Type = [IntType] int +# 1589| Value = [Literal] 5 +# 1589| ValueCategory = prvalue +# 1589| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1589| Type = [IntType] int +# 1589| ValueCategory = lvalue +# 1590| getStmt(5): [DeclStmt] declaration +# 1590| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1590| Type = [LValueReferenceType] int & +# 1590| getVariable().getInitializer(): [Initializer] initializer for rr +# 1590| getExpr(): [VariableAccess] r +# 1590| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1590| ValueCategory = prvalue(load) +# 1590| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1590| Type = [LValueReferenceType] int & +# 1590| ValueCategory = prvalue +# 1590| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1590| Type = [IntType] int +# 1590| ValueCategory = lvalue +# 1591| getStmt(6): [DeclStmt] declaration +# 1591| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1591| Type = [IntType] int +# 1591| getVariable().getInitializer(): [Initializer] initializer for w +# 1591| getExpr(): [VariableAccess] r +# 1591| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1591| ValueCategory = prvalue(load) +# 1591| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1591| Type = [IntType] int +# 1591| ValueCategory = prvalue(load) +# 1594| getStmt(2): [BlockStmt] { ... } +# 1595| getStmt(0): [DeclStmt] declaration +# 1595| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1595| Type = [Struct] StructuredBindingTupleRefGet +# 1595| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1595| getExpr(): [VariableAccess] t +# 1595| Type = [Struct] StructuredBindingTupleRefGet +# 1595| ValueCategory = prvalue(load) +# 1596| getStmt(1): [DeclStmt] declaration +# 1596| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1596| Type = [LValueReferenceType] type & +# 1596| getVariable().getInitializer(): [Initializer] initializer for i # 1596| getExpr(): [FunctionCall] call to get -# 1596| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1596| Type = [LValueReferenceType] type & # 1596| ValueCategory = prvalue # 1596| getQualifier(): [VariableAccess] unnamed_local_variable # 1596| Type = [Struct] StructuredBindingTupleRefGet # 1596| ValueCategory = lvalue # 1596| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1596| Type = [LValueReferenceType] int & +# 1596| Type = [LValueReferenceType] type & # 1596| ValueCategory = prvalue # 1596| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1596| Type = [IntType] int +# 1596| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1596| ValueCategory = lvalue -# 1597| getStmt(4): [ExprStmt] ExprStmt -# 1597| getExpr(): [AssignExpr] ... = ... -# 1597| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1597| ValueCategory = lvalue -# 1597| getLValue(): [VariableAccess] d -# 1597| Type = [LValueReferenceType] type & -# 1597| ValueCategory = prvalue(load) -# 1597| getRValue(): [Literal] 4.0 -# 1597| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1597| Value = [Literal] 4.0 -# 1597| ValueCategory = prvalue -# 1597| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1597| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1597| ValueCategory = lvalue -# 1598| getStmt(5): [DeclStmt] declaration -# 1598| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1598| Type = [LValueReferenceType] double & -# 1598| getVariable().getInitializer(): [Initializer] initializer for rd -# 1598| getExpr(): [VariableAccess] d -# 1598| Type = [LValueReferenceType] type & -# 1598| ValueCategory = prvalue(load) +# 1597| getStmt(2): [DeclStmt] declaration +# 1597| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1597| Type = [LValueReferenceType] type & +# 1597| getVariable().getInitializer(): [Initializer] initializer for d +# 1597| getExpr(): [FunctionCall] call to get +# 1597| Type = [LValueReferenceType] type & +# 1597| ValueCategory = prvalue +# 1597| getQualifier(): [VariableAccess] unnamed_local_variable +# 1597| Type = [Struct] StructuredBindingTupleRefGet +# 1597| ValueCategory = lvalue +# 1597| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1597| Type = [LValueReferenceType] type & +# 1597| ValueCategory = prvalue +# 1597| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1597| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1597| ValueCategory = lvalue +# 1598| getStmt(3): [DeclStmt] declaration +# 1598| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1598| Type = [LValueReferenceType] int & +# 1598| getVariable().getInitializer(): [Initializer] initializer for r +# 1598| getExpr(): [FunctionCall] call to get +# 1598| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1598| ValueCategory = prvalue +# 1598| getQualifier(): [VariableAccess] unnamed_local_variable +# 1598| Type = [Struct] StructuredBindingTupleRefGet +# 1598| ValueCategory = lvalue # 1598| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1598| Type = [LValueReferenceType] type & +# 1598| Type = [LValueReferenceType] int & # 1598| ValueCategory = prvalue # 1598| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1598| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1598| Type = [IntType] int # 1598| ValueCategory = lvalue -# 1599| getStmt(6): [DeclStmt] declaration -# 1599| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1599| Type = [IntType] int -# 1599| getVariable().getInitializer(): [Initializer] initializer for v -# 1599| getExpr(): [VariableAccess] i -# 1599| Type = [LValueReferenceType] type & -# 1599| ValueCategory = prvalue(load) -# 1599| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1599| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1599| ValueCategory = prvalue(load) -# 1600| getStmt(7): [ExprStmt] ExprStmt -# 1600| getExpr(): [AssignExpr] ... = ... -# 1600| Type = [IntType] int -# 1600| ValueCategory = lvalue -# 1600| getLValue(): [VariableAccess] r -# 1600| Type = [LValueReferenceType] int & -# 1600| ValueCategory = prvalue(load) -# 1600| getRValue(): [Literal] 5 -# 1600| Type = [IntType] int -# 1600| Value = [Literal] 5 -# 1600| ValueCategory = prvalue -# 1600| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1600| Type = [IntType] int -# 1600| ValueCategory = lvalue -# 1601| getStmt(8): [DeclStmt] declaration -# 1601| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1601| Type = [LValueReferenceType] int & -# 1601| getVariable().getInitializer(): [Initializer] initializer for rr -# 1601| getExpr(): [VariableAccess] r -# 1601| Type = [LValueReferenceType] int & +# 1599| getStmt(4): [ExprStmt] ExprStmt +# 1599| getExpr(): [AssignExpr] ... = ... +# 1599| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1599| ValueCategory = lvalue +# 1599| getLValue(): [VariableAccess] d +# 1599| Type = [LValueReferenceType] type & +# 1599| ValueCategory = prvalue(load) +# 1599| getRValue(): [Literal] 4.0 +# 1599| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1599| Value = [Literal] 4.0 +# 1599| ValueCategory = prvalue +# 1599| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1599| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1599| ValueCategory = lvalue +# 1600| getStmt(5): [DeclStmt] declaration +# 1600| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1600| Type = [LValueReferenceType] double & +# 1600| getVariable().getInitializer(): [Initializer] initializer for rd +# 1600| getExpr(): [VariableAccess] d +# 1600| Type = [LValueReferenceType] type & +# 1600| ValueCategory = prvalue(load) +# 1600| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1600| Type = [LValueReferenceType] type & +# 1600| ValueCategory = prvalue +# 1600| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1600| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1600| ValueCategory = lvalue +# 1601| getStmt(6): [DeclStmt] declaration +# 1601| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1601| Type = [IntType] int +# 1601| getVariable().getInitializer(): [Initializer] initializer for v +# 1601| getExpr(): [VariableAccess] i +# 1601| Type = [LValueReferenceType] type & +# 1601| ValueCategory = prvalue(load) +# 1601| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1601| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1601| ValueCategory = prvalue(load) -# 1601| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1601| Type = [LValueReferenceType] int & -# 1601| ValueCategory = prvalue -# 1601| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1601| Type = [IntType] int -# 1601| ValueCategory = lvalue -# 1602| getStmt(9): [DeclStmt] declaration -# 1602| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1602| getStmt(7): [ExprStmt] ExprStmt +# 1602| getExpr(): [AssignExpr] ... = ... # 1602| Type = [IntType] int -# 1602| getVariable().getInitializer(): [Initializer] initializer for w -# 1602| getExpr(): [VariableAccess] r -# 1602| Type = [LValueReferenceType] int & -# 1602| ValueCategory = prvalue(load) -# 1602| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1602| Type = [IntType] int -# 1602| ValueCategory = prvalue(load) -# 1604| getStmt(3): [ReturnStmt] return ... -# 1606| [CopyAssignmentOperator] StructuredBindingTupleNoRefGet& StructuredBindingTupleNoRefGet::operator=(StructuredBindingTupleNoRefGet const&) -# 1606| : +# 1602| ValueCategory = lvalue +# 1602| getLValue(): [VariableAccess] r +# 1602| Type = [LValueReferenceType] int & +# 1602| ValueCategory = prvalue(load) +# 1602| getRValue(): [Literal] 5 +# 1602| Type = [IntType] int +# 1602| Value = [Literal] 5 +# 1602| ValueCategory = prvalue +# 1602| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1602| Type = [IntType] int +# 1602| ValueCategory = lvalue +# 1603| getStmt(8): [DeclStmt] declaration +# 1603| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1603| Type = [LValueReferenceType] int & +# 1603| getVariable().getInitializer(): [Initializer] initializer for rr +# 1603| getExpr(): [VariableAccess] r +# 1603| Type = [LValueReferenceType] int & +# 1603| ValueCategory = prvalue(load) +# 1603| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1603| Type = [LValueReferenceType] int & +# 1603| ValueCategory = prvalue +# 1603| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1603| Type = [IntType] int +# 1603| ValueCategory = lvalue +# 1604| getStmt(9): [DeclStmt] declaration +# 1604| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1604| Type = [IntType] int +# 1604| getVariable().getInitializer(): [Initializer] initializer for w +# 1604| getExpr(): [VariableAccess] r +# 1604| Type = [LValueReferenceType] int & +# 1604| ValueCategory = prvalue(load) +# 1604| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1604| Type = [IntType] int +# 1604| ValueCategory = prvalue(load) +# 1606| getStmt(3): [ReturnStmt] return ... +# 1608| [CopyAssignmentOperator] StructuredBindingTupleNoRefGet& StructuredBindingTupleNoRefGet::operator=(StructuredBindingTupleNoRefGet const&) +# 1608| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet & -# 1606| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1606| : -# 1606| : -# 1606| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1606| Type = [IntType] int -# 1606| ValueCategory = prvalue -# 1606| getInitializer(1): [ConstructorFieldInit] constructor init of field r -# 1606| Type = [LValueReferenceType] int & -# 1606| ValueCategory = prvalue -# 1606| getEntryPoint(): [BlockStmt] { ... } -# 1606| getStmt(0): [ReturnStmt] return ... -# 1606| [CopyConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet const&) -# 1606| : +# 1608| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1608| : +# 1608| : +# 1608| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1608| Type = [IntType] int +# 1608| ValueCategory = prvalue +# 1608| getInitializer(1): [ConstructorFieldInit] constructor init of field r +# 1608| Type = [LValueReferenceType] int & +# 1608| ValueCategory = prvalue +# 1608| getEntryPoint(): [BlockStmt] { ... } +# 1608| getStmt(0): [ReturnStmt] return ... +# 1608| [CopyConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet const&) +# 1608| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet & -# 1606| [MoveConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet&&) -# 1606| : +# 1608| [MoveConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet&&) +# 1608| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingTupleNoRefGet && -# 1611| [MemberFunction,TemplateFunction] type StructuredBindingTupleNoRefGet::get() -# 1611| : -# 1615| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) -# 1615| : +# 1613| [MemberFunction,TemplateFunction] type StructuredBindingTupleNoRefGet::get() +# 1613| : +# 1617| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) +# 1617| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_size & -# 1615| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) -# 1615| : +# 1617| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) +# 1617| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_size && -# 1620| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1620| : +# 1622| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1622| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<0, StructuredBindingTupleNoRefGet> & -# 1620| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1620| : +# 1622| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1622| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<0, StructuredBindingTupleNoRefGet> && -# 1624| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1624| : +# 1626| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1626| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<1, StructuredBindingTupleNoRefGet> & -# 1624| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1624| : +# 1626| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1626| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<1, StructuredBindingTupleNoRefGet> && -# 1628| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1628| : +# 1630| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1630| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<2, StructuredBindingTupleNoRefGet> & -# 1628| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1628| : +# 1630| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1630| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<2, StructuredBindingTupleNoRefGet> && -# 1633| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1633| : -# 1633| getEntryPoint(): [BlockStmt] { ... } -# 1634| getStmt(0): [ReturnStmt] return ... -# 1634| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i -# 1634| Type = [IntType] int -# 1634| ValueCategory = prvalue(load) -# 1634| getQualifier(): [ThisExpr] this -# 1634| Type = [PointerType] StructuredBindingTupleNoRefGet * -# 1634| ValueCategory = prvalue(load) -# 1637| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1637| : -# 1637| getEntryPoint(): [BlockStmt] { ... } -# 1638| getStmt(0): [ReturnStmt] return ... -# 1638| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r -# 1638| Type = [LValueReferenceType] int & -# 1638| ValueCategory = prvalue(load) -# 1638| getQualifier(): [ThisExpr] this -# 1638| Type = [PointerType] StructuredBindingTupleNoRefGet * -# 1638| ValueCategory = prvalue(load) -# 1638| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1638| Type = [LValueReferenceType] int & -# 1638| ValueCategory = prvalue -# 1638| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1638| Type = [IntType] int -# 1638| ValueCategory = lvalue -# 1641| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1641| : -# 1641| getEntryPoint(): [BlockStmt] { ... } -# 1642| getStmt(0): [ReturnStmt] return ... -# 1642| getExpr(): [Literal] 5 -# 1642| Type = [IntType] int -# 1642| Value = [Literal] 5 -# 1642| ValueCategory = prvalue -# 1642| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1642| Type = [LValueReferenceType] int & -# 1642| ValueCategory = prvalue -# 1642| getExpr(): [TemporaryObjectExpr] temporary object -# 1642| Type = [IntType] int -# 1642| ValueCategory = lvalue -# 1645| [TopLevelFunction] void tuple_structured_binding_no_ref_get() -# 1645| : -# 1645| getEntryPoint(): [BlockStmt] { ... } -# 1646| getStmt(0): [DeclStmt] declaration -# 1646| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t -# 1646| Type = [Struct] StructuredBindingTupleNoRefGet -# 1646| getVariable().getInitializer(): [Initializer] initializer for t -# 1646| getExpr(): [ConstructorCall] call to StructuredBindingTupleNoRefGet -# 1646| Type = [VoidType] void -# 1646| ValueCategory = prvalue -# 1648| getStmt(1): [BlockStmt] { ... } -# 1649| getStmt(0): [DeclStmt] declaration -# 1649| getDeclarationEntry(0): (no string representation) -# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1649| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1649| getExpr(): [VariableAccess] t -# 1649| Type = [Struct] StructuredBindingTupleNoRefGet -# 1649| ValueCategory = lvalue -# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1649| ValueCategory = prvalue -# 1649| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1649| Type = [RValueReferenceType] type && +# 1635| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1635| : +# 1635| getEntryPoint(): [BlockStmt] { ... } +# 1636| getStmt(0): [ReturnStmt] return ... +# 1636| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i +# 1636| Type = [IntType] int +# 1636| ValueCategory = prvalue(load) +# 1636| getQualifier(): [ThisExpr] this +# 1636| Type = [PointerType] StructuredBindingTupleNoRefGet * +# 1636| ValueCategory = prvalue(load) +# 1639| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1639| : +# 1639| getEntryPoint(): [BlockStmt] { ... } +# 1640| getStmt(0): [ReturnStmt] return ... +# 1640| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r +# 1640| Type = [LValueReferenceType] int & +# 1640| ValueCategory = prvalue(load) +# 1640| getQualifier(): [ThisExpr] this +# 1640| Type = [PointerType] StructuredBindingTupleNoRefGet * +# 1640| ValueCategory = prvalue(load) +# 1640| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1640| Type = [LValueReferenceType] int & +# 1640| ValueCategory = prvalue +# 1640| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1640| Type = [IntType] int +# 1640| ValueCategory = lvalue +# 1643| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1643| : +# 1643| getEntryPoint(): [BlockStmt] { ... } +# 1644| getStmt(0): [ReturnStmt] return ... +# 1644| getExpr(): [Literal] 5 +# 1644| Type = [IntType] int +# 1644| Value = [Literal] 5 +# 1644| ValueCategory = prvalue +# 1644| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1644| Type = [LValueReferenceType] int & +# 1644| ValueCategory = prvalue +# 1644| getExpr(): [TemporaryObjectExpr] temporary object +# 1644| Type = [IntType] int +# 1644| ValueCategory = lvalue +# 1647| [TopLevelFunction] void tuple_structured_binding_no_ref_get() +# 1647| : +# 1647| getEntryPoint(): [BlockStmt] { ... } +# 1648| getStmt(0): [DeclStmt] declaration +# 1648| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 1648| Type = [Struct] StructuredBindingTupleNoRefGet +# 1648| getVariable().getInitializer(): [Initializer] initializer for t +# 1648| getExpr(): [ConstructorCall] call to StructuredBindingTupleNoRefGet +# 1648| Type = [VoidType] void +# 1648| ValueCategory = prvalue +# 1650| getStmt(1): [BlockStmt] { ... } +# 1651| getStmt(0): [DeclStmt] declaration +# 1651| getDeclarationEntry(0): (no string representation) +# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1651| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1651| getExpr(): [VariableAccess] t +# 1651| Type = [Struct] StructuredBindingTupleNoRefGet +# 1651| ValueCategory = lvalue +# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1651| ValueCategory = prvalue +# 1651| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1651| Type = [RValueReferenceType] type && #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1649| getExpr(): [FunctionCall] call to get -# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1649| ValueCategory = prvalue -# 1649| getQualifier(): [VariableAccess] (unnamed local variable) -# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1649| ValueCategory = prvalue(load) -# 1649| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1649| Type = [Struct] StructuredBindingTupleNoRefGet -# 1649| ValueCategory = lvalue -# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1649| Type = [LValueReferenceType] type & -# 1649| ValueCategory = prvalue -# 1649| getExpr(): [TemporaryObjectExpr] temporary object -# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1649| ValueCategory = lvalue -# 1649| getDeclarationEntry(2): [VariableDeclarationEntry] definition of r -# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type -#-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1649| getExpr(): [FunctionCall] call to get -# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1649| ValueCategory = prvalue -# 1649| getQualifier(): [VariableAccess] (unnamed local variable) -# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1649| ValueCategory = prvalue(load) -# 1649| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1649| Type = [Struct] StructuredBindingTupleNoRefGet -# 1649| ValueCategory = lvalue -# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1649| Type = [LValueReferenceType] int & -# 1649| ValueCategory = prvalue -# 1649| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1649| Type = [IntType] int -# 1649| ValueCategory = lvalue -# 1649| getDeclarationEntry(3): [VariableDeclarationEntry] definition of rv -# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type -#-----| getVariable().getInitializer(): [Initializer] initializer for rv -# 1649| getExpr(): [FunctionCall] call to get -# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1649| ValueCategory = prvalue -# 1649| getQualifier(): [VariableAccess] (unnamed local variable) -# 1649| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1649| ValueCategory = prvalue(load) -# 1649| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1649| Type = [Struct] StructuredBindingTupleNoRefGet -# 1649| ValueCategory = lvalue -# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1649| Type = [LValueReferenceType] int & -# 1649| ValueCategory = prvalue -# 1649| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1649| Type = [IntType] int -# 1649| ValueCategory = xvalue -# 1650| getStmt(1): [ExprStmt] ExprStmt -# 1650| getExpr(): [AssignExpr] ... = ... -# 1650| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1650| ValueCategory = lvalue -# 1650| getLValue(): [VariableAccess] i -# 1650| Type = [RValueReferenceType] type && -# 1650| ValueCategory = prvalue(load) -# 1650| getRValue(): [Literal] 4 -# 1650| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1650| Value = [Literal] 4 -# 1650| ValueCategory = prvalue -# 1650| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1650| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1650| ValueCategory = lvalue -# 1651| getStmt(2): [DeclStmt] declaration -# 1651| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri -# 1651| Type = [LValueReferenceType] int & -# 1651| getVariable().getInitializer(): [Initializer] initializer for ri -# 1651| getExpr(): [VariableAccess] i -# 1651| Type = [RValueReferenceType] type && -# 1651| ValueCategory = prvalue(load) +# 1651| getExpr(): [FunctionCall] call to get +# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1651| ValueCategory = prvalue +# 1651| getQualifier(): [VariableAccess] (unnamed local variable) +# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1651| ValueCategory = prvalue(load) +# 1651| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| Type = [Struct] StructuredBindingTupleNoRefGet +# 1651| ValueCategory = lvalue # 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) # 1651| Type = [LValueReferenceType] type & # 1651| ValueCategory = prvalue -# 1651| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| getExpr(): [TemporaryObjectExpr] temporary object # 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1651| ValueCategory = lvalue -# 1652| getStmt(3): [DeclStmt] declaration -# 1652| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1652| Type = [IntType] int -# 1652| getVariable().getInitializer(): [Initializer] initializer for v -# 1652| getExpr(): [VariableAccess] i -# 1652| Type = [RValueReferenceType] type && -# 1652| ValueCategory = prvalue(load) -# 1652| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1652| ValueCategory = prvalue(load) -# 1653| getStmt(4): [ExprStmt] ExprStmt -# 1653| getExpr(): [AssignExpr] ... = ... -# 1653| Type = [IntType] int -# 1653| ValueCategory = lvalue -# 1653| getLValue(): [VariableAccess] r -# 1653| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1653| ValueCategory = prvalue(load) -# 1653| getRValue(): [Literal] 5 -# 1653| Type = [IntType] int -# 1653| Value = [Literal] 5 -# 1653| ValueCategory = prvalue -# 1653| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1653| Type = [IntType] int -# 1653| ValueCategory = lvalue -# 1654| getStmt(5): [DeclStmt] declaration -# 1654| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1654| Type = [LValueReferenceType] int & -# 1654| getVariable().getInitializer(): [Initializer] initializer for rr -# 1654| getExpr(): [VariableAccess] r +# 1651| getDeclarationEntry(2): [VariableDeclarationEntry] definition of r +# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type +#-----| getVariable().getInitializer(): [Initializer] initializer for r +# 1651| getExpr(): [FunctionCall] call to get +# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1651| ValueCategory = prvalue +# 1651| getQualifier(): [VariableAccess] (unnamed local variable) +# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1651| ValueCategory = prvalue(load) +# 1651| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| Type = [Struct] StructuredBindingTupleNoRefGet +# 1651| ValueCategory = lvalue +# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1651| Type = [LValueReferenceType] int & +# 1651| ValueCategory = prvalue +# 1651| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| Type = [IntType] int +# 1651| ValueCategory = lvalue +# 1651| getDeclarationEntry(3): [VariableDeclarationEntry] definition of rv +# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type +#-----| getVariable().getInitializer(): [Initializer] initializer for rv +# 1651| getExpr(): [FunctionCall] call to get +# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1651| ValueCategory = prvalue +# 1651| getQualifier(): [VariableAccess] (unnamed local variable) +# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1651| ValueCategory = prvalue(load) +# 1651| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| Type = [Struct] StructuredBindingTupleNoRefGet +# 1651| ValueCategory = lvalue +# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1651| Type = [LValueReferenceType] int & +# 1651| ValueCategory = prvalue +# 1651| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| Type = [IntType] int +# 1651| ValueCategory = xvalue +# 1652| getStmt(1): [ExprStmt] ExprStmt +# 1652| getExpr(): [AssignExpr] ... = ... +# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1652| ValueCategory = lvalue +# 1652| getLValue(): [VariableAccess] i +# 1652| Type = [RValueReferenceType] type && +# 1652| ValueCategory = prvalue(load) +# 1652| getRValue(): [Literal] 4 +# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1652| Value = [Literal] 4 +# 1652| ValueCategory = prvalue +# 1652| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1652| ValueCategory = lvalue +# 1653| getStmt(2): [DeclStmt] declaration +# 1653| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri +# 1653| Type = [LValueReferenceType] int & +# 1653| getVariable().getInitializer(): [Initializer] initializer for ri +# 1653| getExpr(): [VariableAccess] i +# 1653| Type = [RValueReferenceType] type && +# 1653| ValueCategory = prvalue(load) +# 1653| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1653| Type = [LValueReferenceType] type & +# 1653| ValueCategory = prvalue +# 1653| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1653| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1653| ValueCategory = lvalue +# 1654| getStmt(3): [DeclStmt] declaration +# 1654| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1654| Type = [IntType] int +# 1654| getVariable().getInitializer(): [Initializer] initializer for v +# 1654| getExpr(): [VariableAccess] i +# 1654| Type = [RValueReferenceType] type && +# 1654| ValueCategory = prvalue(load) +# 1654| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1654| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1654| ValueCategory = prvalue(load) -# 1654| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1654| Type = [LValueReferenceType] int & -# 1654| ValueCategory = prvalue -# 1654| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1654| Type = [IntType] int -# 1654| ValueCategory = lvalue -# 1655| getStmt(6): [DeclStmt] declaration -# 1655| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1655| getStmt(4): [ExprStmt] ExprStmt +# 1655| getExpr(): [AssignExpr] ... = ... # 1655| Type = [IntType] int -# 1655| getVariable().getInitializer(): [Initializer] initializer for w -# 1655| getExpr(): [VariableAccess] r -# 1655| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1655| ValueCategory = prvalue(load) -# 1655| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1655| Type = [IntType] int -# 1655| ValueCategory = prvalue(load) -# 1658| getStmt(2): [BlockStmt] { ... } -# 1659| getStmt(0): [DeclStmt] declaration -# 1659| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1659| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1659| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1659| getExpr(): [VariableAccess] t -# 1659| Type = [Struct] StructuredBindingTupleNoRefGet -# 1659| ValueCategory = lvalue -# 1659| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1659| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1659| ValueCategory = prvalue -# 1660| getStmt(1): [DeclStmt] declaration -# 1660| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1660| Type = [RValueReferenceType] type && -# 1660| getVariable().getInitializer(): [Initializer] initializer for i -# 1660| getExpr(): [FunctionCall] call to get -# 1660| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1660| ValueCategory = prvalue -# 1660| getQualifier(): [VariableAccess] unnamed_local_variable -# 1660| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1660| ValueCategory = prvalue(load) -# 1660| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1660| Type = [Struct] StructuredBindingTupleNoRefGet -# 1660| ValueCategory = lvalue -# 1660| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1660| Type = [LValueReferenceType] type & -# 1660| ValueCategory = prvalue -# 1660| getExpr(): [TemporaryObjectExpr] temporary object -# 1660| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1660| ValueCategory = lvalue -# 1661| getStmt(2): [DeclStmt] declaration -# 1661| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1661| Type = [LValueReferenceType] int & -# 1661| getVariable().getInitializer(): [Initializer] initializer for r -# 1661| getExpr(): [FunctionCall] call to get -# 1661| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1661| ValueCategory = prvalue -# 1661| getQualifier(): [VariableAccess] unnamed_local_variable -# 1661| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1661| ValueCategory = prvalue(load) -# 1661| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1661| Type = [Struct] StructuredBindingTupleNoRefGet -# 1661| ValueCategory = lvalue +# 1655| ValueCategory = lvalue +# 1655| getLValue(): [VariableAccess] r +# 1655| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1655| ValueCategory = prvalue(load) +# 1655| getRValue(): [Literal] 5 +# 1655| Type = [IntType] int +# 1655| Value = [Literal] 5 +# 1655| ValueCategory = prvalue +# 1655| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1655| Type = [IntType] int +# 1655| ValueCategory = lvalue +# 1656| getStmt(5): [DeclStmt] declaration +# 1656| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1656| Type = [LValueReferenceType] int & +# 1656| getVariable().getInitializer(): [Initializer] initializer for rr +# 1656| getExpr(): [VariableAccess] r +# 1656| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1656| ValueCategory = prvalue(load) +# 1656| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1656| Type = [LValueReferenceType] int & +# 1656| ValueCategory = prvalue +# 1656| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1656| Type = [IntType] int +# 1656| ValueCategory = lvalue +# 1657| getStmt(6): [DeclStmt] declaration +# 1657| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1657| Type = [IntType] int +# 1657| getVariable().getInitializer(): [Initializer] initializer for w +# 1657| getExpr(): [VariableAccess] r +# 1657| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1657| ValueCategory = prvalue(load) +# 1657| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1657| Type = [IntType] int +# 1657| ValueCategory = prvalue(load) +# 1660| getStmt(2): [BlockStmt] { ... } +# 1661| getStmt(0): [DeclStmt] declaration +# 1661| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1661| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1661| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1661| getExpr(): [VariableAccess] t +# 1661| Type = [Struct] StructuredBindingTupleNoRefGet +# 1661| ValueCategory = lvalue # 1661| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1661| Type = [LValueReferenceType] int & +# 1661| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & # 1661| ValueCategory = prvalue -# 1661| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1661| Type = [IntType] int -# 1661| ValueCategory = lvalue -# 1662| getStmt(3): [DeclStmt] declaration -# 1662| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rv -# 1662| Type = [RValueReferenceType] int && -# 1662| getVariable().getInitializer(): [Initializer] initializer for rv +# 1662| getStmt(1): [DeclStmt] declaration +# 1662| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1662| Type = [RValueReferenceType] type && +# 1662| getVariable().getInitializer(): [Initializer] initializer for i # 1662| getExpr(): [FunctionCall] call to get # 1662| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1662| ValueCategory = prvalue @@ -13061,113 +13172,151 @@ ir.cpp: # 1662| Type = [Struct] StructuredBindingTupleNoRefGet # 1662| ValueCategory = lvalue # 1662| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1662| Type = [LValueReferenceType] int & +# 1662| Type = [LValueReferenceType] type & # 1662| ValueCategory = prvalue -# 1662| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1662| Type = [IntType] int -# 1662| ValueCategory = xvalue -# 1663| getStmt(4): [ExprStmt] ExprStmt -# 1663| getExpr(): [AssignExpr] ... = ... -# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1663| ValueCategory = lvalue -# 1663| getLValue(): [VariableAccess] i -# 1663| Type = [RValueReferenceType] type && -# 1663| ValueCategory = prvalue(load) -# 1663| getRValue(): [Literal] 4 -# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1663| Value = [Literal] 4 -# 1663| ValueCategory = prvalue -# 1663| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1663| ValueCategory = lvalue -# 1664| getStmt(5): [DeclStmt] declaration -# 1664| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri -# 1664| Type = [LValueReferenceType] int & -# 1664| getVariable().getInitializer(): [Initializer] initializer for ri -# 1664| getExpr(): [VariableAccess] i -# 1664| Type = [RValueReferenceType] type && -# 1664| ValueCategory = prvalue(load) +# 1662| getExpr(): [TemporaryObjectExpr] temporary object +# 1662| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1662| ValueCategory = lvalue +# 1663| getStmt(2): [DeclStmt] declaration +# 1663| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1663| Type = [LValueReferenceType] int & +# 1663| getVariable().getInitializer(): [Initializer] initializer for r +# 1663| getExpr(): [FunctionCall] call to get +# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1663| ValueCategory = prvalue +# 1663| getQualifier(): [VariableAccess] unnamed_local_variable +# 1663| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1663| ValueCategory = prvalue(load) +# 1663| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1663| Type = [Struct] StructuredBindingTupleNoRefGet +# 1663| ValueCategory = lvalue +# 1663| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1663| Type = [LValueReferenceType] int & +# 1663| ValueCategory = prvalue +# 1663| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1663| Type = [IntType] int +# 1663| ValueCategory = lvalue +# 1664| getStmt(3): [DeclStmt] declaration +# 1664| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rv +# 1664| Type = [RValueReferenceType] int && +# 1664| getVariable().getInitializer(): [Initializer] initializer for rv +# 1664| getExpr(): [FunctionCall] call to get +# 1664| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1664| ValueCategory = prvalue +# 1664| getQualifier(): [VariableAccess] unnamed_local_variable +# 1664| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1664| ValueCategory = prvalue(load) +# 1664| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1664| Type = [Struct] StructuredBindingTupleNoRefGet +# 1664| ValueCategory = lvalue # 1664| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1664| Type = [LValueReferenceType] type & +# 1664| Type = [LValueReferenceType] int & # 1664| ValueCategory = prvalue # 1664| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1664| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1664| ValueCategory = lvalue -# 1665| getStmt(6): [DeclStmt] declaration -# 1665| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1665| Type = [IntType] int -# 1665| getVariable().getInitializer(): [Initializer] initializer for v -# 1665| getExpr(): [VariableAccess] i -# 1665| Type = [RValueReferenceType] type && -# 1665| ValueCategory = prvalue(load) -# 1665| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1665| ValueCategory = prvalue(load) -# 1666| getStmt(7): [ExprStmt] ExprStmt -# 1666| getExpr(): [AssignExpr] ... = ... -# 1666| Type = [IntType] int -# 1666| ValueCategory = lvalue -# 1666| getLValue(): [VariableAccess] r -# 1666| Type = [LValueReferenceType] int & -# 1666| ValueCategory = prvalue(load) -# 1666| getRValue(): [Literal] 5 -# 1666| Type = [IntType] int -# 1666| Value = [Literal] 5 -# 1666| ValueCategory = prvalue -# 1666| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1666| Type = [IntType] int -# 1666| ValueCategory = lvalue -# 1667| getStmt(8): [DeclStmt] declaration -# 1667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1667| Type = [LValueReferenceType] int & -# 1667| getVariable().getInitializer(): [Initializer] initializer for rr -# 1667| getExpr(): [VariableAccess] r -# 1667| Type = [LValueReferenceType] int & +# 1664| Type = [IntType] int +# 1664| ValueCategory = xvalue +# 1665| getStmt(4): [ExprStmt] ExprStmt +# 1665| getExpr(): [AssignExpr] ... = ... +# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1665| ValueCategory = lvalue +# 1665| getLValue(): [VariableAccess] i +# 1665| Type = [RValueReferenceType] type && +# 1665| ValueCategory = prvalue(load) +# 1665| getRValue(): [Literal] 4 +# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1665| Value = [Literal] 4 +# 1665| ValueCategory = prvalue +# 1665| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1665| ValueCategory = lvalue +# 1666| getStmt(5): [DeclStmt] declaration +# 1666| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri +# 1666| Type = [LValueReferenceType] int & +# 1666| getVariable().getInitializer(): [Initializer] initializer for ri +# 1666| getExpr(): [VariableAccess] i +# 1666| Type = [RValueReferenceType] type && +# 1666| ValueCategory = prvalue(load) +# 1666| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1666| Type = [LValueReferenceType] type & +# 1666| ValueCategory = prvalue +# 1666| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1666| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1666| ValueCategory = lvalue +# 1667| getStmt(6): [DeclStmt] declaration +# 1667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1667| Type = [IntType] int +# 1667| getVariable().getInitializer(): [Initializer] initializer for v +# 1667| getExpr(): [VariableAccess] i +# 1667| Type = [RValueReferenceType] type && # 1667| ValueCategory = prvalue(load) -# 1667| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1667| Type = [LValueReferenceType] int & -# 1667| ValueCategory = prvalue -# 1667| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1667| Type = [IntType] int -# 1667| ValueCategory = lvalue -# 1668| getStmt(9): [DeclStmt] declaration -# 1668| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1667| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1667| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1667| ValueCategory = prvalue(load) +# 1668| getStmt(7): [ExprStmt] ExprStmt +# 1668| getExpr(): [AssignExpr] ... = ... # 1668| Type = [IntType] int -# 1668| getVariable().getInitializer(): [Initializer] initializer for w -# 1668| getExpr(): [VariableAccess] r -# 1668| Type = [LValueReferenceType] int & -# 1668| ValueCategory = prvalue(load) -# 1668| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1668| Type = [IntType] int -# 1668| ValueCategory = prvalue(load) -# 1670| getStmt(3): [ReturnStmt] return ... -# 1672| [TopLevelFunction] void array_structured_binding_non_ref_init() -# 1672| : -# 1672| getEntryPoint(): [BlockStmt] { ... } -# 1673| getStmt(0): [DeclStmt] declaration -# 1673| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs -# 1673| Type = [ArrayType] int[2] -# 1673| getVariable().getInitializer(): [Initializer] initializer for xs -# 1673| getExpr(): [ArrayAggregateLiteral] {...} -# 1673| Type = [ArrayType] int[2] -# 1673| ValueCategory = prvalue -# 1673| getAnElementExpr(0): [Literal] 1 -# 1673| Type = [IntType] int -# 1673| Value = [Literal] 1 -# 1673| ValueCategory = prvalue -# 1673| getAnElementExpr(1): [Literal] 2 -# 1673| Type = [IntType] int -# 1673| Value = [Literal] 2 -# 1673| ValueCategory = prvalue -# 1674| getStmt(1): [DeclStmt] declaration -# 1674| getDeclarationEntry(0): (no string representation) -# 1674| Type = [ArrayType] int[2] -# 1674| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1674| getExpr(): [VariableAccess] xs -# 1674| Type = [ArrayType] int[2] -# 1674| ValueCategory = prvalue(load) -# 1674| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 -# 1674| Type = [IntType] int +# 1668| ValueCategory = lvalue +# 1668| getLValue(): [VariableAccess] r +# 1668| Type = [LValueReferenceType] int & +# 1668| ValueCategory = prvalue(load) +# 1668| getRValue(): [Literal] 5 +# 1668| Type = [IntType] int +# 1668| Value = [Literal] 5 +# 1668| ValueCategory = prvalue +# 1668| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1668| Type = [IntType] int +# 1668| ValueCategory = lvalue +# 1669| getStmt(8): [DeclStmt] declaration +# 1669| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1669| Type = [LValueReferenceType] int & +# 1669| getVariable().getInitializer(): [Initializer] initializer for rr +# 1669| getExpr(): [VariableAccess] r +# 1669| Type = [LValueReferenceType] int & +# 1669| ValueCategory = prvalue(load) +# 1669| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1669| Type = [LValueReferenceType] int & +# 1669| ValueCategory = prvalue +# 1669| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1669| Type = [IntType] int +# 1669| ValueCategory = lvalue +# 1670| getStmt(9): [DeclStmt] declaration +# 1670| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1670| Type = [IntType] int +# 1670| getVariable().getInitializer(): [Initializer] initializer for w +# 1670| getExpr(): [VariableAccess] r +# 1670| Type = [LValueReferenceType] int & +# 1670| ValueCategory = prvalue(load) +# 1670| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1670| Type = [IntType] int +# 1670| ValueCategory = prvalue(load) +# 1672| getStmt(3): [ReturnStmt] return ... +# 1674| [TopLevelFunction] void array_structured_binding_non_ref_init() +# 1674| : +# 1674| getEntryPoint(): [BlockStmt] { ... } +# 1675| getStmt(0): [DeclStmt] declaration +# 1675| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs +# 1675| Type = [ArrayType] int[2] +# 1675| getVariable().getInitializer(): [Initializer] initializer for xs +# 1675| getExpr(): [ArrayAggregateLiteral] {...} +# 1675| Type = [ArrayType] int[2] +# 1675| ValueCategory = prvalue +# 1675| getAnElementExpr(0): [Literal] 1 +# 1675| Type = [IntType] int +# 1675| Value = [Literal] 1 +# 1675| ValueCategory = prvalue +# 1675| getAnElementExpr(1): [Literal] 2 +# 1675| Type = [IntType] int +# 1675| Value = [Literal] 2 +# 1675| ValueCategory = prvalue +# 1676| getStmt(1): [DeclStmt] declaration +# 1676| getDeclarationEntry(0): (no string representation) +# 1676| Type = [ArrayType] int[2] +# 1676| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1676| getExpr(): [VariableAccess] xs +# 1676| Type = [ArrayType] int[2] +# 1676| ValueCategory = prvalue(load) +# 1676| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 +# 1676| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x0 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -13182,8 +13331,8 @@ ir.cpp: #-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion #-----| Type = [IntPointerType] int * #-----| ValueCategory = prvalue -# 1674| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 -# 1674| Type = [IntType] int +# 1676| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 +# 1676| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x1 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -13198,351 +13347,351 @@ ir.cpp: #-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion #-----| Type = [IntPointerType] int * #-----| ValueCategory = prvalue -# 1675| getStmt(2): [ReturnStmt] return ... -# 1677| [CopyAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj const&) -# 1677| : +# 1677| getStmt(2): [ReturnStmt] return ... +# 1679| [CopyAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj const&) +# 1679| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1677| [MoveAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj&&) -# 1677| : +# 1679| [MoveAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj&&) +# 1679| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CapturedLambdaMyObj && -# 1677| [CopyConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj const&) -# 1677| : +# 1679| [CopyConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj const&) +# 1679| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1677| [MoveConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj&&) -# 1677| : +# 1679| [MoveConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj&&) +# 1679| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CapturedLambdaMyObj && -# 1680| [Constructor] void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1680| : -# 1680| : -# 1680| getEntryPoint(): [BlockStmt] { ... } -# 1680| getStmt(0): [ReturnStmt] return ... -# 1683| [TopLevelFunction] void captured_lambda(int, int&, int&&) -# 1683| : -# 1683| getParameter(0): [Parameter] x -# 1683| Type = [IntType] int -# 1683| getParameter(1): [Parameter] y -# 1683| Type = [LValueReferenceType] int & -# 1683| getParameter(2): [Parameter] z -# 1683| Type = [RValueReferenceType] int && -# 1684| getEntryPoint(): [BlockStmt] { ... } -# 1685| getStmt(0): [DeclStmt] declaration -# 1685| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj1 -# 1685| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1685| getVariable().getInitializer(): [Initializer] initializer for obj1 -# 1685| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj -# 1685| Type = [VoidType] void -# 1685| ValueCategory = prvalue -# 1685| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1685| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1685| ValueCategory = prvalue -# 1685| getExpr(): [CStyleCast] (const CapturedLambdaMyObj)... -# 1685| Conversion = [GlvalueConversion] glvalue conversion -# 1685| Type = [SpecifiedType] const CapturedLambdaMyObj -# 1685| ValueCategory = lvalue -# 1685| getExpr(): [TemporaryObjectExpr] temporary object -# 1685| Type = [Class] CapturedLambdaMyObj -# 1685| ValueCategory = lvalue -# 1686| getStmt(1): [DeclStmt] declaration -# 1686| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj2 -# 1686| Type = [Class] CapturedLambdaMyObj -# 1686| getVariable().getInitializer(): [Initializer] initializer for obj2 -# 1686| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj -# 1686| Type = [VoidType] void -# 1686| ValueCategory = prvalue -# 1688| getStmt(2): [DeclStmt] declaration -# 1688| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_outer -# 1688| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1688| getVariable().getInitializer(): [Initializer] initializer for lambda_outer -# 1688| getExpr(): [LambdaExpression] [...](...){...} -# 1688| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1682| [Constructor] void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1682| : +# 1682| : +# 1682| getEntryPoint(): [BlockStmt] { ... } +# 1682| getStmt(0): [ReturnStmt] return ... +# 1685| [TopLevelFunction] void captured_lambda(int, int&, int&&) +# 1685| : +# 1685| getParameter(0): [Parameter] x +# 1685| Type = [IntType] int +# 1685| getParameter(1): [Parameter] y +# 1685| Type = [LValueReferenceType] int & +# 1685| getParameter(2): [Parameter] z +# 1685| Type = [RValueReferenceType] int && +# 1686| getEntryPoint(): [BlockStmt] { ... } +# 1687| getStmt(0): [DeclStmt] declaration +# 1687| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj1 +# 1687| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1687| getVariable().getInitializer(): [Initializer] initializer for obj1 +# 1687| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj +# 1687| Type = [VoidType] void +# 1687| ValueCategory = prvalue +# 1687| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1687| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1687| ValueCategory = prvalue +# 1687| getExpr(): [CStyleCast] (const CapturedLambdaMyObj)... +# 1687| Conversion = [GlvalueConversion] glvalue conversion +# 1687| Type = [SpecifiedType] const CapturedLambdaMyObj +# 1687| ValueCategory = lvalue +# 1687| getExpr(): [TemporaryObjectExpr] temporary object +# 1687| Type = [Class] CapturedLambdaMyObj +# 1687| ValueCategory = lvalue +# 1688| getStmt(1): [DeclStmt] declaration +# 1688| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj2 +# 1688| Type = [Class] CapturedLambdaMyObj +# 1688| getVariable().getInitializer(): [Initializer] initializer for obj2 +# 1688| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj +# 1688| Type = [VoidType] void # 1688| ValueCategory = prvalue -# 1688| getInitializer(): [ClassAggregateLiteral] {...} -# 1688| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1688| ValueCategory = prvalue -# 1688| getAFieldExpr(obj1): [VariableAccess] obj1 -# 1688| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1688| ValueCategory = prvalue(load) -# 1688| getAFieldExpr(obj2): [VariableAccess] obj2 -# 1688| Type = [Class] CapturedLambdaMyObj -# 1688| ValueCategory = prvalue(load) -# 1688| getAFieldExpr(x): [VariableAccess] x -# 1688| Type = [IntType] int -# 1688| ValueCategory = prvalue(load) -# 1688| getAFieldExpr(y): [VariableAccess] y -# 1688| Type = [LValueReferenceType] int & -# 1688| ValueCategory = prvalue(load) -# 1688| getAFieldExpr(z): [VariableAccess] z -# 1688| Type = [RValueReferenceType] int && -# 1688| ValueCategory = prvalue(load) -#-----| getAFieldExpr(obj1).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -#-----| Type = [SpecifiedType] const CapturedLambdaMyObj -#-----| ValueCategory = prvalue(load) -# 1690| getAFieldExpr(y).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1690| Type = [IntType] int +# 1690| getStmt(2): [DeclStmt] declaration +# 1690| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_outer +# 1690| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1690| getVariable().getInitializer(): [Initializer] initializer for lambda_outer +# 1690| getExpr(): [LambdaExpression] [...](...){...} +# 1690| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1690| ValueCategory = prvalue +# 1690| getInitializer(): [ClassAggregateLiteral] {...} +# 1690| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1690| ValueCategory = prvalue +# 1690| getAFieldExpr(obj1): [VariableAccess] obj1 +# 1690| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1690| ValueCategory = prvalue(load) +# 1690| getAFieldExpr(obj2): [VariableAccess] obj2 +# 1690| Type = [Class] CapturedLambdaMyObj # 1690| ValueCategory = prvalue(load) -# 1690| getAFieldExpr(z).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1690| getAFieldExpr(x): [VariableAccess] x # 1690| Type = [IntType] int # 1690| ValueCategory = prvalue(load) -# 1691| getStmt(3): [ReturnStmt] return ... -# 1688| [CopyAssignmentOperator] (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)& (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator=((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25) const&) -# 1688| : +# 1690| getAFieldExpr(y): [VariableAccess] y +# 1690| Type = [LValueReferenceType] int & +# 1690| ValueCategory = prvalue(load) +# 1690| getAFieldExpr(z): [VariableAccess] z +# 1690| Type = [RValueReferenceType] int && +# 1690| ValueCategory = prvalue(load) +#-----| getAFieldExpr(obj1).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [SpecifiedType] const CapturedLambdaMyObj +#-----| ValueCategory = prvalue(load) +# 1692| getAFieldExpr(y).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1692| Type = [IntType] int +# 1692| ValueCategory = prvalue(load) +# 1692| getAFieldExpr(z).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1692| Type = [IntType] int +# 1692| ValueCategory = prvalue(load) +# 1693| getStmt(3): [ReturnStmt] return ... +# 1690| [CopyAssignmentOperator] (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)& (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator=((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25) const&) +# 1690| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1688, col. 25 & -# 1688| [CopyConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25) const&) -# 1688| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1690, col. 25 & +# 1690| [CopyConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25) const&) +# 1690| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1688, col. 25 & -# 1688| [MoveConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)&&) -# 1688| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1690, col. 25 & +# 1690| [MoveConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)&&) +# 1690| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1688, col. 25 && -# 1688| [Constructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::(unnamed constructor)() -# 1688| : -# 1688| [ConstMemberFunction] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const -# 1688| : -# 1688| getEntryPoint(): [BlockStmt] { ... } -# 1689| getStmt(0): [DeclStmt] declaration -# 1689| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_inner -# 1689| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1689| getVariable().getInitializer(): [Initializer] initializer for lambda_inner -# 1689| getExpr(): [LambdaExpression] [...](...){...} -# 1689| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1689| ValueCategory = prvalue -# 1689| getInitializer(): [ClassAggregateLiteral] {...} -# 1689| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1689| ValueCategory = prvalue -# 1689| getAFieldExpr(obj1): [PointerFieldAccess] obj1 -# 1689| Type = [SpecifiedType] const CapturedLambdaMyObj -# 1689| ValueCategory = prvalue(load) -# 1689| getQualifier(): [ThisExpr] this -# 1689| Type = [PointerType] lambda [] type at line 1689, col. 29 * -# 1689| ValueCategory = prvalue(load) -# 1689| getAFieldExpr(obj2): [PointerFieldAccess] obj2 -# 1689| Type = [Class] CapturedLambdaMyObj -# 1689| ValueCategory = prvalue(load) -# 1689| getQualifier(): [ThisExpr] this -# 1689| Type = [PointerType] lambda [] type at line 1689, col. 29 * -# 1689| ValueCategory = prvalue(load) -# 1689| getAFieldExpr(x): [PointerFieldAccess] x -# 1689| Type = [IntType] int -# 1689| ValueCategory = prvalue(load) -# 1689| getQualifier(): [ThisExpr] this -# 1689| Type = [PointerType] const lambda [] type at line 1688, col. 25 * -# 1689| ValueCategory = prvalue(load) -# 1689| getAFieldExpr(y): [PointerFieldAccess] y -# 1689| Type = [IntType] int -# 1689| ValueCategory = prvalue(load) -# 1689| getQualifier(): [ThisExpr] this -# 1689| Type = [PointerType] const lambda [] type at line 1688, col. 25 * -# 1689| ValueCategory = prvalue(load) -# 1689| getAFieldExpr(z): [PointerFieldAccess] z -# 1689| Type = [IntType] int -# 1689| ValueCategory = prvalue(load) -# 1689| getQualifier(): [ThisExpr] this -# 1689| Type = [PointerType] const lambda [] type at line 1688, col. 25 * -# 1689| ValueCategory = prvalue(load) -# 1690| getStmt(1): [ReturnStmt] return ... -# 1689| [CopyAssignmentOperator] (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)& (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)::operator=((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29) const&) -# 1689| : +#-----| Type = [RValueReferenceType] lambda [] type at line 1690, col. 25 && +# 1690| [Constructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::(unnamed constructor)() +# 1690| : +# 1690| [ConstMemberFunction] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const +# 1690| : +# 1690| getEntryPoint(): [BlockStmt] { ... } +# 1691| getStmt(0): [DeclStmt] declaration +# 1691| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_inner +# 1691| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1691| getVariable().getInitializer(): [Initializer] initializer for lambda_inner +# 1691| getExpr(): [LambdaExpression] [...](...){...} +# 1691| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1691| ValueCategory = prvalue +# 1691| getInitializer(): [ClassAggregateLiteral] {...} +# 1691| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1691| ValueCategory = prvalue +# 1691| getAFieldExpr(obj1): [PointerFieldAccess] obj1 +# 1691| Type = [SpecifiedType] const CapturedLambdaMyObj +# 1691| ValueCategory = prvalue(load) +# 1691| getQualifier(): [ThisExpr] this +# 1691| Type = [PointerType] lambda [] type at line 1691, col. 29 * +# 1691| ValueCategory = prvalue(load) +# 1691| getAFieldExpr(obj2): [PointerFieldAccess] obj2 +# 1691| Type = [Class] CapturedLambdaMyObj +# 1691| ValueCategory = prvalue(load) +# 1691| getQualifier(): [ThisExpr] this +# 1691| Type = [PointerType] lambda [] type at line 1691, col. 29 * +# 1691| ValueCategory = prvalue(load) +# 1691| getAFieldExpr(x): [PointerFieldAccess] x +# 1691| Type = [IntType] int +# 1691| ValueCategory = prvalue(load) +# 1691| getQualifier(): [ThisExpr] this +# 1691| Type = [PointerType] const lambda [] type at line 1690, col. 25 * +# 1691| ValueCategory = prvalue(load) +# 1691| getAFieldExpr(y): [PointerFieldAccess] y +# 1691| Type = [IntType] int +# 1691| ValueCategory = prvalue(load) +# 1691| getQualifier(): [ThisExpr] this +# 1691| Type = [PointerType] const lambda [] type at line 1690, col. 25 * +# 1691| ValueCategory = prvalue(load) +# 1691| getAFieldExpr(z): [PointerFieldAccess] z +# 1691| Type = [IntType] int +# 1691| ValueCategory = prvalue(load) +# 1691| getQualifier(): [ThisExpr] this +# 1691| Type = [PointerType] const lambda [] type at line 1690, col. 25 * +# 1691| ValueCategory = prvalue(load) +# 1692| getStmt(1): [ReturnStmt] return ... +# 1691| [CopyAssignmentOperator] (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)& (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator=((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29) const&) +# 1691| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1689, col. 29 & -# 1689| [CopyConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29) const&) -# 1689| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1691, col. 29 & +# 1691| [CopyConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29) const&) +# 1691| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1689, col. 29 & -# 1689| [MoveConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)&&) -# 1689| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1691, col. 29 & +# 1691| [MoveConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)&&) +# 1691| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1689, col. 29 && -# 1689| [Constructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)::(unnamed constructor)() -# 1689| : -# 1689| [ConstMemberFunction] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)::operator()() const -# 1689| : -# 1689| getEntryPoint(): [BlockStmt] { ... } -# 1689| getStmt(0): [EmptyStmt] ; -# 1689| getStmt(1): [ReturnStmt] return ... -# 1693| [TopLevelFunction] int goto_on_same_line() -# 1693| : -# 1693| getEntryPoint(): [BlockStmt] { ... } -# 1694| getStmt(0): [DeclStmt] declaration -# 1694| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1694| Type = [IntType] int -# 1694| getVariable().getInitializer(): [Initializer] initializer for x -# 1694| getExpr(): [Literal] 42 -# 1694| Type = [IntType] int -# 1694| Value = [Literal] 42 -# 1694| ValueCategory = prvalue -# 1695| getStmt(1): [GotoStmt] goto ... -# 1695| getStmt(2): [LabelStmt] label ...: -# 1696| getStmt(3): [ReturnStmt] return ... -# 1696| getExpr(): [VariableAccess] x +#-----| Type = [RValueReferenceType] lambda [] type at line 1691, col. 29 && +# 1691| [Constructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::(unnamed constructor)() +# 1691| : +# 1691| [ConstMemberFunction] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator()() const +# 1691| : +# 1691| getEntryPoint(): [BlockStmt] { ... } +# 1691| getStmt(0): [EmptyStmt] ; +# 1691| getStmt(1): [ReturnStmt] return ... +# 1695| [TopLevelFunction] int goto_on_same_line() +# 1695| : +# 1695| getEntryPoint(): [BlockStmt] { ... } +# 1696| getStmt(0): [DeclStmt] declaration +# 1696| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1696| Type = [IntType] int -# 1696| ValueCategory = prvalue(load) -# 1699| [CopyAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass const&) -# 1699| : +# 1696| getVariable().getInitializer(): [Initializer] initializer for x +# 1696| getExpr(): [Literal] 42 +# 1696| Type = [IntType] int +# 1696| Value = [Literal] 42 +# 1696| ValueCategory = prvalue +# 1697| getStmt(1): [GotoStmt] goto ... +# 1697| getStmt(2): [LabelStmt] label ...: +# 1698| getStmt(3): [ReturnStmt] return ... +# 1698| getExpr(): [VariableAccess] x +# 1698| Type = [IntType] int +# 1698| ValueCategory = prvalue(load) +# 1701| [CopyAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass const&) +# 1701| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1699| [MoveAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass&&) -# 1699| : +# 1701| [MoveAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass&&) +# 1701| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] TrivialLambdaClass && -# 1701| [ConstMemberFunction] void TrivialLambdaClass::m() const -# 1701| : -# 1701| getEntryPoint(): [BlockStmt] { ... } -# 1702| getStmt(0): [DeclStmt] declaration -# 1702| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_outer -# 1702| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1702| getVariable().getInitializer(): [Initializer] initializer for l_m_outer -# 1702| getExpr(): [LambdaExpression] [...](...){...} -# 1702| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1702| ValueCategory = prvalue -# 1702| getInitializer(): [ClassAggregateLiteral] {...} -# 1702| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1702| ValueCategory = prvalue -# 1702| getAFieldExpr((captured this)): [PointerDereferenceExpr] * ... -# 1702| Type = [SpecifiedType] const TrivialLambdaClass -# 1702| ValueCategory = prvalue(load) -# 1702| getOperand(): [ThisExpr] this -# 1702| Type = [SpecifiedType] const TrivialLambdaClass *const -# 1702| ValueCategory = prvalue(load) -# 1709| getStmt(1): [ReturnStmt] return ... -# 1702| [CopyAssignmentOperator] (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)& (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator=((void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26) const&) -# 1702| : +# 1703| [ConstMemberFunction] void TrivialLambdaClass::m() const +# 1703| : +# 1703| getEntryPoint(): [BlockStmt] { ... } +# 1704| getStmt(0): [DeclStmt] declaration +# 1704| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_outer +# 1704| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1704| getVariable().getInitializer(): [Initializer] initializer for l_m_outer +# 1704| getExpr(): [LambdaExpression] [...](...){...} +# 1704| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1704| ValueCategory = prvalue +# 1704| getInitializer(): [ClassAggregateLiteral] {...} +# 1704| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1704| ValueCategory = prvalue +# 1704| getAFieldExpr((captured this)): [PointerDereferenceExpr] * ... +# 1704| Type = [SpecifiedType] const TrivialLambdaClass +# 1704| ValueCategory = prvalue(load) +# 1704| getOperand(): [ThisExpr] this +# 1704| Type = [SpecifiedType] const TrivialLambdaClass *const +# 1704| ValueCategory = prvalue(load) +# 1711| getStmt(1): [ReturnStmt] return ... +# 1704| [CopyAssignmentOperator] (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)& (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator=((void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26) const&) +# 1704| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1702, col. 26 & -# 1702| [CopyConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26) const&) -# 1702| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1704, col. 26 & +# 1704| [CopyConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26) const&) +# 1704| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1702, col. 26 & -# 1702| [MoveConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)&&) -# 1702| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1704, col. 26 & +# 1704| [MoveConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)&&) +# 1704| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1702, col. 26 && -# 1702| [Constructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::(unnamed constructor)() -# 1702| : -# 1702| [ConstMemberFunction] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const -# 1702| : -# 1702| getEntryPoint(): [BlockStmt] { ... } -# 1703| getStmt(0): [ExprStmt] ExprStmt -# 1703| getExpr(): [FunctionCall] call to m -# 1703| Type = [VoidType] void -# 1703| ValueCategory = prvalue -# 1703| getQualifier(): [AddressOfExpr] & ... -# 1703| Type = [PointerType] const TrivialLambdaClass * -# 1703| ValueCategory = prvalue -# 1703| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) -# 1703| Type = [SpecifiedType] const TrivialLambdaClass -# 1703| ValueCategory = lvalue -# 1703| getQualifier(): [ThisExpr] this -# 1703| Type = [PointerType] const lambda [] type at line 1702, col. 26 * -# 1703| ValueCategory = prvalue(load) -# 1705| getStmt(1): [DeclStmt] declaration -# 1705| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_inner -# 1705| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1705| getVariable().getInitializer(): [Initializer] initializer for l_m_inner -# 1705| getExpr(): [LambdaExpression] [...](...){...} -# 1705| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1705| ValueCategory = prvalue -# 1705| getInitializer(): [ClassAggregateLiteral] {...} -# 1705| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1705| ValueCategory = prvalue -# 1705| getAFieldExpr((captured this)): [PointerFieldAccess] (captured this) -# 1705| Type = [SpecifiedType] const TrivialLambdaClass -# 1705| ValueCategory = prvalue(load) -# 1705| getQualifier(): [ThisExpr] this -# 1705| Type = [PointerType] lambda [] type at line 1705, col. 30 * -# 1705| ValueCategory = prvalue(load) -# 1708| getStmt(2): [ReturnStmt] return ... -# 1705| [CopyAssignmentOperator] (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)& (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)::operator=((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30) const&) -# 1705| : +#-----| Type = [RValueReferenceType] lambda [] type at line 1704, col. 26 && +# 1704| [Constructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::(unnamed constructor)() +# 1704| : +# 1704| [ConstMemberFunction] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const +# 1704| : +# 1704| getEntryPoint(): [BlockStmt] { ... } +# 1705| getStmt(0): [ExprStmt] ExprStmt +# 1705| getExpr(): [FunctionCall] call to m +# 1705| Type = [VoidType] void +# 1705| ValueCategory = prvalue +# 1705| getQualifier(): [AddressOfExpr] & ... +# 1705| Type = [PointerType] const TrivialLambdaClass * +# 1705| ValueCategory = prvalue +# 1705| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) +# 1705| Type = [SpecifiedType] const TrivialLambdaClass +# 1705| ValueCategory = lvalue +# 1705| getQualifier(): [ThisExpr] this +# 1705| Type = [PointerType] const lambda [] type at line 1704, col. 26 * +# 1705| ValueCategory = prvalue(load) +# 1707| getStmt(1): [DeclStmt] declaration +# 1707| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_inner +# 1707| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1707| getVariable().getInitializer(): [Initializer] initializer for l_m_inner +# 1707| getExpr(): [LambdaExpression] [...](...){...} +# 1707| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1707| ValueCategory = prvalue +# 1707| getInitializer(): [ClassAggregateLiteral] {...} +# 1707| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1707| ValueCategory = prvalue +# 1707| getAFieldExpr((captured this)): [PointerFieldAccess] (captured this) +# 1707| Type = [SpecifiedType] const TrivialLambdaClass +# 1707| ValueCategory = prvalue(load) +# 1707| getQualifier(): [ThisExpr] this +# 1707| Type = [PointerType] lambda [] type at line 1707, col. 30 * +# 1707| ValueCategory = prvalue(load) +# 1710| getStmt(2): [ReturnStmt] return ... +# 1707| [CopyAssignmentOperator] (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)& (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator=((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30) const&) +# 1707| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1705, col. 30 & -# 1705| [CopyConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30) const&) -# 1705| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1707, col. 30 & +# 1707| [CopyConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30) const&) +# 1707| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1705, col. 30 & -# 1705| [MoveConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)&&) -# 1705| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1707, col. 30 & +# 1707| [MoveConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)&&) +# 1707| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1705, col. 30 && -# 1705| [Constructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)::(unnamed constructor)() -# 1705| : -# 1705| [ConstMemberFunction] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)::operator()() const -# 1705| : -# 1705| getEntryPoint(): [BlockStmt] { ... } -# 1706| getStmt(0): [ExprStmt] ExprStmt -# 1706| getExpr(): [FunctionCall] call to m -# 1706| Type = [VoidType] void -# 1706| ValueCategory = prvalue -# 1706| getQualifier(): [AddressOfExpr] & ... -# 1706| Type = [PointerType] const TrivialLambdaClass * -# 1706| ValueCategory = prvalue -# 1706| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) -# 1706| Type = [SpecifiedType] const TrivialLambdaClass -# 1706| ValueCategory = lvalue -# 1706| getQualifier(): [ThisExpr] this -# 1706| Type = [PointerType] const lambda [] type at line 1705, col. 30 * -# 1706| ValueCategory = prvalue(load) -# 1707| getStmt(1): [ReturnStmt] return ... -# 1712| [TopLevelFunction] void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1712| : -# 1712| getParameter(0): [Parameter] p1 -# 1712| Type = [Class] TrivialLambdaClass -# 1712| getParameter(1): [Parameter] p2 -# 1712| Type = [LValueReferenceType] TrivialLambdaClass & -# 1712| getParameter(2): [Parameter] p3 -# 1712| Type = [RValueReferenceType] TrivialLambdaClass && -# 1712| getEntryPoint(): [BlockStmt] { ... } -# 1713| getStmt(0): [DeclStmt] declaration -# 1713| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 -# 1713| Type = [SpecifiedType] const TrivialLambdaClass -# 1714| getStmt(1): [DeclStmt] declaration -# 1714| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l2 -# 1714| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1714| getVariable().getInitializer(): [Initializer] initializer for l2 -# 1714| getExpr(): [Literal] 0 -# 1714| Type = [Class] TrivialLambdaClass -# 1714| Value = [Literal] 0 -# 1714| ValueCategory = prvalue -# 1714| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1714| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1714| ValueCategory = prvalue -# 1714| getExpr(): [CStyleCast] (const TrivialLambdaClass)... -# 1714| Conversion = [GlvalueConversion] glvalue conversion -# 1714| Type = [SpecifiedType] const TrivialLambdaClass -# 1714| ValueCategory = lvalue -# 1714| getExpr(): [TemporaryObjectExpr] temporary object -# 1714| Type = [Class] TrivialLambdaClass -# 1714| ValueCategory = lvalue -# 1716| getStmt(2): [DeclStmt] declaration -# 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 -# 1716| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1716| getVariable().getInitializer(): [Initializer] initializer for l_outer1 -# 1716| getExpr(): [LambdaExpression] [...](...){...} -# 1716| Type = [Closure,LocalClass] decltype([...](...){...}) +#-----| Type = [RValueReferenceType] lambda [] type at line 1707, col. 30 && +# 1707| [Constructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::(unnamed constructor)() +# 1707| : +# 1707| [ConstMemberFunction] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator()() const +# 1707| : +# 1707| getEntryPoint(): [BlockStmt] { ... } +# 1708| getStmt(0): [ExprStmt] ExprStmt +# 1708| getExpr(): [FunctionCall] call to m +# 1708| Type = [VoidType] void +# 1708| ValueCategory = prvalue +# 1708| getQualifier(): [AddressOfExpr] & ... +# 1708| Type = [PointerType] const TrivialLambdaClass * +# 1708| ValueCategory = prvalue +# 1708| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) +# 1708| Type = [SpecifiedType] const TrivialLambdaClass +# 1708| ValueCategory = lvalue +# 1708| getQualifier(): [ThisExpr] this +# 1708| Type = [PointerType] const lambda [] type at line 1707, col. 30 * +# 1708| ValueCategory = prvalue(load) +# 1709| getStmt(1): [ReturnStmt] return ... +# 1714| [TopLevelFunction] void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1714| : +# 1714| getParameter(0): [Parameter] p1 +# 1714| Type = [Class] TrivialLambdaClass +# 1714| getParameter(1): [Parameter] p2 +# 1714| Type = [LValueReferenceType] TrivialLambdaClass & +# 1714| getParameter(2): [Parameter] p3 +# 1714| Type = [RValueReferenceType] TrivialLambdaClass && +# 1714| getEntryPoint(): [BlockStmt] { ... } +# 1715| getStmt(0): [DeclStmt] declaration +# 1715| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 +# 1715| Type = [SpecifiedType] const TrivialLambdaClass +# 1716| getStmt(1): [DeclStmt] declaration +# 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l2 +# 1716| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1716| getVariable().getInitializer(): [Initializer] initializer for l2 +# 1716| getExpr(): [Literal] 0 +# 1716| Type = [Class] TrivialLambdaClass +# 1716| Value = [Literal] 0 # 1716| ValueCategory = prvalue -# 1716| getInitializer(): [ClassAggregateLiteral] {...} -# 1716| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1716| ValueCategory = prvalue -# 1716| getAFieldExpr(p1): [VariableAccess] p1 +# 1716| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1716| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1716| ValueCategory = prvalue +# 1716| getExpr(): [CStyleCast] (const TrivialLambdaClass)... +# 1716| Conversion = [GlvalueConversion] glvalue conversion +# 1716| Type = [SpecifiedType] const TrivialLambdaClass +# 1716| ValueCategory = lvalue +# 1716| getExpr(): [TemporaryObjectExpr] temporary object # 1716| Type = [Class] TrivialLambdaClass -# 1716| ValueCategory = prvalue(load) -# 1716| getAFieldExpr(p2): [VariableAccess] p2 -# 1716| Type = [LValueReferenceType] TrivialLambdaClass & -# 1716| ValueCategory = prvalue(load) -# 1716| getAFieldExpr(p3): [VariableAccess] p3 -# 1716| Type = [RValueReferenceType] TrivialLambdaClass && -# 1716| ValueCategory = prvalue(load) -# 1716| getAFieldExpr(l1): [VariableAccess] l1 -# 1716| Type = [SpecifiedType] const TrivialLambdaClass -# 1716| ValueCategory = prvalue(load) -# 1716| getAFieldExpr(l2): [VariableAccess] l2 -# 1716| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1716| ValueCategory = prvalue(load) +# 1716| ValueCategory = lvalue +# 1718| getStmt(2): [DeclStmt] declaration +# 1718| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 +# 1718| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1718| getVariable().getInitializer(): [Initializer] initializer for l_outer1 +# 1718| getExpr(): [LambdaExpression] [...](...){...} +# 1718| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1718| ValueCategory = prvalue +# 1718| getInitializer(): [ClassAggregateLiteral] {...} +# 1718| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1718| ValueCategory = prvalue +# 1718| getAFieldExpr(p1): [VariableAccess] p1 +# 1718| Type = [Class] TrivialLambdaClass +# 1718| ValueCategory = prvalue(load) +# 1718| getAFieldExpr(p2): [VariableAccess] p2 +# 1718| Type = [LValueReferenceType] TrivialLambdaClass & +# 1718| ValueCategory = prvalue(load) +# 1718| getAFieldExpr(p3): [VariableAccess] p3 +# 1718| Type = [RValueReferenceType] TrivialLambdaClass && +# 1718| ValueCategory = prvalue(load) +# 1718| getAFieldExpr(l1): [VariableAccess] l1 +# 1718| Type = [SpecifiedType] const TrivialLambdaClass +# 1718| ValueCategory = prvalue(load) +# 1718| getAFieldExpr(l2): [VariableAccess] l2 +# 1718| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1718| ValueCategory = prvalue(load) #-----| getAFieldExpr(p2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [Class] TrivialLambdaClass #-----| ValueCategory = prvalue(load) @@ -13552,723 +13701,723 @@ ir.cpp: #-----| getAFieldExpr(l2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const TrivialLambdaClass #-----| ValueCategory = prvalue(load) -# 1719| getStmt(3): [ReturnStmt] return ... -# 1716| [CopyAssignmentOperator] (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)& (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator=((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21) const&) -# 1716| : +# 1721| getStmt(3): [ReturnStmt] return ... +# 1718| [CopyAssignmentOperator] (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)& (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator=((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21) const&) +# 1718| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1716, col. 21 & -# 1716| [CopyConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21) const&) -# 1716| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1718, col. 21 & +# 1718| [CopyConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21) const&) +# 1718| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1716, col. 21 & -# 1716| [MoveConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)&&) -# 1716| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1718, col. 21 & +# 1718| [MoveConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)&&) +# 1718| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1716, col. 21 && -# 1716| [Constructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::(unnamed constructor)() -# 1716| : -# 1716| [ConstMemberFunction] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const -# 1716| : -# 1716| getEntryPoint(): [BlockStmt] { ... } -# 1717| getStmt(0): [DeclStmt] declaration -# 1717| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_inner1 -# 1717| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1717| getVariable().getInitializer(): [Initializer] initializer for l_inner1 -# 1717| getExpr(): [LambdaExpression] [...](...){...} -# 1717| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1717| ValueCategory = prvalue -# 1717| getInitializer(): [ClassAggregateLiteral] {...} -# 1717| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1717| ValueCategory = prvalue -# 1717| getAFieldExpr(p1): [PointerFieldAccess] p1 -# 1717| Type = [Class] TrivialLambdaClass -# 1717| ValueCategory = prvalue(load) -# 1717| getQualifier(): [ThisExpr] this -# 1717| Type = [PointerType] lambda [] type at line 1717, col. 25 * -# 1717| ValueCategory = prvalue(load) -# 1718| getStmt(1): [ReturnStmt] return ... -# 1717| [CopyAssignmentOperator] (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)& (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)::operator=((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25) const&) -# 1717| : +#-----| Type = [RValueReferenceType] lambda [] type at line 1718, col. 21 && +# 1718| [Constructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::(unnamed constructor)() +# 1718| : +# 1718| [ConstMemberFunction] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const +# 1718| : +# 1718| getEntryPoint(): [BlockStmt] { ... } +# 1719| getStmt(0): [DeclStmt] declaration +# 1719| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_inner1 +# 1719| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1719| getVariable().getInitializer(): [Initializer] initializer for l_inner1 +# 1719| getExpr(): [LambdaExpression] [...](...){...} +# 1719| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1719| ValueCategory = prvalue +# 1719| getInitializer(): [ClassAggregateLiteral] {...} +# 1719| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1719| ValueCategory = prvalue +# 1719| getAFieldExpr(p1): [PointerFieldAccess] p1 +# 1719| Type = [Class] TrivialLambdaClass +# 1719| ValueCategory = prvalue(load) +# 1719| getQualifier(): [ThisExpr] this +# 1719| Type = [PointerType] lambda [] type at line 1719, col. 25 * +# 1719| ValueCategory = prvalue(load) +# 1720| getStmt(1): [ReturnStmt] return ... +# 1719| [CopyAssignmentOperator] (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)& (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator=((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25) const&) +# 1719| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1717, col. 25 & -# 1717| [CopyConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25) const&) -# 1717| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1719, col. 25 & +# 1719| [CopyConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25) const&) +# 1719| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1717, col. 25 & -# 1717| [MoveConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)&&) -# 1717| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1719, col. 25 & +# 1719| [MoveConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)&&) +# 1719| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1717, col. 25 && -# 1717| [Constructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)::(unnamed constructor)() -# 1717| : -# 1717| [ConstMemberFunction] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)::operator()() const -# 1717| : -# 1717| getEntryPoint(): [BlockStmt] { ... } -# 1717| getStmt(0): [ReturnStmt] return ... -# 1721| [CopyAssignmentOperator] CopyConstructorWithImplicitArgumentClass& CopyConstructorWithImplicitArgumentClass::operator=(CopyConstructorWithImplicitArgumentClass const&) -# 1721| : +#-----| Type = [RValueReferenceType] lambda [] type at line 1719, col. 25 && +# 1719| [Constructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::(unnamed constructor)() +# 1719| : +# 1719| [ConstMemberFunction] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator()() const +# 1719| : +# 1719| getEntryPoint(): [BlockStmt] { ... } +# 1719| getStmt(0): [ReturnStmt] return ... +# 1723| [CopyAssignmentOperator] CopyConstructorWithImplicitArgumentClass& CopyConstructorWithImplicitArgumentClass::operator=(CopyConstructorWithImplicitArgumentClass const&) +# 1723| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1724| [Constructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1724| : -# 1724| : -# 1724| getEntryPoint(): [BlockStmt] { ... } -# 1724| getStmt(0): [ReturnStmt] return ... -# 1725| [CopyConstructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1725| : -# 1725| getParameter(0): [Parameter] c -# 1725| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1725| : -# 1725| getEntryPoint(): [BlockStmt] { ... } -# 1726| getStmt(0): [ExprStmt] ExprStmt -# 1726| getExpr(): [AssignExpr] ... = ... -# 1726| Type = [IntType] int -# 1726| ValueCategory = lvalue -# 1726| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 1726| Type = [IntType] int -# 1726| ValueCategory = lvalue -# 1726| getQualifier(): [ThisExpr] this -# 1726| Type = [PointerType] CopyConstructorWithImplicitArgumentClass * -# 1726| ValueCategory = prvalue(load) -# 1726| getRValue(): [ReferenceFieldAccess] x -# 1726| Type = [IntType] int -# 1726| ValueCategory = prvalue(load) -# 1726| getQualifier(): [VariableAccess] c -# 1726| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1726| ValueCategory = prvalue(load) -# 1726| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1726| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1726| ValueCategory = lvalue -# 1727| getStmt(1): [ReturnStmt] return ... -# 1730| [CopyAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass const&) -# 1730| : +# 1726| [Constructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1726| : +# 1726| : +# 1726| getEntryPoint(): [BlockStmt] { ... } +# 1726| getStmt(0): [ReturnStmt] return ... +# 1727| [CopyConstructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1727| : +# 1727| getParameter(0): [Parameter] c +# 1727| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1727| : +# 1727| getEntryPoint(): [BlockStmt] { ... } +# 1728| getStmt(0): [ExprStmt] ExprStmt +# 1728| getExpr(): [AssignExpr] ... = ... +# 1728| Type = [IntType] int +# 1728| ValueCategory = lvalue +# 1728| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 1728| Type = [IntType] int +# 1728| ValueCategory = lvalue +# 1728| getQualifier(): [ThisExpr] this +# 1728| Type = [PointerType] CopyConstructorWithImplicitArgumentClass * +# 1728| ValueCategory = prvalue(load) +# 1728| getRValue(): [ReferenceFieldAccess] x +# 1728| Type = [IntType] int +# 1728| ValueCategory = prvalue(load) +# 1728| getQualifier(): [VariableAccess] c +# 1728| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1728| ValueCategory = prvalue(load) +# 1728| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1728| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1728| ValueCategory = lvalue +# 1729| getStmt(1): [ReturnStmt] return ... +# 1732| [CopyAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass const&) +# 1732| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithBitwiseCopyClass & -# 1730| [MoveAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass&&) -# 1730| : +# 1732| [MoveAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass&&) +# 1732| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorWithBitwiseCopyClass && -# 1730| [CopyConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass const&) -# 1730| : +# 1732| [CopyConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass const&) +# 1732| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithBitwiseCopyClass & -# 1730| [MoveConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass&&) -# 1730| : +# 1732| [MoveConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass&&) +# 1732| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorWithBitwiseCopyClass && -# 1733| [Constructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1733| : -# 1733| : -# 1733| getEntryPoint(): [BlockStmt] { ... } -# 1733| getStmt(0): [ReturnStmt] return ... -# 1736| [CopyAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass const&) -# 1736| : +# 1735| [Constructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1735| : +# 1735| : +# 1735| getEntryPoint(): [BlockStmt] { ... } +# 1735| getStmt(0): [ReturnStmt] return ... +# 1738| [CopyAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass const&) +# 1738| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1736| [MoveAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass&&) -# 1736| : +# 1738| [MoveAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass&&) +# 1738| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestNonVirtualClass && -# 1736| [CopyConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) -# 1736| : +# 1738| [CopyConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1738| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1736| : -# 1736| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass -# 1736| Type = [VoidType] void -# 1736| ValueCategory = prvalue -# 1736| getArgument(0): [VariableAccess] (unnamed parameter 0) -# 1736| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1736| ValueCategory = prvalue(load) -# 1736| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1736| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1736| ValueCategory = prvalue -# 1736| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... -# 1736| Conversion = [BaseClassConversion] base class conversion -# 1736| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1736| ValueCategory = lvalue -# 1736| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1736| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass -# 1736| ValueCategory = lvalue -# 1736| getInitializer(1): (no string representation) -# 1736| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass -# 1736| ValueCategory = prvalue -# 1736| getEntryPoint(): [BlockStmt] { ... } -# 1736| getStmt(0): [ReturnStmt] return ... -# 1736| [MoveConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass&&) -# 1736| : +# 1738| : +# 1738| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass +# 1738| Type = [VoidType] void +# 1738| ValueCategory = prvalue +# 1738| getArgument(0): [VariableAccess] (unnamed parameter 0) +# 1738| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1738| ValueCategory = prvalue(load) +# 1738| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1738| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1738| ValueCategory = prvalue +# 1738| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... +# 1738| Conversion = [BaseClassConversion] base class conversion +# 1738| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1738| ValueCategory = lvalue +# 1738| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1738| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass +# 1738| ValueCategory = lvalue +# 1738| getInitializer(1): (no string representation) +# 1738| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass +# 1738| ValueCategory = prvalue +# 1738| getEntryPoint(): [BlockStmt] { ... } +# 1738| getStmt(0): [ReturnStmt] return ... +# 1738| [MoveConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass&&) +# 1738| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestNonVirtualClass && -# 1740| [Constructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1740| : -# 1740| : -# 1740| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass -# 1740| Type = [VoidType] void -# 1740| ValueCategory = prvalue -# 1740| getInitializer(1): [ConstructorDirectInit] call to CopyConstructorWithBitwiseCopyClass -# 1740| Type = [VoidType] void -# 1740| ValueCategory = prvalue -# 1740| getEntryPoint(): [BlockStmt] { ... } -# 1740| getStmt(0): [ReturnStmt] return ... -# 1743| [CopyAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass const&) -# 1743| : +# 1742| [Constructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1742| : +# 1742| : +# 1742| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass +# 1742| Type = [VoidType] void +# 1742| ValueCategory = prvalue +# 1742| getInitializer(1): [ConstructorDirectInit] call to CopyConstructorWithBitwiseCopyClass +# 1742| Type = [VoidType] void +# 1742| ValueCategory = prvalue +# 1742| getEntryPoint(): [BlockStmt] { ... } +# 1742| getStmt(0): [ReturnStmt] return ... +# 1745| [CopyAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass const&) +# 1745| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1743| [MoveAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass&&) -# 1743| : +# 1745| [MoveAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass&&) +# 1745| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestVirtualClass && -# 1743| [CopyConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1743| : +# 1745| [CopyConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1745| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1743| : -# 1743| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass -# 1743| Type = [VoidType] void -# 1743| ValueCategory = prvalue -# 1743| getArgument(0): [VariableAccess] (unnamed parameter 0) -# 1743| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1743| ValueCategory = prvalue(load) -# 1743| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1743| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1743| ValueCategory = prvalue -# 1743| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... -# 1743| Conversion = [BaseClassConversion] base class conversion -# 1743| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1743| ValueCategory = lvalue -# 1743| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1743| Type = [SpecifiedType] const CopyConstructorTestVirtualClass -# 1743| ValueCategory = lvalue -# 1743| getInitializer(1): (no string representation) -# 1743| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass -# 1743| ValueCategory = prvalue -# 1743| getEntryPoint(): [BlockStmt] { ... } -# 1743| getStmt(0): [ReturnStmt] return ... -# 1743| [MoveConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass&&) -# 1743| : +# 1745| : +# 1745| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass +# 1745| Type = [VoidType] void +# 1745| ValueCategory = prvalue +# 1745| getArgument(0): [VariableAccess] (unnamed parameter 0) +# 1745| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1745| ValueCategory = prvalue(load) +# 1745| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1745| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1745| ValueCategory = prvalue +# 1745| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... +# 1745| Conversion = [BaseClassConversion] base class conversion +# 1745| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1745| ValueCategory = lvalue +# 1745| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1745| Type = [SpecifiedType] const CopyConstructorTestVirtualClass +# 1745| ValueCategory = lvalue +# 1745| getInitializer(1): (no string representation) +# 1745| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass +# 1745| ValueCategory = prvalue +# 1745| getEntryPoint(): [BlockStmt] { ... } +# 1745| getStmt(0): [ReturnStmt] return ... +# 1745| [MoveConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass&&) +# 1745| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestVirtualClass && -# 1747| [Constructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1747| : -# 1747| : -# 1747| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass -# 1747| Type = [VoidType] void -# 1747| ValueCategory = prvalue -# 1747| getInitializer(1): [ConstructorVirtualInit] call to CopyConstructorWithBitwiseCopyClass -# 1747| Type = [VoidType] void -# 1747| ValueCategory = prvalue -# 1747| getEntryPoint(): [BlockStmt] { ... } -# 1747| getStmt(0): [ReturnStmt] return ... -# 1750| [TopLevelFunction] int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1750| : -# 1751| getParameter(0): [Parameter] x -# 1751| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1752| getParameter(1): [Parameter] y -# 1752| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1752| getEntryPoint(): [BlockStmt] { ... } -# 1753| getStmt(0): [DeclStmt] declaration -# 1753| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cx -# 1753| Type = [Class] CopyConstructorTestNonVirtualClass -# 1753| getVariable().getInitializer(): [Initializer] initializer for cx -# 1753| getExpr(): [ConstructorCall] call to CopyConstructorTestNonVirtualClass -# 1753| Type = [VoidType] void -# 1753| ValueCategory = prvalue -# 1753| getArgument(0): [VariableAccess] x -# 1753| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1753| ValueCategory = prvalue(load) -# 1753| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1753| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1753| ValueCategory = prvalue -# 1753| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1753| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass -# 1753| ValueCategory = lvalue -# 1754| getStmt(1): [DeclStmt] declaration -# 1754| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cy -# 1754| Type = [Class] CopyConstructorTestVirtualClass -# 1754| getVariable().getInitializer(): [Initializer] initializer for cy -# 1754| getExpr(): [ConstructorCall] call to CopyConstructorTestVirtualClass -# 1754| Type = [VoidType] void -# 1754| ValueCategory = prvalue -# 1754| getArgument(0): [VariableAccess] y -# 1754| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1754| ValueCategory = prvalue(load) -# 1754| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1754| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1754| ValueCategory = prvalue -# 1754| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1754| Type = [SpecifiedType] const CopyConstructorTestVirtualClass -# 1754| ValueCategory = lvalue -# 1755| getStmt(2): [ReturnStmt] return ... -# 1757| [TopLevelFunction] void if_initialization(int) -# 1757| : -# 1757| getParameter(0): [Parameter] x -# 1757| Type = [IntType] int -# 1757| getEntryPoint(): [BlockStmt] { ... } -# 1758| getStmt(0): [IfStmt] if (...) ... -# 1758| getInitialization(): [DeclStmt] declaration -# 1758| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1758| Type = [IntType] int -# 1758| getVariable().getInitializer(): [Initializer] initializer for y -# 1758| getExpr(): [VariableAccess] x -# 1758| Type = [IntType] int -# 1758| ValueCategory = prvalue(load) -# 1758| getCondition(): [AddExpr] ... + ... -# 1758| Type = [IntType] int -# 1758| ValueCategory = prvalue -# 1758| getLeftOperand(): [VariableAccess] x -# 1758| Type = [IntType] int -# 1758| ValueCategory = prvalue(load) -# 1758| getRightOperand(): [Literal] 1 -# 1758| Type = [IntType] int -# 1758| Value = [Literal] 1 -# 1758| ValueCategory = prvalue -# 1758| getThen(): [BlockStmt] { ... } -# 1759| getStmt(0): [ExprStmt] ExprStmt -# 1759| getExpr(): [AssignExpr] ... = ... -# 1759| Type = [IntType] int -# 1759| ValueCategory = lvalue -# 1759| getLValue(): [VariableAccess] x -# 1759| Type = [IntType] int -# 1759| ValueCategory = lvalue -# 1759| getRValue(): [AddExpr] ... + ... -# 1759| Type = [IntType] int -# 1759| ValueCategory = prvalue -# 1759| getLeftOperand(): [VariableAccess] x -# 1759| Type = [IntType] int -# 1759| ValueCategory = prvalue(load) -# 1759| getRightOperand(): [VariableAccess] y -# 1759| Type = [IntType] int -# 1759| ValueCategory = prvalue(load) -# 1758| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1758| Conversion = [BoolConversion] conversion to bool -# 1758| Type = [BoolType] bool -# 1758| ValueCategory = prvalue -# 1762| getStmt(1): [DeclStmt] declaration -# 1762| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1762| Type = [IntType] int -# 1763| getStmt(2): [IfStmt] if (...) ... -# 1763| getInitialization(): [ExprStmt] ExprStmt -# 1763| getExpr(): [AssignExpr] ... = ... -# 1763| Type = [IntType] int -# 1763| ValueCategory = lvalue -# 1763| getLValue(): [VariableAccess] w -# 1763| Type = [IntType] int -# 1763| ValueCategory = lvalue -# 1763| getRValue(): [VariableAccess] x -# 1763| Type = [IntType] int -# 1763| ValueCategory = prvalue(load) -# 1763| getCondition(): [AddExpr] ... + ... -# 1763| Type = [IntType] int -# 1763| ValueCategory = prvalue -# 1763| getLeftOperand(): [VariableAccess] x -# 1763| Type = [IntType] int -# 1763| ValueCategory = prvalue(load) -# 1763| getRightOperand(): [Literal] 1 -# 1763| Type = [IntType] int -# 1763| Value = [Literal] 1 -# 1763| ValueCategory = prvalue -# 1763| getThen(): [BlockStmt] { ... } -# 1764| getStmt(0): [ExprStmt] ExprStmt -# 1764| getExpr(): [AssignExpr] ... = ... -# 1764| Type = [IntType] int -# 1764| ValueCategory = lvalue -# 1764| getLValue(): [VariableAccess] x -# 1764| Type = [IntType] int -# 1764| ValueCategory = lvalue -# 1764| getRValue(): [AddExpr] ... + ... -# 1764| Type = [IntType] int -# 1764| ValueCategory = prvalue -# 1764| getLeftOperand(): [VariableAccess] x -# 1764| Type = [IntType] int -# 1764| ValueCategory = prvalue(load) -# 1764| getRightOperand(): [VariableAccess] w -# 1764| Type = [IntType] int -# 1764| ValueCategory = prvalue(load) -# 1763| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1763| Conversion = [BoolConversion] conversion to bool -# 1763| Type = [BoolType] bool -# 1763| ValueCategory = prvalue -# 1767| getStmt(3): [IfStmt] if (...) ... -# 1767| getInitialization(): [ExprStmt] ExprStmt -# 1767| getExpr(): [AssignExpr] ... = ... -# 1767| Type = [IntType] int -# 1767| ValueCategory = lvalue -# 1767| getLValue(): [VariableAccess] w -# 1767| Type = [IntType] int -# 1767| ValueCategory = lvalue -# 1767| getRValue(): [VariableAccess] x -# 1767| Type = [IntType] int -# 1767| ValueCategory = prvalue(load) -# 1767| getCondition(): [ConditionDeclExpr] (condition decl) -# 1767| Type = [BoolType] bool -# 1767| ValueCategory = prvalue -# 1767| getVariableAccess(): [VariableAccess] w2 -# 1767| Type = [IntType] int -# 1767| ValueCategory = prvalue(load) -# 1767| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1767| Conversion = [BoolConversion] conversion to bool -# 1767| Type = [BoolType] bool -# 1767| ValueCategory = prvalue -# 1767| getThen(): [BlockStmt] { ... } -# 1768| getStmt(0): [ExprStmt] ExprStmt -# 1768| getExpr(): [AssignExpr] ... = ... -# 1768| Type = [IntType] int -# 1768| ValueCategory = lvalue -# 1768| getLValue(): [VariableAccess] x -# 1768| Type = [IntType] int -# 1768| ValueCategory = lvalue -# 1768| getRValue(): [AddExpr] ... + ... -# 1768| Type = [IntType] int -# 1768| ValueCategory = prvalue -# 1768| getLeftOperand(): [VariableAccess] x -# 1768| Type = [IntType] int -# 1768| ValueCategory = prvalue(load) -# 1768| getRightOperand(): [VariableAccess] w -# 1768| Type = [IntType] int -# 1768| ValueCategory = prvalue(load) -# 1771| getStmt(4): [IfStmt] if (...) ... -# 1771| getInitialization(): [DeclStmt] declaration -# 1771| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1771| Type = [IntType] int -# 1771| getVariable().getInitializer(): [Initializer] initializer for v -# 1771| getExpr(): [VariableAccess] x -# 1771| Type = [IntType] int -# 1771| ValueCategory = prvalue(load) -# 1771| getCondition(): [ConditionDeclExpr] (condition decl) -# 1771| Type = [BoolType] bool -# 1771| ValueCategory = prvalue -# 1771| getVariableAccess(): [VariableAccess] v2 -# 1771| Type = [IntType] int -# 1771| ValueCategory = prvalue(load) -# 1771| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1771| Conversion = [BoolConversion] conversion to bool -# 1771| Type = [BoolType] bool -# 1771| ValueCategory = prvalue -# 1771| getThen(): [BlockStmt] { ... } -# 1772| getStmt(0): [ExprStmt] ExprStmt -# 1772| getExpr(): [AssignExpr] ... = ... -# 1772| Type = [IntType] int -# 1772| ValueCategory = lvalue -# 1772| getLValue(): [VariableAccess] x -# 1772| Type = [IntType] int -# 1772| ValueCategory = lvalue -# 1772| getRValue(): [AddExpr] ... + ... -# 1772| Type = [IntType] int -# 1772| ValueCategory = prvalue -# 1772| getLeftOperand(): [VariableAccess] x -# 1772| Type = [IntType] int -# 1772| ValueCategory = prvalue(load) -# 1772| getRightOperand(): [VariableAccess] v -# 1772| Type = [IntType] int -# 1772| ValueCategory = prvalue(load) -# 1775| getStmt(5): [DeclStmt] declaration -# 1775| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1775| Type = [IntType] int -# 1775| getVariable().getInitializer(): [Initializer] initializer for z -# 1775| getExpr(): [VariableAccess] x -# 1775| Type = [IntType] int -# 1775| ValueCategory = prvalue(load) -# 1776| getStmt(6): [IfStmt] if (...) ... -# 1776| getCondition(): [VariableAccess] z -# 1776| Type = [IntType] int -# 1776| ValueCategory = prvalue(load) -# 1776| getThen(): [BlockStmt] { ... } -# 1777| getStmt(0): [ExprStmt] ExprStmt -# 1777| getExpr(): [AssignExpr] ... = ... +# 1749| [Constructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1749| : +# 1749| : +# 1749| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass +# 1749| Type = [VoidType] void +# 1749| ValueCategory = prvalue +# 1749| getInitializer(1): [ConstructorVirtualInit] call to CopyConstructorWithBitwiseCopyClass +# 1749| Type = [VoidType] void +# 1749| ValueCategory = prvalue +# 1749| getEntryPoint(): [BlockStmt] { ... } +# 1749| getStmt(0): [ReturnStmt] return ... +# 1752| [TopLevelFunction] int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1752| : +# 1753| getParameter(0): [Parameter] x +# 1753| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1754| getParameter(1): [Parameter] y +# 1754| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1754| getEntryPoint(): [BlockStmt] { ... } +# 1755| getStmt(0): [DeclStmt] declaration +# 1755| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cx +# 1755| Type = [Class] CopyConstructorTestNonVirtualClass +# 1755| getVariable().getInitializer(): [Initializer] initializer for cx +# 1755| getExpr(): [ConstructorCall] call to CopyConstructorTestNonVirtualClass +# 1755| Type = [VoidType] void +# 1755| ValueCategory = prvalue +# 1755| getArgument(0): [VariableAccess] x +# 1755| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1755| ValueCategory = prvalue(load) +# 1755| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1755| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1755| ValueCategory = prvalue +# 1755| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1755| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass +# 1755| ValueCategory = lvalue +# 1756| getStmt(1): [DeclStmt] declaration +# 1756| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cy +# 1756| Type = [Class] CopyConstructorTestVirtualClass +# 1756| getVariable().getInitializer(): [Initializer] initializer for cy +# 1756| getExpr(): [ConstructorCall] call to CopyConstructorTestVirtualClass +# 1756| Type = [VoidType] void +# 1756| ValueCategory = prvalue +# 1756| getArgument(0): [VariableAccess] y +# 1756| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1756| ValueCategory = prvalue(load) +# 1756| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1756| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1756| ValueCategory = prvalue +# 1756| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1756| Type = [SpecifiedType] const CopyConstructorTestVirtualClass +# 1756| ValueCategory = lvalue +# 1757| getStmt(2): [ReturnStmt] return ... +# 1759| [TopLevelFunction] void if_initialization(int) +# 1759| : +# 1759| getParameter(0): [Parameter] x +# 1759| Type = [IntType] int +# 1759| getEntryPoint(): [BlockStmt] { ... } +# 1760| getStmt(0): [IfStmt] if (...) ... +# 1760| getInitialization(): [DeclStmt] declaration +# 1760| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1760| Type = [IntType] int +# 1760| getVariable().getInitializer(): [Initializer] initializer for y +# 1760| getExpr(): [VariableAccess] x +# 1760| Type = [IntType] int +# 1760| ValueCategory = prvalue(load) +# 1760| getCondition(): [AddExpr] ... + ... +# 1760| Type = [IntType] int +# 1760| ValueCategory = prvalue +# 1760| getLeftOperand(): [VariableAccess] x +# 1760| Type = [IntType] int +# 1760| ValueCategory = prvalue(load) +# 1760| getRightOperand(): [Literal] 1 +# 1760| Type = [IntType] int +# 1760| Value = [Literal] 1 +# 1760| ValueCategory = prvalue +# 1760| getThen(): [BlockStmt] { ... } +# 1761| getStmt(0): [ExprStmt] ExprStmt +# 1761| getExpr(): [AssignExpr] ... = ... +# 1761| Type = [IntType] int +# 1761| ValueCategory = lvalue +# 1761| getLValue(): [VariableAccess] x +# 1761| Type = [IntType] int +# 1761| ValueCategory = lvalue +# 1761| getRValue(): [AddExpr] ... + ... +# 1761| Type = [IntType] int +# 1761| ValueCategory = prvalue +# 1761| getLeftOperand(): [VariableAccess] x +# 1761| Type = [IntType] int +# 1761| ValueCategory = prvalue(load) +# 1761| getRightOperand(): [VariableAccess] y +# 1761| Type = [IntType] int +# 1761| ValueCategory = prvalue(load) +# 1760| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1760| Conversion = [BoolConversion] conversion to bool +# 1760| Type = [BoolType] bool +# 1760| ValueCategory = prvalue +# 1764| getStmt(1): [DeclStmt] declaration +# 1764| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1764| Type = [IntType] int +# 1765| getStmt(2): [IfStmt] if (...) ... +# 1765| getInitialization(): [ExprStmt] ExprStmt +# 1765| getExpr(): [AssignExpr] ... = ... +# 1765| Type = [IntType] int +# 1765| ValueCategory = lvalue +# 1765| getLValue(): [VariableAccess] w +# 1765| Type = [IntType] int +# 1765| ValueCategory = lvalue +# 1765| getRValue(): [VariableAccess] x +# 1765| Type = [IntType] int +# 1765| ValueCategory = prvalue(load) +# 1765| getCondition(): [AddExpr] ... + ... +# 1765| Type = [IntType] int +# 1765| ValueCategory = prvalue +# 1765| getLeftOperand(): [VariableAccess] x +# 1765| Type = [IntType] int +# 1765| ValueCategory = prvalue(load) +# 1765| getRightOperand(): [Literal] 1 +# 1765| Type = [IntType] int +# 1765| Value = [Literal] 1 +# 1765| ValueCategory = prvalue +# 1765| getThen(): [BlockStmt] { ... } +# 1766| getStmt(0): [ExprStmt] ExprStmt +# 1766| getExpr(): [AssignExpr] ... = ... +# 1766| Type = [IntType] int +# 1766| ValueCategory = lvalue +# 1766| getLValue(): [VariableAccess] x +# 1766| Type = [IntType] int +# 1766| ValueCategory = lvalue +# 1766| getRValue(): [AddExpr] ... + ... +# 1766| Type = [IntType] int +# 1766| ValueCategory = prvalue +# 1766| getLeftOperand(): [VariableAccess] x +# 1766| Type = [IntType] int +# 1766| ValueCategory = prvalue(load) +# 1766| getRightOperand(): [VariableAccess] w +# 1766| Type = [IntType] int +# 1766| ValueCategory = prvalue(load) +# 1765| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1765| Conversion = [BoolConversion] conversion to bool +# 1765| Type = [BoolType] bool +# 1765| ValueCategory = prvalue +# 1769| getStmt(3): [IfStmt] if (...) ... +# 1769| getInitialization(): [ExprStmt] ExprStmt +# 1769| getExpr(): [AssignExpr] ... = ... +# 1769| Type = [IntType] int +# 1769| ValueCategory = lvalue +# 1769| getLValue(): [VariableAccess] w +# 1769| Type = [IntType] int +# 1769| ValueCategory = lvalue +# 1769| getRValue(): [VariableAccess] x +# 1769| Type = [IntType] int +# 1769| ValueCategory = prvalue(load) +# 1769| getCondition(): [ConditionDeclExpr] (condition decl) +# 1769| Type = [BoolType] bool +# 1769| ValueCategory = prvalue +# 1769| getVariableAccess(): [VariableAccess] w2 +# 1769| Type = [IntType] int +# 1769| ValueCategory = prvalue(load) +# 1769| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1769| Conversion = [BoolConversion] conversion to bool +# 1769| Type = [BoolType] bool +# 1769| ValueCategory = prvalue +# 1769| getThen(): [BlockStmt] { ... } +# 1770| getStmt(0): [ExprStmt] ExprStmt +# 1770| getExpr(): [AssignExpr] ... = ... +# 1770| Type = [IntType] int +# 1770| ValueCategory = lvalue +# 1770| getLValue(): [VariableAccess] x +# 1770| Type = [IntType] int +# 1770| ValueCategory = lvalue +# 1770| getRValue(): [AddExpr] ... + ... +# 1770| Type = [IntType] int +# 1770| ValueCategory = prvalue +# 1770| getLeftOperand(): [VariableAccess] x +# 1770| Type = [IntType] int +# 1770| ValueCategory = prvalue(load) +# 1770| getRightOperand(): [VariableAccess] w +# 1770| Type = [IntType] int +# 1770| ValueCategory = prvalue(load) +# 1773| getStmt(4): [IfStmt] if (...) ... +# 1773| getInitialization(): [DeclStmt] declaration +# 1773| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1773| Type = [IntType] int +# 1773| getVariable().getInitializer(): [Initializer] initializer for v +# 1773| getExpr(): [VariableAccess] x +# 1773| Type = [IntType] int +# 1773| ValueCategory = prvalue(load) +# 1773| getCondition(): [ConditionDeclExpr] (condition decl) +# 1773| Type = [BoolType] bool +# 1773| ValueCategory = prvalue +# 1773| getVariableAccess(): [VariableAccess] v2 +# 1773| Type = [IntType] int +# 1773| ValueCategory = prvalue(load) +# 1773| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1773| Conversion = [BoolConversion] conversion to bool +# 1773| Type = [BoolType] bool +# 1773| ValueCategory = prvalue +# 1773| getThen(): [BlockStmt] { ... } +# 1774| getStmt(0): [ExprStmt] ExprStmt +# 1774| getExpr(): [AssignExpr] ... = ... +# 1774| Type = [IntType] int +# 1774| ValueCategory = lvalue +# 1774| getLValue(): [VariableAccess] x +# 1774| Type = [IntType] int +# 1774| ValueCategory = lvalue +# 1774| getRValue(): [AddExpr] ... + ... +# 1774| Type = [IntType] int +# 1774| ValueCategory = prvalue +# 1774| getLeftOperand(): [VariableAccess] x +# 1774| Type = [IntType] int +# 1774| ValueCategory = prvalue(load) +# 1774| getRightOperand(): [VariableAccess] v +# 1774| Type = [IntType] int +# 1774| ValueCategory = prvalue(load) +# 1777| getStmt(5): [DeclStmt] declaration +# 1777| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1777| Type = [IntType] int +# 1777| getVariable().getInitializer(): [Initializer] initializer for z +# 1777| getExpr(): [VariableAccess] x # 1777| Type = [IntType] int -# 1777| ValueCategory = lvalue -# 1777| getLValue(): [VariableAccess] x -# 1777| Type = [IntType] int -# 1777| ValueCategory = lvalue -# 1777| getRValue(): [AddExpr] ... + ... -# 1777| Type = [IntType] int -# 1777| ValueCategory = prvalue -# 1777| getLeftOperand(): [VariableAccess] x -# 1777| Type = [IntType] int -# 1777| ValueCategory = prvalue(load) -# 1777| getRightOperand(): [VariableAccess] z -# 1777| Type = [IntType] int -# 1777| ValueCategory = prvalue(load) -# 1776| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1776| Conversion = [BoolConversion] conversion to bool -# 1776| Type = [BoolType] bool -# 1776| ValueCategory = prvalue -# 1780| getStmt(7): [IfStmt] if (...) ... -# 1780| getCondition(): [ConditionDeclExpr] (condition decl) -# 1780| Type = [BoolType] bool -# 1780| ValueCategory = prvalue -# 1780| getVariableAccess(): [VariableAccess] z2 -# 1780| Type = [IntType] int -# 1780| ValueCategory = prvalue(load) -# 1780| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1780| Conversion = [BoolConversion] conversion to bool -# 1780| Type = [BoolType] bool -# 1780| ValueCategory = prvalue -# 1780| getThen(): [BlockStmt] { ... } -# 1781| getStmt(0): [ExprStmt] ExprStmt -# 1781| getExpr(): [AssignAddExpr] ... += ... -# 1781| Type = [IntType] int -# 1781| ValueCategory = lvalue -# 1781| getLValue(): [VariableAccess] x -# 1781| Type = [IntType] int -# 1781| ValueCategory = lvalue -# 1781| getRValue(): [VariableAccess] z2 -# 1781| Type = [IntType] int -# 1781| ValueCategory = prvalue(load) -# 1783| getStmt(8): [ReturnStmt] return ... -# 1785| [TopLevelFunction] void switch_initialization(int) -# 1785| : -# 1785| getParameter(0): [Parameter] x -# 1785| Type = [IntType] int -# 1785| getEntryPoint(): [BlockStmt] { ... } -# 1786| getStmt(0): [SwitchStmt] switch (...) ... -# 1786| getInitialization(): [DeclStmt] declaration -# 1786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1786| Type = [IntType] int -# 1786| getVariable().getInitializer(): [Initializer] initializer for y -# 1786| getExpr(): [VariableAccess] x -# 1786| Type = [IntType] int -# 1786| ValueCategory = prvalue(load) -# 1786| getExpr(): [AddExpr] ... + ... -# 1786| Type = [IntType] int -# 1786| ValueCategory = prvalue -# 1786| getLeftOperand(): [VariableAccess] x -# 1786| Type = [IntType] int -# 1786| ValueCategory = prvalue(load) -# 1786| getRightOperand(): [Literal] 1 -# 1786| Type = [IntType] int -# 1786| Value = [Literal] 1 -# 1786| ValueCategory = prvalue -# 1786| getStmt(): [BlockStmt] { ... } -# 1787| getStmt(0): [SwitchCase] default: -# 1788| getStmt(1): [ExprStmt] ExprStmt -# 1788| getExpr(): [AssignExpr] ... = ... -# 1788| Type = [IntType] int -# 1788| ValueCategory = lvalue -# 1788| getLValue(): [VariableAccess] x -# 1788| Type = [IntType] int -# 1788| ValueCategory = lvalue -# 1788| getRValue(): [AddExpr] ... + ... +# 1777| ValueCategory = prvalue(load) +# 1778| getStmt(6): [IfStmt] if (...) ... +# 1778| getCondition(): [VariableAccess] z +# 1778| Type = [IntType] int +# 1778| ValueCategory = prvalue(load) +# 1778| getThen(): [BlockStmt] { ... } +# 1779| getStmt(0): [ExprStmt] ExprStmt +# 1779| getExpr(): [AssignExpr] ... = ... +# 1779| Type = [IntType] int +# 1779| ValueCategory = lvalue +# 1779| getLValue(): [VariableAccess] x +# 1779| Type = [IntType] int +# 1779| ValueCategory = lvalue +# 1779| getRValue(): [AddExpr] ... + ... +# 1779| Type = [IntType] int +# 1779| ValueCategory = prvalue +# 1779| getLeftOperand(): [VariableAccess] x +# 1779| Type = [IntType] int +# 1779| ValueCategory = prvalue(load) +# 1779| getRightOperand(): [VariableAccess] z +# 1779| Type = [IntType] int +# 1779| ValueCategory = prvalue(load) +# 1778| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1778| Conversion = [BoolConversion] conversion to bool +# 1778| Type = [BoolType] bool +# 1778| ValueCategory = prvalue +# 1782| getStmt(7): [IfStmt] if (...) ... +# 1782| getCondition(): [ConditionDeclExpr] (condition decl) +# 1782| Type = [BoolType] bool +# 1782| ValueCategory = prvalue +# 1782| getVariableAccess(): [VariableAccess] z2 +# 1782| Type = [IntType] int +# 1782| ValueCategory = prvalue(load) +# 1782| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1782| Conversion = [BoolConversion] conversion to bool +# 1782| Type = [BoolType] bool +# 1782| ValueCategory = prvalue +# 1782| getThen(): [BlockStmt] { ... } +# 1783| getStmt(0): [ExprStmt] ExprStmt +# 1783| getExpr(): [AssignAddExpr] ... += ... +# 1783| Type = [IntType] int +# 1783| ValueCategory = lvalue +# 1783| getLValue(): [VariableAccess] x +# 1783| Type = [IntType] int +# 1783| ValueCategory = lvalue +# 1783| getRValue(): [VariableAccess] z2 +# 1783| Type = [IntType] int +# 1783| ValueCategory = prvalue(load) +# 1785| getStmt(8): [ReturnStmt] return ... +# 1787| [TopLevelFunction] void switch_initialization(int) +# 1787| : +# 1787| getParameter(0): [Parameter] x +# 1787| Type = [IntType] int +# 1787| getEntryPoint(): [BlockStmt] { ... } +# 1788| getStmt(0): [SwitchStmt] switch (...) ... +# 1788| getInitialization(): [DeclStmt] declaration +# 1788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1788| Type = [IntType] int +# 1788| getVariable().getInitializer(): [Initializer] initializer for y +# 1788| getExpr(): [VariableAccess] x # 1788| Type = [IntType] int -# 1788| ValueCategory = prvalue -# 1788| getLeftOperand(): [VariableAccess] x -# 1788| Type = [IntType] int -# 1788| ValueCategory = prvalue(load) -# 1788| getRightOperand(): [VariableAccess] y -# 1788| Type = [IntType] int -# 1788| ValueCategory = prvalue(load) -# 1791| getStmt(1): [DeclStmt] declaration -# 1791| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1791| Type = [IntType] int -# 1792| getStmt(2): [SwitchStmt] switch (...) ... -# 1792| getInitialization(): [ExprStmt] ExprStmt -# 1792| getExpr(): [AssignExpr] ... = ... -# 1792| Type = [IntType] int -# 1792| ValueCategory = lvalue -# 1792| getLValue(): [VariableAccess] w -# 1792| Type = [IntType] int -# 1792| ValueCategory = lvalue -# 1792| getRValue(): [VariableAccess] x -# 1792| Type = [IntType] int -# 1792| ValueCategory = prvalue(load) -# 1792| getExpr(): [AddExpr] ... + ... -# 1792| Type = [IntType] int -# 1792| ValueCategory = prvalue -# 1792| getLeftOperand(): [VariableAccess] x -# 1792| Type = [IntType] int -# 1792| ValueCategory = prvalue(load) -# 1792| getRightOperand(): [Literal] 1 -# 1792| Type = [IntType] int -# 1792| Value = [Literal] 1 -# 1792| ValueCategory = prvalue -# 1792| getStmt(): [BlockStmt] { ... } -# 1793| getStmt(0): [SwitchCase] default: -# 1794| getStmt(1): [ExprStmt] ExprStmt -# 1794| getExpr(): [AssignExpr] ... = ... +# 1788| ValueCategory = prvalue(load) +# 1788| getExpr(): [AddExpr] ... + ... +# 1788| Type = [IntType] int +# 1788| ValueCategory = prvalue +# 1788| getLeftOperand(): [VariableAccess] x +# 1788| Type = [IntType] int +# 1788| ValueCategory = prvalue(load) +# 1788| getRightOperand(): [Literal] 1 +# 1788| Type = [IntType] int +# 1788| Value = [Literal] 1 +# 1788| ValueCategory = prvalue +# 1788| getStmt(): [BlockStmt] { ... } +# 1789| getStmt(0): [SwitchCase] default: +# 1790| getStmt(1): [ExprStmt] ExprStmt +# 1790| getExpr(): [AssignExpr] ... = ... +# 1790| Type = [IntType] int +# 1790| ValueCategory = lvalue +# 1790| getLValue(): [VariableAccess] x +# 1790| Type = [IntType] int +# 1790| ValueCategory = lvalue +# 1790| getRValue(): [AddExpr] ... + ... +# 1790| Type = [IntType] int +# 1790| ValueCategory = prvalue +# 1790| getLeftOperand(): [VariableAccess] x +# 1790| Type = [IntType] int +# 1790| ValueCategory = prvalue(load) +# 1790| getRightOperand(): [VariableAccess] y +# 1790| Type = [IntType] int +# 1790| ValueCategory = prvalue(load) +# 1793| getStmt(1): [DeclStmt] declaration +# 1793| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1793| Type = [IntType] int +# 1794| getStmt(2): [SwitchStmt] switch (...) ... +# 1794| getInitialization(): [ExprStmt] ExprStmt +# 1794| getExpr(): [AssignExpr] ... = ... +# 1794| Type = [IntType] int +# 1794| ValueCategory = lvalue +# 1794| getLValue(): [VariableAccess] w # 1794| Type = [IntType] int # 1794| ValueCategory = lvalue -# 1794| getLValue(): [VariableAccess] x -# 1794| Type = [IntType] int -# 1794| ValueCategory = lvalue -# 1794| getRValue(): [AddExpr] ... + ... -# 1794| Type = [IntType] int -# 1794| ValueCategory = prvalue -# 1794| getLeftOperand(): [VariableAccess] x -# 1794| Type = [IntType] int -# 1794| ValueCategory = prvalue(load) -# 1794| getRightOperand(): [VariableAccess] w -# 1794| Type = [IntType] int -# 1794| ValueCategory = prvalue(load) -# 1797| getStmt(3): [SwitchStmt] switch (...) ... -# 1797| getInitialization(): [ExprStmt] ExprStmt -# 1797| getExpr(): [AssignExpr] ... = ... -# 1797| Type = [IntType] int -# 1797| ValueCategory = lvalue -# 1797| getLValue(): [VariableAccess] w -# 1797| Type = [IntType] int -# 1797| ValueCategory = lvalue -# 1797| getRValue(): [VariableAccess] x -# 1797| Type = [IntType] int -# 1797| ValueCategory = prvalue(load) -# 1797| getExpr(): [ConditionDeclExpr] (condition decl) -# 1797| Type = [IntType] int -# 1797| ValueCategory = prvalue -# 1797| getVariableAccess(): [VariableAccess] w2 -# 1797| Type = [IntType] int -# 1797| ValueCategory = prvalue(load) -# 1797| getStmt(): [BlockStmt] { ... } -# 1798| getStmt(0): [SwitchCase] default: -# 1799| getStmt(1): [ExprStmt] ExprStmt -# 1799| getExpr(): [AssignExpr] ... = ... +# 1794| getRValue(): [VariableAccess] x +# 1794| Type = [IntType] int +# 1794| ValueCategory = prvalue(load) +# 1794| getExpr(): [AddExpr] ... + ... +# 1794| Type = [IntType] int +# 1794| ValueCategory = prvalue +# 1794| getLeftOperand(): [VariableAccess] x +# 1794| Type = [IntType] int +# 1794| ValueCategory = prvalue(load) +# 1794| getRightOperand(): [Literal] 1 +# 1794| Type = [IntType] int +# 1794| Value = [Literal] 1 +# 1794| ValueCategory = prvalue +# 1794| getStmt(): [BlockStmt] { ... } +# 1795| getStmt(0): [SwitchCase] default: +# 1796| getStmt(1): [ExprStmt] ExprStmt +# 1796| getExpr(): [AssignExpr] ... = ... +# 1796| Type = [IntType] int +# 1796| ValueCategory = lvalue +# 1796| getLValue(): [VariableAccess] x +# 1796| Type = [IntType] int +# 1796| ValueCategory = lvalue +# 1796| getRValue(): [AddExpr] ... + ... +# 1796| Type = [IntType] int +# 1796| ValueCategory = prvalue +# 1796| getLeftOperand(): [VariableAccess] x +# 1796| Type = [IntType] int +# 1796| ValueCategory = prvalue(load) +# 1796| getRightOperand(): [VariableAccess] w +# 1796| Type = [IntType] int +# 1796| ValueCategory = prvalue(load) +# 1799| getStmt(3): [SwitchStmt] switch (...) ... +# 1799| getInitialization(): [ExprStmt] ExprStmt +# 1799| getExpr(): [AssignExpr] ... = ... +# 1799| Type = [IntType] int +# 1799| ValueCategory = lvalue +# 1799| getLValue(): [VariableAccess] w # 1799| Type = [IntType] int # 1799| ValueCategory = lvalue -# 1799| getLValue(): [VariableAccess] x -# 1799| Type = [IntType] int -# 1799| ValueCategory = lvalue -# 1799| getRValue(): [AddExpr] ... + ... -# 1799| Type = [IntType] int -# 1799| ValueCategory = prvalue -# 1799| getLeftOperand(): [VariableAccess] x -# 1799| Type = [IntType] int -# 1799| ValueCategory = prvalue(load) -# 1799| getRightOperand(): [VariableAccess] w -# 1799| Type = [IntType] int -# 1799| ValueCategory = prvalue(load) -# 1802| getStmt(4): [SwitchStmt] switch (...) ... -# 1802| getInitialization(): [DeclStmt] declaration -# 1802| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1802| Type = [IntType] int -# 1802| getVariable().getInitializer(): [Initializer] initializer for v -# 1802| getExpr(): [VariableAccess] x -# 1802| Type = [IntType] int -# 1802| ValueCategory = prvalue(load) -# 1802| getExpr(): [ConditionDeclExpr] (condition decl) -# 1802| Type = [IntType] int -# 1802| ValueCategory = prvalue -# 1802| getVariableAccess(): [VariableAccess] v2 -# 1802| Type = [IntType] int -# 1802| ValueCategory = prvalue(load) -# 1802| getStmt(): [BlockStmt] { ... } -# 1803| getStmt(0): [SwitchCase] default: -# 1804| getStmt(1): [ExprStmt] ExprStmt -# 1804| getExpr(): [AssignExpr] ... = ... -# 1804| Type = [IntType] int -# 1804| ValueCategory = lvalue -# 1804| getLValue(): [VariableAccess] x -# 1804| Type = [IntType] int -# 1804| ValueCategory = lvalue -# 1804| getRValue(): [AddExpr] ... + ... +# 1799| getRValue(): [VariableAccess] x +# 1799| Type = [IntType] int +# 1799| ValueCategory = prvalue(load) +# 1799| getExpr(): [ConditionDeclExpr] (condition decl) +# 1799| Type = [IntType] int +# 1799| ValueCategory = prvalue +# 1799| getVariableAccess(): [VariableAccess] w2 +# 1799| Type = [IntType] int +# 1799| ValueCategory = prvalue(load) +# 1799| getStmt(): [BlockStmt] { ... } +# 1800| getStmt(0): [SwitchCase] default: +# 1801| getStmt(1): [ExprStmt] ExprStmt +# 1801| getExpr(): [AssignExpr] ... = ... +# 1801| Type = [IntType] int +# 1801| ValueCategory = lvalue +# 1801| getLValue(): [VariableAccess] x +# 1801| Type = [IntType] int +# 1801| ValueCategory = lvalue +# 1801| getRValue(): [AddExpr] ... + ... +# 1801| Type = [IntType] int +# 1801| ValueCategory = prvalue +# 1801| getLeftOperand(): [VariableAccess] x +# 1801| Type = [IntType] int +# 1801| ValueCategory = prvalue(load) +# 1801| getRightOperand(): [VariableAccess] w +# 1801| Type = [IntType] int +# 1801| ValueCategory = prvalue(load) +# 1804| getStmt(4): [SwitchStmt] switch (...) ... +# 1804| getInitialization(): [DeclStmt] declaration +# 1804| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1804| Type = [IntType] int +# 1804| getVariable().getInitializer(): [Initializer] initializer for v +# 1804| getExpr(): [VariableAccess] x # 1804| Type = [IntType] int -# 1804| ValueCategory = prvalue -# 1804| getLeftOperand(): [VariableAccess] x -# 1804| Type = [IntType] int -# 1804| ValueCategory = prvalue(load) -# 1804| getRightOperand(): [VariableAccess] v -# 1804| Type = [IntType] int -# 1804| ValueCategory = prvalue(load) -# 1807| getStmt(5): [DeclStmt] declaration -# 1807| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1807| Type = [IntType] int -# 1807| getVariable().getInitializer(): [Initializer] initializer for z -# 1807| getExpr(): [VariableAccess] x -# 1807| Type = [IntType] int -# 1807| ValueCategory = prvalue(load) -# 1808| getStmt(6): [SwitchStmt] switch (...) ... -# 1808| getExpr(): [VariableAccess] z -# 1808| Type = [IntType] int -# 1808| ValueCategory = prvalue(load) -# 1808| getStmt(): [BlockStmt] { ... } -# 1809| getStmt(0): [SwitchCase] default: -# 1810| getStmt(1): [ExprStmt] ExprStmt -# 1810| getExpr(): [AssignExpr] ... = ... -# 1810| Type = [IntType] int -# 1810| ValueCategory = lvalue -# 1810| getLValue(): [VariableAccess] x -# 1810| Type = [IntType] int -# 1810| ValueCategory = lvalue -# 1810| getRValue(): [AddExpr] ... + ... -# 1810| Type = [IntType] int -# 1810| ValueCategory = prvalue -# 1810| getLeftOperand(): [VariableAccess] x -# 1810| Type = [IntType] int -# 1810| ValueCategory = prvalue(load) -# 1810| getRightOperand(): [VariableAccess] z -# 1810| Type = [IntType] int -# 1810| ValueCategory = prvalue(load) -# 1813| getStmt(7): [SwitchStmt] switch (...) ... -# 1813| getExpr(): [ConditionDeclExpr] (condition decl) -# 1813| Type = [IntType] int -# 1813| ValueCategory = prvalue -# 1813| getVariableAccess(): [VariableAccess] z2 -# 1813| Type = [IntType] int -# 1813| ValueCategory = prvalue(load) -# 1813| getStmt(): [BlockStmt] { ... } -# 1814| getStmt(0): [SwitchCase] default: -# 1815| getStmt(1): [ExprStmt] ExprStmt -# 1815| getExpr(): [AssignAddExpr] ... += ... -# 1815| Type = [IntType] int -# 1815| ValueCategory = lvalue -# 1815| getLValue(): [VariableAccess] x -# 1815| Type = [IntType] int -# 1815| ValueCategory = lvalue -# 1815| getRValue(): [VariableAccess] z2 -# 1815| Type = [IntType] int -# 1815| ValueCategory = prvalue(load) -# 1817| getStmt(8): [ReturnStmt] return ... -# 1821| [GlobalVariable] int global_2 -# 1821| getInitializer(): [Initializer] initializer for global_2 -# 1821| getExpr(): [Literal] 1 -# 1821| Type = [IntType] int -# 1821| Value = [Literal] 1 -# 1821| ValueCategory = prvalue -# 1823| [GlobalVariable] int const global_3 -# 1823| getInitializer(): [Initializer] initializer for global_3 -# 1823| getExpr(): [Literal] 2 +# 1804| ValueCategory = prvalue(load) +# 1804| getExpr(): [ConditionDeclExpr] (condition decl) +# 1804| Type = [IntType] int +# 1804| ValueCategory = prvalue +# 1804| getVariableAccess(): [VariableAccess] v2 +# 1804| Type = [IntType] int +# 1804| ValueCategory = prvalue(load) +# 1804| getStmt(): [BlockStmt] { ... } +# 1805| getStmt(0): [SwitchCase] default: +# 1806| getStmt(1): [ExprStmt] ExprStmt +# 1806| getExpr(): [AssignExpr] ... = ... +# 1806| Type = [IntType] int +# 1806| ValueCategory = lvalue +# 1806| getLValue(): [VariableAccess] x +# 1806| Type = [IntType] int +# 1806| ValueCategory = lvalue +# 1806| getRValue(): [AddExpr] ... + ... +# 1806| Type = [IntType] int +# 1806| ValueCategory = prvalue +# 1806| getLeftOperand(): [VariableAccess] x +# 1806| Type = [IntType] int +# 1806| ValueCategory = prvalue(load) +# 1806| getRightOperand(): [VariableAccess] v +# 1806| Type = [IntType] int +# 1806| ValueCategory = prvalue(load) +# 1809| getStmt(5): [DeclStmt] declaration +# 1809| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1809| Type = [IntType] int +# 1809| getVariable().getInitializer(): [Initializer] initializer for z +# 1809| getExpr(): [VariableAccess] x +# 1809| Type = [IntType] int +# 1809| ValueCategory = prvalue(load) +# 1810| getStmt(6): [SwitchStmt] switch (...) ... +# 1810| getExpr(): [VariableAccess] z +# 1810| Type = [IntType] int +# 1810| ValueCategory = prvalue(load) +# 1810| getStmt(): [BlockStmt] { ... } +# 1811| getStmt(0): [SwitchCase] default: +# 1812| getStmt(1): [ExprStmt] ExprStmt +# 1812| getExpr(): [AssignExpr] ... = ... +# 1812| Type = [IntType] int +# 1812| ValueCategory = lvalue +# 1812| getLValue(): [VariableAccess] x +# 1812| Type = [IntType] int +# 1812| ValueCategory = lvalue +# 1812| getRValue(): [AddExpr] ... + ... +# 1812| Type = [IntType] int +# 1812| ValueCategory = prvalue +# 1812| getLeftOperand(): [VariableAccess] x +# 1812| Type = [IntType] int +# 1812| ValueCategory = prvalue(load) +# 1812| getRightOperand(): [VariableAccess] z +# 1812| Type = [IntType] int +# 1812| ValueCategory = prvalue(load) +# 1815| getStmt(7): [SwitchStmt] switch (...) ... +# 1815| getExpr(): [ConditionDeclExpr] (condition decl) +# 1815| Type = [IntType] int +# 1815| ValueCategory = prvalue +# 1815| getVariableAccess(): [VariableAccess] z2 +# 1815| Type = [IntType] int +# 1815| ValueCategory = prvalue(load) +# 1815| getStmt(): [BlockStmt] { ... } +# 1816| getStmt(0): [SwitchCase] default: +# 1817| getStmt(1): [ExprStmt] ExprStmt +# 1817| getExpr(): [AssignAddExpr] ... += ... +# 1817| Type = [IntType] int +# 1817| ValueCategory = lvalue +# 1817| getLValue(): [VariableAccess] x +# 1817| Type = [IntType] int +# 1817| ValueCategory = lvalue +# 1817| getRValue(): [VariableAccess] z2 +# 1817| Type = [IntType] int +# 1817| ValueCategory = prvalue(load) +# 1819| getStmt(8): [ReturnStmt] return ... +# 1823| [GlobalVariable] int global_2 +# 1823| getInitializer(): [Initializer] initializer for global_2 +# 1823| getExpr(): [Literal] 1 # 1823| Type = [IntType] int -# 1823| Value = [Literal] 2 +# 1823| Value = [Literal] 1 # 1823| ValueCategory = prvalue -# 1825| [GlobalVariable] constructor_only global_4 -# 1825| getInitializer(): [Initializer] initializer for global_4 -# 1825| getExpr(): [ConstructorCall] call to constructor_only -# 1825| Type = [VoidType] void +# 1825| [GlobalVariable] int const global_3 +# 1825| getInitializer(): [Initializer] initializer for global_3 +# 1825| getExpr(): [Literal] 2 +# 1825| Type = [IntType] int +# 1825| Value = [Literal] 2 # 1825| ValueCategory = prvalue -# 1825| getArgument(0): [Literal] 1 -# 1825| Type = [IntType] int -# 1825| Value = [Literal] 1 -# 1825| ValueCategory = prvalue -# 1827| [GlobalVariable] constructor_only global_5 -# 1827| getInitializer(): [Initializer] initializer for global_5 +# 1827| [GlobalVariable] constructor_only global_4 +# 1827| getInitializer(): [Initializer] initializer for global_4 # 1827| getExpr(): [ConstructorCall] call to constructor_only # 1827| Type = [VoidType] void # 1827| ValueCategory = prvalue -# 1827| getArgument(0): [Literal] 2 +# 1827| getArgument(0): [Literal] 1 # 1827| Type = [IntType] int -# 1827| Value = [Literal] 2 +# 1827| Value = [Literal] 1 # 1827| ValueCategory = prvalue -# 1829| [GlobalVariable] char* global_string -# 1829| getInitializer(): [Initializer] initializer for global_string -# 1829| getExpr(): global string -# 1829| Type = [ArrayType] const char[14] -# 1829| Value = [StringLiteral] "global string" -# 1829| ValueCategory = lvalue -# 1829| getExpr().getFullyConverted(): [CStyleCast] (char *)... -# 1829| Conversion = [PointerConversion] pointer conversion -# 1829| Type = [CharPointerType] char * +# 1829| [GlobalVariable] constructor_only global_5 +# 1829| getInitializer(): [Initializer] initializer for global_5 +# 1829| getExpr(): [ConstructorCall] call to constructor_only +# 1829| Type = [VoidType] void # 1829| ValueCategory = prvalue -# 1829| getExpr(): [ArrayToPointerConversion] array to pointer conversion -# 1829| Type = [PointerType] const char * +# 1829| getArgument(0): [Literal] 2 +# 1829| Type = [IntType] int +# 1829| Value = [Literal] 2 # 1829| ValueCategory = prvalue -# 1831| [GlobalVariable] int global_6 -# 1831| getInitializer(): [Initializer] initializer for global_6 -# 1831| getExpr(): [VariableAccess] global_2 -# 1831| Type = [IntType] int -# 1831| ValueCategory = prvalue(load) -# 1834| [CopyAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A const&) -# 1834| : +# 1831| [GlobalVariable] char* global_string +# 1831| getInitializer(): [Initializer] initializer for global_string +# 1831| getExpr(): global string +# 1831| Type = [ArrayType] const char[14] +# 1831| Value = [StringLiteral] "global string" +# 1831| ValueCategory = lvalue +# 1831| getExpr().getFullyConverted(): [CStyleCast] (char *)... +# 1831| Conversion = [PointerConversion] pointer conversion +# 1831| Type = [CharPointerType] char * +# 1831| ValueCategory = prvalue +# 1831| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 1831| Type = [PointerType] const char * +# 1831| ValueCategory = prvalue +# 1833| [GlobalVariable] int global_6 +# 1833| getInitializer(): [Initializer] initializer for global_6 +# 1833| getExpr(): [VariableAccess] global_2 +# 1833| Type = [IntType] int +# 1833| ValueCategory = prvalue(load) +# 1836| [CopyAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A const&) +# 1836| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1834| [MoveAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1834| : +# 1836| [MoveAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1836| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && #-----| getEntryPoint(): [BlockStmt] { ... } @@ -14301,43 +14450,43 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] A & #-----| ValueCategory = prvalue -# 1834| [Constructor] void block_assignment::A::A() -# 1834| : -# 1834| [CopyConstructor] void block_assignment::A::A(block_assignment::A const&) -# 1834| : +# 1836| [Constructor] void block_assignment::A::A() +# 1836| : +# 1836| [CopyConstructor] void block_assignment::A::A(block_assignment::A const&) +# 1836| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1834| [MoveConstructor] void block_assignment::A::A(block_assignment::A&&) -# 1834| : +# 1836| [MoveConstructor] void block_assignment::A::A(block_assignment::A&&) +# 1836| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && -# 1836| [VirtualFunction] void block_assignment::A::f() -# 1836| : -# 1839| [CopyAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B const&) -# 1839| : +# 1838| [VirtualFunction] void block_assignment::A::f() +# 1838| : +# 1841| [CopyAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B const&) +# 1841| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const B & -# 1839| [MoveAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1839| : +# 1841| [MoveAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1841| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] B && #-----| getEntryPoint(): [BlockStmt] { ... } #-----| getStmt(0): [ExprStmt] ExprStmt -# 1839| getExpr(): [FunctionCall] call to operator= -# 1839| Type = [LValueReferenceType] A & -# 1839| ValueCategory = prvalue -# 1839| getQualifier(): [ThisExpr] this -# 1839| Type = [PointerType] B * -# 1839| ValueCategory = prvalue(load) -# 1839| getArgument(0): [PointerDereferenceExpr] * ... -# 1839| Type = [Class] A -# 1839| ValueCategory = xvalue -# 1839| getOperand(): [AddressOfExpr] & ... -# 1839| Type = [PointerType] B * -# 1839| ValueCategory = prvalue -# 1839| getOperand(): [VariableAccess] (unnamed parameter 0) -# 1839| Type = [RValueReferenceType] B && -# 1839| ValueCategory = prvalue(load) +# 1841| getExpr(): [FunctionCall] call to operator= +# 1841| Type = [LValueReferenceType] A & +# 1841| ValueCategory = prvalue +# 1841| getQualifier(): [ThisExpr] this +# 1841| Type = [PointerType] B * +# 1841| ValueCategory = prvalue(load) +# 1841| getArgument(0): [PointerDereferenceExpr] * ... +# 1841| Type = [Class] A +# 1841| ValueCategory = xvalue +# 1841| getOperand(): [AddressOfExpr] & ... +# 1841| Type = [PointerType] B * +# 1841| ValueCategory = prvalue +# 1841| getOperand(): [VariableAccess] (unnamed parameter 0) +# 1841| Type = [RValueReferenceType] B && +# 1841| ValueCategory = prvalue(load) #-----| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [Struct] B #-----| ValueCategory = lvalue @@ -14365,746 +14514,708 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] B & #-----| ValueCategory = prvalue -# 1839| [CopyConstructor] void block_assignment::B::B(block_assignment::B const&) -# 1839| : +# 1841| [CopyConstructor] void block_assignment::B::B(block_assignment::B const&) +# 1841| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const B & -# 1839| [MoveConstructor] void block_assignment::B::B(block_assignment::B&&) -# 1839| : +# 1841| [MoveConstructor] void block_assignment::B::B(block_assignment::B&&) +# 1841| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] B && -# 1840| [Constructor] void block_assignment::B::B(block_assignment::A*) -# 1840| : -# 1840| getParameter(0): [Parameter] (unnamed parameter 0) -# 1840| Type = [PointerType] A * -# 1843| [TopLevelFunction] void block_assignment::foo() -# 1843| : -# 1843| getEntryPoint(): [BlockStmt] { ... } -# 1844| getStmt(0): [DeclStmt] declaration -# 1844| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1844| Type = [Struct] B -# 1844| getVariable().getInitializer(): [Initializer] initializer for v -# 1844| getExpr(): [ConstructorCall] call to B -# 1844| Type = [VoidType] void -# 1844| ValueCategory = prvalue -# 1844| getArgument(0): [Literal] 0 -# 1844| Type = [IntType] int -# 1844| Value = [Literal] 0 -# 1844| ValueCategory = prvalue -# 1844| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... -# 1844| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 1844| Type = [PointerType] A * -# 1844| Value = [CStyleCast] 0 -# 1844| ValueCategory = prvalue -# 1845| getStmt(1): [ExprStmt] ExprStmt -# 1845| getExpr(): [FunctionCall] call to operator= -# 1845| Type = [LValueReferenceType] B & -# 1845| ValueCategory = prvalue -# 1845| getQualifier(): [VariableAccess] v -# 1845| Type = [Struct] B -# 1845| ValueCategory = lvalue -# 1845| getArgument(0): [ConstructorCall] call to B -# 1845| Type = [VoidType] void -# 1845| ValueCategory = prvalue -# 1845| getArgument(0): [Literal] 0 -# 1845| Type = [IntType] int -# 1845| Value = [Literal] 0 -# 1845| ValueCategory = prvalue -# 1845| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... -# 1845| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 1845| Type = [PointerType] A * -# 1845| Value = [CStyleCast] 0 -# 1845| ValueCategory = prvalue -# 1845| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1845| Type = [LValueReferenceType] B & -# 1845| ValueCategory = prvalue -# 1845| getExpr(): [TemporaryObjectExpr] temporary object -# 1845| Type = [Struct] B -# 1845| ValueCategory = lvalue -# 1845| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1845| Type = [Struct] B -# 1845| ValueCategory = lvalue -# 1846| getStmt(2): [ReturnStmt] return ... -# 1849| [TopLevelFunction] void magicvars() -# 1849| : -# 1849| getEntryPoint(): [BlockStmt] { ... } -# 1850| getStmt(0): [DeclStmt] declaration -# 1850| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pf -# 1850| Type = [PointerType] const char * -# 1850| getVariable().getInitializer(): [Initializer] initializer for pf -# 1850| getExpr(): [VariableAccess] __PRETTY_FUNCTION__ -# 1850| Type = [ArrayType] const char[17] -# 1850| ValueCategory = lvalue -# 1850| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1850| Type = [PointerType] const char * -# 1850| ValueCategory = prvalue -# 1851| getStmt(1): [DeclStmt] declaration -# 1851| getDeclarationEntry(0): [VariableDeclarationEntry] definition of strfunc -# 1851| Type = [PointerType] const char * -# 1851| getVariable().getInitializer(): [Initializer] initializer for strfunc -# 1851| getExpr(): [VariableAccess] __func__ -# 1851| Type = [ArrayType] const char[10] -# 1851| ValueCategory = lvalue -# 1851| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1851| Type = [PointerType] const char * -# 1851| ValueCategory = prvalue -# 1852| getStmt(2): [ReturnStmt] return ... -# 1855| [CopyAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S const&) -# 1855| : +# 1842| [Constructor] void block_assignment::B::B(block_assignment::A*) +# 1842| : +# 1842| getParameter(0): [Parameter] (unnamed parameter 0) +# 1842| Type = [PointerType] A * +# 1845| [TopLevelFunction] void block_assignment::foo() +# 1845| : +# 1845| getEntryPoint(): [BlockStmt] { ... } +# 1846| getStmt(0): [DeclStmt] declaration +# 1846| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1846| Type = [Struct] B +# 1846| getVariable().getInitializer(): [Initializer] initializer for v +# 1846| getExpr(): [ConstructorCall] call to B +# 1846| Type = [VoidType] void +# 1846| ValueCategory = prvalue +# 1846| getArgument(0): [Literal] 0 +# 1846| Type = [IntType] int +# 1846| Value = [Literal] 0 +# 1846| ValueCategory = prvalue +# 1846| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... +# 1846| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 1846| Type = [PointerType] A * +# 1846| Value = [CStyleCast] 0 +# 1846| ValueCategory = prvalue +# 1847| getStmt(1): [ExprStmt] ExprStmt +# 1847| getExpr(): [FunctionCall] call to operator= +# 1847| Type = [LValueReferenceType] B & +# 1847| ValueCategory = prvalue +# 1847| getQualifier(): [VariableAccess] v +# 1847| Type = [Struct] B +# 1847| ValueCategory = lvalue +# 1847| getArgument(0): [ConstructorCall] call to B +# 1847| Type = [VoidType] void +# 1847| ValueCategory = prvalue +# 1847| getArgument(0): [Literal] 0 +# 1847| Type = [IntType] int +# 1847| Value = [Literal] 0 +# 1847| ValueCategory = prvalue +# 1847| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... +# 1847| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 1847| Type = [PointerType] A * +# 1847| Value = [CStyleCast] 0 +# 1847| ValueCategory = prvalue +# 1847| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1847| Type = [LValueReferenceType] B & +# 1847| ValueCategory = prvalue +# 1847| getExpr(): [TemporaryObjectExpr] temporary object +# 1847| Type = [Struct] B +# 1847| ValueCategory = lvalue +# 1847| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1847| Type = [Struct] B +# 1847| ValueCategory = lvalue +# 1848| getStmt(2): [ReturnStmt] return ... +# 1851| [TopLevelFunction] void magicvars() +# 1851| : +# 1851| getEntryPoint(): [BlockStmt] { ... } +# 1852| getStmt(0): [DeclStmt] declaration +# 1852| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pf +# 1852| Type = [PointerType] const char * +# 1852| getVariable().getInitializer(): [Initializer] initializer for pf +# 1852| getExpr(): [VariableAccess] __PRETTY_FUNCTION__ +# 1852| Type = [ArrayType] const char[17] +# 1852| ValueCategory = lvalue +# 1852| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1852| Type = [PointerType] const char * +# 1852| ValueCategory = prvalue +# 1853| getStmt(1): [DeclStmt] declaration +# 1853| getDeclarationEntry(0): [VariableDeclarationEntry] definition of strfunc +# 1853| Type = [PointerType] const char * +# 1853| getVariable().getInitializer(): [Initializer] initializer for strfunc +# 1853| getExpr(): [VariableAccess] __func__ +# 1853| Type = [ArrayType] const char[10] +# 1853| ValueCategory = lvalue +# 1853| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1853| Type = [PointerType] const char * +# 1853| ValueCategory = prvalue +# 1854| getStmt(2): [ReturnStmt] return ... +# 1857| [CopyAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S const&) +# 1857| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const S & -# 1855| [MoveAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S&&) -# 1855| : +# 1857| [MoveAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S&&) +# 1857| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] S && -# 1859| [CopyAssignmentOperator] missing_declaration_entries::Bar1& missing_declaration_entries::Bar1::operator=(missing_declaration_entries::Bar1 const&) -# 1859| : +# 1861| [CopyAssignmentOperator] missing_declaration_entries::Bar1& missing_declaration_entries::Bar1::operator=(missing_declaration_entries::Bar1 const&) +# 1861| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Bar1 & -# 1859| [MoveAssignmentOperator] missing_declaration_entries::Bar1& missing_declaration_entries::Bar1::operator=(missing_declaration_entries::Bar1&&) -# 1859| : +# 1861| [MoveAssignmentOperator] missing_declaration_entries::Bar1& missing_declaration_entries::Bar1::operator=(missing_declaration_entries::Bar1&&) +# 1861| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Bar1 && -# 1862| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1862| : -# 1862| getParameter(0): [Parameter] p -# 1862| Type = [CTypedefType,NestedTypedefType] pointer -# 1862| getEntryPoint(): [BlockStmt] { ... } -# 1863| getStmt(0): [DeclStmt] declaration -# 1863| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res -# 1863| Type = [CTypedefType,LocalTypedefType] _Res -# 1864| getStmt(1): [ReturnStmt] return ... -# 1864| getExpr(): [VariableAccess] p -# 1864| Type = [CTypedefType,NestedTypedefType] pointer -# 1864| ValueCategory = prvalue(load) -# 1864| getExpr().getFullyConverted(): [CStyleCast] (void *)... -# 1864| Conversion = [PointerConversion] pointer conversion -# 1864| Type = [VoidPointerType] void * -# 1864| ValueCategory = prvalue -# 1862| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1862| : -# 1862| getParameter(0): [Parameter] p -# 1862| Type = [CTypedefType,NestedTypedefType] pointer -# 1862| getEntryPoint(): [BlockStmt] { ... } -# 1863| getStmt(0): [DeclStmt] declaration -# 1864| getStmt(1): [ReturnStmt] return ... -# 1864| getExpr(): [VariableAccess] p -# 1864| Type = [CTypedefType,NestedTypedefType] pointer -# 1864| ValueCategory = prvalue(load) -# 1864| getExpr().getFullyConverted(): [CStyleCast] (void *)... -# 1864| Conversion = [PointerConversion] pointer conversion -# 1864| Type = [VoidPointerType] void * -# 1864| ValueCategory = prvalue -# 1868| [TopLevelFunction] void missing_declaration_entries::test1() -# 1868| : -# 1868| getEntryPoint(): [BlockStmt] { ... } -# 1869| getStmt(0): [DeclStmt] declaration -# 1869| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1869| Type = [ClassTemplateInstantiation,Struct] Bar1 -# 1870| getStmt(1): [ExprStmt] ExprStmt -# 1870| getExpr(): [FunctionCall] call to missing_type_decl_entry -# 1870| Type = [VoidPointerType] void * -# 1870| ValueCategory = prvalue -# 1870| getQualifier(): [VariableAccess] b -# 1870| Type = [ClassTemplateInstantiation,Struct] Bar1 -# 1870| ValueCategory = lvalue -# 1870| getArgument(0): [Literal] 0 -# 1870| Type = [NullPointerType] decltype(nullptr) -# 1870| Value = [Literal] 0 -# 1870| ValueCategory = prvalue -# 1870| getArgument(0).getFullyConverted(): [CStyleCast] (pointer)... -# 1870| Conversion = [PointerConversion] pointer conversion -# 1870| Type = [CTypedefType,NestedTypedefType] pointer -# 1870| Value = [CStyleCast] 0 -# 1870| ValueCategory = prvalue -# 1871| getStmt(2): [ReturnStmt] return ... -# 1873| [CopyAssignmentOperator] missing_declaration_entries::Bar2& missing_declaration_entries::Bar2::operator=(missing_declaration_entries::Bar2 const&) -# 1873| : +# 1864| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1864| : +# 1864| getParameter(0): [Parameter] p +# 1864| Type = [CTypedefType,NestedTypedefType] pointer +# 1864| getEntryPoint(): [BlockStmt] { ... } +# 1865| getStmt(0): [DeclStmt] declaration +# 1865| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res +# 1865| Type = [CTypedefType,LocalTypedefType] _Res +# 1866| getStmt(1): [ReturnStmt] return ... +# 1866| getExpr(): [VariableAccess] p +# 1866| Type = [CTypedefType,NestedTypedefType] pointer +# 1866| ValueCategory = prvalue(load) +# 1866| getExpr().getFullyConverted(): [CStyleCast] (void *)... +# 1866| Conversion = [PointerConversion] pointer conversion +# 1866| Type = [VoidPointerType] void * +# 1866| ValueCategory = prvalue +# 1864| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1864| : +# 1864| getParameter(0): [Parameter] p +# 1864| Type = [CTypedefType,NestedTypedefType] pointer +# 1864| getEntryPoint(): [BlockStmt] { ... } +# 1865| getStmt(0): [DeclStmt] declaration +# 1866| getStmt(1): [ReturnStmt] return ... +# 1866| getExpr(): [VariableAccess] p +# 1866| Type = [CTypedefType,NestedTypedefType] pointer +# 1866| ValueCategory = prvalue(load) +# 1866| getExpr().getFullyConverted(): [CStyleCast] (void *)... +# 1866| Conversion = [PointerConversion] pointer conversion +# 1866| Type = [VoidPointerType] void * +# 1866| ValueCategory = prvalue +# 1870| [TopLevelFunction] void missing_declaration_entries::test1() +# 1870| : +# 1870| getEntryPoint(): [BlockStmt] { ... } +# 1871| getStmt(0): [DeclStmt] declaration +# 1871| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1871| Type = [ClassTemplateInstantiation,Struct] Bar1 +# 1872| getStmt(1): [ExprStmt] ExprStmt +# 1872| getExpr(): [FunctionCall] call to missing_type_decl_entry +# 1872| Type = [VoidPointerType] void * +# 1872| ValueCategory = prvalue +# 1872| getQualifier(): [VariableAccess] b +# 1872| Type = [ClassTemplateInstantiation,Struct] Bar1 +# 1872| ValueCategory = lvalue +# 1872| getArgument(0): [Literal] 0 +# 1872| Type = [NullPointerType] decltype(nullptr) +# 1872| Value = [Literal] 0 +# 1872| ValueCategory = prvalue +# 1872| getArgument(0).getFullyConverted(): [CStyleCast] (pointer)... +# 1872| Conversion = [PointerConversion] pointer conversion +# 1872| Type = [CTypedefType,NestedTypedefType] pointer +# 1872| Value = [CStyleCast] 0 +# 1872| ValueCategory = prvalue +# 1873| getStmt(2): [ReturnStmt] return ... +# 1875| [CopyAssignmentOperator] missing_declaration_entries::Bar2& missing_declaration_entries::Bar2::operator=(missing_declaration_entries::Bar2 const&) +# 1875| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Bar2 & -# 1873| [MoveAssignmentOperator] missing_declaration_entries::Bar2& missing_declaration_entries::Bar2::operator=(missing_declaration_entries::Bar2&&) -# 1873| : +# 1875| [MoveAssignmentOperator] missing_declaration_entries::Bar2& missing_declaration_entries::Bar2::operator=(missing_declaration_entries::Bar2&&) +# 1875| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Bar2 && -# 1875| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1875| : -# 1875| getEntryPoint(): [BlockStmt] { ... } -# 1876| getStmt(0): [DeclStmt] declaration -# 1876| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1876| Type = [ArrayType] int[10] -# 1876| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y -# 1876| Type = [ArrayType] int[10] -# 1877| getStmt(1): [ExprStmt] ExprStmt -# 1877| getExpr(): [AssignExpr] ... = ... -# 1877| Type = [IntType] int -# 1877| ValueCategory = lvalue -# 1877| getLValue(): [PointerDereferenceExpr] * ... -# 1877| Type = [IntType] int -# 1877| ValueCategory = lvalue -# 1877| getOperand(): [VariableAccess] x -# 1877| Type = [ArrayType] int[10] -# 1877| ValueCategory = lvalue -# 1877| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1877| Type = [IntPointerType] int * -# 1877| ValueCategory = prvalue -# 1877| getRValue(): [Literal] 10 -# 1877| Type = [IntType] int -# 1877| Value = [Literal] 10 -# 1877| ValueCategory = prvalue -# 1878| getStmt(2): [ExprStmt] ExprStmt -# 1878| getExpr(): [AssignExpr] ... = ... -# 1878| Type = [IntType] int -# 1878| ValueCategory = lvalue -# 1878| getLValue(): [PointerDereferenceExpr] * ... -# 1878| Type = [IntType] int -# 1878| ValueCategory = lvalue -# 1878| getOperand(): [VariableAccess] y -# 1878| Type = [ArrayType] int[10] -# 1878| ValueCategory = lvalue -# 1878| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1878| Type = [IntPointerType] int * -# 1878| ValueCategory = prvalue -# 1878| getRValue(): [Literal] 10 -# 1878| Type = [IntType] int -# 1878| Value = [Literal] 10 -# 1878| ValueCategory = prvalue -# 1879| getStmt(3): [ReturnStmt] return ... -# 1879| getExpr(): [AddExpr] ... + ... +# 1877| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1877| : +# 1877| getEntryPoint(): [BlockStmt] { ... } +# 1878| getStmt(0): [DeclStmt] declaration +# 1878| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1878| Type = [ArrayType] int[10] +# 1878| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y +# 1878| Type = [ArrayType] int[10] +# 1879| getStmt(1): [ExprStmt] ExprStmt +# 1879| getExpr(): [AssignExpr] ... = ... # 1879| Type = [IntType] int -# 1879| ValueCategory = prvalue -# 1879| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1879| ValueCategory = lvalue +# 1879| getLValue(): [PointerDereferenceExpr] * ... # 1879| Type = [IntType] int -# 1879| ValueCategory = prvalue(load) +# 1879| ValueCategory = lvalue # 1879| getOperand(): [VariableAccess] x # 1879| Type = [ArrayType] int[10] # 1879| ValueCategory = lvalue # 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 1879| Type = [IntPointerType] int * # 1879| ValueCategory = prvalue -# 1879| getRightOperand(): [PointerDereferenceExpr] * ... +# 1879| getRValue(): [Literal] 10 # 1879| Type = [IntType] int -# 1879| ValueCategory = prvalue(load) -# 1879| getOperand(): [VariableAccess] y -# 1879| Type = [ArrayType] int[10] -# 1879| ValueCategory = lvalue -# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1879| Type = [IntPointerType] int * -# 1879| ValueCategory = prvalue -# 1875| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1875| : -# 1875| getEntryPoint(): [BlockStmt] { ... } -# 1876| getStmt(0): [DeclStmt] declaration -# 1877| getStmt(1): [ExprStmt] ExprStmt -# 1877| getExpr(): [AssignExpr] ... = ... -# 1877| Type = [IntType] int -# 1877| ValueCategory = lvalue -# 1877| getLValue(): [PointerDereferenceExpr] * ... -# 1877| Type = [IntType] int -# 1877| ValueCategory = lvalue -# 1877| getOperand(): [VariableAccess] x -# 1877| Type = [ArrayType] int[10] -# 1877| ValueCategory = lvalue -# 1877| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1877| Type = [IntPointerType] int * -# 1877| ValueCategory = prvalue -# 1877| getRValue(): [Literal] 10 -# 1877| Type = [IntType] int -# 1877| Value = [Literal] 10 -# 1877| ValueCategory = prvalue -# 1878| getStmt(2): [ExprStmt] ExprStmt -# 1878| getExpr(): [AssignExpr] ... = ... -# 1878| Type = [IntType] int -# 1878| ValueCategory = lvalue -# 1878| getLValue(): [PointerDereferenceExpr] * ... -# 1878| Type = [IntType] int -# 1878| ValueCategory = lvalue -# 1878| getOperand(): [VariableAccess] y -# 1878| Type = [ArrayType] int[10] -# 1878| ValueCategory = lvalue -# 1878| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1878| Type = [IntPointerType] int * -# 1878| ValueCategory = prvalue -# 1878| getRValue(): [Literal] 10 -# 1878| Type = [IntType] int -# 1878| Value = [Literal] 10 -# 1878| ValueCategory = prvalue -# 1879| getStmt(3): [ReturnStmt] return ... -# 1879| getExpr(): [AddExpr] ... + ... +# 1879| Value = [Literal] 10 +# 1879| ValueCategory = prvalue +# 1880| getStmt(2): [ExprStmt] ExprStmt +# 1880| getExpr(): [AssignExpr] ... = ... +# 1880| Type = [IntType] int +# 1880| ValueCategory = lvalue +# 1880| getLValue(): [PointerDereferenceExpr] * ... +# 1880| Type = [IntType] int +# 1880| ValueCategory = lvalue +# 1880| getOperand(): [VariableAccess] y +# 1880| Type = [ArrayType] int[10] +# 1880| ValueCategory = lvalue +# 1880| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1880| Type = [IntPointerType] int * +# 1880| ValueCategory = prvalue +# 1880| getRValue(): [Literal] 10 +# 1880| Type = [IntType] int +# 1880| Value = [Literal] 10 +# 1880| ValueCategory = prvalue +# 1881| getStmt(3): [ReturnStmt] return ... +# 1881| getExpr(): [AddExpr] ... + ... +# 1881| Type = [IntType] int +# 1881| ValueCategory = prvalue +# 1881| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1881| Type = [IntType] int +# 1881| ValueCategory = prvalue(load) +# 1881| getOperand(): [VariableAccess] x +# 1881| Type = [ArrayType] int[10] +# 1881| ValueCategory = lvalue +# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1881| Type = [IntPointerType] int * +# 1881| ValueCategory = prvalue +# 1881| getRightOperand(): [PointerDereferenceExpr] * ... +# 1881| Type = [IntType] int +# 1881| ValueCategory = prvalue(load) +# 1881| getOperand(): [VariableAccess] y +# 1881| Type = [ArrayType] int[10] +# 1881| ValueCategory = lvalue +# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1881| Type = [IntPointerType] int * +# 1881| ValueCategory = prvalue +# 1877| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1877| : +# 1877| getEntryPoint(): [BlockStmt] { ... } +# 1878| getStmt(0): [DeclStmt] declaration +# 1879| getStmt(1): [ExprStmt] ExprStmt +# 1879| getExpr(): [AssignExpr] ... = ... # 1879| Type = [IntType] int -# 1879| ValueCategory = prvalue -# 1879| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1879| ValueCategory = lvalue +# 1879| getLValue(): [PointerDereferenceExpr] * ... # 1879| Type = [IntType] int -# 1879| ValueCategory = prvalue(load) +# 1879| ValueCategory = lvalue # 1879| getOperand(): [VariableAccess] x # 1879| Type = [ArrayType] int[10] # 1879| ValueCategory = lvalue # 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 1879| Type = [IntPointerType] int * # 1879| ValueCategory = prvalue -# 1879| getRightOperand(): [PointerDereferenceExpr] * ... +# 1879| getRValue(): [Literal] 10 # 1879| Type = [IntType] int -# 1879| ValueCategory = prvalue(load) -# 1879| getOperand(): [VariableAccess] y -# 1879| Type = [ArrayType] int[10] -# 1879| ValueCategory = lvalue -# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1879| Type = [IntPointerType] int * -# 1879| ValueCategory = prvalue -# 1883| [TopLevelFunction] void missing_declaration_entries::test2() -# 1883| : -# 1883| getEntryPoint(): [BlockStmt] { ... } -# 1884| getStmt(0): [DeclStmt] declaration -# 1884| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1884| Type = [ClassTemplateInstantiation,Struct] Bar2 -# 1885| getStmt(1): [ExprStmt] ExprStmt -# 1885| getExpr(): [FunctionCall] call to two_missing_variable_declaration_entries -# 1885| Type = [IntType] int -# 1885| ValueCategory = prvalue -# 1885| getQualifier(): [VariableAccess] b -# 1885| Type = [ClassTemplateInstantiation,Struct] Bar2 -# 1885| ValueCategory = lvalue -# 1886| getStmt(2): [ReturnStmt] return ... -# 1889| [GlobalVariable] char global_template -# 1889| getInitializer(): [Initializer] initializer for global_template -# 1889| getExpr(): [Literal] 42 -# 1889| Type = [IntType] int -# 1889| Value = [Literal] 42 -# 1889| ValueCategory = prvalue -# 1889| getExpr().getFullyConverted(): [CStyleCast] (char)... -# 1889| Conversion = [IntegralConversion] integral conversion -# 1889| Type = [PlainCharType] char -# 1889| Value = [CStyleCast] 42 -# 1889| ValueCategory = prvalue -# 1889| [GlobalVariable] int global_template -# 1889| getInitializer(): [Initializer] initializer for global_template -# 1889| getExpr(): [Literal] 42 -# 1889| Type = [IntType] int -# 1889| Value = [Literal] 42 -# 1889| ValueCategory = prvalue -# 1891| [TopLevelFunction] int test_global_template_int() -# 1891| : -# 1891| getEntryPoint(): [BlockStmt] { ... } -# 1892| getStmt(0): [DeclStmt] declaration -# 1892| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int -# 1892| Type = [IntType] int -# 1892| getVariable().getInitializer(): [Initializer] initializer for local_int -# 1892| getExpr(): [VariableAccess] global_template -# 1892| Type = [IntType] int -# 1892| ValueCategory = prvalue(load) -# 1893| getStmt(1): [DeclStmt] declaration -# 1893| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char -# 1893| Type = [PlainCharType] char -# 1893| getVariable().getInitializer(): [Initializer] initializer for local_char -# 1893| getExpr(): [VariableAccess] global_template -# 1893| Type = [PlainCharType] char -# 1893| ValueCategory = prvalue(load) -# 1894| getStmt(2): [ReturnStmt] return ... -# 1894| getExpr(): [AddExpr] ... + ... +# 1879| Value = [Literal] 10 +# 1879| ValueCategory = prvalue +# 1880| getStmt(2): [ExprStmt] ExprStmt +# 1880| getExpr(): [AssignExpr] ... = ... +# 1880| Type = [IntType] int +# 1880| ValueCategory = lvalue +# 1880| getLValue(): [PointerDereferenceExpr] * ... +# 1880| Type = [IntType] int +# 1880| ValueCategory = lvalue +# 1880| getOperand(): [VariableAccess] y +# 1880| Type = [ArrayType] int[10] +# 1880| ValueCategory = lvalue +# 1880| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1880| Type = [IntPointerType] int * +# 1880| ValueCategory = prvalue +# 1880| getRValue(): [Literal] 10 +# 1880| Type = [IntType] int +# 1880| Value = [Literal] 10 +# 1880| ValueCategory = prvalue +# 1881| getStmt(3): [ReturnStmt] return ... +# 1881| getExpr(): [AddExpr] ... + ... +# 1881| Type = [IntType] int +# 1881| ValueCategory = prvalue +# 1881| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1881| Type = [IntType] int +# 1881| ValueCategory = prvalue(load) +# 1881| getOperand(): [VariableAccess] x +# 1881| Type = [ArrayType] int[10] +# 1881| ValueCategory = lvalue +# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1881| Type = [IntPointerType] int * +# 1881| ValueCategory = prvalue +# 1881| getRightOperand(): [PointerDereferenceExpr] * ... +# 1881| Type = [IntType] int +# 1881| ValueCategory = prvalue(load) +# 1881| getOperand(): [VariableAccess] y +# 1881| Type = [ArrayType] int[10] +# 1881| ValueCategory = lvalue +# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1881| Type = [IntPointerType] int * +# 1881| ValueCategory = prvalue +# 1885| [TopLevelFunction] void missing_declaration_entries::test2() +# 1885| : +# 1885| getEntryPoint(): [BlockStmt] { ... } +# 1886| getStmt(0): [DeclStmt] declaration +# 1886| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1886| Type = [ClassTemplateInstantiation,Struct] Bar2 +# 1887| getStmt(1): [ExprStmt] ExprStmt +# 1887| getExpr(): [FunctionCall] call to two_missing_variable_declaration_entries +# 1887| Type = [IntType] int +# 1887| ValueCategory = prvalue +# 1887| getQualifier(): [VariableAccess] b +# 1887| Type = [ClassTemplateInstantiation,Struct] Bar2 +# 1887| ValueCategory = lvalue +# 1888| getStmt(2): [ReturnStmt] return ... +# 1891| [GlobalVariable] char global_template +# 1891| getInitializer(): [Initializer] initializer for global_template +# 1891| getExpr(): [Literal] 42 +# 1891| Type = [IntType] int +# 1891| Value = [Literal] 42 +# 1891| ValueCategory = prvalue +# 1891| getExpr().getFullyConverted(): [CStyleCast] (char)... +# 1891| Conversion = [IntegralConversion] integral conversion +# 1891| Type = [PlainCharType] char +# 1891| Value = [CStyleCast] 42 +# 1891| ValueCategory = prvalue +# 1891| [GlobalVariable] int global_template +# 1891| getInitializer(): [Initializer] initializer for global_template +# 1891| getExpr(): [Literal] 42 +# 1891| Type = [IntType] int +# 1891| Value = [Literal] 42 +# 1891| ValueCategory = prvalue +# 1893| [TopLevelFunction] int test_global_template_int() +# 1893| : +# 1893| getEntryPoint(): [BlockStmt] { ... } +# 1894| getStmt(0): [DeclStmt] declaration +# 1894| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int # 1894| Type = [IntType] int -# 1894| ValueCategory = prvalue -# 1894| getLeftOperand(): [VariableAccess] local_int -# 1894| Type = [IntType] int -# 1894| ValueCategory = prvalue(load) -# 1894| getRightOperand(): [VariableAccess] local_char -# 1894| Type = [PlainCharType] char -# 1894| ValueCategory = prvalue(load) -# 1894| getRightOperand().getFullyConverted(): [CStyleCast] (int)... -# 1894| Conversion = [IntegralConversion] integral conversion -# 1894| Type = [IntType] int -# 1894| ValueCategory = prvalue -# 1897| [TopLevelFunction] void noreturnFunc() -# 1897| : -# 1899| [TopLevelFunction] int noreturnTest(int) +# 1894| getVariable().getInitializer(): [Initializer] initializer for local_int +# 1894| getExpr(): [VariableAccess] global_template +# 1894| Type = [IntType] int +# 1894| ValueCategory = prvalue(load) +# 1895| getStmt(1): [DeclStmt] declaration +# 1895| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char +# 1895| Type = [PlainCharType] char +# 1895| getVariable().getInitializer(): [Initializer] initializer for local_char +# 1895| getExpr(): [VariableAccess] global_template +# 1895| Type = [PlainCharType] char +# 1895| ValueCategory = prvalue(load) +# 1896| getStmt(2): [ReturnStmt] return ... +# 1896| getExpr(): [AddExpr] ... + ... +# 1896| Type = [IntType] int +# 1896| ValueCategory = prvalue +# 1896| getLeftOperand(): [VariableAccess] local_int +# 1896| Type = [IntType] int +# 1896| ValueCategory = prvalue(load) +# 1896| getRightOperand(): [VariableAccess] local_char +# 1896| Type = [PlainCharType] char +# 1896| ValueCategory = prvalue(load) +# 1896| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 1896| Conversion = [IntegralConversion] integral conversion +# 1896| Type = [IntType] int +# 1896| ValueCategory = prvalue +# 1899| [TopLevelFunction] void noreturnFunc() # 1899| : -# 1899| getParameter(0): [Parameter] x -# 1899| Type = [IntType] int -# 1899| getEntryPoint(): [BlockStmt] { ... } -# 1900| getStmt(0): [IfStmt] if (...) ... -# 1900| getCondition(): [LTExpr] ... < ... -# 1900| Type = [BoolType] bool -# 1900| ValueCategory = prvalue -# 1900| getLesserOperand(): [VariableAccess] x -# 1900| Type = [IntType] int -# 1900| ValueCategory = prvalue(load) -# 1900| getGreaterOperand(): [Literal] 10 -# 1900| Type = [IntType] int -# 1900| Value = [Literal] 10 -# 1900| ValueCategory = prvalue -# 1900| getThen(): [BlockStmt] { ... } -# 1901| getStmt(0): [ReturnStmt] return ... -# 1901| getExpr(): [VariableAccess] x -# 1901| Type = [IntType] int -# 1901| ValueCategory = prvalue(load) -# 1902| getElse(): [BlockStmt] { ... } -# 1903| getStmt(0): [ExprStmt] ExprStmt -# 1903| getExpr(): [FunctionCall] call to noreturnFunc -# 1903| Type = [VoidType] void -# 1903| ValueCategory = prvalue -# 1905| getStmt(1): [ReturnStmt] return ... -# 1907| [TopLevelFunction] int noreturnTest2(int) -# 1907| : -# 1907| getParameter(0): [Parameter] x -# 1907| Type = [IntType] int -# 1907| getEntryPoint(): [BlockStmt] { ... } -# 1908| getStmt(0): [IfStmt] if (...) ... -# 1908| getCondition(): [LTExpr] ... < ... -# 1908| Type = [BoolType] bool -# 1908| ValueCategory = prvalue -# 1908| getLesserOperand(): [VariableAccess] x -# 1908| Type = [IntType] int -# 1908| ValueCategory = prvalue(load) -# 1908| getGreaterOperand(): [Literal] 10 -# 1908| Type = [IntType] int -# 1908| Value = [Literal] 10 -# 1908| ValueCategory = prvalue -# 1908| getThen(): [BlockStmt] { ... } -# 1909| getStmt(0): [ExprStmt] ExprStmt -# 1909| getExpr(): [FunctionCall] call to noreturnFunc -# 1909| Type = [VoidType] void -# 1909| ValueCategory = prvalue -# 1911| getStmt(1): [ReturnStmt] return ... -# 1911| getExpr(): [VariableAccess] x -# 1911| Type = [IntType] int -# 1911| ValueCategory = prvalue(load) -# 1914| [TopLevelFunction] int static_function(int) -# 1914| : -# 1914| getParameter(0): [Parameter] x -# 1914| Type = [IntType] int -# 1914| getEntryPoint(): [BlockStmt] { ... } -# 1915| getStmt(0): [ReturnStmt] return ... -# 1915| getExpr(): [VariableAccess] x -# 1915| Type = [IntType] int -# 1915| ValueCategory = prvalue(load) -# 1918| [TopLevelFunction] void test_static_functions_with_assignments() -# 1918| : -# 1918| getEntryPoint(): [BlockStmt] { ... } -# 1919| getStmt(0): [DeclStmt] declaration -# 1919| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1919| Type = [Class] C -# 1919| getVariable().getInitializer(): [Initializer] initializer for c -# 1919| getExpr(): [ConstructorCall] call to C -# 1919| Type = [VoidType] void -# 1919| ValueCategory = prvalue -# 1920| getStmt(1): [DeclStmt] declaration -# 1920| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1920| Type = [IntType] int -# 1921| getStmt(2): [ExprStmt] ExprStmt -# 1921| getExpr(): [AssignExpr] ... = ... -# 1921| Type = [IntType] int -# 1921| ValueCategory = lvalue -# 1921| getLValue(): [VariableAccess] x -# 1921| Type = [IntType] int -# 1921| ValueCategory = lvalue -# 1921| getRValue(): [FunctionCall] call to StaticMemberFunction -# 1921| Type = [IntType] int -# 1921| ValueCategory = prvalue -# 1921| getQualifier(): [VariableAccess] c -# 1921| Type = [Class] C -# 1921| ValueCategory = lvalue -# 1921| getArgument(0): [Literal] 10 -# 1921| Type = [IntType] int -# 1921| Value = [Literal] 10 +# 1901| [TopLevelFunction] int noreturnTest(int) +# 1901| : +# 1901| getParameter(0): [Parameter] x +# 1901| Type = [IntType] int +# 1901| getEntryPoint(): [BlockStmt] { ... } +# 1902| getStmt(0): [IfStmt] if (...) ... +# 1902| getCondition(): [LTExpr] ... < ... +# 1902| Type = [BoolType] bool +# 1902| ValueCategory = prvalue +# 1902| getLesserOperand(): [VariableAccess] x +# 1902| Type = [IntType] int +# 1902| ValueCategory = prvalue(load) +# 1902| getGreaterOperand(): [Literal] 10 +# 1902| Type = [IntType] int +# 1902| Value = [Literal] 10 +# 1902| ValueCategory = prvalue +# 1902| getThen(): [BlockStmt] { ... } +# 1903| getStmt(0): [ReturnStmt] return ... +# 1903| getExpr(): [VariableAccess] x +# 1903| Type = [IntType] int +# 1903| ValueCategory = prvalue(load) +# 1904| getElse(): [BlockStmt] { ... } +# 1905| getStmt(0): [ExprStmt] ExprStmt +# 1905| getExpr(): [FunctionCall] call to noreturnFunc +# 1905| Type = [VoidType] void +# 1905| ValueCategory = prvalue +# 1907| getStmt(1): [ReturnStmt] return ... +# 1909| [TopLevelFunction] int noreturnTest2(int) +# 1909| : +# 1909| getParameter(0): [Parameter] x +# 1909| Type = [IntType] int +# 1909| getEntryPoint(): [BlockStmt] { ... } +# 1910| getStmt(0): [IfStmt] if (...) ... +# 1910| getCondition(): [LTExpr] ... < ... +# 1910| Type = [BoolType] bool +# 1910| ValueCategory = prvalue +# 1910| getLesserOperand(): [VariableAccess] x +# 1910| Type = [IntType] int +# 1910| ValueCategory = prvalue(load) +# 1910| getGreaterOperand(): [Literal] 10 +# 1910| Type = [IntType] int +# 1910| Value = [Literal] 10 +# 1910| ValueCategory = prvalue +# 1910| getThen(): [BlockStmt] { ... } +# 1911| getStmt(0): [ExprStmt] ExprStmt +# 1911| getExpr(): [FunctionCall] call to noreturnFunc +# 1911| Type = [VoidType] void +# 1911| ValueCategory = prvalue +# 1913| getStmt(1): [ReturnStmt] return ... +# 1913| getExpr(): [VariableAccess] x +# 1913| Type = [IntType] int +# 1913| ValueCategory = prvalue(load) +# 1916| [TopLevelFunction] int static_function(int) +# 1916| : +# 1916| getParameter(0): [Parameter] x +# 1916| Type = [IntType] int +# 1916| getEntryPoint(): [BlockStmt] { ... } +# 1917| getStmt(0): [ReturnStmt] return ... +# 1917| getExpr(): [VariableAccess] x +# 1917| Type = [IntType] int +# 1917| ValueCategory = prvalue(load) +# 1920| [TopLevelFunction] void test_static_functions_with_assignments() +# 1920| : +# 1920| getEntryPoint(): [BlockStmt] { ... } +# 1921| getStmt(0): [DeclStmt] declaration +# 1921| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1921| Type = [Class] C +# 1921| getVariable().getInitializer(): [Initializer] initializer for c +# 1921| getExpr(): [ConstructorCall] call to C +# 1921| Type = [VoidType] void # 1921| ValueCategory = prvalue -# 1922| getStmt(3): [DeclStmt] declaration -# 1922| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1922| getStmt(1): [DeclStmt] declaration +# 1922| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1922| Type = [IntType] int -# 1923| getStmt(4): [ExprStmt] ExprStmt +# 1923| getStmt(2): [ExprStmt] ExprStmt # 1923| getExpr(): [AssignExpr] ... = ... # 1923| Type = [IntType] int # 1923| ValueCategory = lvalue -# 1923| getLValue(): [VariableAccess] y +# 1923| getLValue(): [VariableAccess] x # 1923| Type = [IntType] int # 1923| ValueCategory = lvalue # 1923| getRValue(): [FunctionCall] call to StaticMemberFunction # 1923| Type = [IntType] int # 1923| ValueCategory = prvalue +# 1923| getQualifier(): [VariableAccess] c +# 1923| Type = [Class] C +# 1923| ValueCategory = lvalue # 1923| getArgument(0): [Literal] 10 # 1923| Type = [IntType] int # 1923| Value = [Literal] 10 # 1923| ValueCategory = prvalue -# 1924| getStmt(5): [DeclStmt] declaration -# 1924| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1924| getStmt(3): [DeclStmt] declaration +# 1924| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1924| Type = [IntType] int -# 1925| getStmt(6): [ExprStmt] ExprStmt +# 1925| getStmt(4): [ExprStmt] ExprStmt # 1925| getExpr(): [AssignExpr] ... = ... # 1925| Type = [IntType] int # 1925| ValueCategory = lvalue -# 1925| getLValue(): [VariableAccess] z +# 1925| getLValue(): [VariableAccess] y # 1925| Type = [IntType] int # 1925| ValueCategory = lvalue -# 1925| getRValue(): [FunctionCall] call to static_function +# 1925| getRValue(): [FunctionCall] call to StaticMemberFunction # 1925| Type = [IntType] int # 1925| ValueCategory = prvalue # 1925| getArgument(0): [Literal] 10 # 1925| Type = [IntType] int # 1925| Value = [Literal] 10 # 1925| ValueCategory = prvalue -# 1926| getStmt(7): [ReturnStmt] return ... -# 1926| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1926| Type = [VoidType] void -# 1926| ValueCategory = prvalue -# 1926| getQualifier(): [VariableAccess] c -# 1926| Type = [Class] C -# 1926| ValueCategory = lvalue -# 1928| [TopLevelFunction] void test_double_assign() -# 1928| : -# 1928| getEntryPoint(): [BlockStmt] { ... } -# 1929| getStmt(0): [DeclStmt] declaration -# 1929| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1929| Type = [IntType] int -# 1929| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j -# 1929| Type = [IntType] int -# 1930| getStmt(1): [ExprStmt] ExprStmt -# 1930| getExpr(): [AssignExpr] ... = ... -# 1930| Type = [IntType] int -# 1930| ValueCategory = lvalue -# 1930| getLValue(): [VariableAccess] i -# 1930| Type = [IntType] int -# 1930| ValueCategory = lvalue -# 1930| getRValue(): [AssignExpr] ... = ... -# 1930| Type = [IntType] int -# 1930| ValueCategory = prvalue(load) -# 1930| getLValue(): [VariableAccess] j -# 1930| Type = [IntType] int -# 1930| ValueCategory = lvalue -# 1930| getRValue(): [Literal] 40 -# 1930| Type = [IntType] int -# 1930| Value = [Literal] 40 -# 1930| ValueCategory = prvalue -# 1931| getStmt(2): [ReturnStmt] return ... -# 1933| [TopLevelFunction] void test_assign_with_assign_operation() -# 1933| : -# 1933| getEntryPoint(): [BlockStmt] { ... } -# 1934| getStmt(0): [DeclStmt] declaration -# 1934| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1934| Type = [IntType] int -# 1934| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j -# 1934| Type = [IntType] int -# 1934| getVariable().getInitializer(): [Initializer] initializer for j -# 1934| getExpr(): [Literal] 0 -# 1934| Type = [IntType] int -# 1934| Value = [Literal] 0 -# 1934| ValueCategory = prvalue -# 1935| getStmt(1): [ExprStmt] ExprStmt -# 1935| getExpr(): [AssignExpr] ... = ... -# 1935| Type = [IntType] int -# 1935| ValueCategory = lvalue -# 1935| getLValue(): [VariableAccess] i -# 1935| Type = [IntType] int -# 1935| ValueCategory = lvalue -# 1935| getRValue(): [AssignAddExpr] ... += ... -# 1935| Type = [IntType] int -# 1935| ValueCategory = prvalue(load) -# 1935| getLValue(): [VariableAccess] j -# 1935| Type = [IntType] int -# 1935| ValueCategory = lvalue -# 1935| getRValue(): [Literal] 40 -# 1935| Type = [IntType] int -# 1935| Value = [Literal] 40 -# 1935| ValueCategory = prvalue -# 1935| getRValue().getFullyConverted(): [ParenthesisExpr] (...) -# 1935| Type = [IntType] int -# 1935| ValueCategory = prvalue(load) -# 1936| getStmt(2): [ReturnStmt] return ... -# 1938| [CopyAssignmentOperator] D& D::operator=(D const&) -# 1938| : +# 1926| getStmt(5): [DeclStmt] declaration +# 1926| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1926| Type = [IntType] int +# 1927| getStmt(6): [ExprStmt] ExprStmt +# 1927| getExpr(): [AssignExpr] ... = ... +# 1927| Type = [IntType] int +# 1927| ValueCategory = lvalue +# 1927| getLValue(): [VariableAccess] z +# 1927| Type = [IntType] int +# 1927| ValueCategory = lvalue +# 1927| getRValue(): [FunctionCall] call to static_function +# 1927| Type = [IntType] int +# 1927| ValueCategory = prvalue +# 1927| getArgument(0): [Literal] 10 +# 1927| Type = [IntType] int +# 1927| Value = [Literal] 10 +# 1927| ValueCategory = prvalue +# 1928| getStmt(7): [ReturnStmt] return ... +# 1928| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1928| Type = [VoidType] void +# 1928| ValueCategory = prvalue +# 1928| getQualifier(): [VariableAccess] c +# 1928| Type = [Class] C +# 1928| ValueCategory = lvalue +# 1930| [TopLevelFunction] void test_double_assign() +# 1930| : +# 1930| getEntryPoint(): [BlockStmt] { ... } +# 1931| getStmt(0): [DeclStmt] declaration +# 1931| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1931| Type = [IntType] int +# 1931| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1931| Type = [IntType] int +# 1932| getStmt(1): [ExprStmt] ExprStmt +# 1932| getExpr(): [AssignExpr] ... = ... +# 1932| Type = [IntType] int +# 1932| ValueCategory = lvalue +# 1932| getLValue(): [VariableAccess] i +# 1932| Type = [IntType] int +# 1932| ValueCategory = lvalue +# 1932| getRValue(): [AssignExpr] ... = ... +# 1932| Type = [IntType] int +# 1932| ValueCategory = prvalue(load) +# 1932| getLValue(): [VariableAccess] j +# 1932| Type = [IntType] int +# 1932| ValueCategory = lvalue +# 1932| getRValue(): [Literal] 40 +# 1932| Type = [IntType] int +# 1932| Value = [Literal] 40 +# 1932| ValueCategory = prvalue +# 1933| getStmt(2): [ReturnStmt] return ... +# 1935| [TopLevelFunction] void test_assign_with_assign_operation() +# 1935| : +# 1935| getEntryPoint(): [BlockStmt] { ... } +# 1936| getStmt(0): [DeclStmt] declaration +# 1936| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1936| Type = [IntType] int +# 1936| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1936| Type = [IntType] int +# 1936| getVariable().getInitializer(): [Initializer] initializer for j +# 1936| getExpr(): [Literal] 0 +# 1936| Type = [IntType] int +# 1936| Value = [Literal] 0 +# 1936| ValueCategory = prvalue +# 1937| getStmt(1): [ExprStmt] ExprStmt +# 1937| getExpr(): [AssignExpr] ... = ... +# 1937| Type = [IntType] int +# 1937| ValueCategory = lvalue +# 1937| getLValue(): [VariableAccess] i +# 1937| Type = [IntType] int +# 1937| ValueCategory = lvalue +# 1937| getRValue(): [AssignAddExpr] ... += ... +# 1937| Type = [IntType] int +# 1937| ValueCategory = prvalue(load) +# 1937| getLValue(): [VariableAccess] j +# 1937| Type = [IntType] int +# 1937| ValueCategory = lvalue +# 1937| getRValue(): [Literal] 40 +# 1937| Type = [IntType] int +# 1937| Value = [Literal] 40 +# 1937| ValueCategory = prvalue +# 1937| getRValue().getFullyConverted(): [ParenthesisExpr] (...) +# 1937| Type = [IntType] int +# 1937| ValueCategory = prvalue(load) +# 1938| getStmt(2): [ReturnStmt] return ... +# 1940| [CopyAssignmentOperator] D& D::operator=(D const&) +# 1940| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const D & -# 1938| [MoveAssignmentOperator] D& D::operator=(D&&) -# 1938| : +# 1940| [MoveAssignmentOperator] D& D::operator=(D&&) +# 1940| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] D && -# 1942| [MemberFunction] D& D::ReferenceStaticMemberFunction() -# 1942| : -# 1942| getEntryPoint(): [BlockStmt] { ... } -# 1943| getStmt(0): [ReturnStmt] return ... -# 1943| getExpr(): [VariableAccess] x -# 1943| Type = [Class] D -# 1943| ValueCategory = lvalue -# 1943| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1943| Type = [LValueReferenceType] D & -# 1943| ValueCategory = prvalue -# 1945| [MemberFunction] D D::ObjectStaticMemberFunction() -# 1945| : -# 1945| getEntryPoint(): [BlockStmt] { ... } -# 1946| getStmt(0): [ReturnStmt] return ... -# 1946| getExpr(): [VariableAccess] x -# 1946| Type = [Class] D -# 1946| ValueCategory = prvalue(load) -# 1950| [TopLevelFunction] void test_static_member_functions_with_reference_return() -# 1950| : -# 1950| getEntryPoint(): [BlockStmt] { ... } -# 1951| getStmt(0): [DeclStmt] declaration -# 1951| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1951| Type = [Class] D -# 1953| getStmt(1): [ExprStmt] ExprStmt -# 1953| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 1953| Type = [LValueReferenceType] D & -# 1953| ValueCategory = prvalue -# 1953| getQualifier(): [VariableAccess] d -# 1953| Type = [Class] D -# 1953| ValueCategory = lvalue -# 1953| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1944| [MemberFunction] D& D::ReferenceStaticMemberFunction() +# 1944| : +# 1944| getEntryPoint(): [BlockStmt] { ... } +# 1945| getStmt(0): [ReturnStmt] return ... +# 1945| getExpr(): [VariableAccess] x +# 1945| Type = [Class] D +# 1945| ValueCategory = lvalue +# 1945| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1945| Type = [LValueReferenceType] D & +# 1945| ValueCategory = prvalue +# 1947| [MemberFunction] D D::ObjectStaticMemberFunction() +# 1947| : +# 1947| getEntryPoint(): [BlockStmt] { ... } +# 1948| getStmt(0): [ReturnStmt] return ... +# 1948| getExpr(): [VariableAccess] x +# 1948| Type = [Class] D +# 1948| ValueCategory = prvalue(load) +# 1952| [TopLevelFunction] void test_static_member_functions_with_reference_return() +# 1952| : +# 1952| getEntryPoint(): [BlockStmt] { ... } +# 1953| getStmt(0): [DeclStmt] declaration +# 1953| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 1953| Type = [Class] D -# 1953| ValueCategory = lvalue -# 1954| getStmt(2): [ExprStmt] ExprStmt -# 1954| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 1954| Type = [LValueReferenceType] D & -# 1954| ValueCategory = prvalue -# 1954| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1954| Type = [Class] D -# 1954| ValueCategory = lvalue -# 1955| getStmt(3): [ExprStmt] ExprStmt -# 1955| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 1955| Type = [Class] D +# 1955| getStmt(1): [ExprStmt] ExprStmt +# 1955| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 1955| Type = [LValueReferenceType] D & # 1955| ValueCategory = prvalue # 1955| getQualifier(): [VariableAccess] d # 1955| Type = [Class] D # 1955| ValueCategory = lvalue -# 1956| getStmt(4): [ExprStmt] ExprStmt -# 1956| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 1956| Type = [Class] D +# 1955| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1955| Type = [Class] D +# 1955| ValueCategory = lvalue +# 1956| getStmt(2): [ExprStmt] ExprStmt +# 1956| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 1956| Type = [LValueReferenceType] D & # 1956| ValueCategory = prvalue -# 1958| getStmt(5): [DeclStmt] declaration -# 1958| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1956| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1956| Type = [Class] D +# 1956| ValueCategory = lvalue +# 1957| getStmt(3): [ExprStmt] ExprStmt +# 1957| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction +# 1957| Type = [Class] D +# 1957| ValueCategory = prvalue +# 1957| getQualifier(): [VariableAccess] d +# 1957| Type = [Class] D +# 1957| ValueCategory = lvalue +# 1958| getStmt(4): [ExprStmt] ExprStmt +# 1958| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction # 1958| Type = [Class] D -# 1959| getStmt(6): [ExprStmt] ExprStmt -# 1959| getExpr(): [AssignExpr] ... = ... -# 1959| Type = [Class] D -# 1959| ValueCategory = lvalue -# 1959| getLValue(): [VariableAccess] x -# 1959| Type = [Class] D -# 1959| ValueCategory = lvalue -# 1959| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction -# 1959| Type = [LValueReferenceType] D & -# 1959| ValueCategory = prvalue -# 1959| getQualifier(): [VariableAccess] d -# 1959| Type = [Class] D -# 1959| ValueCategory = lvalue -# 1959| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1959| Type = [Class] D -# 1959| ValueCategory = prvalue(load) -# 1960| getStmt(7): [DeclStmt] declaration -# 1960| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1958| ValueCategory = prvalue +# 1960| getStmt(5): [DeclStmt] declaration +# 1960| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1960| Type = [Class] D -# 1961| getStmt(8): [ExprStmt] ExprStmt +# 1961| getStmt(6): [ExprStmt] ExprStmt # 1961| getExpr(): [AssignExpr] ... = ... # 1961| Type = [Class] D # 1961| ValueCategory = lvalue -# 1961| getLValue(): [VariableAccess] y +# 1961| getLValue(): [VariableAccess] x # 1961| Type = [Class] D # 1961| ValueCategory = lvalue # 1961| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction # 1961| Type = [LValueReferenceType] D & # 1961| ValueCategory = prvalue +# 1961| getQualifier(): [VariableAccess] d +# 1961| Type = [Class] D +# 1961| ValueCategory = lvalue # 1961| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1961| Type = [Class] D # 1961| ValueCategory = prvalue(load) -# 1962| getStmt(9): [DeclStmt] declaration -# 1962| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j +# 1962| getStmt(7): [DeclStmt] declaration +# 1962| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1962| Type = [Class] D -# 1963| getStmt(10): [ExprStmt] ExprStmt +# 1963| getStmt(8): [ExprStmt] ExprStmt # 1963| getExpr(): [AssignExpr] ... = ... # 1963| Type = [Class] D # 1963| ValueCategory = lvalue -# 1963| getLValue(): [VariableAccess] j +# 1963| getLValue(): [VariableAccess] y # 1963| Type = [Class] D # 1963| ValueCategory = lvalue -# 1963| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction -# 1963| Type = [Class] D +# 1963| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction +# 1963| Type = [LValueReferenceType] D & # 1963| ValueCategory = prvalue -# 1963| getQualifier(): [VariableAccess] d -# 1963| Type = [Class] D -# 1963| ValueCategory = lvalue -# 1964| getStmt(11): [DeclStmt] declaration -# 1964| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k +# 1963| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1963| Type = [Class] D +# 1963| ValueCategory = prvalue(load) +# 1964| getStmt(9): [DeclStmt] declaration +# 1964| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j # 1964| Type = [Class] D -# 1965| getStmt(12): [ExprStmt] ExprStmt +# 1965| getStmt(10): [ExprStmt] ExprStmt # 1965| getExpr(): [AssignExpr] ... = ... # 1965| Type = [Class] D # 1965| ValueCategory = lvalue -# 1965| getLValue(): [VariableAccess] k +# 1965| getLValue(): [VariableAccess] j # 1965| Type = [Class] D # 1965| ValueCategory = lvalue # 1965| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction # 1965| Type = [Class] D # 1965| ValueCategory = prvalue -# 1966| getStmt(13): [ReturnStmt] return ... -# 1968| [TopLevelFunction] void test_volatile() -# 1968| : -# 1968| getEntryPoint(): [BlockStmt] { ... } -# 1969| getStmt(0): [DeclStmt] declaration -# 1969| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1969| Type = [SpecifiedType] volatile int -# 1970| getStmt(1): [ExprStmt] ExprStmt -# 1970| getExpr(): [VariableAccess] x -# 1970| Type = [IntType] int -# 1970| ValueCategory = prvalue(load) -# 1971| getStmt(2): [ReturnStmt] return ... -# 1973| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) -# 1973| : +# 1965| getQualifier(): [VariableAccess] d +# 1965| Type = [Class] D +# 1965| ValueCategory = lvalue +# 1966| getStmt(11): [DeclStmt] declaration +# 1966| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k +# 1966| Type = [Class] D +# 1967| getStmt(12): [ExprStmt] ExprStmt +# 1967| getExpr(): [AssignExpr] ... = ... +# 1967| Type = [Class] D +# 1967| ValueCategory = lvalue +# 1967| getLValue(): [VariableAccess] k +# 1967| Type = [Class] D +# 1967| ValueCategory = lvalue +# 1967| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction +# 1967| Type = [Class] D +# 1967| ValueCategory = prvalue +# 1968| getStmt(13): [ReturnStmt] return ... +# 1970| [TopLevelFunction] void test_volatile() +# 1970| : +# 1970| getEntryPoint(): [BlockStmt] { ... } +# 1971| getStmt(0): [DeclStmt] declaration +# 1971| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1971| Type = [SpecifiedType] volatile int +# 1972| getStmt(1): [ExprStmt] ExprStmt +# 1972| getExpr(): [VariableAccess] x +# 1972| Type = [IntType] int +# 1972| ValueCategory = prvalue(load) +# 1973| getStmt(2): [ReturnStmt] return ... +# 1975| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) +# 1975| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ValCat & -# 1973| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) -# 1973| : +# 1975| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) +# 1975| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] ValCat && -# 1974| [MemberFunction] ValCat& ValCat::lvalue() -# 1974| : -# 1975| [MemberFunction] ValCat&& ValCat::xvalue() -# 1975| : -# 1976| [MemberFunction] ValCat ValCat::prvalue() +# 1976| [MemberFunction] ValCat& ValCat::lvalue() # 1976| : -# 1979| [TopLevelFunction] void value_category_test() -# 1979| : -# 1979| getEntryPoint(): [BlockStmt] { ... } -# 1980| getStmt(0): [DeclStmt] declaration -# 1980| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1980| Type = [Struct] ValCat -# 1982| getStmt(1): [ExprStmt] ExprStmt -# 1982| getExpr(): [AssignExpr] ... = ... +# 1977| [MemberFunction] ValCat&& ValCat::xvalue() +# 1977| : +# 1978| [MemberFunction] ValCat ValCat::prvalue() +# 1978| : +# 1981| [TopLevelFunction] void value_category_test() +# 1981| : +# 1981| getEntryPoint(): [BlockStmt] { ... } +# 1982| getStmt(0): [DeclStmt] declaration +# 1982| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c # 1982| Type = [Struct] ValCat -# 1982| ValueCategory = lvalue -# 1982| getLValue(): [FunctionCall] call to lvalue -# 1982| Type = [LValueReferenceType] ValCat & -# 1982| ValueCategory = prvalue -# 1982| getQualifier(): [VariableAccess] c -# 1982| Type = [Struct] ValCat -# 1982| ValueCategory = lvalue -# 1982| getRValue(): [ClassAggregateLiteral] {...} -# 1982| Type = [Struct] ValCat -# 1982| ValueCategory = prvalue -# 1982| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1982| Type = [Struct] ValCat -# 1982| ValueCategory = lvalue -#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -#-----| Type = [Struct] ValCat -#-----| ValueCategory = prvalue(load) -# 1983| getStmt(2): [ExprStmt] ExprStmt -# 1983| getExpr(): [AssignExpr] ... = ... -# 1983| Type = [Struct] ValCat -# 1983| ValueCategory = lvalue -# 1983| getLValue(): [FunctionCall] call to xvalue -# 1983| Type = [RValueReferenceType] ValCat && -# 1983| ValueCategory = prvalue -# 1983| getQualifier(): [VariableAccess] c -# 1983| Type = [Struct] ValCat -# 1983| ValueCategory = lvalue -# 1983| getRValue(): [ClassAggregateLiteral] {...} -# 1983| Type = [Struct] ValCat -# 1983| ValueCategory = prvalue -# 1983| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1983| Type = [Struct] ValCat -# 1983| ValueCategory = lvalue -#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -#-----| Type = [Struct] ValCat -#-----| ValueCategory = prvalue(load) -# 1984| getStmt(3): [ExprStmt] ExprStmt +# 1984| getStmt(1): [ExprStmt] ExprStmt # 1984| getExpr(): [AssignExpr] ... = ... # 1984| Type = [Struct] ValCat # 1984| ValueCategory = lvalue -# 1984| getLValue(): [FunctionCall] call to prvalue -# 1984| Type = [Struct] ValCat +# 1984| getLValue(): [FunctionCall] call to lvalue +# 1984| Type = [LValueReferenceType] ValCat & # 1984| ValueCategory = prvalue # 1984| getQualifier(): [VariableAccess] c # 1984| Type = [Struct] ValCat @@ -15112,19 +15223,22 @@ ir.cpp: # 1984| getRValue(): [ClassAggregateLiteral] {...} # 1984| Type = [Struct] ValCat # 1984| ValueCategory = prvalue -# 1984| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1984| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1984| Type = [Struct] ValCat # 1984| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1985| getStmt(4): [ExprStmt] ExprStmt +# 1985| getStmt(2): [ExprStmt] ExprStmt # 1985| getExpr(): [AssignExpr] ... = ... # 1985| Type = [Struct] ValCat # 1985| ValueCategory = lvalue -# 1985| getLValue(): [FunctionCall] call to lvalue -# 1985| Type = [LValueReferenceType] ValCat & +# 1985| getLValue(): [FunctionCall] call to xvalue +# 1985| Type = [RValueReferenceType] ValCat && # 1985| ValueCategory = prvalue +# 1985| getQualifier(): [VariableAccess] c +# 1985| Type = [Struct] ValCat +# 1985| ValueCategory = lvalue # 1985| getRValue(): [ClassAggregateLiteral] {...} # 1985| Type = [Struct] ValCat # 1985| ValueCategory = prvalue @@ -15134,127 +15248,123 @@ ir.cpp: #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1986| getStmt(5): [ExprStmt] ExprStmt +# 1986| getStmt(3): [ExprStmt] ExprStmt # 1986| getExpr(): [AssignExpr] ... = ... # 1986| Type = [Struct] ValCat # 1986| ValueCategory = lvalue -# 1986| getLValue(): [FunctionCall] call to xvalue -# 1986| Type = [RValueReferenceType] ValCat && +# 1986| getLValue(): [FunctionCall] call to prvalue +# 1986| Type = [Struct] ValCat # 1986| ValueCategory = prvalue +# 1986| getQualifier(): [VariableAccess] c +# 1986| Type = [Struct] ValCat +# 1986| ValueCategory = lvalue # 1986| getRValue(): [ClassAggregateLiteral] {...} # 1986| Type = [Struct] ValCat # 1986| ValueCategory = prvalue -# 1986| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1986| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1986| Type = [Struct] ValCat # 1986| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1987| getStmt(6): [ExprStmt] ExprStmt +# 1987| getStmt(4): [ExprStmt] ExprStmt # 1987| getExpr(): [AssignExpr] ... = ... # 1987| Type = [Struct] ValCat # 1987| ValueCategory = lvalue -# 1987| getLValue(): [FunctionCall] call to prvalue -# 1987| Type = [Struct] ValCat +# 1987| getLValue(): [FunctionCall] call to lvalue +# 1987| Type = [LValueReferenceType] ValCat & # 1987| ValueCategory = prvalue # 1987| getRValue(): [ClassAggregateLiteral] {...} # 1987| Type = [Struct] ValCat # 1987| ValueCategory = prvalue -# 1987| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1987| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1987| Type = [Struct] ValCat # 1987| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1988| getStmt(7): [ReturnStmt] return ... -# 1990| [TopLevelFunction] void SetStaticFuncPtr() -# 1990| : -# 1990| getEntryPoint(): [BlockStmt] { ... } -# 1991| getStmt(0): [DeclStmt] declaration -# 1991| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1991| Type = [Class] C -# 1991| getVariable().getInitializer(): [Initializer] initializer for c -# 1991| getExpr(): [ConstructorCall] call to C -# 1991| Type = [VoidType] void -# 1991| ValueCategory = prvalue -# 1992| getStmt(1): [DeclStmt] declaration -# 1992| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn -# 1992| Type = [FunctionPointerType] ..(*)(..) -# 1992| getVariable().getInitializer(): [Initializer] initializer for pfn -# 1992| getExpr(): [FunctionAccess] StaticMemberFunction -# 1992| Type = [FunctionPointerType] ..(*)(..) -# 1992| ValueCategory = prvalue(load) -# 1993| getStmt(2): [ExprStmt] ExprStmt -# 1993| getExpr(): [AssignExpr] ... = ... -# 1993| Type = [FunctionPointerType] ..(*)(..) -# 1993| ValueCategory = lvalue -# 1993| getLValue(): [VariableAccess] pfn -# 1993| Type = [FunctionPointerType] ..(*)(..) -# 1993| ValueCategory = lvalue -# 1993| getRValue(): [FunctionAccess] StaticMemberFunction -# 1993| Type = [FunctionPointerType] ..(*)(..) -# 1993| ValueCategory = prvalue(load) -# 1993| getQualifier(): [VariableAccess] c -# 1993| Type = [Class] C -# 1993| ValueCategory = lvalue -# 1994| getStmt(3): [ReturnStmt] return ... -# 1994| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1994| Type = [VoidType] void -# 1994| ValueCategory = prvalue -# 1994| getQualifier(): [VariableAccess] c -# 1994| Type = [Class] C -# 1994| ValueCategory = lvalue -# 1996| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) -# 1996| : -# 1996| getParameter(0): [Parameter] a -# 1996| Type = [BoolType] bool -# 1996| getParameter(1): [Parameter] x -# 1996| Type = [IntType] int -# 1996| getParameter(2): [Parameter] y -# 1996| Type = [IntType] int -# 1996| getParameter(3): [Parameter] z -# 1996| Type = [IntType] int -# 1996| getEntryPoint(): [BlockStmt] { ... } -# 1997| getStmt(0): [ExprStmt] ExprStmt -# 1997| getExpr(): [AssignExpr] ... = ... -# 1997| Type = [IntType] int -# 1997| ValueCategory = lvalue -# 1997| getLValue(): [VariableAccess] z -# 1997| Type = [IntType] int -# 1997| ValueCategory = lvalue -# 1997| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1997| Type = [IntType] int -# 1997| ValueCategory = prvalue(load) -# 1997| getCondition(): [VariableAccess] a -# 1997| Type = [BoolType] bool -# 1997| ValueCategory = prvalue(load) -# 1997| getThen(): [VariableAccess] x -# 1997| Type = [IntType] int -# 1997| ValueCategory = prvalue(load) -# 1997| getElse(): [VariableAccess] y -# 1997| Type = [IntType] int -# 1997| ValueCategory = prvalue(load) -# 1998| getStmt(1): [ExprStmt] ExprStmt -# 1998| getExpr(): [AssignExpr] ... = ... -# 1998| Type = [IntType] int -# 1998| ValueCategory = lvalue -# 1998| getLValue(): [VariableAccess] z -# 1998| Type = [IntType] int -# 1998| ValueCategory = lvalue -# 1998| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1998| Type = [IntType] int -# 1998| ValueCategory = prvalue(load) -# 1998| getCondition(): [VariableAccess] a -# 1998| Type = [BoolType] bool -# 1998| ValueCategory = prvalue(load) -# 1998| getThen(): [VariableAccess] x -# 1998| Type = [IntType] int -# 1998| ValueCategory = prvalue(load) -# 1998| getElse(): [Literal] 5 -# 1998| Type = [IntType] int -# 1998| Value = [Literal] 5 -# 1998| ValueCategory = prvalue -# 1999| getStmt(2): [ExprStmt] ExprStmt +# 1988| getStmt(5): [ExprStmt] ExprStmt +# 1988| getExpr(): [AssignExpr] ... = ... +# 1988| Type = [Struct] ValCat +# 1988| ValueCategory = lvalue +# 1988| getLValue(): [FunctionCall] call to xvalue +# 1988| Type = [RValueReferenceType] ValCat && +# 1988| ValueCategory = prvalue +# 1988| getRValue(): [ClassAggregateLiteral] {...} +# 1988| Type = [Struct] ValCat +# 1988| ValueCategory = prvalue +# 1988| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1988| Type = [Struct] ValCat +# 1988| ValueCategory = lvalue +#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [Struct] ValCat +#-----| ValueCategory = prvalue(load) +# 1989| getStmt(6): [ExprStmt] ExprStmt +# 1989| getExpr(): [AssignExpr] ... = ... +# 1989| Type = [Struct] ValCat +# 1989| ValueCategory = lvalue +# 1989| getLValue(): [FunctionCall] call to prvalue +# 1989| Type = [Struct] ValCat +# 1989| ValueCategory = prvalue +# 1989| getRValue(): [ClassAggregateLiteral] {...} +# 1989| Type = [Struct] ValCat +# 1989| ValueCategory = prvalue +# 1989| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1989| Type = [Struct] ValCat +# 1989| ValueCategory = lvalue +#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [Struct] ValCat +#-----| ValueCategory = prvalue(load) +# 1990| getStmt(7): [ReturnStmt] return ... +# 1992| [TopLevelFunction] void SetStaticFuncPtr() +# 1992| : +# 1992| getEntryPoint(): [BlockStmt] { ... } +# 1993| getStmt(0): [DeclStmt] declaration +# 1993| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1993| Type = [Class] C +# 1993| getVariable().getInitializer(): [Initializer] initializer for c +# 1993| getExpr(): [ConstructorCall] call to C +# 1993| Type = [VoidType] void +# 1993| ValueCategory = prvalue +# 1994| getStmt(1): [DeclStmt] declaration +# 1994| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn +# 1994| Type = [FunctionPointerType] ..(*)(..) +# 1994| getVariable().getInitializer(): [Initializer] initializer for pfn +# 1994| getExpr(): [FunctionAccess] StaticMemberFunction +# 1994| Type = [FunctionPointerType] ..(*)(..) +# 1994| ValueCategory = prvalue(load) +# 1995| getStmt(2): [ExprStmt] ExprStmt +# 1995| getExpr(): [AssignExpr] ... = ... +# 1995| Type = [FunctionPointerType] ..(*)(..) +# 1995| ValueCategory = lvalue +# 1995| getLValue(): [VariableAccess] pfn +# 1995| Type = [FunctionPointerType] ..(*)(..) +# 1995| ValueCategory = lvalue +# 1995| getRValue(): [FunctionAccess] StaticMemberFunction +# 1995| Type = [FunctionPointerType] ..(*)(..) +# 1995| ValueCategory = prvalue(load) +# 1995| getQualifier(): [VariableAccess] c +# 1995| Type = [Class] C +# 1995| ValueCategory = lvalue +# 1996| getStmt(3): [ReturnStmt] return ... +# 1996| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1996| Type = [VoidType] void +# 1996| ValueCategory = prvalue +# 1996| getQualifier(): [VariableAccess] c +# 1996| Type = [Class] C +# 1996| ValueCategory = lvalue +# 1998| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) +# 1998| : +# 1998| getParameter(0): [Parameter] a +# 1998| Type = [BoolType] bool +# 1998| getParameter(1): [Parameter] x +# 1998| Type = [IntType] int +# 1998| getParameter(2): [Parameter] y +# 1998| Type = [IntType] int +# 1998| getParameter(3): [Parameter] z +# 1998| Type = [IntType] int +# 1998| getEntryPoint(): [BlockStmt] { ... } +# 1999| getStmt(0): [ExprStmt] ExprStmt # 1999| getExpr(): [AssignExpr] ... = ... # 1999| Type = [IntType] int # 1999| ValueCategory = lvalue @@ -15263,110 +15373,101 @@ ir.cpp: # 1999| ValueCategory = lvalue # 1999| getRValue(): [ConditionalExpr] ... ? ... : ... # 1999| Type = [IntType] int -# 1999| ValueCategory = prvalue +# 1999| ValueCategory = prvalue(load) # 1999| getCondition(): [VariableAccess] a # 1999| Type = [BoolType] bool # 1999| ValueCategory = prvalue(load) -# 1999| getThen(): [Literal] 3 +# 1999| getThen(): [VariableAccess] x # 1999| Type = [IntType] int -# 1999| Value = [Literal] 3 -# 1999| ValueCategory = prvalue -# 1999| getElse(): [Literal] 5 +# 1999| ValueCategory = prvalue(load) +# 1999| getElse(): [VariableAccess] y # 1999| Type = [IntType] int -# 1999| Value = [Literal] 5 -# 1999| ValueCategory = prvalue -# 2000| getStmt(3): [ExprStmt] ExprStmt +# 1999| ValueCategory = prvalue(load) +# 2000| getStmt(1): [ExprStmt] ExprStmt # 2000| getExpr(): [AssignExpr] ... = ... # 2000| Type = [IntType] int # 2000| ValueCategory = lvalue -# 2000| getLValue(): [ConditionalExpr] ... ? ... : ... +# 2000| getLValue(): [VariableAccess] z # 2000| Type = [IntType] int # 2000| ValueCategory = lvalue +# 2000| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2000| Type = [IntType] int +# 2000| ValueCategory = prvalue(load) # 2000| getCondition(): [VariableAccess] a # 2000| Type = [BoolType] bool # 2000| ValueCategory = prvalue(load) # 2000| getThen(): [VariableAccess] x # 2000| Type = [IntType] int -# 2000| ValueCategory = lvalue -# 2000| getElse(): [VariableAccess] y +# 2000| ValueCategory = prvalue(load) +# 2000| getElse(): [Literal] 5 # 2000| Type = [IntType] int -# 2000| ValueCategory = lvalue -# 2000| getRValue(): [Literal] 7 -# 2000| Type = [IntType] int -# 2000| Value = [Literal] 7 -# 2000| ValueCategory = prvalue -# 2000| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2000| Type = [IntType] int -# 2000| ValueCategory = lvalue -# 2001| getStmt(4): [ReturnStmt] return ... -# 2003| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) -# 2003| : +# 2000| Value = [Literal] 5 +# 2000| ValueCategory = prvalue +# 2001| getStmt(2): [ExprStmt] ExprStmt +# 2001| getExpr(): [AssignExpr] ... = ... +# 2001| Type = [IntType] int +# 2001| ValueCategory = lvalue +# 2001| getLValue(): [VariableAccess] z +# 2001| Type = [IntType] int +# 2001| ValueCategory = lvalue +# 2001| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2001| Type = [IntType] int +# 2001| ValueCategory = prvalue +# 2001| getCondition(): [VariableAccess] a +# 2001| Type = [BoolType] bool +# 2001| ValueCategory = prvalue(load) +# 2001| getThen(): [Literal] 3 +# 2001| Type = [IntType] int +# 2001| Value = [Literal] 3 +# 2001| ValueCategory = prvalue +# 2001| getElse(): [Literal] 5 +# 2001| Type = [IntType] int +# 2001| Value = [Literal] 5 +# 2001| ValueCategory = prvalue +# 2002| getStmt(3): [ExprStmt] ExprStmt +# 2002| getExpr(): [AssignExpr] ... = ... +# 2002| Type = [IntType] int +# 2002| ValueCategory = lvalue +# 2002| getLValue(): [ConditionalExpr] ... ? ... : ... +# 2002| Type = [IntType] int +# 2002| ValueCategory = lvalue +# 2002| getCondition(): [VariableAccess] a +# 2002| Type = [BoolType] bool +# 2002| ValueCategory = prvalue(load) +# 2002| getThen(): [VariableAccess] x +# 2002| Type = [IntType] int +# 2002| ValueCategory = lvalue +# 2002| getElse(): [VariableAccess] y +# 2002| Type = [IntType] int +# 2002| ValueCategory = lvalue +# 2002| getRValue(): [Literal] 7 +# 2002| Type = [IntType] int +# 2002| Value = [Literal] 7 +# 2002| ValueCategory = prvalue +# 2002| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2002| Type = [IntType] int +# 2002| ValueCategory = lvalue +# 2003| getStmt(4): [ReturnStmt] return ... +# 2005| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) +# 2005| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryPodObj & -# 2003| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) -# 2003| : +# 2005| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) +# 2005| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] TernaryPodObj && -# 2006| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2006| : -# 2006| getParameter(0): [Parameter] a -# 2006| Type = [BoolType] bool -# 2006| getParameter(1): [Parameter] x -# 2006| Type = [Struct] TernaryPodObj -# 2006| getParameter(2): [Parameter] y -# 2006| Type = [Struct] TernaryPodObj -# 2006| getParameter(3): [Parameter] z -# 2006| Type = [Struct] TernaryPodObj -# 2006| getEntryPoint(): [BlockStmt] { ... } -# 2007| getStmt(0): [ExprStmt] ExprStmt -# 2007| getExpr(): [AssignExpr] ... = ... -# 2007| Type = [Struct] TernaryPodObj -# 2007| ValueCategory = lvalue -# 2007| getLValue(): [VariableAccess] z -# 2007| Type = [Struct] TernaryPodObj -# 2007| ValueCategory = lvalue -# 2007| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2007| Type = [Struct] TernaryPodObj -# 2007| ValueCategory = prvalue(load) -# 2007| getCondition(): [VariableAccess] a -# 2007| Type = [BoolType] bool -# 2007| ValueCategory = prvalue(load) -# 2007| getThen(): [VariableAccess] x -# 2007| Type = [Struct] TernaryPodObj -# 2007| ValueCategory = prvalue(load) -# 2007| getElse(): [VariableAccess] y -# 2007| Type = [Struct] TernaryPodObj -# 2007| ValueCategory = prvalue(load) -# 2008| getStmt(1): [ExprStmt] ExprStmt -# 2008| getExpr(): [AssignExpr] ... = ... -# 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = lvalue -# 2008| getLValue(): [VariableAccess] z -# 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = lvalue -# 2008| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = prvalue -# 2008| getCondition(): [VariableAccess] a -# 2008| Type = [BoolType] bool -# 2008| ValueCategory = prvalue(load) -# 2008| getThen(): [VariableAccess] x -# 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = prvalue(load) -# 2008| getElse(): [Literal] 0 -# 2008| Type = [Struct] TernaryPodObj -# 2008| Value = [Literal] 0 -# 2008| ValueCategory = prvalue -# 2008| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = prvalue(load) -# 2008| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = prvalue(load) -# 2008| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = prvalue(load) -# 2009| getStmt(2): [ExprStmt] ExprStmt +# 2008| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2008| : +# 2008| getParameter(0): [Parameter] a +# 2008| Type = [BoolType] bool +# 2008| getParameter(1): [Parameter] x +# 2008| Type = [Struct] TernaryPodObj +# 2008| getParameter(2): [Parameter] y +# 2008| Type = [Struct] TernaryPodObj +# 2008| getParameter(3): [Parameter] z +# 2008| Type = [Struct] TernaryPodObj +# 2008| getEntryPoint(): [BlockStmt] { ... } +# 2009| getStmt(0): [ExprStmt] ExprStmt # 2009| getExpr(): [AssignExpr] ... = ... # 2009| Type = [Struct] TernaryPodObj # 2009| ValueCategory = lvalue @@ -15375,62 +15476,110 @@ ir.cpp: # 2009| ValueCategory = lvalue # 2009| getRValue(): [ConditionalExpr] ... ? ... : ... # 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = prvalue +# 2009| ValueCategory = prvalue(load) # 2009| getCondition(): [VariableAccess] a # 2009| Type = [BoolType] bool # 2009| ValueCategory = prvalue(load) -# 2009| getThen(): [Literal] 0 -# 2009| Type = [Struct] TernaryPodObj -# 2009| Value = [Literal] 0 -# 2009| ValueCategory = prvalue -# 2009| getElse(): [Literal] 0 -# 2009| Type = [Struct] TernaryPodObj -# 2009| Value = [Literal] 0 -# 2009| ValueCategory = prvalue -# 2009| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2009| getThen(): [VariableAccess] x # 2009| Type = [Struct] TernaryPodObj # 2009| ValueCategory = prvalue(load) -# 2009| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2009| getElse(): [VariableAccess] y # 2009| Type = [Struct] TernaryPodObj # 2009| ValueCategory = prvalue(load) -# 2009| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = prvalue(load) -# 2010| getStmt(3): [ExprStmt] ExprStmt +# 2010| getStmt(1): [ExprStmt] ExprStmt # 2010| getExpr(): [AssignExpr] ... = ... # 2010| Type = [Struct] TernaryPodObj # 2010| ValueCategory = lvalue -# 2010| getLValue(): [AssignExpr] ... = ... +# 2010| getLValue(): [VariableAccess] z # 2010| Type = [Struct] TernaryPodObj # 2010| ValueCategory = lvalue -# 2010| getLValue(): [VariableAccess] z +# 2010| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2010| Type = [Struct] TernaryPodObj +# 2010| ValueCategory = prvalue +# 2010| getCondition(): [VariableAccess] a +# 2010| Type = [BoolType] bool +# 2010| ValueCategory = prvalue(load) +# 2010| getThen(): [VariableAccess] x # 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = lvalue -# 2010| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2010| ValueCategory = prvalue(load) +# 2010| getElse(): [Literal] 0 +# 2010| Type = [Struct] TernaryPodObj +# 2010| Value = [Literal] 0 +# 2010| ValueCategory = prvalue +# 2010| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2010| Type = [Struct] TernaryPodObj +# 2010| ValueCategory = prvalue(load) +# 2010| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2010| Type = [Struct] TernaryPodObj # 2010| ValueCategory = prvalue(load) -# 2010| getCondition(): [VariableAccess] a -# 2010| Type = [BoolType] bool -# 2010| ValueCategory = prvalue(load) -# 2010| getThen(): [VariableAccess] x -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue(load) -# 2010| getElse(): [VariableAccess] y -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue(load) -# 2010| getRValue(): [Literal] 0 -# 2010| Type = [Struct] TernaryPodObj -# 2010| Value = [Literal] 0 -# 2010| ValueCategory = prvalue -# 2010| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = lvalue # 2010| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2010| Type = [Struct] TernaryPodObj # 2010| ValueCategory = prvalue(load) -# 2011| getStmt(4): [ReturnStmt] return ... -# 2013| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2013| : +# 2011| getStmt(2): [ExprStmt] ExprStmt +# 2011| getExpr(): [AssignExpr] ... = ... +# 2011| Type = [Struct] TernaryPodObj +# 2011| ValueCategory = lvalue +# 2011| getLValue(): [VariableAccess] z +# 2011| Type = [Struct] TernaryPodObj +# 2011| ValueCategory = lvalue +# 2011| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2011| Type = [Struct] TernaryPodObj +# 2011| ValueCategory = prvalue +# 2011| getCondition(): [VariableAccess] a +# 2011| Type = [BoolType] bool +# 2011| ValueCategory = prvalue(load) +# 2011| getThen(): [Literal] 0 +# 2011| Type = [Struct] TernaryPodObj +# 2011| Value = [Literal] 0 +# 2011| ValueCategory = prvalue +# 2011| getElse(): [Literal] 0 +# 2011| Type = [Struct] TernaryPodObj +# 2011| Value = [Literal] 0 +# 2011| ValueCategory = prvalue +# 2011| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2011| Type = [Struct] TernaryPodObj +# 2011| ValueCategory = prvalue(load) +# 2011| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2011| Type = [Struct] TernaryPodObj +# 2011| ValueCategory = prvalue(load) +# 2011| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2011| Type = [Struct] TernaryPodObj +# 2011| ValueCategory = prvalue(load) +# 2012| getStmt(3): [ExprStmt] ExprStmt +# 2012| getExpr(): [AssignExpr] ... = ... +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = lvalue +# 2012| getLValue(): [AssignExpr] ... = ... +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = lvalue +# 2012| getLValue(): [VariableAccess] z +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = lvalue +# 2012| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = prvalue(load) +# 2012| getCondition(): [VariableAccess] a +# 2012| Type = [BoolType] bool +# 2012| ValueCategory = prvalue(load) +# 2012| getThen(): [VariableAccess] x +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = prvalue(load) +# 2012| getElse(): [VariableAccess] y +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = prvalue(load) +# 2012| getRValue(): [Literal] 0 +# 2012| Type = [Struct] TernaryPodObj +# 2012| Value = [Literal] 0 +# 2012| ValueCategory = prvalue +# 2012| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = lvalue +# 2012| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2012| Type = [Struct] TernaryPodObj +# 2012| ValueCategory = prvalue(load) +# 2013| getStmt(4): [ReturnStmt] return ... +# 2015| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2015| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & #-----| getEntryPoint(): [BlockStmt] { ... } @@ -15444,112 +15593,35 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] TernaryNonPodObj & #-----| ValueCategory = prvalue -# 2013| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() -# 2013| : -# 2013| : -# 2013| getEntryPoint(): [BlockStmt] { ... } -# 2013| getStmt(0): [ReturnStmt] return ... -# 2013| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2013| : +# 2015| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() +# 2015| : +# 2015| : +# 2015| getEntryPoint(): [BlockStmt] { ... } +# 2015| getStmt(0): [ReturnStmt] return ... +# 2015| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2015| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2013| : -# 2013| getEntryPoint(): [BlockStmt] { ... } -# 2013| getStmt(0): [ReturnStmt] return ... -# 2014| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() -# 2014| : -# 2014| getEntryPoint(): [BlockStmt] { ... } -# 2014| getStmt(0): [ReturnStmt] return ... -# 2014| : -# 2017| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2017| : -# 2017| getParameter(0): [Parameter] a -# 2017| Type = [BoolType] bool -# 2017| getParameter(1): [Parameter] x -# 2017| Type = [Struct] TernaryNonPodObj -# 2017| getParameter(2): [Parameter] y -# 2017| Type = [Struct] TernaryNonPodObj -# 2017| getParameter(3): [Parameter] z -# 2017| Type = [Struct] TernaryNonPodObj -# 2017| getEntryPoint(): [BlockStmt] { ... } -# 2018| getStmt(0): [ExprStmt] ExprStmt -# 2018| getExpr(): [FunctionCall] call to operator= -# 2018| Type = [LValueReferenceType] TernaryNonPodObj & -# 2018| ValueCategory = prvalue -# 2018| getQualifier(): [VariableAccess] z -# 2018| Type = [Struct] TernaryNonPodObj -# 2018| ValueCategory = lvalue -# 2018| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2018| Type = [Struct] TernaryNonPodObj -# 2018| ValueCategory = lvalue -# 2018| getCondition(): [VariableAccess] a -# 2018| Type = [BoolType] bool -# 2018| ValueCategory = prvalue(load) -# 2018| getThen(): [VariableAccess] x -# 2018| Type = [Struct] TernaryNonPodObj -# 2018| ValueCategory = lvalue -# 2018| getElse(): [VariableAccess] y -# 2018| Type = [Struct] TernaryNonPodObj -# 2018| ValueCategory = lvalue -# 2018| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2018| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2018| ValueCategory = prvalue -# 2018| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2018| Conversion = [GlvalueConversion] glvalue conversion -# 2018| Type = [SpecifiedType] const TernaryNonPodObj -# 2018| ValueCategory = lvalue -# 2018| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2018| Type = [Struct] TernaryNonPodObj -# 2018| ValueCategory = lvalue -# 2019| getStmt(1): [ExprStmt] ExprStmt -# 2019| getExpr(): [FunctionCall] call to operator= -# 2019| Type = [LValueReferenceType] TernaryNonPodObj & -# 2019| ValueCategory = prvalue -# 2019| getQualifier(): [VariableAccess] z -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = lvalue -# 2019| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = prvalue -# 2019| getCondition(): [VariableAccess] a -# 2019| Type = [BoolType] bool -# 2019| ValueCategory = prvalue(load) -# 2019| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2019| Type = [VoidType] void -# 2019| ValueCategory = prvalue -# 2019| getArgument(0): [VariableAccess] x -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = lvalue -# 2019| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2019| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2019| ValueCategory = prvalue -# 2019| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2019| Conversion = [GlvalueConversion] glvalue conversion -# 2019| Type = [SpecifiedType] const TernaryNonPodObj -# 2019| ValueCategory = lvalue -# 2019| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2019| Type = [VoidType] void -# 2019| ValueCategory = prvalue -# 2019| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = prvalue(load) -# 2019| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = prvalue(load) -# 2019| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2019| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2019| ValueCategory = prvalue -# 2019| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2019| Conversion = [GlvalueConversion] glvalue conversion -# 2019| Type = [SpecifiedType] const TernaryNonPodObj -# 2019| ValueCategory = lvalue -# 2019| getExpr(): [TemporaryObjectExpr] temporary object -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = lvalue -# 2019| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = lvalue -# 2020| getStmt(2): [ExprStmt] ExprStmt +# 2015| : +# 2015| getEntryPoint(): [BlockStmt] { ... } +# 2015| getStmt(0): [ReturnStmt] return ... +# 2016| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() +# 2016| : +# 2016| getEntryPoint(): [BlockStmt] { ... } +# 2016| getStmt(0): [ReturnStmt] return ... +# 2016| : +# 2019| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2019| : +# 2019| getParameter(0): [Parameter] a +# 2019| Type = [BoolType] bool +# 2019| getParameter(1): [Parameter] x +# 2019| Type = [Struct] TernaryNonPodObj +# 2019| getParameter(2): [Parameter] y +# 2019| Type = [Struct] TernaryNonPodObj +# 2019| getParameter(3): [Parameter] z +# 2019| Type = [Struct] TernaryNonPodObj +# 2019| getEntryPoint(): [BlockStmt] { ... } +# 2020| getStmt(0): [ExprStmt] ExprStmt # 2020| getExpr(): [FunctionCall] call to operator= # 2020| Type = [LValueReferenceType] TernaryNonPodObj & # 2020| ValueCategory = prvalue @@ -15558,22 +15630,16 @@ ir.cpp: # 2020| ValueCategory = lvalue # 2020| getArgument(0): [ConditionalExpr] ... ? ... : ... # 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = prvalue +# 2020| ValueCategory = lvalue # 2020| getCondition(): [VariableAccess] a # 2020| Type = [BoolType] bool # 2020| ValueCategory = prvalue(load) -# 2020| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2020| Type = [VoidType] void -# 2020| ValueCategory = prvalue -# 2020| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2020| Type = [VoidType] void -# 2020| ValueCategory = prvalue -# 2020| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2020| getThen(): [VariableAccess] x # 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = prvalue(load) -# 2020| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2020| ValueCategory = lvalue +# 2020| getElse(): [VariableAccess] y # 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = prvalue(load) +# 2020| ValueCategory = lvalue # 2020| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 2020| Type = [LValueReferenceType] const TernaryNonPodObj & # 2020| ValueCategory = prvalue @@ -15581,50 +15647,44 @@ ir.cpp: # 2020| Conversion = [GlvalueConversion] glvalue conversion # 2020| Type = [SpecifiedType] const TernaryNonPodObj # 2020| ValueCategory = lvalue -# 2020| getExpr(): [TemporaryObjectExpr] temporary object -# 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = lvalue # 2020| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 2020| Type = [Struct] TernaryNonPodObj # 2020| ValueCategory = lvalue -# 2021| getStmt(3): [ExprStmt] ExprStmt +# 2021| getStmt(1): [ExprStmt] ExprStmt # 2021| getExpr(): [FunctionCall] call to operator= # 2021| Type = [LValueReferenceType] TernaryNonPodObj & # 2021| ValueCategory = prvalue -# 2021| getQualifier(): [FunctionCall] call to operator= -# 2021| Type = [LValueReferenceType] TernaryNonPodObj & +# 2021| getQualifier(): [VariableAccess] z +# 2021| Type = [Struct] TernaryNonPodObj +# 2021| ValueCategory = lvalue +# 2021| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2021| Type = [Struct] TernaryNonPodObj # 2021| ValueCategory = prvalue -# 2021| getQualifier(): [VariableAccess] z -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getCondition(): [VariableAccess] a -# 2021| Type = [BoolType] bool -# 2021| ValueCategory = prvalue(load) -# 2021| getThen(): [VariableAccess] x -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getElse(): [VariableAccess] y +# 2021| getCondition(): [VariableAccess] a +# 2021| Type = [BoolType] bool +# 2021| ValueCategory = prvalue(load) +# 2021| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2021| Type = [VoidType] void +# 2021| ValueCategory = prvalue +# 2021| getArgument(0): [VariableAccess] x # 2021| Type = [Struct] TernaryNonPodObj # 2021| ValueCategory = lvalue -# 2021| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2021| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2021| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2021| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2021| ValueCategory = prvalue +# 2021| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2021| Conversion = [GlvalueConversion] glvalue conversion +# 2021| Type = [SpecifiedType] const TernaryNonPodObj +# 2021| ValueCategory = lvalue +# 2021| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2021| Type = [VoidType] void # 2021| ValueCategory = prvalue -# 2021| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2021| Conversion = [GlvalueConversion] glvalue conversion -# 2021| Type = [SpecifiedType] const TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getArgument(0): [ConstructorCall] call to TernaryNonPodObj -# 2021| Type = [VoidType] void -# 2021| ValueCategory = prvalue -# 2021| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2021| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue +# 2021| ValueCategory = prvalue(load) +# 2021| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2021| Type = [Struct] TernaryNonPodObj +# 2021| ValueCategory = prvalue(load) # 2021| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 2021| Type = [LValueReferenceType] const TernaryNonPodObj & # 2021| ValueCategory = prvalue @@ -15638,525 +15698,928 @@ ir.cpp: # 2021| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 2021| Type = [Struct] TernaryNonPodObj # 2021| ValueCategory = lvalue -# 2022| getStmt(4): [ReturnStmt] return ... -# 2024| [TopLevelFunction] void CommaTestHelper(unsigned int) -# 2024| : -# 2024| getParameter(0): [Parameter] (unnamed parameter 0) -# 2024| Type = [IntType] unsigned int -# 2026| [TopLevelFunction] unsigned int CommaTest(unsigned int) +# 2022| getStmt(2): [ExprStmt] ExprStmt +# 2022| getExpr(): [FunctionCall] call to operator= +# 2022| Type = [LValueReferenceType] TernaryNonPodObj & +# 2022| ValueCategory = prvalue +# 2022| getQualifier(): [VariableAccess] z +# 2022| Type = [Struct] TernaryNonPodObj +# 2022| ValueCategory = lvalue +# 2022| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2022| Type = [Struct] TernaryNonPodObj +# 2022| ValueCategory = prvalue +# 2022| getCondition(): [VariableAccess] a +# 2022| Type = [BoolType] bool +# 2022| ValueCategory = prvalue(load) +# 2022| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2022| Type = [VoidType] void +# 2022| ValueCategory = prvalue +# 2022| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2022| Type = [VoidType] void +# 2022| ValueCategory = prvalue +# 2022| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2022| Type = [Struct] TernaryNonPodObj +# 2022| ValueCategory = prvalue(load) +# 2022| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2022| Type = [Struct] TernaryNonPodObj +# 2022| ValueCategory = prvalue(load) +# 2022| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2022| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2022| ValueCategory = prvalue +# 2022| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2022| Conversion = [GlvalueConversion] glvalue conversion +# 2022| Type = [SpecifiedType] const TernaryNonPodObj +# 2022| ValueCategory = lvalue +# 2022| getExpr(): [TemporaryObjectExpr] temporary object +# 2022| Type = [Struct] TernaryNonPodObj +# 2022| ValueCategory = lvalue +# 2022| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2022| Type = [Struct] TernaryNonPodObj +# 2022| ValueCategory = lvalue +# 2023| getStmt(3): [ExprStmt] ExprStmt +# 2023| getExpr(): [FunctionCall] call to operator= +# 2023| Type = [LValueReferenceType] TernaryNonPodObj & +# 2023| ValueCategory = prvalue +# 2023| getQualifier(): [FunctionCall] call to operator= +# 2023| Type = [LValueReferenceType] TernaryNonPodObj & +# 2023| ValueCategory = prvalue +# 2023| getQualifier(): [VariableAccess] z +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getCondition(): [VariableAccess] a +# 2023| Type = [BoolType] bool +# 2023| ValueCategory = prvalue(load) +# 2023| getThen(): [VariableAccess] x +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getElse(): [VariableAccess] y +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2023| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2023| ValueCategory = prvalue +# 2023| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2023| Conversion = [GlvalueConversion] glvalue conversion +# 2023| Type = [SpecifiedType] const TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getArgument(0): [ConstructorCall] call to TernaryNonPodObj +# 2023| Type = [VoidType] void +# 2023| ValueCategory = prvalue +# 2023| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2023| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2023| ValueCategory = prvalue +# 2023| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2023| Conversion = [GlvalueConversion] glvalue conversion +# 2023| Type = [SpecifiedType] const TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getExpr(): [TemporaryObjectExpr] temporary object +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2023| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2023| Type = [Struct] TernaryNonPodObj +# 2023| ValueCategory = lvalue +# 2024| getStmt(4): [ReturnStmt] return ... +# 2026| [TopLevelFunction] void CommaTestHelper(unsigned int) # 2026| : -# 2026| getParameter(0): [Parameter] x +# 2026| getParameter(0): [Parameter] (unnamed parameter 0) # 2026| Type = [IntType] unsigned int -# 2026| getEntryPoint(): [BlockStmt] { ... } -# 2027| getStmt(0): [DeclStmt] declaration -# 2027| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2027| Type = [IntType] unsigned int -# 2028| getStmt(1): [ExprStmt] ExprStmt -# 2028| getExpr(): [AssignExpr] ... = ... -# 2028| Type = [IntType] unsigned int -# 2028| ValueCategory = lvalue -# 2028| getLValue(): [VariableAccess] y -# 2028| Type = [IntType] unsigned int -# 2028| ValueCategory = lvalue -# 2028| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2028| Type = [IntType] unsigned int -# 2028| ValueCategory = prvalue(load) -# 2028| getCondition(): [LTExpr] ... < ... -# 2028| Type = [BoolType] bool -# 2028| ValueCategory = prvalue -# 2028| getLesserOperand(): [VariableAccess] x -# 2028| Type = [IntType] unsigned int -# 2028| ValueCategory = prvalue(load) -# 2028| getGreaterOperand(): [Literal] 100 -# 2028| Type = [IntType] int -# 2028| Value = [Literal] 100 -# 2028| ValueCategory = prvalue -# 2028| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2028| Conversion = [IntegralConversion] integral conversion -# 2028| Type = [IntType] unsigned int -# 2028| Value = [CStyleCast] 100 -# 2028| ValueCategory = prvalue -# 2029| getThen(): [CommaExpr] ... , ... -# 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue(load) -# 2029| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2029| Type = [VoidType] void -# 2029| ValueCategory = prvalue -# 2029| getArgument(0): [VariableAccess] x -# 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue(load) -# 2029| getRightOperand(): [VariableAccess] x -# 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue(load) -# 2030| getElse(): [CommaExpr] ... , ... -# 2030| Type = [IntType] int +# 2028| [TopLevelFunction] unsigned int CommaTest(unsigned int) +# 2028| : +# 2028| getParameter(0): [Parameter] x +# 2028| Type = [IntType] unsigned int +# 2028| getEntryPoint(): [BlockStmt] { ... } +# 2029| getStmt(0): [DeclStmt] declaration +# 2029| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2029| Type = [IntType] unsigned int +# 2030| getStmt(1): [ExprStmt] ExprStmt +# 2030| getExpr(): [AssignExpr] ... = ... +# 2030| Type = [IntType] unsigned int +# 2030| ValueCategory = lvalue +# 2030| getLValue(): [VariableAccess] y +# 2030| Type = [IntType] unsigned int +# 2030| ValueCategory = lvalue +# 2030| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2030| Type = [IntType] unsigned int +# 2030| ValueCategory = prvalue(load) +# 2030| getCondition(): [LTExpr] ... < ... +# 2030| Type = [BoolType] bool # 2030| ValueCategory = prvalue -# 2030| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2030| Type = [VoidType] void -# 2030| ValueCategory = prvalue -# 2030| getArgument(0): [VariableAccess] x -# 2030| Type = [IntType] unsigned int -# 2030| ValueCategory = prvalue(load) -# 2030| getRightOperand(): [Literal] 10 +# 2030| getLesserOperand(): [VariableAccess] x +# 2030| Type = [IntType] unsigned int +# 2030| ValueCategory = prvalue(load) +# 2030| getGreaterOperand(): [Literal] 100 # 2030| Type = [IntType] int -# 2030| Value = [Literal] 10 +# 2030| Value = [Literal] 100 # 2030| ValueCategory = prvalue -# 2029| getThen().getFullyConverted(): [ParenthesisExpr] (...) -# 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue(load) -# 2030| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2030| Conversion = [IntegralConversion] integral conversion -# 2030| Type = [IntType] unsigned int -# 2030| ValueCategory = prvalue -# 2030| getExpr(): [ParenthesisExpr] (...) -# 2030| Type = [IntType] int +# 2030| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2030| Conversion = [IntegralConversion] integral conversion +# 2030| Type = [IntType] unsigned int +# 2030| Value = [CStyleCast] 100 # 2030| ValueCategory = prvalue -# 2031| getStmt(2): [ReturnStmt] return ... -# 2033| [TopLevelFunction] void NewDeleteMem() -# 2033| : -# 2033| getEntryPoint(): [BlockStmt] { ... } -# 2034| getStmt(0): [DeclStmt] declaration -# 2034| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2034| Type = [IntPointerType] int * -# 2034| getVariable().getInitializer(): [Initializer] initializer for x -# 2034| getExpr(): [NewExpr] new -# 2034| Type = [IntPointerType] int * -# 2034| ValueCategory = prvalue -# 2035| getStmt(1): [ExprStmt] ExprStmt -# 2035| getExpr(): [AssignExpr] ... = ... -# 2035| Type = [IntType] int -# 2035| ValueCategory = lvalue -# 2035| getLValue(): [PointerDereferenceExpr] * ... -# 2035| Type = [IntType] int -# 2035| ValueCategory = lvalue -# 2035| getOperand(): [VariableAccess] x -# 2035| Type = [IntPointerType] int * -# 2035| ValueCategory = prvalue(load) -# 2035| getRValue(): [Literal] 6 -# 2035| Type = [IntType] int -# 2035| Value = [Literal] 6 -# 2035| ValueCategory = prvalue -# 2036| getStmt(2): [ExprStmt] ExprStmt -# 2036| getExpr(): [DeleteExpr] delete -# 2036| Type = [VoidType] void -# 2036| ValueCategory = prvalue -# 2036| getExpr(): [VariableAccess] x -# 2036| Type = [IntPointerType] int * -# 2036| ValueCategory = prvalue(load) -# 2037| getStmt(3): [ReturnStmt] return ... -# 2039| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) -# 2039| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const Base2 & -# 2039| [Constructor] void Base2::Base2() -# 2039| : -# 2039| : -# 2039| getEntryPoint(): [BlockStmt] { ... } -# 2039| getStmt(0): [ReturnStmt] return ... -# 2039| [CopyConstructor] void Base2::Base2(Base2 const&) -# 2039| : +# 2031| getThen(): [CommaExpr] ... , ... +# 2031| Type = [IntType] unsigned int +# 2031| ValueCategory = prvalue(load) +# 2031| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2031| Type = [VoidType] void +# 2031| ValueCategory = prvalue +# 2031| getArgument(0): [VariableAccess] x +# 2031| Type = [IntType] unsigned int +# 2031| ValueCategory = prvalue(load) +# 2031| getRightOperand(): [VariableAccess] x +# 2031| Type = [IntType] unsigned int +# 2031| ValueCategory = prvalue(load) +# 2032| getElse(): [CommaExpr] ... , ... +# 2032| Type = [IntType] int +# 2032| ValueCategory = prvalue +# 2032| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2032| Type = [VoidType] void +# 2032| ValueCategory = prvalue +# 2032| getArgument(0): [VariableAccess] x +# 2032| Type = [IntType] unsigned int +# 2032| ValueCategory = prvalue(load) +# 2032| getRightOperand(): [Literal] 10 +# 2032| Type = [IntType] int +# 2032| Value = [Literal] 10 +# 2032| ValueCategory = prvalue +# 2031| getThen().getFullyConverted(): [ParenthesisExpr] (...) +# 2031| Type = [IntType] unsigned int +# 2031| ValueCategory = prvalue(load) +# 2032| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2032| Conversion = [IntegralConversion] integral conversion +# 2032| Type = [IntType] unsigned int +# 2032| ValueCategory = prvalue +# 2032| getExpr(): [ParenthesisExpr] (...) +# 2032| Type = [IntType] int +# 2032| ValueCategory = prvalue +# 2033| getStmt(2): [ReturnStmt] return ... +# 2035| [TopLevelFunction] void NewDeleteMem() +# 2035| : +# 2035| getEntryPoint(): [BlockStmt] { ... } +# 2036| getStmt(0): [DeclStmt] declaration +# 2036| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2036| Type = [IntPointerType] int * +# 2036| getVariable().getInitializer(): [Initializer] initializer for x +# 2036| getExpr(): [NewExpr] new +# 2036| Type = [IntPointerType] int * +# 2036| ValueCategory = prvalue +# 2037| getStmt(1): [ExprStmt] ExprStmt +# 2037| getExpr(): [AssignExpr] ... = ... +# 2037| Type = [IntType] int +# 2037| ValueCategory = lvalue +# 2037| getLValue(): [PointerDereferenceExpr] * ... +# 2037| Type = [IntType] int +# 2037| ValueCategory = lvalue +# 2037| getOperand(): [VariableAccess] x +# 2037| Type = [IntPointerType] int * +# 2037| ValueCategory = prvalue(load) +# 2037| getRValue(): [Literal] 6 +# 2037| Type = [IntType] int +# 2037| Value = [Literal] 6 +# 2037| ValueCategory = prvalue +# 2038| getStmt(2): [ExprStmt] ExprStmt +# 2038| getExpr(): [DeleteExpr] delete +# 2038| Type = [VoidType] void +# 2038| ValueCategory = prvalue +# 2038| getExpr(): [VariableAccess] x +# 2038| Type = [IntPointerType] int * +# 2038| ValueCategory = prvalue(load) +# 2039| getStmt(3): [ReturnStmt] return ... +# 2041| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) +# 2041| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Base2 & -# 2041| [MemberFunction] void Base2::operator delete(void*) +# 2041| [Constructor] void Base2::Base2() # 2041| : -# 2041| getParameter(0): [Parameter] p -# 2041| Type = [VoidPointerType] void * +# 2041| : # 2041| getEntryPoint(): [BlockStmt] { ... } -# 2042| getStmt(0): [ReturnStmt] return ... -# 2043| [Destructor,VirtualFunction] void Base2::~Base2() +# 2041| getStmt(0): [ReturnStmt] return ... +# 2041| [CopyConstructor] void Base2::Base2(Base2 const&) +# 2041| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const Base2 & +# 2043| [MemberFunction] void Base2::operator delete(void*) # 2043| : +# 2043| getParameter(0): [Parameter] p +# 2043| Type = [VoidPointerType] void * # 2043| getEntryPoint(): [BlockStmt] { ... } -# 2043| getStmt(0): [ReturnStmt] return ... -# 2043| : -# 2046| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) -# 2046| : +# 2044| getStmt(0): [ReturnStmt] return ... +# 2045| [Destructor,VirtualFunction] void Base2::~Base2() +# 2045| : +# 2045| getEntryPoint(): [BlockStmt] { ... } +# 2045| getStmt(0): [ReturnStmt] return ... +# 2045| : +# 2048| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) +# 2048| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2046| [Constructor] void Derived2::Derived2() -# 2046| : -# 2046| : -# 2046| getInitializer(0): [ConstructorDirectInit] call to Base2 -# 2046| Type = [VoidType] void -# 2046| ValueCategory = prvalue -# 2046| getEntryPoint(): [BlockStmt] { ... } -# 2046| getStmt(0): [ReturnStmt] return ... -# 2046| [CopyConstructor] void Derived2::Derived2(Derived2 const&) -# 2046| : +# 2048| [Constructor] void Derived2::Derived2() +# 2048| : +# 2048| : +# 2048| getInitializer(0): [ConstructorDirectInit] call to Base2 +# 2048| Type = [VoidType] void +# 2048| ValueCategory = prvalue +# 2048| getEntryPoint(): [BlockStmt] { ... } +# 2048| getStmt(0): [ReturnStmt] return ... +# 2048| [CopyConstructor] void Derived2::Derived2(Derived2 const&) +# 2048| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2049| [Destructor,VirtualFunction] void Derived2::~Derived2() -# 2049| : -# 2049| getEntryPoint(): [BlockStmt] { ... } -# 2049| getStmt(0): [ReturnStmt] return ... -# 2049| : -# 2049| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 -# 2049| Type = [VoidType] void -# 2049| ValueCategory = prvalue -# 2051| [MemberFunction] void Derived2::operator delete(void*) +# 2051| [Destructor,VirtualFunction] void Derived2::~Derived2() # 2051| : -# 2051| getParameter(0): [Parameter] p -# 2051| Type = [VoidPointerType] void * # 2051| getEntryPoint(): [BlockStmt] { ... } -# 2052| getStmt(0): [ReturnStmt] return ... -# 2056| [TopLevelFunction] int virtual_delete() -# 2056| : -# 2057| getEntryPoint(): [BlockStmt] { ... } -# 2058| getStmt(0): [DeclStmt] declaration -# 2058| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 -# 2058| Type = [PointerType] Base2 * -# 2058| getVariable().getInitializer(): [Initializer] initializer for b1 -# 2058| getExpr(): [NewExpr] new -# 2058| Type = [PointerType] Base2 * -# 2058| ValueCategory = prvalue -# 2058| getInitializer(): [ConstructorCall] call to Base2 -# 2058| Type = [VoidType] void -# 2058| ValueCategory = prvalue -# 2059| getStmt(1): [ExprStmt] ExprStmt -# 2059| getExpr(): [DeleteExpr] delete -# 2059| Type = [VoidType] void -# 2059| ValueCategory = prvalue -# 2059| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2059| Type = [VoidType] void -# 2059| ValueCategory = prvalue -# 2059| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2059| Type = [VoidType] void -# 2059| ValueCategory = prvalue -# 2059| getQualifier(): [VariableAccess] b1 -# 2059| Type = [PointerType] Base2 * -# 2059| ValueCategory = prvalue(load) -# 2061| getStmt(2): [DeclStmt] declaration -# 2061| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 -# 2061| Type = [PointerType] Base2 * -# 2061| getVariable().getInitializer(): [Initializer] initializer for b2 -# 2061| getExpr(): [NewExpr] new -# 2061| Type = [PointerType] Derived2 * -# 2061| ValueCategory = prvalue -# 2061| getInitializer(): [ConstructorCall] call to Derived2 -# 2061| Type = [VoidType] void -# 2061| ValueCategory = prvalue -# 2061| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... -# 2061| Conversion = [BaseClassConversion] base class conversion +# 2051| getStmt(0): [ReturnStmt] return ... +# 2051| : +# 2051| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 +# 2051| Type = [VoidType] void +# 2051| ValueCategory = prvalue +# 2053| [MemberFunction] void Derived2::operator delete(void*) +# 2053| : +# 2053| getParameter(0): [Parameter] p +# 2053| Type = [VoidPointerType] void * +# 2053| getEntryPoint(): [BlockStmt] { ... } +# 2054| getStmt(0): [ReturnStmt] return ... +# 2058| [TopLevelFunction] int virtual_delete() +# 2058| : +# 2059| getEntryPoint(): [BlockStmt] { ... } +# 2060| getStmt(0): [DeclStmt] declaration +# 2060| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 +# 2060| Type = [PointerType] Base2 * +# 2060| getVariable().getInitializer(): [Initializer] initializer for b1 +# 2060| getExpr(): [NewExpr] new +# 2060| Type = [PointerType] Base2 * +# 2060| ValueCategory = prvalue +# 2060| getInitializer(): [ConstructorCall] call to Base2 +# 2060| Type = [VoidType] void +# 2060| ValueCategory = prvalue +# 2061| getStmt(1): [ExprStmt] ExprStmt +# 2061| getExpr(): [DeleteExpr] delete +# 2061| Type = [VoidType] void +# 2061| ValueCategory = prvalue +# 2061| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2061| Type = [VoidType] void +# 2061| ValueCategory = prvalue +# 2061| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2061| Type = [VoidType] void +# 2061| ValueCategory = prvalue +# 2061| getQualifier(): [VariableAccess] b1 # 2061| Type = [PointerType] Base2 * -# 2061| ValueCategory = prvalue -# 2062| getStmt(3): [ExprStmt] ExprStmt -# 2062| getExpr(): [DeleteExpr] delete -# 2062| Type = [VoidType] void -# 2062| ValueCategory = prvalue -# 2062| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2062| Type = [VoidType] void -# 2062| ValueCategory = prvalue -# 2062| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2062| Type = [VoidType] void -# 2062| ValueCategory = prvalue -# 2062| getQualifier(): [VariableAccess] b2 -# 2062| Type = [PointerType] Base2 * -# 2062| ValueCategory = prvalue(load) -# 2064| getStmt(4): [DeclStmt] declaration -# 2064| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2064| Type = [PointerType] Derived2 * -# 2064| getVariable().getInitializer(): [Initializer] initializer for d -# 2064| getExpr(): [NewExpr] new -# 2064| Type = [PointerType] Derived2 * -# 2064| ValueCategory = prvalue -# 2064| getInitializer(): [ConstructorCall] call to Derived2 -# 2064| Type = [VoidType] void -# 2064| ValueCategory = prvalue -# 2065| getStmt(5): [ExprStmt] ExprStmt -# 2065| getExpr(): [DeleteExpr] delete -# 2065| Type = [VoidType] void -# 2065| ValueCategory = prvalue -# 2065| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2065| Type = [VoidType] void -# 2065| ValueCategory = prvalue -# 2065| getDestructorCall(): [DestructorCall] call to ~Derived2 -# 2065| Type = [VoidType] void -# 2065| ValueCategory = prvalue -# 2065| getQualifier(): [VariableAccess] d -# 2065| Type = [PointerType] Derived2 * -# 2065| ValueCategory = prvalue(load) -# 2066| getStmt(6): [ReturnStmt] return ... -# 2068| [TopLevelFunction] void test_constant_folding_use(int) -# 2068| : -# 2068| getParameter(0): [Parameter] (unnamed parameter 0) -# 2068| Type = [IntType] int -# 2070| [TopLevelFunction] void test_constant_folding() +# 2061| ValueCategory = prvalue(load) +# 2063| getStmt(2): [DeclStmt] declaration +# 2063| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 +# 2063| Type = [PointerType] Base2 * +# 2063| getVariable().getInitializer(): [Initializer] initializer for b2 +# 2063| getExpr(): [NewExpr] new +# 2063| Type = [PointerType] Derived2 * +# 2063| ValueCategory = prvalue +# 2063| getInitializer(): [ConstructorCall] call to Derived2 +# 2063| Type = [VoidType] void +# 2063| ValueCategory = prvalue +# 2063| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... +# 2063| Conversion = [BaseClassConversion] base class conversion +# 2063| Type = [PointerType] Base2 * +# 2063| ValueCategory = prvalue +# 2064| getStmt(3): [ExprStmt] ExprStmt +# 2064| getExpr(): [DeleteExpr] delete +# 2064| Type = [VoidType] void +# 2064| ValueCategory = prvalue +# 2064| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2064| Type = [VoidType] void +# 2064| ValueCategory = prvalue +# 2064| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2064| Type = [VoidType] void +# 2064| ValueCategory = prvalue +# 2064| getQualifier(): [VariableAccess] b2 +# 2064| Type = [PointerType] Base2 * +# 2064| ValueCategory = prvalue(load) +# 2066| getStmt(4): [DeclStmt] declaration +# 2066| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2066| Type = [PointerType] Derived2 * +# 2066| getVariable().getInitializer(): [Initializer] initializer for d +# 2066| getExpr(): [NewExpr] new +# 2066| Type = [PointerType] Derived2 * +# 2066| ValueCategory = prvalue +# 2066| getInitializer(): [ConstructorCall] call to Derived2 +# 2066| Type = [VoidType] void +# 2066| ValueCategory = prvalue +# 2067| getStmt(5): [ExprStmt] ExprStmt +# 2067| getExpr(): [DeleteExpr] delete +# 2067| Type = [VoidType] void +# 2067| ValueCategory = prvalue +# 2067| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2067| Type = [VoidType] void +# 2067| ValueCategory = prvalue +# 2067| getDestructorCall(): [DestructorCall] call to ~Derived2 +# 2067| Type = [VoidType] void +# 2067| ValueCategory = prvalue +# 2067| getQualifier(): [VariableAccess] d +# 2067| Type = [PointerType] Derived2 * +# 2067| ValueCategory = prvalue(load) +# 2068| getStmt(6): [ReturnStmt] return ... +# 2070| [TopLevelFunction] void test_constant_folding_use(int) # 2070| : -# 2070| getEntryPoint(): [BlockStmt] { ... } -# 2071| getStmt(0): [DeclStmt] declaration -# 2071| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2071| Type = [SpecifiedType] const int -# 2071| getVariable().getInitializer(): [Initializer] initializer for x -# 2071| getExpr(): [Literal] 116 -# 2071| Type = [IntType] int -# 2071| Value = [Literal] 116 -# 2071| ValueCategory = prvalue -# 2072| getStmt(1): [ExprStmt] ExprStmt -# 2072| getExpr(): [FunctionCall] call to test_constant_folding_use -# 2072| Type = [VoidType] void -# 2072| ValueCategory = prvalue -# 2072| getArgument(0): [VariableAccess] x -# 2072| Type = [IntType] int -# 2072| Value = [VariableAccess] 116 -# 2072| ValueCategory = prvalue(load) -# 2073| getStmt(2): [ReturnStmt] return ... -# 2075| [TopLevelFunction] void exit(int) -# 2075| : -# 2075| getParameter(0): [Parameter] code -# 2075| Type = [IntType] int -# 2077| [TopLevelFunction] int NonExit() +# 2070| getParameter(0): [Parameter] (unnamed parameter 0) +# 2070| Type = [IntType] int +# 2072| [TopLevelFunction] void test_constant_folding() +# 2072| : +# 2072| getEntryPoint(): [BlockStmt] { ... } +# 2073| getStmt(0): [DeclStmt] declaration +# 2073| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2073| Type = [SpecifiedType] const int +# 2073| getVariable().getInitializer(): [Initializer] initializer for x +# 2073| getExpr(): [Literal] 116 +# 2073| Type = [IntType] int +# 2073| Value = [Literal] 116 +# 2073| ValueCategory = prvalue +# 2074| getStmt(1): [ExprStmt] ExprStmt +# 2074| getExpr(): [FunctionCall] call to test_constant_folding_use +# 2074| Type = [VoidType] void +# 2074| ValueCategory = prvalue +# 2074| getArgument(0): [VariableAccess] x +# 2074| Type = [IntType] int +# 2074| Value = [VariableAccess] 116 +# 2074| ValueCategory = prvalue(load) +# 2075| getStmt(2): [ReturnStmt] return ... +# 2077| [TopLevelFunction] void exit(int) # 2077| : -# 2077| getEntryPoint(): [BlockStmt] { ... } -# 2078| getStmt(0): [DeclStmt] declaration -# 2078| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2078| Type = [IntType] int -# 2078| getVariable().getInitializer(): [Initializer] initializer for x -# 2078| getExpr(): [FunctionCall] call to Add -# 2078| Type = [IntType] int -# 2078| ValueCategory = prvalue -# 2078| getArgument(0): [Literal] 3 -# 2078| Type = [IntType] int -# 2078| Value = [Literal] 3 -# 2078| ValueCategory = prvalue -# 2078| getArgument(1): [Literal] 4 -# 2078| Type = [IntType] int -# 2078| Value = [Literal] 4 -# 2078| ValueCategory = prvalue -# 2079| getStmt(1): [IfStmt] if (...) ... -# 2079| getCondition(): [EQExpr] ... == ... -# 2079| Type = [BoolType] bool -# 2079| ValueCategory = prvalue -# 2079| getLeftOperand(): [VariableAccess] x -# 2079| Type = [IntType] int -# 2079| ValueCategory = prvalue(load) -# 2079| getRightOperand(): [Literal] 7 -# 2079| Type = [IntType] int -# 2079| Value = [Literal] 7 -# 2079| ValueCategory = prvalue -# 2080| getThen(): [ExprStmt] ExprStmt -# 2080| getExpr(): [FunctionCall] call to exit -# 2080| Type = [VoidType] void -# 2080| ValueCategory = prvalue -# 2080| getArgument(0): [Literal] 3 +# 2077| getParameter(0): [Parameter] code +# 2077| Type = [IntType] int +# 2079| [TopLevelFunction] int NonExit() +# 2079| : +# 2079| getEntryPoint(): [BlockStmt] { ... } +# 2080| getStmt(0): [DeclStmt] declaration +# 2080| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2080| Type = [IntType] int +# 2080| getVariable().getInitializer(): [Initializer] initializer for x +# 2080| getExpr(): [FunctionCall] call to Add # 2080| Type = [IntType] int -# 2080| Value = [Literal] 3 # 2080| ValueCategory = prvalue -# 2081| getStmt(2): [ExprStmt] ExprStmt -# 2081| getExpr(): [FunctionCall] call to VoidFunc -# 2081| Type = [VoidType] void +# 2080| getArgument(0): [Literal] 3 +# 2080| Type = [IntType] int +# 2080| Value = [Literal] 3 +# 2080| ValueCategory = prvalue +# 2080| getArgument(1): [Literal] 4 +# 2080| Type = [IntType] int +# 2080| Value = [Literal] 4 +# 2080| ValueCategory = prvalue +# 2081| getStmt(1): [IfStmt] if (...) ... +# 2081| getCondition(): [EQExpr] ... == ... +# 2081| Type = [BoolType] bool # 2081| ValueCategory = prvalue -# 2082| getStmt(3): [ReturnStmt] return ... -# 2082| getExpr(): [VariableAccess] x -# 2082| Type = [IntType] int -# 2082| ValueCategory = prvalue(load) -# 2085| [TopLevelFunction] void CallsNonExit() -# 2085| : -# 2085| getEntryPoint(): [BlockStmt] { ... } -# 2086| getStmt(0): [ExprStmt] ExprStmt -# 2086| getExpr(): [FunctionCall] call to VoidFunc -# 2086| Type = [VoidType] void -# 2086| ValueCategory = prvalue -# 2087| getStmt(1): [ExprStmt] ExprStmt -# 2087| getExpr(): [FunctionCall] call to exit -# 2087| Type = [VoidType] void -# 2087| ValueCategory = prvalue -# 2087| getArgument(0): [Literal] 3 -# 2087| Type = [IntType] int -# 2087| Value = [Literal] 3 -# 2087| ValueCategory = prvalue -# 2088| getStmt(2): [ReturnStmt] return ... -# 2090| [TopLevelFunction] int TransNonExit() -# 2090| : -# 2090| getEntryPoint(): [BlockStmt] { ... } -# 2091| getStmt(0): [DeclStmt] declaration -# 2091| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2091| Type = [IntType] int -# 2091| getVariable().getInitializer(): [Initializer] initializer for x -# 2091| getExpr(): [FunctionCall] call to Add -# 2091| Type = [IntType] int -# 2091| ValueCategory = prvalue -# 2091| getArgument(0): [Literal] 3 -# 2091| Type = [IntType] int -# 2091| Value = [Literal] 3 -# 2091| ValueCategory = prvalue -# 2091| getArgument(1): [Literal] 4 -# 2091| Type = [IntType] int -# 2091| Value = [Literal] 4 -# 2091| ValueCategory = prvalue -# 2092| getStmt(1): [IfStmt] if (...) ... -# 2092| getCondition(): [EQExpr] ... == ... -# 2092| Type = [BoolType] bool -# 2092| ValueCategory = prvalue -# 2092| getLeftOperand(): [VariableAccess] x -# 2092| Type = [IntType] int -# 2092| ValueCategory = prvalue(load) -# 2092| getRightOperand(): [Literal] 7 -# 2092| Type = [IntType] int -# 2092| Value = [Literal] 7 -# 2092| ValueCategory = prvalue -# 2093| getThen(): [ExprStmt] ExprStmt -# 2093| getExpr(): [FunctionCall] call to CallsNonExit -# 2093| Type = [VoidType] void -# 2093| ValueCategory = prvalue -# 2094| getStmt(2): [ExprStmt] ExprStmt -# 2094| getExpr(): [FunctionCall] call to VoidFunc -# 2094| Type = [VoidType] void +# 2081| getLeftOperand(): [VariableAccess] x +# 2081| Type = [IntType] int +# 2081| ValueCategory = prvalue(load) +# 2081| getRightOperand(): [Literal] 7 +# 2081| Type = [IntType] int +# 2081| Value = [Literal] 7 +# 2081| ValueCategory = prvalue +# 2082| getThen(): [ExprStmt] ExprStmt +# 2082| getExpr(): [FunctionCall] call to exit +# 2082| Type = [VoidType] void +# 2082| ValueCategory = prvalue +# 2082| getArgument(0): [Literal] 3 +# 2082| Type = [IntType] int +# 2082| Value = [Literal] 3 +# 2082| ValueCategory = prvalue +# 2083| getStmt(2): [ExprStmt] ExprStmt +# 2083| getExpr(): [FunctionCall] call to VoidFunc +# 2083| Type = [VoidType] void +# 2083| ValueCategory = prvalue +# 2084| getStmt(3): [ReturnStmt] return ... +# 2084| getExpr(): [VariableAccess] x +# 2084| Type = [IntType] int +# 2084| ValueCategory = prvalue(load) +# 2087| [TopLevelFunction] void CallsNonExit() +# 2087| : +# 2087| getEntryPoint(): [BlockStmt] { ... } +# 2088| getStmt(0): [ExprStmt] ExprStmt +# 2088| getExpr(): [FunctionCall] call to VoidFunc +# 2088| Type = [VoidType] void +# 2088| ValueCategory = prvalue +# 2089| getStmt(1): [ExprStmt] ExprStmt +# 2089| getExpr(): [FunctionCall] call to exit +# 2089| Type = [VoidType] void +# 2089| ValueCategory = prvalue +# 2089| getArgument(0): [Literal] 3 +# 2089| Type = [IntType] int +# 2089| Value = [Literal] 3 +# 2089| ValueCategory = prvalue +# 2090| getStmt(2): [ReturnStmt] return ... +# 2092| [TopLevelFunction] int TransNonExit() +# 2092| : +# 2092| getEntryPoint(): [BlockStmt] { ... } +# 2093| getStmt(0): [DeclStmt] declaration +# 2093| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2093| Type = [IntType] int +# 2093| getVariable().getInitializer(): [Initializer] initializer for x +# 2093| getExpr(): [FunctionCall] call to Add +# 2093| Type = [IntType] int +# 2093| ValueCategory = prvalue +# 2093| getArgument(0): [Literal] 3 +# 2093| Type = [IntType] int +# 2093| Value = [Literal] 3 +# 2093| ValueCategory = prvalue +# 2093| getArgument(1): [Literal] 4 +# 2093| Type = [IntType] int +# 2093| Value = [Literal] 4 +# 2093| ValueCategory = prvalue +# 2094| getStmt(1): [IfStmt] if (...) ... +# 2094| getCondition(): [EQExpr] ... == ... +# 2094| Type = [BoolType] bool # 2094| ValueCategory = prvalue -# 2095| getStmt(3): [ReturnStmt] return ... -# 2095| getExpr(): [VariableAccess] x -# 2095| Type = [IntType] int -# 2095| ValueCategory = prvalue(load) -# 2098| [TopLevelFunction] void newArrayCorrectType(size_t) -# 2098| : -# 2098| getParameter(0): [Parameter] n -# 2098| Type = [CTypedefType,Size_t] size_t -# 2098| getEntryPoint(): [BlockStmt] { ... } -# 2099| getStmt(0): [ExprStmt] ExprStmt -# 2099| getExpr(): [NewArrayExpr] new[] -# 2099| Type = [IntPointerType] int * -# 2099| ValueCategory = prvalue -# 2099| getExtent(): [VariableAccess] n -# 2099| Type = [CTypedefType,Size_t] size_t -# 2099| ValueCategory = prvalue(load) -# 2100| getStmt(1): [ExprStmt] ExprStmt -# 2100| getExpr(): [NewArrayExpr] new[] -# 2100| Type = [IntPointerType] int * -# 2100| ValueCategory = prvalue -# 2100| getAllocatorCall(): [FunctionCall] call to operator new[] -# 2100| Type = [VoidPointerType] void * -# 2100| ValueCategory = prvalue -# 2100| getArgument(0): [ErrorExpr] -# 2100| Type = [LongType] unsigned long -# 2100| ValueCategory = prvalue -# 2100| getArgument(1): [Literal] 1.0 -# 2100| Type = [FloatType] float -# 2100| Value = [Literal] 1.0 -# 2100| ValueCategory = prvalue -# 2100| getExtent(): [VariableAccess] n -# 2100| Type = [CTypedefType,Size_t] size_t -# 2100| ValueCategory = prvalue(load) -# 2101| getStmt(2): [ExprStmt] ExprStmt +# 2094| getLeftOperand(): [VariableAccess] x +# 2094| Type = [IntType] int +# 2094| ValueCategory = prvalue(load) +# 2094| getRightOperand(): [Literal] 7 +# 2094| Type = [IntType] int +# 2094| Value = [Literal] 7 +# 2094| ValueCategory = prvalue +# 2095| getThen(): [ExprStmt] ExprStmt +# 2095| getExpr(): [FunctionCall] call to CallsNonExit +# 2095| Type = [VoidType] void +# 2095| ValueCategory = prvalue +# 2096| getStmt(2): [ExprStmt] ExprStmt +# 2096| getExpr(): [FunctionCall] call to VoidFunc +# 2096| Type = [VoidType] void +# 2096| ValueCategory = prvalue +# 2097| getStmt(3): [ReturnStmt] return ... +# 2097| getExpr(): [VariableAccess] x +# 2097| Type = [IntType] int +# 2097| ValueCategory = prvalue(load) +# 2100| [TopLevelFunction] void newArrayCorrectType(size_t) +# 2100| : +# 2100| getParameter(0): [Parameter] n +# 2100| Type = [CTypedefType,Size_t] size_t +# 2100| getEntryPoint(): [BlockStmt] { ... } +# 2101| getStmt(0): [ExprStmt] ExprStmt # 2101| getExpr(): [NewArrayExpr] new[] -# 2101| Type = [PointerType] String * +# 2101| Type = [IntPointerType] int * # 2101| ValueCategory = prvalue -# 2101| getInitializer(): [ArrayAggregateLiteral] {...} -# 2101| Type = [ArrayType] String[] -# 2101| ValueCategory = prvalue -# 2101| getAnElementExpr(0): [ConstructorCall] call to String -# 2101| Type = [VoidType] void -# 2101| ValueCategory = prvalue # 2101| getExtent(): [VariableAccess] n # 2101| Type = [CTypedefType,Size_t] size_t # 2101| ValueCategory = prvalue(load) -# 2102| getStmt(3): [ExprStmt] ExprStmt +# 2102| getStmt(1): [ExprStmt] ExprStmt # 2102| getExpr(): [NewArrayExpr] new[] -# 2102| Type = [PointerType] Overaligned * +# 2102| Type = [IntPointerType] int * # 2102| ValueCategory = prvalue +# 2102| getAllocatorCall(): [FunctionCall] call to operator new[] +# 2102| Type = [VoidPointerType] void * +# 2102| ValueCategory = prvalue +# 2102| getArgument(0): [ErrorExpr] +# 2102| Type = [LongType] unsigned long +# 2102| ValueCategory = prvalue +# 2102| getArgument(1): [Literal] 1.0 +# 2102| Type = [FloatType] float +# 2102| Value = [Literal] 1.0 +# 2102| ValueCategory = prvalue # 2102| getExtent(): [VariableAccess] n # 2102| Type = [CTypedefType,Size_t] size_t # 2102| ValueCategory = prvalue(load) -# 2102| getAlignmentArgument(): [Literal] 128 -# 2102| Type = [ScopedEnum] align_val_t -# 2102| Value = [Literal] 128 -# 2102| ValueCategory = prvalue -# 2103| getStmt(4): [ExprStmt] ExprStmt +# 2103| getStmt(2): [ExprStmt] ExprStmt # 2103| getExpr(): [NewArrayExpr] new[] -# 2103| Type = [PointerType] DefaultCtorWithDefaultParam * +# 2103| Type = [PointerType] String * # 2103| ValueCategory = prvalue # 2103| getInitializer(): [ArrayAggregateLiteral] {...} -# 2103| Type = [ArrayType] DefaultCtorWithDefaultParam[] +# 2103| Type = [ArrayType] String[] # 2103| ValueCategory = prvalue -# 2103| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam +# 2103| getAnElementExpr(0): [ConstructorCall] call to String # 2103| Type = [VoidType] void # 2103| ValueCategory = prvalue # 2103| getExtent(): [VariableAccess] n # 2103| Type = [CTypedefType,Size_t] size_t # 2103| ValueCategory = prvalue(load) -# 2104| getStmt(5): [ExprStmt] ExprStmt +# 2104| getStmt(3): [ExprStmt] ExprStmt # 2104| getExpr(): [NewArrayExpr] new[] -# 2104| Type = [IntPointerType] int * +# 2104| Type = [PointerType] Overaligned * # 2104| ValueCategory = prvalue -# 2104| getInitializer(): [ArrayAggregateLiteral] {...} -# 2104| Type = [ArrayType] int[3] -# 2104| ValueCategory = prvalue -# 2104| getAnElementExpr(0): [Literal] 0 -# 2104| Type = [IntType] int -# 2104| Value = [Literal] 0 -# 2104| ValueCategory = prvalue -# 2104| getAnElementExpr(1): [Literal] 1 -# 2104| Type = [IntType] int -# 2104| Value = [Literal] 1 -# 2104| ValueCategory = prvalue -# 2104| getAnElementExpr(2): [Literal] 2 -# 2104| Type = [IntType] int -# 2104| Value = [Literal] 2 -# 2104| ValueCategory = prvalue # 2104| getExtent(): [VariableAccess] n # 2104| Type = [CTypedefType,Size_t] size_t # 2104| ValueCategory = prvalue(load) -# 2105| getStmt(6): [ReturnStmt] return ... -# 2107| [TopLevelFunction] double strtod(char const*, char**) -# 2107| : -# 2107| getParameter(0): [Parameter] str -# 2107| Type = [PointerType] const char * -# 2107| getParameter(1): [Parameter] endptr -# 2107| Type = [PointerType] char ** -# 2109| [TopLevelFunction] char* test_strtod(char*) +# 2104| getAlignmentArgument(): [Literal] 128 +# 2104| Type = [ScopedEnum] align_val_t +# 2104| Value = [Literal] 128 +# 2104| ValueCategory = prvalue +# 2105| getStmt(4): [ExprStmt] ExprStmt +# 2105| getExpr(): [NewArrayExpr] new[] +# 2105| Type = [PointerType] DefaultCtorWithDefaultParam * +# 2105| ValueCategory = prvalue +# 2105| getInitializer(): [ArrayAggregateLiteral] {...} +# 2105| Type = [ArrayType] DefaultCtorWithDefaultParam[] +# 2105| ValueCategory = prvalue +# 2105| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam +# 2105| Type = [VoidType] void +# 2105| ValueCategory = prvalue +# 2105| getExtent(): [VariableAccess] n +# 2105| Type = [CTypedefType,Size_t] size_t +# 2105| ValueCategory = prvalue(load) +# 2106| getStmt(5): [ExprStmt] ExprStmt +# 2106| getExpr(): [NewArrayExpr] new[] +# 2106| Type = [IntPointerType] int * +# 2106| ValueCategory = prvalue +# 2106| getInitializer(): [ArrayAggregateLiteral] {...} +# 2106| Type = [ArrayType] int[3] +# 2106| ValueCategory = prvalue +# 2106| getAnElementExpr(0): [Literal] 0 +# 2106| Type = [IntType] int +# 2106| Value = [Literal] 0 +# 2106| ValueCategory = prvalue +# 2106| getAnElementExpr(1): [Literal] 1 +# 2106| Type = [IntType] int +# 2106| Value = [Literal] 1 +# 2106| ValueCategory = prvalue +# 2106| getAnElementExpr(2): [Literal] 2 +# 2106| Type = [IntType] int +# 2106| Value = [Literal] 2 +# 2106| ValueCategory = prvalue +# 2106| getExtent(): [VariableAccess] n +# 2106| Type = [CTypedefType,Size_t] size_t +# 2106| ValueCategory = prvalue(load) +# 2107| getStmt(6): [ReturnStmt] return ... +# 2109| [TopLevelFunction] double strtod(char const*, char**) # 2109| : -# 2109| getParameter(0): [Parameter] s -# 2109| Type = [CharPointerType] char * -# 2109| getEntryPoint(): [BlockStmt] { ... } -# 2110| getStmt(0): [DeclStmt] declaration -# 2110| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end -# 2110| Type = [CharPointerType] char * -# 2111| getStmt(1): [DeclStmt] declaration -# 2111| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2111| Type = [DoubleType] double -# 2111| getVariable().getInitializer(): [Initializer] initializer for d -# 2111| getExpr(): [FunctionCall] call to strtod -# 2111| Type = [DoubleType] double -# 2111| ValueCategory = prvalue -# 2111| getArgument(0): [VariableAccess] s -# 2111| Type = [CharPointerType] char * -# 2111| ValueCategory = prvalue(load) -# 2111| getArgument(1): [AddressOfExpr] & ... -# 2111| Type = [PointerType] char ** -# 2111| ValueCategory = prvalue -# 2111| getOperand(): [VariableAccess] end -# 2111| Type = [CharPointerType] char * -# 2111| ValueCategory = lvalue -# 2111| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... -# 2111| Conversion = [PointerConversion] pointer conversion -# 2111| Type = [PointerType] const char * -# 2111| ValueCategory = prvalue -# 2112| getStmt(2): [ReturnStmt] return ... -# 2112| getExpr(): [VariableAccess] end +# 2109| getParameter(0): [Parameter] str +# 2109| Type = [PointerType] const char * +# 2109| getParameter(1): [Parameter] endptr +# 2109| Type = [PointerType] char ** +# 2111| [TopLevelFunction] char* test_strtod(char*) +# 2111| : +# 2111| getParameter(0): [Parameter] s +# 2111| Type = [CharPointerType] char * +# 2111| getEntryPoint(): [BlockStmt] { ... } +# 2112| getStmt(0): [DeclStmt] declaration +# 2112| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end # 2112| Type = [CharPointerType] char * -# 2112| ValueCategory = prvalue(load) -# 2115| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) -# 2115| : +# 2113| getStmt(1): [DeclStmt] declaration +# 2113| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2113| Type = [DoubleType] double +# 2113| getVariable().getInitializer(): [Initializer] initializer for d +# 2113| getExpr(): [FunctionCall] call to strtod +# 2113| Type = [DoubleType] double +# 2113| ValueCategory = prvalue +# 2113| getArgument(0): [VariableAccess] s +# 2113| Type = [CharPointerType] char * +# 2113| ValueCategory = prvalue(load) +# 2113| getArgument(1): [AddressOfExpr] & ... +# 2113| Type = [PointerType] char ** +# 2113| ValueCategory = prvalue +# 2113| getOperand(): [VariableAccess] end +# 2113| Type = [CharPointerType] char * +# 2113| ValueCategory = lvalue +# 2113| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 2113| Conversion = [PointerConversion] pointer conversion +# 2113| Type = [PointerType] const char * +# 2113| ValueCategory = prvalue +# 2114| getStmt(2): [ReturnStmt] return ... +# 2114| getExpr(): [VariableAccess] end +# 2114| Type = [CharPointerType] char * +# 2114| ValueCategory = prvalue(load) +# 2117| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) +# 2117| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const HasOperatorBool & -# 2115| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) -# 2115| : +# 2117| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) +# 2117| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] HasOperatorBool && -# 2116| [ConversionOperator] bool HasOperatorBool::operator bool() -# 2116| : -# 2119| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() -# 2119| : -# 2119| getEntryPoint(): [BlockStmt] { ... } -# 2120| getStmt(0): [IfStmt] if (...) ... -# 2120| getCondition(): [ConditionDeclExpr] (condition decl) -# 2120| Type = [BoolType] bool -# 2120| ValueCategory = prvalue -# 2120| getChild(0): [FunctionCall] call to operator bool -# 2120| Type = [BoolType] bool -# 2120| ValueCategory = prvalue -# 2120| getQualifier(): [VariableAccess] b -# 2120| Type = [Struct] HasOperatorBool -# 2120| ValueCategory = prvalue(load) -# 2120| getThen(): [BlockStmt] { ... } -# 2121| getStmt(1): [ReturnStmt] return ... +# 2118| [ConversionOperator] bool HasOperatorBool::operator bool() +# 2118| : +# 2121| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() +# 2121| : +# 2121| getEntryPoint(): [BlockStmt] { ... } +# 2122| getStmt(0): [IfStmt] if (...) ... +# 2122| getCondition(): [ConditionDeclExpr] (condition decl) +# 2122| Type = [BoolType] bool +# 2122| ValueCategory = prvalue +# 2122| getChild(0): [FunctionCall] call to operator bool +# 2122| Type = [BoolType] bool +# 2122| ValueCategory = prvalue +# 2122| getQualifier(): [VariableAccess] b +# 2122| Type = [Struct] HasOperatorBool +# 2122| ValueCategory = prvalue(load) +# 2122| getThen(): [BlockStmt] { ... } +# 2123| getStmt(1): [ReturnStmt] return ... +# 2125| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) +# 2125| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithDestructor & +# 2125| [CopyConstructor] void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2125| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithDestructor & +# 2125| : +# 2125| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 2125| Type = [CharPointerType] char * +# 2125| ValueCategory = prvalue +# 2125| getExpr(): [ReferenceFieldAccess] x +# 2125| Type = [CharPointerType] char * +# 2125| ValueCategory = prvalue(load) +# 2125| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 2125| Type = [LValueReferenceType] const ClassWithDestructor & +# 2125| ValueCategory = prvalue(load) +# 2125| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2125| Type = [SpecifiedType] const ClassWithDestructor +# 2125| ValueCategory = lvalue +# 2125| getEntryPoint(): [BlockStmt] { ... } +# 2125| getStmt(0): [ReturnStmt] return ... +# 2128| [Constructor] void ClassWithDestructor::ClassWithDestructor() +# 2128| : +# 2128| : +# 2128| getEntryPoint(): [BlockStmt] { ... } +# 2128| getStmt(0): [ExprStmt] ExprStmt +# 2128| getExpr(): [AssignExpr] ... = ... +# 2128| Type = [CharPointerType] char * +# 2128| ValueCategory = lvalue +# 2128| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2128| Type = [CharPointerType] char * +# 2128| ValueCategory = lvalue +# 2128| getQualifier(): [ThisExpr] this +# 2128| Type = [PointerType] ClassWithDestructor * +# 2128| ValueCategory = prvalue(load) +# 2128| getRValue(): [NewExpr] new +# 2128| Type = [CharPointerType] char * +# 2128| ValueCategory = prvalue +# 2128| getStmt(1): [ReturnStmt] return ... +# 2129| [Destructor] void ClassWithDestructor::~ClassWithDestructor() +# 2129| : +# 2129| getEntryPoint(): [BlockStmt] { ... } +# 2129| getStmt(0): [ExprStmt] ExprStmt +# 2129| getExpr(): [DeleteExpr] delete +# 2129| Type = [VoidType] void +# 2129| ValueCategory = prvalue +# 2129| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2129| Type = [CharPointerType] char * +# 2129| ValueCategory = prvalue(load) +# 2129| getQualifier(): [ThisExpr] this +# 2129| Type = [PointerType] ClassWithDestructor * +# 2129| ValueCategory = prvalue(load) +# 2129| getStmt(1): [ReturnStmt] return ... +# 2129| : +# 2131| [MemberFunction] void ClassWithDestructor::set_x(char) +# 2131| : +# 2131| getParameter(0): [Parameter] y +# 2131| Type = [PlainCharType] char +# 2131| getEntryPoint(): [BlockStmt] { ... } +# 2131| getStmt(0): [ExprStmt] ExprStmt +# 2131| getExpr(): [AssignExpr] ... = ... +# 2131| Type = [PlainCharType] char +# 2131| ValueCategory = lvalue +# 2131| getLValue(): [PointerDereferenceExpr] * ... +# 2131| Type = [PlainCharType] char +# 2131| ValueCategory = lvalue +# 2131| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2131| Type = [CharPointerType] char * +# 2131| ValueCategory = prvalue(load) +# 2131| getQualifier(): [ThisExpr] this +# 2131| Type = [PointerType] ClassWithDestructor * +# 2131| ValueCategory = prvalue(load) +# 2131| getRValue(): [VariableAccess] y +# 2131| Type = [PlainCharType] char +# 2131| ValueCategory = prvalue(load) +# 2131| getStmt(1): [ReturnStmt] return ... +# 2134| [GlobalVariable] bool initialization_with_destructor_bool +# 2134| getInitializer(): [Initializer] initializer for initialization_with_destructor_bool +# 2134| getExpr(): [Literal] 1 +# 2134| Type = [BoolType] bool +# 2134| Value = [Literal] 1 +# 2134| ValueCategory = prvalue +# 2136| [TopLevelFunction] void initialization_with_destructor(bool, char) +# 2136| : +# 2136| getParameter(0): [Parameter] b +# 2136| Type = [BoolType] bool +# 2136| getParameter(1): [Parameter] c +# 2136| Type = [PlainCharType] char +# 2136| getEntryPoint(): [BlockStmt] { ... } +# 2137| getStmt(0): [IfStmt] if (...) ... +# 2137| getInitialization(): [DeclStmt] declaration +# 2137| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2137| Type = [Class] ClassWithDestructor +# 2137| getVariable().getInitializer(): [Initializer] initializer for x +# 2137| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2137| Type = [VoidType] void +# 2137| ValueCategory = prvalue +# 2137| getCondition(): [VariableAccess] b +# 2137| Type = [BoolType] bool +# 2137| ValueCategory = prvalue(load) +# 2138| getThen(): [ExprStmt] ExprStmt +# 2138| getExpr(): [FunctionCall] call to set_x +# 2138| Type = [VoidType] void +# 2138| ValueCategory = prvalue +# 2138| getQualifier(): [VariableAccess] x +# 2138| Type = [Class] ClassWithDestructor +# 2138| ValueCategory = lvalue +# 2138| getArgument(0): [CharLiteral] 97 +# 2138| Type = [PlainCharType] char +# 2138| Value = [CharLiteral] 97 +# 2138| ValueCategory = prvalue +# 2138| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2138| Type = [VoidType] void +# 2138| ValueCategory = prvalue +# 2138| getQualifier(): [VariableAccess] x +# 2138| Type = [Class] ClassWithDestructor +# 2138| ValueCategory = lvalue +# 2140| getStmt(1): [ConstexprIfStmt] if constexpr (...) ... +# 2140| getInitialization(): [DeclStmt] declaration +# 2140| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2140| Type = [Class] ClassWithDestructor +# 2140| getVariable().getInitializer(): [Initializer] initializer for x +# 2140| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2140| Type = [VoidType] void +# 2140| ValueCategory = prvalue +# 2140| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2140| Type = [BoolType] bool +# 2140| Value = [VariableAccess] 1 +# 2140| ValueCategory = prvalue(load) +# 2141| getThen(): [ExprStmt] ExprStmt +# 2141| getExpr(): [FunctionCall] call to set_x +# 2141| Type = [VoidType] void +# 2141| ValueCategory = prvalue +# 2141| getQualifier(): [VariableAccess] x +# 2141| Type = [Class] ClassWithDestructor +# 2141| ValueCategory = lvalue +# 2141| getArgument(0): [CharLiteral] 97 +# 2141| Type = [PlainCharType] char +# 2141| Value = [CharLiteral] 97 +# 2141| ValueCategory = prvalue +# 2141| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2141| Type = [VoidType] void +# 2141| ValueCategory = prvalue +# 2141| getQualifier(): [VariableAccess] x +# 2141| Type = [Class] ClassWithDestructor +# 2141| ValueCategory = lvalue +# 2143| getStmt(2): [SwitchStmt] switch (...) ... +# 2143| getInitialization(): [DeclStmt] declaration +# 2143| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2143| Type = [Class] ClassWithDestructor +# 2143| getVariable().getInitializer(): [Initializer] initializer for x +# 2143| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2143| Type = [VoidType] void +# 2143| ValueCategory = prvalue +# 2143| getExpr(): [VariableAccess] c +# 2143| Type = [PlainCharType] char +# 2143| ValueCategory = prvalue(load) +# 2143| getStmt(): [BlockStmt] { ... } +# 2144| getStmt(0): [SwitchCase] case ...: +# 2144| getExpr(): [CharLiteral] 97 +# 2144| Type = [PlainCharType] char +# 2144| Value = [CharLiteral] 97 +# 2144| ValueCategory = prvalue +# 2144| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2144| Conversion = [IntegralConversion] integral conversion +# 2144| Type = [IntType] int +# 2144| Value = [CStyleCast] 97 +# 2144| ValueCategory = prvalue +# 2145| getStmt(1): [ExprStmt] ExprStmt +# 2145| getExpr(): [FunctionCall] call to set_x +# 2145| Type = [VoidType] void +# 2145| ValueCategory = prvalue +# 2145| getQualifier(): [VariableAccess] x +# 2145| Type = [Class] ClassWithDestructor +# 2145| ValueCategory = lvalue +# 2145| getArgument(0): [CharLiteral] 97 +# 2145| Type = [PlainCharType] char +# 2145| Value = [CharLiteral] 97 +# 2145| ValueCategory = prvalue +# 2146| getStmt(2): [BreakStmt] break; +# 2147| getStmt(3): [SwitchCase] default: +# 2148| getStmt(4): [ExprStmt] ExprStmt +# 2148| getExpr(): [FunctionCall] call to set_x +# 2148| Type = [VoidType] void +# 2148| ValueCategory = prvalue +# 2148| getQualifier(): [VariableAccess] x +# 2148| Type = [Class] ClassWithDestructor +# 2148| ValueCategory = lvalue +# 2148| getArgument(0): [CharLiteral] 98 +# 2148| Type = [PlainCharType] char +# 2148| Value = [CharLiteral] 98 +# 2148| ValueCategory = prvalue +# 2149| getStmt(5): [BreakStmt] break; +# 2150| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2150| Type = [VoidType] void +# 2150| ValueCategory = prvalue +# 2150| getQualifier(): [VariableAccess] x +# 2150| Type = [Class] ClassWithDestructor +# 2150| ValueCategory = lvalue +# 2143| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2143| Conversion = [IntegralConversion] integral conversion +# 2143| Type = [IntType] int +# 2143| ValueCategory = prvalue +# 2150| getStmt(3): [LabelStmt] label ...: +# 2152| getStmt(4): [DeclStmt] declaration +# 2152| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2152| Type = [Class] ClassWithDestructor +# 2152| getVariable().getInitializer(): [Initializer] initializer for x +# 2152| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2152| Type = [VoidType] void +# 2152| ValueCategory = prvalue +# 2153| getStmt(5): [RangeBasedForStmt] for(...:...) ... +# 2153| getChild(0): [DeclStmt] declaration +# 2153| getDeclarationEntry(0): (no string representation) +# 2153| Type = [LValueReferenceType] vector & +#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) +# 2153| getExpr(): [VariableAccess] ys +# 2153| Type = [ClassTemplateInstantiation,Struct] vector +# 2153| ValueCategory = lvalue +# 2153| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2153| Type = [LValueReferenceType] vector & +# 2153| ValueCategory = prvalue +# 2153| getBeginEndDeclaration(): [DeclStmt] declaration +# 2153| getDeclarationEntry(0): (no string representation) +# 2153| Type = [NestedStruct] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) +# 2153| getExpr(): [FunctionCall] call to begin +# 2153| Type = [NestedStruct] iterator +# 2153| ValueCategory = prvalue +# 2153| getQualifier(): [VariableAccess] (__range) +# 2153| Type = [LValueReferenceType] vector & +# 2153| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector +#-----| ValueCategory = lvalue +# 2153| getDeclarationEntry(1): (no string representation) +# 2153| Type = [NestedStruct] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) +# 2153| getExpr(): [FunctionCall] call to end +# 2153| Type = [NestedStruct] iterator +# 2153| ValueCategory = prvalue +# 2153| getQualifier(): [VariableAccess] (__range) +# 2153| Type = [LValueReferenceType] vector & +# 2153| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector +#-----| ValueCategory = lvalue +# 2153| getCondition(): [FunctionCall] call to operator!= +# 2153| Type = [BoolType] bool +# 2153| ValueCategory = prvalue +# 2153| getQualifier(): [VariableAccess] (__begin) +# 2153| Type = [NestedStruct] iterator +# 2153| ValueCategory = lvalue +# 2153| getArgument(0): [VariableAccess] (__end) +# 2153| Type = [NestedStruct] iterator +# 2153| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator +#-----| ValueCategory = lvalue +# 2153| getUpdate(): [FunctionCall] call to operator++ +# 2153| Type = [LValueReferenceType] iterator & +# 2153| ValueCategory = prvalue +# 2153| getQualifier(): [VariableAccess] (__begin) +# 2153| Type = [NestedStruct] iterator +# 2153| ValueCategory = lvalue +# 2153| getChild(4): [DeclStmt] declaration +# 2153| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2153| Type = [Class] ClassWithDestructor +# 2153| getVariable().getInitializer(): [Initializer] initializer for y +# 2153| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2153| Type = [LValueReferenceType] ClassWithDestructor & +# 2153| ValueCategory = prvalue +# 2153| getQualifier(): [VariableAccess] (__begin) +# 2153| Type = [NestedStruct] iterator +# 2153| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator +#-----| ValueCategory = lvalue +# 2153| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2153| Type = [Class] ClassWithDestructor +# 2153| ValueCategory = prvalue(load) +# 2154| getStmt(): [ExprStmt] ExprStmt +# 2154| getExpr(): [FunctionCall] call to set_x +# 2154| Type = [VoidType] void +# 2154| ValueCategory = prvalue +# 2154| getQualifier(): [VariableAccess] y +# 2154| Type = [Class] ClassWithDestructor +# 2154| ValueCategory = lvalue +# 2154| getArgument(0): [CharLiteral] 97 +# 2154| Type = [PlainCharType] char +# 2154| Value = [CharLiteral] 97 +# 2154| ValueCategory = prvalue +# 2153| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2153| Type = [NestedStruct] iterator +# 2153| ValueCategory = lvalue +# 2155| getStmt(6): [ReturnStmt] return ... +# 2155| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2155| Type = [VoidType] void +# 2155| ValueCategory = prvalue +# 2155| getQualifier(): [VariableAccess] x +# 2155| Type = [Class] ClassWithDestructor +# 2155| ValueCategory = lvalue perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) # 4| : diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index f21ffad9dbba..458ab279ff2c 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -6687,3951 +6687,3935 @@ ir.cpp: # 1054| v1054_43(void) = AliasedUse : ~m1054_20 # 1054| v1054_44(void) = ExitFunction : -# 1077| void RangeBasedFor(vector const&) -# 1077| Block 0 -# 1077| v1077_1(void) = EnterFunction : -# 1077| m1077_2(unknown) = AliasedDefinition : -# 1077| m1077_3(unknown) = InitializeNonLocal : -# 1077| m1077_4(unknown) = Chi : total:m1077_2, partial:m1077_3 -# 1077| r1077_5(glval &>) = VariableAddress[v] : -# 1077| m1077_6(vector &) = InitializeParameter[v] : &:r1077_5 -# 1077| r1077_7(vector &) = Load[v] : &:r1077_5, m1077_6 -# 1077| m1077_8(unknown) = InitializeIndirection[v] : &:r1077_7 -# 1078| r1078_1(glval &>) = VariableAddress[(__range)] : -# 1078| r1078_2(glval &>) = VariableAddress[v] : -# 1078| r1078_3(vector &) = Load[v] : &:r1078_2, m1077_6 -# 1078| r1078_4(glval>) = CopyValue : r1078_3 -# 1078| r1078_5(vector &) = CopyValue : r1078_4 -# 1078| m1078_6(vector &) = Store[(__range)] : &:r1078_1, r1078_5 -# 1078| r1078_7(glval) = VariableAddress[(__begin)] : -# 1078| r1078_8(glval &>) = VariableAddress[(__range)] : -# 1078| r1078_9(vector &) = Load[(__range)] : &:r1078_8, m1078_6 -#-----| r0_1(glval>) = CopyValue : r1078_9 -# 1078| r1078_10(glval) = FunctionAddress[begin] : -# 1078| r1078_11(iterator) = Call[begin] : func:r1078_10, this:r0_1 -# 1078| m1078_12(unknown) = ^CallSideEffect : ~m1077_4 -# 1078| m1078_13(unknown) = Chi : total:m1077_4, partial:m1078_12 -#-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m1077_8 -# 1078| m1078_14(iterator) = Store[(__begin)] : &:r1078_7, r1078_11 -# 1078| r1078_15(glval) = VariableAddress[(__end)] : -# 1078| r1078_16(glval &>) = VariableAddress[(__range)] : -# 1078| r1078_17(vector &) = Load[(__range)] : &:r1078_16, m1078_6 -#-----| r0_3(glval>) = CopyValue : r1078_17 -# 1078| r1078_18(glval) = FunctionAddress[end] : -# 1078| r1078_19(iterator) = Call[end] : func:r1078_18, this:r0_3 -# 1078| m1078_20(unknown) = ^CallSideEffect : ~m1078_13 -# 1078| m1078_21(unknown) = Chi : total:m1078_13, partial:m1078_20 -#-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m1077_8 -# 1078| m1078_22(iterator) = Store[(__end)] : &:r1078_15, r1078_19 +# 1079| void RangeBasedFor(vector const&) +# 1079| Block 0 +# 1079| v1079_1(void) = EnterFunction : +# 1079| m1079_2(unknown) = AliasedDefinition : +# 1079| m1079_3(unknown) = InitializeNonLocal : +# 1079| m1079_4(unknown) = Chi : total:m1079_2, partial:m1079_3 +# 1079| r1079_5(glval &>) = VariableAddress[v] : +# 1079| m1079_6(vector &) = InitializeParameter[v] : &:r1079_5 +# 1079| r1079_7(vector &) = Load[v] : &:r1079_5, m1079_6 +# 1079| m1079_8(unknown) = InitializeIndirection[v] : &:r1079_7 +# 1080| r1080_1(glval &>) = VariableAddress[(__range)] : +# 1080| r1080_2(glval &>) = VariableAddress[v] : +# 1080| r1080_3(vector &) = Load[v] : &:r1080_2, m1079_6 +# 1080| r1080_4(glval>) = CopyValue : r1080_3 +# 1080| r1080_5(vector &) = CopyValue : r1080_4 +# 1080| m1080_6(vector &) = Store[(__range)] : &:r1080_1, r1080_5 +# 1080| r1080_7(glval) = VariableAddress[(__begin)] : +# 1080| r1080_8(glval &>) = VariableAddress[(__range)] : +# 1080| r1080_9(vector &) = Load[(__range)] : &:r1080_8, m1080_6 +#-----| r0_1(glval>) = CopyValue : r1080_9 +# 1080| r1080_10(glval) = FunctionAddress[begin] : +# 1080| r1080_11(iterator) = Call[begin] : func:r1080_10, this:r0_1 +# 1080| m1080_12(unknown) = ^CallSideEffect : ~m1079_4 +# 1080| m1080_13(unknown) = Chi : total:m1079_4, partial:m1080_12 +#-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m1079_8 +# 1080| m1080_14(iterator) = Store[(__begin)] : &:r1080_7, r1080_11 +# 1080| r1080_15(glval) = VariableAddress[(__end)] : +# 1080| r1080_16(glval &>) = VariableAddress[(__range)] : +# 1080| r1080_17(vector &) = Load[(__range)] : &:r1080_16, m1080_6 +#-----| r0_3(glval>) = CopyValue : r1080_17 +# 1080| r1080_18(glval) = FunctionAddress[end] : +# 1080| r1080_19(iterator) = Call[end] : func:r1080_18, this:r0_3 +# 1080| m1080_20(unknown) = ^CallSideEffect : ~m1080_13 +# 1080| m1080_21(unknown) = Chi : total:m1080_13, partial:m1080_20 +#-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m1079_8 +# 1080| m1080_22(iterator) = Store[(__end)] : &:r1080_15, r1080_19 #-----| Goto -> Block 1 -# 1078| Block 1 -# 1078| m1078_23(iterator) = Phi : from 0:m1078_14, from 4:m1078_49 -# 1078| m1078_24(unknown) = Phi : from 0:~m1078_21, from 4:~m1078_46 -# 1078| r1078_25(glval) = VariableAddress[(__begin)] : -#-----| r0_5(glval) = Convert : r1078_25 -# 1078| r1078_26(glval) = FunctionAddress[operator!=] : -# 1078| r1078_27(glval) = VariableAddress[(__end)] : -# 1078| r1078_28(iterator) = Load[(__end)] : &:r1078_27, m1078_22 -# 1078| r1078_29(bool) = Call[operator!=] : func:r1078_26, this:r0_5, 0:r1078_28 -# 1078| m1078_30(unknown) = ^CallSideEffect : ~m1078_24 -# 1078| m1078_31(unknown) = Chi : total:m1078_24, partial:m1078_30 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m1078_23 -# 1078| v1078_32(void) = ConditionalBranch : r1078_29 +# 1080| Block 1 +# 1080| m1080_23(iterator) = Phi : from 0:m1080_14, from 4:m1080_49 +# 1080| m1080_24(unknown) = Phi : from 0:~m1080_21, from 4:~m1080_46 +# 1080| r1080_25(glval) = VariableAddress[(__begin)] : +#-----| r0_5(glval) = Convert : r1080_25 +# 1080| r1080_26(glval) = FunctionAddress[operator!=] : +# 1080| r1080_27(glval) = VariableAddress[(__end)] : +# 1080| r1080_28(iterator) = Load[(__end)] : &:r1080_27, m1080_22 +# 1080| r1080_29(bool) = Call[operator!=] : func:r1080_26, this:r0_5, 0:r1080_28 +# 1080| m1080_30(unknown) = ^CallSideEffect : ~m1080_24 +# 1080| m1080_31(unknown) = Chi : total:m1080_24, partial:m1080_30 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m1080_23 +# 1080| v1080_32(void) = ConditionalBranch : r1080_29 #-----| False -> Block 5 #-----| True -> Block 2 -# 1078| Block 2 -# 1078| r1078_33(glval) = VariableAddress[e] : -# 1078| r1078_34(glval) = VariableAddress[(__begin)] : -#-----| r0_7(glval) = Convert : r1078_34 -# 1078| r1078_35(glval) = FunctionAddress[operator*] : -# 1078| r1078_36(int &) = Call[operator*] : func:r1078_35, this:r0_7 -# 1078| m1078_37(unknown) = ^CallSideEffect : ~m1078_31 -# 1078| m1078_38(unknown) = Chi : total:m1078_31, partial:m1078_37 -#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m1078_23 -# 1078| r1078_39(int) = Load[?] : &:r1078_36, ~m1078_38 -# 1078| m1078_40(int) = Store[e] : &:r1078_33, r1078_39 -# 1079| r1079_1(glval) = VariableAddress[e] : -# 1079| r1079_2(int) = Load[e] : &:r1079_1, m1078_40 -# 1079| r1079_3(int) = Constant[0] : -# 1079| r1079_4(bool) = CompareGT : r1079_2, r1079_3 -# 1079| v1079_5(void) = ConditionalBranch : r1079_4 +# 1080| Block 2 +# 1080| r1080_33(glval) = VariableAddress[e] : +# 1080| r1080_34(glval) = VariableAddress[(__begin)] : +#-----| r0_7(glval) = Convert : r1080_34 +# 1080| r1080_35(glval) = FunctionAddress[operator*] : +# 1080| r1080_36(int &) = Call[operator*] : func:r1080_35, this:r0_7 +# 1080| m1080_37(unknown) = ^CallSideEffect : ~m1080_31 +# 1080| m1080_38(unknown) = Chi : total:m1080_31, partial:m1080_37 +#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m1080_23 +# 1080| r1080_39(int) = Load[?] : &:r1080_36, ~m1080_38 +# 1080| m1080_40(int) = Store[e] : &:r1080_33, r1080_39 +# 1081| r1081_1(glval) = VariableAddress[e] : +# 1081| r1081_2(int) = Load[e] : &:r1081_1, m1080_40 +# 1081| r1081_3(int) = Constant[0] : +# 1081| r1081_4(bool) = CompareGT : r1081_2, r1081_3 +# 1081| v1081_5(void) = ConditionalBranch : r1081_4 #-----| False -> Block 4 #-----| True -> Block 3 -# 1080| Block 3 -# 1080| v1080_1(void) = NoOp : +# 1082| Block 3 +# 1082| v1082_1(void) = NoOp : #-----| Goto -> Block 4 -# 1078| Block 4 -# 1078| v1078_41(void) = NoOp : -# 1078| r1078_42(glval) = VariableAddress[(__begin)] : -# 1078| r1078_43(glval) = FunctionAddress[operator++] : -# 1078| r1078_44(iterator &) = Call[operator++] : func:r1078_43, this:r1078_42 -# 1078| m1078_45(unknown) = ^CallSideEffect : ~m1078_38 -# 1078| m1078_46(unknown) = Chi : total:m1078_38, partial:m1078_45 -# 1078| v1078_47(void) = ^IndirectReadSideEffect[-1] : &:r1078_42, m1078_23 -# 1078| m1078_48(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1078_42 -# 1078| m1078_49(iterator) = Chi : total:m1078_23, partial:m1078_48 -# 1078| r1078_50(glval) = CopyValue : r1078_44 +# 1080| Block 4 +# 1080| v1080_41(void) = NoOp : +# 1080| r1080_42(glval) = VariableAddress[(__begin)] : +# 1080| r1080_43(glval) = FunctionAddress[operator++] : +# 1080| r1080_44(iterator &) = Call[operator++] : func:r1080_43, this:r1080_42 +# 1080| m1080_45(unknown) = ^CallSideEffect : ~m1080_38 +# 1080| m1080_46(unknown) = Chi : total:m1080_38, partial:m1080_45 +# 1080| v1080_47(void) = ^IndirectReadSideEffect[-1] : &:r1080_42, m1080_23 +# 1080| m1080_48(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1080_42 +# 1080| m1080_49(iterator) = Chi : total:m1080_23, partial:m1080_48 +# 1080| r1080_50(glval) = CopyValue : r1080_44 #-----| Goto (back edge) -> Block 1 -# 1084| Block 5 -# 1084| r1084_1(glval &>) = VariableAddress[(__range)] : -# 1084| r1084_2(glval &>) = VariableAddress[v] : -# 1084| r1084_3(vector &) = Load[v] : &:r1084_2, m1077_6 -# 1084| r1084_4(glval>) = CopyValue : r1084_3 -# 1084| r1084_5(vector &) = CopyValue : r1084_4 -# 1084| m1084_6(vector &) = Store[(__range)] : &:r1084_1, r1084_5 -# 1084| r1084_7(glval) = VariableAddress[(__begin)] : -# 1084| r1084_8(glval &>) = VariableAddress[(__range)] : -# 1084| r1084_9(vector &) = Load[(__range)] : &:r1084_8, m1084_6 -#-----| r0_9(glval>) = CopyValue : r1084_9 -# 1084| r1084_10(glval) = FunctionAddress[begin] : -# 1084| r1084_11(iterator) = Call[begin] : func:r1084_10, this:r0_9 -# 1084| m1084_12(unknown) = ^CallSideEffect : ~m1078_31 -# 1084| m1084_13(unknown) = Chi : total:m1078_31, partial:m1084_12 -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m1077_8 -# 1084| m1084_14(iterator) = Store[(__begin)] : &:r1084_7, r1084_11 -# 1084| r1084_15(glval) = VariableAddress[(__end)] : -# 1084| r1084_16(glval &>) = VariableAddress[(__range)] : -# 1084| r1084_17(vector &) = Load[(__range)] : &:r1084_16, m1084_6 -#-----| r0_11(glval>) = CopyValue : r1084_17 -# 1084| r1084_18(glval) = FunctionAddress[end] : -# 1084| r1084_19(iterator) = Call[end] : func:r1084_18, this:r0_11 -# 1084| m1084_20(unknown) = ^CallSideEffect : ~m1084_13 -# 1084| m1084_21(unknown) = Chi : total:m1084_13, partial:m1084_20 -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1077_8 -# 1084| m1084_22(iterator) = Store[(__end)] : &:r1084_15, r1084_19 +# 1086| Block 5 +# 1086| r1086_1(glval &>) = VariableAddress[(__range)] : +# 1086| r1086_2(glval &>) = VariableAddress[v] : +# 1086| r1086_3(vector &) = Load[v] : &:r1086_2, m1079_6 +# 1086| r1086_4(glval>) = CopyValue : r1086_3 +# 1086| r1086_5(vector &) = CopyValue : r1086_4 +# 1086| m1086_6(vector &) = Store[(__range)] : &:r1086_1, r1086_5 +# 1086| r1086_7(glval) = VariableAddress[(__begin)] : +# 1086| r1086_8(glval &>) = VariableAddress[(__range)] : +# 1086| r1086_9(vector &) = Load[(__range)] : &:r1086_8, m1086_6 +#-----| r0_9(glval>) = CopyValue : r1086_9 +# 1086| r1086_10(glval) = FunctionAddress[begin] : +# 1086| r1086_11(iterator) = Call[begin] : func:r1086_10, this:r0_9 +# 1086| m1086_12(unknown) = ^CallSideEffect : ~m1080_31 +# 1086| m1086_13(unknown) = Chi : total:m1080_31, partial:m1086_12 +#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m1079_8 +# 1086| m1086_14(iterator) = Store[(__begin)] : &:r1086_7, r1086_11 +# 1086| r1086_15(glval) = VariableAddress[(__end)] : +# 1086| r1086_16(glval &>) = VariableAddress[(__range)] : +# 1086| r1086_17(vector &) = Load[(__range)] : &:r1086_16, m1086_6 +#-----| r0_11(glval>) = CopyValue : r1086_17 +# 1086| r1086_18(glval) = FunctionAddress[end] : +# 1086| r1086_19(iterator) = Call[end] : func:r1086_18, this:r0_11 +# 1086| m1086_20(unknown) = ^CallSideEffect : ~m1086_13 +# 1086| m1086_21(unknown) = Chi : total:m1086_13, partial:m1086_20 +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1079_8 +# 1086| m1086_22(iterator) = Store[(__end)] : &:r1086_15, r1086_19 #-----| Goto -> Block 6 -# 1084| Block 6 -# 1084| m1084_23(iterator) = Phi : from 5:m1084_14, from 7:m1084_40 -# 1084| m1084_24(unknown) = Phi : from 5:~m1084_21, from 7:~m1084_37 -# 1084| r1084_25(glval) = VariableAddress[(__begin)] : -#-----| r0_13(glval) = Convert : r1084_25 -# 1084| r1084_26(glval) = FunctionAddress[operator!=] : -# 1084| r1084_27(glval) = VariableAddress[(__end)] : -# 1084| r1084_28(iterator) = Load[(__end)] : &:r1084_27, m1084_22 -# 1084| r1084_29(bool) = Call[operator!=] : func:r1084_26, this:r0_13, 0:r1084_28 -# 1084| m1084_30(unknown) = ^CallSideEffect : ~m1084_24 -# 1084| m1084_31(unknown) = Chi : total:m1084_24, partial:m1084_30 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, m1084_23 -# 1084| v1084_32(void) = ConditionalBranch : r1084_29 +# 1086| Block 6 +# 1086| m1086_23(iterator) = Phi : from 5:m1086_14, from 7:m1086_40 +# 1086| m1086_24(unknown) = Phi : from 5:~m1086_21, from 7:~m1086_37 +# 1086| r1086_25(glval) = VariableAddress[(__begin)] : +#-----| r0_13(glval) = Convert : r1086_25 +# 1086| r1086_26(glval) = FunctionAddress[operator!=] : +# 1086| r1086_27(glval) = VariableAddress[(__end)] : +# 1086| r1086_28(iterator) = Load[(__end)] : &:r1086_27, m1086_22 +# 1086| r1086_29(bool) = Call[operator!=] : func:r1086_26, this:r0_13, 0:r1086_28 +# 1086| m1086_30(unknown) = ^CallSideEffect : ~m1086_24 +# 1086| m1086_31(unknown) = Chi : total:m1086_24, partial:m1086_30 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, m1086_23 +# 1086| v1086_32(void) = ConditionalBranch : r1086_29 #-----| False -> Block 10 #-----| True -> Block 8 -# 1084| Block 7 -# 1084| r1084_33(glval) = VariableAddress[(__begin)] : -# 1084| r1084_34(glval) = FunctionAddress[operator++] : -# 1084| r1084_35(iterator &) = Call[operator++] : func:r1084_34, this:r1084_33 -# 1084| m1084_36(unknown) = ^CallSideEffect : ~m1084_47 -# 1084| m1084_37(unknown) = Chi : total:m1084_47, partial:m1084_36 -# 1084| v1084_38(void) = ^IndirectReadSideEffect[-1] : &:r1084_33, m1084_23 -# 1084| m1084_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1084_33 -# 1084| m1084_40(iterator) = Chi : total:m1084_23, partial:m1084_39 -# 1084| r1084_41(glval) = CopyValue : r1084_35 +# 1086| Block 7 +# 1086| r1086_33(glval) = VariableAddress[(__begin)] : +# 1086| r1086_34(glval) = FunctionAddress[operator++] : +# 1086| r1086_35(iterator &) = Call[operator++] : func:r1086_34, this:r1086_33 +# 1086| m1086_36(unknown) = ^CallSideEffect : ~m1086_47 +# 1086| m1086_37(unknown) = Chi : total:m1086_47, partial:m1086_36 +# 1086| v1086_38(void) = ^IndirectReadSideEffect[-1] : &:r1086_33, m1086_23 +# 1086| m1086_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1086_33 +# 1086| m1086_40(iterator) = Chi : total:m1086_23, partial:m1086_39 +# 1086| r1086_41(glval) = CopyValue : r1086_35 #-----| Goto (back edge) -> Block 6 -# 1084| Block 8 -# 1084| r1084_42(glval) = VariableAddress[e] : -# 1084| r1084_43(glval) = VariableAddress[(__begin)] : -#-----| r0_15(glval) = Convert : r1084_43 -# 1084| r1084_44(glval) = FunctionAddress[operator*] : -# 1084| r1084_45(int &) = Call[operator*] : func:r1084_44, this:r0_15 -# 1084| m1084_46(unknown) = ^CallSideEffect : ~m1084_31 -# 1084| m1084_47(unknown) = Chi : total:m1084_31, partial:m1084_46 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m1084_23 -# 1084| r1084_48(glval) = CopyValue : r1084_45 -# 1084| r1084_49(glval) = Convert : r1084_48 -# 1084| r1084_50(int &) = CopyValue : r1084_49 -# 1084| m1084_51(int &) = Store[e] : &:r1084_42, r1084_50 -# 1085| r1085_1(glval) = VariableAddress[e] : -# 1085| r1085_2(int &) = Load[e] : &:r1085_1, m1084_51 -# 1085| r1085_3(int) = Load[?] : &:r1085_2, ~m1084_47 -# 1085| r1085_4(int) = Constant[5] : -# 1085| r1085_5(bool) = CompareLT : r1085_3, r1085_4 -# 1085| v1085_6(void) = ConditionalBranch : r1085_5 +# 1086| Block 8 +# 1086| r1086_42(glval) = VariableAddress[e] : +# 1086| r1086_43(glval) = VariableAddress[(__begin)] : +#-----| r0_15(glval) = Convert : r1086_43 +# 1086| r1086_44(glval) = FunctionAddress[operator*] : +# 1086| r1086_45(int &) = Call[operator*] : func:r1086_44, this:r0_15 +# 1086| m1086_46(unknown) = ^CallSideEffect : ~m1086_31 +# 1086| m1086_47(unknown) = Chi : total:m1086_31, partial:m1086_46 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m1086_23 +# 1086| r1086_48(glval) = CopyValue : r1086_45 +# 1086| r1086_49(glval) = Convert : r1086_48 +# 1086| r1086_50(int &) = CopyValue : r1086_49 +# 1086| m1086_51(int &) = Store[e] : &:r1086_42, r1086_50 +# 1087| r1087_1(glval) = VariableAddress[e] : +# 1087| r1087_2(int &) = Load[e] : &:r1087_1, m1086_51 +# 1087| r1087_3(int) = Load[?] : &:r1087_2, ~m1086_47 +# 1087| r1087_4(int) = Constant[5] : +# 1087| r1087_5(bool) = CompareLT : r1087_3, r1087_4 +# 1087| v1087_6(void) = ConditionalBranch : r1087_5 #-----| False -> Block 7 #-----| True -> Block 9 -# 1086| Block 9 -# 1086| v1086_1(void) = NoOp : +# 1088| Block 9 +# 1088| v1088_1(void) = NoOp : #-----| Goto -> Block 10 -# 1088| Block 10 -# 1088| m1088_1(unknown) = Phi : from 6:~m1084_31, from 9:~m1084_47 -# 1088| v1088_2(void) = NoOp : -# 1089| v1089_1(void) = NoOp : -# 1077| v1077_9(void) = ReturnIndirection[v] : &:r1077_7, m1077_8 -# 1077| v1077_10(void) = ReturnVoid : -# 1077| v1077_11(void) = AliasedUse : ~m1088_1 -# 1077| v1077_12(void) = ExitFunction : - -# 1108| int AsmStmt(int) -# 1108| Block 0 -# 1108| v1108_1(void) = EnterFunction : -# 1108| m1108_2(unknown) = AliasedDefinition : -# 1108| m1108_3(unknown) = InitializeNonLocal : -# 1108| m1108_4(unknown) = Chi : total:m1108_2, partial:m1108_3 -# 1108| r1108_5(glval) = VariableAddress[x] : -# 1108| m1108_6(int) = InitializeParameter[x] : &:r1108_5 -# 1109| m1109_1(unknown) = InlineAsm : ~m1108_4 -# 1109| m1109_2(unknown) = Chi : total:m1108_4, partial:m1109_1 -# 1110| r1110_1(glval) = VariableAddress[#return] : -# 1110| r1110_2(glval) = VariableAddress[x] : -# 1110| r1110_3(int) = Load[x] : &:r1110_2, m1108_6 -# 1110| m1110_4(int) = Store[#return] : &:r1110_1, r1110_3 -# 1108| r1108_7(glval) = VariableAddress[#return] : -# 1108| v1108_8(void) = ReturnValue : &:r1108_7, m1110_4 -# 1108| v1108_9(void) = AliasedUse : ~m1109_2 -# 1108| v1108_10(void) = ExitFunction : - -# 1113| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) -# 1113| Block 0 -# 1113| v1113_1(void) = EnterFunction : -# 1113| m1113_2(unknown) = AliasedDefinition : -# 1113| m1113_3(unknown) = InitializeNonLocal : -# 1113| m1113_4(unknown) = Chi : total:m1113_2, partial:m1113_3 -# 1113| r1113_5(glval) = VariableAddress[a] : -# 1113| m1113_6(unsigned int &) = InitializeParameter[a] : &:r1113_5 -# 1113| r1113_7(unsigned int &) = Load[a] : &:r1113_5, m1113_6 -# 1113| m1113_8(unknown) = InitializeIndirection[a] : &:r1113_7 -# 1113| r1113_9(glval) = VariableAddress[b] : -# 1113| m1113_10(unsigned int) = InitializeParameter[b] : &:r1113_9 -# 1113| r1113_11(glval) = VariableAddress[c] : -# 1113| m1113_12(unsigned int &) = InitializeParameter[c] : &:r1113_11 -# 1113| r1113_13(unsigned int &) = Load[c] : &:r1113_11, m1113_12 -# 1113| m1113_14(unknown) = InitializeIndirection[c] : &:r1113_13 -# 1113| r1113_15(glval) = VariableAddress[d] : -# 1113| m1113_16(unsigned int) = InitializeParameter[d] : &:r1113_15 -# 1118| r1118_1(glval) = VariableAddress[a] : -# 1118| r1118_2(unsigned int &) = Load[a] : &:r1118_1, m1113_6 -# 1118| r1118_3(glval) = CopyValue : r1118_2 -# 1118| r1118_4(glval) = VariableAddress[b] : -# 1118| r1118_5(glval) = VariableAddress[c] : -# 1118| r1118_6(unsigned int &) = Load[c] : &:r1118_5, m1113_12 -# 1118| r1118_7(unsigned int) = Load[?] : &:r1118_6, ~m1113_14 -# 1118| r1118_8(glval) = VariableAddress[d] : -# 1118| r1118_9(unsigned int) = Load[d] : &:r1118_8, m1113_16 -# 1115| m1115_1(unknown) = InlineAsm : ~m1113_4, 0:r1118_3, 1:r1118_4, 2:r1118_7, 3:r1118_9 -# 1115| m1115_2(unknown) = Chi : total:m1113_4, partial:m1115_1 -# 1120| v1120_1(void) = NoOp : -# 1113| v1113_17(void) = ReturnIndirection[a] : &:r1113_7, m1113_8 -# 1113| v1113_18(void) = ReturnIndirection[c] : &:r1113_13, m1113_14 -# 1113| v1113_19(void) = ReturnVoid : -# 1113| v1113_20(void) = AliasedUse : ~m1115_2 -# 1113| v1113_21(void) = ExitFunction : - -# 1122| void ExternDeclarations() -# 1122| Block 0 -# 1122| v1122_1(void) = EnterFunction : -# 1122| m1122_2(unknown) = AliasedDefinition : -# 1122| m1122_3(unknown) = InitializeNonLocal : -# 1122| m1122_4(unknown) = Chi : total:m1122_2, partial:m1122_3 -# 1125| r1125_1(glval) = VariableAddress[x] : -# 1125| m1125_2(int) = Uninitialized[x] : &:r1125_1 -# 1126| r1126_1(glval) = VariableAddress[y] : -# 1126| m1126_2(int) = Uninitialized[y] : &:r1126_1 -# 1127| r1127_1(glval) = VariableAddress[h] : -# 1127| m1127_2(int) = Uninitialized[h] : &:r1127_1 -# 1129| v1129_1(void) = NoOp : -# 1122| v1122_5(void) = ReturnVoid : -# 1122| v1122_6(void) = AliasedUse : m1122_3 -# 1122| v1122_7(void) = ExitFunction : - -# 1137| void ExternDeclarationsInMacro() -# 1137| Block 0 -# 1137| v1137_1(void) = EnterFunction : -# 1137| m1137_2(unknown) = AliasedDefinition : -# 1137| m1137_3(unknown) = InitializeNonLocal : -# 1137| m1137_4(unknown) = Chi : total:m1137_2, partial:m1137_3 -# 1139| r1139_1(glval) = VariableAddress[i] : -# 1139| r1139_2(int) = Constant[0] : -# 1139| m1139_3(int) = Store[i] : &:r1139_1, r1139_2 +# 1090| Block 10 +# 1090| m1090_1(unknown) = Phi : from 6:~m1086_31, from 9:~m1086_47 +# 1090| v1090_2(void) = NoOp : +# 1091| v1091_1(void) = NoOp : +# 1079| v1079_9(void) = ReturnIndirection[v] : &:r1079_7, m1079_8 +# 1079| v1079_10(void) = ReturnVoid : +# 1079| v1079_11(void) = AliasedUse : ~m1090_1 +# 1079| v1079_12(void) = ExitFunction : + +# 1110| int AsmStmt(int) +# 1110| Block 0 +# 1110| v1110_1(void) = EnterFunction : +# 1110| m1110_2(unknown) = AliasedDefinition : +# 1110| m1110_3(unknown) = InitializeNonLocal : +# 1110| m1110_4(unknown) = Chi : total:m1110_2, partial:m1110_3 +# 1110| r1110_5(glval) = VariableAddress[x] : +# 1110| m1110_6(int) = InitializeParameter[x] : &:r1110_5 +# 1111| m1111_1(unknown) = InlineAsm : ~m1110_4 +# 1111| m1111_2(unknown) = Chi : total:m1110_4, partial:m1111_1 +# 1112| r1112_1(glval) = VariableAddress[#return] : +# 1112| r1112_2(glval) = VariableAddress[x] : +# 1112| r1112_3(int) = Load[x] : &:r1112_2, m1110_6 +# 1112| m1112_4(int) = Store[#return] : &:r1112_1, r1112_3 +# 1110| r1110_7(glval) = VariableAddress[#return] : +# 1110| v1110_8(void) = ReturnValue : &:r1110_7, m1112_4 +# 1110| v1110_9(void) = AliasedUse : ~m1111_2 +# 1110| v1110_10(void) = ExitFunction : + +# 1115| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) +# 1115| Block 0 +# 1115| v1115_1(void) = EnterFunction : +# 1115| m1115_2(unknown) = AliasedDefinition : +# 1115| m1115_3(unknown) = InitializeNonLocal : +# 1115| m1115_4(unknown) = Chi : total:m1115_2, partial:m1115_3 +# 1115| r1115_5(glval) = VariableAddress[a] : +# 1115| m1115_6(unsigned int &) = InitializeParameter[a] : &:r1115_5 +# 1115| r1115_7(unsigned int &) = Load[a] : &:r1115_5, m1115_6 +# 1115| m1115_8(unknown) = InitializeIndirection[a] : &:r1115_7 +# 1115| r1115_9(glval) = VariableAddress[b] : +# 1115| m1115_10(unsigned int) = InitializeParameter[b] : &:r1115_9 +# 1115| r1115_11(glval) = VariableAddress[c] : +# 1115| m1115_12(unsigned int &) = InitializeParameter[c] : &:r1115_11 +# 1115| r1115_13(unsigned int &) = Load[c] : &:r1115_11, m1115_12 +# 1115| m1115_14(unknown) = InitializeIndirection[c] : &:r1115_13 +# 1115| r1115_15(glval) = VariableAddress[d] : +# 1115| m1115_16(unsigned int) = InitializeParameter[d] : &:r1115_15 +# 1120| r1120_1(glval) = VariableAddress[a] : +# 1120| r1120_2(unsigned int &) = Load[a] : &:r1120_1, m1115_6 +# 1120| r1120_3(glval) = CopyValue : r1120_2 +# 1120| r1120_4(glval) = VariableAddress[b] : +# 1120| r1120_5(glval) = VariableAddress[c] : +# 1120| r1120_6(unsigned int &) = Load[c] : &:r1120_5, m1115_12 +# 1120| r1120_7(unsigned int) = Load[?] : &:r1120_6, ~m1115_14 +# 1120| r1120_8(glval) = VariableAddress[d] : +# 1120| r1120_9(unsigned int) = Load[d] : &:r1120_8, m1115_16 +# 1117| m1117_1(unknown) = InlineAsm : ~m1115_4, 0:r1120_3, 1:r1120_4, 2:r1120_7, 3:r1120_9 +# 1117| m1117_2(unknown) = Chi : total:m1115_4, partial:m1117_1 +# 1122| v1122_1(void) = NoOp : +# 1115| v1115_17(void) = ReturnIndirection[a] : &:r1115_7, m1115_8 +# 1115| v1115_18(void) = ReturnIndirection[c] : &:r1115_13, m1115_14 +# 1115| v1115_19(void) = ReturnVoid : +# 1115| v1115_20(void) = AliasedUse : ~m1117_2 +# 1115| v1115_21(void) = ExitFunction : + +# 1124| void ExternDeclarations() +# 1124| Block 0 +# 1124| v1124_1(void) = EnterFunction : +# 1124| m1124_2(unknown) = AliasedDefinition : +# 1124| m1124_3(unknown) = InitializeNonLocal : +# 1124| m1124_4(unknown) = Chi : total:m1124_2, partial:m1124_3 +# 1127| r1127_1(glval) = VariableAddress[x] : +# 1127| m1127_2(int) = Uninitialized[x] : &:r1127_1 +# 1128| r1128_1(glval) = VariableAddress[y] : +# 1128| m1128_2(int) = Uninitialized[y] : &:r1128_1 +# 1129| r1129_1(glval) = VariableAddress[h] : +# 1129| m1129_2(int) = Uninitialized[h] : &:r1129_1 +# 1131| v1131_1(void) = NoOp : +# 1124| v1124_5(void) = ReturnVoid : +# 1124| v1124_6(void) = AliasedUse : m1124_3 +# 1124| v1124_7(void) = ExitFunction : + +# 1139| void ExternDeclarationsInMacro() +# 1139| Block 0 +# 1139| v1139_1(void) = EnterFunction : +# 1139| m1139_2(unknown) = AliasedDefinition : +# 1139| m1139_3(unknown) = InitializeNonLocal : +# 1139| m1139_4(unknown) = Chi : total:m1139_2, partial:m1139_3 +# 1141| r1141_1(glval) = VariableAddress[i] : +# 1141| r1141_2(int) = Constant[0] : +# 1141| m1141_3(int) = Store[i] : &:r1141_1, r1141_2 #-----| Goto -> Block 1 -# 1139| Block 1 -# 1139| m1139_4(int) = Phi : from 0:m1139_3, from 2:m1139_14 -# 1139| r1139_5(glval) = VariableAddress[i] : -# 1139| r1139_6(int) = Load[i] : &:r1139_5, m1139_4 -# 1139| r1139_7(int) = Constant[10] : -# 1139| r1139_8(bool) = CompareLT : r1139_6, r1139_7 -# 1139| v1139_9(void) = ConditionalBranch : r1139_8 +# 1141| Block 1 +# 1141| m1141_4(int) = Phi : from 0:m1141_3, from 2:m1141_14 +# 1141| r1141_5(glval) = VariableAddress[i] : +# 1141| r1141_6(int) = Load[i] : &:r1141_5, m1141_4 +# 1141| r1141_7(int) = Constant[10] : +# 1141| r1141_8(bool) = CompareLT : r1141_6, r1141_7 +# 1141| v1141_9(void) = ConditionalBranch : r1141_8 #-----| False -> Block 3 #-----| True -> Block 2 -# 1139| Block 2 -# 1139| r1139_10(glval) = VariableAddress[i] : -# 1139| r1139_11(int) = Load[i] : &:r1139_10, m1139_4 -# 1139| r1139_12(int) = Constant[1] : -# 1139| r1139_13(int) = Add : r1139_11, r1139_12 -# 1139| m1139_14(int) = Store[i] : &:r1139_10, r1139_13 +# 1141| Block 2 +# 1141| r1141_10(glval) = VariableAddress[i] : +# 1141| r1141_11(int) = Load[i] : &:r1141_10, m1141_4 +# 1141| r1141_12(int) = Constant[1] : +# 1141| r1141_13(int) = Add : r1141_11, r1141_12 +# 1141| m1141_14(int) = Store[i] : &:r1141_10, r1141_13 #-----| Goto (back edge) -> Block 1 -# 1139| Block 3 -# 1139| v1139_15(void) = NoOp : -# 1140| v1140_1(void) = NoOp : -# 1137| v1137_5(void) = ReturnVoid : -# 1137| v1137_6(void) = AliasedUse : m1137_3 -# 1137| v1137_7(void) = ExitFunction : - -# 1142| void TryCatchNoCatchAny(bool) -# 1142| Block 0 -# 1142| v1142_1(void) = EnterFunction : -# 1142| m1142_2(unknown) = AliasedDefinition : -# 1142| m1142_3(unknown) = InitializeNonLocal : -# 1142| m1142_4(unknown) = Chi : total:m1142_2, partial:m1142_3 -# 1142| r1142_5(glval) = VariableAddress[b] : -# 1142| m1142_6(bool) = InitializeParameter[b] : &:r1142_5 -# 1144| r1144_1(glval) = VariableAddress[x] : -# 1144| r1144_2(int) = Constant[5] : -# 1144| m1144_3(int) = Store[x] : &:r1144_1, r1144_2 -# 1145| r1145_1(glval) = VariableAddress[b] : -# 1145| r1145_2(bool) = Load[b] : &:r1145_1, m1142_6 -# 1145| v1145_3(void) = ConditionalBranch : r1145_2 +# 1141| Block 3 +# 1141| v1141_15(void) = NoOp : +# 1142| v1142_1(void) = NoOp : +# 1139| v1139_5(void) = ReturnVoid : +# 1139| v1139_6(void) = AliasedUse : m1139_3 +# 1139| v1139_7(void) = ExitFunction : + +# 1144| void TryCatchNoCatchAny(bool) +# 1144| Block 0 +# 1144| v1144_1(void) = EnterFunction : +# 1144| m1144_2(unknown) = AliasedDefinition : +# 1144| m1144_3(unknown) = InitializeNonLocal : +# 1144| m1144_4(unknown) = Chi : total:m1144_2, partial:m1144_3 +# 1144| r1144_5(glval) = VariableAddress[b] : +# 1144| m1144_6(bool) = InitializeParameter[b] : &:r1144_5 +# 1146| r1146_1(glval) = VariableAddress[x] : +# 1146| r1146_2(int) = Constant[5] : +# 1146| m1146_3(int) = Store[x] : &:r1146_1, r1146_2 +# 1147| r1147_1(glval) = VariableAddress[b] : +# 1147| r1147_2(bool) = Load[b] : &:r1147_1, m1144_6 +# 1147| v1147_3(void) = ConditionalBranch : r1147_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 1142| Block 1 -# 1142| m1142_7(unknown) = Phi : from 2:~m1142_10, from 10:~m1142_4 -# 1142| v1142_8(void) = AliasedUse : ~m1142_7 -# 1142| v1142_9(void) = ExitFunction : +# 1144| Block 1 +# 1144| m1144_7(unknown) = Phi : from 2:~m1144_10, from 10:~m1144_4 +# 1144| v1144_8(void) = AliasedUse : ~m1144_7 +# 1144| v1144_9(void) = ExitFunction : -# 1142| Block 2 -# 1142| m1142_10(unknown) = Phi : from 7:~m1154_8, from 8:~m1142_4 -# 1142| v1142_11(void) = Unwind : +# 1144| Block 2 +# 1144| m1144_10(unknown) = Phi : from 7:~m1156_8, from 8:~m1144_4 +# 1144| v1144_11(void) = Unwind : #-----| Goto -> Block 1 -# 1146| Block 3 -# 1146| r1146_1(glval) = VariableAddress[#throw1146:7] : -# 1146| r1146_2(glval) = StringConstant["string literal"] : -# 1146| r1146_3(char *) = Convert : r1146_2 -# 1146| m1146_4(char *) = Store[#throw1146:7] : &:r1146_1, r1146_3 -# 1146| v1146_5(void) = ThrowValue : &:r1146_1, m1146_4 +# 1148| Block 3 +# 1148| r1148_1(glval) = VariableAddress[#throw1148:7] : +# 1148| r1148_2(glval) = StringConstant["string literal"] : +# 1148| r1148_3(char *) = Convert : r1148_2 +# 1148| m1148_4(char *) = Store[#throw1148:7] : &:r1148_1, r1148_3 +# 1148| v1148_5(void) = ThrowValue : &:r1148_1, m1148_4 #-----| Exception -> Block 6 -# 1148| Block 4 -# 1148| r1148_1(glval) = VariableAddress[x] : -# 1148| r1148_2(int) = Load[x] : &:r1148_1, m1144_3 -# 1148| r1148_3(int) = Constant[2] : -# 1148| r1148_4(bool) = CompareLT : r1148_2, r1148_3 -# 1148| v1148_5(void) = ConditionalBranch : r1148_4 +# 1150| Block 4 +# 1150| r1150_1(glval) = VariableAddress[x] : +# 1150| r1150_2(int) = Load[x] : &:r1150_1, m1146_3 +# 1150| r1150_3(int) = Constant[2] : +# 1150| r1150_4(bool) = CompareLT : r1150_2, r1150_3 +# 1150| v1150_5(void) = ConditionalBranch : r1150_4 #-----| False -> Block 5 #-----| True -> Block 11 -# 1151| Block 5 -# 1151| r1151_1(int) = Constant[7] : -# 1151| r1151_2(glval) = VariableAddress[x] : -# 1151| m1151_3(int) = Store[x] : &:r1151_2, r1151_1 +# 1153| Block 5 +# 1153| r1153_1(int) = Constant[7] : +# 1153| r1153_2(glval) = VariableAddress[x] : +# 1153| m1153_3(int) = Store[x] : &:r1153_2, r1153_1 #-----| Goto -> Block 10 -# 1153| Block 6 -# 1153| v1153_1(void) = CatchByType[const char *] : +# 1155| Block 6 +# 1155| v1155_1(void) = CatchByType[const char *] : #-----| Exception -> Block 8 #-----| Goto -> Block 7 -# 1153| Block 7 -# 1153| r1153_2(glval) = VariableAddress[s] : -# 1153| m1153_3(char *) = InitializeParameter[s] : &:r1153_2 -# 1153| r1153_4(char *) = Load[s] : &:r1153_2, m1153_3 -# 1153| m1153_5(unknown) = InitializeIndirection[s] : &:r1153_4 -# 1154| r1154_1(glval) = VariableAddress[#throw1154:5] : -# 1154| m1154_2(String) = Uninitialized[#throw1154:5] : &:r1154_1 -# 1154| r1154_3(glval) = FunctionAddress[String] : -# 1154| r1154_4(glval) = VariableAddress[s] : -# 1154| r1154_5(char *) = Load[s] : &:r1154_4, m1153_3 -# 1154| v1154_6(void) = Call[String] : func:r1154_3, this:r1154_1, 0:r1154_5 -# 1154| m1154_7(unknown) = ^CallSideEffect : ~m1142_4 -# 1154| m1154_8(unknown) = Chi : total:m1142_4, partial:m1154_7 -# 1154| v1154_9(void) = ^BufferReadSideEffect[0] : &:r1154_5, ~m1153_5 -# 1154| m1154_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1154_1 -# 1154| m1154_11(String) = Chi : total:m1154_2, partial:m1154_10 -# 1154| v1154_12(void) = ThrowValue : &:r1154_1, m1154_11 +# 1155| Block 7 +# 1155| r1155_2(glval) = VariableAddress[s] : +# 1155| m1155_3(char *) = InitializeParameter[s] : &:r1155_2 +# 1155| r1155_4(char *) = Load[s] : &:r1155_2, m1155_3 +# 1155| m1155_5(unknown) = InitializeIndirection[s] : &:r1155_4 +# 1156| r1156_1(glval) = VariableAddress[#throw1156:5] : +# 1156| m1156_2(String) = Uninitialized[#throw1156:5] : &:r1156_1 +# 1156| r1156_3(glval) = FunctionAddress[String] : +# 1156| r1156_4(glval) = VariableAddress[s] : +# 1156| r1156_5(char *) = Load[s] : &:r1156_4, m1155_3 +# 1156| v1156_6(void) = Call[String] : func:r1156_3, this:r1156_1, 0:r1156_5 +# 1156| m1156_7(unknown) = ^CallSideEffect : ~m1144_4 +# 1156| m1156_8(unknown) = Chi : total:m1144_4, partial:m1156_7 +# 1156| v1156_9(void) = ^BufferReadSideEffect[0] : &:r1156_5, ~m1155_5 +# 1156| m1156_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1156_1 +# 1156| m1156_11(String) = Chi : total:m1156_2, partial:m1156_10 +# 1156| v1156_12(void) = ThrowValue : &:r1156_1, m1156_11 #-----| Exception -> Block 2 -# 1156| Block 8 -# 1156| v1156_1(void) = CatchByType[const String &] : +# 1158| Block 8 +# 1158| v1158_1(void) = CatchByType[const String &] : #-----| Exception -> Block 2 #-----| Goto -> Block 9 -# 1156| Block 9 -# 1156| r1156_2(glval) = VariableAddress[e] : -# 1156| m1156_3(String &) = InitializeParameter[e] : &:r1156_2 -# 1156| r1156_4(String &) = Load[e] : &:r1156_2, m1156_3 -# 1156| m1156_5(unknown) = InitializeIndirection[e] : &:r1156_4 -# 1156| v1156_6(void) = NoOp : +# 1158| Block 9 +# 1158| r1158_2(glval) = VariableAddress[e] : +# 1158| m1158_3(String &) = InitializeParameter[e] : &:r1158_2 +# 1158| r1158_4(String &) = Load[e] : &:r1158_2, m1158_3 +# 1158| m1158_5(unknown) = InitializeIndirection[e] : &:r1158_4 +# 1158| v1158_6(void) = NoOp : #-----| Goto -> Block 10 -# 1158| Block 10 -# 1158| v1158_1(void) = NoOp : -# 1142| v1142_12(void) = ReturnVoid : +# 1160| Block 10 +# 1160| v1160_1(void) = NoOp : +# 1144| v1144_12(void) = ReturnVoid : #-----| Goto -> Block 1 -# 1142| Block 11 -# 1142| v1142_13(void) = Unreached : - -# 1162| void VectorTypes(int) -# 1162| Block 0 -# 1162| v1162_1(void) = EnterFunction : -# 1162| m1162_2(unknown) = AliasedDefinition : -# 1162| m1162_3(unknown) = InitializeNonLocal : -# 1162| m1162_4(unknown) = Chi : total:m1162_2, partial:m1162_3 -# 1162| r1162_5(glval) = VariableAddress[i] : -# 1162| m1162_6(int) = InitializeParameter[i] : &:r1162_5 -# 1163| r1163_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1163| m1163_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1163_1 -# 1163| r1163_3(int) = Constant[0] : -# 1163| r1163_4(glval) = PointerAdd[4] : r1163_1, r1163_3 -# 1163| r1163_5(int) = Constant[0] : -# 1163| m1163_6(int) = Store[?] : &:r1163_4, r1163_5 -# 1163| m1163_7(__attribute((vector_size(16UL))) int) = Chi : total:m1163_2, partial:m1163_6 -# 1163| r1163_8(int) = Constant[1] : -# 1163| r1163_9(glval) = PointerAdd[4] : r1163_1, r1163_8 -# 1163| r1163_10(int) = Constant[1] : -# 1163| m1163_11(int) = Store[?] : &:r1163_9, r1163_10 -# 1163| m1163_12(__attribute((vector_size(16UL))) int) = Chi : total:m1163_7, partial:m1163_11 -# 1163| r1163_13(int) = Constant[2] : -# 1163| r1163_14(glval) = PointerAdd[4] : r1163_1, r1163_13 -# 1163| r1163_15(int) = Constant[2] : -# 1163| m1163_16(int) = Store[?] : &:r1163_14, r1163_15 -# 1163| m1163_17(__attribute((vector_size(16UL))) int) = Chi : total:m1163_12, partial:m1163_16 -# 1163| r1163_18(int) = Constant[3] : -# 1163| r1163_19(glval) = PointerAdd[4] : r1163_1, r1163_18 -# 1163| r1163_20(int) = Constant[3] : -# 1163| m1163_21(int) = Store[?] : &:r1163_19, r1163_20 -# 1163| m1163_22(__attribute((vector_size(16UL))) int) = Chi : total:m1163_17, partial:m1163_21 -# 1164| r1164_1(glval) = VariableAddress[x] : -# 1164| r1164_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1164| r1164_3(glval) = VariableAddress[i] : -# 1164| r1164_4(int) = Load[i] : &:r1164_3, m1162_6 -# 1164| r1164_5(glval) = PointerAdd[4] : r1164_2, r1164_4 -# 1164| r1164_6(int) = Load[?] : &:r1164_5, ~m1163_22 -# 1164| m1164_7(int) = Store[x] : &:r1164_1, r1164_6 -# 1165| r1165_1(glval) = VariableAddress[x] : -# 1165| r1165_2(int) = Load[x] : &:r1165_1, m1164_7 -# 1165| r1165_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1165| r1165_4(glval) = VariableAddress[i] : -# 1165| r1165_5(int) = Load[i] : &:r1165_4, m1162_6 -# 1165| r1165_6(glval) = PointerAdd[4] : r1165_3, r1165_5 -# 1165| m1165_7(int) = Store[?] : &:r1165_6, r1165_2 -# 1165| m1165_8(__attribute((vector_size(16UL))) int) = Chi : total:m1163_22, partial:m1165_7 -# 1166| r1166_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1144| Block 11 +# 1144| v1144_13(void) = Unreached : + +# 1164| void VectorTypes(int) +# 1164| Block 0 +# 1164| v1164_1(void) = EnterFunction : +# 1164| m1164_2(unknown) = AliasedDefinition : +# 1164| m1164_3(unknown) = InitializeNonLocal : +# 1164| m1164_4(unknown) = Chi : total:m1164_2, partial:m1164_3 +# 1164| r1164_5(glval) = VariableAddress[i] : +# 1164| m1164_6(int) = InitializeParameter[i] : &:r1164_5 +# 1165| r1165_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1165| m1165_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1165_1 +# 1165| r1165_3(int) = Constant[0] : +# 1165| r1165_4(glval) = PointerAdd[4] : r1165_1, r1165_3 +# 1165| r1165_5(int) = Constant[0] : +# 1165| m1165_6(int) = Store[?] : &:r1165_4, r1165_5 +# 1165| m1165_7(__attribute((vector_size(16UL))) int) = Chi : total:m1165_2, partial:m1165_6 +# 1165| r1165_8(int) = Constant[1] : +# 1165| r1165_9(glval) = PointerAdd[4] : r1165_1, r1165_8 +# 1165| r1165_10(int) = Constant[1] : +# 1165| m1165_11(int) = Store[?] : &:r1165_9, r1165_10 +# 1165| m1165_12(__attribute((vector_size(16UL))) int) = Chi : total:m1165_7, partial:m1165_11 +# 1165| r1165_13(int) = Constant[2] : +# 1165| r1165_14(glval) = PointerAdd[4] : r1165_1, r1165_13 +# 1165| r1165_15(int) = Constant[2] : +# 1165| m1165_16(int) = Store[?] : &:r1165_14, r1165_15 +# 1165| m1165_17(__attribute((vector_size(16UL))) int) = Chi : total:m1165_12, partial:m1165_16 +# 1165| r1165_18(int) = Constant[3] : +# 1165| r1165_19(glval) = PointerAdd[4] : r1165_1, r1165_18 +# 1165| r1165_20(int) = Constant[3] : +# 1165| m1165_21(int) = Store[?] : &:r1165_19, r1165_20 +# 1165| m1165_22(__attribute((vector_size(16UL))) int) = Chi : total:m1165_17, partial:m1165_21 +# 1166| r1166_1(glval) = VariableAddress[x] : # 1166| r1166_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1166| r1166_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1166_2, m1165_8 -# 1166| r1166_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1166| r1166_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1166_4, m1165_8 -# 1166| r1166_6(int) = Constant[3] : -# 1166| r1166_7(int) = Constant[2] : -# 1166| r1166_8(int) = Constant[1] : -# 1166| r1166_9(int) = Constant[0] : -# 1166| r1166_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1166_3, 1:r1166_5, 2:r1166_6, 3:r1166_7, 4:r1166_8, 5:r1166_9 -# 1166| m1166_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1166_1, r1166_10 -# 1167| r1167_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1167| r1167_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1167_1, m1165_8 -# 1167| r1167_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1167| r1167_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1167_3, m1166_11 -# 1167| r1167_5(__attribute((vector_size(16UL))) int) = Add : r1167_2, r1167_4 -# 1167| r1167_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1167| m1167_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1167_6, r1167_5 -# 1168| v1168_1(void) = NoOp : -# 1162| v1162_7(void) = ReturnVoid : -# 1162| v1162_8(void) = AliasedUse : m1162_3 -# 1162| v1162_9(void) = ExitFunction : - -# 1172| int ModeledCallTarget(int) -# 1172| Block 0 -# 1172| v1172_1(void) = EnterFunction : -# 1172| m1172_2(unknown) = AliasedDefinition : -# 1172| m1172_3(unknown) = InitializeNonLocal : -# 1172| m1172_4(unknown) = Chi : total:m1172_2, partial:m1172_3 -# 1172| r1172_5(glval) = VariableAddress[x] : -# 1172| m1172_6(int) = InitializeParameter[x] : &:r1172_5 -# 1173| r1173_1(glval) = VariableAddress[y] : -# 1173| m1173_2(int) = Uninitialized[y] : &:r1173_1 -# 1174| r1174_1(glval) = FunctionAddress[memcpy] : -# 1174| r1174_2(glval) = VariableAddress[y] : -# 1174| r1174_3(int *) = CopyValue : r1174_2 -# 1174| r1174_4(void *) = Convert : r1174_3 +# 1166| r1166_3(glval) = VariableAddress[i] : +# 1166| r1166_4(int) = Load[i] : &:r1166_3, m1164_6 +# 1166| r1166_5(glval) = PointerAdd[4] : r1166_2, r1166_4 +# 1166| r1166_6(int) = Load[?] : &:r1166_5, ~m1165_22 +# 1166| m1166_7(int) = Store[x] : &:r1166_1, r1166_6 +# 1167| r1167_1(glval) = VariableAddress[x] : +# 1167| r1167_2(int) = Load[x] : &:r1167_1, m1166_7 +# 1167| r1167_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1167| r1167_4(glval) = VariableAddress[i] : +# 1167| r1167_5(int) = Load[i] : &:r1167_4, m1164_6 +# 1167| r1167_6(glval) = PointerAdd[4] : r1167_3, r1167_5 +# 1167| m1167_7(int) = Store[?] : &:r1167_6, r1167_2 +# 1167| m1167_8(__attribute((vector_size(16UL))) int) = Chi : total:m1165_22, partial:m1167_7 +# 1168| r1168_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1168| r1168_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1168| r1168_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_2, m1167_8 +# 1168| r1168_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1168| r1168_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_4, m1167_8 +# 1168| r1168_6(int) = Constant[3] : +# 1168| r1168_7(int) = Constant[2] : +# 1168| r1168_8(int) = Constant[1] : +# 1168| r1168_9(int) = Constant[0] : +# 1168| r1168_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1168_3, 1:r1168_5, 2:r1168_6, 3:r1168_7, 4:r1168_8, 5:r1168_9 +# 1168| m1168_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1168_1, r1168_10 +# 1169| r1169_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1169| r1169_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1169_1, m1167_8 +# 1169| r1169_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1169| r1169_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1169_3, m1168_11 +# 1169| r1169_5(__attribute((vector_size(16UL))) int) = Add : r1169_2, r1169_4 +# 1169| r1169_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1169| m1169_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1169_6, r1169_5 +# 1170| v1170_1(void) = NoOp : +# 1164| v1164_7(void) = ReturnVoid : +# 1164| v1164_8(void) = AliasedUse : m1164_3 +# 1164| v1164_9(void) = ExitFunction : + +# 1174| int ModeledCallTarget(int) +# 1174| Block 0 +# 1174| v1174_1(void) = EnterFunction : +# 1174| m1174_2(unknown) = AliasedDefinition : +# 1174| m1174_3(unknown) = InitializeNonLocal : +# 1174| m1174_4(unknown) = Chi : total:m1174_2, partial:m1174_3 # 1174| r1174_5(glval) = VariableAddress[x] : -# 1174| r1174_6(int *) = CopyValue : r1174_5 -# 1174| r1174_7(void *) = Convert : r1174_6 -# 1174| r1174_8(int) = Constant[4] : -# 1174| r1174_9(void *) = Call[memcpy] : func:r1174_1, 0:r1174_4, 1:r1174_7, 2:r1174_8 -# 1174| v1174_10(void) = ^SizedBufferReadSideEffect[1] : &:r1174_7, r1174_8, ~m1172_6 -# 1174| m1174_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1174_4, r1174_8 -# 1174| m1174_12(int) = Chi : total:m1173_2, partial:m1174_11 -# 1175| r1175_1(glval) = VariableAddress[#return] : -# 1175| r1175_2(glval) = VariableAddress[y] : -# 1175| r1175_3(int) = Load[y] : &:r1175_2, m1174_12 -# 1175| m1175_4(int) = Store[#return] : &:r1175_1, r1175_3 -# 1172| r1172_7(glval) = VariableAddress[#return] : -# 1172| v1172_8(void) = ReturnValue : &:r1172_7, m1175_4 -# 1172| v1172_9(void) = AliasedUse : m1172_3 -# 1172| v1172_10(void) = ExitFunction : - -# 1178| String ReturnObjectImpl() -# 1178| Block 0 -# 1178| v1178_1(void) = EnterFunction : -# 1178| m1178_2(unknown) = AliasedDefinition : -# 1178| m1178_3(unknown) = InitializeNonLocal : -# 1178| m1178_4(unknown) = Chi : total:m1178_2, partial:m1178_3 -# 1179| r1179_1(glval) = VariableAddress[#return] : -# 1179| m1179_2(String) = Uninitialized[#return] : &:r1179_1 -# 1179| r1179_3(glval) = FunctionAddress[String] : -# 1179| r1179_4(glval) = StringConstant["foo"] : -# 1179| r1179_5(char *) = Convert : r1179_4 -# 1179| v1179_6(void) = Call[String] : func:r1179_3, this:r1179_1, 0:r1179_5 -# 1179| m1179_7(unknown) = ^CallSideEffect : ~m1178_4 -# 1179| m1179_8(unknown) = Chi : total:m1178_4, partial:m1179_7 -# 1179| v1179_9(void) = ^BufferReadSideEffect[0] : &:r1179_5, ~m1178_3 -# 1179| m1179_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1179_1 -# 1179| m1179_11(String) = Chi : total:m1179_2, partial:m1179_10 -# 1178| r1178_5(glval) = VariableAddress[#return] : -# 1178| v1178_6(void) = ReturnValue : &:r1178_5, m1179_11 -# 1178| v1178_7(void) = AliasedUse : ~m1179_8 -# 1178| v1178_8(void) = ExitFunction : - -# 1182| void switch1Case(int) -# 1182| Block 0 -# 1182| v1182_1(void) = EnterFunction : -# 1182| m1182_2(unknown) = AliasedDefinition : -# 1182| m1182_3(unknown) = InitializeNonLocal : -# 1182| m1182_4(unknown) = Chi : total:m1182_2, partial:m1182_3 -# 1182| r1182_5(glval) = VariableAddress[x] : -# 1182| m1182_6(int) = InitializeParameter[x] : &:r1182_5 -# 1183| r1183_1(glval) = VariableAddress[y] : -# 1183| r1183_2(int) = Constant[0] : -# 1183| m1183_3(int) = Store[y] : &:r1183_1, r1183_2 -# 1184| r1184_1(glval) = VariableAddress[x] : -# 1184| r1184_2(int) = Load[x] : &:r1184_1, m1182_6 -# 1184| v1184_3(void) = Switch : r1184_2 +# 1174| m1174_6(int) = InitializeParameter[x] : &:r1174_5 +# 1175| r1175_1(glval) = VariableAddress[y] : +# 1175| m1175_2(int) = Uninitialized[y] : &:r1175_1 +# 1176| r1176_1(glval) = FunctionAddress[memcpy] : +# 1176| r1176_2(glval) = VariableAddress[y] : +# 1176| r1176_3(int *) = CopyValue : r1176_2 +# 1176| r1176_4(void *) = Convert : r1176_3 +# 1176| r1176_5(glval) = VariableAddress[x] : +# 1176| r1176_6(int *) = CopyValue : r1176_5 +# 1176| r1176_7(void *) = Convert : r1176_6 +# 1176| r1176_8(int) = Constant[4] : +# 1176| r1176_9(void *) = Call[memcpy] : func:r1176_1, 0:r1176_4, 1:r1176_7, 2:r1176_8 +# 1176| v1176_10(void) = ^SizedBufferReadSideEffect[1] : &:r1176_7, r1176_8, ~m1174_6 +# 1176| m1176_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1176_4, r1176_8 +# 1176| m1176_12(int) = Chi : total:m1175_2, partial:m1176_11 +# 1177| r1177_1(glval) = VariableAddress[#return] : +# 1177| r1177_2(glval) = VariableAddress[y] : +# 1177| r1177_3(int) = Load[y] : &:r1177_2, m1176_12 +# 1177| m1177_4(int) = Store[#return] : &:r1177_1, r1177_3 +# 1174| r1174_7(glval) = VariableAddress[#return] : +# 1174| v1174_8(void) = ReturnValue : &:r1174_7, m1177_4 +# 1174| v1174_9(void) = AliasedUse : m1174_3 +# 1174| v1174_10(void) = ExitFunction : + +# 1180| String ReturnObjectImpl() +# 1180| Block 0 +# 1180| v1180_1(void) = EnterFunction : +# 1180| m1180_2(unknown) = AliasedDefinition : +# 1180| m1180_3(unknown) = InitializeNonLocal : +# 1180| m1180_4(unknown) = Chi : total:m1180_2, partial:m1180_3 +# 1181| r1181_1(glval) = VariableAddress[#return] : +# 1181| m1181_2(String) = Uninitialized[#return] : &:r1181_1 +# 1181| r1181_3(glval) = FunctionAddress[String] : +# 1181| r1181_4(glval) = StringConstant["foo"] : +# 1181| r1181_5(char *) = Convert : r1181_4 +# 1181| v1181_6(void) = Call[String] : func:r1181_3, this:r1181_1, 0:r1181_5 +# 1181| m1181_7(unknown) = ^CallSideEffect : ~m1180_4 +# 1181| m1181_8(unknown) = Chi : total:m1180_4, partial:m1181_7 +# 1181| v1181_9(void) = ^BufferReadSideEffect[0] : &:r1181_5, ~m1180_3 +# 1181| m1181_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1181_1 +# 1181| m1181_11(String) = Chi : total:m1181_2, partial:m1181_10 +# 1180| r1180_5(glval) = VariableAddress[#return] : +# 1180| v1180_6(void) = ReturnValue : &:r1180_5, m1181_11 +# 1180| v1180_7(void) = AliasedUse : ~m1181_8 +# 1180| v1180_8(void) = ExitFunction : + +# 1184| void switch1Case(int) +# 1184| Block 0 +# 1184| v1184_1(void) = EnterFunction : +# 1184| m1184_2(unknown) = AliasedDefinition : +# 1184| m1184_3(unknown) = InitializeNonLocal : +# 1184| m1184_4(unknown) = Chi : total:m1184_2, partial:m1184_3 +# 1184| r1184_5(glval) = VariableAddress[x] : +# 1184| m1184_6(int) = InitializeParameter[x] : &:r1184_5 +# 1185| r1185_1(glval) = VariableAddress[y] : +# 1185| r1185_2(int) = Constant[0] : +# 1185| m1185_3(int) = Store[y] : &:r1185_1, r1185_2 +# 1186| r1186_1(glval) = VariableAddress[x] : +# 1186| r1186_2(int) = Load[x] : &:r1186_1, m1184_6 +# 1186| v1186_3(void) = Switch : r1186_2 #-----| Case[1] -> Block 1 #-----| Default -> Block 2 -# 1185| Block 1 -# 1185| v1185_1(void) = NoOp : -# 1186| r1186_1(int) = Constant[2] : -# 1186| r1186_2(glval) = VariableAddress[y] : -# 1186| m1186_3(int) = Store[y] : &:r1186_2, r1186_1 +# 1187| Block 1 +# 1187| v1187_1(void) = NoOp : +# 1188| r1188_1(int) = Constant[2] : +# 1188| r1188_2(glval) = VariableAddress[y] : +# 1188| m1188_3(int) = Store[y] : &:r1188_2, r1188_1 #-----| Goto -> Block 2 -# 1188| Block 2 -# 1188| m1188_1(int) = Phi : from 0:m1183_3, from 1:m1186_3 -# 1188| r1188_2(glval) = VariableAddress[z] : -# 1188| r1188_3(glval) = VariableAddress[y] : -# 1188| r1188_4(int) = Load[y] : &:r1188_3, m1188_1 -# 1188| m1188_5(int) = Store[z] : &:r1188_2, r1188_4 -# 1189| v1189_1(void) = NoOp : -# 1182| v1182_7(void) = ReturnVoid : -# 1182| v1182_8(void) = AliasedUse : m1182_3 -# 1182| v1182_9(void) = ExitFunction : - -# 1191| void switch2Case_fallthrough(int) -# 1191| Block 0 -# 1191| v1191_1(void) = EnterFunction : -# 1191| m1191_2(unknown) = AliasedDefinition : -# 1191| m1191_3(unknown) = InitializeNonLocal : -# 1191| m1191_4(unknown) = Chi : total:m1191_2, partial:m1191_3 -# 1191| r1191_5(glval) = VariableAddress[x] : -# 1191| m1191_6(int) = InitializeParameter[x] : &:r1191_5 -# 1192| r1192_1(glval) = VariableAddress[y] : -# 1192| r1192_2(int) = Constant[0] : -# 1192| m1192_3(int) = Store[y] : &:r1192_1, r1192_2 -# 1193| r1193_1(glval) = VariableAddress[x] : -# 1193| r1193_2(int) = Load[x] : &:r1193_1, m1191_6 -# 1193| v1193_3(void) = Switch : r1193_2 +# 1190| Block 2 +# 1190| m1190_1(int) = Phi : from 0:m1185_3, from 1:m1188_3 +# 1190| r1190_2(glval) = VariableAddress[z] : +# 1190| r1190_3(glval) = VariableAddress[y] : +# 1190| r1190_4(int) = Load[y] : &:r1190_3, m1190_1 +# 1190| m1190_5(int) = Store[z] : &:r1190_2, r1190_4 +# 1191| v1191_1(void) = NoOp : +# 1184| v1184_7(void) = ReturnVoid : +# 1184| v1184_8(void) = AliasedUse : m1184_3 +# 1184| v1184_9(void) = ExitFunction : + +# 1193| void switch2Case_fallthrough(int) +# 1193| Block 0 +# 1193| v1193_1(void) = EnterFunction : +# 1193| m1193_2(unknown) = AliasedDefinition : +# 1193| m1193_3(unknown) = InitializeNonLocal : +# 1193| m1193_4(unknown) = Chi : total:m1193_2, partial:m1193_3 +# 1193| r1193_5(glval) = VariableAddress[x] : +# 1193| m1193_6(int) = InitializeParameter[x] : &:r1193_5 +# 1194| r1194_1(glval) = VariableAddress[y] : +# 1194| r1194_2(int) = Constant[0] : +# 1194| m1194_3(int) = Store[y] : &:r1194_1, r1194_2 +# 1195| r1195_1(glval) = VariableAddress[x] : +# 1195| r1195_2(int) = Load[x] : &:r1195_1, m1193_6 +# 1195| v1195_3(void) = Switch : r1195_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1194| Block 1 -# 1194| v1194_1(void) = NoOp : -# 1195| r1195_1(int) = Constant[2] : -# 1195| r1195_2(glval) = VariableAddress[y] : -# 1195| m1195_3(int) = Store[y] : &:r1195_2, r1195_1 -#-----| Goto -> Block 2 - -# 1196| Block 2 +# 1196| Block 1 # 1196| v1196_1(void) = NoOp : -# 1197| r1197_1(int) = Constant[3] : +# 1197| r1197_1(int) = Constant[2] : # 1197| r1197_2(glval) = VariableAddress[y] : # 1197| m1197_3(int) = Store[y] : &:r1197_2, r1197_1 +#-----| Goto -> Block 2 + +# 1198| Block 2 +# 1198| v1198_1(void) = NoOp : +# 1199| r1199_1(int) = Constant[3] : +# 1199| r1199_2(glval) = VariableAddress[y] : +# 1199| m1199_3(int) = Store[y] : &:r1199_2, r1199_1 #-----| Goto -> Block 3 -# 1199| Block 3 -# 1199| m1199_1(int) = Phi : from 0:m1192_3, from 2:m1197_3 -# 1199| r1199_2(glval) = VariableAddress[z] : -# 1199| r1199_3(glval) = VariableAddress[y] : -# 1199| r1199_4(int) = Load[y] : &:r1199_3, m1199_1 -# 1199| m1199_5(int) = Store[z] : &:r1199_2, r1199_4 -# 1200| v1200_1(void) = NoOp : -# 1191| v1191_7(void) = ReturnVoid : -# 1191| v1191_8(void) = AliasedUse : m1191_3 -# 1191| v1191_9(void) = ExitFunction : - -# 1202| void switch2Case(int) -# 1202| Block 0 -# 1202| v1202_1(void) = EnterFunction : -# 1202| m1202_2(unknown) = AliasedDefinition : -# 1202| m1202_3(unknown) = InitializeNonLocal : -# 1202| m1202_4(unknown) = Chi : total:m1202_2, partial:m1202_3 -# 1202| r1202_5(glval) = VariableAddress[x] : -# 1202| m1202_6(int) = InitializeParameter[x] : &:r1202_5 -# 1203| r1203_1(glval) = VariableAddress[y] : -# 1203| r1203_2(int) = Constant[0] : -# 1203| m1203_3(int) = Store[y] : &:r1203_1, r1203_2 -# 1204| r1204_1(glval) = VariableAddress[x] : -# 1204| r1204_2(int) = Load[x] : &:r1204_1, m1202_6 -# 1204| v1204_3(void) = Switch : r1204_2 +# 1201| Block 3 +# 1201| m1201_1(int) = Phi : from 0:m1194_3, from 2:m1199_3 +# 1201| r1201_2(glval) = VariableAddress[z] : +# 1201| r1201_3(glval) = VariableAddress[y] : +# 1201| r1201_4(int) = Load[y] : &:r1201_3, m1201_1 +# 1201| m1201_5(int) = Store[z] : &:r1201_2, r1201_4 +# 1202| v1202_1(void) = NoOp : +# 1193| v1193_7(void) = ReturnVoid : +# 1193| v1193_8(void) = AliasedUse : m1193_3 +# 1193| v1193_9(void) = ExitFunction : + +# 1204| void switch2Case(int) +# 1204| Block 0 +# 1204| v1204_1(void) = EnterFunction : +# 1204| m1204_2(unknown) = AliasedDefinition : +# 1204| m1204_3(unknown) = InitializeNonLocal : +# 1204| m1204_4(unknown) = Chi : total:m1204_2, partial:m1204_3 +# 1204| r1204_5(glval) = VariableAddress[x] : +# 1204| m1204_6(int) = InitializeParameter[x] : &:r1204_5 +# 1205| r1205_1(glval) = VariableAddress[y] : +# 1205| r1205_2(int) = Constant[0] : +# 1205| m1205_3(int) = Store[y] : &:r1205_1, r1205_2 +# 1206| r1206_1(glval) = VariableAddress[x] : +# 1206| r1206_2(int) = Load[x] : &:r1206_1, m1204_6 +# 1206| v1206_3(void) = Switch : r1206_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1205| Block 1 -# 1205| v1205_1(void) = NoOp : -# 1206| r1206_1(int) = Constant[2] : -# 1206| r1206_2(glval) = VariableAddress[y] : -# 1206| m1206_3(int) = Store[y] : &:r1206_2, r1206_1 +# 1207| Block 1 # 1207| v1207_1(void) = NoOp : +# 1208| r1208_1(int) = Constant[2] : +# 1208| r1208_2(glval) = VariableAddress[y] : +# 1208| m1208_3(int) = Store[y] : &:r1208_2, r1208_1 +# 1209| v1209_1(void) = NoOp : #-----| Goto -> Block 3 -# 1208| Block 2 -# 1208| v1208_1(void) = NoOp : -# 1209| r1209_1(int) = Constant[3] : -# 1209| r1209_2(glval) = VariableAddress[y] : -# 1209| m1209_3(int) = Store[y] : &:r1209_2, r1209_1 +# 1210| Block 2 +# 1210| v1210_1(void) = NoOp : +# 1211| r1211_1(int) = Constant[3] : +# 1211| r1211_2(glval) = VariableAddress[y] : +# 1211| m1211_3(int) = Store[y] : &:r1211_2, r1211_1 #-----| Goto -> Block 3 -# 1210| Block 3 -# 1210| m1210_1(int) = Phi : from 0:m1203_3, from 1:m1206_3, from 2:m1209_3 -# 1210| v1210_2(void) = NoOp : -# 1211| r1211_1(glval) = VariableAddress[z] : -# 1211| r1211_2(glval) = VariableAddress[y] : -# 1211| r1211_3(int) = Load[y] : &:r1211_2, m1210_1 -# 1211| m1211_4(int) = Store[z] : &:r1211_1, r1211_3 -# 1212| v1212_1(void) = NoOp : -# 1202| v1202_7(void) = ReturnVoid : -# 1202| v1202_8(void) = AliasedUse : m1202_3 -# 1202| v1202_9(void) = ExitFunction : - -# 1214| void switch2Case_default(int) -# 1214| Block 0 -# 1214| v1214_1(void) = EnterFunction : -# 1214| m1214_2(unknown) = AliasedDefinition : -# 1214| m1214_3(unknown) = InitializeNonLocal : -# 1214| m1214_4(unknown) = Chi : total:m1214_2, partial:m1214_3 -# 1214| r1214_5(glval) = VariableAddress[x] : -# 1214| m1214_6(int) = InitializeParameter[x] : &:r1214_5 -# 1215| r1215_1(glval) = VariableAddress[y] : -# 1215| r1215_2(int) = Constant[0] : -# 1215| m1215_3(int) = Store[y] : &:r1215_1, r1215_2 -# 1216| r1216_1(glval) = VariableAddress[x] : -# 1216| r1216_2(int) = Load[x] : &:r1216_1, m1214_6 -# 1216| v1216_3(void) = Switch : r1216_2 +# 1212| Block 3 +# 1212| m1212_1(int) = Phi : from 0:m1205_3, from 1:m1208_3, from 2:m1211_3 +# 1212| v1212_2(void) = NoOp : +# 1213| r1213_1(glval) = VariableAddress[z] : +# 1213| r1213_2(glval) = VariableAddress[y] : +# 1213| r1213_3(int) = Load[y] : &:r1213_2, m1212_1 +# 1213| m1213_4(int) = Store[z] : &:r1213_1, r1213_3 +# 1214| v1214_1(void) = NoOp : +# 1204| v1204_7(void) = ReturnVoid : +# 1204| v1204_8(void) = AliasedUse : m1204_3 +# 1204| v1204_9(void) = ExitFunction : + +# 1216| void switch2Case_default(int) +# 1216| Block 0 +# 1216| v1216_1(void) = EnterFunction : +# 1216| m1216_2(unknown) = AliasedDefinition : +# 1216| m1216_3(unknown) = InitializeNonLocal : +# 1216| m1216_4(unknown) = Chi : total:m1216_2, partial:m1216_3 +# 1216| r1216_5(glval) = VariableAddress[x] : +# 1216| m1216_6(int) = InitializeParameter[x] : &:r1216_5 +# 1217| r1217_1(glval) = VariableAddress[y] : +# 1217| r1217_2(int) = Constant[0] : +# 1217| m1217_3(int) = Store[y] : &:r1217_1, r1217_2 +# 1218| r1218_1(glval) = VariableAddress[x] : +# 1218| r1218_2(int) = Load[x] : &:r1218_1, m1216_6 +# 1218| v1218_3(void) = Switch : r1218_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1217| Block 1 -# 1217| v1217_1(void) = NoOp : -# 1218| r1218_1(int) = Constant[2] : -# 1218| r1218_2(glval) = VariableAddress[y] : -# 1218| m1218_3(int) = Store[y] : &:r1218_2, r1218_1 +# 1219| Block 1 # 1219| v1219_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1221| Block 2 +# 1220| r1220_1(int) = Constant[2] : +# 1220| r1220_2(glval) = VariableAddress[y] : +# 1220| m1220_3(int) = Store[y] : &:r1220_2, r1220_1 # 1221| v1221_1(void) = NoOp : -# 1222| r1222_1(int) = Constant[3] : -# 1222| r1222_2(glval) = VariableAddress[y] : -# 1222| m1222_3(int) = Store[y] : &:r1222_2, r1222_1 -# 1223| v1223_1(void) = NoOp : #-----| Goto -> Block 4 -# 1225| Block 3 +# 1223| Block 2 +# 1223| v1223_1(void) = NoOp : +# 1224| r1224_1(int) = Constant[3] : +# 1224| r1224_2(glval) = VariableAddress[y] : +# 1224| m1224_3(int) = Store[y] : &:r1224_2, r1224_1 # 1225| v1225_1(void) = NoOp : -# 1226| r1226_1(int) = Constant[4] : -# 1226| r1226_2(glval) = VariableAddress[y] : -# 1226| m1226_3(int) = Store[y] : &:r1226_2, r1226_1 #-----| Goto -> Block 4 -# 1227| Block 4 -# 1227| m1227_1(int) = Phi : from 1:m1218_3, from 2:m1222_3, from 3:m1226_3 -# 1227| v1227_2(void) = NoOp : -# 1228| r1228_1(glval) = VariableAddress[z] : +# 1227| Block 3 +# 1227| v1227_1(void) = NoOp : +# 1228| r1228_1(int) = Constant[4] : # 1228| r1228_2(glval) = VariableAddress[y] : -# 1228| r1228_3(int) = Load[y] : &:r1228_2, m1227_1 -# 1228| m1228_4(int) = Store[z] : &:r1228_1, r1228_3 -# 1229| v1229_1(void) = NoOp : -# 1214| v1214_7(void) = ReturnVoid : -# 1214| v1214_8(void) = AliasedUse : m1214_3 -# 1214| v1214_9(void) = ExitFunction : - -# 1231| int staticLocalInit(int) -# 1231| Block 0 -# 1231| v1231_1(void) = EnterFunction : -# 1231| m1231_2(unknown) = AliasedDefinition : -# 1231| m1231_3(unknown) = InitializeNonLocal : -# 1231| m1231_4(unknown) = Chi : total:m1231_2, partial:m1231_3 -# 1231| r1231_5(glval) = VariableAddress[x] : -# 1231| m1231_6(int) = InitializeParameter[x] : &:r1231_5 -# 1234| r1234_1(glval) = VariableAddress[c#init] : -# 1234| r1234_2(bool) = Load[c#init] : &:r1234_1, ~m1231_3 -# 1234| v1234_3(void) = ConditionalBranch : r1234_2 +# 1228| m1228_3(int) = Store[y] : &:r1228_2, r1228_1 +#-----| Goto -> Block 4 + +# 1229| Block 4 +# 1229| m1229_1(int) = Phi : from 1:m1220_3, from 2:m1224_3, from 3:m1228_3 +# 1229| v1229_2(void) = NoOp : +# 1230| r1230_1(glval) = VariableAddress[z] : +# 1230| r1230_2(glval) = VariableAddress[y] : +# 1230| r1230_3(int) = Load[y] : &:r1230_2, m1229_1 +# 1230| m1230_4(int) = Store[z] : &:r1230_1, r1230_3 +# 1231| v1231_1(void) = NoOp : +# 1216| v1216_7(void) = ReturnVoid : +# 1216| v1216_8(void) = AliasedUse : m1216_3 +# 1216| v1216_9(void) = ExitFunction : + +# 1233| int staticLocalInit(int) +# 1233| Block 0 +# 1233| v1233_1(void) = EnterFunction : +# 1233| m1233_2(unknown) = AliasedDefinition : +# 1233| m1233_3(unknown) = InitializeNonLocal : +# 1233| m1233_4(unknown) = Chi : total:m1233_2, partial:m1233_3 +# 1233| r1233_5(glval) = VariableAddress[x] : +# 1233| m1233_6(int) = InitializeParameter[x] : &:r1233_5 +# 1236| r1236_1(glval) = VariableAddress[c#init] : +# 1236| r1236_2(bool) = Load[c#init] : &:r1236_1, ~m1233_3 +# 1236| v1236_3(void) = ConditionalBranch : r1236_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1234| Block 1 -# 1234| r1234_4(glval) = VariableAddress[c] : -# 1234| r1234_5(glval) = VariableAddress[x] : -# 1234| r1234_6(int) = Load[x] : &:r1234_5, m1231_6 -# 1234| m1234_7(int) = Store[c] : &:r1234_4, r1234_6 -# 1234| m1234_8(unknown) = Chi : total:m1231_4, partial:m1234_7 -# 1234| r1234_9(bool) = Constant[1] : -# 1234| m1234_10(bool) = Store[c#init] : &:r1234_1, r1234_9 -# 1234| m1234_11(unknown) = Chi : total:m1234_8, partial:m1234_10 +# 1236| Block 1 +# 1236| r1236_4(glval) = VariableAddress[c] : +# 1236| r1236_5(glval) = VariableAddress[x] : +# 1236| r1236_6(int) = Load[x] : &:r1236_5, m1233_6 +# 1236| m1236_7(int) = Store[c] : &:r1236_4, r1236_6 +# 1236| m1236_8(unknown) = Chi : total:m1233_4, partial:m1236_7 +# 1236| r1236_9(bool) = Constant[1] : +# 1236| m1236_10(bool) = Store[c#init] : &:r1236_1, r1236_9 +# 1236| m1236_11(unknown) = Chi : total:m1236_8, partial:m1236_10 #-----| Goto -> Block 2 -# 1237| Block 2 -# 1237| m1237_1(int) = Phi : from 0:~m1231_3, from 1:m1234_7 -# 1237| m1237_2(unknown) = Phi : from 0:~m1231_4, from 1:~m1234_11 -# 1237| r1237_3(glval) = VariableAddress[#return] : -# 1237| r1237_4(glval) = VariableAddress[a] : -# 1237| r1237_5(int) = Load[a] : &:r1237_4, ~m1237_2 -# 1237| r1237_6(glval) = VariableAddress[b] : -# 1237| r1237_7(int) = Load[b] : &:r1237_6, ~m1237_2 -# 1237| r1237_8(int) = Add : r1237_5, r1237_7 -# 1237| r1237_9(glval) = VariableAddress[c] : -# 1237| r1237_10(int) = Load[c] : &:r1237_9, m1237_1 -# 1237| r1237_11(int) = Add : r1237_8, r1237_10 -# 1237| r1237_12(glval) = VariableAddress[d] : -# 1237| r1237_13(int) = Load[d] : &:r1237_12, ~m1237_2 -# 1237| r1237_14(int) = Add : r1237_11, r1237_13 -# 1237| m1237_15(int) = Store[#return] : &:r1237_3, r1237_14 -# 1231| r1231_7(glval) = VariableAddress[#return] : -# 1231| v1231_8(void) = ReturnValue : &:r1231_7, m1237_15 -# 1231| v1231_9(void) = AliasedUse : ~m1237_2 -# 1231| v1231_10(void) = ExitFunction : - -# 1232| int a -# 1232| Block 0 -# 1232| v1232_1(void) = EnterFunction : -# 1232| m1232_2(unknown) = AliasedDefinition : -# 1232| r1232_3(glval) = VariableAddress[a] : -# 1232| r1232_4(int) = Constant[0] : -# 1232| m1232_5(int) = Store[a] : &:r1232_3, r1232_4 -# 1232| m1232_6(unknown) = Chi : total:m1232_2, partial:m1232_5 -# 1232| v1232_7(void) = ReturnVoid : -# 1232| v1232_8(void) = AliasedUse : ~m1232_6 -# 1232| v1232_9(void) = ExitFunction : - -# 1233| int b -# 1233| Block 0 -# 1233| v1233_1(void) = EnterFunction : -# 1233| m1233_2(unknown) = AliasedDefinition : -# 1233| r1233_3(glval) = VariableAddress[b] : -# 1233| r1233_4(int) = Constant[4] : -# 1233| m1233_5(int) = Store[b] : &:r1233_3, r1233_4 -# 1233| m1233_6(unknown) = Chi : total:m1233_2, partial:m1233_5 -# 1233| v1233_7(void) = ReturnVoid : -# 1233| v1233_8(void) = AliasedUse : ~m1233_6 -# 1233| v1233_9(void) = ExitFunction : - -# 1240| void staticLocalWithConstructor(char const*) -# 1240| Block 0 -# 1240| v1240_1(void) = EnterFunction : -# 1240| m1240_2(unknown) = AliasedDefinition : -# 1240| m1240_3(unknown) = InitializeNonLocal : -# 1240| m1240_4(unknown) = Chi : total:m1240_2, partial:m1240_3 -# 1240| r1240_5(glval) = VariableAddress[dynamic] : -# 1240| m1240_6(char *) = InitializeParameter[dynamic] : &:r1240_5 -# 1240| r1240_7(char *) = Load[dynamic] : &:r1240_5, m1240_6 -# 1240| m1240_8(unknown) = InitializeIndirection[dynamic] : &:r1240_7 -# 1241| r1241_1(glval) = VariableAddress[a#init] : -# 1241| r1241_2(bool) = Load[a#init] : &:r1241_1, ~m1240_3 -# 1241| v1241_3(void) = ConditionalBranch : r1241_2 +# 1239| Block 2 +# 1239| m1239_1(int) = Phi : from 0:~m1233_3, from 1:m1236_7 +# 1239| m1239_2(unknown) = Phi : from 0:~m1233_4, from 1:~m1236_11 +# 1239| r1239_3(glval) = VariableAddress[#return] : +# 1239| r1239_4(glval) = VariableAddress[a] : +# 1239| r1239_5(int) = Load[a] : &:r1239_4, ~m1239_2 +# 1239| r1239_6(glval) = VariableAddress[b] : +# 1239| r1239_7(int) = Load[b] : &:r1239_6, ~m1239_2 +# 1239| r1239_8(int) = Add : r1239_5, r1239_7 +# 1239| r1239_9(glval) = VariableAddress[c] : +# 1239| r1239_10(int) = Load[c] : &:r1239_9, m1239_1 +# 1239| r1239_11(int) = Add : r1239_8, r1239_10 +# 1239| r1239_12(glval) = VariableAddress[d] : +# 1239| r1239_13(int) = Load[d] : &:r1239_12, ~m1239_2 +# 1239| r1239_14(int) = Add : r1239_11, r1239_13 +# 1239| m1239_15(int) = Store[#return] : &:r1239_3, r1239_14 +# 1233| r1233_7(glval) = VariableAddress[#return] : +# 1233| v1233_8(void) = ReturnValue : &:r1233_7, m1239_15 +# 1233| v1233_9(void) = AliasedUse : ~m1239_2 +# 1233| v1233_10(void) = ExitFunction : + +# 1234| int a +# 1234| Block 0 +# 1234| v1234_1(void) = EnterFunction : +# 1234| m1234_2(unknown) = AliasedDefinition : +# 1234| r1234_3(glval) = VariableAddress[a] : +# 1234| r1234_4(int) = Constant[0] : +# 1234| m1234_5(int) = Store[a] : &:r1234_3, r1234_4 +# 1234| m1234_6(unknown) = Chi : total:m1234_2, partial:m1234_5 +# 1234| v1234_7(void) = ReturnVoid : +# 1234| v1234_8(void) = AliasedUse : ~m1234_6 +# 1234| v1234_9(void) = ExitFunction : + +# 1235| int b +# 1235| Block 0 +# 1235| v1235_1(void) = EnterFunction : +# 1235| m1235_2(unknown) = AliasedDefinition : +# 1235| r1235_3(glval) = VariableAddress[b] : +# 1235| r1235_4(int) = Constant[4] : +# 1235| m1235_5(int) = Store[b] : &:r1235_3, r1235_4 +# 1235| m1235_6(unknown) = Chi : total:m1235_2, partial:m1235_5 +# 1235| v1235_7(void) = ReturnVoid : +# 1235| v1235_8(void) = AliasedUse : ~m1235_6 +# 1235| v1235_9(void) = ExitFunction : + +# 1242| void staticLocalWithConstructor(char const*) +# 1242| Block 0 +# 1242| v1242_1(void) = EnterFunction : +# 1242| m1242_2(unknown) = AliasedDefinition : +# 1242| m1242_3(unknown) = InitializeNonLocal : +# 1242| m1242_4(unknown) = Chi : total:m1242_2, partial:m1242_3 +# 1242| r1242_5(glval) = VariableAddress[dynamic] : +# 1242| m1242_6(char *) = InitializeParameter[dynamic] : &:r1242_5 +# 1242| r1242_7(char *) = Load[dynamic] : &:r1242_5, m1242_6 +# 1242| m1242_8(unknown) = InitializeIndirection[dynamic] : &:r1242_7 +# 1243| r1243_1(glval) = VariableAddress[a#init] : +# 1243| r1243_2(bool) = Load[a#init] : &:r1243_1, ~m1242_3 +# 1243| v1243_3(void) = ConditionalBranch : r1243_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1241| Block 1 -# 1241| r1241_4(glval) = VariableAddress[a] : +# 1243| Block 1 +# 1243| r1243_4(glval) = VariableAddress[a] : #-----| r0_1(glval) = FunctionAddress[String] : -#-----| v0_2(void) = Call[String] : func:r0_1, this:r1241_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m1240_4 -#-----| m0_4(unknown) = Chi : total:m1240_4, partial:m0_3 -#-----| m0_5(String) = ^IndirectMayWriteSideEffect[-1] : &:r1241_4 +#-----| v0_2(void) = Call[String] : func:r0_1, this:r1243_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m1242_4 +#-----| m0_4(unknown) = Chi : total:m1242_4, partial:m0_3 +#-----| m0_5(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 1241| r1241_5(bool) = Constant[1] : -# 1241| m1241_6(bool) = Store[a#init] : &:r1241_1, r1241_5 -# 1241| m1241_7(unknown) = Chi : total:m0_6, partial:m1241_6 +# 1243| r1243_5(bool) = Constant[1] : +# 1243| m1243_6(bool) = Store[a#init] : &:r1243_1, r1243_5 +# 1243| m1243_7(unknown) = Chi : total:m0_6, partial:m1243_6 #-----| Goto -> Block 2 -# 1242| Block 2 -# 1242| m1242_1(unknown) = Phi : from 0:~m1240_4, from 1:~m1241_7 -# 1242| r1242_2(glval) = VariableAddress[b#init] : -# 1242| r1242_3(bool) = Load[b#init] : &:r1242_2, ~m1242_1 -# 1242| v1242_4(void) = ConditionalBranch : r1242_3 +# 1244| Block 2 +# 1244| m1244_1(unknown) = Phi : from 0:~m1242_4, from 1:~m1243_7 +# 1244| r1244_2(glval) = VariableAddress[b#init] : +# 1244| r1244_3(bool) = Load[b#init] : &:r1244_2, ~m1244_1 +# 1244| v1244_4(void) = ConditionalBranch : r1244_3 #-----| False -> Block 3 #-----| True -> Block 4 -# 1242| Block 3 -# 1242| r1242_5(glval) = VariableAddress[b] : -# 1242| r1242_6(glval) = FunctionAddress[String] : -# 1242| r1242_7(glval) = StringConstant["static"] : -# 1242| r1242_8(char *) = Convert : r1242_7 -# 1242| v1242_9(void) = Call[String] : func:r1242_6, this:r1242_5, 0:r1242_8 -# 1242| m1242_10(unknown) = ^CallSideEffect : ~m1242_1 -# 1242| m1242_11(unknown) = Chi : total:m1242_1, partial:m1242_10 -# 1242| v1242_12(void) = ^BufferReadSideEffect[0] : &:r1242_8, ~m1240_3 -# 1242| m1242_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1242_5 -# 1242| m1242_14(unknown) = Chi : total:m1242_11, partial:m1242_13 -# 1242| r1242_15(bool) = Constant[1] : -# 1242| m1242_16(bool) = Store[b#init] : &:r1242_2, r1242_15 -# 1242| m1242_17(unknown) = Chi : total:m1242_14, partial:m1242_16 +# 1244| Block 3 +# 1244| r1244_5(glval) = VariableAddress[b] : +# 1244| r1244_6(glval) = FunctionAddress[String] : +# 1244| r1244_7(glval) = StringConstant["static"] : +# 1244| r1244_8(char *) = Convert : r1244_7 +# 1244| v1244_9(void) = Call[String] : func:r1244_6, this:r1244_5, 0:r1244_8 +# 1244| m1244_10(unknown) = ^CallSideEffect : ~m1244_1 +# 1244| m1244_11(unknown) = Chi : total:m1244_1, partial:m1244_10 +# 1244| v1244_12(void) = ^BufferReadSideEffect[0] : &:r1244_8, ~m1242_3 +# 1244| m1244_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1244_5 +# 1244| m1244_14(unknown) = Chi : total:m1244_11, partial:m1244_13 +# 1244| r1244_15(bool) = Constant[1] : +# 1244| m1244_16(bool) = Store[b#init] : &:r1244_2, r1244_15 +# 1244| m1244_17(unknown) = Chi : total:m1244_14, partial:m1244_16 #-----| Goto -> Block 4 -# 1243| Block 4 -# 1243| m1243_1(unknown) = Phi : from 2:~m1242_1, from 3:~m1242_17 -# 1243| r1243_2(glval) = VariableAddress[c#init] : -# 1243| r1243_3(bool) = Load[c#init] : &:r1243_2, ~m1243_1 -# 1243| v1243_4(void) = ConditionalBranch : r1243_3 +# 1245| Block 4 +# 1245| m1245_1(unknown) = Phi : from 2:~m1244_1, from 3:~m1244_17 +# 1245| r1245_2(glval) = VariableAddress[c#init] : +# 1245| r1245_3(bool) = Load[c#init] : &:r1245_2, ~m1245_1 +# 1245| v1245_4(void) = ConditionalBranch : r1245_3 #-----| False -> Block 5 #-----| True -> Block 6 -# 1243| Block 5 -# 1243| r1243_5(glval) = VariableAddress[c] : -# 1243| r1243_6(glval) = FunctionAddress[String] : -# 1243| r1243_7(glval) = VariableAddress[dynamic] : -# 1243| r1243_8(char *) = Load[dynamic] : &:r1243_7, m1240_6 -# 1243| v1243_9(void) = Call[String] : func:r1243_6, this:r1243_5, 0:r1243_8 -# 1243| m1243_10(unknown) = ^CallSideEffect : ~m1243_1 -# 1243| m1243_11(unknown) = Chi : total:m1243_1, partial:m1243_10 -# 1243| v1243_12(void) = ^BufferReadSideEffect[0] : &:r1243_8, ~m1240_8 -# 1243| m1243_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_5 -# 1243| m1243_14(unknown) = Chi : total:m1243_11, partial:m1243_13 -# 1243| r1243_15(bool) = Constant[1] : -# 1243| m1243_16(bool) = Store[c#init] : &:r1243_2, r1243_15 -# 1243| m1243_17(unknown) = Chi : total:m1243_14, partial:m1243_16 +# 1245| Block 5 +# 1245| r1245_5(glval) = VariableAddress[c] : +# 1245| r1245_6(glval) = FunctionAddress[String] : +# 1245| r1245_7(glval) = VariableAddress[dynamic] : +# 1245| r1245_8(char *) = Load[dynamic] : &:r1245_7, m1242_6 +# 1245| v1245_9(void) = Call[String] : func:r1245_6, this:r1245_5, 0:r1245_8 +# 1245| m1245_10(unknown) = ^CallSideEffect : ~m1245_1 +# 1245| m1245_11(unknown) = Chi : total:m1245_1, partial:m1245_10 +# 1245| v1245_12(void) = ^BufferReadSideEffect[0] : &:r1245_8, ~m1242_8 +# 1245| m1245_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1245_5 +# 1245| m1245_14(unknown) = Chi : total:m1245_11, partial:m1245_13 +# 1245| r1245_15(bool) = Constant[1] : +# 1245| m1245_16(bool) = Store[c#init] : &:r1245_2, r1245_15 +# 1245| m1245_17(unknown) = Chi : total:m1245_14, partial:m1245_16 #-----| Goto -> Block 6 -# 1244| Block 6 -# 1244| m1244_1(unknown) = Phi : from 4:~m1243_1, from 5:~m1243_17 -# 1244| v1244_2(void) = NoOp : -# 1240| v1240_9(void) = ReturnIndirection[dynamic] : &:r1240_7, m1240_8 -# 1240| v1240_10(void) = ReturnVoid : -# 1240| v1240_11(void) = AliasedUse : ~m1244_1 -# 1240| v1240_12(void) = ExitFunction : - -# 1251| void test_strings(char*, char*) -# 1251| Block 0 -# 1251| v1251_1(void) = EnterFunction : -# 1251| m1251_2(unknown) = AliasedDefinition : -# 1251| m1251_3(unknown) = InitializeNonLocal : -# 1251| m1251_4(unknown) = Chi : total:m1251_2, partial:m1251_3 -# 1251| r1251_5(glval) = VariableAddress[s1] : -# 1251| m1251_6(char *) = InitializeParameter[s1] : &:r1251_5 -# 1251| r1251_7(char *) = Load[s1] : &:r1251_5, m1251_6 -# 1251| m1251_8(unknown) = InitializeIndirection[s1] : &:r1251_7 -# 1251| r1251_9(glval) = VariableAddress[s2] : -# 1251| m1251_10(char *) = InitializeParameter[s2] : &:r1251_9 -# 1251| r1251_11(char *) = Load[s2] : &:r1251_9, m1251_10 -# 1251| m1251_12(unknown) = InitializeIndirection[s2] : &:r1251_11 -# 1252| r1252_1(glval) = VariableAddress[buffer] : -# 1252| m1252_2(char[1024]) = Uninitialized[buffer] : &:r1252_1 -# 1252| r1252_3(int) = Constant[0] : -# 1252| r1252_4(glval) = PointerAdd[1] : r1252_1, r1252_3 -# 1252| r1252_5(char) = Constant[0] : -# 1252| m1252_6(char) = Store[?] : &:r1252_4, r1252_5 -# 1252| m1252_7(char[1024]) = Chi : total:m1252_2, partial:m1252_6 -# 1252| r1252_8(int) = Constant[1] : -# 1252| r1252_9(glval) = PointerAdd[1] : r1252_1, r1252_8 -# 1252| r1252_10(unknown[1023]) = Constant[0] : -# 1252| m1252_11(unknown[1023]) = Store[?] : &:r1252_9, r1252_10 -# 1252| m1252_12(char[1024]) = Chi : total:m1252_7, partial:m1252_11 -# 1254| r1254_1(glval) = FunctionAddress[strcpy] : -# 1254| r1254_2(glval) = VariableAddress[buffer] : -# 1254| r1254_3(char *) = Convert : r1254_2 -# 1254| r1254_4(glval) = VariableAddress[s1] : -# 1254| r1254_5(char *) = Load[s1] : &:r1254_4, m1251_6 -# 1254| r1254_6(char *) = Convert : r1254_5 -# 1254| r1254_7(char *) = Call[strcpy] : func:r1254_1, 0:r1254_3, 1:r1254_6 -# 1254| v1254_8(void) = ^BufferReadSideEffect[1] : &:r1254_6, ~m1251_8 -# 1254| m1254_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1254_3 -# 1254| m1254_10(char[1024]) = Chi : total:m1252_12, partial:m1254_9 -# 1255| r1255_1(glval) = FunctionAddress[strcat] : -# 1255| r1255_2(glval) = VariableAddress[buffer] : -# 1255| r1255_3(char *) = Convert : r1255_2 -# 1255| r1255_4(glval) = VariableAddress[s2] : -# 1255| r1255_5(char *) = Load[s2] : &:r1255_4, m1251_10 -# 1255| r1255_6(char *) = Convert : r1255_5 -# 1255| r1255_7(char *) = Call[strcat] : func:r1255_1, 0:r1255_3, 1:r1255_6 -# 1255| v1255_8(void) = ^BufferReadSideEffect[0] : &:r1255_3, ~m1254_10 -# 1255| v1255_9(void) = ^BufferReadSideEffect[1] : &:r1255_6, ~m1251_12 -# 1255| m1255_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1255_3 -# 1255| m1255_11(char[1024]) = Chi : total:m1254_10, partial:m1255_10 -# 1256| v1256_1(void) = NoOp : -# 1251| v1251_13(void) = ReturnIndirection[s1] : &:r1251_7, m1251_8 -# 1251| v1251_14(void) = ReturnIndirection[s2] : &:r1251_11, m1251_12 -# 1251| v1251_15(void) = ReturnVoid : -# 1251| v1251_16(void) = AliasedUse : m1251_3 -# 1251| v1251_17(void) = ExitFunction : - -# 1261| void A::static_member(A*, int) -# 1261| Block 0 -# 1261| v1261_1(void) = EnterFunction : -# 1261| m1261_2(unknown) = AliasedDefinition : -# 1261| m1261_3(unknown) = InitializeNonLocal : -# 1261| m1261_4(unknown) = Chi : total:m1261_2, partial:m1261_3 -# 1261| r1261_5(glval) = VariableAddress[a] : -# 1261| m1261_6(A *) = InitializeParameter[a] : &:r1261_5 -# 1261| r1261_7(A *) = Load[a] : &:r1261_5, m1261_6 -# 1261| m1261_8(unknown) = InitializeIndirection[a] : &:r1261_7 -# 1261| r1261_9(glval) = VariableAddress[x] : -# 1261| m1261_10(int) = InitializeParameter[x] : &:r1261_9 -# 1262| r1262_1(glval) = VariableAddress[x] : -# 1262| r1262_2(int) = Load[x] : &:r1262_1, m1261_10 -# 1262| r1262_3(glval) = VariableAddress[a] : -# 1262| r1262_4(A *) = Load[a] : &:r1262_3, m1261_6 -# 1262| r1262_5(glval) = FieldAddress[member] : r1262_4 -# 1262| m1262_6(int) = Store[?] : &:r1262_5, r1262_2 -# 1262| m1262_7(unknown) = Chi : total:m1261_8, partial:m1262_6 -# 1263| v1263_1(void) = NoOp : -# 1261| v1261_11(void) = ReturnIndirection[a] : &:r1261_7, m1262_7 -# 1261| v1261_12(void) = ReturnVoid : -# 1261| v1261_13(void) = AliasedUse : m1261_3 -# 1261| v1261_14(void) = ExitFunction : - -# 1270| void test_static_member_functions(int, A*) -# 1270| Block 0 -# 1270| v1270_1(void) = EnterFunction : -# 1270| m1270_2(unknown) = AliasedDefinition : -# 1270| m1270_3(unknown) = InitializeNonLocal : -# 1270| m1270_4(unknown) = Chi : total:m1270_2, partial:m1270_3 -# 1270| r1270_5(glval) = VariableAddress[int_arg] : -# 1270| m1270_6(int) = InitializeParameter[int_arg] : &:r1270_5 -# 1270| r1270_7(glval) = VariableAddress[a_arg] : -# 1270| m1270_8(A *) = InitializeParameter[a_arg] : &:r1270_7 -# 1270| r1270_9(A *) = Load[a_arg] : &:r1270_7, m1270_8 -# 1270| m1270_10(unknown) = InitializeIndirection[a_arg] : &:r1270_9 -# 1271| r1271_1(glval) = VariableAddress[c] : -# 1271| m1271_2(C) = Uninitialized[c] : &:r1271_1 -# 1271| r1271_3(glval) = FunctionAddress[C] : -# 1271| v1271_4(void) = Call[C] : func:r1271_3, this:r1271_1 -# 1271| m1271_5(unknown) = ^CallSideEffect : ~m1270_4 -# 1271| m1271_6(unknown) = Chi : total:m1270_4, partial:m1271_5 -# 1271| m1271_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1271_1 -# 1271| m1271_8(C) = Chi : total:m1271_2, partial:m1271_7 -# 1272| r1272_1(glval) = VariableAddress[c] : -# 1272| r1272_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1272| r1272_3(int) = Constant[10] : -# 1272| r1272_4(int) = Call[StaticMemberFunction] : func:r1272_2, 0:r1272_3 -# 1272| m1272_5(unknown) = ^CallSideEffect : ~m1271_6 -# 1272| m1272_6(unknown) = Chi : total:m1271_6, partial:m1272_5 -# 1273| r1273_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1273| r1273_2(int) = Constant[10] : -# 1273| r1273_3(int) = Call[StaticMemberFunction] : func:r1273_1, 0:r1273_2 -# 1273| m1273_4(unknown) = ^CallSideEffect : ~m1272_6 -# 1273| m1273_5(unknown) = Chi : total:m1272_6, partial:m1273_4 -# 1275| r1275_1(glval) = VariableAddress[a] : -# 1275| m1275_2(A) = Uninitialized[a] : &:r1275_1 -# 1276| r1276_1(glval) = VariableAddress[a] : -# 1276| r1276_2(glval) = FunctionAddress[static_member] : -# 1276| r1276_3(glval) = VariableAddress[a] : -# 1276| r1276_4(A *) = CopyValue : r1276_3 -# 1276| r1276_5(glval) = VariableAddress[int_arg] : -# 1276| r1276_6(int) = Load[int_arg] : &:r1276_5, m1270_6 -# 1276| v1276_7(void) = Call[static_member] : func:r1276_2, 0:r1276_4, 1:r1276_6 -# 1276| m1276_8(unknown) = ^CallSideEffect : ~m1273_5 -# 1276| m1276_9(unknown) = Chi : total:m1273_5, partial:m1276_8 -# 1276| v1276_10(void) = ^BufferReadSideEffect[0] : &:r1276_4, ~m1275_2 -# 1276| m1276_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1276_4 -# 1276| m1276_12(A) = Chi : total:m1275_2, partial:m1276_11 -# 1277| r1277_1(glval) = FunctionAddress[static_member] : -# 1277| r1277_2(glval) = VariableAddress[a] : -# 1277| r1277_3(A *) = CopyValue : r1277_2 -# 1277| r1277_4(glval) = VariableAddress[int_arg] : -# 1277| r1277_5(int) = Load[int_arg] : &:r1277_4, m1270_6 -# 1277| v1277_6(void) = Call[static_member] : func:r1277_1, 0:r1277_3, 1:r1277_5 -# 1277| m1277_7(unknown) = ^CallSideEffect : ~m1276_9 -# 1277| m1277_8(unknown) = Chi : total:m1276_9, partial:m1277_7 -# 1277| v1277_9(void) = ^BufferReadSideEffect[0] : &:r1277_3, ~m1276_12 -# 1277| m1277_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1277_3 -# 1277| m1277_11(A) = Chi : total:m1276_12, partial:m1277_10 -# 1279| r1279_1(glval) = VariableAddress[a] : -# 1279| r1279_2(A *) = CopyValue : r1279_1 -# 1279| r1279_3(glval) = FunctionAddress[static_member] : -# 1279| r1279_4(glval) = VariableAddress[a_arg] : -# 1279| r1279_5(A *) = Load[a_arg] : &:r1279_4, m1270_8 -# 1279| r1279_6(glval) = VariableAddress[int_arg] : -# 1279| r1279_7(int) = Load[int_arg] : &:r1279_6, m1270_6 -# 1279| r1279_8(int) = Constant[2] : -# 1279| r1279_9(int) = Add : r1279_7, r1279_8 -# 1279| v1279_10(void) = Call[static_member] : func:r1279_3, 0:r1279_5, 1:r1279_9 -# 1279| m1279_11(unknown) = ^CallSideEffect : ~m1277_8 -# 1279| m1279_12(unknown) = Chi : total:m1277_8, partial:m1279_11 -# 1279| v1279_13(void) = ^BufferReadSideEffect[0] : &:r1279_5, ~m1270_10 -# 1279| m1279_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1279_5 -# 1279| m1279_15(unknown) = Chi : total:m1270_10, partial:m1279_14 -# 1280| r1280_1(glval) = VariableAddress[a_arg] : -# 1280| r1280_2(A *) = Load[a_arg] : &:r1280_1, m1270_8 -# 1280| r1280_3(glval) = CopyValue : r1280_2 -# 1280| r1280_4(glval) = FunctionAddress[static_member] : -# 1280| r1280_5(glval) = VariableAddress[a] : -# 1280| r1280_6(A *) = CopyValue : r1280_5 -# 1280| r1280_7(int) = Constant[99] : -# 1280| v1280_8(void) = Call[static_member] : func:r1280_4, 0:r1280_6, 1:r1280_7 -# 1280| m1280_9(unknown) = ^CallSideEffect : ~m1279_12 -# 1280| m1280_10(unknown) = Chi : total:m1279_12, partial:m1280_9 -# 1280| v1280_11(void) = ^BufferReadSideEffect[0] : &:r1280_6, ~m1277_11 -# 1280| m1280_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1280_6 -# 1280| m1280_13(A) = Chi : total:m1277_11, partial:m1280_12 -# 1281| r1281_1(glval) = VariableAddress[a_arg] : -# 1281| r1281_2(A *) = Load[a_arg] : &:r1281_1, m1270_8 +# 1246| Block 6 +# 1246| m1246_1(unknown) = Phi : from 4:~m1245_1, from 5:~m1245_17 +# 1246| v1246_2(void) = NoOp : +# 1242| v1242_9(void) = ReturnIndirection[dynamic] : &:r1242_7, m1242_8 +# 1242| v1242_10(void) = ReturnVoid : +# 1242| v1242_11(void) = AliasedUse : ~m1246_1 +# 1242| v1242_12(void) = ExitFunction : + +# 1253| void test_strings(char*, char*) +# 1253| Block 0 +# 1253| v1253_1(void) = EnterFunction : +# 1253| m1253_2(unknown) = AliasedDefinition : +# 1253| m1253_3(unknown) = InitializeNonLocal : +# 1253| m1253_4(unknown) = Chi : total:m1253_2, partial:m1253_3 +# 1253| r1253_5(glval) = VariableAddress[s1] : +# 1253| m1253_6(char *) = InitializeParameter[s1] : &:r1253_5 +# 1253| r1253_7(char *) = Load[s1] : &:r1253_5, m1253_6 +# 1253| m1253_8(unknown) = InitializeIndirection[s1] : &:r1253_7 +# 1253| r1253_9(glval) = VariableAddress[s2] : +# 1253| m1253_10(char *) = InitializeParameter[s2] : &:r1253_9 +# 1253| r1253_11(char *) = Load[s2] : &:r1253_9, m1253_10 +# 1253| m1253_12(unknown) = InitializeIndirection[s2] : &:r1253_11 +# 1254| r1254_1(glval) = VariableAddress[buffer] : +# 1254| m1254_2(char[1024]) = Uninitialized[buffer] : &:r1254_1 +# 1254| r1254_3(int) = Constant[0] : +# 1254| r1254_4(glval) = PointerAdd[1] : r1254_1, r1254_3 +# 1254| r1254_5(char) = Constant[0] : +# 1254| m1254_6(char) = Store[?] : &:r1254_4, r1254_5 +# 1254| m1254_7(char[1024]) = Chi : total:m1254_2, partial:m1254_6 +# 1254| r1254_8(int) = Constant[1] : +# 1254| r1254_9(glval) = PointerAdd[1] : r1254_1, r1254_8 +# 1254| r1254_10(unknown[1023]) = Constant[0] : +# 1254| m1254_11(unknown[1023]) = Store[?] : &:r1254_9, r1254_10 +# 1254| m1254_12(char[1024]) = Chi : total:m1254_7, partial:m1254_11 +# 1256| r1256_1(glval) = FunctionAddress[strcpy] : +# 1256| r1256_2(glval) = VariableAddress[buffer] : +# 1256| r1256_3(char *) = Convert : r1256_2 +# 1256| r1256_4(glval) = VariableAddress[s1] : +# 1256| r1256_5(char *) = Load[s1] : &:r1256_4, m1253_6 +# 1256| r1256_6(char *) = Convert : r1256_5 +# 1256| r1256_7(char *) = Call[strcpy] : func:r1256_1, 0:r1256_3, 1:r1256_6 +# 1256| v1256_8(void) = ^BufferReadSideEffect[1] : &:r1256_6, ~m1253_8 +# 1256| m1256_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1256_3 +# 1256| m1256_10(char[1024]) = Chi : total:m1254_12, partial:m1256_9 +# 1257| r1257_1(glval) = FunctionAddress[strcat] : +# 1257| r1257_2(glval) = VariableAddress[buffer] : +# 1257| r1257_3(char *) = Convert : r1257_2 +# 1257| r1257_4(glval) = VariableAddress[s2] : +# 1257| r1257_5(char *) = Load[s2] : &:r1257_4, m1253_10 +# 1257| r1257_6(char *) = Convert : r1257_5 +# 1257| r1257_7(char *) = Call[strcat] : func:r1257_1, 0:r1257_3, 1:r1257_6 +# 1257| v1257_8(void) = ^BufferReadSideEffect[0] : &:r1257_3, ~m1256_10 +# 1257| v1257_9(void) = ^BufferReadSideEffect[1] : &:r1257_6, ~m1253_12 +# 1257| m1257_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1257_3 +# 1257| m1257_11(char[1024]) = Chi : total:m1256_10, partial:m1257_10 +# 1258| v1258_1(void) = NoOp : +# 1253| v1253_13(void) = ReturnIndirection[s1] : &:r1253_7, m1253_8 +# 1253| v1253_14(void) = ReturnIndirection[s2] : &:r1253_11, m1253_12 +# 1253| v1253_15(void) = ReturnVoid : +# 1253| v1253_16(void) = AliasedUse : m1253_3 +# 1253| v1253_17(void) = ExitFunction : + +# 1263| void A::static_member(A*, int) +# 1263| Block 0 +# 1263| v1263_1(void) = EnterFunction : +# 1263| m1263_2(unknown) = AliasedDefinition : +# 1263| m1263_3(unknown) = InitializeNonLocal : +# 1263| m1263_4(unknown) = Chi : total:m1263_2, partial:m1263_3 +# 1263| r1263_5(glval) = VariableAddress[a] : +# 1263| m1263_6(A *) = InitializeParameter[a] : &:r1263_5 +# 1263| r1263_7(A *) = Load[a] : &:r1263_5, m1263_6 +# 1263| m1263_8(unknown) = InitializeIndirection[a] : &:r1263_7 +# 1263| r1263_9(glval) = VariableAddress[x] : +# 1263| m1263_10(int) = InitializeParameter[x] : &:r1263_9 +# 1264| r1264_1(glval) = VariableAddress[x] : +# 1264| r1264_2(int) = Load[x] : &:r1264_1, m1263_10 +# 1264| r1264_3(glval) = VariableAddress[a] : +# 1264| r1264_4(A *) = Load[a] : &:r1264_3, m1263_6 +# 1264| r1264_5(glval) = FieldAddress[member] : r1264_4 +# 1264| m1264_6(int) = Store[?] : &:r1264_5, r1264_2 +# 1264| m1264_7(unknown) = Chi : total:m1263_8, partial:m1264_6 +# 1265| v1265_1(void) = NoOp : +# 1263| v1263_11(void) = ReturnIndirection[a] : &:r1263_7, m1264_7 +# 1263| v1263_12(void) = ReturnVoid : +# 1263| v1263_13(void) = AliasedUse : m1263_3 +# 1263| v1263_14(void) = ExitFunction : + +# 1272| void test_static_member_functions(int, A*) +# 1272| Block 0 +# 1272| v1272_1(void) = EnterFunction : +# 1272| m1272_2(unknown) = AliasedDefinition : +# 1272| m1272_3(unknown) = InitializeNonLocal : +# 1272| m1272_4(unknown) = Chi : total:m1272_2, partial:m1272_3 +# 1272| r1272_5(glval) = VariableAddress[int_arg] : +# 1272| m1272_6(int) = InitializeParameter[int_arg] : &:r1272_5 +# 1272| r1272_7(glval) = VariableAddress[a_arg] : +# 1272| m1272_8(A *) = InitializeParameter[a_arg] : &:r1272_7 +# 1272| r1272_9(A *) = Load[a_arg] : &:r1272_7, m1272_8 +# 1272| m1272_10(unknown) = InitializeIndirection[a_arg] : &:r1272_9 +# 1273| r1273_1(glval) = VariableAddress[c] : +# 1273| m1273_2(C) = Uninitialized[c] : &:r1273_1 +# 1273| r1273_3(glval) = FunctionAddress[C] : +# 1273| v1273_4(void) = Call[C] : func:r1273_3, this:r1273_1 +# 1273| m1273_5(unknown) = ^CallSideEffect : ~m1272_4 +# 1273| m1273_6(unknown) = Chi : total:m1272_4, partial:m1273_5 +# 1273| m1273_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1273_1 +# 1273| m1273_8(C) = Chi : total:m1273_2, partial:m1273_7 +# 1274| r1274_1(glval) = VariableAddress[c] : +# 1274| r1274_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1274| r1274_3(int) = Constant[10] : +# 1274| r1274_4(int) = Call[StaticMemberFunction] : func:r1274_2, 0:r1274_3 +# 1274| m1274_5(unknown) = ^CallSideEffect : ~m1273_6 +# 1274| m1274_6(unknown) = Chi : total:m1273_6, partial:m1274_5 +# 1275| r1275_1(glval) = FunctionAddress[StaticMemberFunction] : +# 1275| r1275_2(int) = Constant[10] : +# 1275| r1275_3(int) = Call[StaticMemberFunction] : func:r1275_1, 0:r1275_2 +# 1275| m1275_4(unknown) = ^CallSideEffect : ~m1274_6 +# 1275| m1275_5(unknown) = Chi : total:m1274_6, partial:m1275_4 +# 1277| r1277_1(glval) = VariableAddress[a] : +# 1277| m1277_2(A) = Uninitialized[a] : &:r1277_1 +# 1278| r1278_1(glval) = VariableAddress[a] : +# 1278| r1278_2(glval) = FunctionAddress[static_member] : +# 1278| r1278_3(glval) = VariableAddress[a] : +# 1278| r1278_4(A *) = CopyValue : r1278_3 +# 1278| r1278_5(glval) = VariableAddress[int_arg] : +# 1278| r1278_6(int) = Load[int_arg] : &:r1278_5, m1272_6 +# 1278| v1278_7(void) = Call[static_member] : func:r1278_2, 0:r1278_4, 1:r1278_6 +# 1278| m1278_8(unknown) = ^CallSideEffect : ~m1275_5 +# 1278| m1278_9(unknown) = Chi : total:m1275_5, partial:m1278_8 +# 1278| v1278_10(void) = ^BufferReadSideEffect[0] : &:r1278_4, ~m1277_2 +# 1278| m1278_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1278_4 +# 1278| m1278_12(A) = Chi : total:m1277_2, partial:m1278_11 +# 1279| r1279_1(glval) = FunctionAddress[static_member] : +# 1279| r1279_2(glval) = VariableAddress[a] : +# 1279| r1279_3(A *) = CopyValue : r1279_2 +# 1279| r1279_4(glval) = VariableAddress[int_arg] : +# 1279| r1279_5(int) = Load[int_arg] : &:r1279_4, m1272_6 +# 1279| v1279_6(void) = Call[static_member] : func:r1279_1, 0:r1279_3, 1:r1279_5 +# 1279| m1279_7(unknown) = ^CallSideEffect : ~m1278_9 +# 1279| m1279_8(unknown) = Chi : total:m1278_9, partial:m1279_7 +# 1279| v1279_9(void) = ^BufferReadSideEffect[0] : &:r1279_3, ~m1278_12 +# 1279| m1279_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1279_3 +# 1279| m1279_11(A) = Chi : total:m1278_12, partial:m1279_10 +# 1281| r1281_1(glval) = VariableAddress[a] : +# 1281| r1281_2(A *) = CopyValue : r1281_1 # 1281| r1281_3(glval) = FunctionAddress[static_member] : # 1281| r1281_4(glval) = VariableAddress[a_arg] : -# 1281| r1281_5(A *) = Load[a_arg] : &:r1281_4, m1270_8 -# 1281| r1281_6(int) = Constant[-1] : -# 1281| v1281_7(void) = Call[static_member] : func:r1281_3, 0:r1281_5, 1:r1281_6 -# 1281| m1281_8(unknown) = ^CallSideEffect : ~m1280_10 -# 1281| m1281_9(unknown) = Chi : total:m1280_10, partial:m1281_8 -# 1281| v1281_10(void) = ^BufferReadSideEffect[0] : &:r1281_5, ~m1279_15 -# 1281| m1281_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1281_5 -# 1281| m1281_12(unknown) = Chi : total:m1279_15, partial:m1281_11 -# 1283| r1283_1(glval) = VariableAddress[a] : -# 1283| r1283_2(glval) = FunctionAddress[static_member_without_def] : -# 1283| v1283_3(void) = Call[static_member_without_def] : func:r1283_2 -# 1283| m1283_4(unknown) = ^CallSideEffect : ~m1281_9 -# 1283| m1283_5(unknown) = Chi : total:m1281_9, partial:m1283_4 -# 1284| r1284_1(glval) = FunctionAddress[static_member_without_def] : -# 1284| v1284_2(void) = Call[static_member_without_def] : func:r1284_1 -# 1284| m1284_3(unknown) = ^CallSideEffect : ~m1283_5 -# 1284| m1284_4(unknown) = Chi : total:m1283_5, partial:m1284_3 -# 1286| r1286_1(glval) = FunctionAddress[getAnInstanceOfA] : -# 1286| r1286_2(A *) = Call[getAnInstanceOfA] : func:r1286_1 -# 1286| m1286_3(unknown) = ^CallSideEffect : ~m1284_4 -# 1286| m1286_4(unknown) = Chi : total:m1284_4, partial:m1286_3 -# 1286| r1286_5(glval) = FunctionAddress[static_member_without_def] : -# 1286| v1286_6(void) = Call[static_member_without_def] : func:r1286_5 -# 1286| m1286_7(unknown) = ^CallSideEffect : ~m1286_4 -# 1286| m1286_8(unknown) = Chi : total:m1286_4, partial:m1286_7 -# 1287| v1287_1(void) = NoOp : -# 1270| v1270_11(void) = ReturnIndirection[a_arg] : &:r1270_9, m1281_12 -# 1270| v1270_12(void) = ReturnVoid : -# 1270| v1270_13(void) = AliasedUse : ~m1286_8 -# 1270| v1270_14(void) = ExitFunction : - -# 1289| int missingReturnValue(bool, int) -# 1289| Block 0 -# 1289| v1289_1(void) = EnterFunction : -# 1289| m1289_2(unknown) = AliasedDefinition : -# 1289| m1289_3(unknown) = InitializeNonLocal : -# 1289| m1289_4(unknown) = Chi : total:m1289_2, partial:m1289_3 -# 1289| r1289_5(glval) = VariableAddress[b] : -# 1289| m1289_6(bool) = InitializeParameter[b] : &:r1289_5 -# 1289| r1289_7(glval) = VariableAddress[x] : -# 1289| m1289_8(int) = InitializeParameter[x] : &:r1289_7 -# 1290| r1290_1(glval) = VariableAddress[b] : -# 1290| r1290_2(bool) = Load[b] : &:r1290_1, m1289_6 -# 1290| v1290_3(void) = ConditionalBranch : r1290_2 +# 1281| r1281_5(A *) = Load[a_arg] : &:r1281_4, m1272_8 +# 1281| r1281_6(glval) = VariableAddress[int_arg] : +# 1281| r1281_7(int) = Load[int_arg] : &:r1281_6, m1272_6 +# 1281| r1281_8(int) = Constant[2] : +# 1281| r1281_9(int) = Add : r1281_7, r1281_8 +# 1281| v1281_10(void) = Call[static_member] : func:r1281_3, 0:r1281_5, 1:r1281_9 +# 1281| m1281_11(unknown) = ^CallSideEffect : ~m1279_8 +# 1281| m1281_12(unknown) = Chi : total:m1279_8, partial:m1281_11 +# 1281| v1281_13(void) = ^BufferReadSideEffect[0] : &:r1281_5, ~m1272_10 +# 1281| m1281_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1281_5 +# 1281| m1281_15(unknown) = Chi : total:m1272_10, partial:m1281_14 +# 1282| r1282_1(glval) = VariableAddress[a_arg] : +# 1282| r1282_2(A *) = Load[a_arg] : &:r1282_1, m1272_8 +# 1282| r1282_3(glval) = CopyValue : r1282_2 +# 1282| r1282_4(glval) = FunctionAddress[static_member] : +# 1282| r1282_5(glval) = VariableAddress[a] : +# 1282| r1282_6(A *) = CopyValue : r1282_5 +# 1282| r1282_7(int) = Constant[99] : +# 1282| v1282_8(void) = Call[static_member] : func:r1282_4, 0:r1282_6, 1:r1282_7 +# 1282| m1282_9(unknown) = ^CallSideEffect : ~m1281_12 +# 1282| m1282_10(unknown) = Chi : total:m1281_12, partial:m1282_9 +# 1282| v1282_11(void) = ^BufferReadSideEffect[0] : &:r1282_6, ~m1279_11 +# 1282| m1282_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1282_6 +# 1282| m1282_13(A) = Chi : total:m1279_11, partial:m1282_12 +# 1283| r1283_1(glval) = VariableAddress[a_arg] : +# 1283| r1283_2(A *) = Load[a_arg] : &:r1283_1, m1272_8 +# 1283| r1283_3(glval) = FunctionAddress[static_member] : +# 1283| r1283_4(glval) = VariableAddress[a_arg] : +# 1283| r1283_5(A *) = Load[a_arg] : &:r1283_4, m1272_8 +# 1283| r1283_6(int) = Constant[-1] : +# 1283| v1283_7(void) = Call[static_member] : func:r1283_3, 0:r1283_5, 1:r1283_6 +# 1283| m1283_8(unknown) = ^CallSideEffect : ~m1282_10 +# 1283| m1283_9(unknown) = Chi : total:m1282_10, partial:m1283_8 +# 1283| v1283_10(void) = ^BufferReadSideEffect[0] : &:r1283_5, ~m1281_15 +# 1283| m1283_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1283_5 +# 1283| m1283_12(unknown) = Chi : total:m1281_15, partial:m1283_11 +# 1285| r1285_1(glval) = VariableAddress[a] : +# 1285| r1285_2(glval) = FunctionAddress[static_member_without_def] : +# 1285| v1285_3(void) = Call[static_member_without_def] : func:r1285_2 +# 1285| m1285_4(unknown) = ^CallSideEffect : ~m1283_9 +# 1285| m1285_5(unknown) = Chi : total:m1283_9, partial:m1285_4 +# 1286| r1286_1(glval) = FunctionAddress[static_member_without_def] : +# 1286| v1286_2(void) = Call[static_member_without_def] : func:r1286_1 +# 1286| m1286_3(unknown) = ^CallSideEffect : ~m1285_5 +# 1286| m1286_4(unknown) = Chi : total:m1285_5, partial:m1286_3 +# 1288| r1288_1(glval) = FunctionAddress[getAnInstanceOfA] : +# 1288| r1288_2(A *) = Call[getAnInstanceOfA] : func:r1288_1 +# 1288| m1288_3(unknown) = ^CallSideEffect : ~m1286_4 +# 1288| m1288_4(unknown) = Chi : total:m1286_4, partial:m1288_3 +# 1288| r1288_5(glval) = FunctionAddress[static_member_without_def] : +# 1288| v1288_6(void) = Call[static_member_without_def] : func:r1288_5 +# 1288| m1288_7(unknown) = ^CallSideEffect : ~m1288_4 +# 1288| m1288_8(unknown) = Chi : total:m1288_4, partial:m1288_7 +# 1289| v1289_1(void) = NoOp : +# 1272| v1272_11(void) = ReturnIndirection[a_arg] : &:r1272_9, m1283_12 +# 1272| v1272_12(void) = ReturnVoid : +# 1272| v1272_13(void) = AliasedUse : ~m1288_8 +# 1272| v1272_14(void) = ExitFunction : + +# 1291| int missingReturnValue(bool, int) +# 1291| Block 0 +# 1291| v1291_1(void) = EnterFunction : +# 1291| m1291_2(unknown) = AliasedDefinition : +# 1291| m1291_3(unknown) = InitializeNonLocal : +# 1291| m1291_4(unknown) = Chi : total:m1291_2, partial:m1291_3 +# 1291| r1291_5(glval) = VariableAddress[b] : +# 1291| m1291_6(bool) = InitializeParameter[b] : &:r1291_5 +# 1291| r1291_7(glval) = VariableAddress[x] : +# 1291| m1291_8(int) = InitializeParameter[x] : &:r1291_7 +# 1292| r1292_1(glval) = VariableAddress[b] : +# 1292| r1292_2(bool) = Load[b] : &:r1292_1, m1291_6 +# 1292| v1292_3(void) = ConditionalBranch : r1292_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1289| Block 1 -# 1289| m1289_9(int) = Phi : from 2:m1291_4, from 3:m1293_2 -# 1289| r1289_10(glval) = VariableAddress[#return] : -# 1289| v1289_11(void) = ReturnValue : &:r1289_10, m1289_9 -# 1289| v1289_12(void) = AliasedUse : m1289_3 -# 1289| v1289_13(void) = ExitFunction : - -# 1291| Block 2 -# 1291| r1291_1(glval) = VariableAddress[#return] : -# 1291| r1291_2(glval) = VariableAddress[x] : -# 1291| r1291_3(int) = Load[x] : &:r1291_2, m1289_8 -# 1291| m1291_4(int) = Store[#return] : &:r1291_1, r1291_3 -#-----| Goto -> Block 1 +# 1291| Block 1 +# 1291| m1291_9(int) = Phi : from 2:m1293_4, from 3:m1295_2 +# 1291| r1291_10(glval) = VariableAddress[#return] : +# 1291| v1291_11(void) = ReturnValue : &:r1291_10, m1291_9 +# 1291| v1291_12(void) = AliasedUse : m1291_3 +# 1291| v1291_13(void) = ExitFunction : -# 1293| Block 3 +# 1293| Block 2 # 1293| r1293_1(glval) = VariableAddress[#return] : -# 1293| m1293_2(int) = Uninitialized[#return] : &:r1293_1 +# 1293| r1293_2(glval) = VariableAddress[x] : +# 1293| r1293_3(int) = Load[x] : &:r1293_2, m1291_8 +# 1293| m1293_4(int) = Store[#return] : &:r1293_1, r1293_3 #-----| Goto -> Block 1 -# 1295| void returnVoid(int, int) -# 1295| Block 0 -# 1295| v1295_1(void) = EnterFunction : -# 1295| m1295_2(unknown) = AliasedDefinition : -# 1295| m1295_3(unknown) = InitializeNonLocal : -# 1295| m1295_4(unknown) = Chi : total:m1295_2, partial:m1295_3 -# 1295| r1295_5(glval) = VariableAddress[x] : -# 1295| m1295_6(int) = InitializeParameter[x] : &:r1295_5 -# 1295| r1295_7(glval) = VariableAddress[y] : -# 1295| m1295_8(int) = InitializeParameter[y] : &:r1295_7 -# 1296| r1296_1(glval) = FunctionAddress[IntegerOps] : -# 1296| r1296_2(glval) = VariableAddress[x] : -# 1296| r1296_3(int) = Load[x] : &:r1296_2, m1295_6 -# 1296| r1296_4(glval) = VariableAddress[y] : -# 1296| r1296_5(int) = Load[y] : &:r1296_4, m1295_8 -# 1296| v1296_6(void) = Call[IntegerOps] : func:r1296_1, 0:r1296_3, 1:r1296_5 -# 1296| m1296_7(unknown) = ^CallSideEffect : ~m1295_4 -# 1296| m1296_8(unknown) = Chi : total:m1295_4, partial:m1296_7 -# 1296| v1296_9(void) = NoOp : -# 1295| v1295_9(void) = ReturnVoid : -# 1295| v1295_10(void) = AliasedUse : ~m1296_8 -# 1295| v1295_11(void) = ExitFunction : - -# 1299| void gccBinaryConditional(bool, int, long) -# 1299| Block 0 -# 1299| v1299_1(void) = EnterFunction : -# 1299| m1299_2(unknown) = AliasedDefinition : -# 1299| m1299_3(unknown) = InitializeNonLocal : -# 1299| m1299_4(unknown) = Chi : total:m1299_2, partial:m1299_3 -# 1299| r1299_5(glval) = VariableAddress[b] : -# 1299| m1299_6(bool) = InitializeParameter[b] : &:r1299_5 -# 1299| r1299_7(glval) = VariableAddress[x] : -# 1299| m1299_8(int) = InitializeParameter[x] : &:r1299_7 -# 1299| r1299_9(glval) = VariableAddress[y] : -# 1299| m1299_10(long) = InitializeParameter[y] : &:r1299_9 -# 1300| r1300_1(glval) = VariableAddress[z] : -# 1300| r1300_2(glval) = VariableAddress[x] : -# 1300| r1300_3(int) = Load[x] : &:r1300_2, m1299_8 -# 1300| m1300_4(int) = Store[z] : &:r1300_1, r1300_3 -# 1301| r1301_1(glval) = VariableAddress[b] : -# 1301| r1301_2(bool) = Load[b] : &:r1301_1, m1299_6 -# 1301| v1301_3(void) = ConditionalBranch : r1301_2 +# 1295| Block 3 +# 1295| r1295_1(glval) = VariableAddress[#return] : +# 1295| m1295_2(int) = Uninitialized[#return] : &:r1295_1 +#-----| Goto -> Block 1 + +# 1297| void returnVoid(int, int) +# 1297| Block 0 +# 1297| v1297_1(void) = EnterFunction : +# 1297| m1297_2(unknown) = AliasedDefinition : +# 1297| m1297_3(unknown) = InitializeNonLocal : +# 1297| m1297_4(unknown) = Chi : total:m1297_2, partial:m1297_3 +# 1297| r1297_5(glval) = VariableAddress[x] : +# 1297| m1297_6(int) = InitializeParameter[x] : &:r1297_5 +# 1297| r1297_7(glval) = VariableAddress[y] : +# 1297| m1297_8(int) = InitializeParameter[y] : &:r1297_7 +# 1298| r1298_1(glval) = FunctionAddress[IntegerOps] : +# 1298| r1298_2(glval) = VariableAddress[x] : +# 1298| r1298_3(int) = Load[x] : &:r1298_2, m1297_6 +# 1298| r1298_4(glval) = VariableAddress[y] : +# 1298| r1298_5(int) = Load[y] : &:r1298_4, m1297_8 +# 1298| v1298_6(void) = Call[IntegerOps] : func:r1298_1, 0:r1298_3, 1:r1298_5 +# 1298| m1298_7(unknown) = ^CallSideEffect : ~m1297_4 +# 1298| m1298_8(unknown) = Chi : total:m1297_4, partial:m1298_7 +# 1298| v1298_9(void) = NoOp : +# 1297| v1297_9(void) = ReturnVoid : +# 1297| v1297_10(void) = AliasedUse : ~m1298_8 +# 1297| v1297_11(void) = ExitFunction : + +# 1301| void gccBinaryConditional(bool, int, long) +# 1301| Block 0 +# 1301| v1301_1(void) = EnterFunction : +# 1301| m1301_2(unknown) = AliasedDefinition : +# 1301| m1301_3(unknown) = InitializeNonLocal : +# 1301| m1301_4(unknown) = Chi : total:m1301_2, partial:m1301_3 +# 1301| r1301_5(glval) = VariableAddress[b] : +# 1301| m1301_6(bool) = InitializeParameter[b] : &:r1301_5 +# 1301| r1301_7(glval) = VariableAddress[x] : +# 1301| m1301_8(int) = InitializeParameter[x] : &:r1301_7 +# 1301| r1301_9(glval) = VariableAddress[y] : +# 1301| m1301_10(long) = InitializeParameter[y] : &:r1301_9 +# 1302| r1302_1(glval) = VariableAddress[z] : +# 1302| r1302_2(glval) = VariableAddress[x] : +# 1302| r1302_3(int) = Load[x] : &:r1302_2, m1301_8 +# 1302| m1302_4(int) = Store[z] : &:r1302_1, r1302_3 +# 1303| r1303_1(glval) = VariableAddress[b] : +# 1303| r1303_2(bool) = Load[b] : &:r1303_1, m1301_6 +# 1303| v1303_3(void) = ConditionalBranch : r1303_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1301| Block 1 -# 1301| m1301_4(int) = Phi : from 2:m1301_10, from 3:m1301_14 -# 1301| r1301_5(glval) = VariableAddress[#temp1301:9] : -# 1301| r1301_6(int) = Load[#temp1301:9] : &:r1301_5, m1301_4 -# 1301| r1301_7(glval) = VariableAddress[z] : -# 1301| m1301_8(int) = Store[z] : &:r1301_7, r1301_6 -# 1302| r1302_1(glval) = VariableAddress[b] : -# 1302| r1302_2(bool) = Load[b] : &:r1302_1, m1299_6 -# 1302| v1302_3(void) = ConditionalBranch : r1302_2 +# 1303| Block 1 +# 1303| m1303_4(int) = Phi : from 2:m1303_10, from 3:m1303_14 +# 1303| r1303_5(glval) = VariableAddress[#temp1303:9] : +# 1303| r1303_6(int) = Load[#temp1303:9] : &:r1303_5, m1303_4 +# 1303| r1303_7(glval) = VariableAddress[z] : +# 1303| m1303_8(int) = Store[z] : &:r1303_7, r1303_6 +# 1304| r1304_1(glval) = VariableAddress[b] : +# 1304| r1304_2(bool) = Load[b] : &:r1304_1, m1301_6 +# 1304| v1304_3(void) = ConditionalBranch : r1304_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1301| Block 2 -# 1301| r1301_9(glval) = VariableAddress[#temp1301:9] : -# 1301| m1301_10(int) = Store[#temp1301:9] : &:r1301_9, r1301_2 +# 1303| Block 2 +# 1303| r1303_9(glval) = VariableAddress[#temp1303:9] : +# 1303| m1303_10(int) = Store[#temp1303:9] : &:r1303_9, r1303_2 #-----| Goto -> Block 1 -# 1301| Block 3 -# 1301| r1301_11(glval) = VariableAddress[x] : -# 1301| r1301_12(int) = Load[x] : &:r1301_11, m1299_8 -# 1301| r1301_13(glval) = VariableAddress[#temp1301:9] : -# 1301| m1301_14(int) = Store[#temp1301:9] : &:r1301_13, r1301_12 +# 1303| Block 3 +# 1303| r1303_11(glval) = VariableAddress[x] : +# 1303| r1303_12(int) = Load[x] : &:r1303_11, m1301_8 +# 1303| r1303_13(glval) = VariableAddress[#temp1303:9] : +# 1303| m1303_14(int) = Store[#temp1303:9] : &:r1303_13, r1303_12 #-----| Goto -> Block 1 -# 1302| Block 4 -# 1302| m1302_4(long) = Phi : from 5:m1302_11, from 6:m1302_15 -# 1302| r1302_5(glval) = VariableAddress[#temp1302:9] : -# 1302| r1302_6(long) = Load[#temp1302:9] : &:r1302_5, m1302_4 -# 1302| r1302_7(int) = Convert : r1302_6 -# 1302| r1302_8(glval) = VariableAddress[z] : -# 1302| m1302_9(int) = Store[z] : &:r1302_8, r1302_7 -# 1303| r1303_1(glval) = VariableAddress[x] : -# 1303| r1303_2(int) = Load[x] : &:r1303_1, m1299_8 -# 1303| r1303_3(int) = Constant[0] : -# 1303| r1303_4(bool) = CompareNE : r1303_2, r1303_3 -# 1303| v1303_5(void) = ConditionalBranch : r1303_4 +# 1304| Block 4 +# 1304| m1304_4(long) = Phi : from 5:m1304_11, from 6:m1304_15 +# 1304| r1304_5(glval) = VariableAddress[#temp1304:9] : +# 1304| r1304_6(long) = Load[#temp1304:9] : &:r1304_5, m1304_4 +# 1304| r1304_7(int) = Convert : r1304_6 +# 1304| r1304_8(glval) = VariableAddress[z] : +# 1304| m1304_9(int) = Store[z] : &:r1304_8, r1304_7 +# 1305| r1305_1(glval) = VariableAddress[x] : +# 1305| r1305_2(int) = Load[x] : &:r1305_1, m1301_8 +# 1305| r1305_3(int) = Constant[0] : +# 1305| r1305_4(bool) = CompareNE : r1305_2, r1305_3 +# 1305| v1305_5(void) = ConditionalBranch : r1305_4 #-----| False -> Block 9 #-----| True -> Block 8 -# 1302| Block 5 -# 1302| r1302_10(glval) = VariableAddress[#temp1302:9] : -# 1302| m1302_11(long) = Store[#temp1302:9] : &:r1302_10, r1302_2 +# 1304| Block 5 +# 1304| r1304_10(glval) = VariableAddress[#temp1304:9] : +# 1304| m1304_11(long) = Store[#temp1304:9] : &:r1304_10, r1304_2 #-----| Goto -> Block 4 -# 1302| Block 6 -# 1302| r1302_12(glval) = VariableAddress[y] : -# 1302| r1302_13(long) = Load[y] : &:r1302_12, m1299_10 -# 1302| r1302_14(glval) = VariableAddress[#temp1302:9] : -# 1302| m1302_15(long) = Store[#temp1302:9] : &:r1302_14, r1302_13 +# 1304| Block 6 +# 1304| r1304_12(glval) = VariableAddress[y] : +# 1304| r1304_13(long) = Load[y] : &:r1304_12, m1301_10 +# 1304| r1304_14(glval) = VariableAddress[#temp1304:9] : +# 1304| m1304_15(long) = Store[#temp1304:9] : &:r1304_14, r1304_13 #-----| Goto -> Block 4 -# 1303| Block 7 -# 1303| m1303_6(int) = Phi : from 8:m1303_12, from 9:m1303_16 -# 1303| r1303_7(glval) = VariableAddress[#temp1303:9] : -# 1303| r1303_8(int) = Load[#temp1303:9] : &:r1303_7, m1303_6 -# 1303| r1303_9(glval) = VariableAddress[z] : -# 1303| m1303_10(int) = Store[z] : &:r1303_9, r1303_8 -# 1304| r1304_1(glval) = VariableAddress[x] : -# 1304| r1304_2(int) = Load[x] : &:r1304_1, m1299_8 -# 1304| r1304_3(int) = Constant[0] : -# 1304| r1304_4(bool) = CompareNE : r1304_2, r1304_3 -# 1304| v1304_5(void) = ConditionalBranch : r1304_4 +# 1305| Block 7 +# 1305| m1305_6(int) = Phi : from 8:m1305_12, from 9:m1305_16 +# 1305| r1305_7(glval) = VariableAddress[#temp1305:9] : +# 1305| r1305_8(int) = Load[#temp1305:9] : &:r1305_7, m1305_6 +# 1305| r1305_9(glval) = VariableAddress[z] : +# 1305| m1305_10(int) = Store[z] : &:r1305_9, r1305_8 +# 1306| r1306_1(glval) = VariableAddress[x] : +# 1306| r1306_2(int) = Load[x] : &:r1306_1, m1301_8 +# 1306| r1306_3(int) = Constant[0] : +# 1306| r1306_4(bool) = CompareNE : r1306_2, r1306_3 +# 1306| v1306_5(void) = ConditionalBranch : r1306_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 1303| Block 8 -# 1303| r1303_11(glval) = VariableAddress[#temp1303:9] : -# 1303| m1303_12(int) = Store[#temp1303:9] : &:r1303_11, r1303_2 +# 1305| Block 8 +# 1305| r1305_11(glval) = VariableAddress[#temp1305:9] : +# 1305| m1305_12(int) = Store[#temp1305:9] : &:r1305_11, r1305_2 #-----| Goto -> Block 7 -# 1303| Block 9 -# 1303| r1303_13(glval) = VariableAddress[x] : -# 1303| r1303_14(int) = Load[x] : &:r1303_13, m1299_8 -# 1303| r1303_15(glval) = VariableAddress[#temp1303:9] : -# 1303| m1303_16(int) = Store[#temp1303:9] : &:r1303_15, r1303_14 +# 1305| Block 9 +# 1305| r1305_13(glval) = VariableAddress[x] : +# 1305| r1305_14(int) = Load[x] : &:r1305_13, m1301_8 +# 1305| r1305_15(glval) = VariableAddress[#temp1305:9] : +# 1305| m1305_16(int) = Store[#temp1305:9] : &:r1305_15, r1305_14 #-----| Goto -> Block 7 -# 1304| Block 10 -# 1304| m1304_6(long) = Phi : from 11:m1304_13, from 12:m1304_17 -# 1304| r1304_7(glval) = VariableAddress[#temp1304:9] : -# 1304| r1304_8(long) = Load[#temp1304:9] : &:r1304_7, m1304_6 -# 1304| r1304_9(int) = Convert : r1304_8 -# 1304| r1304_10(glval) = VariableAddress[z] : -# 1304| m1304_11(int) = Store[z] : &:r1304_10, r1304_9 -# 1305| r1305_1(glval) = VariableAddress[y] : -# 1305| r1305_2(long) = Load[y] : &:r1305_1, m1299_10 -# 1305| r1305_3(long) = Constant[0] : -# 1305| r1305_4(bool) = CompareNE : r1305_2, r1305_3 -# 1305| v1305_5(void) = ConditionalBranch : r1305_4 +# 1306| Block 10 +# 1306| m1306_6(long) = Phi : from 11:m1306_13, from 12:m1306_17 +# 1306| r1306_7(glval) = VariableAddress[#temp1306:9] : +# 1306| r1306_8(long) = Load[#temp1306:9] : &:r1306_7, m1306_6 +# 1306| r1306_9(int) = Convert : r1306_8 +# 1306| r1306_10(glval) = VariableAddress[z] : +# 1306| m1306_11(int) = Store[z] : &:r1306_10, r1306_9 +# 1307| r1307_1(glval) = VariableAddress[y] : +# 1307| r1307_2(long) = Load[y] : &:r1307_1, m1301_10 +# 1307| r1307_3(long) = Constant[0] : +# 1307| r1307_4(bool) = CompareNE : r1307_2, r1307_3 +# 1307| v1307_5(void) = ConditionalBranch : r1307_4 #-----| False -> Block 15 #-----| True -> Block 14 -# 1304| Block 11 -# 1304| r1304_12(glval) = VariableAddress[#temp1304:9] : -# 1304| m1304_13(long) = Store[#temp1304:9] : &:r1304_12, r1304_2 +# 1306| Block 11 +# 1306| r1306_12(glval) = VariableAddress[#temp1306:9] : +# 1306| m1306_13(long) = Store[#temp1306:9] : &:r1306_12, r1306_2 #-----| Goto -> Block 10 -# 1304| Block 12 -# 1304| r1304_14(glval) = VariableAddress[y] : -# 1304| r1304_15(long) = Load[y] : &:r1304_14, m1299_10 -# 1304| r1304_16(glval) = VariableAddress[#temp1304:9] : -# 1304| m1304_17(long) = Store[#temp1304:9] : &:r1304_16, r1304_15 +# 1306| Block 12 +# 1306| r1306_14(glval) = VariableAddress[y] : +# 1306| r1306_15(long) = Load[y] : &:r1306_14, m1301_10 +# 1306| r1306_16(glval) = VariableAddress[#temp1306:9] : +# 1306| m1306_17(long) = Store[#temp1306:9] : &:r1306_16, r1306_15 #-----| Goto -> Block 10 -# 1305| Block 13 -# 1305| m1305_6(long) = Phi : from 14:m1305_13, from 15:m1305_18 -# 1305| r1305_7(glval) = VariableAddress[#temp1305:9] : -# 1305| r1305_8(long) = Load[#temp1305:9] : &:r1305_7, m1305_6 -# 1305| r1305_9(int) = Convert : r1305_8 -# 1305| r1305_10(glval) = VariableAddress[z] : -# 1305| m1305_11(int) = Store[z] : &:r1305_10, r1305_9 -# 1306| r1306_1(glval) = VariableAddress[y] : -# 1306| r1306_2(long) = Load[y] : &:r1306_1, m1299_10 -# 1306| r1306_3(long) = Constant[0] : -# 1306| r1306_4(bool) = CompareNE : r1306_2, r1306_3 -# 1306| v1306_5(void) = ConditionalBranch : r1306_4 +# 1307| Block 13 +# 1307| m1307_6(long) = Phi : from 14:m1307_13, from 15:m1307_18 +# 1307| r1307_7(glval) = VariableAddress[#temp1307:9] : +# 1307| r1307_8(long) = Load[#temp1307:9] : &:r1307_7, m1307_6 +# 1307| r1307_9(int) = Convert : r1307_8 +# 1307| r1307_10(glval) = VariableAddress[z] : +# 1307| m1307_11(int) = Store[z] : &:r1307_10, r1307_9 +# 1308| r1308_1(glval) = VariableAddress[y] : +# 1308| r1308_2(long) = Load[y] : &:r1308_1, m1301_10 +# 1308| r1308_3(long) = Constant[0] : +# 1308| r1308_4(bool) = CompareNE : r1308_2, r1308_3 +# 1308| v1308_5(void) = ConditionalBranch : r1308_4 #-----| False -> Block 18 #-----| True -> Block 17 -# 1305| Block 14 -# 1305| r1305_12(glval) = VariableAddress[#temp1305:9] : -# 1305| m1305_13(long) = Store[#temp1305:9] : &:r1305_12, r1305_2 +# 1307| Block 14 +# 1307| r1307_12(glval) = VariableAddress[#temp1307:9] : +# 1307| m1307_13(long) = Store[#temp1307:9] : &:r1307_12, r1307_2 #-----| Goto -> Block 13 -# 1305| Block 15 -# 1305| r1305_14(glval) = VariableAddress[x] : -# 1305| r1305_15(int) = Load[x] : &:r1305_14, m1299_8 -# 1305| r1305_16(long) = Convert : r1305_15 -# 1305| r1305_17(glval) = VariableAddress[#temp1305:9] : -# 1305| m1305_18(long) = Store[#temp1305:9] : &:r1305_17, r1305_16 +# 1307| Block 15 +# 1307| r1307_14(glval) = VariableAddress[x] : +# 1307| r1307_15(int) = Load[x] : &:r1307_14, m1301_8 +# 1307| r1307_16(long) = Convert : r1307_15 +# 1307| r1307_17(glval) = VariableAddress[#temp1307:9] : +# 1307| m1307_18(long) = Store[#temp1307:9] : &:r1307_17, r1307_16 #-----| Goto -> Block 13 -# 1306| Block 16 -# 1306| m1306_6(long) = Phi : from 17:m1306_13, from 18:m1306_17 -# 1306| r1306_7(glval) = VariableAddress[#temp1306:9] : -# 1306| r1306_8(long) = Load[#temp1306:9] : &:r1306_7, m1306_6 -# 1306| r1306_9(int) = Convert : r1306_8 -# 1306| r1306_10(glval) = VariableAddress[z] : -# 1306| m1306_11(int) = Store[z] : &:r1306_10, r1306_9 -# 1308| r1308_1(glval) = VariableAddress[x] : -# 1308| r1308_2(int) = Load[x] : &:r1308_1, m1299_8 -# 1308| r1308_3(int) = Constant[0] : -# 1308| r1308_4(bool) = CompareNE : r1308_2, r1308_3 -# 1308| v1308_5(void) = ConditionalBranch : r1308_4 +# 1308| Block 16 +# 1308| m1308_6(long) = Phi : from 17:m1308_13, from 18:m1308_17 +# 1308| r1308_7(glval) = VariableAddress[#temp1308:9] : +# 1308| r1308_8(long) = Load[#temp1308:9] : &:r1308_7, m1308_6 +# 1308| r1308_9(int) = Convert : r1308_8 +# 1308| r1308_10(glval) = VariableAddress[z] : +# 1308| m1308_11(int) = Store[z] : &:r1308_10, r1308_9 +# 1310| r1310_1(glval) = VariableAddress[x] : +# 1310| r1310_2(int) = Load[x] : &:r1310_1, m1301_8 +# 1310| r1310_3(int) = Constant[0] : +# 1310| r1310_4(bool) = CompareNE : r1310_2, r1310_3 +# 1310| v1310_5(void) = ConditionalBranch : r1310_4 #-----| False -> Block 25 #-----| True -> Block 24 -# 1306| Block 17 -# 1306| r1306_12(glval) = VariableAddress[#temp1306:9] : -# 1306| m1306_13(long) = Store[#temp1306:9] : &:r1306_12, r1306_2 +# 1308| Block 17 +# 1308| r1308_12(glval) = VariableAddress[#temp1308:9] : +# 1308| m1308_13(long) = Store[#temp1308:9] : &:r1308_12, r1308_2 #-----| Goto -> Block 16 -# 1306| Block 18 -# 1306| r1306_14(glval) = VariableAddress[y] : -# 1306| r1306_15(long) = Load[y] : &:r1306_14, m1299_10 -# 1306| r1306_16(glval) = VariableAddress[#temp1306:9] : -# 1306| m1306_17(long) = Store[#temp1306:9] : &:r1306_16, r1306_15 +# 1308| Block 18 +# 1308| r1308_14(glval) = VariableAddress[y] : +# 1308| r1308_15(long) = Load[y] : &:r1308_14, m1301_10 +# 1308| r1308_16(glval) = VariableAddress[#temp1308:9] : +# 1308| m1308_17(long) = Store[#temp1308:9] : &:r1308_16, r1308_15 #-----| Goto -> Block 16 -# 1308| Block 19 -# 1308| m1308_6(int) = Phi : from 20:m1308_12, from 26:m1308_34 -# 1308| r1308_7(glval) = VariableAddress[#temp1308:9] : -# 1308| r1308_8(int) = Load[#temp1308:9] : &:r1308_7, m1308_6 -# 1308| r1308_9(glval) = VariableAddress[z] : -# 1308| m1308_10(int) = Store[z] : &:r1308_9, r1308_8 -# 1309| v1309_1(void) = NoOp : -# 1299| v1299_11(void) = ReturnVoid : -# 1299| v1299_12(void) = AliasedUse : m1299_3 -# 1299| v1299_13(void) = ExitFunction : - -# 1308| Block 20 -# 1308| r1308_11(glval) = VariableAddress[#temp1308:9] : -# 1308| m1308_12(int) = Store[#temp1308:9] : &:r1308_11, r1308_18 +# 1310| Block 19 +# 1310| m1310_6(int) = Phi : from 20:m1310_12, from 26:m1310_34 +# 1310| r1310_7(glval) = VariableAddress[#temp1310:9] : +# 1310| r1310_8(int) = Load[#temp1310:9] : &:r1310_7, m1310_6 +# 1310| r1310_9(glval) = VariableAddress[z] : +# 1310| m1310_10(int) = Store[z] : &:r1310_9, r1310_8 +# 1311| v1311_1(void) = NoOp : +# 1301| v1301_11(void) = ReturnVoid : +# 1301| v1301_12(void) = AliasedUse : m1301_3 +# 1301| v1301_13(void) = ExitFunction : + +# 1310| Block 20 +# 1310| r1310_11(glval) = VariableAddress[#temp1310:9] : +# 1310| m1310_12(int) = Store[#temp1310:9] : &:r1310_11, r1310_18 #-----| Goto -> Block 19 -# 1308| Block 21 -# 1308| r1308_13(glval) = VariableAddress[#temp1308:10] : -# 1308| r1308_14(bool) = Constant[0] : -# 1308| m1308_15(bool) = Store[#temp1308:10] : &:r1308_13, r1308_14 +# 1310| Block 21 +# 1310| r1310_13(glval) = VariableAddress[#temp1310:10] : +# 1310| r1310_14(bool) = Constant[0] : +# 1310| m1310_15(bool) = Store[#temp1310:10] : &:r1310_13, r1310_14 #-----| Goto -> Block 22 -# 1308| Block 22 -# 1308| m1308_16(bool) = Phi : from 21:m1308_15, from 23:m1308_22 -# 1308| r1308_17(glval) = VariableAddress[#temp1308:10] : -# 1308| r1308_18(bool) = Load[#temp1308:10] : &:r1308_17, m1308_16 -# 1308| v1308_19(void) = ConditionalBranch : r1308_18 +# 1310| Block 22 +# 1310| m1310_16(bool) = Phi : from 21:m1310_15, from 23:m1310_22 +# 1310| r1310_17(glval) = VariableAddress[#temp1310:10] : +# 1310| r1310_18(bool) = Load[#temp1310:10] : &:r1310_17, m1310_16 +# 1310| v1310_19(void) = ConditionalBranch : r1310_18 #-----| False -> Block 26 #-----| True -> Block 20 -# 1308| Block 23 -# 1308| r1308_20(glval) = VariableAddress[#temp1308:10] : -# 1308| r1308_21(bool) = Constant[1] : -# 1308| m1308_22(bool) = Store[#temp1308:10] : &:r1308_20, r1308_21 +# 1310| Block 23 +# 1310| r1310_20(glval) = VariableAddress[#temp1310:10] : +# 1310| r1310_21(bool) = Constant[1] : +# 1310| m1310_22(bool) = Store[#temp1310:10] : &:r1310_20, r1310_21 #-----| Goto -> Block 22 -# 1308| Block 24 -# 1308| r1308_23(glval) = VariableAddress[b] : -# 1308| r1308_24(bool) = Load[b] : &:r1308_23, m1299_6 -# 1308| v1308_25(void) = ConditionalBranch : r1308_24 +# 1310| Block 24 +# 1310| r1310_23(glval) = VariableAddress[b] : +# 1310| r1310_24(bool) = Load[b] : &:r1310_23, m1301_6 +# 1310| v1310_25(void) = ConditionalBranch : r1310_24 #-----| False -> Block 25 #-----| True -> Block 23 -# 1308| Block 25 -# 1308| r1308_26(glval) = VariableAddress[y] : -# 1308| r1308_27(long) = Load[y] : &:r1308_26, m1299_10 -# 1308| r1308_28(long) = Constant[0] : -# 1308| r1308_29(bool) = CompareNE : r1308_27, r1308_28 -# 1308| v1308_30(void) = ConditionalBranch : r1308_29 +# 1310| Block 25 +# 1310| r1310_26(glval) = VariableAddress[y] : +# 1310| r1310_27(long) = Load[y] : &:r1310_26, m1301_10 +# 1310| r1310_28(long) = Constant[0] : +# 1310| r1310_29(bool) = CompareNE : r1310_27, r1310_28 +# 1310| v1310_30(void) = ConditionalBranch : r1310_29 #-----| False -> Block 21 #-----| True -> Block 23 -# 1308| Block 26 -# 1308| r1308_31(glval) = VariableAddress[x] : -# 1308| r1308_32(int) = Load[x] : &:r1308_31, m1299_8 -# 1308| r1308_33(glval) = VariableAddress[#temp1308:9] : -# 1308| m1308_34(int) = Store[#temp1308:9] : &:r1308_33, r1308_32 +# 1310| Block 26 +# 1310| r1310_31(glval) = VariableAddress[x] : +# 1310| r1310_32(int) = Load[x] : &:r1310_31, m1301_8 +# 1310| r1310_33(glval) = VariableAddress[#temp1310:9] : +# 1310| m1310_34(int) = Store[#temp1310:9] : &:r1310_33, r1310_32 #-----| Goto -> Block 19 -# 1314| int shortCircuitConditional(int, int) -# 1314| Block 0 -# 1314| v1314_1(void) = EnterFunction : -# 1314| m1314_2(unknown) = AliasedDefinition : -# 1314| m1314_3(unknown) = InitializeNonLocal : -# 1314| m1314_4(unknown) = Chi : total:m1314_2, partial:m1314_3 -# 1314| r1314_5(glval) = VariableAddress[x] : -# 1314| m1314_6(int) = InitializeParameter[x] : &:r1314_5 -# 1314| r1314_7(glval) = VariableAddress[y] : -# 1314| m1314_8(int) = InitializeParameter[y] : &:r1314_7 -# 1315| r1315_1(glval) = VariableAddress[#return] : -# 1315| r1315_2(glval) = FunctionAddress[predicateA] : -# 1315| r1315_3(bool) = Call[predicateA] : func:r1315_2 -# 1315| m1315_4(unknown) = ^CallSideEffect : ~m1314_4 -# 1315| m1315_5(unknown) = Chi : total:m1314_4, partial:m1315_4 -# 1315| v1315_6(void) = ConditionalBranch : r1315_3 +# 1316| int shortCircuitConditional(int, int) +# 1316| Block 0 +# 1316| v1316_1(void) = EnterFunction : +# 1316| m1316_2(unknown) = AliasedDefinition : +# 1316| m1316_3(unknown) = InitializeNonLocal : +# 1316| m1316_4(unknown) = Chi : total:m1316_2, partial:m1316_3 +# 1316| r1316_5(glval) = VariableAddress[x] : +# 1316| m1316_6(int) = InitializeParameter[x] : &:r1316_5 +# 1316| r1316_7(glval) = VariableAddress[y] : +# 1316| m1316_8(int) = InitializeParameter[y] : &:r1316_7 +# 1317| r1317_1(glval) = VariableAddress[#return] : +# 1317| r1317_2(glval) = FunctionAddress[predicateA] : +# 1317| r1317_3(bool) = Call[predicateA] : func:r1317_2 +# 1317| m1317_4(unknown) = ^CallSideEffect : ~m1316_4 +# 1317| m1317_5(unknown) = Chi : total:m1316_4, partial:m1317_4 +# 1317| v1317_6(void) = ConditionalBranch : r1317_3 #-----| False -> Block 4 #-----| True -> Block 2 -# 1315| Block 1 -# 1315| m1315_7(unknown) = Phi : from 3:~m1315_15, from 4:~m1315_21 -# 1315| m1315_8(int) = Phi : from 3:m1315_20, from 4:m1315_25 -# 1315| r1315_9(glval) = VariableAddress[#temp1315:12] : -# 1315| r1315_10(int) = Load[#temp1315:12] : &:r1315_9, m1315_8 -# 1315| m1315_11(int) = Store[#return] : &:r1315_1, r1315_10 -# 1314| r1314_9(glval) = VariableAddress[#return] : -# 1314| v1314_10(void) = ReturnValue : &:r1314_9, m1315_11 -# 1314| v1314_11(void) = AliasedUse : ~m1315_7 -# 1314| v1314_12(void) = ExitFunction : - -# 1315| Block 2 -# 1315| r1315_12(glval) = FunctionAddress[predicateB] : -# 1315| r1315_13(bool) = Call[predicateB] : func:r1315_12 -# 1315| m1315_14(unknown) = ^CallSideEffect : ~m1315_5 -# 1315| m1315_15(unknown) = Chi : total:m1315_5, partial:m1315_14 -# 1315| v1315_16(void) = ConditionalBranch : r1315_13 +# 1317| Block 1 +# 1317| m1317_7(unknown) = Phi : from 3:~m1317_15, from 4:~m1317_21 +# 1317| m1317_8(int) = Phi : from 3:m1317_20, from 4:m1317_25 +# 1317| r1317_9(glval) = VariableAddress[#temp1317:12] : +# 1317| r1317_10(int) = Load[#temp1317:12] : &:r1317_9, m1317_8 +# 1317| m1317_11(int) = Store[#return] : &:r1317_1, r1317_10 +# 1316| r1316_9(glval) = VariableAddress[#return] : +# 1316| v1316_10(void) = ReturnValue : &:r1316_9, m1317_11 +# 1316| v1316_11(void) = AliasedUse : ~m1317_7 +# 1316| v1316_12(void) = ExitFunction : + +# 1317| Block 2 +# 1317| r1317_12(glval) = FunctionAddress[predicateB] : +# 1317| r1317_13(bool) = Call[predicateB] : func:r1317_12 +# 1317| m1317_14(unknown) = ^CallSideEffect : ~m1317_5 +# 1317| m1317_15(unknown) = Chi : total:m1317_5, partial:m1317_14 +# 1317| v1317_16(void) = ConditionalBranch : r1317_13 #-----| False -> Block 4 #-----| True -> Block 3 -# 1315| Block 3 -# 1315| r1315_17(glval) = VariableAddress[x] : -# 1315| r1315_18(int) = Load[x] : &:r1315_17, m1314_6 -# 1315| r1315_19(glval) = VariableAddress[#temp1315:12] : -# 1315| m1315_20(int) = Store[#temp1315:12] : &:r1315_19, r1315_18 +# 1317| Block 3 +# 1317| r1317_17(glval) = VariableAddress[x] : +# 1317| r1317_18(int) = Load[x] : &:r1317_17, m1316_6 +# 1317| r1317_19(glval) = VariableAddress[#temp1317:12] : +# 1317| m1317_20(int) = Store[#temp1317:12] : &:r1317_19, r1317_18 #-----| Goto -> Block 1 -# 1315| Block 4 -# 1315| m1315_21(unknown) = Phi : from 0:~m1315_5, from 2:~m1315_15 -# 1315| r1315_22(glval) = VariableAddress[y] : -# 1315| r1315_23(int) = Load[y] : &:r1315_22, m1314_8 -# 1315| r1315_24(glval) = VariableAddress[#temp1315:12] : -# 1315| m1315_25(int) = Store[#temp1315:12] : &:r1315_24, r1315_23 +# 1317| Block 4 +# 1317| m1317_21(unknown) = Phi : from 0:~m1317_5, from 2:~m1317_15 +# 1317| r1317_22(glval) = VariableAddress[y] : +# 1317| r1317_23(int) = Load[y] : &:r1317_22, m1316_8 +# 1317| r1317_24(glval) = VariableAddress[#temp1317:12] : +# 1317| m1317_25(int) = Store[#temp1317:12] : &:r1317_24, r1317_23 #-----| Goto -> Block 1 -# 1320| void f(int*) -# 1320| Block 0 -# 1320| v1320_1(void) = EnterFunction : -# 1320| m1320_2(unknown) = AliasedDefinition : -# 1320| m1320_3(unknown) = InitializeNonLocal : -# 1320| m1320_4(unknown) = Chi : total:m1320_2, partial:m1320_3 -# 1320| r1320_5(glval) = VariableAddress[p] : -# 1320| m1320_6(int *) = InitializeParameter[p] : &:r1320_5 -# 1320| r1320_7(int *) = Load[p] : &:r1320_5, m1320_6 -# 1320| m1320_8(unknown) = InitializeIndirection[p] : &:r1320_7 -# 1322| r1322_1(glval) = FunctionAddress[operator new] : -# 1322| r1322_2(unsigned long) = Constant[4] : -# 1322| r1322_3(glval) = VariableAddress[p] : -# 1322| r1322_4(int *) = Load[p] : &:r1322_3, m1320_6 -# 1322| r1322_5(void *) = Convert : r1322_4 -# 1322| r1322_6(void *) = Call[operator new] : func:r1322_1, 0:r1322_2, 1:r1322_5 -# 1322| m1322_7(unknown) = ^CallSideEffect : ~m1320_4 -# 1322| m1322_8(unknown) = Chi : total:m1320_4, partial:m1322_7 -# 1322| m1322_9(unknown) = ^InitializeDynamicAllocation : &:r1322_6 -# 1322| r1322_10(int *) = Convert : r1322_6 -# 1323| v1323_1(void) = NoOp : -# 1320| v1320_9(void) = ReturnIndirection[p] : &:r1320_7, m1320_8 -# 1320| v1320_10(void) = ReturnVoid : -# 1320| v1320_11(void) = AliasedUse : ~m1322_8 -# 1320| v1320_12(void) = ExitFunction : - -# 1326| Point defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| m1326_2(unknown) = AliasedDefinition : -# 1326| m1326_3(unknown) = InitializeNonLocal : -# 1326| m1326_4(unknown) = Chi : total:m1326_2, partial:m1326_3 -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| r1327_2(Point) = Constant[0] : -# 1327| m1327_3(Point) = Store[#return] : &:r1327_1, r1327_2 -# 1326| r1326_5(glval) = VariableAddress[#return] : -# 1326| v1326_6(void) = ReturnValue : &:r1326_5, m1327_3 -# 1326| v1326_7(void) = AliasedUse : m1326_3 -# 1326| v1326_8(void) = ExitFunction : - -# 1326| String defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| m1326_2(unknown) = AliasedDefinition : -# 1326| m1326_3(unknown) = InitializeNonLocal : -# 1326| m1326_4(unknown) = Chi : total:m1326_2, partial:m1326_3 -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| m1327_2(String) = Uninitialized[#return] : &:r1327_1 -# 1327| r1327_3(glval) = FunctionAddress[String] : -# 1327| v1327_4(void) = Call[String] : func:r1327_3, this:r1327_1 -# 1327| m1327_5(unknown) = ^CallSideEffect : ~m1326_4 -# 1327| m1327_6(unknown) = Chi : total:m1326_4, partial:m1327_5 -# 1327| m1327_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1327_1 -# 1327| m1327_8(String) = Chi : total:m1327_2, partial:m1327_7 -# 1326| r1326_5(glval) = VariableAddress[#return] : -# 1326| v1326_6(void) = ReturnValue : &:r1326_5, m1327_8 -# 1326| v1326_7(void) = AliasedUse : ~m1327_6 -# 1326| v1326_8(void) = ExitFunction : - -# 1326| copy_constructor defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| m1326_2(unknown) = AliasedDefinition : -# 1326| m1326_3(unknown) = InitializeNonLocal : -# 1326| m1326_4(unknown) = Chi : total:m1326_2, partial:m1326_3 -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| m1327_2(copy_constructor) = Uninitialized[#return] : &:r1327_1 -# 1327| r1327_3(glval) = FunctionAddress[copy_constructor] : -# 1327| v1327_4(void) = Call[copy_constructor] : func:r1327_3, this:r1327_1 -# 1327| m1327_5(unknown) = ^CallSideEffect : ~m1326_4 -# 1327| m1327_6(unknown) = Chi : total:m1326_4, partial:m1327_5 -# 1327| m1327_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1327_1 -# 1327| m1327_8(copy_constructor) = Chi : total:m1327_2, partial:m1327_7 -# 1326| r1326_5(glval) = VariableAddress[#return] : -# 1326| v1326_6(void) = ReturnValue : &:r1326_5, m1327_8 -# 1326| v1326_7(void) = AliasedUse : ~m1327_6 -# 1326| v1326_8(void) = ExitFunction : - -# 1326| destructor_only defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| m1326_2(unknown) = AliasedDefinition : -# 1326| m1326_3(unknown) = InitializeNonLocal : -# 1326| m1326_4(unknown) = Chi : total:m1326_2, partial:m1326_3 -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| r1327_2(destructor_only) = Constant[0] : -# 1327| m1327_3(destructor_only) = Store[#return] : &:r1327_1, r1327_2 -# 1326| r1326_5(glval) = VariableAddress[#return] : -# 1326| v1326_6(void) = ReturnValue : &:r1326_5, m1327_3 -# 1326| v1326_7(void) = AliasedUse : m1326_3 -# 1326| v1326_8(void) = ExitFunction : - -# 1365| void temporary_string() -# 1365| Block 0 -# 1365| v1365_1(void) = EnterFunction : -# 1365| m1365_2(unknown) = AliasedDefinition : -# 1365| m1365_3(unknown) = InitializeNonLocal : -# 1365| m1365_4(unknown) = Chi : total:m1365_2, partial:m1365_3 -# 1366| r1366_1(glval) = VariableAddress[s] : -# 1366| r1366_2(glval) = FunctionAddress[returnValue] : -# 1366| r1366_3(String) = Call[returnValue] : func:r1366_2 -# 1366| m1366_4(unknown) = ^CallSideEffect : ~m1365_4 -# 1366| m1366_5(unknown) = Chi : total:m1365_4, partial:m1366_4 -# 1366| m1366_6(String) = Store[s] : &:r1366_1, r1366_3 -# 1367| r1367_1(glval) = VariableAddress[rs] : -# 1367| r1367_2(glval) = VariableAddress[#temp1367:24] : -# 1367| r1367_3(glval) = FunctionAddress[returnValue] : -# 1367| r1367_4(String) = Call[returnValue] : func:r1367_3 -# 1367| m1367_5(unknown) = ^CallSideEffect : ~m1366_5 -# 1367| m1367_6(unknown) = Chi : total:m1366_5, partial:m1367_5 -# 1367| m1367_7(String) = Store[#temp1367:24] : &:r1367_2, r1367_4 -# 1367| r1367_8(glval) = Convert : r1367_2 -# 1367| r1367_9(String &) = CopyValue : r1367_8 -# 1367| m1367_10(String &) = Store[rs] : &:r1367_1, r1367_9 -# 1369| r1369_1(glval) = FunctionAddress[acceptRef] : -# 1369| r1369_2(glval) = VariableAddress[s] : -# 1369| r1369_3(glval) = Convert : r1369_2 -# 1369| r1369_4(String &) = CopyValue : r1369_3 -# 1369| v1369_5(void) = Call[acceptRef] : func:r1369_1, 0:r1369_4 -# 1369| m1369_6(unknown) = ^CallSideEffect : ~m1367_6 -# 1369| m1369_7(unknown) = Chi : total:m1367_6, partial:m1369_6 -# 1369| v1369_8(void) = ^BufferReadSideEffect[0] : &:r1369_4, ~m1366_6 -# 1370| r1370_1(glval) = FunctionAddress[acceptRef] : -# 1370| r1370_2(glval) = VariableAddress[#temp1370:23] : -# 1370| m1370_3(String) = Uninitialized[#temp1370:23] : &:r1370_2 -# 1370| r1370_4(glval) = FunctionAddress[String] : -# 1370| r1370_5(glval) = StringConstant["foo"] : -# 1370| r1370_6(char *) = Convert : r1370_5 -# 1370| v1370_7(void) = Call[String] : func:r1370_4, this:r1370_2, 0:r1370_6 -# 1370| m1370_8(unknown) = ^CallSideEffect : ~m1369_7 -# 1370| m1370_9(unknown) = Chi : total:m1369_7, partial:m1370_8 -# 1370| v1370_10(void) = ^BufferReadSideEffect[0] : &:r1370_6, ~m1365_3 -# 1370| m1370_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1370_2 -# 1370| m1370_12(String) = Chi : total:m1370_3, partial:m1370_11 -# 1370| r1370_13(String &) = CopyValue : r1370_2 -# 1370| v1370_14(void) = Call[acceptRef] : func:r1370_1, 0:r1370_13 -# 1370| m1370_15(unknown) = ^CallSideEffect : ~m1370_9 -# 1370| m1370_16(unknown) = Chi : total:m1370_9, partial:m1370_15 -# 1370| v1370_17(void) = ^BufferReadSideEffect[0] : &:r1370_13, ~m1370_12 -# 1371| r1371_1(glval) = FunctionAddress[acceptValue] : -# 1371| r1371_2(glval) = VariableAddress[#temp1371:17] : -# 1371| m1371_3(String) = Uninitialized[#temp1371:17] : &:r1371_2 -# 1371| r1371_4(glval) = FunctionAddress[String] : -# 1371| r1371_5(glval) = VariableAddress[s] : -# 1371| r1371_6(glval) = Convert : r1371_5 -# 1371| r1371_7(String &) = CopyValue : r1371_6 -# 1371| v1371_8(void) = Call[String] : func:r1371_4, this:r1371_2, 0:r1371_7 -# 1371| m1371_9(unknown) = ^CallSideEffect : ~m1370_16 -# 1371| m1371_10(unknown) = Chi : total:m1370_16, partial:m1371_9 -# 1371| v1371_11(void) = ^BufferReadSideEffect[0] : &:r1371_7, ~m1366_6 -# 1371| m1371_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r1371_2 -# 1371| m1371_13(String) = Chi : total:m1371_3, partial:m1371_12 -# 1371| r1371_14(String) = Load[#temp1371:17] : &:r1371_2, m1371_13 -# 1371| v1371_15(void) = Call[acceptValue] : func:r1371_1, 0:r1371_14 -# 1371| m1371_16(unknown) = ^CallSideEffect : ~m1371_10 -# 1371| m1371_17(unknown) = Chi : total:m1371_10, partial:m1371_16 -# 1372| r1372_1(glval) = FunctionAddress[acceptValue] : -# 1372| r1372_2(glval) = VariableAddress[#temp1372:25] : -# 1372| m1372_3(String) = Uninitialized[#temp1372:25] : &:r1372_2 +# 1322| void f(int*) +# 1322| Block 0 +# 1322| v1322_1(void) = EnterFunction : +# 1322| m1322_2(unknown) = AliasedDefinition : +# 1322| m1322_3(unknown) = InitializeNonLocal : +# 1322| m1322_4(unknown) = Chi : total:m1322_2, partial:m1322_3 +# 1322| r1322_5(glval) = VariableAddress[p] : +# 1322| m1322_6(int *) = InitializeParameter[p] : &:r1322_5 +# 1322| r1322_7(int *) = Load[p] : &:r1322_5, m1322_6 +# 1322| m1322_8(unknown) = InitializeIndirection[p] : &:r1322_7 +# 1324| r1324_1(glval) = FunctionAddress[operator new] : +# 1324| r1324_2(unsigned long) = Constant[4] : +# 1324| r1324_3(glval) = VariableAddress[p] : +# 1324| r1324_4(int *) = Load[p] : &:r1324_3, m1322_6 +# 1324| r1324_5(void *) = Convert : r1324_4 +# 1324| r1324_6(void *) = Call[operator new] : func:r1324_1, 0:r1324_2, 1:r1324_5 +# 1324| m1324_7(unknown) = ^CallSideEffect : ~m1322_4 +# 1324| m1324_8(unknown) = Chi : total:m1322_4, partial:m1324_7 +# 1324| m1324_9(unknown) = ^InitializeDynamicAllocation : &:r1324_6 +# 1324| r1324_10(int *) = Convert : r1324_6 +# 1325| v1325_1(void) = NoOp : +# 1322| v1322_9(void) = ReturnIndirection[p] : &:r1322_7, m1322_8 +# 1322| v1322_10(void) = ReturnVoid : +# 1322| v1322_11(void) = AliasedUse : ~m1324_8 +# 1322| v1322_12(void) = ExitFunction : + +# 1328| Point defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| m1328_2(unknown) = AliasedDefinition : +# 1328| m1328_3(unknown) = InitializeNonLocal : +# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| r1329_2(Point) = Constant[0] : +# 1329| m1329_3(Point) = Store[#return] : &:r1329_1, r1329_2 +# 1328| r1328_5(glval) = VariableAddress[#return] : +# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_3 +# 1328| v1328_7(void) = AliasedUse : m1328_3 +# 1328| v1328_8(void) = ExitFunction : + +# 1328| String defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| m1328_2(unknown) = AliasedDefinition : +# 1328| m1328_3(unknown) = InitializeNonLocal : +# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| m1329_2(String) = Uninitialized[#return] : &:r1329_1 +# 1329| r1329_3(glval) = FunctionAddress[String] : +# 1329| v1329_4(void) = Call[String] : func:r1329_3, this:r1329_1 +# 1329| m1329_5(unknown) = ^CallSideEffect : ~m1328_4 +# 1329| m1329_6(unknown) = Chi : total:m1328_4, partial:m1329_5 +# 1329| m1329_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 +# 1329| m1329_8(String) = Chi : total:m1329_2, partial:m1329_7 +# 1328| r1328_5(glval) = VariableAddress[#return] : +# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_8 +# 1328| v1328_7(void) = AliasedUse : ~m1329_6 +# 1328| v1328_8(void) = ExitFunction : + +# 1328| copy_constructor defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| m1328_2(unknown) = AliasedDefinition : +# 1328| m1328_3(unknown) = InitializeNonLocal : +# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| m1329_2(copy_constructor) = Uninitialized[#return] : &:r1329_1 +# 1329| r1329_3(glval) = FunctionAddress[copy_constructor] : +# 1329| v1329_4(void) = Call[copy_constructor] : func:r1329_3, this:r1329_1 +# 1329| m1329_5(unknown) = ^CallSideEffect : ~m1328_4 +# 1329| m1329_6(unknown) = Chi : total:m1328_4, partial:m1329_5 +# 1329| m1329_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 +# 1329| m1329_8(copy_constructor) = Chi : total:m1329_2, partial:m1329_7 +# 1328| r1328_5(glval) = VariableAddress[#return] : +# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_8 +# 1328| v1328_7(void) = AliasedUse : ~m1329_6 +# 1328| v1328_8(void) = ExitFunction : + +# 1328| destructor_only defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| m1328_2(unknown) = AliasedDefinition : +# 1328| m1328_3(unknown) = InitializeNonLocal : +# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| r1329_2(destructor_only) = Constant[0] : +# 1329| m1329_3(destructor_only) = Store[#return] : &:r1329_1, r1329_2 +# 1328| r1328_5(glval) = VariableAddress[#return] : +# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_3 +# 1328| v1328_7(void) = AliasedUse : m1328_3 +# 1328| v1328_8(void) = ExitFunction : + +# 1367| void temporary_string() +# 1367| Block 0 +# 1367| v1367_1(void) = EnterFunction : +# 1367| m1367_2(unknown) = AliasedDefinition : +# 1367| m1367_3(unknown) = InitializeNonLocal : +# 1367| m1367_4(unknown) = Chi : total:m1367_2, partial:m1367_3 +# 1368| r1368_1(glval) = VariableAddress[s] : +# 1368| r1368_2(glval) = FunctionAddress[returnValue] : +# 1368| r1368_3(String) = Call[returnValue] : func:r1368_2 +# 1368| m1368_4(unknown) = ^CallSideEffect : ~m1367_4 +# 1368| m1368_5(unknown) = Chi : total:m1367_4, partial:m1368_4 +# 1368| m1368_6(String) = Store[s] : &:r1368_1, r1368_3 +# 1369| r1369_1(glval) = VariableAddress[rs] : +# 1369| r1369_2(glval) = VariableAddress[#temp1369:24] : +# 1369| r1369_3(glval) = FunctionAddress[returnValue] : +# 1369| r1369_4(String) = Call[returnValue] : func:r1369_3 +# 1369| m1369_5(unknown) = ^CallSideEffect : ~m1368_5 +# 1369| m1369_6(unknown) = Chi : total:m1368_5, partial:m1369_5 +# 1369| m1369_7(String) = Store[#temp1369:24] : &:r1369_2, r1369_4 +# 1369| r1369_8(glval) = Convert : r1369_2 +# 1369| r1369_9(String &) = CopyValue : r1369_8 +# 1369| m1369_10(String &) = Store[rs] : &:r1369_1, r1369_9 +# 1371| r1371_1(glval) = FunctionAddress[acceptRef] : +# 1371| r1371_2(glval) = VariableAddress[s] : +# 1371| r1371_3(glval) = Convert : r1371_2 +# 1371| r1371_4(String &) = CopyValue : r1371_3 +# 1371| v1371_5(void) = Call[acceptRef] : func:r1371_1, 0:r1371_4 +# 1371| m1371_6(unknown) = ^CallSideEffect : ~m1369_6 +# 1371| m1371_7(unknown) = Chi : total:m1369_6, partial:m1371_6 +# 1371| v1371_8(void) = ^BufferReadSideEffect[0] : &:r1371_4, ~m1368_6 +# 1372| r1372_1(glval) = FunctionAddress[acceptRef] : +# 1372| r1372_2(glval) = VariableAddress[#temp1372:23] : +# 1372| m1372_3(String) = Uninitialized[#temp1372:23] : &:r1372_2 # 1372| r1372_4(glval) = FunctionAddress[String] : # 1372| r1372_5(glval) = StringConstant["foo"] : # 1372| r1372_6(char *) = Convert : r1372_5 # 1372| v1372_7(void) = Call[String] : func:r1372_4, this:r1372_2, 0:r1372_6 -# 1372| m1372_8(unknown) = ^CallSideEffect : ~m1371_17 -# 1372| m1372_9(unknown) = Chi : total:m1371_17, partial:m1372_8 -# 1372| v1372_10(void) = ^BufferReadSideEffect[0] : &:r1372_6, ~m1365_3 +# 1372| m1372_8(unknown) = ^CallSideEffect : ~m1371_7 +# 1372| m1372_9(unknown) = Chi : total:m1371_7, partial:m1372_8 +# 1372| v1372_10(void) = ^BufferReadSideEffect[0] : &:r1372_6, ~m1367_3 # 1372| m1372_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1372_2 # 1372| m1372_12(String) = Chi : total:m1372_3, partial:m1372_11 -# 1372| r1372_13(String) = Load[#temp1372:25] : &:r1372_2, m1372_12 -# 1372| v1372_14(void) = Call[acceptValue] : func:r1372_1, 0:r1372_13 +# 1372| r1372_13(String &) = CopyValue : r1372_2 +# 1372| v1372_14(void) = Call[acceptRef] : func:r1372_1, 0:r1372_13 # 1372| m1372_15(unknown) = ^CallSideEffect : ~m1372_9 # 1372| m1372_16(unknown) = Chi : total:m1372_9, partial:m1372_15 -# 1373| r1373_1(glval) = VariableAddress[#temp1373:5] : -# 1373| m1373_2(String) = Uninitialized[#temp1373:5] : &:r1373_1 -# 1373| r1373_3(glval) = FunctionAddress[String] : -# 1373| v1373_4(void) = Call[String] : func:r1373_3, this:r1373_1 -# 1373| m1373_5(unknown) = ^CallSideEffect : ~m1372_16 -# 1373| m1373_6(unknown) = Chi : total:m1372_16, partial:m1373_5 -# 1373| m1373_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_1 -# 1373| m1373_8(String) = Chi : total:m1373_2, partial:m1373_7 -# 1373| r1373_9(glval) = Convert : r1373_1 -# 1373| r1373_10(glval) = FunctionAddress[c_str] : -# 1373| r1373_11(char *) = Call[c_str] : func:r1373_10, this:r1373_9 -# 1373| m1373_12(unknown) = ^CallSideEffect : ~m1373_6 -# 1373| m1373_13(unknown) = Chi : total:m1373_6, partial:m1373_12 -# 1373| v1373_14(void) = ^IndirectReadSideEffect[-1] : &:r1373_9, m1373_8 -# 1374| r1374_1(glval) = VariableAddress[#temp1374:5] : -# 1374| r1374_2(glval) = FunctionAddress[returnValue] : -# 1374| r1374_3(String) = Call[returnValue] : func:r1374_2 -# 1374| m1374_4(unknown) = ^CallSideEffect : ~m1373_13 -# 1374| m1374_5(unknown) = Chi : total:m1373_13, partial:m1374_4 -# 1374| m1374_6(String) = Store[#temp1374:5] : &:r1374_1, r1374_3 -# 1374| r1374_7(glval) = Convert : r1374_1 -# 1374| r1374_8(glval) = FunctionAddress[c_str] : -# 1374| r1374_9(char *) = Call[c_str] : func:r1374_8, this:r1374_7 -# 1374| m1374_10(unknown) = ^CallSideEffect : ~m1374_5 -# 1374| m1374_11(unknown) = Chi : total:m1374_5, partial:m1374_10 -# 1374| v1374_12(void) = ^IndirectReadSideEffect[-1] : &:r1374_7, m1374_6 +# 1372| v1372_17(void) = ^BufferReadSideEffect[0] : &:r1372_13, ~m1372_12 +# 1373| r1373_1(glval) = FunctionAddress[acceptValue] : +# 1373| r1373_2(glval) = VariableAddress[#temp1373:17] : +# 1373| m1373_3(String) = Uninitialized[#temp1373:17] : &:r1373_2 +# 1373| r1373_4(glval) = FunctionAddress[String] : +# 1373| r1373_5(glval) = VariableAddress[s] : +# 1373| r1373_6(glval) = Convert : r1373_5 +# 1373| r1373_7(String &) = CopyValue : r1373_6 +# 1373| v1373_8(void) = Call[String] : func:r1373_4, this:r1373_2, 0:r1373_7 +# 1373| m1373_9(unknown) = ^CallSideEffect : ~m1372_16 +# 1373| m1373_10(unknown) = Chi : total:m1372_16, partial:m1373_9 +# 1373| v1373_11(void) = ^BufferReadSideEffect[0] : &:r1373_7, ~m1368_6 +# 1373| m1373_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_2 +# 1373| m1373_13(String) = Chi : total:m1373_3, partial:m1373_12 +# 1373| r1373_14(String) = Load[#temp1373:17] : &:r1373_2, m1373_13 +# 1373| v1373_15(void) = Call[acceptValue] : func:r1373_1, 0:r1373_14 +# 1373| m1373_16(unknown) = ^CallSideEffect : ~m1373_10 +# 1373| m1373_17(unknown) = Chi : total:m1373_10, partial:m1373_16 +# 1374| r1374_1(glval) = FunctionAddress[acceptValue] : +# 1374| r1374_2(glval) = VariableAddress[#temp1374:25] : +# 1374| m1374_3(String) = Uninitialized[#temp1374:25] : &:r1374_2 +# 1374| r1374_4(glval) = FunctionAddress[String] : +# 1374| r1374_5(glval) = StringConstant["foo"] : +# 1374| r1374_6(char *) = Convert : r1374_5 +# 1374| v1374_7(void) = Call[String] : func:r1374_4, this:r1374_2, 0:r1374_6 +# 1374| m1374_8(unknown) = ^CallSideEffect : ~m1373_17 +# 1374| m1374_9(unknown) = Chi : total:m1373_17, partial:m1374_8 +# 1374| v1374_10(void) = ^BufferReadSideEffect[0] : &:r1374_6, ~m1367_3 +# 1374| m1374_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1374_2 +# 1374| m1374_12(String) = Chi : total:m1374_3, partial:m1374_11 +# 1374| r1374_13(String) = Load[#temp1374:25] : &:r1374_2, m1374_12 +# 1374| v1374_14(void) = Call[acceptValue] : func:r1374_1, 0:r1374_13 +# 1374| m1374_15(unknown) = ^CallSideEffect : ~m1374_9 +# 1374| m1374_16(unknown) = Chi : total:m1374_9, partial:m1374_15 +# 1375| r1375_1(glval) = VariableAddress[#temp1375:5] : +# 1375| m1375_2(String) = Uninitialized[#temp1375:5] : &:r1375_1 +# 1375| r1375_3(glval) = FunctionAddress[String] : +# 1375| v1375_4(void) = Call[String] : func:r1375_3, this:r1375_1 +# 1375| m1375_5(unknown) = ^CallSideEffect : ~m1374_16 +# 1375| m1375_6(unknown) = Chi : total:m1374_16, partial:m1375_5 +# 1375| m1375_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1375_1 +# 1375| m1375_8(String) = Chi : total:m1375_2, partial:m1375_7 +# 1375| r1375_9(glval) = Convert : r1375_1 +# 1375| r1375_10(glval) = FunctionAddress[c_str] : +# 1375| r1375_11(char *) = Call[c_str] : func:r1375_10, this:r1375_9 +# 1375| m1375_12(unknown) = ^CallSideEffect : ~m1375_6 +# 1375| m1375_13(unknown) = Chi : total:m1375_6, partial:m1375_12 +# 1375| v1375_14(void) = ^IndirectReadSideEffect[-1] : &:r1375_9, m1375_8 # 1376| r1376_1(glval) = VariableAddress[#temp1376:5] : -# 1376| r1376_2(glval) = FunctionAddress[defaultConstruct] : -# 1376| r1376_3(String) = Call[defaultConstruct] : func:r1376_2 -# 1376| m1376_4(unknown) = ^CallSideEffect : ~m1374_11 -# 1376| m1376_5(unknown) = Chi : total:m1374_11, partial:m1376_4 +# 1376| r1376_2(glval) = FunctionAddress[returnValue] : +# 1376| r1376_3(String) = Call[returnValue] : func:r1376_2 +# 1376| m1376_4(unknown) = ^CallSideEffect : ~m1375_13 +# 1376| m1376_5(unknown) = Chi : total:m1375_13, partial:m1376_4 # 1376| m1376_6(String) = Store[#temp1376:5] : &:r1376_1, r1376_3 -# 1377| v1377_1(void) = NoOp : -# 1365| v1365_5(void) = ReturnVoid : -# 1365| v1365_6(void) = AliasedUse : ~m1376_5 -# 1365| v1365_7(void) = ExitFunction : - -# 1379| void temporary_destructor_only() -# 1379| Block 0 -# 1379| v1379_1(void) = EnterFunction : -# 1379| m1379_2(unknown) = AliasedDefinition : -# 1379| m1379_3(unknown) = InitializeNonLocal : -# 1379| m1379_4(unknown) = Chi : total:m1379_2, partial:m1379_3 -# 1380| r1380_1(glval) = VariableAddress[d] : -# 1380| r1380_2(glval) = FunctionAddress[returnValue] : -# 1380| r1380_3(destructor_only) = Call[returnValue] : func:r1380_2 -# 1380| m1380_4(unknown) = ^CallSideEffect : ~m1379_4 -# 1380| m1380_5(unknown) = Chi : total:m1379_4, partial:m1380_4 -# 1380| m1380_6(destructor_only) = Store[d] : &:r1380_1, r1380_3 -# 1381| r1381_1(glval) = VariableAddress[rd] : -# 1381| r1381_2(glval) = VariableAddress[#temp1381:33] : -# 1381| r1381_3(glval) = FunctionAddress[returnValue] : -# 1381| r1381_4(destructor_only) = Call[returnValue] : func:r1381_3 -# 1381| m1381_5(unknown) = ^CallSideEffect : ~m1380_5 -# 1381| m1381_6(unknown) = Chi : total:m1380_5, partial:m1381_5 -# 1381| m1381_7(destructor_only) = Store[#temp1381:33] : &:r1381_2, r1381_4 -# 1381| r1381_8(glval) = Convert : r1381_2 -# 1381| r1381_9(destructor_only &) = CopyValue : r1381_8 -# 1381| m1381_10(destructor_only &) = Store[rd] : &:r1381_1, r1381_9 -# 1382| r1382_1(glval) = VariableAddress[d2] : -# 1382| m1382_2(destructor_only) = Uninitialized[d2] : &:r1382_1 -# 1383| r1383_1(glval) = FunctionAddress[acceptRef] : -# 1383| r1383_2(glval) = VariableAddress[d] : -# 1383| r1383_3(glval) = Convert : r1383_2 -# 1383| r1383_4(destructor_only &) = CopyValue : r1383_3 -# 1383| v1383_5(void) = Call[acceptRef] : func:r1383_1, 0:r1383_4 -# 1383| m1383_6(unknown) = ^CallSideEffect : ~m1381_6 -# 1383| m1383_7(unknown) = Chi : total:m1381_6, partial:m1383_6 -# 1383| v1383_8(void) = ^BufferReadSideEffect[0] : &:r1383_4, ~m1380_6 -# 1384| r1384_1(glval) = FunctionAddress[acceptValue] : -# 1384| r1384_2(glval) = VariableAddress[#temp1384:17] : -# 1384| r1384_3(glval) = VariableAddress[d] : -# 1384| r1384_4(destructor_only) = Load[d] : &:r1384_3, m1380_6 -# 1384| m1384_5(destructor_only) = Store[#temp1384:17] : &:r1384_2, r1384_4 -# 1384| r1384_6(destructor_only) = Load[#temp1384:17] : &:r1384_2, m1384_5 -# 1384| v1384_7(void) = Call[acceptValue] : func:r1384_1, 0:r1384_6 -# 1384| m1384_8(unknown) = ^CallSideEffect : ~m1383_7 -# 1384| m1384_9(unknown) = Chi : total:m1383_7, partial:m1384_8 -# 1385| r1385_1(glval) = VariableAddress[#temp1385:5] : -# 1385| r1385_2(destructor_only) = Constant[0] : -# 1385| m1385_3(destructor_only) = Store[#temp1385:5] : &:r1385_1, r1385_2 -# 1385| r1385_4(glval) = FunctionAddress[method] : -# 1385| v1385_5(void) = Call[method] : func:r1385_4, this:r1385_1 -# 1385| m1385_6(unknown) = ^CallSideEffect : ~m1384_9 -# 1385| m1385_7(unknown) = Chi : total:m1384_9, partial:m1385_6 -# 1385| v1385_8(void) = ^IndirectReadSideEffect[-1] : &:r1385_1, m1385_3 -# 1385| m1385_9(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1385_1 -# 1385| m1385_10(destructor_only) = Chi : total:m1385_3, partial:m1385_9 -# 1386| r1386_1(glval) = VariableAddress[#temp1386:5] : -# 1386| r1386_2(glval) = FunctionAddress[returnValue] : -# 1386| r1386_3(destructor_only) = Call[returnValue] : func:r1386_2 -# 1386| m1386_4(unknown) = ^CallSideEffect : ~m1385_7 -# 1386| m1386_5(unknown) = Chi : total:m1385_7, partial:m1386_4 -# 1386| m1386_6(destructor_only) = Store[#temp1386:5] : &:r1386_1, r1386_3 -# 1386| r1386_7(glval) = FunctionAddress[method] : -# 1386| v1386_8(void) = Call[method] : func:r1386_7, this:r1386_1 -# 1386| m1386_9(unknown) = ^CallSideEffect : ~m1386_5 -# 1386| m1386_10(unknown) = Chi : total:m1386_5, partial:m1386_9 -# 1386| v1386_11(void) = ^IndirectReadSideEffect[-1] : &:r1386_1, m1386_6 -# 1386| m1386_12(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1386_1 -# 1386| m1386_13(destructor_only) = Chi : total:m1386_6, partial:m1386_12 +# 1376| r1376_7(glval) = Convert : r1376_1 +# 1376| r1376_8(glval) = FunctionAddress[c_str] : +# 1376| r1376_9(char *) = Call[c_str] : func:r1376_8, this:r1376_7 +# 1376| m1376_10(unknown) = ^CallSideEffect : ~m1376_5 +# 1376| m1376_11(unknown) = Chi : total:m1376_5, partial:m1376_10 +# 1376| v1376_12(void) = ^IndirectReadSideEffect[-1] : &:r1376_7, m1376_6 +# 1378| r1378_1(glval) = VariableAddress[#temp1378:5] : +# 1378| r1378_2(glval) = FunctionAddress[defaultConstruct] : +# 1378| r1378_3(String) = Call[defaultConstruct] : func:r1378_2 +# 1378| m1378_4(unknown) = ^CallSideEffect : ~m1376_11 +# 1378| m1378_5(unknown) = Chi : total:m1376_11, partial:m1378_4 +# 1378| m1378_6(String) = Store[#temp1378:5] : &:r1378_1, r1378_3 +# 1379| v1379_1(void) = NoOp : +# 1367| v1367_5(void) = ReturnVoid : +# 1367| v1367_6(void) = AliasedUse : ~m1378_5 +# 1367| v1367_7(void) = ExitFunction : + +# 1381| void temporary_destructor_only() +# 1381| Block 0 +# 1381| v1381_1(void) = EnterFunction : +# 1381| m1381_2(unknown) = AliasedDefinition : +# 1381| m1381_3(unknown) = InitializeNonLocal : +# 1381| m1381_4(unknown) = Chi : total:m1381_2, partial:m1381_3 +# 1382| r1382_1(glval) = VariableAddress[d] : +# 1382| r1382_2(glval) = FunctionAddress[returnValue] : +# 1382| r1382_3(destructor_only) = Call[returnValue] : func:r1382_2 +# 1382| m1382_4(unknown) = ^CallSideEffect : ~m1381_4 +# 1382| m1382_5(unknown) = Chi : total:m1381_4, partial:m1382_4 +# 1382| m1382_6(destructor_only) = Store[d] : &:r1382_1, r1382_3 +# 1383| r1383_1(glval) = VariableAddress[rd] : +# 1383| r1383_2(glval) = VariableAddress[#temp1383:33] : +# 1383| r1383_3(glval) = FunctionAddress[returnValue] : +# 1383| r1383_4(destructor_only) = Call[returnValue] : func:r1383_3 +# 1383| m1383_5(unknown) = ^CallSideEffect : ~m1382_5 +# 1383| m1383_6(unknown) = Chi : total:m1382_5, partial:m1383_5 +# 1383| m1383_7(destructor_only) = Store[#temp1383:33] : &:r1383_2, r1383_4 +# 1383| r1383_8(glval) = Convert : r1383_2 +# 1383| r1383_9(destructor_only &) = CopyValue : r1383_8 +# 1383| m1383_10(destructor_only &) = Store[rd] : &:r1383_1, r1383_9 +# 1384| r1384_1(glval) = VariableAddress[d2] : +# 1384| m1384_2(destructor_only) = Uninitialized[d2] : &:r1384_1 +# 1385| r1385_1(glval) = FunctionAddress[acceptRef] : +# 1385| r1385_2(glval) = VariableAddress[d] : +# 1385| r1385_3(glval) = Convert : r1385_2 +# 1385| r1385_4(destructor_only &) = CopyValue : r1385_3 +# 1385| v1385_5(void) = Call[acceptRef] : func:r1385_1, 0:r1385_4 +# 1385| m1385_6(unknown) = ^CallSideEffect : ~m1383_6 +# 1385| m1385_7(unknown) = Chi : total:m1383_6, partial:m1385_6 +# 1385| v1385_8(void) = ^BufferReadSideEffect[0] : &:r1385_4, ~m1382_6 +# 1386| r1386_1(glval) = FunctionAddress[acceptValue] : +# 1386| r1386_2(glval) = VariableAddress[#temp1386:17] : +# 1386| r1386_3(glval) = VariableAddress[d] : +# 1386| r1386_4(destructor_only) = Load[d] : &:r1386_3, m1382_6 +# 1386| m1386_5(destructor_only) = Store[#temp1386:17] : &:r1386_2, r1386_4 +# 1386| r1386_6(destructor_only) = Load[#temp1386:17] : &:r1386_2, m1386_5 +# 1386| v1386_7(void) = Call[acceptValue] : func:r1386_1, 0:r1386_6 +# 1386| m1386_8(unknown) = ^CallSideEffect : ~m1385_7 +# 1386| m1386_9(unknown) = Chi : total:m1385_7, partial:m1386_8 +# 1387| r1387_1(glval) = VariableAddress[#temp1387:5] : +# 1387| r1387_2(destructor_only) = Constant[0] : +# 1387| m1387_3(destructor_only) = Store[#temp1387:5] : &:r1387_1, r1387_2 +# 1387| r1387_4(glval) = FunctionAddress[method] : +# 1387| v1387_5(void) = Call[method] : func:r1387_4, this:r1387_1 +# 1387| m1387_6(unknown) = ^CallSideEffect : ~m1386_9 +# 1387| m1387_7(unknown) = Chi : total:m1386_9, partial:m1387_6 +# 1387| v1387_8(void) = ^IndirectReadSideEffect[-1] : &:r1387_1, m1387_3 +# 1387| m1387_9(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1387_1 +# 1387| m1387_10(destructor_only) = Chi : total:m1387_3, partial:m1387_9 # 1388| r1388_1(glval) = VariableAddress[#temp1388:5] : -# 1388| r1388_2(glval) = FunctionAddress[defaultConstruct] : -# 1388| r1388_3(destructor_only) = Call[defaultConstruct] : func:r1388_2 -# 1388| m1388_4(unknown) = ^CallSideEffect : ~m1386_10 -# 1388| m1388_5(unknown) = Chi : total:m1386_10, partial:m1388_4 +# 1388| r1388_2(glval) = FunctionAddress[returnValue] : +# 1388| r1388_3(destructor_only) = Call[returnValue] : func:r1388_2 +# 1388| m1388_4(unknown) = ^CallSideEffect : ~m1387_7 +# 1388| m1388_5(unknown) = Chi : total:m1387_7, partial:m1388_4 # 1388| m1388_6(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3 -# 1389| v1389_1(void) = NoOp : -# 1379| v1379_5(void) = ReturnVoid : -# 1379| v1379_6(void) = AliasedUse : ~m1388_5 -# 1379| v1379_7(void) = ExitFunction : - -# 1391| void temporary_copy_constructor() -# 1391| Block 0 -# 1391| v1391_1(void) = EnterFunction : -# 1391| m1391_2(unknown) = AliasedDefinition : -# 1391| m1391_3(unknown) = InitializeNonLocal : -# 1391| m1391_4(unknown) = Chi : total:m1391_2, partial:m1391_3 -# 1392| r1392_1(glval) = VariableAddress[d] : -# 1392| r1392_2(glval) = FunctionAddress[returnValue] : -# 1392| r1392_3(copy_constructor) = Call[returnValue] : func:r1392_2 -# 1392| m1392_4(unknown) = ^CallSideEffect : ~m1391_4 -# 1392| m1392_5(unknown) = Chi : total:m1391_4, partial:m1392_4 -# 1392| m1392_6(copy_constructor) = Store[d] : &:r1392_1, r1392_3 -# 1393| r1393_1(glval) = VariableAddress[rd] : -# 1393| r1393_2(glval) = VariableAddress[#temp1393:34] : -# 1393| r1393_3(glval) = FunctionAddress[returnValue] : -# 1393| r1393_4(copy_constructor) = Call[returnValue] : func:r1393_3 -# 1393| m1393_5(unknown) = ^CallSideEffect : ~m1392_5 -# 1393| m1393_6(unknown) = Chi : total:m1392_5, partial:m1393_5 -# 1393| m1393_7(copy_constructor) = Store[#temp1393:34] : &:r1393_2, r1393_4 -# 1393| r1393_8(glval) = Convert : r1393_2 -# 1393| r1393_9(copy_constructor &) = CopyValue : r1393_8 -# 1393| m1393_10(copy_constructor &) = Store[rd] : &:r1393_1, r1393_9 -# 1394| r1394_1(glval) = VariableAddress[d2] : -# 1394| m1394_2(copy_constructor) = Uninitialized[d2] : &:r1394_1 -# 1394| r1394_3(glval) = FunctionAddress[copy_constructor] : -# 1394| v1394_4(void) = Call[copy_constructor] : func:r1394_3, this:r1394_1 -# 1394| m1394_5(unknown) = ^CallSideEffect : ~m1393_6 -# 1394| m1394_6(unknown) = Chi : total:m1393_6, partial:m1394_5 -# 1394| m1394_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1394_1 -# 1394| m1394_8(copy_constructor) = Chi : total:m1394_2, partial:m1394_7 -# 1395| r1395_1(glval) = FunctionAddress[acceptRef] : -# 1395| r1395_2(glval) = VariableAddress[d] : -# 1395| r1395_3(glval) = Convert : r1395_2 -# 1395| r1395_4(copy_constructor &) = CopyValue : r1395_3 -# 1395| v1395_5(void) = Call[acceptRef] : func:r1395_1, 0:r1395_4 -# 1395| m1395_6(unknown) = ^CallSideEffect : ~m1394_6 -# 1395| m1395_7(unknown) = Chi : total:m1394_6, partial:m1395_6 -# 1395| v1395_8(void) = ^BufferReadSideEffect[0] : &:r1395_4, ~m1392_6 -# 1396| r1396_1(glval) = FunctionAddress[acceptValue] : -# 1396| r1396_2(glval) = VariableAddress[#temp1396:17] : -# 1396| m1396_3(copy_constructor) = Uninitialized[#temp1396:17] : &:r1396_2 -# 1396| r1396_4(glval) = FunctionAddress[copy_constructor] : -# 1396| r1396_5(glval) = VariableAddress[d] : -# 1396| r1396_6(glval) = Convert : r1396_5 -# 1396| r1396_7(copy_constructor &) = CopyValue : r1396_6 -# 1396| v1396_8(void) = Call[copy_constructor] : func:r1396_4, this:r1396_2, 0:r1396_7 -# 1396| m1396_9(unknown) = ^CallSideEffect : ~m1395_7 -# 1396| m1396_10(unknown) = Chi : total:m1395_7, partial:m1396_9 -# 1396| v1396_11(void) = ^BufferReadSideEffect[0] : &:r1396_7, ~m1392_6 -# 1396| m1396_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1396_2 -# 1396| m1396_13(copy_constructor) = Chi : total:m1396_3, partial:m1396_12 -# 1396| r1396_14(copy_constructor) = Load[#temp1396:17] : &:r1396_2, m1396_13 -# 1396| v1396_15(void) = Call[acceptValue] : func:r1396_1, 0:r1396_14 -# 1396| m1396_16(unknown) = ^CallSideEffect : ~m1396_10 -# 1396| m1396_17(unknown) = Chi : total:m1396_10, partial:m1396_16 -# 1397| r1397_1(glval) = VariableAddress[#temp1397:5] : -# 1397| m1397_2(copy_constructor) = Uninitialized[#temp1397:5] : &:r1397_1 -# 1397| r1397_3(glval) = FunctionAddress[copy_constructor] : -# 1397| v1397_4(void) = Call[copy_constructor] : func:r1397_3, this:r1397_1 -# 1397| m1397_5(unknown) = ^CallSideEffect : ~m1396_17 -# 1397| m1397_6(unknown) = Chi : total:m1396_17, partial:m1397_5 -# 1397| m1397_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1397_1 -# 1397| m1397_8(copy_constructor) = Chi : total:m1397_2, partial:m1397_7 -# 1397| r1397_9(glval) = FunctionAddress[method] : -# 1397| v1397_10(void) = Call[method] : func:r1397_9, this:r1397_1 -# 1397| m1397_11(unknown) = ^CallSideEffect : ~m1397_6 -# 1397| m1397_12(unknown) = Chi : total:m1397_6, partial:m1397_11 -# 1397| v1397_13(void) = ^IndirectReadSideEffect[-1] : &:r1397_1, m1397_8 -# 1397| m1397_14(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1397_1 -# 1397| m1397_15(copy_constructor) = Chi : total:m1397_8, partial:m1397_14 -# 1398| r1398_1(glval) = VariableAddress[#temp1398:5] : -# 1398| r1398_2(glval) = FunctionAddress[returnValue] : -# 1398| r1398_3(copy_constructor) = Call[returnValue] : func:r1398_2 -# 1398| m1398_4(unknown) = ^CallSideEffect : ~m1397_12 -# 1398| m1398_5(unknown) = Chi : total:m1397_12, partial:m1398_4 -# 1398| m1398_6(copy_constructor) = Store[#temp1398:5] : &:r1398_1, r1398_3 -# 1398| r1398_7(glval) = FunctionAddress[method] : -# 1398| v1398_8(void) = Call[method] : func:r1398_7, this:r1398_1 -# 1398| m1398_9(unknown) = ^CallSideEffect : ~m1398_5 -# 1398| m1398_10(unknown) = Chi : total:m1398_5, partial:m1398_9 -# 1398| v1398_11(void) = ^IndirectReadSideEffect[-1] : &:r1398_1, m1398_6 -# 1398| m1398_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1398_1 -# 1398| m1398_13(copy_constructor) = Chi : total:m1398_6, partial:m1398_12 +# 1388| r1388_7(glval) = FunctionAddress[method] : +# 1388| v1388_8(void) = Call[method] : func:r1388_7, this:r1388_1 +# 1388| m1388_9(unknown) = ^CallSideEffect : ~m1388_5 +# 1388| m1388_10(unknown) = Chi : total:m1388_5, partial:m1388_9 +# 1388| v1388_11(void) = ^IndirectReadSideEffect[-1] : &:r1388_1, m1388_6 +# 1388| m1388_12(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1388_1 +# 1388| m1388_13(destructor_only) = Chi : total:m1388_6, partial:m1388_12 +# 1390| r1390_1(glval) = VariableAddress[#temp1390:5] : +# 1390| r1390_2(glval) = FunctionAddress[defaultConstruct] : +# 1390| r1390_3(destructor_only) = Call[defaultConstruct] : func:r1390_2 +# 1390| m1390_4(unknown) = ^CallSideEffect : ~m1388_10 +# 1390| m1390_5(unknown) = Chi : total:m1388_10, partial:m1390_4 +# 1390| m1390_6(destructor_only) = Store[#temp1390:5] : &:r1390_1, r1390_3 +# 1391| v1391_1(void) = NoOp : +# 1381| v1381_5(void) = ReturnVoid : +# 1381| v1381_6(void) = AliasedUse : ~m1390_5 +# 1381| v1381_7(void) = ExitFunction : + +# 1393| void temporary_copy_constructor() +# 1393| Block 0 +# 1393| v1393_1(void) = EnterFunction : +# 1393| m1393_2(unknown) = AliasedDefinition : +# 1393| m1393_3(unknown) = InitializeNonLocal : +# 1393| m1393_4(unknown) = Chi : total:m1393_2, partial:m1393_3 +# 1394| r1394_1(glval) = VariableAddress[d] : +# 1394| r1394_2(glval) = FunctionAddress[returnValue] : +# 1394| r1394_3(copy_constructor) = Call[returnValue] : func:r1394_2 +# 1394| m1394_4(unknown) = ^CallSideEffect : ~m1393_4 +# 1394| m1394_5(unknown) = Chi : total:m1393_4, partial:m1394_4 +# 1394| m1394_6(copy_constructor) = Store[d] : &:r1394_1, r1394_3 +# 1395| r1395_1(glval) = VariableAddress[rd] : +# 1395| r1395_2(glval) = VariableAddress[#temp1395:34] : +# 1395| r1395_3(glval) = FunctionAddress[returnValue] : +# 1395| r1395_4(copy_constructor) = Call[returnValue] : func:r1395_3 +# 1395| m1395_5(unknown) = ^CallSideEffect : ~m1394_5 +# 1395| m1395_6(unknown) = Chi : total:m1394_5, partial:m1395_5 +# 1395| m1395_7(copy_constructor) = Store[#temp1395:34] : &:r1395_2, r1395_4 +# 1395| r1395_8(glval) = Convert : r1395_2 +# 1395| r1395_9(copy_constructor &) = CopyValue : r1395_8 +# 1395| m1395_10(copy_constructor &) = Store[rd] : &:r1395_1, r1395_9 +# 1396| r1396_1(glval) = VariableAddress[d2] : +# 1396| m1396_2(copy_constructor) = Uninitialized[d2] : &:r1396_1 +# 1396| r1396_3(glval) = FunctionAddress[copy_constructor] : +# 1396| v1396_4(void) = Call[copy_constructor] : func:r1396_3, this:r1396_1 +# 1396| m1396_5(unknown) = ^CallSideEffect : ~m1395_6 +# 1396| m1396_6(unknown) = Chi : total:m1395_6, partial:m1396_5 +# 1396| m1396_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1396_1 +# 1396| m1396_8(copy_constructor) = Chi : total:m1396_2, partial:m1396_7 +# 1397| r1397_1(glval) = FunctionAddress[acceptRef] : +# 1397| r1397_2(glval) = VariableAddress[d] : +# 1397| r1397_3(glval) = Convert : r1397_2 +# 1397| r1397_4(copy_constructor &) = CopyValue : r1397_3 +# 1397| v1397_5(void) = Call[acceptRef] : func:r1397_1, 0:r1397_4 +# 1397| m1397_6(unknown) = ^CallSideEffect : ~m1396_6 +# 1397| m1397_7(unknown) = Chi : total:m1396_6, partial:m1397_6 +# 1397| v1397_8(void) = ^BufferReadSideEffect[0] : &:r1397_4, ~m1394_6 +# 1398| r1398_1(glval) = FunctionAddress[acceptValue] : +# 1398| r1398_2(glval) = VariableAddress[#temp1398:17] : +# 1398| m1398_3(copy_constructor) = Uninitialized[#temp1398:17] : &:r1398_2 +# 1398| r1398_4(glval) = FunctionAddress[copy_constructor] : +# 1398| r1398_5(glval) = VariableAddress[d] : +# 1398| r1398_6(glval) = Convert : r1398_5 +# 1398| r1398_7(copy_constructor &) = CopyValue : r1398_6 +# 1398| v1398_8(void) = Call[copy_constructor] : func:r1398_4, this:r1398_2, 0:r1398_7 +# 1398| m1398_9(unknown) = ^CallSideEffect : ~m1397_7 +# 1398| m1398_10(unknown) = Chi : total:m1397_7, partial:m1398_9 +# 1398| v1398_11(void) = ^BufferReadSideEffect[0] : &:r1398_7, ~m1394_6 +# 1398| m1398_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1398_2 +# 1398| m1398_13(copy_constructor) = Chi : total:m1398_3, partial:m1398_12 +# 1398| r1398_14(copy_constructor) = Load[#temp1398:17] : &:r1398_2, m1398_13 +# 1398| v1398_15(void) = Call[acceptValue] : func:r1398_1, 0:r1398_14 +# 1398| m1398_16(unknown) = ^CallSideEffect : ~m1398_10 +# 1398| m1398_17(unknown) = Chi : total:m1398_10, partial:m1398_16 # 1399| r1399_1(glval) = VariableAddress[#temp1399:5] : -# 1399| r1399_2(glval) = FunctionAddress[defaultConstruct] : -# 1399| r1399_3(copy_constructor) = Call[defaultConstruct] : func:r1399_2 -# 1399| m1399_4(unknown) = ^CallSideEffect : ~m1398_10 -# 1399| m1399_5(unknown) = Chi : total:m1398_10, partial:m1399_4 -# 1399| m1399_6(copy_constructor) = Store[#temp1399:5] : &:r1399_1, r1399_3 -# 1401| r1401_1(glval) = VariableAddress[y] : -# 1401| r1401_2(glval) = VariableAddress[#temp1401:13] : -# 1401| r1401_3(glval) = FunctionAddress[returnValue] : -# 1401| r1401_4(copy_constructor) = Call[returnValue] : func:r1401_3 -# 1401| m1401_5(unknown) = ^CallSideEffect : ~m1399_5 -# 1401| m1401_6(unknown) = Chi : total:m1399_5, partial:m1401_5 -# 1401| m1401_7(copy_constructor) = Store[#temp1401:13] : &:r1401_2, r1401_4 -# 1401| r1401_8(glval) = FieldAddress[y] : r1401_2 -# 1401| r1401_9(int) = Load[?] : &:r1401_8, ~m1401_7 -# 1401| m1401_10(int) = Store[y] : &:r1401_1, r1401_9 -# 1402| v1402_1(void) = NoOp : -# 1391| v1391_5(void) = ReturnVoid : -# 1391| v1391_6(void) = AliasedUse : ~m1401_6 -# 1391| v1391_7(void) = ExitFunction : - -# 1404| void temporary_point() -# 1404| Block 0 -# 1404| v1404_1(void) = EnterFunction : -# 1404| m1404_2(unknown) = AliasedDefinition : -# 1404| m1404_3(unknown) = InitializeNonLocal : -# 1404| m1404_4(unknown) = Chi : total:m1404_2, partial:m1404_3 -# 1405| r1405_1(glval) = VariableAddress[p] : -# 1405| r1405_2(glval) = FunctionAddress[returnValue] : -# 1405| r1405_3(Point) = Call[returnValue] : func:r1405_2 -# 1405| m1405_4(unknown) = ^CallSideEffect : ~m1404_4 -# 1405| m1405_5(unknown) = Chi : total:m1404_4, partial:m1405_4 -# 1405| m1405_6(Point) = Store[p] : &:r1405_1, r1405_3 -# 1406| r1406_1(glval) = VariableAddress[rp] : -# 1406| r1406_2(glval) = VariableAddress[#temp1406:23] : -# 1406| r1406_3(glval) = FunctionAddress[returnValue] : -# 1406| r1406_4(Point) = Call[returnValue] : func:r1406_3 -# 1406| m1406_5(unknown) = ^CallSideEffect : ~m1405_5 -# 1406| m1406_6(unknown) = Chi : total:m1405_5, partial:m1406_5 -# 1406| m1406_7(Point) = Store[#temp1406:23] : &:r1406_2, r1406_4 -# 1406| r1406_8(glval) = Convert : r1406_2 -# 1406| r1406_9(Point &) = CopyValue : r1406_8 -# 1406| m1406_10(Point &) = Store[rp] : &:r1406_1, r1406_9 -# 1408| r1408_1(glval) = FunctionAddress[acceptRef] : -# 1408| r1408_2(glval) = VariableAddress[p] : -# 1408| r1408_3(glval) = Convert : r1408_2 -# 1408| r1408_4(Point &) = CopyValue : r1408_3 -# 1408| v1408_5(void) = Call[acceptRef] : func:r1408_1, 0:r1408_4 -# 1408| m1408_6(unknown) = ^CallSideEffect : ~m1406_6 -# 1408| m1408_7(unknown) = Chi : total:m1406_6, partial:m1408_6 -# 1408| v1408_8(void) = ^BufferReadSideEffect[0] : &:r1408_4, ~m1405_6 -# 1409| r1409_1(glval) = FunctionAddress[acceptValue] : -# 1409| r1409_2(glval) = VariableAddress[p] : -# 1409| r1409_3(Point) = Load[p] : &:r1409_2, m1405_6 -# 1409| v1409_4(void) = Call[acceptValue] : func:r1409_1, 0:r1409_3 -# 1409| m1409_5(unknown) = ^CallSideEffect : ~m1408_7 -# 1409| m1409_6(unknown) = Chi : total:m1408_7, partial:m1409_5 -# 1410| r1410_1(int) = Constant[0] : -# 1411| r1411_1(glval) = VariableAddress[y] : -# 1411| r1411_2(glval) = FunctionAddress[returnValue] : -# 1411| r1411_3(Point) = Call[returnValue] : func:r1411_2 -# 1411| m1411_4(unknown) = ^CallSideEffect : ~m1409_6 -# 1411| m1411_5(unknown) = Chi : total:m1409_6, partial:m1411_4 -# 1411| r1411_6(glval) = VariableAddress[#temp1411:13] : -# 1411| m1411_7(Point) = Store[#temp1411:13] : &:r1411_6, r1411_3 -# 1411| r1411_8(glval) = FieldAddress[y] : r1411_6 -# 1411| r1411_9(int) = Load[?] : &:r1411_8, ~m1411_7 -# 1411| m1411_10(int) = Store[y] : &:r1411_1, r1411_9 -# 1413| r1413_1(glval) = FunctionAddress[defaultConstruct] : -# 1413| r1413_2(Point) = Call[defaultConstruct] : func:r1413_1 -# 1413| m1413_3(unknown) = ^CallSideEffect : ~m1411_5 -# 1413| m1413_4(unknown) = Chi : total:m1411_5, partial:m1413_3 -# 1414| v1414_1(void) = NoOp : -# 1404| v1404_5(void) = ReturnVoid : -# 1404| v1404_6(void) = AliasedUse : ~m1413_4 -# 1404| v1404_7(void) = ExitFunction : - -# 1421| void temporary_unusual_fields() -# 1421| Block 0 -# 1421| v1421_1(void) = EnterFunction : -# 1421| m1421_2(unknown) = AliasedDefinition : -# 1421| m1421_3(unknown) = InitializeNonLocal : -# 1421| m1421_4(unknown) = Chi : total:m1421_2, partial:m1421_3 -# 1422| r1422_1(glval) = VariableAddress[rx] : -# 1422| r1422_2(glval) = FunctionAddress[returnValue] : -# 1422| r1422_3(UnusualFields) = Call[returnValue] : func:r1422_2 -# 1422| m1422_4(unknown) = ^CallSideEffect : ~m1421_4 -# 1422| m1422_5(unknown) = Chi : total:m1421_4, partial:m1422_4 -# 1422| r1422_6(glval) = VariableAddress[#temp1422:21] : -# 1422| m1422_7(UnusualFields) = Store[#temp1422:21] : &:r1422_6, r1422_3 -# 1422| r1422_8(glval) = FieldAddress[r] : r1422_6 -# 1422| r1422_9(int &) = Load[?] : &:r1422_8, ~m1422_7 -# 1422| r1422_10(glval) = CopyValue : r1422_9 -# 1422| r1422_11(glval) = Convert : r1422_10 -# 1422| r1422_12(int &) = CopyValue : r1422_11 -# 1422| m1422_13(int &) = Store[rx] : &:r1422_1, r1422_12 -# 1423| r1423_1(glval) = VariableAddress[x] : -# 1423| r1423_2(glval) = FunctionAddress[returnValue] : -# 1423| r1423_3(UnusualFields) = Call[returnValue] : func:r1423_2 -# 1423| m1423_4(unknown) = ^CallSideEffect : ~m1422_5 -# 1423| m1423_5(unknown) = Chi : total:m1422_5, partial:m1423_4 -# 1423| r1423_6(glval) = VariableAddress[#temp1423:13] : -# 1423| m1423_7(UnusualFields) = Store[#temp1423:13] : &:r1423_6, r1423_3 -# 1423| r1423_8(glval) = FieldAddress[r] : r1423_6 -# 1423| r1423_9(int &) = Load[?] : &:r1423_8, ~m1423_7 -# 1423| r1423_10(int) = Load[?] : &:r1423_9, ~m1423_5 -# 1423| m1423_11(int) = Store[x] : &:r1423_1, r1423_10 -# 1425| r1425_1(glval) = VariableAddress[rf] : +# 1399| m1399_2(copy_constructor) = Uninitialized[#temp1399:5] : &:r1399_1 +# 1399| r1399_3(glval) = FunctionAddress[copy_constructor] : +# 1399| v1399_4(void) = Call[copy_constructor] : func:r1399_3, this:r1399_1 +# 1399| m1399_5(unknown) = ^CallSideEffect : ~m1398_17 +# 1399| m1399_6(unknown) = Chi : total:m1398_17, partial:m1399_5 +# 1399| m1399_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 +# 1399| m1399_8(copy_constructor) = Chi : total:m1399_2, partial:m1399_7 +# 1399| r1399_9(glval) = FunctionAddress[method] : +# 1399| v1399_10(void) = Call[method] : func:r1399_9, this:r1399_1 +# 1399| m1399_11(unknown) = ^CallSideEffect : ~m1399_6 +# 1399| m1399_12(unknown) = Chi : total:m1399_6, partial:m1399_11 +# 1399| v1399_13(void) = ^IndirectReadSideEffect[-1] : &:r1399_1, m1399_8 +# 1399| m1399_14(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 +# 1399| m1399_15(copy_constructor) = Chi : total:m1399_8, partial:m1399_14 +# 1400| r1400_1(glval) = VariableAddress[#temp1400:5] : +# 1400| r1400_2(glval) = FunctionAddress[returnValue] : +# 1400| r1400_3(copy_constructor) = Call[returnValue] : func:r1400_2 +# 1400| m1400_4(unknown) = ^CallSideEffect : ~m1399_12 +# 1400| m1400_5(unknown) = Chi : total:m1399_12, partial:m1400_4 +# 1400| m1400_6(copy_constructor) = Store[#temp1400:5] : &:r1400_1, r1400_3 +# 1400| r1400_7(glval) = FunctionAddress[method] : +# 1400| v1400_8(void) = Call[method] : func:r1400_7, this:r1400_1 +# 1400| m1400_9(unknown) = ^CallSideEffect : ~m1400_5 +# 1400| m1400_10(unknown) = Chi : total:m1400_5, partial:m1400_9 +# 1400| v1400_11(void) = ^IndirectReadSideEffect[-1] : &:r1400_1, m1400_6 +# 1400| m1400_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1400_1 +# 1400| m1400_13(copy_constructor) = Chi : total:m1400_6, partial:m1400_12 +# 1401| r1401_1(glval) = VariableAddress[#temp1401:5] : +# 1401| r1401_2(glval) = FunctionAddress[defaultConstruct] : +# 1401| r1401_3(copy_constructor) = Call[defaultConstruct] : func:r1401_2 +# 1401| m1401_4(unknown) = ^CallSideEffect : ~m1400_10 +# 1401| m1401_5(unknown) = Chi : total:m1400_10, partial:m1401_4 +# 1401| m1401_6(copy_constructor) = Store[#temp1401:5] : &:r1401_1, r1401_3 +# 1403| r1403_1(glval) = VariableAddress[y] : +# 1403| r1403_2(glval) = VariableAddress[#temp1403:13] : +# 1403| r1403_3(glval) = FunctionAddress[returnValue] : +# 1403| r1403_4(copy_constructor) = Call[returnValue] : func:r1403_3 +# 1403| m1403_5(unknown) = ^CallSideEffect : ~m1401_5 +# 1403| m1403_6(unknown) = Chi : total:m1401_5, partial:m1403_5 +# 1403| m1403_7(copy_constructor) = Store[#temp1403:13] : &:r1403_2, r1403_4 +# 1403| r1403_8(glval) = FieldAddress[y] : r1403_2 +# 1403| r1403_9(int) = Load[?] : &:r1403_8, ~m1403_7 +# 1403| m1403_10(int) = Store[y] : &:r1403_1, r1403_9 +# 1404| v1404_1(void) = NoOp : +# 1393| v1393_5(void) = ReturnVoid : +# 1393| v1393_6(void) = AliasedUse : ~m1403_6 +# 1393| v1393_7(void) = ExitFunction : + +# 1406| void temporary_point() +# 1406| Block 0 +# 1406| v1406_1(void) = EnterFunction : +# 1406| m1406_2(unknown) = AliasedDefinition : +# 1406| m1406_3(unknown) = InitializeNonLocal : +# 1406| m1406_4(unknown) = Chi : total:m1406_2, partial:m1406_3 +# 1407| r1407_1(glval) = VariableAddress[p] : +# 1407| r1407_2(glval) = FunctionAddress[returnValue] : +# 1407| r1407_3(Point) = Call[returnValue] : func:r1407_2 +# 1407| m1407_4(unknown) = ^CallSideEffect : ~m1406_4 +# 1407| m1407_5(unknown) = Chi : total:m1406_4, partial:m1407_4 +# 1407| m1407_6(Point) = Store[p] : &:r1407_1, r1407_3 +# 1408| r1408_1(glval) = VariableAddress[rp] : +# 1408| r1408_2(glval) = VariableAddress[#temp1408:23] : +# 1408| r1408_3(glval) = FunctionAddress[returnValue] : +# 1408| r1408_4(Point) = Call[returnValue] : func:r1408_3 +# 1408| m1408_5(unknown) = ^CallSideEffect : ~m1407_5 +# 1408| m1408_6(unknown) = Chi : total:m1407_5, partial:m1408_5 +# 1408| m1408_7(Point) = Store[#temp1408:23] : &:r1408_2, r1408_4 +# 1408| r1408_8(glval) = Convert : r1408_2 +# 1408| r1408_9(Point &) = CopyValue : r1408_8 +# 1408| m1408_10(Point &) = Store[rp] : &:r1408_1, r1408_9 +# 1410| r1410_1(glval) = FunctionAddress[acceptRef] : +# 1410| r1410_2(glval) = VariableAddress[p] : +# 1410| r1410_3(glval) = Convert : r1410_2 +# 1410| r1410_4(Point &) = CopyValue : r1410_3 +# 1410| v1410_5(void) = Call[acceptRef] : func:r1410_1, 0:r1410_4 +# 1410| m1410_6(unknown) = ^CallSideEffect : ~m1408_6 +# 1410| m1410_7(unknown) = Chi : total:m1408_6, partial:m1410_6 +# 1410| v1410_8(void) = ^BufferReadSideEffect[0] : &:r1410_4, ~m1407_6 +# 1411| r1411_1(glval) = FunctionAddress[acceptValue] : +# 1411| r1411_2(glval) = VariableAddress[p] : +# 1411| r1411_3(Point) = Load[p] : &:r1411_2, m1407_6 +# 1411| v1411_4(void) = Call[acceptValue] : func:r1411_1, 0:r1411_3 +# 1411| m1411_5(unknown) = ^CallSideEffect : ~m1410_7 +# 1411| m1411_6(unknown) = Chi : total:m1410_7, partial:m1411_5 +# 1412| r1412_1(int) = Constant[0] : +# 1413| r1413_1(glval) = VariableAddress[y] : +# 1413| r1413_2(glval) = FunctionAddress[returnValue] : +# 1413| r1413_3(Point) = Call[returnValue] : func:r1413_2 +# 1413| m1413_4(unknown) = ^CallSideEffect : ~m1411_6 +# 1413| m1413_5(unknown) = Chi : total:m1411_6, partial:m1413_4 +# 1413| r1413_6(glval) = VariableAddress[#temp1413:13] : +# 1413| m1413_7(Point) = Store[#temp1413:13] : &:r1413_6, r1413_3 +# 1413| r1413_8(glval) = FieldAddress[y] : r1413_6 +# 1413| r1413_9(int) = Load[?] : &:r1413_8, ~m1413_7 +# 1413| m1413_10(int) = Store[y] : &:r1413_1, r1413_9 +# 1415| r1415_1(glval) = FunctionAddress[defaultConstruct] : +# 1415| r1415_2(Point) = Call[defaultConstruct] : func:r1415_1 +# 1415| m1415_3(unknown) = ^CallSideEffect : ~m1413_5 +# 1415| m1415_4(unknown) = Chi : total:m1413_5, partial:m1415_3 +# 1416| v1416_1(void) = NoOp : +# 1406| v1406_5(void) = ReturnVoid : +# 1406| v1406_6(void) = AliasedUse : ~m1415_4 +# 1406| v1406_7(void) = ExitFunction : + +# 1423| void temporary_unusual_fields() +# 1423| Block 0 +# 1423| v1423_1(void) = EnterFunction : +# 1423| m1423_2(unknown) = AliasedDefinition : +# 1423| m1423_3(unknown) = InitializeNonLocal : +# 1423| m1423_4(unknown) = Chi : total:m1423_2, partial:m1423_3 +# 1424| r1424_1(glval) = VariableAddress[rx] : +# 1424| r1424_2(glval) = FunctionAddress[returnValue] : +# 1424| r1424_3(UnusualFields) = Call[returnValue] : func:r1424_2 +# 1424| m1424_4(unknown) = ^CallSideEffect : ~m1423_4 +# 1424| m1424_5(unknown) = Chi : total:m1423_4, partial:m1424_4 +# 1424| r1424_6(glval) = VariableAddress[#temp1424:21] : +# 1424| m1424_7(UnusualFields) = Store[#temp1424:21] : &:r1424_6, r1424_3 +# 1424| r1424_8(glval) = FieldAddress[r] : r1424_6 +# 1424| r1424_9(int &) = Load[?] : &:r1424_8, ~m1424_7 +# 1424| r1424_10(glval) = CopyValue : r1424_9 +# 1424| r1424_11(glval) = Convert : r1424_10 +# 1424| r1424_12(int &) = CopyValue : r1424_11 +# 1424| m1424_13(int &) = Store[rx] : &:r1424_1, r1424_12 +# 1425| r1425_1(glval) = VariableAddress[x] : # 1425| r1425_2(glval) = FunctionAddress[returnValue] : # 1425| r1425_3(UnusualFields) = Call[returnValue] : func:r1425_2 -# 1425| m1425_4(unknown) = ^CallSideEffect : ~m1423_5 -# 1425| m1425_5(unknown) = Chi : total:m1423_5, partial:m1425_4 -# 1425| r1425_6(glval) = VariableAddress[#temp1425:23] : -# 1425| m1425_7(UnusualFields) = Store[#temp1425:23] : &:r1425_6, r1425_3 -# 1425| r1425_8(glval) = FieldAddress[a] : r1425_6 -# 1425| r1425_9(float *) = Convert : r1425_8 -# 1425| r1425_10(int) = Constant[3] : -# 1425| r1425_11(glval) = PointerAdd[4] : r1425_9, r1425_10 -# 1425| r1425_12(glval) = Convert : r1425_11 -# 1425| r1425_13(float &) = CopyValue : r1425_12 -# 1425| m1425_14(float &) = Store[rf] : &:r1425_1, r1425_13 -# 1426| r1426_1(glval) = VariableAddress[f] : -# 1426| r1426_2(glval) = FunctionAddress[returnValue] : -# 1426| r1426_3(UnusualFields) = Call[returnValue] : func:r1426_2 -# 1426| m1426_4(unknown) = ^CallSideEffect : ~m1425_5 -# 1426| m1426_5(unknown) = Chi : total:m1425_5, partial:m1426_4 -# 1426| r1426_6(glval) = VariableAddress[#temp1426:15] : -# 1426| m1426_7(UnusualFields) = Store[#temp1426:15] : &:r1426_6, r1426_3 -# 1426| r1426_8(glval) = FieldAddress[a] : r1426_6 -# 1426| r1426_9(float *) = Convert : r1426_8 -# 1426| r1426_10(int) = Constant[5] : -# 1426| r1426_11(glval) = PointerAdd[4] : r1426_9, r1426_10 -# 1426| r1426_12(float) = Load[?] : &:r1426_11, ~m1426_7 -# 1426| m1426_13(float) = Store[f] : &:r1426_1, r1426_12 -# 1427| v1427_1(void) = NoOp : -# 1421| v1421_5(void) = ReturnVoid : -# 1421| v1421_6(void) = AliasedUse : ~m1426_5 -# 1421| v1421_7(void) = ExitFunction : - -# 1443| void temporary_hierarchy() -# 1443| Block 0 -# 1443| v1443_1(void) = EnterFunction : -# 1443| m1443_2(unknown) = AliasedDefinition : -# 1443| m1443_3(unknown) = InitializeNonLocal : -# 1443| m1443_4(unknown) = Chi : total:m1443_2, partial:m1443_3 -# 1444| r1444_1(glval) = VariableAddress[b] : +# 1425| m1425_4(unknown) = ^CallSideEffect : ~m1424_5 +# 1425| m1425_5(unknown) = Chi : total:m1424_5, partial:m1425_4 +# 1425| r1425_6(glval) = VariableAddress[#temp1425:13] : +# 1425| m1425_7(UnusualFields) = Store[#temp1425:13] : &:r1425_6, r1425_3 +# 1425| r1425_8(glval) = FieldAddress[r] : r1425_6 +# 1425| r1425_9(int &) = Load[?] : &:r1425_8, ~m1425_7 +# 1425| r1425_10(int) = Load[?] : &:r1425_9, ~m1425_5 +# 1425| m1425_11(int) = Store[x] : &:r1425_1, r1425_10 +# 1427| r1427_1(glval) = VariableAddress[rf] : +# 1427| r1427_2(glval) = FunctionAddress[returnValue] : +# 1427| r1427_3(UnusualFields) = Call[returnValue] : func:r1427_2 +# 1427| m1427_4(unknown) = ^CallSideEffect : ~m1425_5 +# 1427| m1427_5(unknown) = Chi : total:m1425_5, partial:m1427_4 +# 1427| r1427_6(glval) = VariableAddress[#temp1427:23] : +# 1427| m1427_7(UnusualFields) = Store[#temp1427:23] : &:r1427_6, r1427_3 +# 1427| r1427_8(glval) = FieldAddress[a] : r1427_6 +# 1427| r1427_9(float *) = Convert : r1427_8 +# 1427| r1427_10(int) = Constant[3] : +# 1427| r1427_11(glval) = PointerAdd[4] : r1427_9, r1427_10 +# 1427| r1427_12(glval) = Convert : r1427_11 +# 1427| r1427_13(float &) = CopyValue : r1427_12 +# 1427| m1427_14(float &) = Store[rf] : &:r1427_1, r1427_13 +# 1428| r1428_1(glval) = VariableAddress[f] : +# 1428| r1428_2(glval) = FunctionAddress[returnValue] : +# 1428| r1428_3(UnusualFields) = Call[returnValue] : func:r1428_2 +# 1428| m1428_4(unknown) = ^CallSideEffect : ~m1427_5 +# 1428| m1428_5(unknown) = Chi : total:m1427_5, partial:m1428_4 +# 1428| r1428_6(glval) = VariableAddress[#temp1428:15] : +# 1428| m1428_7(UnusualFields) = Store[#temp1428:15] : &:r1428_6, r1428_3 +# 1428| r1428_8(glval) = FieldAddress[a] : r1428_6 +# 1428| r1428_9(float *) = Convert : r1428_8 +# 1428| r1428_10(int) = Constant[5] : +# 1428| r1428_11(glval) = PointerAdd[4] : r1428_9, r1428_10 +# 1428| r1428_12(float) = Load[?] : &:r1428_11, ~m1428_7 +# 1428| m1428_13(float) = Store[f] : &:r1428_1, r1428_12 +# 1429| v1429_1(void) = NoOp : +# 1423| v1423_5(void) = ReturnVoid : +# 1423| v1423_6(void) = AliasedUse : ~m1428_5 +# 1423| v1423_7(void) = ExitFunction : + +# 1445| void temporary_hierarchy() +# 1445| Block 0 +# 1445| v1445_1(void) = EnterFunction : +# 1445| m1445_2(unknown) = AliasedDefinition : +# 1445| m1445_3(unknown) = InitializeNonLocal : +# 1445| m1445_4(unknown) = Chi : total:m1445_2, partial:m1445_3 +# 1446| r1446_1(glval) = VariableAddress[b] : #-----| r0_1(glval) = VariableAddress[#temp0:0] : -# 1444| r1444_2(glval) = FunctionAddress[returnValue] : -# 1444| r1444_3(POD_Middle) = Call[returnValue] : func:r1444_2 -# 1444| m1444_4(unknown) = ^CallSideEffect : ~m1443_4 -# 1444| m1444_5(unknown) = Chi : total:m1443_4, partial:m1444_4 -# 1444| m1444_6(POD_Middle) = Store[#temp0:0] : &:r0_1, r1444_3 -#-----| r0_2(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 -#-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m1444_6 -#-----| m0_4(POD_Base) = Store[b] : &:r1444_1, r0_3 -# 1445| r1445_1(glval) = VariableAddress[#temp1445:9] : -# 1445| r1445_2(glval) = FunctionAddress[returnValue] : -# 1445| r1445_3(POD_Derived) = Call[returnValue] : func:r1445_2 -# 1445| m1445_4(unknown) = ^CallSideEffect : ~m1444_5 -# 1445| m1445_5(unknown) = Chi : total:m1444_5, partial:m1445_4 -# 1445| m1445_6(POD_Derived) = Store[#temp1445:9] : &:r1445_1, r1445_3 -# 1445| r1445_7(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1445_1 -# 1445| r1445_8(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1445_7 -# 1445| r1445_9(POD_Base) = Load[?] : &:r1445_8, ~m1445_6 -# 1445| r1445_10(glval) = VariableAddress[b] : -# 1445| m1445_11(POD_Base) = Store[b] : &:r1445_10, r1445_9 -# 1446| r1446_1(glval) = VariableAddress[x] : -#-----| r0_5(glval) = VariableAddress[#temp0:0] : # 1446| r1446_2(glval) = FunctionAddress[returnValue] : -# 1446| r1446_3(POD_Derived) = Call[returnValue] : func:r1446_2 -# 1446| m1446_4(unknown) = ^CallSideEffect : ~m1445_5 -# 1446| m1446_5(unknown) = Chi : total:m1445_5, partial:m1446_4 -# 1446| m1446_6(POD_Derived) = Store[#temp0:0] : &:r0_5, r1446_3 -#-----| r0_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 -#-----| r0_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 -# 1446| r1446_7(glval) = FieldAddress[x] : r0_7 -# 1446| r1446_8(int) = Load[?] : &:r1446_7, ~m1446_6 -# 1446| m1446_9(int) = Store[x] : &:r1446_1, r1446_8 -# 1447| r1447_1(glval) = VariableAddress[f] : -#-----| r0_8(glval) = VariableAddress[#temp0:0] : +# 1446| r1446_3(POD_Middle) = Call[returnValue] : func:r1446_2 +# 1446| m1446_4(unknown) = ^CallSideEffect : ~m1445_4 +# 1446| m1446_5(unknown) = Chi : total:m1445_4, partial:m1446_4 +# 1446| m1446_6(POD_Middle) = Store[#temp0:0] : &:r0_1, r1446_3 +#-----| r0_2(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 +#-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m1446_6 +#-----| m0_4(POD_Base) = Store[b] : &:r1446_1, r0_3 +# 1447| r1447_1(glval) = VariableAddress[#temp1447:9] : # 1447| r1447_2(glval) = FunctionAddress[returnValue] : # 1447| r1447_3(POD_Derived) = Call[returnValue] : func:r1447_2 # 1447| m1447_4(unknown) = ^CallSideEffect : ~m1446_5 # 1447| m1447_5(unknown) = Chi : total:m1446_5, partial:m1447_4 -# 1447| m1447_6(POD_Derived) = Store[#temp0:0] : &:r0_8, r1447_3 +# 1447| m1447_6(POD_Derived) = Store[#temp1447:9] : &:r1447_1, r1447_3 +# 1447| r1447_7(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1447_1 +# 1447| r1447_8(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1447_7 +# 1447| r1447_9(POD_Base) = Load[?] : &:r1447_8, ~m1447_6 +# 1447| r1447_10(glval) = VariableAddress[b] : +# 1447| m1447_11(POD_Base) = Store[b] : &:r1447_10, r1447_9 +# 1448| r1448_1(glval) = VariableAddress[x] : +#-----| r0_5(glval) = VariableAddress[#temp0:0] : +# 1448| r1448_2(glval) = FunctionAddress[returnValue] : +# 1448| r1448_3(POD_Derived) = Call[returnValue] : func:r1448_2 +# 1448| m1448_4(unknown) = ^CallSideEffect : ~m1447_5 +# 1448| m1448_5(unknown) = Chi : total:m1447_5, partial:m1448_4 +# 1448| m1448_6(POD_Derived) = Store[#temp0:0] : &:r0_5, r1448_3 +#-----| r0_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 +#-----| r0_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 +# 1448| r1448_7(glval) = FieldAddress[x] : r0_7 +# 1448| r1448_8(int) = Load[?] : &:r1448_7, ~m1448_6 +# 1448| m1448_9(int) = Store[x] : &:r1448_1, r1448_8 +# 1449| r1449_1(glval) = VariableAddress[f] : +#-----| r0_8(glval) = VariableAddress[#temp0:0] : +# 1449| r1449_2(glval) = FunctionAddress[returnValue] : +# 1449| r1449_3(POD_Derived) = Call[returnValue] : func:r1449_2 +# 1449| m1449_4(unknown) = ^CallSideEffect : ~m1448_5 +# 1449| m1449_5(unknown) = Chi : total:m1448_5, partial:m1449_4 +# 1449| m1449_6(POD_Derived) = Store[#temp0:0] : &:r0_8, r1449_3 #-----| r0_9(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_8 #-----| r0_10(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_9 #-----| r0_11(glval) = Convert : r0_10 -# 1447| r1447_7(glval) = FunctionAddress[f] : -# 1447| r1447_8(float) = Call[f] : func:r1447_7, this:r0_11 -# 1447| m1447_9(unknown) = ^CallSideEffect : ~m1447_5 -# 1447| m1447_10(unknown) = Chi : total:m1447_5, partial:m1447_9 -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1447_6 -# 1447| m1447_11(float) = Store[f] : &:r1447_1, r1447_8 -# 1448| v1448_1(void) = NoOp : -# 1443| v1443_5(void) = ReturnVoid : -# 1443| v1443_6(void) = AliasedUse : ~m1447_10 -# 1443| v1443_7(void) = ExitFunction : - -# 1451| void Inheritance_Test_B::~Inheritance_Test_B() -# 1451| Block 0 -# 1451| v1451_1(void) = EnterFunction : -# 1451| m1451_2(unknown) = AliasedDefinition : -# 1451| m1451_3(unknown) = InitializeNonLocal : -# 1451| m1451_4(unknown) = Chi : total:m1451_2, partial:m1451_3 -# 1451| r1451_5(glval) = VariableAddress[#this] : -# 1451| m1451_6(glval) = InitializeParameter[#this] : &:r1451_5 -# 1451| r1451_7(glval) = Load[#this] : &:r1451_5, m1451_6 -# 1451| m1451_8(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1451_7 -# 1451| v1451_9(void) = NoOp : -# 1451| v1451_10(void) = ReturnIndirection[#this] : &:r1451_7, m1451_8 -# 1451| v1451_11(void) = ReturnVoid : -# 1451| v1451_12(void) = AliasedUse : m1451_3 -# 1451| v1451_13(void) = ExitFunction : - -# 1457| void Inheritance_Test_A::Inheritance_Test_A() -# 1457| Block 0 -# 1457| v1457_1(void) = EnterFunction : -# 1457| m1457_2(unknown) = AliasedDefinition : -# 1457| m1457_3(unknown) = InitializeNonLocal : -# 1457| m1457_4(unknown) = Chi : total:m1457_2, partial:m1457_3 -# 1457| r1457_5(glval) = VariableAddress[#this] : -# 1457| m1457_6(glval) = InitializeParameter[#this] : &:r1457_5 -# 1457| r1457_7(glval) = Load[#this] : &:r1457_5, m1457_6 -# 1457| m1457_8(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1457_7 -# 1457| r1457_9(glval) = FieldAddress[x] : m1457_6 -# 1457| r1457_10(int) = Constant[42] : -# 1457| m1457_11(int) = Store[?] : &:r1457_9, r1457_10 -# 1457| m1457_12(unknown) = Chi : total:m1457_8, partial:m1457_11 -# 1458| r1458_1(int) = Constant[3] : -# 1458| r1458_2(glval) = VariableAddress[#this] : -# 1458| r1458_3(Inheritance_Test_A *) = Load[#this] : &:r1458_2, m1457_6 -# 1458| r1458_4(glval) = FieldAddress[y] : r1458_3 -# 1458| m1458_5(int) = Store[?] : &:r1458_4, r1458_1 -# 1458| m1458_6(unknown) = Chi : total:m1457_12, partial:m1458_5 -# 1459| v1459_1(void) = NoOp : -# 1457| v1457_13(void) = ReturnIndirection[#this] : &:r1457_7, m1458_6 -# 1457| v1457_14(void) = ReturnVoid : -# 1457| v1457_15(void) = AliasedUse : m1457_3 -# 1457| v1457_16(void) = ExitFunction : - -# 1462| void array_structured_binding() -# 1462| Block 0 -# 1462| v1462_1(void) = EnterFunction : -# 1462| m1462_2(unknown) = AliasedDefinition : -# 1462| m1462_3(unknown) = InitializeNonLocal : -# 1462| m1462_4(unknown) = Chi : total:m1462_2, partial:m1462_3 -# 1463| r1463_1(glval) = VariableAddress[xs] : -# 1463| m1463_2(int[2]) = Uninitialized[xs] : &:r1463_1 -# 1463| r1463_3(int) = Constant[0] : -# 1463| r1463_4(glval) = PointerAdd[4] : r1463_1, r1463_3 -# 1463| r1463_5(int) = Constant[1] : -# 1463| m1463_6(int) = Store[?] : &:r1463_4, r1463_5 -# 1463| m1463_7(int[2]) = Chi : total:m1463_2, partial:m1463_6 -# 1463| r1463_8(int) = Constant[1] : -# 1463| r1463_9(glval) = PointerAdd[4] : r1463_1, r1463_8 -# 1463| r1463_10(int) = Constant[2] : -# 1463| m1463_11(int) = Store[?] : &:r1463_9, r1463_10 -# 1463| m1463_12(int[2]) = Chi : total:m1463_7, partial:m1463_11 -# 1466| r1466_1(glval) = VariableAddress[(unnamed local variable)] : -# 1466| r1466_2(glval) = VariableAddress[xs] : -# 1466| r1466_3(int(&)[2]) = CopyValue : r1466_2 -# 1466| m1466_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1466_1, r1466_3 -# 1466| r1466_5(glval) = VariableAddress[x0] : +# 1449| r1449_7(glval) = FunctionAddress[f] : +# 1449| r1449_8(float) = Call[f] : func:r1449_7, this:r0_11 +# 1449| m1449_9(unknown) = ^CallSideEffect : ~m1449_5 +# 1449| m1449_10(unknown) = Chi : total:m1449_5, partial:m1449_9 +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1449_6 +# 1449| m1449_11(float) = Store[f] : &:r1449_1, r1449_8 +# 1450| v1450_1(void) = NoOp : +# 1445| v1445_5(void) = ReturnVoid : +# 1445| v1445_6(void) = AliasedUse : ~m1449_10 +# 1445| v1445_7(void) = ExitFunction : + +# 1453| void Inheritance_Test_B::~Inheritance_Test_B() +# 1453| Block 0 +# 1453| v1453_1(void) = EnterFunction : +# 1453| m1453_2(unknown) = AliasedDefinition : +# 1453| m1453_3(unknown) = InitializeNonLocal : +# 1453| m1453_4(unknown) = Chi : total:m1453_2, partial:m1453_3 +# 1453| r1453_5(glval) = VariableAddress[#this] : +# 1453| m1453_6(glval) = InitializeParameter[#this] : &:r1453_5 +# 1453| r1453_7(glval) = Load[#this] : &:r1453_5, m1453_6 +# 1453| m1453_8(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1453_7 +# 1453| v1453_9(void) = NoOp : +# 1453| v1453_10(void) = ReturnIndirection[#this] : &:r1453_7, m1453_8 +# 1453| v1453_11(void) = ReturnVoid : +# 1453| v1453_12(void) = AliasedUse : m1453_3 +# 1453| v1453_13(void) = ExitFunction : + +# 1459| void Inheritance_Test_A::Inheritance_Test_A() +# 1459| Block 0 +# 1459| v1459_1(void) = EnterFunction : +# 1459| m1459_2(unknown) = AliasedDefinition : +# 1459| m1459_3(unknown) = InitializeNonLocal : +# 1459| m1459_4(unknown) = Chi : total:m1459_2, partial:m1459_3 +# 1459| r1459_5(glval) = VariableAddress[#this] : +# 1459| m1459_6(glval) = InitializeParameter[#this] : &:r1459_5 +# 1459| r1459_7(glval) = Load[#this] : &:r1459_5, m1459_6 +# 1459| m1459_8(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1459_7 +# 1459| r1459_9(glval) = FieldAddress[x] : m1459_6 +# 1459| r1459_10(int) = Constant[42] : +# 1459| m1459_11(int) = Store[?] : &:r1459_9, r1459_10 +# 1459| m1459_12(unknown) = Chi : total:m1459_8, partial:m1459_11 +# 1460| r1460_1(int) = Constant[3] : +# 1460| r1460_2(glval) = VariableAddress[#this] : +# 1460| r1460_3(Inheritance_Test_A *) = Load[#this] : &:r1460_2, m1459_6 +# 1460| r1460_4(glval) = FieldAddress[y] : r1460_3 +# 1460| m1460_5(int) = Store[?] : &:r1460_4, r1460_1 +# 1460| m1460_6(unknown) = Chi : total:m1459_12, partial:m1460_5 +# 1461| v1461_1(void) = NoOp : +# 1459| v1459_13(void) = ReturnIndirection[#this] : &:r1459_7, m1460_6 +# 1459| v1459_14(void) = ReturnVoid : +# 1459| v1459_15(void) = AliasedUse : m1459_3 +# 1459| v1459_16(void) = ExitFunction : + +# 1464| void array_structured_binding() +# 1464| Block 0 +# 1464| v1464_1(void) = EnterFunction : +# 1464| m1464_2(unknown) = AliasedDefinition : +# 1464| m1464_3(unknown) = InitializeNonLocal : +# 1464| m1464_4(unknown) = Chi : total:m1464_2, partial:m1464_3 +# 1465| r1465_1(glval) = VariableAddress[xs] : +# 1465| m1465_2(int[2]) = Uninitialized[xs] : &:r1465_1 +# 1465| r1465_3(int) = Constant[0] : +# 1465| r1465_4(glval) = PointerAdd[4] : r1465_1, r1465_3 +# 1465| r1465_5(int) = Constant[1] : +# 1465| m1465_6(int) = Store[?] : &:r1465_4, r1465_5 +# 1465| m1465_7(int[2]) = Chi : total:m1465_2, partial:m1465_6 +# 1465| r1465_8(int) = Constant[1] : +# 1465| r1465_9(glval) = PointerAdd[4] : r1465_1, r1465_8 +# 1465| r1465_10(int) = Constant[2] : +# 1465| m1465_11(int) = Store[?] : &:r1465_9, r1465_10 +# 1465| m1465_12(int[2]) = Chi : total:m1465_7, partial:m1465_11 +# 1468| r1468_1(glval) = VariableAddress[(unnamed local variable)] : +# 1468| r1468_2(glval) = VariableAddress[xs] : +# 1468| r1468_3(int(&)[2]) = CopyValue : r1468_2 +# 1468| m1468_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1468_1, r1468_3 +# 1468| r1468_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, m1466_4 +#-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, m1468_4 #-----| r0_3(glval) = CopyValue : r0_2 #-----| r0_4(int *) = Convert : r0_3 #-----| r0_5(unsigned long) = Constant[0] : #-----| r0_6(glval) = PointerAdd[4] : r0_4, r0_5 -#-----| m0_7(int &) = Store[x0] : &:r1466_5, r0_6 -# 1466| r1466_6(glval) = VariableAddress[x1] : +#-----| m0_7(int &) = Store[x0] : &:r1468_5, r0_6 +# 1468| r1468_6(glval) = VariableAddress[x1] : #-----| r0_8(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, m1466_4 +#-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, m1468_4 #-----| r0_10(glval) = CopyValue : r0_9 #-----| r0_11(int *) = Convert : r0_10 #-----| r0_12(unsigned long) = Constant[1] : #-----| r0_13(glval) = PointerAdd[4] : r0_11, r0_12 -#-----| m0_14(int &) = Store[x1] : &:r1466_6, r0_13 -# 1467| r1467_1(int) = Constant[3] : -# 1467| r1467_2(glval) = VariableAddress[x1] : -# 1467| r1467_3(int &) = Load[x1] : &:r1467_2, m0_14 -# 1467| m1467_4(int) = Store[?] : &:r1467_3, r1467_1 -# 1467| m1467_5(int[2]) = Chi : total:m1463_12, partial:m1467_4 -# 1468| r1468_1(glval) = VariableAddress[rx1] : -# 1468| r1468_2(glval) = VariableAddress[x1] : -# 1468| r1468_3(int &) = Load[x1] : &:r1468_2, m0_14 -# 1468| r1468_4(int &) = CopyValue : r1468_3 -# 1468| m1468_5(int &) = Store[rx1] : &:r1468_1, r1468_4 -# 1469| r1469_1(glval) = VariableAddress[x] : +#-----| m0_14(int &) = Store[x1] : &:r1468_6, r0_13 +# 1469| r1469_1(int) = Constant[3] : # 1469| r1469_2(glval) = VariableAddress[x1] : # 1469| r1469_3(int &) = Load[x1] : &:r1469_2, m0_14 -# 1469| r1469_4(int) = Load[?] : &:r1469_3, m1467_4 -# 1469| m1469_5(int) = Store[x] : &:r1469_1, r1469_4 -# 1473| r1473_1(glval) = VariableAddress[unnamed_local_variable] : -# 1473| r1473_2(glval) = VariableAddress[xs] : -# 1473| r1473_3(int(&)[2]) = CopyValue : r1473_2 -# 1473| m1473_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1473_1, r1473_3 -# 1474| r1474_1(glval) = VariableAddress[x0] : -# 1474| r1474_2(glval) = VariableAddress[unnamed_local_variable] : -# 1474| r1474_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1474_2, m1473_4 -# 1474| r1474_4(glval) = CopyValue : r1474_3 -# 1474| r1474_5(int *) = Convert : r1474_4 -# 1474| r1474_6(int) = Constant[0] : -# 1474| r1474_7(glval) = PointerAdd[4] : r1474_5, r1474_6 -# 1474| r1474_8(int &) = CopyValue : r1474_7 -# 1474| m1474_9(int &) = Store[x0] : &:r1474_1, r1474_8 -# 1475| r1475_1(glval) = VariableAddress[x1] : -# 1475| r1475_2(glval) = VariableAddress[unnamed_local_variable] : -# 1475| r1475_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1475_2, m1473_4 -# 1475| r1475_4(glval) = CopyValue : r1475_3 -# 1475| r1475_5(int *) = Convert : r1475_4 -# 1475| r1475_6(int) = Constant[1] : -# 1475| r1475_7(glval) = PointerAdd[4] : r1475_5, r1475_6 -# 1475| r1475_8(int &) = CopyValue : r1475_7 -# 1475| m1475_9(int &) = Store[x1] : &:r1475_1, r1475_8 -# 1476| r1476_1(int) = Constant[3] : -# 1476| r1476_2(glval) = VariableAddress[x1] : -# 1476| r1476_3(int &) = Load[x1] : &:r1476_2, m1475_9 -# 1476| r1476_4(glval) = CopyValue : r1476_3 -# 1476| m1476_5(int) = Store[?] : &:r1476_4, r1476_1 -# 1476| m1476_6(int[2]) = Chi : total:m1467_5, partial:m1476_5 -# 1477| r1477_1(glval) = VariableAddress[rx1] : -# 1477| r1477_2(glval) = VariableAddress[x1] : -# 1477| r1477_3(int &) = Load[x1] : &:r1477_2, m1475_9 -# 1477| r1477_4(glval) = CopyValue : r1477_3 -# 1477| r1477_5(int &) = CopyValue : r1477_4 -# 1477| m1477_6(int &) = Store[rx1] : &:r1477_1, r1477_5 -# 1478| r1478_1(glval) = VariableAddress[x] : +# 1469| m1469_4(int) = Store[?] : &:r1469_3, r1469_1 +# 1469| m1469_5(int[2]) = Chi : total:m1465_12, partial:m1469_4 +# 1470| r1470_1(glval) = VariableAddress[rx1] : +# 1470| r1470_2(glval) = VariableAddress[x1] : +# 1470| r1470_3(int &) = Load[x1] : &:r1470_2, m0_14 +# 1470| r1470_4(int &) = CopyValue : r1470_3 +# 1470| m1470_5(int &) = Store[rx1] : &:r1470_1, r1470_4 +# 1471| r1471_1(glval) = VariableAddress[x] : +# 1471| r1471_2(glval) = VariableAddress[x1] : +# 1471| r1471_3(int &) = Load[x1] : &:r1471_2, m0_14 +# 1471| r1471_4(int) = Load[?] : &:r1471_3, m1469_4 +# 1471| m1471_5(int) = Store[x] : &:r1471_1, r1471_4 +# 1475| r1475_1(glval) = VariableAddress[unnamed_local_variable] : +# 1475| r1475_2(glval) = VariableAddress[xs] : +# 1475| r1475_3(int(&)[2]) = CopyValue : r1475_2 +# 1475| m1475_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1475_1, r1475_3 +# 1476| r1476_1(glval) = VariableAddress[x0] : +# 1476| r1476_2(glval) = VariableAddress[unnamed_local_variable] : +# 1476| r1476_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1476_2, m1475_4 +# 1476| r1476_4(glval) = CopyValue : r1476_3 +# 1476| r1476_5(int *) = Convert : r1476_4 +# 1476| r1476_6(int) = Constant[0] : +# 1476| r1476_7(glval) = PointerAdd[4] : r1476_5, r1476_6 +# 1476| r1476_8(int &) = CopyValue : r1476_7 +# 1476| m1476_9(int &) = Store[x0] : &:r1476_1, r1476_8 +# 1477| r1477_1(glval) = VariableAddress[x1] : +# 1477| r1477_2(glval) = VariableAddress[unnamed_local_variable] : +# 1477| r1477_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1477_2, m1475_4 +# 1477| r1477_4(glval) = CopyValue : r1477_3 +# 1477| r1477_5(int *) = Convert : r1477_4 +# 1477| r1477_6(int) = Constant[1] : +# 1477| r1477_7(glval) = PointerAdd[4] : r1477_5, r1477_6 +# 1477| r1477_8(int &) = CopyValue : r1477_7 +# 1477| m1477_9(int &) = Store[x1] : &:r1477_1, r1477_8 +# 1478| r1478_1(int) = Constant[3] : # 1478| r1478_2(glval) = VariableAddress[x1] : -# 1478| r1478_3(int &) = Load[x1] : &:r1478_2, m1475_9 -# 1478| r1478_4(int) = Load[?] : &:r1478_3, m1476_5 -# 1478| m1478_5(int) = Store[x] : &:r1478_1, r1478_4 -# 1480| v1480_1(void) = NoOp : -# 1462| v1462_5(void) = ReturnVoid : -# 1462| v1462_6(void) = AliasedUse : m1462_3 -# 1462| v1462_7(void) = ExitFunction : - -# 1482| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1482| Block 0 -# 1482| v1482_1(void) = EnterFunction : -# 1482| m1482_2(unknown) = AliasedDefinition : -# 1482| m1482_3(unknown) = InitializeNonLocal : -# 1482| m1482_4(unknown) = Chi : total:m1482_2, partial:m1482_3 -# 1482| r1482_5(glval) = VariableAddress[#this] : -# 1482| m1482_6(glval) = InitializeParameter[#this] : &:r1482_5 -# 1482| r1482_7(glval) = Load[#this] : &:r1482_5, m1482_6 -# 1482| m1482_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1482_7 -# 1482| v1482_9(void) = NoOp : -# 1482| v1482_10(void) = ReturnIndirection[#this] : &:r1482_7, m1482_8 -# 1482| v1482_11(void) = ReturnVoid : -# 1482| v1482_12(void) = AliasedUse : m1482_3 -# 1482| v1482_13(void) = ExitFunction : - -# 1486| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1486| Block 0 -# 1486| v1486_1(void) = EnterFunction : -# 1486| m1486_2(unknown) = AliasedDefinition : -# 1486| m1486_3(unknown) = InitializeNonLocal : -# 1486| m1486_4(unknown) = Chi : total:m1486_2, partial:m1486_3 -# 1486| r1486_5(glval) = VariableAddress[#this] : -# 1486| m1486_6(glval) = InitializeParameter[#this] : &:r1486_5 -# 1486| r1486_7(glval) = Load[#this] : &:r1486_5, m1486_6 -# 1486| m1486_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1486_7 -# 1486| v1486_9(void) = NoOp : -# 1486| v1486_10(void) = ReturnIndirection[#this] : &:r1486_7, m1486_8 -# 1486| v1486_11(void) = ReturnVoid : -# 1486| v1486_12(void) = AliasedUse : m1486_3 -# 1486| v1486_13(void) = ExitFunction : - -# 1486| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1486| Block 0 -# 1486| v1486_1(void) = EnterFunction : -# 1486| m1486_2(unknown) = AliasedDefinition : -# 1486| m1486_3(unknown) = InitializeNonLocal : -# 1486| m1486_4(unknown) = Chi : total:m1486_2, partial:m1486_3 -# 1486| r1486_5(glval) = VariableAddress[#this] : -# 1486| m1486_6(glval) = InitializeParameter[#this] : &:r1486_5 -# 1486| r1486_7(glval) = Load[#this] : &:r1486_5, m1486_6 -# 1486| m1486_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1486_7 +# 1478| r1478_3(int &) = Load[x1] : &:r1478_2, m1477_9 +# 1478| r1478_4(glval) = CopyValue : r1478_3 +# 1478| m1478_5(int) = Store[?] : &:r1478_4, r1478_1 +# 1478| m1478_6(int[2]) = Chi : total:m1469_5, partial:m1478_5 +# 1479| r1479_1(glval) = VariableAddress[rx1] : +# 1479| r1479_2(glval) = VariableAddress[x1] : +# 1479| r1479_3(int &) = Load[x1] : &:r1479_2, m1477_9 +# 1479| r1479_4(glval) = CopyValue : r1479_3 +# 1479| r1479_5(int &) = CopyValue : r1479_4 +# 1479| m1479_6(int &) = Store[rx1] : &:r1479_1, r1479_5 +# 1480| r1480_1(glval) = VariableAddress[x] : +# 1480| r1480_2(glval) = VariableAddress[x1] : +# 1480| r1480_3(int &) = Load[x1] : &:r1480_2, m1477_9 +# 1480| r1480_4(int) = Load[?] : &:r1480_3, m1478_5 +# 1480| m1480_5(int) = Store[x] : &:r1480_1, r1480_4 +# 1482| v1482_1(void) = NoOp : +# 1464| v1464_5(void) = ReturnVoid : +# 1464| v1464_6(void) = AliasedUse : m1464_3 +# 1464| v1464_7(void) = ExitFunction : + +# 1484| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1484| Block 0 +# 1484| v1484_1(void) = EnterFunction : +# 1484| m1484_2(unknown) = AliasedDefinition : +# 1484| m1484_3(unknown) = InitializeNonLocal : +# 1484| m1484_4(unknown) = Chi : total:m1484_2, partial:m1484_3 +# 1484| r1484_5(glval) = VariableAddress[#this] : +# 1484| m1484_6(glval) = InitializeParameter[#this] : &:r1484_5 +# 1484| r1484_7(glval) = Load[#this] : &:r1484_5, m1484_6 +# 1484| m1484_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1484_7 +# 1484| v1484_9(void) = NoOp : +# 1484| v1484_10(void) = ReturnIndirection[#this] : &:r1484_7, m1484_8 +# 1484| v1484_11(void) = ReturnVoid : +# 1484| v1484_12(void) = AliasedUse : m1484_3 +# 1484| v1484_13(void) = ExitFunction : + +# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1488| Block 0 +# 1488| v1488_1(void) = EnterFunction : +# 1488| m1488_2(unknown) = AliasedDefinition : +# 1488| m1488_3(unknown) = InitializeNonLocal : +# 1488| m1488_4(unknown) = Chi : total:m1488_2, partial:m1488_3 +# 1488| r1488_5(glval) = VariableAddress[#this] : +# 1488| m1488_6(glval) = InitializeParameter[#this] : &:r1488_5 +# 1488| r1488_7(glval) = Load[#this] : &:r1488_5, m1488_6 +# 1488| m1488_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_7 +# 1488| v1488_9(void) = NoOp : +# 1488| v1488_10(void) = ReturnIndirection[#this] : &:r1488_7, m1488_8 +# 1488| v1488_11(void) = ReturnVoid : +# 1488| v1488_12(void) = AliasedUse : m1488_3 +# 1488| v1488_13(void) = ExitFunction : + +# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1488| Block 0 +# 1488| v1488_1(void) = EnterFunction : +# 1488| m1488_2(unknown) = AliasedDefinition : +# 1488| m1488_3(unknown) = InitializeNonLocal : +# 1488| m1488_4(unknown) = Chi : total:m1488_2, partial:m1488_3 +# 1488| r1488_5(glval) = VariableAddress[#this] : +# 1488| m1488_6(glval) = InitializeParameter[#this] : &:r1488_5 +# 1488| r1488_7(glval) = Load[#this] : &:r1488_5, m1488_6 +# 1488| m1488_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(StructuredBindingDataMemberStruct &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1486| r1486_9(glval) = FieldAddress[i] : m1486_6 -# 1486| r1486_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_11(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_10, m0_2 -# 1486| r1486_12(glval) = CopyValue : r1486_11 -# 1486| r1486_13(glval) = FieldAddress[i] : r1486_12 -# 1486| r1486_14(int) = Load[?] : &:r1486_13, ~m0_4 -# 1486| m1486_15(int) = Store[?] : &:r1486_9, r1486_14 -# 1486| m1486_16(unknown) = Chi : total:m1486_8, partial:m1486_15 -# 1486| r1486_17(glval) = FieldAddress[d] : m1486_6 -# 1486| r1486_18(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_19(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_18, m0_2 -# 1486| r1486_20(glval) = CopyValue : r1486_19 -# 1486| r1486_21(glval) = FieldAddress[d] : r1486_20 -# 1486| r1486_22(double) = Load[?] : &:r1486_21, ~m0_4 -# 1486| m1486_23(double) = Store[?] : &:r1486_17, r1486_22 -# 1486| m1486_24(unknown) = Chi : total:m1486_16, partial:m1486_23 -# 1486| r1486_25(glval) = FieldAddress[b] : m1486_6 -# 1486| r1486_26(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_27(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_26, m0_2 -# 1486| r1486_28(glval) = CopyValue : r1486_27 -# 1486| r1486_29(glval) = FieldAddress[b] : r1486_28 -# 1486| r1486_30(unsigned int) = Load[?] : &:r1486_29, ~m0_4 -# 1486| m1486_31(unsigned int) = Store[?] : &:r1486_25, r1486_30 -# 1486| m1486_32(unknown) = Chi : total:m1486_24, partial:m1486_31 -# 1486| r1486_33(glval) = FieldAddress[r] : m1486_6 -# 1486| r1486_34(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_35(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_34, m0_2 -# 1486| r1486_36(glval) = CopyValue : r1486_35 -# 1486| r1486_37(glval) = FieldAddress[r] : r1486_36 -# 1486| r1486_38(int &) = Load[?] : &:r1486_37, ~m0_4 -# 1486| m1486_39(int &) = Store[?] : &:r1486_33, r1486_38 -# 1486| m1486_40(unknown) = Chi : total:m1486_32, partial:m1486_39 -# 1486| r1486_41(glval) = FieldAddress[p] : m1486_6 -# 1486| r1486_42(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_43(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_42, m0_2 -# 1486| r1486_44(glval) = CopyValue : r1486_43 -# 1486| r1486_45(glval) = FieldAddress[p] : r1486_44 -# 1486| r1486_46(int *) = Load[?] : &:r1486_45, ~m0_4 -# 1486| m1486_47(int *) = Store[?] : &:r1486_41, r1486_46 -# 1486| m1486_48(unknown) = Chi : total:m1486_40, partial:m1486_47 -# 1486| r1486_49(glval) = FieldAddress[xs] : m1486_6 -# 1486| r1486_50(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_51(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_50, m0_2 -# 1486| r1486_52(glval) = CopyValue : r1486_51 -# 1486| r1486_53(glval) = FieldAddress[xs] : r1486_52 -# 1486| r1486_54(int[2]) = Load[?] : &:r1486_53, ~m0_4 -# 1486| m1486_55(int[2]) = Store[?] : &:r1486_49, r1486_54 -# 1486| m1486_56(unknown) = Chi : total:m1486_48, partial:m1486_55 -# 1486| r1486_57(glval) = FieldAddress[r_alt] : m1486_6 -# 1486| r1486_58(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_58, m0_2 -# 1486| r1486_60(glval) = CopyValue : r1486_59 -# 1486| r1486_61(glval) = FieldAddress[r_alt] : r1486_60 -# 1486| r1486_62(int &) = Load[?] : &:r1486_61, ~m0_4 -# 1486| m1486_63(int &) = Store[?] : &:r1486_57, r1486_62 -# 1486| m1486_64(unknown) = Chi : total:m1486_56, partial:m1486_63 -# 1486| r1486_65(glval) = FieldAddress[m] : m1486_6 -# 1486| r1486_66(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_67(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_66, m0_2 -# 1486| r1486_68(glval) = CopyValue : r1486_67 -# 1486| r1486_69(glval) = FieldAddress[m] : r1486_68 -# 1486| r1486_70(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1486_69, ~m0_4 -# 1486| m1486_71(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1486_65, r1486_70 -# 1486| m1486_72(unknown) = Chi : total:m1486_64, partial:m1486_71 -# 1486| v1486_73(void) = NoOp : -# 1486| v1486_74(void) = ReturnIndirection[#this] : &:r1486_7, m1486_72 +# 1488| r1488_9(glval) = FieldAddress[i] : m1488_6 +# 1488| r1488_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_11(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_10, m0_2 +# 1488| r1488_12(glval) = CopyValue : r1488_11 +# 1488| r1488_13(glval) = FieldAddress[i] : r1488_12 +# 1488| r1488_14(int) = Load[?] : &:r1488_13, ~m0_4 +# 1488| m1488_15(int) = Store[?] : &:r1488_9, r1488_14 +# 1488| m1488_16(unknown) = Chi : total:m1488_8, partial:m1488_15 +# 1488| r1488_17(glval) = FieldAddress[d] : m1488_6 +# 1488| r1488_18(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_19(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_18, m0_2 +# 1488| r1488_20(glval) = CopyValue : r1488_19 +# 1488| r1488_21(glval) = FieldAddress[d] : r1488_20 +# 1488| r1488_22(double) = Load[?] : &:r1488_21, ~m0_4 +# 1488| m1488_23(double) = Store[?] : &:r1488_17, r1488_22 +# 1488| m1488_24(unknown) = Chi : total:m1488_16, partial:m1488_23 +# 1488| r1488_25(glval) = FieldAddress[b] : m1488_6 +# 1488| r1488_26(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_27(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_26, m0_2 +# 1488| r1488_28(glval) = CopyValue : r1488_27 +# 1488| r1488_29(glval) = FieldAddress[b] : r1488_28 +# 1488| r1488_30(unsigned int) = Load[?] : &:r1488_29, ~m0_4 +# 1488| m1488_31(unsigned int) = Store[?] : &:r1488_25, r1488_30 +# 1488| m1488_32(unknown) = Chi : total:m1488_24, partial:m1488_31 +# 1488| r1488_33(glval) = FieldAddress[r] : m1488_6 +# 1488| r1488_34(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_35(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_34, m0_2 +# 1488| r1488_36(glval) = CopyValue : r1488_35 +# 1488| r1488_37(glval) = FieldAddress[r] : r1488_36 +# 1488| r1488_38(int &) = Load[?] : &:r1488_37, ~m0_4 +# 1488| m1488_39(int &) = Store[?] : &:r1488_33, r1488_38 +# 1488| m1488_40(unknown) = Chi : total:m1488_32, partial:m1488_39 +# 1488| r1488_41(glval) = FieldAddress[p] : m1488_6 +# 1488| r1488_42(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_43(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_42, m0_2 +# 1488| r1488_44(glval) = CopyValue : r1488_43 +# 1488| r1488_45(glval) = FieldAddress[p] : r1488_44 +# 1488| r1488_46(int *) = Load[?] : &:r1488_45, ~m0_4 +# 1488| m1488_47(int *) = Store[?] : &:r1488_41, r1488_46 +# 1488| m1488_48(unknown) = Chi : total:m1488_40, partial:m1488_47 +# 1488| r1488_49(glval) = FieldAddress[xs] : m1488_6 +# 1488| r1488_50(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_51(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_50, m0_2 +# 1488| r1488_52(glval) = CopyValue : r1488_51 +# 1488| r1488_53(glval) = FieldAddress[xs] : r1488_52 +# 1488| r1488_54(int[2]) = Load[?] : &:r1488_53, ~m0_4 +# 1488| m1488_55(int[2]) = Store[?] : &:r1488_49, r1488_54 +# 1488| m1488_56(unknown) = Chi : total:m1488_48, partial:m1488_55 +# 1488| r1488_57(glval) = FieldAddress[r_alt] : m1488_6 +# 1488| r1488_58(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_58, m0_2 +# 1488| r1488_60(glval) = CopyValue : r1488_59 +# 1488| r1488_61(glval) = FieldAddress[r_alt] : r1488_60 +# 1488| r1488_62(int &) = Load[?] : &:r1488_61, ~m0_4 +# 1488| m1488_63(int &) = Store[?] : &:r1488_57, r1488_62 +# 1488| m1488_64(unknown) = Chi : total:m1488_56, partial:m1488_63 +# 1488| r1488_65(glval) = FieldAddress[m] : m1488_6 +# 1488| r1488_66(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_67(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_66, m0_2 +# 1488| r1488_68(glval) = CopyValue : r1488_67 +# 1488| r1488_69(glval) = FieldAddress[m] : r1488_68 +# 1488| r1488_70(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1488_69, ~m0_4 +# 1488| m1488_71(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1488_65, r1488_70 +# 1488| m1488_72(unknown) = Chi : total:m1488_64, partial:m1488_71 +# 1488| v1488_73(void) = NoOp : +# 1488| v1488_74(void) = ReturnIndirection[#this] : &:r1488_7, m1488_72 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1486| v1486_75(void) = ReturnVoid : -# 1486| v1486_76(void) = AliasedUse : m1486_3 -# 1486| v1486_77(void) = ExitFunction : - -# 1499| void data_member_structured_binding() -# 1499| Block 0 -# 1499| v1499_1(void) = EnterFunction : -# 1499| m1499_2(unknown) = AliasedDefinition : -# 1499| m1499_3(unknown) = InitializeNonLocal : -# 1499| m1499_4(unknown) = Chi : total:m1499_2, partial:m1499_3 -# 1500| r1500_1(glval) = VariableAddress[s] : -# 1500| m1500_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1500_1 -# 1500| r1500_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : -# 1500| v1500_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1500_3, this:r1500_1 -# 1500| m1500_5(unknown) = ^CallSideEffect : ~m1499_4 -# 1500| m1500_6(unknown) = Chi : total:m1499_4, partial:m1500_5 -# 1500| m1500_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1500_1 -# 1500| m1500_8(StructuredBindingDataMemberStruct) = Chi : total:m1500_2, partial:m1500_7 -# 1503| r1503_1(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_2(glval) = VariableAddress[s] : -# 1503| r1503_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1503_2, m1500_8 -# 1503| m1503_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1503_1, r1503_3 -# 1503| r1503_5(glval) = VariableAddress[i] : -# 1503| r1503_6(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_7(glval) = FieldAddress[i] : r1503_6 -# 1503| m1503_8(int &) = Store[i] : &:r1503_5, r1503_7 -# 1503| r1503_9(glval) = VariableAddress[d] : -# 1503| r1503_10(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_11(glval) = FieldAddress[d] : r1503_10 -# 1503| m1503_12(double &) = Store[d] : &:r1503_9, r1503_11 -# 1503| r1503_13(glval) = VariableAddress[b] : -# 1503| r1503_14(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_15(glval) = FieldAddress[b] : r1503_14 -# 1503| m1503_16(unsigned int &) = Store[b] : &:r1503_13, r1503_15 -# 1503| r1503_17(glval) = VariableAddress[r] : -# 1503| r1503_18(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_19(glval) = FieldAddress[r] : r1503_18 -# 1503| r1503_20(int &) = Load[?] : &:r1503_19, ~m1503_4 -# 1503| r1503_21(glval) = CopyValue : r1503_20 -# 1503| m1503_22(int &) = Store[r] : &:r1503_17, r1503_21 -# 1503| r1503_23(glval) = VariableAddress[p] : -# 1503| r1503_24(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_25(glval) = FieldAddress[p] : r1503_24 -# 1503| m1503_26(int *&) = Store[p] : &:r1503_23, r1503_25 -# 1503| r1503_27(glval) = VariableAddress[xs] : -# 1503| r1503_28(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_29(glval) = FieldAddress[xs] : r1503_28 -# 1503| m1503_30(int(&)[2]) = Store[xs] : &:r1503_27, r1503_29 -# 1503| r1503_31(glval) = VariableAddress[r_alt] : -# 1503| r1503_32(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_33(glval) = FieldAddress[r_alt] : r1503_32 -# 1503| r1503_34(int &) = Load[?] : &:r1503_33, ~m1503_4 -# 1503| r1503_35(glval) = CopyValue : r1503_34 -# 1503| m1503_36(int &) = Store[r_alt] : &:r1503_31, r1503_35 -# 1503| r1503_37(glval) = VariableAddress[m] : -# 1503| r1503_38(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_39(glval) = FieldAddress[m] : r1503_38 -# 1503| m1503_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1503_37, r1503_39 -# 1504| r1504_1(double) = Constant[4.0] : -# 1504| r1504_2(glval) = VariableAddress[d] : -# 1504| r1504_3(double &) = Load[d] : &:r1504_2, m1503_12 -# 1504| m1504_4(double) = Store[?] : &:r1504_3, r1504_1 -# 1504| m1504_5(StructuredBindingDataMemberStruct) = Chi : total:m1503_4, partial:m1504_4 -# 1505| r1505_1(glval) = VariableAddress[rd] : -# 1505| r1505_2(glval) = VariableAddress[d] : -# 1505| r1505_3(double &) = Load[d] : &:r1505_2, m1503_12 -# 1505| r1505_4(double &) = CopyValue : r1505_3 -# 1505| m1505_5(double &) = Store[rd] : &:r1505_1, r1505_4 -# 1506| r1506_1(glval) = VariableAddress[v] : -# 1506| r1506_2(glval) = VariableAddress[i] : -# 1506| r1506_3(int &) = Load[i] : &:r1506_2, m1503_8 -# 1506| r1506_4(int) = Load[?] : &:r1506_3, ~m1503_4 -# 1506| m1506_5(int) = Store[v] : &:r1506_1, r1506_4 -# 1507| r1507_1(int) = Constant[5] : -# 1507| r1507_2(glval) = VariableAddress[r] : -# 1507| r1507_3(int &) = Load[r] : &:r1507_2, m1503_22 -# 1507| m1507_4(int) = Store[?] : &:r1507_3, r1507_1 -# 1507| m1507_5(unknown) = Chi : total:m1500_6, partial:m1507_4 -# 1508| r1508_1(int) = Constant[6] : -# 1508| r1508_2(glval) = VariableAddress[p] : -# 1508| r1508_3(int *&) = Load[p] : &:r1508_2, m1503_26 -# 1508| r1508_4(int *) = Load[?] : &:r1508_3, ~m1503_4 -# 1508| r1508_5(glval) = CopyValue : r1508_4 -# 1508| m1508_6(int) = Store[?] : &:r1508_5, r1508_1 -# 1508| m1508_7(unknown) = Chi : total:m1507_5, partial:m1508_6 -# 1509| r1509_1(glval) = VariableAddress[rr] : +# 1488| v1488_75(void) = ReturnVoid : +# 1488| v1488_76(void) = AliasedUse : m1488_3 +# 1488| v1488_77(void) = ExitFunction : + +# 1501| void data_member_structured_binding() +# 1501| Block 0 +# 1501| v1501_1(void) = EnterFunction : +# 1501| m1501_2(unknown) = AliasedDefinition : +# 1501| m1501_3(unknown) = InitializeNonLocal : +# 1501| m1501_4(unknown) = Chi : total:m1501_2, partial:m1501_3 +# 1502| r1502_1(glval) = VariableAddress[s] : +# 1502| m1502_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1502_1 +# 1502| r1502_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : +# 1502| v1502_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1502_3, this:r1502_1 +# 1502| m1502_5(unknown) = ^CallSideEffect : ~m1501_4 +# 1502| m1502_6(unknown) = Chi : total:m1501_4, partial:m1502_5 +# 1502| m1502_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1502_1 +# 1502| m1502_8(StructuredBindingDataMemberStruct) = Chi : total:m1502_2, partial:m1502_7 +# 1505| r1505_1(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_2(glval) = VariableAddress[s] : +# 1505| r1505_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1505_2, m1502_8 +# 1505| m1505_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1505_1, r1505_3 +# 1505| r1505_5(glval) = VariableAddress[i] : +# 1505| r1505_6(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_7(glval) = FieldAddress[i] : r1505_6 +# 1505| m1505_8(int &) = Store[i] : &:r1505_5, r1505_7 +# 1505| r1505_9(glval) = VariableAddress[d] : +# 1505| r1505_10(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_11(glval) = FieldAddress[d] : r1505_10 +# 1505| m1505_12(double &) = Store[d] : &:r1505_9, r1505_11 +# 1505| r1505_13(glval) = VariableAddress[b] : +# 1505| r1505_14(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_15(glval) = FieldAddress[b] : r1505_14 +# 1505| m1505_16(unsigned int &) = Store[b] : &:r1505_13, r1505_15 +# 1505| r1505_17(glval) = VariableAddress[r] : +# 1505| r1505_18(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_19(glval) = FieldAddress[r] : r1505_18 +# 1505| r1505_20(int &) = Load[?] : &:r1505_19, ~m1505_4 +# 1505| r1505_21(glval) = CopyValue : r1505_20 +# 1505| m1505_22(int &) = Store[r] : &:r1505_17, r1505_21 +# 1505| r1505_23(glval) = VariableAddress[p] : +# 1505| r1505_24(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_25(glval) = FieldAddress[p] : r1505_24 +# 1505| m1505_26(int *&) = Store[p] : &:r1505_23, r1505_25 +# 1505| r1505_27(glval) = VariableAddress[xs] : +# 1505| r1505_28(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_29(glval) = FieldAddress[xs] : r1505_28 +# 1505| m1505_30(int(&)[2]) = Store[xs] : &:r1505_27, r1505_29 +# 1505| r1505_31(glval) = VariableAddress[r_alt] : +# 1505| r1505_32(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_33(glval) = FieldAddress[r_alt] : r1505_32 +# 1505| r1505_34(int &) = Load[?] : &:r1505_33, ~m1505_4 +# 1505| r1505_35(glval) = CopyValue : r1505_34 +# 1505| m1505_36(int &) = Store[r_alt] : &:r1505_31, r1505_35 +# 1505| r1505_37(glval) = VariableAddress[m] : +# 1505| r1505_38(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_39(glval) = FieldAddress[m] : r1505_38 +# 1505| m1505_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1505_37, r1505_39 +# 1506| r1506_1(double) = Constant[4.0] : +# 1506| r1506_2(glval) = VariableAddress[d] : +# 1506| r1506_3(double &) = Load[d] : &:r1506_2, m1505_12 +# 1506| m1506_4(double) = Store[?] : &:r1506_3, r1506_1 +# 1506| m1506_5(StructuredBindingDataMemberStruct) = Chi : total:m1505_4, partial:m1506_4 +# 1507| r1507_1(glval) = VariableAddress[rd] : +# 1507| r1507_2(glval) = VariableAddress[d] : +# 1507| r1507_3(double &) = Load[d] : &:r1507_2, m1505_12 +# 1507| r1507_4(double &) = CopyValue : r1507_3 +# 1507| m1507_5(double &) = Store[rd] : &:r1507_1, r1507_4 +# 1508| r1508_1(glval) = VariableAddress[v] : +# 1508| r1508_2(glval) = VariableAddress[i] : +# 1508| r1508_3(int &) = Load[i] : &:r1508_2, m1505_8 +# 1508| r1508_4(int) = Load[?] : &:r1508_3, ~m1505_4 +# 1508| m1508_5(int) = Store[v] : &:r1508_1, r1508_4 +# 1509| r1509_1(int) = Constant[5] : # 1509| r1509_2(glval) = VariableAddress[r] : -# 1509| r1509_3(int &) = Load[r] : &:r1509_2, m1503_22 -# 1509| r1509_4(int &) = CopyValue : r1509_3 -# 1509| m1509_5(int &) = Store[rr] : &:r1509_1, r1509_4 -# 1510| r1510_1(glval) = VariableAddress[pr] : -# 1510| r1510_2(glval) = VariableAddress[r] : -# 1510| r1510_3(int &) = Load[r] : &:r1510_2, m1503_22 -# 1510| r1510_4(int *) = CopyValue : r1510_3 -# 1510| m1510_5(int *) = Store[pr] : &:r1510_1, r1510_4 -# 1511| r1511_1(glval) = VariableAddress[w] : +# 1509| r1509_3(int &) = Load[r] : &:r1509_2, m1505_22 +# 1509| m1509_4(int) = Store[?] : &:r1509_3, r1509_1 +# 1509| m1509_5(unknown) = Chi : total:m1502_6, partial:m1509_4 +# 1510| r1510_1(int) = Constant[6] : +# 1510| r1510_2(glval) = VariableAddress[p] : +# 1510| r1510_3(int *&) = Load[p] : &:r1510_2, m1505_26 +# 1510| r1510_4(int *) = Load[?] : &:r1510_3, ~m1505_4 +# 1510| r1510_5(glval) = CopyValue : r1510_4 +# 1510| m1510_6(int) = Store[?] : &:r1510_5, r1510_1 +# 1510| m1510_7(unknown) = Chi : total:m1509_5, partial:m1510_6 +# 1511| r1511_1(glval) = VariableAddress[rr] : # 1511| r1511_2(glval) = VariableAddress[r] : -# 1511| r1511_3(int &) = Load[r] : &:r1511_2, m1503_22 -# 1511| r1511_4(int) = Load[?] : &:r1511_3, ~m1508_7 -# 1511| m1511_5(int) = Store[w] : &:r1511_1, r1511_4 -# 1515| r1515_1(glval) = VariableAddress[unnamed_local_variable] : -# 1515| r1515_2(glval) = VariableAddress[s] : -# 1515| r1515_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1515_2, m1500_8 -# 1515| m1515_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1515_1, r1515_3 -# 1516| r1516_1(glval) = VariableAddress[i] : -# 1516| r1516_2(glval) = VariableAddress[unnamed_local_variable] : -# 1516| r1516_3(glval) = FieldAddress[i] : r1516_2 -# 1516| r1516_4(int &) = CopyValue : r1516_3 -# 1516| m1516_5(int &) = Store[i] : &:r1516_1, r1516_4 -# 1517| r1517_1(glval) = VariableAddress[d] : -# 1517| r1517_2(glval) = VariableAddress[unnamed_local_variable] : -# 1517| r1517_3(glval) = FieldAddress[d] : r1517_2 -# 1517| r1517_4(double &) = CopyValue : r1517_3 -# 1517| m1517_5(double &) = Store[d] : &:r1517_1, r1517_4 -# 1519| r1519_1(glval) = VariableAddress[r] : +# 1511| r1511_3(int &) = Load[r] : &:r1511_2, m1505_22 +# 1511| r1511_4(int &) = CopyValue : r1511_3 +# 1511| m1511_5(int &) = Store[rr] : &:r1511_1, r1511_4 +# 1512| r1512_1(glval) = VariableAddress[pr] : +# 1512| r1512_2(glval) = VariableAddress[r] : +# 1512| r1512_3(int &) = Load[r] : &:r1512_2, m1505_22 +# 1512| r1512_4(int *) = CopyValue : r1512_3 +# 1512| m1512_5(int *) = Store[pr] : &:r1512_1, r1512_4 +# 1513| r1513_1(glval) = VariableAddress[w] : +# 1513| r1513_2(glval) = VariableAddress[r] : +# 1513| r1513_3(int &) = Load[r] : &:r1513_2, m1505_22 +# 1513| r1513_4(int) = Load[?] : &:r1513_3, ~m1510_7 +# 1513| m1513_5(int) = Store[w] : &:r1513_1, r1513_4 +# 1517| r1517_1(glval) = VariableAddress[unnamed_local_variable] : +# 1517| r1517_2(glval) = VariableAddress[s] : +# 1517| r1517_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1517_2, m1502_8 +# 1517| m1517_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1517_1, r1517_3 +# 1518| r1518_1(glval) = VariableAddress[i] : +# 1518| r1518_2(glval) = VariableAddress[unnamed_local_variable] : +# 1518| r1518_3(glval) = FieldAddress[i] : r1518_2 +# 1518| r1518_4(int &) = CopyValue : r1518_3 +# 1518| m1518_5(int &) = Store[i] : &:r1518_1, r1518_4 +# 1519| r1519_1(glval) = VariableAddress[d] : # 1519| r1519_2(glval) = VariableAddress[unnamed_local_variable] : -# 1519| r1519_3(glval) = FieldAddress[r] : r1519_2 -# 1519| r1519_4(int &) = Load[?] : &:r1519_3, ~m1515_4 -# 1519| r1519_5(glval) = CopyValue : r1519_4 -# 1519| r1519_6(int &) = CopyValue : r1519_5 -# 1519| m1519_7(int &) = Store[r] : &:r1519_1, r1519_6 -# 1520| r1520_1(glval) = VariableAddress[p] : -# 1520| r1520_2(glval) = VariableAddress[unnamed_local_variable] : -# 1520| r1520_3(glval) = FieldAddress[p] : r1520_2 -# 1520| r1520_4(int *&) = CopyValue : r1520_3 -# 1520| m1520_5(int *&) = Store[p] : &:r1520_1, r1520_4 -# 1521| r1521_1(double) = Constant[4.0] : -# 1521| r1521_2(glval) = VariableAddress[d] : -# 1521| r1521_3(double &) = Load[d] : &:r1521_2, m1517_5 -# 1521| r1521_4(glval) = CopyValue : r1521_3 -# 1521| m1521_5(double) = Store[?] : &:r1521_4, r1521_1 -# 1521| m1521_6(StructuredBindingDataMemberStruct) = Chi : total:m1515_4, partial:m1521_5 -# 1522| r1522_1(glval) = VariableAddress[rd] : -# 1522| r1522_2(glval) = VariableAddress[d] : -# 1522| r1522_3(double &) = Load[d] : &:r1522_2, m1517_5 -# 1522| r1522_4(glval) = CopyValue : r1522_3 -# 1522| r1522_5(double &) = CopyValue : r1522_4 -# 1522| m1522_6(double &) = Store[rd] : &:r1522_1, r1522_5 -# 1523| r1523_1(glval) = VariableAddress[v] : -# 1523| r1523_2(glval) = VariableAddress[i] : -# 1523| r1523_3(int &) = Load[i] : &:r1523_2, m1516_5 -# 1523| r1523_4(int) = Load[?] : &:r1523_3, ~m1515_4 -# 1523| m1523_5(int) = Store[v] : &:r1523_1, r1523_4 -# 1524| r1524_1(int) = Constant[5] : -# 1524| r1524_2(glval) = VariableAddress[r] : -# 1524| r1524_3(int &) = Load[r] : &:r1524_2, m1519_7 -# 1524| r1524_4(glval) = CopyValue : r1524_3 -# 1524| m1524_5(int) = Store[?] : &:r1524_4, r1524_1 -# 1524| m1524_6(unknown) = Chi : total:m1508_7, partial:m1524_5 -# 1525| r1525_1(int) = Constant[6] : -# 1525| r1525_2(glval) = VariableAddress[p] : -# 1525| r1525_3(int *&) = Load[p] : &:r1525_2, m1520_5 -# 1525| r1525_4(int *) = Load[?] : &:r1525_3, ~m1515_4 -# 1525| r1525_5(glval) = CopyValue : r1525_4 -# 1525| m1525_6(int) = Store[?] : &:r1525_5, r1525_1 -# 1525| m1525_7(unknown) = Chi : total:m1524_6, partial:m1525_6 -# 1526| r1526_1(glval) = VariableAddress[rr] : +# 1519| r1519_3(glval) = FieldAddress[d] : r1519_2 +# 1519| r1519_4(double &) = CopyValue : r1519_3 +# 1519| m1519_5(double &) = Store[d] : &:r1519_1, r1519_4 +# 1521| r1521_1(glval) = VariableAddress[r] : +# 1521| r1521_2(glval) = VariableAddress[unnamed_local_variable] : +# 1521| r1521_3(glval) = FieldAddress[r] : r1521_2 +# 1521| r1521_4(int &) = Load[?] : &:r1521_3, ~m1517_4 +# 1521| r1521_5(glval) = CopyValue : r1521_4 +# 1521| r1521_6(int &) = CopyValue : r1521_5 +# 1521| m1521_7(int &) = Store[r] : &:r1521_1, r1521_6 +# 1522| r1522_1(glval) = VariableAddress[p] : +# 1522| r1522_2(glval) = VariableAddress[unnamed_local_variable] : +# 1522| r1522_3(glval) = FieldAddress[p] : r1522_2 +# 1522| r1522_4(int *&) = CopyValue : r1522_3 +# 1522| m1522_5(int *&) = Store[p] : &:r1522_1, r1522_4 +# 1523| r1523_1(double) = Constant[4.0] : +# 1523| r1523_2(glval) = VariableAddress[d] : +# 1523| r1523_3(double &) = Load[d] : &:r1523_2, m1519_5 +# 1523| r1523_4(glval) = CopyValue : r1523_3 +# 1523| m1523_5(double) = Store[?] : &:r1523_4, r1523_1 +# 1523| m1523_6(StructuredBindingDataMemberStruct) = Chi : total:m1517_4, partial:m1523_5 +# 1524| r1524_1(glval) = VariableAddress[rd] : +# 1524| r1524_2(glval) = VariableAddress[d] : +# 1524| r1524_3(double &) = Load[d] : &:r1524_2, m1519_5 +# 1524| r1524_4(glval) = CopyValue : r1524_3 +# 1524| r1524_5(double &) = CopyValue : r1524_4 +# 1524| m1524_6(double &) = Store[rd] : &:r1524_1, r1524_5 +# 1525| r1525_1(glval) = VariableAddress[v] : +# 1525| r1525_2(glval) = VariableAddress[i] : +# 1525| r1525_3(int &) = Load[i] : &:r1525_2, m1518_5 +# 1525| r1525_4(int) = Load[?] : &:r1525_3, ~m1517_4 +# 1525| m1525_5(int) = Store[v] : &:r1525_1, r1525_4 +# 1526| r1526_1(int) = Constant[5] : # 1526| r1526_2(glval) = VariableAddress[r] : -# 1526| r1526_3(int &) = Load[r] : &:r1526_2, m1519_7 +# 1526| r1526_3(int &) = Load[r] : &:r1526_2, m1521_7 # 1526| r1526_4(glval) = CopyValue : r1526_3 -# 1526| r1526_5(int &) = CopyValue : r1526_4 -# 1526| m1526_6(int &) = Store[rr] : &:r1526_1, r1526_5 -# 1527| r1527_1(glval) = VariableAddress[pr] : -# 1527| r1527_2(glval) = VariableAddress[r] : -# 1527| r1527_3(int &) = Load[r] : &:r1527_2, m1519_7 -# 1527| r1527_4(glval) = CopyValue : r1527_3 -# 1527| r1527_5(int *) = CopyValue : r1527_4 -# 1527| m1527_6(int *) = Store[pr] : &:r1527_1, r1527_5 -# 1528| r1528_1(glval) = VariableAddress[w] : +# 1526| m1526_5(int) = Store[?] : &:r1526_4, r1526_1 +# 1526| m1526_6(unknown) = Chi : total:m1510_7, partial:m1526_5 +# 1527| r1527_1(int) = Constant[6] : +# 1527| r1527_2(glval) = VariableAddress[p] : +# 1527| r1527_3(int *&) = Load[p] : &:r1527_2, m1522_5 +# 1527| r1527_4(int *) = Load[?] : &:r1527_3, ~m1517_4 +# 1527| r1527_5(glval) = CopyValue : r1527_4 +# 1527| m1527_6(int) = Store[?] : &:r1527_5, r1527_1 +# 1527| m1527_7(unknown) = Chi : total:m1526_6, partial:m1527_6 +# 1528| r1528_1(glval) = VariableAddress[rr] : # 1528| r1528_2(glval) = VariableAddress[r] : -# 1528| r1528_3(int &) = Load[r] : &:r1528_2, m1519_7 -# 1528| r1528_4(int) = Load[?] : &:r1528_3, ~m1525_7 -# 1528| m1528_5(int) = Store[w] : &:r1528_1, r1528_4 -# 1530| v1530_1(void) = NoOp : -# 1499| v1499_5(void) = ReturnVoid : -# 1499| v1499_6(void) = AliasedUse : ~m1525_7 -# 1499| v1499_7(void) = ExitFunction : - -# 1539| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1539| Block 0 -# 1539| v1539_1(void) = EnterFunction : -# 1539| m1539_2(unknown) = AliasedDefinition : -# 1539| m1539_3(unknown) = InitializeNonLocal : -# 1539| m1539_4(unknown) = Chi : total:m1539_2, partial:m1539_3 -# 1539| r1539_5(glval) = VariableAddress[#this] : -# 1539| m1539_6(glval) = InitializeParameter[#this] : &:r1539_5 -# 1539| r1539_7(glval) = Load[#this] : &:r1539_5, m1539_6 -# 1539| m1539_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1539_7 -# 1539| v1539_9(void) = NoOp : -# 1539| v1539_10(void) = ReturnIndirection[#this] : &:r1539_7, m1539_8 -# 1539| v1539_11(void) = ReturnVoid : -# 1539| v1539_12(void) = AliasedUse : m1539_3 -# 1539| v1539_13(void) = ExitFunction : - -# 1539| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1539| Block 0 -# 1539| v1539_1(void) = EnterFunction : -# 1539| m1539_2(unknown) = AliasedDefinition : -# 1539| m1539_3(unknown) = InitializeNonLocal : -# 1539| m1539_4(unknown) = Chi : total:m1539_2, partial:m1539_3 -# 1539| r1539_5(glval) = VariableAddress[#this] : -# 1539| m1539_6(glval) = InitializeParameter[#this] : &:r1539_5 -# 1539| r1539_7(glval) = Load[#this] : &:r1539_5, m1539_6 -# 1539| m1539_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1539_7 +# 1528| r1528_3(int &) = Load[r] : &:r1528_2, m1521_7 +# 1528| r1528_4(glval) = CopyValue : r1528_3 +# 1528| r1528_5(int &) = CopyValue : r1528_4 +# 1528| m1528_6(int &) = Store[rr] : &:r1528_1, r1528_5 +# 1529| r1529_1(glval) = VariableAddress[pr] : +# 1529| r1529_2(glval) = VariableAddress[r] : +# 1529| r1529_3(int &) = Load[r] : &:r1529_2, m1521_7 +# 1529| r1529_4(glval) = CopyValue : r1529_3 +# 1529| r1529_5(int *) = CopyValue : r1529_4 +# 1529| m1529_6(int *) = Store[pr] : &:r1529_1, r1529_5 +# 1530| r1530_1(glval) = VariableAddress[w] : +# 1530| r1530_2(glval) = VariableAddress[r] : +# 1530| r1530_3(int &) = Load[r] : &:r1530_2, m1521_7 +# 1530| r1530_4(int) = Load[?] : &:r1530_3, ~m1527_7 +# 1530| m1530_5(int) = Store[w] : &:r1530_1, r1530_4 +# 1532| v1532_1(void) = NoOp : +# 1501| v1501_5(void) = ReturnVoid : +# 1501| v1501_6(void) = AliasedUse : ~m1527_7 +# 1501| v1501_7(void) = ExitFunction : + +# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1541| Block 0 +# 1541| v1541_1(void) = EnterFunction : +# 1541| m1541_2(unknown) = AliasedDefinition : +# 1541| m1541_3(unknown) = InitializeNonLocal : +# 1541| m1541_4(unknown) = Chi : total:m1541_2, partial:m1541_3 +# 1541| r1541_5(glval) = VariableAddress[#this] : +# 1541| m1541_6(glval) = InitializeParameter[#this] : &:r1541_5 +# 1541| r1541_7(glval) = Load[#this] : &:r1541_5, m1541_6 +# 1541| m1541_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_7 +# 1541| v1541_9(void) = NoOp : +# 1541| v1541_10(void) = ReturnIndirection[#this] : &:r1541_7, m1541_8 +# 1541| v1541_11(void) = ReturnVoid : +# 1541| v1541_12(void) = AliasedUse : m1541_3 +# 1541| v1541_13(void) = ExitFunction : + +# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1541| Block 0 +# 1541| v1541_1(void) = EnterFunction : +# 1541| m1541_2(unknown) = AliasedDefinition : +# 1541| m1541_3(unknown) = InitializeNonLocal : +# 1541| m1541_4(unknown) = Chi : total:m1541_2, partial:m1541_3 +# 1541| r1541_5(glval) = VariableAddress[#this] : +# 1541| m1541_6(glval) = InitializeParameter[#this] : &:r1541_5 +# 1541| r1541_7(glval) = Load[#this] : &:r1541_5, m1541_6 +# 1541| m1541_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(StructuredBindingTupleRefGet &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1539| r1539_9(glval) = FieldAddress[i] : m1539_6 -# 1539| r1539_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1539| r1539_11(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1539_10, m0_2 -# 1539| r1539_12(glval) = CopyValue : r1539_11 -# 1539| r1539_13(glval) = FieldAddress[i] : r1539_12 -# 1539| r1539_14(int) = Load[?] : &:r1539_13, ~m0_4 -# 1539| m1539_15(int) = Store[?] : &:r1539_9, r1539_14 -# 1539| m1539_16(unknown) = Chi : total:m1539_8, partial:m1539_15 -# 1539| r1539_17(glval) = FieldAddress[d] : m1539_6 -# 1539| r1539_18(glval) = VariableAddress[(unnamed parameter 0)] : -# 1539| r1539_19(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1539_18, m0_2 -# 1539| r1539_20(glval) = CopyValue : r1539_19 -# 1539| r1539_21(glval) = FieldAddress[d] : r1539_20 -# 1539| r1539_22(double) = Load[?] : &:r1539_21, ~m0_4 -# 1539| m1539_23(double) = Store[?] : &:r1539_17, r1539_22 -# 1539| m1539_24(unknown) = Chi : total:m1539_16, partial:m1539_23 -# 1539| r1539_25(glval) = FieldAddress[r] : m1539_6 -# 1539| r1539_26(glval) = VariableAddress[(unnamed parameter 0)] : -# 1539| r1539_27(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1539_26, m0_2 -# 1539| r1539_28(glval) = CopyValue : r1539_27 -# 1539| r1539_29(glval) = FieldAddress[r] : r1539_28 -# 1539| r1539_30(int &) = Load[?] : &:r1539_29, ~m0_4 -# 1539| m1539_31(int &) = Store[?] : &:r1539_25, r1539_30 -# 1539| m1539_32(unknown) = Chi : total:m1539_24, partial:m1539_31 -# 1539| v1539_33(void) = NoOp : -# 1539| v1539_34(void) = ReturnIndirection[#this] : &:r1539_7, m1539_32 +# 1541| r1541_9(glval) = FieldAddress[i] : m1541_6 +# 1541| r1541_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1541| r1541_11(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_10, m0_2 +# 1541| r1541_12(glval) = CopyValue : r1541_11 +# 1541| r1541_13(glval) = FieldAddress[i] : r1541_12 +# 1541| r1541_14(int) = Load[?] : &:r1541_13, ~m0_4 +# 1541| m1541_15(int) = Store[?] : &:r1541_9, r1541_14 +# 1541| m1541_16(unknown) = Chi : total:m1541_8, partial:m1541_15 +# 1541| r1541_17(glval) = FieldAddress[d] : m1541_6 +# 1541| r1541_18(glval) = VariableAddress[(unnamed parameter 0)] : +# 1541| r1541_19(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_18, m0_2 +# 1541| r1541_20(glval) = CopyValue : r1541_19 +# 1541| r1541_21(glval) = FieldAddress[d] : r1541_20 +# 1541| r1541_22(double) = Load[?] : &:r1541_21, ~m0_4 +# 1541| m1541_23(double) = Store[?] : &:r1541_17, r1541_22 +# 1541| m1541_24(unknown) = Chi : total:m1541_16, partial:m1541_23 +# 1541| r1541_25(glval) = FieldAddress[r] : m1541_6 +# 1541| r1541_26(glval) = VariableAddress[(unnamed parameter 0)] : +# 1541| r1541_27(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_26, m0_2 +# 1541| r1541_28(glval) = CopyValue : r1541_27 +# 1541| r1541_29(glval) = FieldAddress[r] : r1541_28 +# 1541| r1541_30(int &) = Load[?] : &:r1541_29, ~m0_4 +# 1541| m1541_31(int &) = Store[?] : &:r1541_25, r1541_30 +# 1541| m1541_32(unknown) = Chi : total:m1541_24, partial:m1541_31 +# 1541| v1541_33(void) = NoOp : +# 1541| v1541_34(void) = ReturnIndirection[#this] : &:r1541_7, m1541_32 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1539| v1539_35(void) = ReturnVoid : -# 1539| v1539_36(void) = AliasedUse : m1539_3 -# 1539| v1539_37(void) = ExitFunction : - -# 1567| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1567| Block 0 -# 1567| v1567_1(void) = EnterFunction : -# 1567| m1567_2(unknown) = AliasedDefinition : -# 1567| m1567_3(unknown) = InitializeNonLocal : -# 1567| m1567_4(unknown) = Chi : total:m1567_2, partial:m1567_3 -# 1567| r1567_5(glval) = VariableAddress[#this] : -# 1567| m1567_6(glval) = InitializeParameter[#this] : &:r1567_5 -# 1567| r1567_7(glval) = Load[#this] : &:r1567_5, m1567_6 -# 1567| m1567_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1567_7 -# 1568| r1568_1(glval) = VariableAddress[#return] : -# 1568| r1568_2(glval) = VariableAddress[#this] : -# 1568| r1568_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1568_2, m1567_6 -# 1568| r1568_4(glval) = FieldAddress[i] : r1568_3 -#-----| r0_1(int &) = CopyValue : r1568_4 -#-----| m0_2(int &) = Store[#return] : &:r1568_1, r0_1 -# 1567| v1567_9(void) = ReturnIndirection[#this] : &:r1567_7, m1567_8 -# 1567| r1567_10(glval) = VariableAddress[#return] : -# 1567| v1567_11(void) = ReturnValue : &:r1567_10, m0_2 -# 1567| v1567_12(void) = AliasedUse : m1567_3 -# 1567| v1567_13(void) = ExitFunction : - -# 1571| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1571| Block 0 -# 1571| v1571_1(void) = EnterFunction : -# 1571| m1571_2(unknown) = AliasedDefinition : -# 1571| m1571_3(unknown) = InitializeNonLocal : -# 1571| m1571_4(unknown) = Chi : total:m1571_2, partial:m1571_3 -# 1571| r1571_5(glval) = VariableAddress[#this] : -# 1571| m1571_6(glval) = InitializeParameter[#this] : &:r1571_5 -# 1571| r1571_7(glval) = Load[#this] : &:r1571_5, m1571_6 -# 1571| m1571_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1571_7 -# 1572| r1572_1(glval) = VariableAddress[#return] : -# 1572| r1572_2(glval) = VariableAddress[#this] : -# 1572| r1572_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1572_2, m1571_6 -# 1572| r1572_4(glval) = FieldAddress[d] : r1572_3 -#-----| r0_1(double &) = CopyValue : r1572_4 -#-----| m0_2(double &) = Store[#return] : &:r1572_1, r0_1 -# 1571| v1571_9(void) = ReturnIndirection[#this] : &:r1571_7, m1571_8 -# 1571| r1571_10(glval) = VariableAddress[#return] : -# 1571| v1571_11(void) = ReturnValue : &:r1571_10, m0_2 -# 1571| v1571_12(void) = AliasedUse : m1571_3 -# 1571| v1571_13(void) = ExitFunction : - -# 1575| std::tuple_element::type StructuredBindingTupleRefGet::get() -# 1575| Block 0 -# 1575| v1575_1(void) = EnterFunction : -# 1575| m1575_2(unknown) = AliasedDefinition : -# 1575| m1575_3(unknown) = InitializeNonLocal : -# 1575| m1575_4(unknown) = Chi : total:m1575_2, partial:m1575_3 -# 1575| r1575_5(glval) = VariableAddress[#this] : -# 1575| m1575_6(glval) = InitializeParameter[#this] : &:r1575_5 -# 1575| r1575_7(glval) = Load[#this] : &:r1575_5, m1575_6 -# 1575| m1575_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1575_7 -# 1576| r1576_1(glval) = VariableAddress[#return] : -# 1576| r1576_2(glval) = VariableAddress[#this] : -# 1576| r1576_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1576_2, m1575_6 -# 1576| r1576_4(glval) = FieldAddress[r] : r1576_3 -# 1576| r1576_5(int &) = Load[?] : &:r1576_4, ~m1575_8 -# 1576| r1576_6(glval) = CopyValue : r1576_5 -# 1576| r1576_7(int &) = CopyValue : r1576_6 -# 1576| m1576_8(int &) = Store[#return] : &:r1576_1, r1576_7 -# 1575| v1575_9(void) = ReturnIndirection[#this] : &:r1575_7, m1575_8 -# 1575| r1575_10(glval) = VariableAddress[#return] : -# 1575| v1575_11(void) = ReturnValue : &:r1575_10, m1576_8 -# 1575| v1575_12(void) = AliasedUse : m1575_3 -# 1575| v1575_13(void) = ExitFunction : - -# 1579| void tuple_structured_binding_ref_get() -# 1579| Block 0 -# 1579| v1579_1(void) = EnterFunction : -# 1579| m1579_2(unknown) = AliasedDefinition : -# 1579| m1579_3(unknown) = InitializeNonLocal : -# 1579| m1579_4(unknown) = Chi : total:m1579_2, partial:m1579_3 -# 1580| r1580_1(glval) = VariableAddress[t] : -# 1580| m1580_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1580_1 -# 1580| r1580_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : -# 1580| v1580_4(void) = Call[StructuredBindingTupleRefGet] : func:r1580_3, this:r1580_1 -# 1580| m1580_5(unknown) = ^CallSideEffect : ~m1579_4 -# 1580| m1580_6(unknown) = Chi : total:m1579_4, partial:m1580_5 -# 1580| m1580_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1580_1 -# 1580| m1580_8(StructuredBindingTupleRefGet) = Chi : total:m1580_2, partial:m1580_7 -# 1583| r1583_1(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_2(glval) = VariableAddress[t] : -# 1583| r1583_3(StructuredBindingTupleRefGet) = Load[t] : &:r1583_2, m1580_8 -# 1583| m1583_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1583_1, r1583_3 -# 1583| r1583_5(glval) = VariableAddress[i] : -# 1583| r1583_6(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_7(glval) = FunctionAddress[get] : -# 1583| r1583_8(int &) = Call[get] : func:r1583_7, this:r1583_6 -# 1583| m1583_9(unknown) = ^CallSideEffect : ~m1580_6 -# 1583| m1583_10(unknown) = Chi : total:m1580_6, partial:m1583_9 -# 1583| v1583_11(void) = ^IndirectReadSideEffect[-1] : &:r1583_6, m1583_4 -# 1583| m1583_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1583_6 -# 1583| m1583_13(StructuredBindingTupleRefGet) = Chi : total:m1583_4, partial:m1583_12 -# 1583| r1583_14(glval) = CopyValue : r1583_8 -# 1583| r1583_15(int &) = CopyValue : r1583_14 -# 1583| m1583_16(int &) = Store[i] : &:r1583_5, r1583_15 -# 1583| r1583_17(glval) = VariableAddress[d] : -# 1583| r1583_18(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_19(glval) = FunctionAddress[get] : -# 1583| r1583_20(double &) = Call[get] : func:r1583_19, this:r1583_18 -# 1583| m1583_21(unknown) = ^CallSideEffect : ~m1583_10 -# 1583| m1583_22(unknown) = Chi : total:m1583_10, partial:m1583_21 -# 1583| v1583_23(void) = ^IndirectReadSideEffect[-1] : &:r1583_18, m1583_13 -# 1583| m1583_24(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1583_18 -# 1583| m1583_25(StructuredBindingTupleRefGet) = Chi : total:m1583_13, partial:m1583_24 -# 1583| r1583_26(glval) = CopyValue : r1583_20 -# 1583| r1583_27(double &) = CopyValue : r1583_26 -# 1583| m1583_28(double &) = Store[d] : &:r1583_17, r1583_27 -# 1583| r1583_29(glval) = VariableAddress[r] : -# 1583| r1583_30(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_31(glval) = FunctionAddress[get] : -# 1583| r1583_32(int &) = Call[get] : func:r1583_31, this:r1583_30 -# 1583| m1583_33(unknown) = ^CallSideEffect : ~m1583_22 -# 1583| m1583_34(unknown) = Chi : total:m1583_22, partial:m1583_33 -# 1583| v1583_35(void) = ^IndirectReadSideEffect[-1] : &:r1583_30, m1583_25 -# 1583| m1583_36(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1583_30 -# 1583| m1583_37(StructuredBindingTupleRefGet) = Chi : total:m1583_25, partial:m1583_36 -# 1583| r1583_38(glval) = CopyValue : r1583_32 -# 1583| r1583_39(int &) = CopyValue : r1583_38 -# 1583| m1583_40(int &) = Store[r] : &:r1583_29, r1583_39 -# 1584| r1584_1(double) = Constant[4.0] : -# 1584| r1584_2(glval) = VariableAddress[d] : -# 1584| r1584_3(double &) = Load[d] : &:r1584_2, m1583_28 -# 1584| r1584_4(glval) = CopyValue : r1584_3 -# 1584| m1584_5(double) = Store[?] : &:r1584_4, r1584_1 -# 1584| m1584_6(StructuredBindingTupleRefGet) = Chi : total:m1583_37, partial:m1584_5 -# 1585| r1585_1(glval) = VariableAddress[rd] : -# 1585| r1585_2(glval) = VariableAddress[d] : -# 1585| r1585_3(double &) = Load[d] : &:r1585_2, m1583_28 -# 1585| r1585_4(glval) = CopyValue : r1585_3 -# 1585| r1585_5(double &) = CopyValue : r1585_4 -# 1585| m1585_6(double &) = Store[rd] : &:r1585_1, r1585_5 -# 1586| r1586_1(glval) = VariableAddress[v] : -# 1586| r1586_2(glval) = VariableAddress[i] : -# 1586| r1586_3(int &) = Load[i] : &:r1586_2, m1583_16 -# 1586| r1586_4(int) = Load[?] : &:r1586_3, ~m1583_37 -# 1586| m1586_5(int) = Store[v] : &:r1586_1, r1586_4 -# 1587| r1587_1(int) = Constant[5] : -# 1587| r1587_2(glval) = VariableAddress[r] : -# 1587| r1587_3(int &) = Load[r] : &:r1587_2, m1583_40 -# 1587| r1587_4(glval) = CopyValue : r1587_3 -# 1587| m1587_5(int) = Store[?] : &:r1587_4, r1587_1 -# 1587| m1587_6(unknown) = Chi : total:m1583_34, partial:m1587_5 -# 1588| r1588_1(glval) = VariableAddress[rr] : -# 1588| r1588_2(glval) = VariableAddress[r] : -# 1588| r1588_3(int &) = Load[r] : &:r1588_2, m1583_40 -# 1588| r1588_4(glval) = CopyValue : r1588_3 -# 1588| r1588_5(int &) = CopyValue : r1588_4 -# 1588| m1588_6(int &) = Store[rr] : &:r1588_1, r1588_5 -# 1589| r1589_1(glval) = VariableAddress[w] : +# 1541| v1541_35(void) = ReturnVoid : +# 1541| v1541_36(void) = AliasedUse : m1541_3 +# 1541| v1541_37(void) = ExitFunction : + +# 1569| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1569| Block 0 +# 1569| v1569_1(void) = EnterFunction : +# 1569| m1569_2(unknown) = AliasedDefinition : +# 1569| m1569_3(unknown) = InitializeNonLocal : +# 1569| m1569_4(unknown) = Chi : total:m1569_2, partial:m1569_3 +# 1569| r1569_5(glval) = VariableAddress[#this] : +# 1569| m1569_6(glval) = InitializeParameter[#this] : &:r1569_5 +# 1569| r1569_7(glval) = Load[#this] : &:r1569_5, m1569_6 +# 1569| m1569_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1569_7 +# 1570| r1570_1(glval) = VariableAddress[#return] : +# 1570| r1570_2(glval) = VariableAddress[#this] : +# 1570| r1570_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1570_2, m1569_6 +# 1570| r1570_4(glval) = FieldAddress[i] : r1570_3 +#-----| r0_1(int &) = CopyValue : r1570_4 +#-----| m0_2(int &) = Store[#return] : &:r1570_1, r0_1 +# 1569| v1569_9(void) = ReturnIndirection[#this] : &:r1569_7, m1569_8 +# 1569| r1569_10(glval) = VariableAddress[#return] : +# 1569| v1569_11(void) = ReturnValue : &:r1569_10, m0_2 +# 1569| v1569_12(void) = AliasedUse : m1569_3 +# 1569| v1569_13(void) = ExitFunction : + +# 1573| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1573| Block 0 +# 1573| v1573_1(void) = EnterFunction : +# 1573| m1573_2(unknown) = AliasedDefinition : +# 1573| m1573_3(unknown) = InitializeNonLocal : +# 1573| m1573_4(unknown) = Chi : total:m1573_2, partial:m1573_3 +# 1573| r1573_5(glval) = VariableAddress[#this] : +# 1573| m1573_6(glval) = InitializeParameter[#this] : &:r1573_5 +# 1573| r1573_7(glval) = Load[#this] : &:r1573_5, m1573_6 +# 1573| m1573_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1573_7 +# 1574| r1574_1(glval) = VariableAddress[#return] : +# 1574| r1574_2(glval) = VariableAddress[#this] : +# 1574| r1574_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1574_2, m1573_6 +# 1574| r1574_4(glval) = FieldAddress[d] : r1574_3 +#-----| r0_1(double &) = CopyValue : r1574_4 +#-----| m0_2(double &) = Store[#return] : &:r1574_1, r0_1 +# 1573| v1573_9(void) = ReturnIndirection[#this] : &:r1573_7, m1573_8 +# 1573| r1573_10(glval) = VariableAddress[#return] : +# 1573| v1573_11(void) = ReturnValue : &:r1573_10, m0_2 +# 1573| v1573_12(void) = AliasedUse : m1573_3 +# 1573| v1573_13(void) = ExitFunction : + +# 1577| std::tuple_element::type StructuredBindingTupleRefGet::get() +# 1577| Block 0 +# 1577| v1577_1(void) = EnterFunction : +# 1577| m1577_2(unknown) = AliasedDefinition : +# 1577| m1577_3(unknown) = InitializeNonLocal : +# 1577| m1577_4(unknown) = Chi : total:m1577_2, partial:m1577_3 +# 1577| r1577_5(glval) = VariableAddress[#this] : +# 1577| m1577_6(glval) = InitializeParameter[#this] : &:r1577_5 +# 1577| r1577_7(glval) = Load[#this] : &:r1577_5, m1577_6 +# 1577| m1577_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1577_7 +# 1578| r1578_1(glval) = VariableAddress[#return] : +# 1578| r1578_2(glval) = VariableAddress[#this] : +# 1578| r1578_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1578_2, m1577_6 +# 1578| r1578_4(glval) = FieldAddress[r] : r1578_3 +# 1578| r1578_5(int &) = Load[?] : &:r1578_4, ~m1577_8 +# 1578| r1578_6(glval) = CopyValue : r1578_5 +# 1578| r1578_7(int &) = CopyValue : r1578_6 +# 1578| m1578_8(int &) = Store[#return] : &:r1578_1, r1578_7 +# 1577| v1577_9(void) = ReturnIndirection[#this] : &:r1577_7, m1577_8 +# 1577| r1577_10(glval) = VariableAddress[#return] : +# 1577| v1577_11(void) = ReturnValue : &:r1577_10, m1578_8 +# 1577| v1577_12(void) = AliasedUse : m1577_3 +# 1577| v1577_13(void) = ExitFunction : + +# 1581| void tuple_structured_binding_ref_get() +# 1581| Block 0 +# 1581| v1581_1(void) = EnterFunction : +# 1581| m1581_2(unknown) = AliasedDefinition : +# 1581| m1581_3(unknown) = InitializeNonLocal : +# 1581| m1581_4(unknown) = Chi : total:m1581_2, partial:m1581_3 +# 1582| r1582_1(glval) = VariableAddress[t] : +# 1582| m1582_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1582_1 +# 1582| r1582_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : +# 1582| v1582_4(void) = Call[StructuredBindingTupleRefGet] : func:r1582_3, this:r1582_1 +# 1582| m1582_5(unknown) = ^CallSideEffect : ~m1581_4 +# 1582| m1582_6(unknown) = Chi : total:m1581_4, partial:m1582_5 +# 1582| m1582_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1582_1 +# 1582| m1582_8(StructuredBindingTupleRefGet) = Chi : total:m1582_2, partial:m1582_7 +# 1585| r1585_1(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_2(glval) = VariableAddress[t] : +# 1585| r1585_3(StructuredBindingTupleRefGet) = Load[t] : &:r1585_2, m1582_8 +# 1585| m1585_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1585_1, r1585_3 +# 1585| r1585_5(glval) = VariableAddress[i] : +# 1585| r1585_6(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_7(glval) = FunctionAddress[get] : +# 1585| r1585_8(int &) = Call[get] : func:r1585_7, this:r1585_6 +# 1585| m1585_9(unknown) = ^CallSideEffect : ~m1582_6 +# 1585| m1585_10(unknown) = Chi : total:m1582_6, partial:m1585_9 +# 1585| v1585_11(void) = ^IndirectReadSideEffect[-1] : &:r1585_6, m1585_4 +# 1585| m1585_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_6 +# 1585| m1585_13(StructuredBindingTupleRefGet) = Chi : total:m1585_4, partial:m1585_12 +# 1585| r1585_14(glval) = CopyValue : r1585_8 +# 1585| r1585_15(int &) = CopyValue : r1585_14 +# 1585| m1585_16(int &) = Store[i] : &:r1585_5, r1585_15 +# 1585| r1585_17(glval) = VariableAddress[d] : +# 1585| r1585_18(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_19(glval) = FunctionAddress[get] : +# 1585| r1585_20(double &) = Call[get] : func:r1585_19, this:r1585_18 +# 1585| m1585_21(unknown) = ^CallSideEffect : ~m1585_10 +# 1585| m1585_22(unknown) = Chi : total:m1585_10, partial:m1585_21 +# 1585| v1585_23(void) = ^IndirectReadSideEffect[-1] : &:r1585_18, m1585_13 +# 1585| m1585_24(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_18 +# 1585| m1585_25(StructuredBindingTupleRefGet) = Chi : total:m1585_13, partial:m1585_24 +# 1585| r1585_26(glval) = CopyValue : r1585_20 +# 1585| r1585_27(double &) = CopyValue : r1585_26 +# 1585| m1585_28(double &) = Store[d] : &:r1585_17, r1585_27 +# 1585| r1585_29(glval) = VariableAddress[r] : +# 1585| r1585_30(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_31(glval) = FunctionAddress[get] : +# 1585| r1585_32(int &) = Call[get] : func:r1585_31, this:r1585_30 +# 1585| m1585_33(unknown) = ^CallSideEffect : ~m1585_22 +# 1585| m1585_34(unknown) = Chi : total:m1585_22, partial:m1585_33 +# 1585| v1585_35(void) = ^IndirectReadSideEffect[-1] : &:r1585_30, m1585_25 +# 1585| m1585_36(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_30 +# 1585| m1585_37(StructuredBindingTupleRefGet) = Chi : total:m1585_25, partial:m1585_36 +# 1585| r1585_38(glval) = CopyValue : r1585_32 +# 1585| r1585_39(int &) = CopyValue : r1585_38 +# 1585| m1585_40(int &) = Store[r] : &:r1585_29, r1585_39 +# 1586| r1586_1(double) = Constant[4.0] : +# 1586| r1586_2(glval) = VariableAddress[d] : +# 1586| r1586_3(double &) = Load[d] : &:r1586_2, m1585_28 +# 1586| r1586_4(glval) = CopyValue : r1586_3 +# 1586| m1586_5(double) = Store[?] : &:r1586_4, r1586_1 +# 1586| m1586_6(StructuredBindingTupleRefGet) = Chi : total:m1585_37, partial:m1586_5 +# 1587| r1587_1(glval) = VariableAddress[rd] : +# 1587| r1587_2(glval) = VariableAddress[d] : +# 1587| r1587_3(double &) = Load[d] : &:r1587_2, m1585_28 +# 1587| r1587_4(glval) = CopyValue : r1587_3 +# 1587| r1587_5(double &) = CopyValue : r1587_4 +# 1587| m1587_6(double &) = Store[rd] : &:r1587_1, r1587_5 +# 1588| r1588_1(glval) = VariableAddress[v] : +# 1588| r1588_2(glval) = VariableAddress[i] : +# 1588| r1588_3(int &) = Load[i] : &:r1588_2, m1585_16 +# 1588| r1588_4(int) = Load[?] : &:r1588_3, ~m1585_37 +# 1588| m1588_5(int) = Store[v] : &:r1588_1, r1588_4 +# 1589| r1589_1(int) = Constant[5] : # 1589| r1589_2(glval) = VariableAddress[r] : -# 1589| r1589_3(int &) = Load[r] : &:r1589_2, m1583_40 -# 1589| r1589_4(int) = Load[?] : &:r1589_3, ~m1587_6 -# 1589| m1589_5(int) = Store[w] : &:r1589_1, r1589_4 -# 1593| r1593_1(glval) = VariableAddress[unnamed_local_variable] : -# 1593| r1593_2(glval) = VariableAddress[t] : -# 1593| r1593_3(StructuredBindingTupleRefGet) = Load[t] : &:r1593_2, m1580_8 -# 1593| m1593_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1593_1, r1593_3 -# 1594| r1594_1(glval) = VariableAddress[i] : -# 1594| r1594_2(glval) = VariableAddress[unnamed_local_variable] : -# 1594| r1594_3(glval) = FunctionAddress[get] : -# 1594| r1594_4(int &) = Call[get] : func:r1594_3, this:r1594_2 -# 1594| m1594_5(unknown) = ^CallSideEffect : ~m1587_6 -# 1594| m1594_6(unknown) = Chi : total:m1587_6, partial:m1594_5 -# 1594| v1594_7(void) = ^IndirectReadSideEffect[-1] : &:r1594_2, m1593_4 -# 1594| m1594_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1594_2 -# 1594| m1594_9(StructuredBindingTupleRefGet) = Chi : total:m1593_4, partial:m1594_8 -# 1594| r1594_10(glval) = CopyValue : r1594_4 -# 1594| r1594_11(int &) = CopyValue : r1594_10 -# 1594| m1594_12(int &) = Store[i] : &:r1594_1, r1594_11 -# 1595| r1595_1(glval) = VariableAddress[d] : -# 1595| r1595_2(glval) = VariableAddress[unnamed_local_variable] : -# 1595| r1595_3(glval) = FunctionAddress[get] : -# 1595| r1595_4(double &) = Call[get] : func:r1595_3, this:r1595_2 -# 1595| m1595_5(unknown) = ^CallSideEffect : ~m1594_6 -# 1595| m1595_6(unknown) = Chi : total:m1594_6, partial:m1595_5 -# 1595| v1595_7(void) = ^IndirectReadSideEffect[-1] : &:r1595_2, m1594_9 -# 1595| m1595_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1595_2 -# 1595| m1595_9(StructuredBindingTupleRefGet) = Chi : total:m1594_9, partial:m1595_8 -# 1595| r1595_10(glval) = CopyValue : r1595_4 -# 1595| r1595_11(double &) = CopyValue : r1595_10 -# 1595| m1595_12(double &) = Store[d] : &:r1595_1, r1595_11 -# 1596| r1596_1(glval) = VariableAddress[r] : +# 1589| r1589_3(int &) = Load[r] : &:r1589_2, m1585_40 +# 1589| r1589_4(glval) = CopyValue : r1589_3 +# 1589| m1589_5(int) = Store[?] : &:r1589_4, r1589_1 +# 1589| m1589_6(unknown) = Chi : total:m1585_34, partial:m1589_5 +# 1590| r1590_1(glval) = VariableAddress[rr] : +# 1590| r1590_2(glval) = VariableAddress[r] : +# 1590| r1590_3(int &) = Load[r] : &:r1590_2, m1585_40 +# 1590| r1590_4(glval) = CopyValue : r1590_3 +# 1590| r1590_5(int &) = CopyValue : r1590_4 +# 1590| m1590_6(int &) = Store[rr] : &:r1590_1, r1590_5 +# 1591| r1591_1(glval) = VariableAddress[w] : +# 1591| r1591_2(glval) = VariableAddress[r] : +# 1591| r1591_3(int &) = Load[r] : &:r1591_2, m1585_40 +# 1591| r1591_4(int) = Load[?] : &:r1591_3, ~m1589_6 +# 1591| m1591_5(int) = Store[w] : &:r1591_1, r1591_4 +# 1595| r1595_1(glval) = VariableAddress[unnamed_local_variable] : +# 1595| r1595_2(glval) = VariableAddress[t] : +# 1595| r1595_3(StructuredBindingTupleRefGet) = Load[t] : &:r1595_2, m1582_8 +# 1595| m1595_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1595_1, r1595_3 +# 1596| r1596_1(glval) = VariableAddress[i] : # 1596| r1596_2(glval) = VariableAddress[unnamed_local_variable] : # 1596| r1596_3(glval) = FunctionAddress[get] : # 1596| r1596_4(int &) = Call[get] : func:r1596_3, this:r1596_2 -# 1596| m1596_5(unknown) = ^CallSideEffect : ~m1595_6 -# 1596| m1596_6(unknown) = Chi : total:m1595_6, partial:m1596_5 -# 1596| v1596_7(void) = ^IndirectReadSideEffect[-1] : &:r1596_2, m1595_9 +# 1596| m1596_5(unknown) = ^CallSideEffect : ~m1589_6 +# 1596| m1596_6(unknown) = Chi : total:m1589_6, partial:m1596_5 +# 1596| v1596_7(void) = ^IndirectReadSideEffect[-1] : &:r1596_2, m1595_4 # 1596| m1596_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1596_2 -# 1596| m1596_9(StructuredBindingTupleRefGet) = Chi : total:m1595_9, partial:m1596_8 +# 1596| m1596_9(StructuredBindingTupleRefGet) = Chi : total:m1595_4, partial:m1596_8 # 1596| r1596_10(glval) = CopyValue : r1596_4 # 1596| r1596_11(int &) = CopyValue : r1596_10 -# 1596| m1596_12(int &) = Store[r] : &:r1596_1, r1596_11 -# 1597| r1597_1(double) = Constant[4.0] : -# 1597| r1597_2(glval) = VariableAddress[d] : -# 1597| r1597_3(double &) = Load[d] : &:r1597_2, m1595_12 -# 1597| r1597_4(glval) = CopyValue : r1597_3 -# 1597| m1597_5(double) = Store[?] : &:r1597_4, r1597_1 -# 1597| m1597_6(StructuredBindingTupleRefGet) = Chi : total:m1596_9, partial:m1597_5 -# 1598| r1598_1(glval) = VariableAddress[rd] : -# 1598| r1598_2(glval) = VariableAddress[d] : -# 1598| r1598_3(double &) = Load[d] : &:r1598_2, m1595_12 -# 1598| r1598_4(glval) = CopyValue : r1598_3 -# 1598| r1598_5(double &) = CopyValue : r1598_4 -# 1598| m1598_6(double &) = Store[rd] : &:r1598_1, r1598_5 -# 1599| r1599_1(glval) = VariableAddress[v] : -# 1599| r1599_2(glval) = VariableAddress[i] : -# 1599| r1599_3(int &) = Load[i] : &:r1599_2, m1594_12 -# 1599| r1599_4(int) = Load[?] : &:r1599_3, ~m1596_9 -# 1599| m1599_5(int) = Store[v] : &:r1599_1, r1599_4 -# 1600| r1600_1(int) = Constant[5] : -# 1600| r1600_2(glval) = VariableAddress[r] : -# 1600| r1600_3(int &) = Load[r] : &:r1600_2, m1596_12 -# 1600| r1600_4(glval) = CopyValue : r1600_3 -# 1600| m1600_5(int) = Store[?] : &:r1600_4, r1600_1 -# 1600| m1600_6(unknown) = Chi : total:m1596_6, partial:m1600_5 -# 1601| r1601_1(glval) = VariableAddress[rr] : -# 1601| r1601_2(glval) = VariableAddress[r] : -# 1601| r1601_3(int &) = Load[r] : &:r1601_2, m1596_12 -# 1601| r1601_4(glval) = CopyValue : r1601_3 -# 1601| r1601_5(int &) = CopyValue : r1601_4 -# 1601| m1601_6(int &) = Store[rr] : &:r1601_1, r1601_5 -# 1602| r1602_1(glval) = VariableAddress[w] : +# 1596| m1596_12(int &) = Store[i] : &:r1596_1, r1596_11 +# 1597| r1597_1(glval) = VariableAddress[d] : +# 1597| r1597_2(glval) = VariableAddress[unnamed_local_variable] : +# 1597| r1597_3(glval) = FunctionAddress[get] : +# 1597| r1597_4(double &) = Call[get] : func:r1597_3, this:r1597_2 +# 1597| m1597_5(unknown) = ^CallSideEffect : ~m1596_6 +# 1597| m1597_6(unknown) = Chi : total:m1596_6, partial:m1597_5 +# 1597| v1597_7(void) = ^IndirectReadSideEffect[-1] : &:r1597_2, m1596_9 +# 1597| m1597_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1597_2 +# 1597| m1597_9(StructuredBindingTupleRefGet) = Chi : total:m1596_9, partial:m1597_8 +# 1597| r1597_10(glval) = CopyValue : r1597_4 +# 1597| r1597_11(double &) = CopyValue : r1597_10 +# 1597| m1597_12(double &) = Store[d] : &:r1597_1, r1597_11 +# 1598| r1598_1(glval) = VariableAddress[r] : +# 1598| r1598_2(glval) = VariableAddress[unnamed_local_variable] : +# 1598| r1598_3(glval) = FunctionAddress[get] : +# 1598| r1598_4(int &) = Call[get] : func:r1598_3, this:r1598_2 +# 1598| m1598_5(unknown) = ^CallSideEffect : ~m1597_6 +# 1598| m1598_6(unknown) = Chi : total:m1597_6, partial:m1598_5 +# 1598| v1598_7(void) = ^IndirectReadSideEffect[-1] : &:r1598_2, m1597_9 +# 1598| m1598_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1598_2 +# 1598| m1598_9(StructuredBindingTupleRefGet) = Chi : total:m1597_9, partial:m1598_8 +# 1598| r1598_10(glval) = CopyValue : r1598_4 +# 1598| r1598_11(int &) = CopyValue : r1598_10 +# 1598| m1598_12(int &) = Store[r] : &:r1598_1, r1598_11 +# 1599| r1599_1(double) = Constant[4.0] : +# 1599| r1599_2(glval) = VariableAddress[d] : +# 1599| r1599_3(double &) = Load[d] : &:r1599_2, m1597_12 +# 1599| r1599_4(glval) = CopyValue : r1599_3 +# 1599| m1599_5(double) = Store[?] : &:r1599_4, r1599_1 +# 1599| m1599_6(StructuredBindingTupleRefGet) = Chi : total:m1598_9, partial:m1599_5 +# 1600| r1600_1(glval) = VariableAddress[rd] : +# 1600| r1600_2(glval) = VariableAddress[d] : +# 1600| r1600_3(double &) = Load[d] : &:r1600_2, m1597_12 +# 1600| r1600_4(glval) = CopyValue : r1600_3 +# 1600| r1600_5(double &) = CopyValue : r1600_4 +# 1600| m1600_6(double &) = Store[rd] : &:r1600_1, r1600_5 +# 1601| r1601_1(glval) = VariableAddress[v] : +# 1601| r1601_2(glval) = VariableAddress[i] : +# 1601| r1601_3(int &) = Load[i] : &:r1601_2, m1596_12 +# 1601| r1601_4(int) = Load[?] : &:r1601_3, ~m1598_9 +# 1601| m1601_5(int) = Store[v] : &:r1601_1, r1601_4 +# 1602| r1602_1(int) = Constant[5] : # 1602| r1602_2(glval) = VariableAddress[r] : -# 1602| r1602_3(int &) = Load[r] : &:r1602_2, m1596_12 -# 1602| r1602_4(int) = Load[?] : &:r1602_3, ~m1600_6 -# 1602| m1602_5(int) = Store[w] : &:r1602_1, r1602_4 -# 1604| v1604_1(void) = NoOp : -# 1579| v1579_5(void) = ReturnVoid : -# 1579| v1579_6(void) = AliasedUse : ~m1600_6 -# 1579| v1579_7(void) = ExitFunction : - -# 1606| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1606| Block 0 -# 1606| v1606_1(void) = EnterFunction : -# 1606| m1606_2(unknown) = AliasedDefinition : -# 1606| m1606_3(unknown) = InitializeNonLocal : -# 1606| m1606_4(unknown) = Chi : total:m1606_2, partial:m1606_3 -# 1606| r1606_5(glval) = VariableAddress[#this] : -# 1606| m1606_6(glval) = InitializeParameter[#this] : &:r1606_5 -# 1606| r1606_7(glval) = Load[#this] : &:r1606_5, m1606_6 -# 1606| m1606_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1606_7 -# 1606| v1606_9(void) = NoOp : -# 1606| v1606_10(void) = ReturnIndirection[#this] : &:r1606_7, m1606_8 -# 1606| v1606_11(void) = ReturnVoid : -# 1606| v1606_12(void) = AliasedUse : m1606_3 -# 1606| v1606_13(void) = ExitFunction : - -# 1633| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1633| Block 0 -# 1633| v1633_1(void) = EnterFunction : -# 1633| m1633_2(unknown) = AliasedDefinition : -# 1633| m1633_3(unknown) = InitializeNonLocal : -# 1633| m1633_4(unknown) = Chi : total:m1633_2, partial:m1633_3 -# 1633| r1633_5(glval) = VariableAddress[#this] : -# 1633| m1633_6(glval) = InitializeParameter[#this] : &:r1633_5 -# 1633| r1633_7(glval) = Load[#this] : &:r1633_5, m1633_6 -# 1633| m1633_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1633_7 -# 1634| r1634_1(glval) = VariableAddress[#return] : -# 1634| r1634_2(glval) = VariableAddress[#this] : -# 1634| r1634_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1634_2, m1633_6 -# 1634| r1634_4(glval) = FieldAddress[i] : r1634_3 -# 1634| r1634_5(int) = Load[?] : &:r1634_4, ~m1633_8 -# 1634| m1634_6(int) = Store[#return] : &:r1634_1, r1634_5 -# 1633| v1633_9(void) = ReturnIndirection[#this] : &:r1633_7, m1633_8 -# 1633| r1633_10(glval) = VariableAddress[#return] : -# 1633| v1633_11(void) = ReturnValue : &:r1633_10, m1634_6 -# 1633| v1633_12(void) = AliasedUse : m1633_3 -# 1633| v1633_13(void) = ExitFunction : - -# 1637| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1637| Block 0 -# 1637| v1637_1(void) = EnterFunction : -# 1637| m1637_2(unknown) = AliasedDefinition : -# 1637| m1637_3(unknown) = InitializeNonLocal : -# 1637| m1637_4(unknown) = Chi : total:m1637_2, partial:m1637_3 -# 1637| r1637_5(glval) = VariableAddress[#this] : -# 1637| m1637_6(glval) = InitializeParameter[#this] : &:r1637_5 -# 1637| r1637_7(glval) = Load[#this] : &:r1637_5, m1637_6 -# 1637| m1637_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1637_7 -# 1638| r1638_1(glval) = VariableAddress[#return] : -# 1638| r1638_2(glval) = VariableAddress[#this] : -# 1638| r1638_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1638_2, m1637_6 -# 1638| r1638_4(glval) = FieldAddress[r] : r1638_3 -# 1638| r1638_5(int &) = Load[?] : &:r1638_4, ~m1637_8 -# 1638| r1638_6(glval) = CopyValue : r1638_5 -# 1638| r1638_7(int &) = CopyValue : r1638_6 -# 1638| m1638_8(int &) = Store[#return] : &:r1638_1, r1638_7 -# 1637| v1637_9(void) = ReturnIndirection[#this] : &:r1637_7, m1637_8 -# 1637| r1637_10(glval) = VariableAddress[#return] : -# 1637| v1637_11(void) = ReturnValue : &:r1637_10, m1638_8 -# 1637| v1637_12(void) = AliasedUse : m1637_3 -# 1637| v1637_13(void) = ExitFunction : - -# 1641| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1641| Block 0 -# 1641| v1641_1(void) = EnterFunction : -# 1641| m1641_2(unknown) = AliasedDefinition : -# 1641| m1641_3(unknown) = InitializeNonLocal : -# 1641| m1641_4(unknown) = Chi : total:m1641_2, partial:m1641_3 -# 1641| r1641_5(glval) = VariableAddress[#this] : -# 1641| m1641_6(glval) = InitializeParameter[#this] : &:r1641_5 -# 1641| r1641_7(glval) = Load[#this] : &:r1641_5, m1641_6 -# 1641| m1641_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1641_7 -# 1642| r1642_1(glval) = VariableAddress[#return] : -# 1642| r1642_2(glval) = VariableAddress[#temp1642:12] : -# 1642| r1642_3(int) = Constant[5] : -# 1642| m1642_4(int) = Store[#temp1642:12] : &:r1642_2, r1642_3 -# 1642| r1642_5(int &) = CopyValue : r1642_2 -# 1642| m1642_6(int &&) = Store[#return] : &:r1642_1, r1642_5 -# 1641| v1641_9(void) = ReturnIndirection[#this] : &:r1641_7, m1641_8 -# 1641| r1641_10(glval) = VariableAddress[#return] : -# 1641| v1641_11(void) = ReturnValue : &:r1641_10, m1642_6 -# 1641| v1641_12(void) = AliasedUse : m1641_3 -# 1641| v1641_13(void) = ExitFunction : - -# 1645| void tuple_structured_binding_no_ref_get() -# 1645| Block 0 -# 1645| v1645_1(void) = EnterFunction : -# 1645| m1645_2(unknown) = AliasedDefinition : -# 1645| m1645_3(unknown) = InitializeNonLocal : -# 1645| m1645_4(unknown) = Chi : total:m1645_2, partial:m1645_3 -# 1646| r1646_1(glval) = VariableAddress[t] : -# 1646| m1646_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1646_1 -# 1646| r1646_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : -# 1646| v1646_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1646_3, this:r1646_1 -# 1646| m1646_5(unknown) = ^CallSideEffect : ~m1645_4 -# 1646| m1646_6(unknown) = Chi : total:m1645_4, partial:m1646_5 -# 1646| m1646_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1646_1 -# 1646| m1646_8(StructuredBindingTupleNoRefGet) = Chi : total:m1646_2, partial:m1646_7 -# 1649| r1649_1(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_2(glval) = VariableAddress[t] : -# 1649| r1649_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1649_2 -# 1649| m1649_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1649_1, r1649_3 -# 1649| r1649_5(glval) = VariableAddress[i] : -# 1649| r1649_6(glval) = VariableAddress[#temp1649:16] : -# 1649| r1649_7(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_7, m1649_4 -# 1649| r1649_9(glval) = CopyValue : r1649_8 -# 1649| r1649_10(glval) = FunctionAddress[get] : -# 1649| r1649_11(int) = Call[get] : func:r1649_10, this:r1649_9 -# 1649| m1649_12(unknown) = ^CallSideEffect : ~m1646_6 -# 1649| m1649_13(unknown) = Chi : total:m1646_6, partial:m1649_12 -# 1649| v1649_14(void) = ^IndirectReadSideEffect[-1] : &:r1649_9, m1646_8 -# 1649| m1649_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_9 -# 1649| m1649_16(StructuredBindingTupleNoRefGet) = Chi : total:m1646_8, partial:m1649_15 -# 1649| m1649_17(int) = Store[#temp1649:16] : &:r1649_6, r1649_11 -# 1649| r1649_18(int &) = CopyValue : r1649_6 -# 1649| m1649_19(int &&) = Store[i] : &:r1649_5, r1649_18 -# 1649| r1649_20(glval) = VariableAddress[r] : -# 1649| r1649_21(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_22(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_21, m1649_4 -# 1649| r1649_23(glval) = CopyValue : r1649_22 -# 1649| r1649_24(glval) = FunctionAddress[get] : -# 1649| r1649_25(int &) = Call[get] : func:r1649_24, this:r1649_23 -# 1649| m1649_26(unknown) = ^CallSideEffect : ~m1649_13 -# 1649| m1649_27(unknown) = Chi : total:m1649_13, partial:m1649_26 -# 1649| v1649_28(void) = ^IndirectReadSideEffect[-1] : &:r1649_23, m1649_16 -# 1649| m1649_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_23 -# 1649| m1649_30(StructuredBindingTupleNoRefGet) = Chi : total:m1649_16, partial:m1649_29 -# 1649| r1649_31(glval) = CopyValue : r1649_25 -# 1649| r1649_32(int &) = CopyValue : r1649_31 -# 1649| m1649_33(int &) = Store[r] : &:r1649_20, r1649_32 -# 1649| r1649_34(glval) = VariableAddress[rv] : -# 1649| r1649_35(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_36(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_35, m1649_4 -# 1649| r1649_37(glval) = CopyValue : r1649_36 -# 1649| r1649_38(glval) = FunctionAddress[get] : -# 1649| r1649_39(int &&) = Call[get] : func:r1649_38, this:r1649_37 -# 1649| m1649_40(unknown) = ^CallSideEffect : ~m1649_27 -# 1649| m1649_41(unknown) = Chi : total:m1649_27, partial:m1649_40 -# 1649| v1649_42(void) = ^IndirectReadSideEffect[-1] : &:r1649_37, m1649_30 -# 1649| m1649_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_37 -# 1649| m1649_44(StructuredBindingTupleNoRefGet) = Chi : total:m1649_30, partial:m1649_43 -# 1649| r1649_45(glval) = CopyValue : r1649_39 -# 1649| r1649_46(int &) = CopyValue : r1649_45 -# 1649| m1649_47(int &&) = Store[rv] : &:r1649_34, r1649_46 -# 1650| r1650_1(int) = Constant[4] : -# 1650| r1650_2(glval) = VariableAddress[i] : -# 1650| r1650_3(int &&) = Load[i] : &:r1650_2, m1649_19 -# 1650| r1650_4(glval) = CopyValue : r1650_3 -# 1650| m1650_5(int) = Store[?] : &:r1650_4, r1650_1 -# 1651| r1651_1(glval) = VariableAddress[ri] : -# 1651| r1651_2(glval) = VariableAddress[i] : -# 1651| r1651_3(int &&) = Load[i] : &:r1651_2, m1649_19 -# 1651| r1651_4(glval) = CopyValue : r1651_3 -# 1651| r1651_5(int &) = CopyValue : r1651_4 -# 1651| m1651_6(int &) = Store[ri] : &:r1651_1, r1651_5 -# 1652| r1652_1(glval) = VariableAddress[v] : +# 1602| r1602_3(int &) = Load[r] : &:r1602_2, m1598_12 +# 1602| r1602_4(glval) = CopyValue : r1602_3 +# 1602| m1602_5(int) = Store[?] : &:r1602_4, r1602_1 +# 1602| m1602_6(unknown) = Chi : total:m1598_6, partial:m1602_5 +# 1603| r1603_1(glval) = VariableAddress[rr] : +# 1603| r1603_2(glval) = VariableAddress[r] : +# 1603| r1603_3(int &) = Load[r] : &:r1603_2, m1598_12 +# 1603| r1603_4(glval) = CopyValue : r1603_3 +# 1603| r1603_5(int &) = CopyValue : r1603_4 +# 1603| m1603_6(int &) = Store[rr] : &:r1603_1, r1603_5 +# 1604| r1604_1(glval) = VariableAddress[w] : +# 1604| r1604_2(glval) = VariableAddress[r] : +# 1604| r1604_3(int &) = Load[r] : &:r1604_2, m1598_12 +# 1604| r1604_4(int) = Load[?] : &:r1604_3, ~m1602_6 +# 1604| m1604_5(int) = Store[w] : &:r1604_1, r1604_4 +# 1606| v1606_1(void) = NoOp : +# 1581| v1581_5(void) = ReturnVoid : +# 1581| v1581_6(void) = AliasedUse : ~m1602_6 +# 1581| v1581_7(void) = ExitFunction : + +# 1608| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1608| Block 0 +# 1608| v1608_1(void) = EnterFunction : +# 1608| m1608_2(unknown) = AliasedDefinition : +# 1608| m1608_3(unknown) = InitializeNonLocal : +# 1608| m1608_4(unknown) = Chi : total:m1608_2, partial:m1608_3 +# 1608| r1608_5(glval) = VariableAddress[#this] : +# 1608| m1608_6(glval) = InitializeParameter[#this] : &:r1608_5 +# 1608| r1608_7(glval) = Load[#this] : &:r1608_5, m1608_6 +# 1608| m1608_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1608_7 +# 1608| v1608_9(void) = NoOp : +# 1608| v1608_10(void) = ReturnIndirection[#this] : &:r1608_7, m1608_8 +# 1608| v1608_11(void) = ReturnVoid : +# 1608| v1608_12(void) = AliasedUse : m1608_3 +# 1608| v1608_13(void) = ExitFunction : + +# 1635| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1635| Block 0 +# 1635| v1635_1(void) = EnterFunction : +# 1635| m1635_2(unknown) = AliasedDefinition : +# 1635| m1635_3(unknown) = InitializeNonLocal : +# 1635| m1635_4(unknown) = Chi : total:m1635_2, partial:m1635_3 +# 1635| r1635_5(glval) = VariableAddress[#this] : +# 1635| m1635_6(glval) = InitializeParameter[#this] : &:r1635_5 +# 1635| r1635_7(glval) = Load[#this] : &:r1635_5, m1635_6 +# 1635| m1635_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1635_7 +# 1636| r1636_1(glval) = VariableAddress[#return] : +# 1636| r1636_2(glval) = VariableAddress[#this] : +# 1636| r1636_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1636_2, m1635_6 +# 1636| r1636_4(glval) = FieldAddress[i] : r1636_3 +# 1636| r1636_5(int) = Load[?] : &:r1636_4, ~m1635_8 +# 1636| m1636_6(int) = Store[#return] : &:r1636_1, r1636_5 +# 1635| v1635_9(void) = ReturnIndirection[#this] : &:r1635_7, m1635_8 +# 1635| r1635_10(glval) = VariableAddress[#return] : +# 1635| v1635_11(void) = ReturnValue : &:r1635_10, m1636_6 +# 1635| v1635_12(void) = AliasedUse : m1635_3 +# 1635| v1635_13(void) = ExitFunction : + +# 1639| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1639| Block 0 +# 1639| v1639_1(void) = EnterFunction : +# 1639| m1639_2(unknown) = AliasedDefinition : +# 1639| m1639_3(unknown) = InitializeNonLocal : +# 1639| m1639_4(unknown) = Chi : total:m1639_2, partial:m1639_3 +# 1639| r1639_5(glval) = VariableAddress[#this] : +# 1639| m1639_6(glval) = InitializeParameter[#this] : &:r1639_5 +# 1639| r1639_7(glval) = Load[#this] : &:r1639_5, m1639_6 +# 1639| m1639_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1639_7 +# 1640| r1640_1(glval) = VariableAddress[#return] : +# 1640| r1640_2(glval) = VariableAddress[#this] : +# 1640| r1640_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1640_2, m1639_6 +# 1640| r1640_4(glval) = FieldAddress[r] : r1640_3 +# 1640| r1640_5(int &) = Load[?] : &:r1640_4, ~m1639_8 +# 1640| r1640_6(glval) = CopyValue : r1640_5 +# 1640| r1640_7(int &) = CopyValue : r1640_6 +# 1640| m1640_8(int &) = Store[#return] : &:r1640_1, r1640_7 +# 1639| v1639_9(void) = ReturnIndirection[#this] : &:r1639_7, m1639_8 +# 1639| r1639_10(glval) = VariableAddress[#return] : +# 1639| v1639_11(void) = ReturnValue : &:r1639_10, m1640_8 +# 1639| v1639_12(void) = AliasedUse : m1639_3 +# 1639| v1639_13(void) = ExitFunction : + +# 1643| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1643| Block 0 +# 1643| v1643_1(void) = EnterFunction : +# 1643| m1643_2(unknown) = AliasedDefinition : +# 1643| m1643_3(unknown) = InitializeNonLocal : +# 1643| m1643_4(unknown) = Chi : total:m1643_2, partial:m1643_3 +# 1643| r1643_5(glval) = VariableAddress[#this] : +# 1643| m1643_6(glval) = InitializeParameter[#this] : &:r1643_5 +# 1643| r1643_7(glval) = Load[#this] : &:r1643_5, m1643_6 +# 1643| m1643_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1643_7 +# 1644| r1644_1(glval) = VariableAddress[#return] : +# 1644| r1644_2(glval) = VariableAddress[#temp1644:12] : +# 1644| r1644_3(int) = Constant[5] : +# 1644| m1644_4(int) = Store[#temp1644:12] : &:r1644_2, r1644_3 +# 1644| r1644_5(int &) = CopyValue : r1644_2 +# 1644| m1644_6(int &&) = Store[#return] : &:r1644_1, r1644_5 +# 1643| v1643_9(void) = ReturnIndirection[#this] : &:r1643_7, m1643_8 +# 1643| r1643_10(glval) = VariableAddress[#return] : +# 1643| v1643_11(void) = ReturnValue : &:r1643_10, m1644_6 +# 1643| v1643_12(void) = AliasedUse : m1643_3 +# 1643| v1643_13(void) = ExitFunction : + +# 1647| void tuple_structured_binding_no_ref_get() +# 1647| Block 0 +# 1647| v1647_1(void) = EnterFunction : +# 1647| m1647_2(unknown) = AliasedDefinition : +# 1647| m1647_3(unknown) = InitializeNonLocal : +# 1647| m1647_4(unknown) = Chi : total:m1647_2, partial:m1647_3 +# 1648| r1648_1(glval) = VariableAddress[t] : +# 1648| m1648_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1648_1 +# 1648| r1648_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : +# 1648| v1648_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1648_3, this:r1648_1 +# 1648| m1648_5(unknown) = ^CallSideEffect : ~m1647_4 +# 1648| m1648_6(unknown) = Chi : total:m1647_4, partial:m1648_5 +# 1648| m1648_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1648_1 +# 1648| m1648_8(StructuredBindingTupleNoRefGet) = Chi : total:m1648_2, partial:m1648_7 +# 1651| r1651_1(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_2(glval) = VariableAddress[t] : +# 1651| r1651_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1651_2 +# 1651| m1651_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1651_1, r1651_3 +# 1651| r1651_5(glval) = VariableAddress[i] : +# 1651| r1651_6(glval) = VariableAddress[#temp1651:16] : +# 1651| r1651_7(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_7, m1651_4 +# 1651| r1651_9(glval) = CopyValue : r1651_8 +# 1651| r1651_10(glval) = FunctionAddress[get] : +# 1651| r1651_11(int) = Call[get] : func:r1651_10, this:r1651_9 +# 1651| m1651_12(unknown) = ^CallSideEffect : ~m1648_6 +# 1651| m1651_13(unknown) = Chi : total:m1648_6, partial:m1651_12 +# 1651| v1651_14(void) = ^IndirectReadSideEffect[-1] : &:r1651_9, m1648_8 +# 1651| m1651_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_9 +# 1651| m1651_16(StructuredBindingTupleNoRefGet) = Chi : total:m1648_8, partial:m1651_15 +# 1651| m1651_17(int) = Store[#temp1651:16] : &:r1651_6, r1651_11 +# 1651| r1651_18(int &) = CopyValue : r1651_6 +# 1651| m1651_19(int &&) = Store[i] : &:r1651_5, r1651_18 +# 1651| r1651_20(glval) = VariableAddress[r] : +# 1651| r1651_21(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_22(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_21, m1651_4 +# 1651| r1651_23(glval) = CopyValue : r1651_22 +# 1651| r1651_24(glval) = FunctionAddress[get] : +# 1651| r1651_25(int &) = Call[get] : func:r1651_24, this:r1651_23 +# 1651| m1651_26(unknown) = ^CallSideEffect : ~m1651_13 +# 1651| m1651_27(unknown) = Chi : total:m1651_13, partial:m1651_26 +# 1651| v1651_28(void) = ^IndirectReadSideEffect[-1] : &:r1651_23, m1651_16 +# 1651| m1651_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_23 +# 1651| m1651_30(StructuredBindingTupleNoRefGet) = Chi : total:m1651_16, partial:m1651_29 +# 1651| r1651_31(glval) = CopyValue : r1651_25 +# 1651| r1651_32(int &) = CopyValue : r1651_31 +# 1651| m1651_33(int &) = Store[r] : &:r1651_20, r1651_32 +# 1651| r1651_34(glval) = VariableAddress[rv] : +# 1651| r1651_35(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_36(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_35, m1651_4 +# 1651| r1651_37(glval) = CopyValue : r1651_36 +# 1651| r1651_38(glval) = FunctionAddress[get] : +# 1651| r1651_39(int &&) = Call[get] : func:r1651_38, this:r1651_37 +# 1651| m1651_40(unknown) = ^CallSideEffect : ~m1651_27 +# 1651| m1651_41(unknown) = Chi : total:m1651_27, partial:m1651_40 +# 1651| v1651_42(void) = ^IndirectReadSideEffect[-1] : &:r1651_37, m1651_30 +# 1651| m1651_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_37 +# 1651| m1651_44(StructuredBindingTupleNoRefGet) = Chi : total:m1651_30, partial:m1651_43 +# 1651| r1651_45(glval) = CopyValue : r1651_39 +# 1651| r1651_46(int &) = CopyValue : r1651_45 +# 1651| m1651_47(int &&) = Store[rv] : &:r1651_34, r1651_46 +# 1652| r1652_1(int) = Constant[4] : # 1652| r1652_2(glval) = VariableAddress[i] : -# 1652| r1652_3(int &&) = Load[i] : &:r1652_2, m1649_19 -# 1652| r1652_4(int) = Load[?] : &:r1652_3, m1650_5 -# 1652| m1652_5(int) = Store[v] : &:r1652_1, r1652_4 -# 1653| r1653_1(int) = Constant[5] : -# 1653| r1653_2(glval) = VariableAddress[r] : -# 1653| r1653_3(int &) = Load[r] : &:r1653_2, m1649_33 +# 1652| r1652_3(int &&) = Load[i] : &:r1652_2, m1651_19 +# 1652| r1652_4(glval) = CopyValue : r1652_3 +# 1652| m1652_5(int) = Store[?] : &:r1652_4, r1652_1 +# 1653| r1653_1(glval) = VariableAddress[ri] : +# 1653| r1653_2(glval) = VariableAddress[i] : +# 1653| r1653_3(int &&) = Load[i] : &:r1653_2, m1651_19 # 1653| r1653_4(glval) = CopyValue : r1653_3 -# 1653| m1653_5(int) = Store[?] : &:r1653_4, r1653_1 -# 1653| m1653_6(unknown) = Chi : total:m1649_41, partial:m1653_5 -# 1654| r1654_1(glval) = VariableAddress[rr] : -# 1654| r1654_2(glval) = VariableAddress[r] : -# 1654| r1654_3(int &) = Load[r] : &:r1654_2, m1649_33 -# 1654| r1654_4(glval) = CopyValue : r1654_3 -# 1654| r1654_5(int &) = CopyValue : r1654_4 -# 1654| m1654_6(int &) = Store[rr] : &:r1654_1, r1654_5 -# 1655| r1655_1(glval) = VariableAddress[w] : +# 1653| r1653_5(int &) = CopyValue : r1653_4 +# 1653| m1653_6(int &) = Store[ri] : &:r1653_1, r1653_5 +# 1654| r1654_1(glval) = VariableAddress[v] : +# 1654| r1654_2(glval) = VariableAddress[i] : +# 1654| r1654_3(int &&) = Load[i] : &:r1654_2, m1651_19 +# 1654| r1654_4(int) = Load[?] : &:r1654_3, m1652_5 +# 1654| m1654_5(int) = Store[v] : &:r1654_1, r1654_4 +# 1655| r1655_1(int) = Constant[5] : # 1655| r1655_2(glval) = VariableAddress[r] : -# 1655| r1655_3(int &) = Load[r] : &:r1655_2, m1649_33 -# 1655| r1655_4(int) = Load[?] : &:r1655_3, ~m1653_6 -# 1655| m1655_5(int) = Store[w] : &:r1655_1, r1655_4 -# 1659| r1659_1(glval) = VariableAddress[unnamed_local_variable] : -# 1659| r1659_2(glval) = VariableAddress[t] : -# 1659| r1659_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1659_2 -# 1659| m1659_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1659_1, r1659_3 -# 1660| r1660_1(glval) = VariableAddress[i] : -# 1660| r1660_2(glval) = VariableAddress[#temp1660:20] : -# 1660| r1660_3(glval) = VariableAddress[unnamed_local_variable] : -# 1660| r1660_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1660_3, m1659_4 -# 1660| r1660_5(glval) = CopyValue : r1660_4 -# 1660| r1660_6(glval) = FunctionAddress[get] : -# 1660| r1660_7(int) = Call[get] : func:r1660_6, this:r1660_5 -# 1660| m1660_8(unknown) = ^CallSideEffect : ~m1653_6 -# 1660| m1660_9(unknown) = Chi : total:m1653_6, partial:m1660_8 -# 1660| v1660_10(void) = ^IndirectReadSideEffect[-1] : &:r1660_5, m1649_44 -# 1660| m1660_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1660_5 -# 1660| m1660_12(StructuredBindingTupleNoRefGet) = Chi : total:m1649_44, partial:m1660_11 -# 1660| m1660_13(int) = Store[#temp1660:20] : &:r1660_2, r1660_7 -# 1660| r1660_14(int &) = CopyValue : r1660_2 -# 1660| m1660_15(int &&) = Store[i] : &:r1660_1, r1660_14 -# 1661| r1661_1(glval) = VariableAddress[r] : -# 1661| r1661_2(glval) = VariableAddress[unnamed_local_variable] : -# 1661| r1661_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1661_2, m1659_4 -# 1661| r1661_4(glval) = CopyValue : r1661_3 -# 1661| r1661_5(glval) = FunctionAddress[get] : -# 1661| r1661_6(int &) = Call[get] : func:r1661_5, this:r1661_4 -# 1661| m1661_7(unknown) = ^CallSideEffect : ~m1660_9 -# 1661| m1661_8(unknown) = Chi : total:m1660_9, partial:m1661_7 -# 1661| v1661_9(void) = ^IndirectReadSideEffect[-1] : &:r1661_4, m1660_12 -# 1661| m1661_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1661_4 -# 1661| m1661_11(StructuredBindingTupleNoRefGet) = Chi : total:m1660_12, partial:m1661_10 -# 1661| r1661_12(glval) = CopyValue : r1661_6 -# 1661| r1661_13(int &) = CopyValue : r1661_12 -# 1661| m1661_14(int &) = Store[r] : &:r1661_1, r1661_13 -# 1662| r1662_1(glval) = VariableAddress[rv] : -# 1662| r1662_2(glval) = VariableAddress[unnamed_local_variable] : -# 1662| r1662_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1662_2, m1659_4 -# 1662| r1662_4(glval) = CopyValue : r1662_3 -# 1662| r1662_5(glval) = FunctionAddress[get] : -# 1662| r1662_6(int &&) = Call[get] : func:r1662_5, this:r1662_4 -# 1662| m1662_7(unknown) = ^CallSideEffect : ~m1661_8 -# 1662| m1662_8(unknown) = Chi : total:m1661_8, partial:m1662_7 -# 1662| v1662_9(void) = ^IndirectReadSideEffect[-1] : &:r1662_4, m1661_11 -# 1662| m1662_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1662_4 -# 1662| m1662_11(StructuredBindingTupleNoRefGet) = Chi : total:m1661_11, partial:m1662_10 -# 1662| r1662_12(glval) = CopyValue : r1662_6 -# 1662| r1662_13(int &) = CopyValue : r1662_12 -# 1662| m1662_14(int &&) = Store[rv] : &:r1662_1, r1662_13 -# 1663| r1663_1(int) = Constant[4] : -# 1663| r1663_2(glval) = VariableAddress[i] : -# 1663| r1663_3(int &&) = Load[i] : &:r1663_2, m1660_15 -# 1663| r1663_4(glval) = CopyValue : r1663_3 -# 1663| m1663_5(int) = Store[?] : &:r1663_4, r1663_1 -# 1664| r1664_1(glval) = VariableAddress[ri] : -# 1664| r1664_2(glval) = VariableAddress[i] : -# 1664| r1664_3(int &&) = Load[i] : &:r1664_2, m1660_15 -# 1664| r1664_4(glval) = CopyValue : r1664_3 -# 1664| r1664_5(int &) = CopyValue : r1664_4 -# 1664| m1664_6(int &) = Store[ri] : &:r1664_1, r1664_5 -# 1665| r1665_1(glval) = VariableAddress[v] : +# 1655| r1655_3(int &) = Load[r] : &:r1655_2, m1651_33 +# 1655| r1655_4(glval) = CopyValue : r1655_3 +# 1655| m1655_5(int) = Store[?] : &:r1655_4, r1655_1 +# 1655| m1655_6(unknown) = Chi : total:m1651_41, partial:m1655_5 +# 1656| r1656_1(glval) = VariableAddress[rr] : +# 1656| r1656_2(glval) = VariableAddress[r] : +# 1656| r1656_3(int &) = Load[r] : &:r1656_2, m1651_33 +# 1656| r1656_4(glval) = CopyValue : r1656_3 +# 1656| r1656_5(int &) = CopyValue : r1656_4 +# 1656| m1656_6(int &) = Store[rr] : &:r1656_1, r1656_5 +# 1657| r1657_1(glval) = VariableAddress[w] : +# 1657| r1657_2(glval) = VariableAddress[r] : +# 1657| r1657_3(int &) = Load[r] : &:r1657_2, m1651_33 +# 1657| r1657_4(int) = Load[?] : &:r1657_3, ~m1655_6 +# 1657| m1657_5(int) = Store[w] : &:r1657_1, r1657_4 +# 1661| r1661_1(glval) = VariableAddress[unnamed_local_variable] : +# 1661| r1661_2(glval) = VariableAddress[t] : +# 1661| r1661_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1661_2 +# 1661| m1661_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1661_1, r1661_3 +# 1662| r1662_1(glval) = VariableAddress[i] : +# 1662| r1662_2(glval) = VariableAddress[#temp1662:20] : +# 1662| r1662_3(glval) = VariableAddress[unnamed_local_variable] : +# 1662| r1662_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1662_3, m1661_4 +# 1662| r1662_5(glval) = CopyValue : r1662_4 +# 1662| r1662_6(glval) = FunctionAddress[get] : +# 1662| r1662_7(int) = Call[get] : func:r1662_6, this:r1662_5 +# 1662| m1662_8(unknown) = ^CallSideEffect : ~m1655_6 +# 1662| m1662_9(unknown) = Chi : total:m1655_6, partial:m1662_8 +# 1662| v1662_10(void) = ^IndirectReadSideEffect[-1] : &:r1662_5, m1651_44 +# 1662| m1662_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1662_5 +# 1662| m1662_12(StructuredBindingTupleNoRefGet) = Chi : total:m1651_44, partial:m1662_11 +# 1662| m1662_13(int) = Store[#temp1662:20] : &:r1662_2, r1662_7 +# 1662| r1662_14(int &) = CopyValue : r1662_2 +# 1662| m1662_15(int &&) = Store[i] : &:r1662_1, r1662_14 +# 1663| r1663_1(glval) = VariableAddress[r] : +# 1663| r1663_2(glval) = VariableAddress[unnamed_local_variable] : +# 1663| r1663_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1663_2, m1661_4 +# 1663| r1663_4(glval) = CopyValue : r1663_3 +# 1663| r1663_5(glval) = FunctionAddress[get] : +# 1663| r1663_6(int &) = Call[get] : func:r1663_5, this:r1663_4 +# 1663| m1663_7(unknown) = ^CallSideEffect : ~m1662_9 +# 1663| m1663_8(unknown) = Chi : total:m1662_9, partial:m1663_7 +# 1663| v1663_9(void) = ^IndirectReadSideEffect[-1] : &:r1663_4, m1662_12 +# 1663| m1663_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1663_4 +# 1663| m1663_11(StructuredBindingTupleNoRefGet) = Chi : total:m1662_12, partial:m1663_10 +# 1663| r1663_12(glval) = CopyValue : r1663_6 +# 1663| r1663_13(int &) = CopyValue : r1663_12 +# 1663| m1663_14(int &) = Store[r] : &:r1663_1, r1663_13 +# 1664| r1664_1(glval) = VariableAddress[rv] : +# 1664| r1664_2(glval) = VariableAddress[unnamed_local_variable] : +# 1664| r1664_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1664_2, m1661_4 +# 1664| r1664_4(glval) = CopyValue : r1664_3 +# 1664| r1664_5(glval) = FunctionAddress[get] : +# 1664| r1664_6(int &&) = Call[get] : func:r1664_5, this:r1664_4 +# 1664| m1664_7(unknown) = ^CallSideEffect : ~m1663_8 +# 1664| m1664_8(unknown) = Chi : total:m1663_8, partial:m1664_7 +# 1664| v1664_9(void) = ^IndirectReadSideEffect[-1] : &:r1664_4, m1663_11 +# 1664| m1664_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1664_4 +# 1664| m1664_11(StructuredBindingTupleNoRefGet) = Chi : total:m1663_11, partial:m1664_10 +# 1664| r1664_12(glval) = CopyValue : r1664_6 +# 1664| r1664_13(int &) = CopyValue : r1664_12 +# 1664| m1664_14(int &&) = Store[rv] : &:r1664_1, r1664_13 +# 1665| r1665_1(int) = Constant[4] : # 1665| r1665_2(glval) = VariableAddress[i] : -# 1665| r1665_3(int &&) = Load[i] : &:r1665_2, m1660_15 -# 1665| r1665_4(int) = Load[?] : &:r1665_3, m1663_5 -# 1665| m1665_5(int) = Store[v] : &:r1665_1, r1665_4 -# 1666| r1666_1(int) = Constant[5] : -# 1666| r1666_2(glval) = VariableAddress[r] : -# 1666| r1666_3(int &) = Load[r] : &:r1666_2, m1661_14 +# 1665| r1665_3(int &&) = Load[i] : &:r1665_2, m1662_15 +# 1665| r1665_4(glval) = CopyValue : r1665_3 +# 1665| m1665_5(int) = Store[?] : &:r1665_4, r1665_1 +# 1666| r1666_1(glval) = VariableAddress[ri] : +# 1666| r1666_2(glval) = VariableAddress[i] : +# 1666| r1666_3(int &&) = Load[i] : &:r1666_2, m1662_15 # 1666| r1666_4(glval) = CopyValue : r1666_3 -# 1666| m1666_5(int) = Store[?] : &:r1666_4, r1666_1 -# 1666| m1666_6(unknown) = Chi : total:m1662_8, partial:m1666_5 -# 1667| r1667_1(glval) = VariableAddress[rr] : -# 1667| r1667_2(glval) = VariableAddress[r] : -# 1667| r1667_3(int &) = Load[r] : &:r1667_2, m1661_14 -# 1667| r1667_4(glval) = CopyValue : r1667_3 -# 1667| r1667_5(int &) = CopyValue : r1667_4 -# 1667| m1667_6(int &) = Store[rr] : &:r1667_1, r1667_5 -# 1668| r1668_1(glval) = VariableAddress[w] : +# 1666| r1666_5(int &) = CopyValue : r1666_4 +# 1666| m1666_6(int &) = Store[ri] : &:r1666_1, r1666_5 +# 1667| r1667_1(glval) = VariableAddress[v] : +# 1667| r1667_2(glval) = VariableAddress[i] : +# 1667| r1667_3(int &&) = Load[i] : &:r1667_2, m1662_15 +# 1667| r1667_4(int) = Load[?] : &:r1667_3, m1665_5 +# 1667| m1667_5(int) = Store[v] : &:r1667_1, r1667_4 +# 1668| r1668_1(int) = Constant[5] : # 1668| r1668_2(glval) = VariableAddress[r] : -# 1668| r1668_3(int &) = Load[r] : &:r1668_2, m1661_14 -# 1668| r1668_4(int) = Load[?] : &:r1668_3, ~m1666_6 -# 1668| m1668_5(int) = Store[w] : &:r1668_1, r1668_4 -# 1670| v1670_1(void) = NoOp : -# 1645| v1645_5(void) = ReturnVoid : -# 1645| v1645_6(void) = AliasedUse : ~m1666_6 -# 1645| v1645_7(void) = ExitFunction : - -# 1672| void array_structured_binding_non_ref_init() -# 1672| Block 0 -# 1672| v1672_1(void) = EnterFunction : -# 1672| m1672_2(unknown) = AliasedDefinition : -# 1672| m1672_3(unknown) = InitializeNonLocal : -# 1672| m1672_4(unknown) = Chi : total:m1672_2, partial:m1672_3 -# 1673| r1673_1(glval) = VariableAddress[xs] : -# 1673| m1673_2(int[2]) = Uninitialized[xs] : &:r1673_1 -# 1673| r1673_3(int) = Constant[0] : -# 1673| r1673_4(glval) = PointerAdd[4] : r1673_1, r1673_3 -# 1673| r1673_5(int) = Constant[1] : -# 1673| m1673_6(int) = Store[?] : &:r1673_4, r1673_5 -# 1673| m1673_7(int[2]) = Chi : total:m1673_2, partial:m1673_6 -# 1673| r1673_8(int) = Constant[1] : -# 1673| r1673_9(glval) = PointerAdd[4] : r1673_1, r1673_8 -# 1673| r1673_10(int) = Constant[2] : -# 1673| m1673_11(int) = Store[?] : &:r1673_9, r1673_10 -# 1673| m1673_12(int[2]) = Chi : total:m1673_7, partial:m1673_11 -# 1674| r1674_1(glval) = VariableAddress[(unnamed local variable)] : -# 1674| r1674_2(glval) = VariableAddress[xs] : -# 1674| r1674_3(int[2]) = Load[xs] : &:r1674_2, m1673_12 -# 1674| m1674_4(int[2]) = Store[(unnamed local variable)] : &:r1674_1, r1674_3 -# 1674| r1674_5(glval) = VariableAddress[x0] : +# 1668| r1668_3(int &) = Load[r] : &:r1668_2, m1663_14 +# 1668| r1668_4(glval) = CopyValue : r1668_3 +# 1668| m1668_5(int) = Store[?] : &:r1668_4, r1668_1 +# 1668| m1668_6(unknown) = Chi : total:m1664_8, partial:m1668_5 +# 1669| r1669_1(glval) = VariableAddress[rr] : +# 1669| r1669_2(glval) = VariableAddress[r] : +# 1669| r1669_3(int &) = Load[r] : &:r1669_2, m1663_14 +# 1669| r1669_4(glval) = CopyValue : r1669_3 +# 1669| r1669_5(int &) = CopyValue : r1669_4 +# 1669| m1669_6(int &) = Store[rr] : &:r1669_1, r1669_5 +# 1670| r1670_1(glval) = VariableAddress[w] : +# 1670| r1670_2(glval) = VariableAddress[r] : +# 1670| r1670_3(int &) = Load[r] : &:r1670_2, m1663_14 +# 1670| r1670_4(int) = Load[?] : &:r1670_3, ~m1668_6 +# 1670| m1670_5(int) = Store[w] : &:r1670_1, r1670_4 +# 1672| v1672_1(void) = NoOp : +# 1647| v1647_5(void) = ReturnVoid : +# 1647| v1647_6(void) = AliasedUse : ~m1668_6 +# 1647| v1647_7(void) = ExitFunction : + +# 1674| void array_structured_binding_non_ref_init() +# 1674| Block 0 +# 1674| v1674_1(void) = EnterFunction : +# 1674| m1674_2(unknown) = AliasedDefinition : +# 1674| m1674_3(unknown) = InitializeNonLocal : +# 1674| m1674_4(unknown) = Chi : total:m1674_2, partial:m1674_3 +# 1675| r1675_1(glval) = VariableAddress[xs] : +# 1675| m1675_2(int[2]) = Uninitialized[xs] : &:r1675_1 +# 1675| r1675_3(int) = Constant[0] : +# 1675| r1675_4(glval) = PointerAdd[4] : r1675_1, r1675_3 +# 1675| r1675_5(int) = Constant[1] : +# 1675| m1675_6(int) = Store[?] : &:r1675_4, r1675_5 +# 1675| m1675_7(int[2]) = Chi : total:m1675_2, partial:m1675_6 +# 1675| r1675_8(int) = Constant[1] : +# 1675| r1675_9(glval) = PointerAdd[4] : r1675_1, r1675_8 +# 1675| r1675_10(int) = Constant[2] : +# 1675| m1675_11(int) = Store[?] : &:r1675_9, r1675_10 +# 1675| m1675_12(int[2]) = Chi : total:m1675_7, partial:m1675_11 +# 1676| r1676_1(glval) = VariableAddress[(unnamed local variable)] : +# 1676| r1676_2(glval) = VariableAddress[xs] : +# 1676| r1676_3(int[2]) = Load[xs] : &:r1676_2, m1675_12 +# 1676| m1676_4(int[2]) = Store[(unnamed local variable)] : &:r1676_1, r1676_3 +# 1676| r1676_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int *) = Convert : r0_1 #-----| r0_3(unsigned long) = Constant[0] : #-----| r0_4(glval) = PointerAdd[4] : r0_2, r0_3 -#-----| m0_5(int &) = Store[x0] : &:r1674_5, r0_4 -# 1674| r1674_6(glval) = VariableAddress[x1] : +#-----| m0_5(int &) = Store[x0] : &:r1676_5, r0_4 +# 1676| r1676_6(glval) = VariableAddress[x1] : #-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_7(int *) = Convert : r0_6 #-----| r0_8(unsigned long) = Constant[1] : #-----| r0_9(glval) = PointerAdd[4] : r0_7, r0_8 -#-----| m0_10(int &) = Store[x1] : &:r1674_6, r0_9 -# 1675| v1675_1(void) = NoOp : -# 1672| v1672_5(void) = ReturnVoid : -# 1672| v1672_6(void) = AliasedUse : m1672_3 -# 1672| v1672_7(void) = ExitFunction : - -# 1680| void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1680| Block 0 -# 1680| v1680_1(void) = EnterFunction : -# 1680| m1680_2(unknown) = AliasedDefinition : -# 1680| m1680_3(unknown) = InitializeNonLocal : -# 1680| m1680_4(unknown) = Chi : total:m1680_2, partial:m1680_3 -# 1680| r1680_5(glval) = VariableAddress[#this] : -# 1680| m1680_6(glval) = InitializeParameter[#this] : &:r1680_5 -# 1680| r1680_7(glval) = Load[#this] : &:r1680_5, m1680_6 -# 1680| m1680_8(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1680_7 -# 1680| v1680_9(void) = NoOp : -# 1680| v1680_10(void) = ReturnIndirection[#this] : &:r1680_7, m1680_8 -# 1680| v1680_11(void) = ReturnVoid : -# 1680| v1680_12(void) = AliasedUse : m1680_3 -# 1680| v1680_13(void) = ExitFunction : - -# 1683| void captured_lambda(int, int&, int&&) -# 1683| Block 0 -# 1683| v1683_1(void) = EnterFunction : -# 1683| m1683_2(unknown) = AliasedDefinition : -# 1683| m1683_3(unknown) = InitializeNonLocal : -# 1683| m1683_4(unknown) = Chi : total:m1683_2, partial:m1683_3 -# 1683| r1683_5(glval) = VariableAddress[x] : -# 1683| m1683_6(int) = InitializeParameter[x] : &:r1683_5 -# 1683| r1683_7(glval) = VariableAddress[y] : -# 1683| m1683_8(int &) = InitializeParameter[y] : &:r1683_7 -# 1683| r1683_9(int &) = Load[y] : &:r1683_7, m1683_8 -# 1683| m1683_10(unknown) = InitializeIndirection[y] : &:r1683_9 -# 1683| r1683_11(glval) = VariableAddress[z] : -# 1683| m1683_12(int &&) = InitializeParameter[z] : &:r1683_11 -# 1683| r1683_13(int &&) = Load[z] : &:r1683_11, m1683_12 -# 1683| m1683_14(unknown) = InitializeIndirection[z] : &:r1683_13 -# 1685| r1685_1(glval) = VariableAddress[obj1] : -# 1685| r1685_2(glval) = VariableAddress[#temp1685:24] : -# 1685| m1685_3(CapturedLambdaMyObj) = Uninitialized[#temp1685:24] : &:r1685_2 -# 1685| r1685_4(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1685| v1685_5(void) = Call[CapturedLambdaMyObj] : func:r1685_4, this:r1685_2 -# 1685| m1685_6(unknown) = ^CallSideEffect : ~m1683_4 -# 1685| m1685_7(unknown) = Chi : total:m1683_4, partial:m1685_6 -# 1685| m1685_8(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1685_2 -# 1685| m1685_9(CapturedLambdaMyObj) = Chi : total:m1685_3, partial:m1685_8 -# 1685| r1685_10(glval) = Convert : r1685_2 -# 1685| r1685_11(CapturedLambdaMyObj &) = CopyValue : r1685_10 -# 1685| m1685_12(CapturedLambdaMyObj &) = Store[obj1] : &:r1685_1, r1685_11 -# 1686| r1686_1(glval) = VariableAddress[obj2] : -# 1686| m1686_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1686_1 -# 1686| r1686_3(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1686| v1686_4(void) = Call[CapturedLambdaMyObj] : func:r1686_3, this:r1686_1 -# 1686| m1686_5(unknown) = ^CallSideEffect : ~m1685_7 -# 1686| m1686_6(unknown) = Chi : total:m1685_7, partial:m1686_5 -# 1686| m1686_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1686_1 -# 1686| m1686_8(CapturedLambdaMyObj) = Chi : total:m1686_2, partial:m1686_7 -# 1688| r1688_1(glval) = VariableAddress[lambda_outer] : -# 1688| r1688_2(glval) = VariableAddress[#temp1688:24] : -# 1688| m1688_3(decltype([...](...){...})) = Uninitialized[#temp1688:24] : &:r1688_2 -# 1688| r1688_4(glval) = FieldAddress[obj1] : r1688_2 -# 1688| r1688_5(glval) = VariableAddress[obj1] : -# 1688| r1688_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1688_5, m1685_12 -#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1688_6, m1685_9 -#-----| m0_2(CapturedLambdaMyObj) = Store[?] : &:r1688_4, r0_1 -#-----| m0_3(decltype([...](...){...})) = Chi : total:m1688_3, partial:m0_2 -# 1688| r1688_7(glval) = FieldAddress[obj2] : r1688_2 -# 1688| r1688_8(glval) = VariableAddress[obj2] : -# 1688| r1688_9(CapturedLambdaMyObj) = Load[obj2] : &:r1688_8, m1686_8 -# 1688| m1688_10(CapturedLambdaMyObj) = Store[?] : &:r1688_7, r1688_9 -# 1688| m1688_11(decltype([...](...){...})) = Chi : total:m0_3, partial:m1688_10 -# 1688| r1688_12(glval) = FieldAddress[x] : r1688_2 -# 1688| r1688_13(glval) = VariableAddress[x] : -# 1688| r1688_14(int) = Load[x] : &:r1688_13, m1683_6 -# 1688| m1688_15(int) = Store[?] : &:r1688_12, r1688_14 -# 1688| m1688_16(decltype([...](...){...})) = Chi : total:m1688_11, partial:m1688_15 -# 1688| r1688_17(glval) = FieldAddress[y] : r1688_2 -# 1688| r1688_18(glval) = VariableAddress[y] : -# 1688| r1688_19(int &) = Load[y] : &:r1688_18, m1683_8 -# 1690| r1690_1(int) = Load[?] : &:r1688_19, ~m1683_10 -# 1690| m1690_2(int) = Store[?] : &:r1688_17, r1690_1 -# 1690| m1690_3(decltype([...](...){...})) = Chi : total:m1688_16, partial:m1690_2 -# 1688| r1688_20(glval) = FieldAddress[z] : r1688_2 -# 1688| r1688_21(glval) = VariableAddress[z] : -# 1688| r1688_22(int &&) = Load[z] : &:r1688_21, m1683_12 -# 1690| r1690_4(int) = Load[?] : &:r1688_22, ~m1683_14 -# 1690| m1690_5(int) = Store[?] : &:r1688_20, r1690_4 -# 1690| m1690_6(decltype([...](...){...})) = Chi : total:m1690_3, partial:m1690_5 -# 1688| r1688_23(decltype([...](...){...})) = Load[#temp1688:24] : &:r1688_2, m1690_6 -# 1688| m1688_24(decltype([...](...){...})) = Store[lambda_outer] : &:r1688_1, r1688_23 -# 1691| v1691_1(void) = NoOp : -# 1683| v1683_15(void) = ReturnIndirection[y] : &:r1683_9, m1683_10 -# 1683| v1683_16(void) = ReturnIndirection[z] : &:r1683_13, m1683_14 -# 1683| v1683_17(void) = ReturnVoid : -# 1683| v1683_18(void) = AliasedUse : ~m1686_6 -# 1683| v1683_19(void) = ExitFunction : - -# 1688| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const -# 1688| Block 0 -# 1688| v1688_1(void) = EnterFunction : -# 1688| m1688_2(unknown) = AliasedDefinition : -# 1688| m1688_3(unknown) = InitializeNonLocal : -# 1688| m1688_4(unknown) = Chi : total:m1688_2, partial:m1688_3 -# 1688| r1688_5(glval) = VariableAddress[#this] : -# 1688| m1688_6(glval) = InitializeParameter[#this] : &:r1688_5 -# 1688| r1688_7(glval) = Load[#this] : &:r1688_5, m1688_6 -# 1688| m1688_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1688_7 -# 1689| r1689_1(glval) = VariableAddress[lambda_inner] : -# 1689| r1689_2(glval) = VariableAddress[#temp1689:28] : -# 1689| m1689_3(decltype([...](...){...})) = Uninitialized[#temp1689:28] : &:r1689_2 -# 1689| r1689_4(glval) = FieldAddress[obj1] : r1689_2 -# 1689| r1689_5(glval) = VariableAddress[#this] : -# 1689| r1689_6(lambda [] type at line 1689, col. 29 *) = Load[#this] : &:r1689_5, m1688_6 -# 1689| r1689_7(glval) = FieldAddress[obj1] : r1689_6 -# 1689| r1689_8(CapturedLambdaMyObj) = Load[?] : &:r1689_7, ~m1688_8 -# 1689| m1689_9(CapturedLambdaMyObj) = Store[?] : &:r1689_4, r1689_8 -# 1689| m1689_10(decltype([...](...){...})) = Chi : total:m1689_3, partial:m1689_9 -# 1689| r1689_11(glval) = FieldAddress[obj2] : r1689_2 -# 1689| r1689_12(glval) = VariableAddress[#this] : -# 1689| r1689_13(lambda [] type at line 1689, col. 29 *) = Load[#this] : &:r1689_12, m1688_6 -# 1689| r1689_14(glval) = FieldAddress[obj2] : r1689_13 -# 1689| r1689_15(CapturedLambdaMyObj) = Load[?] : &:r1689_14, ~m1688_8 -# 1689| m1689_16(CapturedLambdaMyObj) = Store[?] : &:r1689_11, r1689_15 -# 1689| m1689_17(decltype([...](...){...})) = Chi : total:m1689_10, partial:m1689_16 -# 1689| r1689_18(glval) = FieldAddress[x] : r1689_2 -# 1689| r1689_19(glval) = VariableAddress[#this] : -# 1689| r1689_20(lambda [] type at line 1688, col. 25 *) = Load[#this] : &:r1689_19, m1688_6 -# 1689| r1689_21(glval) = FieldAddress[x] : r1689_20 -# 1689| r1689_22(int) = Load[?] : &:r1689_21, ~m1688_8 -# 1689| m1689_23(int) = Store[?] : &:r1689_18, r1689_22 -# 1689| m1689_24(decltype([...](...){...})) = Chi : total:m1689_17, partial:m1689_23 -# 1689| r1689_25(glval) = FieldAddress[y] : r1689_2 -# 1689| r1689_26(glval) = VariableAddress[#this] : -# 1689| r1689_27(lambda [] type at line 1688, col. 25 *) = Load[#this] : &:r1689_26, m1688_6 -# 1689| r1689_28(glval) = FieldAddress[y] : r1689_27 -# 1689| r1689_29(int) = Load[?] : &:r1689_28, ~m1688_8 -# 1689| m1689_30(int) = Store[?] : &:r1689_25, r1689_29 -# 1689| m1689_31(decltype([...](...){...})) = Chi : total:m1689_24, partial:m1689_30 -# 1689| r1689_32(glval) = FieldAddress[z] : r1689_2 -# 1689| r1689_33(glval) = VariableAddress[#this] : -# 1689| r1689_34(lambda [] type at line 1688, col. 25 *) = Load[#this] : &:r1689_33, m1688_6 -# 1689| r1689_35(glval) = FieldAddress[z] : r1689_34 -# 1689| r1689_36(int) = Load[?] : &:r1689_35, ~m1688_8 -# 1689| m1689_37(int) = Store[?] : &:r1689_32, r1689_36 -# 1689| m1689_38(decltype([...](...){...})) = Chi : total:m1689_31, partial:m1689_37 -# 1689| r1689_39(decltype([...](...){...})) = Load[#temp1689:28] : &:r1689_2, m1689_38 -# 1689| m1689_40(decltype([...](...){...})) = Store[lambda_inner] : &:r1689_1, r1689_39 -# 1690| v1690_1(void) = NoOp : -# 1688| v1688_9(void) = ReturnIndirection[#this] : &:r1688_7, m1688_8 -# 1688| v1688_10(void) = ReturnVoid : -# 1688| v1688_11(void) = AliasedUse : m1688_3 -# 1688| v1688_12(void) = ExitFunction : - -# 1689| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)::operator()() const -# 1689| Block 0 -# 1689| v1689_1(void) = EnterFunction : -# 1689| m1689_2(unknown) = AliasedDefinition : -# 1689| m1689_3(unknown) = InitializeNonLocal : -# 1689| m1689_4(unknown) = Chi : total:m1689_2, partial:m1689_3 -# 1689| r1689_5(glval) = VariableAddress[#this] : -# 1689| m1689_6(glval) = InitializeParameter[#this] : &:r1689_5 -# 1689| r1689_7(glval) = Load[#this] : &:r1689_5, m1689_6 -# 1689| m1689_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1689_7 -# 1689| v1689_9(void) = NoOp : -# 1689| v1689_10(void) = NoOp : -# 1689| v1689_11(void) = ReturnIndirection[#this] : &:r1689_7, m1689_8 -# 1689| v1689_12(void) = ReturnVoid : -# 1689| v1689_13(void) = AliasedUse : m1689_3 -# 1689| v1689_14(void) = ExitFunction : - -# 1693| int goto_on_same_line() -# 1693| Block 0 -# 1693| v1693_1(void) = EnterFunction : -# 1693| m1693_2(unknown) = AliasedDefinition : -# 1693| m1693_3(unknown) = InitializeNonLocal : -# 1693| m1693_4(unknown) = Chi : total:m1693_2, partial:m1693_3 -# 1694| r1694_1(glval) = VariableAddress[x] : -# 1694| r1694_2(int) = Constant[42] : -# 1694| m1694_3(int) = Store[x] : &:r1694_1, r1694_2 -# 1695| v1695_1(void) = NoOp : -# 1695| v1695_2(void) = NoOp : -# 1696| r1696_1(glval) = VariableAddress[#return] : -# 1696| r1696_2(glval) = VariableAddress[x] : -# 1696| r1696_3(int) = Load[x] : &:r1696_2, m1694_3 -# 1696| m1696_4(int) = Store[#return] : &:r1696_1, r1696_3 -# 1693| r1693_5(glval) = VariableAddress[#return] : -# 1693| v1693_6(void) = ReturnValue : &:r1693_5, m1696_4 -# 1693| v1693_7(void) = AliasedUse : m1693_3 -# 1693| v1693_8(void) = ExitFunction : - -# 1701| void TrivialLambdaClass::m() const -# 1701| Block 0 -# 1701| v1701_1(void) = EnterFunction : -# 1701| m1701_2(unknown) = AliasedDefinition : -# 1701| m1701_3(unknown) = InitializeNonLocal : -# 1701| m1701_4(unknown) = Chi : total:m1701_2, partial:m1701_3 -# 1701| r1701_5(glval) = VariableAddress[#this] : -# 1701| m1701_6(glval) = InitializeParameter[#this] : &:r1701_5 -# 1701| r1701_7(glval) = Load[#this] : &:r1701_5, m1701_6 -# 1701| m1701_8(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1701_7 -# 1702| r1702_1(glval) = VariableAddress[l_m_outer] : -# 1702| r1702_2(glval) = VariableAddress[#temp1702:25] : -# 1702| m1702_3(decltype([...](...){...})) = Uninitialized[#temp1702:25] : &:r1702_2 -# 1702| r1702_4(glval) = FieldAddress[(captured this)] : r1702_2 -# 1702| r1702_5(glval) = VariableAddress[#this] : -# 1702| r1702_6(TrivialLambdaClass *) = Load[#this] : &:r1702_5, m1701_6 -# 1702| r1702_7(TrivialLambdaClass) = Load[?] : &:r1702_6, ~m1701_8 -# 1702| m1702_8(TrivialLambdaClass) = Store[?] : &:r1702_4, r1702_7 -# 1702| r1702_9(decltype([...](...){...})) = Load[#temp1702:25] : &:r1702_2, ~m1702_8 -# 1702| m1702_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1702_1, r1702_9 -# 1709| v1709_1(void) = NoOp : -# 1701| v1701_9(void) = ReturnIndirection[#this] : &:r1701_7, m1701_8 -# 1701| v1701_10(void) = ReturnVoid : -# 1701| v1701_11(void) = AliasedUse : m1701_3 -# 1701| v1701_12(void) = ExitFunction : - -# 1702| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const -# 1702| Block 0 -# 1702| v1702_1(void) = EnterFunction : -# 1702| m1702_2(unknown) = AliasedDefinition : -# 1702| m1702_3(unknown) = InitializeNonLocal : -# 1702| m1702_4(unknown) = Chi : total:m1702_2, partial:m1702_3 -# 1702| r1702_5(glval) = VariableAddress[#this] : -# 1702| m1702_6(glval) = InitializeParameter[#this] : &:r1702_5 -# 1702| r1702_7(glval) = Load[#this] : &:r1702_5, m1702_6 -# 1702| m1702_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1702_7 -# 1703| r1703_1(glval) = VariableAddress[#this] : -# 1703| r1703_2(lambda [] type at line 1702, col. 26 *) = Load[#this] : &:r1703_1, m1702_6 -# 1703| r1703_3(glval) = FieldAddress[(captured this)] : r1703_2 -# 1703| r1703_4(TrivialLambdaClass *) = CopyValue : r1703_3 -# 1703| r1703_5(glval) = FunctionAddress[m] : -# 1703| v1703_6(void) = Call[m] : func:r1703_5, this:r1703_4 -# 1703| m1703_7(unknown) = ^CallSideEffect : ~m1702_4 -# 1703| m1703_8(unknown) = Chi : total:m1702_4, partial:m1703_7 -# 1703| v1703_9(void) = ^IndirectReadSideEffect[-1] : &:r1703_4, ~m1702_8 -# 1705| r1705_1(glval) = VariableAddress[l_m_inner] : -# 1705| r1705_2(glval) = VariableAddress[#temp1705:29] : -# 1705| m1705_3(decltype([...](...){...})) = Uninitialized[#temp1705:29] : &:r1705_2 -# 1705| r1705_4(glval) = FieldAddress[(captured this)] : r1705_2 -# 1705| r1705_5(glval) = VariableAddress[#this] : -# 1705| r1705_6(lambda [] type at line 1705, col. 30 *) = Load[#this] : &:r1705_5, m1702_6 -# 1705| r1705_7(glval) = FieldAddress[(captured this)] : r1705_6 -# 1705| r1705_8(TrivialLambdaClass) = Load[?] : &:r1705_7, ~m1702_8 -# 1705| m1705_9(TrivialLambdaClass) = Store[?] : &:r1705_4, r1705_8 -# 1705| r1705_10(decltype([...](...){...})) = Load[#temp1705:29] : &:r1705_2, ~m1705_9 -# 1705| m1705_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1705_1, r1705_10 -# 1708| v1708_1(void) = NoOp : -# 1702| v1702_9(void) = ReturnIndirection[#this] : &:r1702_7, m1702_8 -# 1702| v1702_10(void) = ReturnVoid : -# 1702| v1702_11(void) = AliasedUse : ~m1703_8 -# 1702| v1702_12(void) = ExitFunction : - -# 1705| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)::operator()() const -# 1705| Block 0 -# 1705| v1705_1(void) = EnterFunction : -# 1705| m1705_2(unknown) = AliasedDefinition : -# 1705| m1705_3(unknown) = InitializeNonLocal : -# 1705| m1705_4(unknown) = Chi : total:m1705_2, partial:m1705_3 -# 1705| r1705_5(glval) = VariableAddress[#this] : -# 1705| m1705_6(glval) = InitializeParameter[#this] : &:r1705_5 -# 1705| r1705_7(glval) = Load[#this] : &:r1705_5, m1705_6 -# 1705| m1705_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1705_7 -# 1706| r1706_1(glval) = VariableAddress[#this] : -# 1706| r1706_2(lambda [] type at line 1705, col. 30 *) = Load[#this] : &:r1706_1, m1705_6 -# 1706| r1706_3(glval) = FieldAddress[(captured this)] : r1706_2 -# 1706| r1706_4(TrivialLambdaClass *) = CopyValue : r1706_3 -# 1706| r1706_5(glval) = FunctionAddress[m] : -# 1706| v1706_6(void) = Call[m] : func:r1706_5, this:r1706_4 -# 1706| m1706_7(unknown) = ^CallSideEffect : ~m1705_4 -# 1706| m1706_8(unknown) = Chi : total:m1705_4, partial:m1706_7 -# 1706| v1706_9(void) = ^IndirectReadSideEffect[-1] : &:r1706_4, ~m1705_8 -# 1707| v1707_1(void) = NoOp : -# 1705| v1705_9(void) = ReturnIndirection[#this] : &:r1705_7, m1705_8 -# 1705| v1705_10(void) = ReturnVoid : -# 1705| v1705_11(void) = AliasedUse : ~m1706_8 -# 1705| v1705_12(void) = ExitFunction : - -# 1712| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1712| Block 0 -# 1712| v1712_1(void) = EnterFunction : -# 1712| m1712_2(unknown) = AliasedDefinition : -# 1712| m1712_3(unknown) = InitializeNonLocal : -# 1712| m1712_4(unknown) = Chi : total:m1712_2, partial:m1712_3 -# 1712| r1712_5(glval) = VariableAddress[p1] : -# 1712| m1712_6(TrivialLambdaClass) = InitializeParameter[p1] : &:r1712_5 -# 1712| r1712_7(glval) = VariableAddress[p2] : -# 1712| m1712_8(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1712_7 -# 1712| r1712_9(TrivialLambdaClass &) = Load[p2] : &:r1712_7, m1712_8 -# 1712| m1712_10(unknown) = InitializeIndirection[p2] : &:r1712_9 -# 1712| r1712_11(glval) = VariableAddress[p3] : -# 1712| m1712_12(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1712_11 -# 1712| r1712_13(TrivialLambdaClass &&) = Load[p3] : &:r1712_11, m1712_12 -# 1712| m1712_14(unknown) = InitializeIndirection[p3] : &:r1712_13 -# 1713| r1713_1(glval) = VariableAddress[l1] : -# 1713| m1713_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1713_1 -# 1714| r1714_1(glval) = VariableAddress[l2] : -# 1714| r1714_2(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_3(TrivialLambdaClass) = Constant[0] : -# 1714| m1714_4(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_3 -# 1714| r1714_5(glval) = Convert : r1714_2 -# 1714| r1714_6(TrivialLambdaClass &) = CopyValue : r1714_5 -# 1714| m1714_7(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_6 -# 1716| r1716_1(glval) = VariableAddress[l_outer1] : -# 1716| r1716_2(glval) = VariableAddress[#temp1716:20] : -# 1716| m1716_3(decltype([...](...){...})) = Uninitialized[#temp1716:20] : &:r1716_2 -# 1716| r1716_4(glval) = FieldAddress[p1] : r1716_2 -# 1716| r1716_5(glval) = VariableAddress[p1] : -# 1716| r1716_6(TrivialLambdaClass) = Load[p1] : &:r1716_5, m1712_6 -# 1716| m1716_7(TrivialLambdaClass) = Store[?] : &:r1716_4, r1716_6 -# 1716| m1716_8(decltype([...](...){...})) = Chi : total:m1716_3, partial:m1716_7 -# 1716| r1716_9(glval) = FieldAddress[p2] : r1716_2 -# 1716| r1716_10(glval) = VariableAddress[p2] : -# 1716| r1716_11(TrivialLambdaClass &) = Load[p2] : &:r1716_10, m1712_8 -#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1716_11, ~m1712_10 -#-----| m0_2(TrivialLambdaClass) = Store[?] : &:r1716_9, r0_1 -#-----| m0_3(decltype([...](...){...})) = Chi : total:m1716_8, partial:m0_2 -# 1716| r1716_12(glval) = FieldAddress[p3] : r1716_2 -# 1716| r1716_13(glval) = VariableAddress[p3] : -# 1716| r1716_14(TrivialLambdaClass &&) = Load[p3] : &:r1716_13, m1712_12 -#-----| r0_4(TrivialLambdaClass) = Load[?] : &:r1716_14, ~m1712_14 -#-----| m0_5(TrivialLambdaClass) = Store[?] : &:r1716_12, r0_4 +#-----| m0_10(int &) = Store[x1] : &:r1676_6, r0_9 +# 1677| v1677_1(void) = NoOp : +# 1674| v1674_5(void) = ReturnVoid : +# 1674| v1674_6(void) = AliasedUse : m1674_3 +# 1674| v1674_7(void) = ExitFunction : + +# 1682| void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1682| Block 0 +# 1682| v1682_1(void) = EnterFunction : +# 1682| m1682_2(unknown) = AliasedDefinition : +# 1682| m1682_3(unknown) = InitializeNonLocal : +# 1682| m1682_4(unknown) = Chi : total:m1682_2, partial:m1682_3 +# 1682| r1682_5(glval) = VariableAddress[#this] : +# 1682| m1682_6(glval) = InitializeParameter[#this] : &:r1682_5 +# 1682| r1682_7(glval) = Load[#this] : &:r1682_5, m1682_6 +# 1682| m1682_8(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1682_7 +# 1682| v1682_9(void) = NoOp : +# 1682| v1682_10(void) = ReturnIndirection[#this] : &:r1682_7, m1682_8 +# 1682| v1682_11(void) = ReturnVoid : +# 1682| v1682_12(void) = AliasedUse : m1682_3 +# 1682| v1682_13(void) = ExitFunction : + +# 1685| void captured_lambda(int, int&, int&&) +# 1685| Block 0 +# 1685| v1685_1(void) = EnterFunction : +# 1685| m1685_2(unknown) = AliasedDefinition : +# 1685| m1685_3(unknown) = InitializeNonLocal : +# 1685| m1685_4(unknown) = Chi : total:m1685_2, partial:m1685_3 +# 1685| r1685_5(glval) = VariableAddress[x] : +# 1685| m1685_6(int) = InitializeParameter[x] : &:r1685_5 +# 1685| r1685_7(glval) = VariableAddress[y] : +# 1685| m1685_8(int &) = InitializeParameter[y] : &:r1685_7 +# 1685| r1685_9(int &) = Load[y] : &:r1685_7, m1685_8 +# 1685| m1685_10(unknown) = InitializeIndirection[y] : &:r1685_9 +# 1685| r1685_11(glval) = VariableAddress[z] : +# 1685| m1685_12(int &&) = InitializeParameter[z] : &:r1685_11 +# 1685| r1685_13(int &&) = Load[z] : &:r1685_11, m1685_12 +# 1685| m1685_14(unknown) = InitializeIndirection[z] : &:r1685_13 +# 1687| r1687_1(glval) = VariableAddress[obj1] : +# 1687| r1687_2(glval) = VariableAddress[#temp1687:24] : +# 1687| m1687_3(CapturedLambdaMyObj) = Uninitialized[#temp1687:24] : &:r1687_2 +# 1687| r1687_4(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1687| v1687_5(void) = Call[CapturedLambdaMyObj] : func:r1687_4, this:r1687_2 +# 1687| m1687_6(unknown) = ^CallSideEffect : ~m1685_4 +# 1687| m1687_7(unknown) = Chi : total:m1685_4, partial:m1687_6 +# 1687| m1687_8(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1687_2 +# 1687| m1687_9(CapturedLambdaMyObj) = Chi : total:m1687_3, partial:m1687_8 +# 1687| r1687_10(glval) = Convert : r1687_2 +# 1687| r1687_11(CapturedLambdaMyObj &) = CopyValue : r1687_10 +# 1687| m1687_12(CapturedLambdaMyObj &) = Store[obj1] : &:r1687_1, r1687_11 +# 1688| r1688_1(glval) = VariableAddress[obj2] : +# 1688| m1688_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1688_1 +# 1688| r1688_3(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1688| v1688_4(void) = Call[CapturedLambdaMyObj] : func:r1688_3, this:r1688_1 +# 1688| m1688_5(unknown) = ^CallSideEffect : ~m1687_7 +# 1688| m1688_6(unknown) = Chi : total:m1687_7, partial:m1688_5 +# 1688| m1688_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1688_1 +# 1688| m1688_8(CapturedLambdaMyObj) = Chi : total:m1688_2, partial:m1688_7 +# 1690| r1690_1(glval) = VariableAddress[lambda_outer] : +# 1690| r1690_2(glval) = VariableAddress[#temp1690:24] : +# 1690| m1690_3(decltype([...](...){...})) = Uninitialized[#temp1690:24] : &:r1690_2 +# 1690| r1690_4(glval) = FieldAddress[obj1] : r1690_2 +# 1690| r1690_5(glval) = VariableAddress[obj1] : +# 1690| r1690_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1690_5, m1687_12 +#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1690_6, m1687_9 +#-----| m0_2(CapturedLambdaMyObj) = Store[?] : &:r1690_4, r0_1 +#-----| m0_3(decltype([...](...){...})) = Chi : total:m1690_3, partial:m0_2 +# 1690| r1690_7(glval) = FieldAddress[obj2] : r1690_2 +# 1690| r1690_8(glval) = VariableAddress[obj2] : +# 1690| r1690_9(CapturedLambdaMyObj) = Load[obj2] : &:r1690_8, m1688_8 +# 1690| m1690_10(CapturedLambdaMyObj) = Store[?] : &:r1690_7, r1690_9 +# 1690| m1690_11(decltype([...](...){...})) = Chi : total:m0_3, partial:m1690_10 +# 1690| r1690_12(glval) = FieldAddress[x] : r1690_2 +# 1690| r1690_13(glval) = VariableAddress[x] : +# 1690| r1690_14(int) = Load[x] : &:r1690_13, m1685_6 +# 1690| m1690_15(int) = Store[?] : &:r1690_12, r1690_14 +# 1690| m1690_16(decltype([...](...){...})) = Chi : total:m1690_11, partial:m1690_15 +# 1690| r1690_17(glval) = FieldAddress[y] : r1690_2 +# 1690| r1690_18(glval) = VariableAddress[y] : +# 1690| r1690_19(int &) = Load[y] : &:r1690_18, m1685_8 +# 1692| r1692_1(int) = Load[?] : &:r1690_19, ~m1685_10 +# 1692| m1692_2(int) = Store[?] : &:r1690_17, r1692_1 +# 1692| m1692_3(decltype([...](...){...})) = Chi : total:m1690_16, partial:m1692_2 +# 1690| r1690_20(glval) = FieldAddress[z] : r1690_2 +# 1690| r1690_21(glval) = VariableAddress[z] : +# 1690| r1690_22(int &&) = Load[z] : &:r1690_21, m1685_12 +# 1692| r1692_4(int) = Load[?] : &:r1690_22, ~m1685_14 +# 1692| m1692_5(int) = Store[?] : &:r1690_20, r1692_4 +# 1692| m1692_6(decltype([...](...){...})) = Chi : total:m1692_3, partial:m1692_5 +# 1690| r1690_23(decltype([...](...){...})) = Load[#temp1690:24] : &:r1690_2, m1692_6 +# 1690| m1690_24(decltype([...](...){...})) = Store[lambda_outer] : &:r1690_1, r1690_23 +# 1693| v1693_1(void) = NoOp : +# 1685| v1685_15(void) = ReturnIndirection[y] : &:r1685_9, m1685_10 +# 1685| v1685_16(void) = ReturnIndirection[z] : &:r1685_13, m1685_14 +# 1685| v1685_17(void) = ReturnVoid : +# 1685| v1685_18(void) = AliasedUse : ~m1688_6 +# 1685| v1685_19(void) = ExitFunction : + +# 1690| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const +# 1690| Block 0 +# 1690| v1690_1(void) = EnterFunction : +# 1690| m1690_2(unknown) = AliasedDefinition : +# 1690| m1690_3(unknown) = InitializeNonLocal : +# 1690| m1690_4(unknown) = Chi : total:m1690_2, partial:m1690_3 +# 1690| r1690_5(glval) = VariableAddress[#this] : +# 1690| m1690_6(glval) = InitializeParameter[#this] : &:r1690_5 +# 1690| r1690_7(glval) = Load[#this] : &:r1690_5, m1690_6 +# 1690| m1690_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1690_7 +# 1691| r1691_1(glval) = VariableAddress[lambda_inner] : +# 1691| r1691_2(glval) = VariableAddress[#temp1691:28] : +# 1691| m1691_3(decltype([...](...){...})) = Uninitialized[#temp1691:28] : &:r1691_2 +# 1691| r1691_4(glval) = FieldAddress[obj1] : r1691_2 +# 1691| r1691_5(glval) = VariableAddress[#this] : +# 1691| r1691_6(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_5, m1690_6 +# 1691| r1691_7(glval) = FieldAddress[obj1] : r1691_6 +# 1691| r1691_8(CapturedLambdaMyObj) = Load[?] : &:r1691_7, ~m1690_8 +# 1691| m1691_9(CapturedLambdaMyObj) = Store[?] : &:r1691_4, r1691_8 +# 1691| m1691_10(decltype([...](...){...})) = Chi : total:m1691_3, partial:m1691_9 +# 1691| r1691_11(glval) = FieldAddress[obj2] : r1691_2 +# 1691| r1691_12(glval) = VariableAddress[#this] : +# 1691| r1691_13(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_12, m1690_6 +# 1691| r1691_14(glval) = FieldAddress[obj2] : r1691_13 +# 1691| r1691_15(CapturedLambdaMyObj) = Load[?] : &:r1691_14, ~m1690_8 +# 1691| m1691_16(CapturedLambdaMyObj) = Store[?] : &:r1691_11, r1691_15 +# 1691| m1691_17(decltype([...](...){...})) = Chi : total:m1691_10, partial:m1691_16 +# 1691| r1691_18(glval) = FieldAddress[x] : r1691_2 +# 1691| r1691_19(glval) = VariableAddress[#this] : +# 1691| r1691_20(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_19, m1690_6 +# 1691| r1691_21(glval) = FieldAddress[x] : r1691_20 +# 1691| r1691_22(int) = Load[?] : &:r1691_21, ~m1690_8 +# 1691| m1691_23(int) = Store[?] : &:r1691_18, r1691_22 +# 1691| m1691_24(decltype([...](...){...})) = Chi : total:m1691_17, partial:m1691_23 +# 1691| r1691_25(glval) = FieldAddress[y] : r1691_2 +# 1691| r1691_26(glval) = VariableAddress[#this] : +# 1691| r1691_27(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_26, m1690_6 +# 1691| r1691_28(glval) = FieldAddress[y] : r1691_27 +# 1691| r1691_29(int) = Load[?] : &:r1691_28, ~m1690_8 +# 1691| m1691_30(int) = Store[?] : &:r1691_25, r1691_29 +# 1691| m1691_31(decltype([...](...){...})) = Chi : total:m1691_24, partial:m1691_30 +# 1691| r1691_32(glval) = FieldAddress[z] : r1691_2 +# 1691| r1691_33(glval) = VariableAddress[#this] : +# 1691| r1691_34(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_33, m1690_6 +# 1691| r1691_35(glval) = FieldAddress[z] : r1691_34 +# 1691| r1691_36(int) = Load[?] : &:r1691_35, ~m1690_8 +# 1691| m1691_37(int) = Store[?] : &:r1691_32, r1691_36 +# 1691| m1691_38(decltype([...](...){...})) = Chi : total:m1691_31, partial:m1691_37 +# 1691| r1691_39(decltype([...](...){...})) = Load[#temp1691:28] : &:r1691_2, m1691_38 +# 1691| m1691_40(decltype([...](...){...})) = Store[lambda_inner] : &:r1691_1, r1691_39 +# 1692| v1692_1(void) = NoOp : +# 1690| v1690_9(void) = ReturnIndirection[#this] : &:r1690_7, m1690_8 +# 1690| v1690_10(void) = ReturnVoid : +# 1690| v1690_11(void) = AliasedUse : m1690_3 +# 1690| v1690_12(void) = ExitFunction : + +# 1691| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator()() const +# 1691| Block 0 +# 1691| v1691_1(void) = EnterFunction : +# 1691| m1691_2(unknown) = AliasedDefinition : +# 1691| m1691_3(unknown) = InitializeNonLocal : +# 1691| m1691_4(unknown) = Chi : total:m1691_2, partial:m1691_3 +# 1691| r1691_5(glval) = VariableAddress[#this] : +# 1691| m1691_6(glval) = InitializeParameter[#this] : &:r1691_5 +# 1691| r1691_7(glval) = Load[#this] : &:r1691_5, m1691_6 +# 1691| m1691_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1691_7 +# 1691| v1691_9(void) = NoOp : +# 1691| v1691_10(void) = NoOp : +# 1691| v1691_11(void) = ReturnIndirection[#this] : &:r1691_7, m1691_8 +# 1691| v1691_12(void) = ReturnVoid : +# 1691| v1691_13(void) = AliasedUse : m1691_3 +# 1691| v1691_14(void) = ExitFunction : + +# 1695| int goto_on_same_line() +# 1695| Block 0 +# 1695| v1695_1(void) = EnterFunction : +# 1695| m1695_2(unknown) = AliasedDefinition : +# 1695| m1695_3(unknown) = InitializeNonLocal : +# 1695| m1695_4(unknown) = Chi : total:m1695_2, partial:m1695_3 +# 1696| r1696_1(glval) = VariableAddress[x] : +# 1696| r1696_2(int) = Constant[42] : +# 1696| m1696_3(int) = Store[x] : &:r1696_1, r1696_2 +# 1697| v1697_1(void) = NoOp : +# 1697| v1697_2(void) = NoOp : +# 1698| r1698_1(glval) = VariableAddress[#return] : +# 1698| r1698_2(glval) = VariableAddress[x] : +# 1698| r1698_3(int) = Load[x] : &:r1698_2, m1696_3 +# 1698| m1698_4(int) = Store[#return] : &:r1698_1, r1698_3 +# 1695| r1695_5(glval) = VariableAddress[#return] : +# 1695| v1695_6(void) = ReturnValue : &:r1695_5, m1698_4 +# 1695| v1695_7(void) = AliasedUse : m1695_3 +# 1695| v1695_8(void) = ExitFunction : + +# 1703| void TrivialLambdaClass::m() const +# 1703| Block 0 +# 1703| v1703_1(void) = EnterFunction : +# 1703| m1703_2(unknown) = AliasedDefinition : +# 1703| m1703_3(unknown) = InitializeNonLocal : +# 1703| m1703_4(unknown) = Chi : total:m1703_2, partial:m1703_3 +# 1703| r1703_5(glval) = VariableAddress[#this] : +# 1703| m1703_6(glval) = InitializeParameter[#this] : &:r1703_5 +# 1703| r1703_7(glval) = Load[#this] : &:r1703_5, m1703_6 +# 1703| m1703_8(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1703_7 +# 1704| r1704_1(glval) = VariableAddress[l_m_outer] : +# 1704| r1704_2(glval) = VariableAddress[#temp1704:25] : +# 1704| m1704_3(decltype([...](...){...})) = Uninitialized[#temp1704:25] : &:r1704_2 +# 1704| r1704_4(glval) = FieldAddress[(captured this)] : r1704_2 +# 1704| r1704_5(glval) = VariableAddress[#this] : +# 1704| r1704_6(TrivialLambdaClass *) = Load[#this] : &:r1704_5, m1703_6 +# 1704| r1704_7(TrivialLambdaClass) = Load[?] : &:r1704_6, ~m1703_8 +# 1704| m1704_8(TrivialLambdaClass) = Store[?] : &:r1704_4, r1704_7 +# 1704| r1704_9(decltype([...](...){...})) = Load[#temp1704:25] : &:r1704_2, ~m1704_8 +# 1704| m1704_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1704_1, r1704_9 +# 1711| v1711_1(void) = NoOp : +# 1703| v1703_9(void) = ReturnIndirection[#this] : &:r1703_7, m1703_8 +# 1703| v1703_10(void) = ReturnVoid : +# 1703| v1703_11(void) = AliasedUse : m1703_3 +# 1703| v1703_12(void) = ExitFunction : + +# 1704| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const +# 1704| Block 0 +# 1704| v1704_1(void) = EnterFunction : +# 1704| m1704_2(unknown) = AliasedDefinition : +# 1704| m1704_3(unknown) = InitializeNonLocal : +# 1704| m1704_4(unknown) = Chi : total:m1704_2, partial:m1704_3 +# 1704| r1704_5(glval) = VariableAddress[#this] : +# 1704| m1704_6(glval) = InitializeParameter[#this] : &:r1704_5 +# 1704| r1704_7(glval) = Load[#this] : &:r1704_5, m1704_6 +# 1704| m1704_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1704_7 +# 1705| r1705_1(glval) = VariableAddress[#this] : +# 1705| r1705_2(lambda [] type at line 1704, col. 26 *) = Load[#this] : &:r1705_1, m1704_6 +# 1705| r1705_3(glval) = FieldAddress[(captured this)] : r1705_2 +# 1705| r1705_4(TrivialLambdaClass *) = CopyValue : r1705_3 +# 1705| r1705_5(glval) = FunctionAddress[m] : +# 1705| v1705_6(void) = Call[m] : func:r1705_5, this:r1705_4 +# 1705| m1705_7(unknown) = ^CallSideEffect : ~m1704_4 +# 1705| m1705_8(unknown) = Chi : total:m1704_4, partial:m1705_7 +# 1705| v1705_9(void) = ^IndirectReadSideEffect[-1] : &:r1705_4, ~m1704_8 +# 1707| r1707_1(glval) = VariableAddress[l_m_inner] : +# 1707| r1707_2(glval) = VariableAddress[#temp1707:29] : +# 1707| m1707_3(decltype([...](...){...})) = Uninitialized[#temp1707:29] : &:r1707_2 +# 1707| r1707_4(glval) = FieldAddress[(captured this)] : r1707_2 +# 1707| r1707_5(glval) = VariableAddress[#this] : +# 1707| r1707_6(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1707_5, m1704_6 +# 1707| r1707_7(glval) = FieldAddress[(captured this)] : r1707_6 +# 1707| r1707_8(TrivialLambdaClass) = Load[?] : &:r1707_7, ~m1704_8 +# 1707| m1707_9(TrivialLambdaClass) = Store[?] : &:r1707_4, r1707_8 +# 1707| r1707_10(decltype([...](...){...})) = Load[#temp1707:29] : &:r1707_2, ~m1707_9 +# 1707| m1707_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1707_1, r1707_10 +# 1710| v1710_1(void) = NoOp : +# 1704| v1704_9(void) = ReturnIndirection[#this] : &:r1704_7, m1704_8 +# 1704| v1704_10(void) = ReturnVoid : +# 1704| v1704_11(void) = AliasedUse : ~m1705_8 +# 1704| v1704_12(void) = ExitFunction : + +# 1707| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator()() const +# 1707| Block 0 +# 1707| v1707_1(void) = EnterFunction : +# 1707| m1707_2(unknown) = AliasedDefinition : +# 1707| m1707_3(unknown) = InitializeNonLocal : +# 1707| m1707_4(unknown) = Chi : total:m1707_2, partial:m1707_3 +# 1707| r1707_5(glval) = VariableAddress[#this] : +# 1707| m1707_6(glval) = InitializeParameter[#this] : &:r1707_5 +# 1707| r1707_7(glval) = Load[#this] : &:r1707_5, m1707_6 +# 1707| m1707_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1707_7 +# 1708| r1708_1(glval) = VariableAddress[#this] : +# 1708| r1708_2(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1708_1, m1707_6 +# 1708| r1708_3(glval) = FieldAddress[(captured this)] : r1708_2 +# 1708| r1708_4(TrivialLambdaClass *) = CopyValue : r1708_3 +# 1708| r1708_5(glval) = FunctionAddress[m] : +# 1708| v1708_6(void) = Call[m] : func:r1708_5, this:r1708_4 +# 1708| m1708_7(unknown) = ^CallSideEffect : ~m1707_4 +# 1708| m1708_8(unknown) = Chi : total:m1707_4, partial:m1708_7 +# 1708| v1708_9(void) = ^IndirectReadSideEffect[-1] : &:r1708_4, ~m1707_8 +# 1709| v1709_1(void) = NoOp : +# 1707| v1707_9(void) = ReturnIndirection[#this] : &:r1707_7, m1707_8 +# 1707| v1707_10(void) = ReturnVoid : +# 1707| v1707_11(void) = AliasedUse : ~m1708_8 +# 1707| v1707_12(void) = ExitFunction : + +# 1714| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1714| Block 0 +# 1714| v1714_1(void) = EnterFunction : +# 1714| m1714_2(unknown) = AliasedDefinition : +# 1714| m1714_3(unknown) = InitializeNonLocal : +# 1714| m1714_4(unknown) = Chi : total:m1714_2, partial:m1714_3 +# 1714| r1714_5(glval) = VariableAddress[p1] : +# 1714| m1714_6(TrivialLambdaClass) = InitializeParameter[p1] : &:r1714_5 +# 1714| r1714_7(glval) = VariableAddress[p2] : +# 1714| m1714_8(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1714_7 +# 1714| r1714_9(TrivialLambdaClass &) = Load[p2] : &:r1714_7, m1714_8 +# 1714| m1714_10(unknown) = InitializeIndirection[p2] : &:r1714_9 +# 1714| r1714_11(glval) = VariableAddress[p3] : +# 1714| m1714_12(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1714_11 +# 1714| r1714_13(TrivialLambdaClass &&) = Load[p3] : &:r1714_11, m1714_12 +# 1714| m1714_14(unknown) = InitializeIndirection[p3] : &:r1714_13 +# 1715| r1715_1(glval) = VariableAddress[l1] : +# 1715| m1715_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1715_1 +# 1716| r1716_1(glval) = VariableAddress[l2] : +# 1716| r1716_2(glval) = VariableAddress[#temp1716:36] : +# 1716| r1716_3(TrivialLambdaClass) = Constant[0] : +# 1716| m1716_4(TrivialLambdaClass) = Store[#temp1716:36] : &:r1716_2, r1716_3 +# 1716| r1716_5(glval) = Convert : r1716_2 +# 1716| r1716_6(TrivialLambdaClass &) = CopyValue : r1716_5 +# 1716| m1716_7(TrivialLambdaClass &) = Store[l2] : &:r1716_1, r1716_6 +# 1718| r1718_1(glval) = VariableAddress[l_outer1] : +# 1718| r1718_2(glval) = VariableAddress[#temp1718:20] : +# 1718| m1718_3(decltype([...](...){...})) = Uninitialized[#temp1718:20] : &:r1718_2 +# 1718| r1718_4(glval) = FieldAddress[p1] : r1718_2 +# 1718| r1718_5(glval) = VariableAddress[p1] : +# 1718| r1718_6(TrivialLambdaClass) = Load[p1] : &:r1718_5, m1714_6 +# 1718| m1718_7(TrivialLambdaClass) = Store[?] : &:r1718_4, r1718_6 +# 1718| m1718_8(decltype([...](...){...})) = Chi : total:m1718_3, partial:m1718_7 +# 1718| r1718_9(glval) = FieldAddress[p2] : r1718_2 +# 1718| r1718_10(glval) = VariableAddress[p2] : +# 1718| r1718_11(TrivialLambdaClass &) = Load[p2] : &:r1718_10, m1714_8 +#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1718_11, ~m1714_10 +#-----| m0_2(TrivialLambdaClass) = Store[?] : &:r1718_9, r0_1 +#-----| m0_3(decltype([...](...){...})) = Chi : total:m1718_8, partial:m0_2 +# 1718| r1718_12(glval) = FieldAddress[p3] : r1718_2 +# 1718| r1718_13(glval) = VariableAddress[p3] : +# 1718| r1718_14(TrivialLambdaClass &&) = Load[p3] : &:r1718_13, m1714_12 +#-----| r0_4(TrivialLambdaClass) = Load[?] : &:r1718_14, ~m1714_14 +#-----| m0_5(TrivialLambdaClass) = Store[?] : &:r1718_12, r0_4 #-----| m0_6(decltype([...](...){...})) = Chi : total:m0_3, partial:m0_5 -# 1716| r1716_15(glval) = FieldAddress[l1] : r1716_2 -# 1716| r1716_16(glval) = VariableAddress[l1] : -# 1716| r1716_17(TrivialLambdaClass) = Load[l1] : &:r1716_16, m1713_2 -# 1716| m1716_18(TrivialLambdaClass) = Store[?] : &:r1716_15, r1716_17 -# 1716| m1716_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1716_18 -# 1716| r1716_20(glval) = FieldAddress[l2] : r1716_2 -# 1716| r1716_21(glval) = VariableAddress[l2] : -# 1716| r1716_22(TrivialLambdaClass &) = Load[l2] : &:r1716_21, m1714_7 -#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1716_22, m1714_4 -#-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1716_20, r0_7 -#-----| m0_9(decltype([...](...){...})) = Chi : total:m1716_19, partial:m0_8 -# 1716| r1716_23(decltype([...](...){...})) = Load[#temp1716:20] : &:r1716_2, m0_9 -# 1716| m1716_24(decltype([...](...){...})) = Store[l_outer1] : &:r1716_1, r1716_23 -# 1719| v1719_1(void) = NoOp : -# 1712| v1712_15(void) = ReturnIndirection[p2] : &:r1712_9, m1712_10 -# 1712| v1712_16(void) = ReturnIndirection[p3] : &:r1712_13, m1712_14 -# 1712| v1712_17(void) = ReturnVoid : -# 1712| v1712_18(void) = AliasedUse : m1712_3 -# 1712| v1712_19(void) = ExitFunction : - -# 1716| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const -# 1716| Block 0 -# 1716| v1716_1(void) = EnterFunction : -# 1716| m1716_2(unknown) = AliasedDefinition : -# 1716| m1716_3(unknown) = InitializeNonLocal : -# 1716| m1716_4(unknown) = Chi : total:m1716_2, partial:m1716_3 -# 1716| r1716_5(glval) = VariableAddress[#this] : -# 1716| m1716_6(glval) = InitializeParameter[#this] : &:r1716_5 -# 1716| r1716_7(glval) = Load[#this] : &:r1716_5, m1716_6 -# 1716| m1716_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1716_7 -# 1717| r1717_1(glval) = VariableAddress[l_inner1] : -# 1717| r1717_2(glval) = VariableAddress[#temp1717:24] : -# 1717| m1717_3(decltype([...](...){...})) = Uninitialized[#temp1717:24] : &:r1717_2 -# 1717| r1717_4(glval) = FieldAddress[p1] : r1717_2 -# 1717| r1717_5(glval) = VariableAddress[#this] : -# 1717| r1717_6(lambda [] type at line 1717, col. 25 *) = Load[#this] : &:r1717_5, m1716_6 -# 1717| r1717_7(glval) = FieldAddress[p1] : r1717_6 -# 1717| r1717_8(TrivialLambdaClass) = Load[?] : &:r1717_7, ~m1716_8 -# 1717| m1717_9(TrivialLambdaClass) = Store[?] : &:r1717_4, r1717_8 -# 1717| r1717_10(decltype([...](...){...})) = Load[#temp1717:24] : &:r1717_2, ~m1717_9 -# 1717| m1717_11(decltype([...](...){...})) = Store[l_inner1] : &:r1717_1, r1717_10 -# 1718| v1718_1(void) = NoOp : -# 1716| v1716_9(void) = ReturnIndirection[#this] : &:r1716_7, m1716_8 -# 1716| v1716_10(void) = ReturnVoid : -# 1716| v1716_11(void) = AliasedUse : m1716_3 -# 1716| v1716_12(void) = ExitFunction : - -# 1717| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)::operator()() const -# 1717| Block 0 -# 1717| v1717_1(void) = EnterFunction : -# 1717| m1717_2(unknown) = AliasedDefinition : -# 1717| m1717_3(unknown) = InitializeNonLocal : -# 1717| m1717_4(unknown) = Chi : total:m1717_2, partial:m1717_3 -# 1717| r1717_5(glval) = VariableAddress[#this] : -# 1717| m1717_6(glval) = InitializeParameter[#this] : &:r1717_5 -# 1717| r1717_7(glval) = Load[#this] : &:r1717_5, m1717_6 -# 1717| m1717_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1717_7 -# 1717| v1717_9(void) = NoOp : -# 1717| v1717_10(void) = ReturnIndirection[#this] : &:r1717_7, m1717_8 -# 1717| v1717_11(void) = ReturnVoid : -# 1717| v1717_12(void) = AliasedUse : m1717_3 -# 1717| v1717_13(void) = ExitFunction : - -# 1724| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1724| Block 0 -# 1724| v1724_1(void) = EnterFunction : -# 1724| m1724_2(unknown) = AliasedDefinition : -# 1724| m1724_3(unknown) = InitializeNonLocal : -# 1724| m1724_4(unknown) = Chi : total:m1724_2, partial:m1724_3 -# 1724| r1724_5(glval) = VariableAddress[#this] : -# 1724| m1724_6(glval) = InitializeParameter[#this] : &:r1724_5 -# 1724| r1724_7(glval) = Load[#this] : &:r1724_5, m1724_6 -# 1724| m1724_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1724_7 -# 1724| v1724_9(void) = NoOp : -# 1724| v1724_10(void) = ReturnIndirection[#this] : &:r1724_7, m1724_8 -# 1724| v1724_11(void) = ReturnVoid : -# 1724| v1724_12(void) = AliasedUse : m1724_3 -# 1724| v1724_13(void) = ExitFunction : - -# 1725| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1725| Block 0 -# 1725| v1725_1(void) = EnterFunction : -# 1725| m1725_2(unknown) = AliasedDefinition : -# 1725| m1725_3(unknown) = InitializeNonLocal : -# 1725| m1725_4(unknown) = Chi : total:m1725_2, partial:m1725_3 -# 1725| r1725_5(glval) = VariableAddress[#this] : -# 1725| m1725_6(glval) = InitializeParameter[#this] : &:r1725_5 -# 1725| r1725_7(glval) = Load[#this] : &:r1725_5, m1725_6 -# 1725| m1725_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1725_7 -# 1725| r1725_9(glval) = VariableAddress[c] : -# 1725| m1725_10(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1725_9 -# 1725| r1725_11(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1725_9, m1725_10 -# 1725| m1725_12(unknown) = InitializeIndirection[c] : &:r1725_11 -# 1726| r1726_1(glval) = VariableAddress[c] : -# 1726| r1726_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1726_1, m1725_10 -# 1726| r1726_3(glval) = CopyValue : r1726_2 -# 1726| r1726_4(glval) = FieldAddress[x] : r1726_3 -# 1726| r1726_5(int) = Load[?] : &:r1726_4, ~m1725_12 -# 1726| r1726_6(glval) = VariableAddress[#this] : -# 1726| r1726_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1726_6, m1725_6 -# 1726| r1726_8(glval) = FieldAddress[x] : r1726_7 -# 1726| m1726_9(int) = Store[?] : &:r1726_8, r1726_5 -# 1726| m1726_10(unknown) = Chi : total:m1725_8, partial:m1726_9 -# 1727| v1727_1(void) = NoOp : -# 1725| v1725_13(void) = ReturnIndirection[#this] : &:r1725_7, m1726_10 -# 1725| v1725_14(void) = ReturnIndirection[c] : &:r1725_11, m1725_12 -# 1725| v1725_15(void) = ReturnVoid : -# 1725| v1725_16(void) = AliasedUse : m1725_3 -# 1725| v1725_17(void) = ExitFunction : - -# 1733| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1733| Block 0 -# 1733| v1733_1(void) = EnterFunction : -# 1733| m1733_2(unknown) = AliasedDefinition : -# 1733| m1733_3(unknown) = InitializeNonLocal : -# 1733| m1733_4(unknown) = Chi : total:m1733_2, partial:m1733_3 -# 1733| r1733_5(glval) = VariableAddress[#this] : -# 1733| m1733_6(glval) = InitializeParameter[#this] : &:r1733_5 -# 1733| r1733_7(glval) = Load[#this] : &:r1733_5, m1733_6 -# 1733| m1733_8(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1733_7 -# 1733| v1733_9(void) = NoOp : -# 1733| v1733_10(void) = ReturnIndirection[#this] : &:r1733_7, m1733_8 -# 1733| v1733_11(void) = ReturnVoid : -# 1733| v1733_12(void) = AliasedUse : m1733_3 -# 1733| v1733_13(void) = ExitFunction : - -# 1736| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) -# 1736| Block 0 -# 1736| v1736_1(void) = EnterFunction : -# 1736| m1736_2(unknown) = AliasedDefinition : -# 1736| m1736_3(unknown) = InitializeNonLocal : -# 1736| m1736_4(unknown) = Chi : total:m1736_2, partial:m1736_3 -# 1736| r1736_5(glval) = VariableAddress[#this] : -# 1736| m1736_6(glval) = InitializeParameter[#this] : &:r1736_5 -# 1736| r1736_7(glval) = Load[#this] : &:r1736_5, m1736_6 -# 1736| m1736_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1736_7 +# 1718| r1718_15(glval) = FieldAddress[l1] : r1718_2 +# 1718| r1718_16(glval) = VariableAddress[l1] : +# 1718| r1718_17(TrivialLambdaClass) = Load[l1] : &:r1718_16, m1715_2 +# 1718| m1718_18(TrivialLambdaClass) = Store[?] : &:r1718_15, r1718_17 +# 1718| m1718_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1718_18 +# 1718| r1718_20(glval) = FieldAddress[l2] : r1718_2 +# 1718| r1718_21(glval) = VariableAddress[l2] : +# 1718| r1718_22(TrivialLambdaClass &) = Load[l2] : &:r1718_21, m1716_7 +#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1718_22, m1716_4 +#-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1718_20, r0_7 +#-----| m0_9(decltype([...](...){...})) = Chi : total:m1718_19, partial:m0_8 +# 1718| r1718_23(decltype([...](...){...})) = Load[#temp1718:20] : &:r1718_2, m0_9 +# 1718| m1718_24(decltype([...](...){...})) = Store[l_outer1] : &:r1718_1, r1718_23 +# 1721| v1721_1(void) = NoOp : +# 1714| v1714_15(void) = ReturnIndirection[p2] : &:r1714_9, m1714_10 +# 1714| v1714_16(void) = ReturnIndirection[p3] : &:r1714_13, m1714_14 +# 1714| v1714_17(void) = ReturnVoid : +# 1714| v1714_18(void) = AliasedUse : m1714_3 +# 1714| v1714_19(void) = ExitFunction : + +# 1718| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const +# 1718| Block 0 +# 1718| v1718_1(void) = EnterFunction : +# 1718| m1718_2(unknown) = AliasedDefinition : +# 1718| m1718_3(unknown) = InitializeNonLocal : +# 1718| m1718_4(unknown) = Chi : total:m1718_2, partial:m1718_3 +# 1718| r1718_5(glval) = VariableAddress[#this] : +# 1718| m1718_6(glval) = InitializeParameter[#this] : &:r1718_5 +# 1718| r1718_7(glval) = Load[#this] : &:r1718_5, m1718_6 +# 1718| m1718_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1718_7 +# 1719| r1719_1(glval) = VariableAddress[l_inner1] : +# 1719| r1719_2(glval) = VariableAddress[#temp1719:24] : +# 1719| m1719_3(decltype([...](...){...})) = Uninitialized[#temp1719:24] : &:r1719_2 +# 1719| r1719_4(glval) = FieldAddress[p1] : r1719_2 +# 1719| r1719_5(glval) = VariableAddress[#this] : +# 1719| r1719_6(lambda [] type at line 1719, col. 25 *) = Load[#this] : &:r1719_5, m1718_6 +# 1719| r1719_7(glval) = FieldAddress[p1] : r1719_6 +# 1719| r1719_8(TrivialLambdaClass) = Load[?] : &:r1719_7, ~m1718_8 +# 1719| m1719_9(TrivialLambdaClass) = Store[?] : &:r1719_4, r1719_8 +# 1719| r1719_10(decltype([...](...){...})) = Load[#temp1719:24] : &:r1719_2, ~m1719_9 +# 1719| m1719_11(decltype([...](...){...})) = Store[l_inner1] : &:r1719_1, r1719_10 +# 1720| v1720_1(void) = NoOp : +# 1718| v1718_9(void) = ReturnIndirection[#this] : &:r1718_7, m1718_8 +# 1718| v1718_10(void) = ReturnVoid : +# 1718| v1718_11(void) = AliasedUse : m1718_3 +# 1718| v1718_12(void) = ExitFunction : + +# 1719| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator()() const +# 1719| Block 0 +# 1719| v1719_1(void) = EnterFunction : +# 1719| m1719_2(unknown) = AliasedDefinition : +# 1719| m1719_3(unknown) = InitializeNonLocal : +# 1719| m1719_4(unknown) = Chi : total:m1719_2, partial:m1719_3 +# 1719| r1719_5(glval) = VariableAddress[#this] : +# 1719| m1719_6(glval) = InitializeParameter[#this] : &:r1719_5 +# 1719| r1719_7(glval) = Load[#this] : &:r1719_5, m1719_6 +# 1719| m1719_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1719_7 +# 1719| v1719_9(void) = NoOp : +# 1719| v1719_10(void) = ReturnIndirection[#this] : &:r1719_7, m1719_8 +# 1719| v1719_11(void) = ReturnVoid : +# 1719| v1719_12(void) = AliasedUse : m1719_3 +# 1719| v1719_13(void) = ExitFunction : + +# 1726| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1726| Block 0 +# 1726| v1726_1(void) = EnterFunction : +# 1726| m1726_2(unknown) = AliasedDefinition : +# 1726| m1726_3(unknown) = InitializeNonLocal : +# 1726| m1726_4(unknown) = Chi : total:m1726_2, partial:m1726_3 +# 1726| r1726_5(glval) = VariableAddress[#this] : +# 1726| m1726_6(glval) = InitializeParameter[#this] : &:r1726_5 +# 1726| r1726_7(glval) = Load[#this] : &:r1726_5, m1726_6 +# 1726| m1726_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1726_7 +# 1726| v1726_9(void) = NoOp : +# 1726| v1726_10(void) = ReturnIndirection[#this] : &:r1726_7, m1726_8 +# 1726| v1726_11(void) = ReturnVoid : +# 1726| v1726_12(void) = AliasedUse : m1726_3 +# 1726| v1726_13(void) = ExitFunction : + +# 1727| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1727| Block 0 +# 1727| v1727_1(void) = EnterFunction : +# 1727| m1727_2(unknown) = AliasedDefinition : +# 1727| m1727_3(unknown) = InitializeNonLocal : +# 1727| m1727_4(unknown) = Chi : total:m1727_2, partial:m1727_3 +# 1727| r1727_5(glval) = VariableAddress[#this] : +# 1727| m1727_6(glval) = InitializeParameter[#this] : &:r1727_5 +# 1727| r1727_7(glval) = Load[#this] : &:r1727_5, m1727_6 +# 1727| m1727_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1727_7 +# 1727| r1727_9(glval) = VariableAddress[c] : +# 1727| m1727_10(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1727_9 +# 1727| r1727_11(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1727_9, m1727_10 +# 1727| m1727_12(unknown) = InitializeIndirection[c] : &:r1727_11 +# 1728| r1728_1(glval) = VariableAddress[c] : +# 1728| r1728_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1728_1, m1727_10 +# 1728| r1728_3(glval) = CopyValue : r1728_2 +# 1728| r1728_4(glval) = FieldAddress[x] : r1728_3 +# 1728| r1728_5(int) = Load[?] : &:r1728_4, ~m1727_12 +# 1728| r1728_6(glval) = VariableAddress[#this] : +# 1728| r1728_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1728_6, m1727_6 +# 1728| r1728_8(glval) = FieldAddress[x] : r1728_7 +# 1728| m1728_9(int) = Store[?] : &:r1728_8, r1728_5 +# 1728| m1728_10(unknown) = Chi : total:m1727_8, partial:m1728_9 +# 1729| v1729_1(void) = NoOp : +# 1727| v1727_13(void) = ReturnIndirection[#this] : &:r1727_7, m1728_10 +# 1727| v1727_14(void) = ReturnIndirection[c] : &:r1727_11, m1727_12 +# 1727| v1727_15(void) = ReturnVoid : +# 1727| v1727_16(void) = AliasedUse : m1727_3 +# 1727| v1727_17(void) = ExitFunction : + +# 1735| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1735| Block 0 +# 1735| v1735_1(void) = EnterFunction : +# 1735| m1735_2(unknown) = AliasedDefinition : +# 1735| m1735_3(unknown) = InitializeNonLocal : +# 1735| m1735_4(unknown) = Chi : total:m1735_2, partial:m1735_3 +# 1735| r1735_5(glval) = VariableAddress[#this] : +# 1735| m1735_6(glval) = InitializeParameter[#this] : &:r1735_5 +# 1735| r1735_7(glval) = Load[#this] : &:r1735_5, m1735_6 +# 1735| m1735_8(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1735_7 +# 1735| v1735_9(void) = NoOp : +# 1735| v1735_10(void) = ReturnIndirection[#this] : &:r1735_7, m1735_8 +# 1735| v1735_11(void) = ReturnVoid : +# 1735| v1735_12(void) = AliasedUse : m1735_3 +# 1735| v1735_13(void) = ExitFunction : + +# 1738| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1738| Block 0 +# 1738| v1738_1(void) = EnterFunction : +# 1738| m1738_2(unknown) = AliasedDefinition : +# 1738| m1738_3(unknown) = InitializeNonLocal : +# 1738| m1738_4(unknown) = Chi : total:m1738_2, partial:m1738_3 +# 1738| r1738_5(glval) = VariableAddress[#this] : +# 1738| m1738_6(glval) = InitializeParameter[#this] : &:r1738_5 +# 1738| r1738_7(glval) = Load[#this] : &:r1738_5, m1738_6 +# 1738| m1738_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1738_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1736| r1736_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1736_6 -# 1736| r1736_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1736| r1736_11(glval) = VariableAddress[(unnamed parameter 0)] : -# 1736| r1736_12(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1736_11, m0_2 -# 1736| r1736_13(glval) = CopyValue : r1736_12 -# 1736| r1736_14(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1736_13 -# 1736| r1736_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1736_14 -# 1736| v1736_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1736_10, this:r1736_9, 0:r1736_15 -# 1736| m1736_17(unknown) = ^CallSideEffect : ~m1736_4 -# 1736| m1736_18(unknown) = Chi : total:m1736_4, partial:m1736_17 -# 1736| v1736_19(void) = ^BufferReadSideEffect[0] : &:r1736_15, ~m0_4 -# 1736| m1736_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1736_9 -# 1736| m1736_21(unknown) = Chi : total:m1736_8, partial:m1736_20 -# 1736| v1736_22(void) = NoOp : -# 1736| v1736_23(void) = ReturnIndirection[#this] : &:r1736_7, m1736_21 +# 1738| r1738_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1738_6 +# 1738| r1738_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1738| r1738_11(glval) = VariableAddress[(unnamed parameter 0)] : +# 1738| r1738_12(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1738_11, m0_2 +# 1738| r1738_13(glval) = CopyValue : r1738_12 +# 1738| r1738_14(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1738_13 +# 1738| r1738_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1738_14 +# 1738| v1738_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1738_10, this:r1738_9, 0:r1738_15 +# 1738| m1738_17(unknown) = ^CallSideEffect : ~m1738_4 +# 1738| m1738_18(unknown) = Chi : total:m1738_4, partial:m1738_17 +# 1738| v1738_19(void) = ^BufferReadSideEffect[0] : &:r1738_15, ~m0_4 +# 1738| m1738_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1738_9 +# 1738| m1738_21(unknown) = Chi : total:m1738_8, partial:m1738_20 +# 1738| v1738_22(void) = NoOp : +# 1738| v1738_23(void) = ReturnIndirection[#this] : &:r1738_7, m1738_21 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1736| v1736_24(void) = ReturnVoid : -# 1736| v1736_25(void) = AliasedUse : ~m1736_18 -# 1736| v1736_26(void) = ExitFunction : - -# 1740| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1740| Block 0 -# 1740| v1740_1(void) = EnterFunction : -# 1740| m1740_2(unknown) = AliasedDefinition : -# 1740| m1740_3(unknown) = InitializeNonLocal : -# 1740| m1740_4(unknown) = Chi : total:m1740_2, partial:m1740_3 -# 1740| r1740_5(glval) = VariableAddress[#this] : -# 1740| m1740_6(glval) = InitializeParameter[#this] : &:r1740_5 -# 1740| r1740_7(glval) = Load[#this] : &:r1740_5, m1740_6 -# 1740| m1740_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1740_7 -# 1740| r1740_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1740_6 -# 1740| r1740_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1740| v1740_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1740_10, this:r1740_9 -# 1740| m1740_12(unknown) = ^CallSideEffect : ~m1740_4 -# 1740| m1740_13(unknown) = Chi : total:m1740_4, partial:m1740_12 -# 1740| m1740_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1740_9 -# 1740| m1740_15(unknown) = Chi : total:m1740_8, partial:m1740_14 -# 1740| r1740_16(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1740_6 -# 1740| r1740_17(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1740| v1740_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1740_17, this:r1740_16 -# 1740| m1740_19(unknown) = ^CallSideEffect : ~m1740_13 -# 1740| m1740_20(unknown) = Chi : total:m1740_13, partial:m1740_19 -# 1740| m1740_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1740_16 -# 1740| m1740_22(unknown) = Chi : total:m1740_15, partial:m1740_21 -# 1740| v1740_23(void) = NoOp : -# 1740| v1740_24(void) = ReturnIndirection[#this] : &:r1740_7, m1740_22 -# 1740| v1740_25(void) = ReturnVoid : -# 1740| v1740_26(void) = AliasedUse : ~m1740_20 -# 1740| v1740_27(void) = ExitFunction : - -# 1743| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1743| Block 0 -# 1743| v1743_1(void) = EnterFunction : -# 1743| m1743_2(unknown) = AliasedDefinition : -# 1743| m1743_3(unknown) = InitializeNonLocal : -# 1743| m1743_4(unknown) = Chi : total:m1743_2, partial:m1743_3 -# 1743| r1743_5(glval) = VariableAddress[#this] : -# 1743| m1743_6(glval) = InitializeParameter[#this] : &:r1743_5 -# 1743| r1743_7(glval) = Load[#this] : &:r1743_5, m1743_6 -# 1743| m1743_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1743_7 +# 1738| v1738_24(void) = ReturnVoid : +# 1738| v1738_25(void) = AliasedUse : ~m1738_18 +# 1738| v1738_26(void) = ExitFunction : + +# 1742| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1742| Block 0 +# 1742| v1742_1(void) = EnterFunction : +# 1742| m1742_2(unknown) = AliasedDefinition : +# 1742| m1742_3(unknown) = InitializeNonLocal : +# 1742| m1742_4(unknown) = Chi : total:m1742_2, partial:m1742_3 +# 1742| r1742_5(glval) = VariableAddress[#this] : +# 1742| m1742_6(glval) = InitializeParameter[#this] : &:r1742_5 +# 1742| r1742_7(glval) = Load[#this] : &:r1742_5, m1742_6 +# 1742| m1742_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1742_7 +# 1742| r1742_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1742_6 +# 1742| r1742_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1742| v1742_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1742_10, this:r1742_9 +# 1742| m1742_12(unknown) = ^CallSideEffect : ~m1742_4 +# 1742| m1742_13(unknown) = Chi : total:m1742_4, partial:m1742_12 +# 1742| m1742_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_9 +# 1742| m1742_15(unknown) = Chi : total:m1742_8, partial:m1742_14 +# 1742| r1742_16(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1742_6 +# 1742| r1742_17(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1742| v1742_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1742_17, this:r1742_16 +# 1742| m1742_19(unknown) = ^CallSideEffect : ~m1742_13 +# 1742| m1742_20(unknown) = Chi : total:m1742_13, partial:m1742_19 +# 1742| m1742_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_16 +# 1742| m1742_22(unknown) = Chi : total:m1742_15, partial:m1742_21 +# 1742| v1742_23(void) = NoOp : +# 1742| v1742_24(void) = ReturnIndirection[#this] : &:r1742_7, m1742_22 +# 1742| v1742_25(void) = ReturnVoid : +# 1742| v1742_26(void) = AliasedUse : ~m1742_20 +# 1742| v1742_27(void) = ExitFunction : + +# 1745| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1745| Block 0 +# 1745| v1745_1(void) = EnterFunction : +# 1745| m1745_2(unknown) = AliasedDefinition : +# 1745| m1745_3(unknown) = InitializeNonLocal : +# 1745| m1745_4(unknown) = Chi : total:m1745_2, partial:m1745_3 +# 1745| r1745_5(glval) = VariableAddress[#this] : +# 1745| m1745_6(glval) = InitializeParameter[#this] : &:r1745_5 +# 1745| r1745_7(glval) = Load[#this] : &:r1745_5, m1745_6 +# 1745| m1745_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1745_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(CopyConstructorTestVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1743| r1743_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1743_6 -# 1743| r1743_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1743| r1743_11(glval) = VariableAddress[(unnamed parameter 0)] : -# 1743| r1743_12(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1743_11, m0_2 -# 1743| r1743_13(glval) = CopyValue : r1743_12 -# 1743| r1743_14(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1743_13 -# 1743| r1743_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1743_14 -# 1743| v1743_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1743_10, this:r1743_9, 0:r1743_15 -# 1743| m1743_17(unknown) = ^CallSideEffect : ~m1743_4 -# 1743| m1743_18(unknown) = Chi : total:m1743_4, partial:m1743_17 -# 1743| v1743_19(void) = ^BufferReadSideEffect[0] : &:r1743_15, ~m0_4 -# 1743| m1743_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1743_9 -# 1743| m1743_21(unknown) = Chi : total:m1743_18, partial:m1743_20 -# 1743| v1743_22(void) = NoOp : -# 1743| v1743_23(void) = ReturnIndirection[#this] : &:r1743_7, m1743_8 +# 1745| r1745_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1745_6 +# 1745| r1745_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1745| r1745_11(glval) = VariableAddress[(unnamed parameter 0)] : +# 1745| r1745_12(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1745_11, m0_2 +# 1745| r1745_13(glval) = CopyValue : r1745_12 +# 1745| r1745_14(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1745_13 +# 1745| r1745_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1745_14 +# 1745| v1745_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1745_10, this:r1745_9, 0:r1745_15 +# 1745| m1745_17(unknown) = ^CallSideEffect : ~m1745_4 +# 1745| m1745_18(unknown) = Chi : total:m1745_4, partial:m1745_17 +# 1745| v1745_19(void) = ^BufferReadSideEffect[0] : &:r1745_15, ~m0_4 +# 1745| m1745_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1745_9 +# 1745| m1745_21(unknown) = Chi : total:m1745_18, partial:m1745_20 +# 1745| v1745_22(void) = NoOp : +# 1745| v1745_23(void) = ReturnIndirection[#this] : &:r1745_7, m1745_8 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1743| v1743_24(void) = ReturnVoid : -# 1743| v1743_25(void) = AliasedUse : ~m1743_21 -# 1743| v1743_26(void) = ExitFunction : - -# 1747| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1747| Block 0 -# 1747| v1747_1(void) = EnterFunction : -# 1747| m1747_2(unknown) = AliasedDefinition : -# 1747| m1747_3(unknown) = InitializeNonLocal : -# 1747| m1747_4(unknown) = Chi : total:m1747_2, partial:m1747_3 -# 1747| r1747_5(glval) = VariableAddress[#this] : -# 1747| m1747_6(glval) = InitializeParameter[#this] : &:r1747_5 -# 1747| r1747_7(glval) = Load[#this] : &:r1747_5, m1747_6 -# 1747| m1747_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1747_7 -# 1747| r1747_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1747_6 -# 1747| r1747_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1747| v1747_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1747_10, this:r1747_9 -# 1747| m1747_12(unknown) = ^CallSideEffect : ~m1747_4 -# 1747| m1747_13(unknown) = Chi : total:m1747_4, partial:m1747_12 -# 1747| m1747_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1747_9 -# 1747| m1747_15(unknown) = Chi : total:m1747_13, partial:m1747_14 -# 1747| r1747_16(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1747_6 -# 1747| r1747_17(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1747| v1747_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1747_17, this:r1747_16 -# 1747| m1747_19(unknown) = ^CallSideEffect : ~m1747_15 -# 1747| m1747_20(unknown) = Chi : total:m1747_15, partial:m1747_19 -# 1747| m1747_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1747_16 -# 1747| m1747_22(unknown) = Chi : total:m1747_20, partial:m1747_21 -# 1747| v1747_23(void) = NoOp : -# 1747| v1747_24(void) = ReturnIndirection[#this] : &:r1747_7, m1747_8 -# 1747| v1747_25(void) = ReturnVoid : -# 1747| v1747_26(void) = AliasedUse : ~m1747_22 -# 1747| v1747_27(void) = ExitFunction : - -# 1750| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1750| Block 0 -# 1750| v1750_1(void) = EnterFunction : -# 1750| m1750_2(unknown) = AliasedDefinition : -# 1750| m1750_3(unknown) = InitializeNonLocal : -# 1750| m1750_4(unknown) = Chi : total:m1750_2, partial:m1750_3 -# 1751| r1751_1(glval) = VariableAddress[x] : -# 1751| m1751_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1751_1 -# 1751| r1751_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1751_1, m1751_2 -# 1751| m1751_4(unknown) = InitializeIndirection[x] : &:r1751_3 -# 1752| r1752_1(glval) = VariableAddress[y] : -# 1752| m1752_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1752_1 -# 1752| r1752_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1752_1, m1752_2 -# 1752| m1752_4(unknown) = InitializeIndirection[y] : &:r1752_3 -# 1753| r1753_1(glval) = VariableAddress[cx] : -# 1753| m1753_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1753_1 -# 1753| r1753_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : -# 1753| r1753_4(glval) = VariableAddress[x] : -# 1753| r1753_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1753_4, m1751_2 -# 1753| r1753_6(glval) = CopyValue : r1753_5 -# 1753| r1753_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1753_6 -# 1753| v1753_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1753_3, this:r1753_1, 0:r1753_7 -# 1753| m1753_9(unknown) = ^CallSideEffect : ~m1750_4 -# 1753| m1753_10(unknown) = Chi : total:m1750_4, partial:m1753_9 -# 1753| v1753_11(void) = ^BufferReadSideEffect[0] : &:r1753_7, ~m1751_4 -# 1753| m1753_12(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1753_1 -# 1753| m1753_13(CopyConstructorTestNonVirtualClass) = Chi : total:m1753_2, partial:m1753_12 -# 1754| r1754_1(glval) = VariableAddress[cy] : -# 1754| m1754_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1754_1 -# 1754| r1754_3(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : -# 1754| r1754_4(glval) = VariableAddress[y] : -# 1754| r1754_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1754_4, m1752_2 -# 1754| r1754_6(glval) = CopyValue : r1754_5 -# 1754| r1754_7(CopyConstructorTestVirtualClass &) = CopyValue : r1754_6 -# 1754| v1754_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1754_3, this:r1754_1, 0:r1754_7 -# 1754| m1754_9(unknown) = ^CallSideEffect : ~m1753_10 -# 1754| m1754_10(unknown) = Chi : total:m1753_10, partial:m1754_9 -# 1754| v1754_11(void) = ^BufferReadSideEffect[0] : &:r1754_7, ~m1752_4 -# 1754| m1754_12(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1754_1 -# 1754| m1754_13(CopyConstructorTestVirtualClass) = Chi : total:m1754_2, partial:m1754_12 -# 1755| r1755_1(glval) = VariableAddress[#return] : -# 1755| m1755_2(int) = Uninitialized[#return] : &:r1755_1 -# 1751| v1751_5(void) = ReturnIndirection[x] : &:r1751_3, m1751_4 -# 1752| v1752_5(void) = ReturnIndirection[y] : &:r1752_3, m1752_4 -# 1750| r1750_5(glval) = VariableAddress[#return] : -# 1750| v1750_6(void) = ReturnValue : &:r1750_5, m1755_2 -# 1750| v1750_7(void) = AliasedUse : ~m1754_10 -# 1750| v1750_8(void) = ExitFunction : - -# 1757| void if_initialization(int) -# 1757| Block 0 -# 1757| v1757_1(void) = EnterFunction : -# 1757| m1757_2(unknown) = AliasedDefinition : -# 1757| m1757_3(unknown) = InitializeNonLocal : -# 1757| m1757_4(unknown) = Chi : total:m1757_2, partial:m1757_3 -# 1757| r1757_5(glval) = VariableAddress[x] : -# 1757| m1757_6(int) = InitializeParameter[x] : &:r1757_5 -# 1758| r1758_1(glval) = VariableAddress[y] : -# 1758| r1758_2(glval) = VariableAddress[x] : -# 1758| r1758_3(int) = Load[x] : &:r1758_2, m1757_6 -# 1758| m1758_4(int) = Store[y] : &:r1758_1, r1758_3 -# 1758| r1758_5(glval) = VariableAddress[x] : -# 1758| r1758_6(int) = Load[x] : &:r1758_5, m1757_6 -# 1758| r1758_7(int) = Constant[1] : -# 1758| r1758_8(int) = Add : r1758_6, r1758_7 -# 1758| r1758_9(int) = Constant[0] : -# 1758| r1758_10(bool) = CompareNE : r1758_8, r1758_9 -# 1758| v1758_11(void) = ConditionalBranch : r1758_10 +# 1745| v1745_24(void) = ReturnVoid : +# 1745| v1745_25(void) = AliasedUse : ~m1745_21 +# 1745| v1745_26(void) = ExitFunction : + +# 1749| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1749| Block 0 +# 1749| v1749_1(void) = EnterFunction : +# 1749| m1749_2(unknown) = AliasedDefinition : +# 1749| m1749_3(unknown) = InitializeNonLocal : +# 1749| m1749_4(unknown) = Chi : total:m1749_2, partial:m1749_3 +# 1749| r1749_5(glval) = VariableAddress[#this] : +# 1749| m1749_6(glval) = InitializeParameter[#this] : &:r1749_5 +# 1749| r1749_7(glval) = Load[#this] : &:r1749_5, m1749_6 +# 1749| m1749_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1749_7 +# 1749| r1749_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1749_6 +# 1749| r1749_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1749| v1749_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1749_10, this:r1749_9 +# 1749| m1749_12(unknown) = ^CallSideEffect : ~m1749_4 +# 1749| m1749_13(unknown) = Chi : total:m1749_4, partial:m1749_12 +# 1749| m1749_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_9 +# 1749| m1749_15(unknown) = Chi : total:m1749_13, partial:m1749_14 +# 1749| r1749_16(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1749_6 +# 1749| r1749_17(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1749| v1749_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1749_17, this:r1749_16 +# 1749| m1749_19(unknown) = ^CallSideEffect : ~m1749_15 +# 1749| m1749_20(unknown) = Chi : total:m1749_15, partial:m1749_19 +# 1749| m1749_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_16 +# 1749| m1749_22(unknown) = Chi : total:m1749_20, partial:m1749_21 +# 1749| v1749_23(void) = NoOp : +# 1749| v1749_24(void) = ReturnIndirection[#this] : &:r1749_7, m1749_8 +# 1749| v1749_25(void) = ReturnVoid : +# 1749| v1749_26(void) = AliasedUse : ~m1749_22 +# 1749| v1749_27(void) = ExitFunction : + +# 1752| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1752| Block 0 +# 1752| v1752_1(void) = EnterFunction : +# 1752| m1752_2(unknown) = AliasedDefinition : +# 1752| m1752_3(unknown) = InitializeNonLocal : +# 1752| m1752_4(unknown) = Chi : total:m1752_2, partial:m1752_3 +# 1753| r1753_1(glval) = VariableAddress[x] : +# 1753| m1753_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1753_1 +# 1753| r1753_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1753_1, m1753_2 +# 1753| m1753_4(unknown) = InitializeIndirection[x] : &:r1753_3 +# 1754| r1754_1(glval) = VariableAddress[y] : +# 1754| m1754_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1754_1 +# 1754| r1754_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1754_1, m1754_2 +# 1754| m1754_4(unknown) = InitializeIndirection[y] : &:r1754_3 +# 1755| r1755_1(glval) = VariableAddress[cx] : +# 1755| m1755_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1755_1 +# 1755| r1755_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : +# 1755| r1755_4(glval) = VariableAddress[x] : +# 1755| r1755_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1755_4, m1753_2 +# 1755| r1755_6(glval) = CopyValue : r1755_5 +# 1755| r1755_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1755_6 +# 1755| v1755_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1755_3, this:r1755_1, 0:r1755_7 +# 1755| m1755_9(unknown) = ^CallSideEffect : ~m1752_4 +# 1755| m1755_10(unknown) = Chi : total:m1752_4, partial:m1755_9 +# 1755| v1755_11(void) = ^BufferReadSideEffect[0] : &:r1755_7, ~m1753_4 +# 1755| m1755_12(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1755_1 +# 1755| m1755_13(CopyConstructorTestNonVirtualClass) = Chi : total:m1755_2, partial:m1755_12 +# 1756| r1756_1(glval) = VariableAddress[cy] : +# 1756| m1756_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1756_1 +# 1756| r1756_3(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : +# 1756| r1756_4(glval) = VariableAddress[y] : +# 1756| r1756_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1756_4, m1754_2 +# 1756| r1756_6(glval) = CopyValue : r1756_5 +# 1756| r1756_7(CopyConstructorTestVirtualClass &) = CopyValue : r1756_6 +# 1756| v1756_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1756_3, this:r1756_1, 0:r1756_7 +# 1756| m1756_9(unknown) = ^CallSideEffect : ~m1755_10 +# 1756| m1756_10(unknown) = Chi : total:m1755_10, partial:m1756_9 +# 1756| v1756_11(void) = ^BufferReadSideEffect[0] : &:r1756_7, ~m1754_4 +# 1756| m1756_12(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1756_1 +# 1756| m1756_13(CopyConstructorTestVirtualClass) = Chi : total:m1756_2, partial:m1756_12 +# 1757| r1757_1(glval) = VariableAddress[#return] : +# 1757| m1757_2(int) = Uninitialized[#return] : &:r1757_1 +# 1753| v1753_5(void) = ReturnIndirection[x] : &:r1753_3, m1753_4 +# 1754| v1754_5(void) = ReturnIndirection[y] : &:r1754_3, m1754_4 +# 1752| r1752_5(glval) = VariableAddress[#return] : +# 1752| v1752_6(void) = ReturnValue : &:r1752_5, m1757_2 +# 1752| v1752_7(void) = AliasedUse : ~m1756_10 +# 1752| v1752_8(void) = ExitFunction : + +# 1759| void if_initialization(int) +# 1759| Block 0 +# 1759| v1759_1(void) = EnterFunction : +# 1759| m1759_2(unknown) = AliasedDefinition : +# 1759| m1759_3(unknown) = InitializeNonLocal : +# 1759| m1759_4(unknown) = Chi : total:m1759_2, partial:m1759_3 +# 1759| r1759_5(glval) = VariableAddress[x] : +# 1759| m1759_6(int) = InitializeParameter[x] : &:r1759_5 +# 1760| r1760_1(glval) = VariableAddress[y] : +# 1760| r1760_2(glval) = VariableAddress[x] : +# 1760| r1760_3(int) = Load[x] : &:r1760_2, m1759_6 +# 1760| m1760_4(int) = Store[y] : &:r1760_1, r1760_3 +# 1760| r1760_5(glval) = VariableAddress[x] : +# 1760| r1760_6(int) = Load[x] : &:r1760_5, m1759_6 +# 1760| r1760_7(int) = Constant[1] : +# 1760| r1760_8(int) = Add : r1760_6, r1760_7 +# 1760| r1760_9(int) = Constant[0] : +# 1760| r1760_10(bool) = CompareNE : r1760_8, r1760_9 +# 1760| v1760_11(void) = ConditionalBranch : r1760_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 1759| Block 1 -# 1759| r1759_1(glval) = VariableAddress[x] : -# 1759| r1759_2(int) = Load[x] : &:r1759_1, m1757_6 -# 1759| r1759_3(glval) = VariableAddress[y] : -# 1759| r1759_4(int) = Load[y] : &:r1759_3, m1758_4 -# 1759| r1759_5(int) = Add : r1759_2, r1759_4 -# 1759| r1759_6(glval) = VariableAddress[x] : -# 1759| m1759_7(int) = Store[x] : &:r1759_6, r1759_5 +# 1761| Block 1 +# 1761| r1761_1(glval) = VariableAddress[x] : +# 1761| r1761_2(int) = Load[x] : &:r1761_1, m1759_6 +# 1761| r1761_3(glval) = VariableAddress[y] : +# 1761| r1761_4(int) = Load[y] : &:r1761_3, m1760_4 +# 1761| r1761_5(int) = Add : r1761_2, r1761_4 +# 1761| r1761_6(glval) = VariableAddress[x] : +# 1761| m1761_7(int) = Store[x] : &:r1761_6, r1761_5 #-----| Goto -> Block 2 -# 1762| Block 2 -# 1762| m1762_1(int) = Phi : from 0:m1757_6, from 1:m1759_7 -# 1762| r1762_2(glval) = VariableAddress[w] : -# 1762| m1762_3(int) = Uninitialized[w] : &:r1762_2 -# 1763| r1763_1(glval) = VariableAddress[x] : -# 1763| r1763_2(int) = Load[x] : &:r1763_1, m1762_1 -# 1763| r1763_3(glval) = VariableAddress[w] : -# 1763| m1763_4(int) = Store[w] : &:r1763_3, r1763_2 -# 1763| r1763_5(glval) = VariableAddress[x] : -# 1763| r1763_6(int) = Load[x] : &:r1763_5, m1762_1 -# 1763| r1763_7(int) = Constant[1] : -# 1763| r1763_8(int) = Add : r1763_6, r1763_7 -# 1763| r1763_9(int) = Constant[0] : -# 1763| r1763_10(bool) = CompareNE : r1763_8, r1763_9 -# 1763| v1763_11(void) = ConditionalBranch : r1763_10 +# 1764| Block 2 +# 1764| m1764_1(int) = Phi : from 0:m1759_6, from 1:m1761_7 +# 1764| r1764_2(glval) = VariableAddress[w] : +# 1764| m1764_3(int) = Uninitialized[w] : &:r1764_2 +# 1765| r1765_1(glval) = VariableAddress[x] : +# 1765| r1765_2(int) = Load[x] : &:r1765_1, m1764_1 +# 1765| r1765_3(glval) = VariableAddress[w] : +# 1765| m1765_4(int) = Store[w] : &:r1765_3, r1765_2 +# 1765| r1765_5(glval) = VariableAddress[x] : +# 1765| r1765_6(int) = Load[x] : &:r1765_5, m1764_1 +# 1765| r1765_7(int) = Constant[1] : +# 1765| r1765_8(int) = Add : r1765_6, r1765_7 +# 1765| r1765_9(int) = Constant[0] : +# 1765| r1765_10(bool) = CompareNE : r1765_8, r1765_9 +# 1765| v1765_11(void) = ConditionalBranch : r1765_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1764| Block 3 -# 1764| r1764_1(glval) = VariableAddress[x] : -# 1764| r1764_2(int) = Load[x] : &:r1764_1, m1762_1 -# 1764| r1764_3(glval) = VariableAddress[w] : -# 1764| r1764_4(int) = Load[w] : &:r1764_3, m1763_4 -# 1764| r1764_5(int) = Add : r1764_2, r1764_4 -# 1764| r1764_6(glval) = VariableAddress[x] : -# 1764| m1764_7(int) = Store[x] : &:r1764_6, r1764_5 +# 1766| Block 3 +# 1766| r1766_1(glval) = VariableAddress[x] : +# 1766| r1766_2(int) = Load[x] : &:r1766_1, m1764_1 +# 1766| r1766_3(glval) = VariableAddress[w] : +# 1766| r1766_4(int) = Load[w] : &:r1766_3, m1765_4 +# 1766| r1766_5(int) = Add : r1766_2, r1766_4 +# 1766| r1766_6(glval) = VariableAddress[x] : +# 1766| m1766_7(int) = Store[x] : &:r1766_6, r1766_5 #-----| Goto -> Block 4 -# 1767| Block 4 -# 1767| m1767_1(int) = Phi : from 2:m1762_1, from 3:m1764_7 -# 1767| r1767_2(glval) = VariableAddress[x] : -# 1767| r1767_3(int) = Load[x] : &:r1767_2, m1767_1 -# 1767| r1767_4(glval) = VariableAddress[w] : -# 1767| m1767_5(int) = Store[w] : &:r1767_4, r1767_3 -# 1767| r1767_6(glval) = VariableAddress[w2] : -# 1767| r1767_7(glval) = VariableAddress[w] : -# 1767| r1767_8(int) = Load[w] : &:r1767_7, m1767_5 -# 1767| m1767_9(int) = Store[w2] : &:r1767_6, r1767_8 -# 1767| r1767_10(glval) = VariableAddress[w2] : -# 1767| r1767_11(int) = Load[w2] : &:r1767_10, m1767_9 -# 1767| r1767_12(int) = Constant[0] : -# 1767| r1767_13(bool) = CompareNE : r1767_11, r1767_12 -# 1767| r1767_14(bool) = CopyValue : r1767_13 -# 1767| v1767_15(void) = ConditionalBranch : r1767_14 +# 1769| Block 4 +# 1769| m1769_1(int) = Phi : from 2:m1764_1, from 3:m1766_7 +# 1769| r1769_2(glval) = VariableAddress[x] : +# 1769| r1769_3(int) = Load[x] : &:r1769_2, m1769_1 +# 1769| r1769_4(glval) = VariableAddress[w] : +# 1769| m1769_5(int) = Store[w] : &:r1769_4, r1769_3 +# 1769| r1769_6(glval) = VariableAddress[w2] : +# 1769| r1769_7(glval) = VariableAddress[w] : +# 1769| r1769_8(int) = Load[w] : &:r1769_7, m1769_5 +# 1769| m1769_9(int) = Store[w2] : &:r1769_6, r1769_8 +# 1769| r1769_10(glval) = VariableAddress[w2] : +# 1769| r1769_11(int) = Load[w2] : &:r1769_10, m1769_9 +# 1769| r1769_12(int) = Constant[0] : +# 1769| r1769_13(bool) = CompareNE : r1769_11, r1769_12 +# 1769| r1769_14(bool) = CopyValue : r1769_13 +# 1769| v1769_15(void) = ConditionalBranch : r1769_14 #-----| False -> Block 6 #-----| True -> Block 5 -# 1768| Block 5 -# 1768| r1768_1(glval) = VariableAddress[x] : -# 1768| r1768_2(int) = Load[x] : &:r1768_1, m1767_1 -# 1768| r1768_3(glval) = VariableAddress[w] : -# 1768| r1768_4(int) = Load[w] : &:r1768_3, m1767_5 -# 1768| r1768_5(int) = Add : r1768_2, r1768_4 -# 1768| r1768_6(glval) = VariableAddress[x] : -# 1768| m1768_7(int) = Store[x] : &:r1768_6, r1768_5 +# 1770| Block 5 +# 1770| r1770_1(glval) = VariableAddress[x] : +# 1770| r1770_2(int) = Load[x] : &:r1770_1, m1769_1 +# 1770| r1770_3(glval) = VariableAddress[w] : +# 1770| r1770_4(int) = Load[w] : &:r1770_3, m1769_5 +# 1770| r1770_5(int) = Add : r1770_2, r1770_4 +# 1770| r1770_6(glval) = VariableAddress[x] : +# 1770| m1770_7(int) = Store[x] : &:r1770_6, r1770_5 #-----| Goto -> Block 6 -# 1771| Block 6 -# 1771| m1771_1(int) = Phi : from 4:m1767_1, from 5:m1768_7 -# 1771| r1771_2(glval) = VariableAddress[v] : -# 1771| r1771_3(glval) = VariableAddress[x] : -# 1771| r1771_4(int) = Load[x] : &:r1771_3, m1771_1 -# 1771| m1771_5(int) = Store[v] : &:r1771_2, r1771_4 -# 1771| r1771_6(glval) = VariableAddress[v2] : -# 1771| r1771_7(glval) = VariableAddress[v] : -# 1771| r1771_8(int) = Load[v] : &:r1771_7, m1771_5 -# 1771| m1771_9(int) = Store[v2] : &:r1771_6, r1771_8 -# 1771| r1771_10(glval) = VariableAddress[v2] : -# 1771| r1771_11(int) = Load[v2] : &:r1771_10, m1771_9 -# 1771| r1771_12(int) = Constant[0] : -# 1771| r1771_13(bool) = CompareNE : r1771_11, r1771_12 -# 1771| r1771_14(bool) = CopyValue : r1771_13 -# 1771| v1771_15(void) = ConditionalBranch : r1771_14 +# 1773| Block 6 +# 1773| m1773_1(int) = Phi : from 4:m1769_1, from 5:m1770_7 +# 1773| r1773_2(glval) = VariableAddress[v] : +# 1773| r1773_3(glval) = VariableAddress[x] : +# 1773| r1773_4(int) = Load[x] : &:r1773_3, m1773_1 +# 1773| m1773_5(int) = Store[v] : &:r1773_2, r1773_4 +# 1773| r1773_6(glval) = VariableAddress[v2] : +# 1773| r1773_7(glval) = VariableAddress[v] : +# 1773| r1773_8(int) = Load[v] : &:r1773_7, m1773_5 +# 1773| m1773_9(int) = Store[v2] : &:r1773_6, r1773_8 +# 1773| r1773_10(glval) = VariableAddress[v2] : +# 1773| r1773_11(int) = Load[v2] : &:r1773_10, m1773_9 +# 1773| r1773_12(int) = Constant[0] : +# 1773| r1773_13(bool) = CompareNE : r1773_11, r1773_12 +# 1773| r1773_14(bool) = CopyValue : r1773_13 +# 1773| v1773_15(void) = ConditionalBranch : r1773_14 #-----| False -> Block 8 #-----| True -> Block 7 -# 1772| Block 7 -# 1772| r1772_1(glval) = VariableAddress[x] : -# 1772| r1772_2(int) = Load[x] : &:r1772_1, m1771_1 -# 1772| r1772_3(glval) = VariableAddress[v] : -# 1772| r1772_4(int) = Load[v] : &:r1772_3, m1771_5 -# 1772| r1772_5(int) = Add : r1772_2, r1772_4 -# 1772| r1772_6(glval) = VariableAddress[x] : -# 1772| m1772_7(int) = Store[x] : &:r1772_6, r1772_5 +# 1774| Block 7 +# 1774| r1774_1(glval) = VariableAddress[x] : +# 1774| r1774_2(int) = Load[x] : &:r1774_1, m1773_1 +# 1774| r1774_3(glval) = VariableAddress[v] : +# 1774| r1774_4(int) = Load[v] : &:r1774_3, m1773_5 +# 1774| r1774_5(int) = Add : r1774_2, r1774_4 +# 1774| r1774_6(glval) = VariableAddress[x] : +# 1774| m1774_7(int) = Store[x] : &:r1774_6, r1774_5 #-----| Goto -> Block 8 -# 1775| Block 8 -# 1775| m1775_1(int) = Phi : from 6:m1771_1, from 7:m1772_7 -# 1775| r1775_2(glval) = VariableAddress[z] : -# 1775| r1775_3(glval) = VariableAddress[x] : -# 1775| r1775_4(int) = Load[x] : &:r1775_3, m1775_1 -# 1775| m1775_5(int) = Store[z] : &:r1775_2, r1775_4 -# 1776| r1776_1(glval) = VariableAddress[z] : -# 1776| r1776_2(int) = Load[z] : &:r1776_1, m1775_5 -# 1776| r1776_3(int) = Constant[0] : -# 1776| r1776_4(bool) = CompareNE : r1776_2, r1776_3 -# 1776| v1776_5(void) = ConditionalBranch : r1776_4 +# 1777| Block 8 +# 1777| m1777_1(int) = Phi : from 6:m1773_1, from 7:m1774_7 +# 1777| r1777_2(glval) = VariableAddress[z] : +# 1777| r1777_3(glval) = VariableAddress[x] : +# 1777| r1777_4(int) = Load[x] : &:r1777_3, m1777_1 +# 1777| m1777_5(int) = Store[z] : &:r1777_2, r1777_4 +# 1778| r1778_1(glval) = VariableAddress[z] : +# 1778| r1778_2(int) = Load[z] : &:r1778_1, m1777_5 +# 1778| r1778_3(int) = Constant[0] : +# 1778| r1778_4(bool) = CompareNE : r1778_2, r1778_3 +# 1778| v1778_5(void) = ConditionalBranch : r1778_4 #-----| False -> Block 10 #-----| True -> Block 9 -# 1777| Block 9 -# 1777| r1777_1(glval) = VariableAddress[x] : -# 1777| r1777_2(int) = Load[x] : &:r1777_1, m1775_1 -# 1777| r1777_3(glval) = VariableAddress[z] : -# 1777| r1777_4(int) = Load[z] : &:r1777_3, m1775_5 -# 1777| r1777_5(int) = Add : r1777_2, r1777_4 -# 1777| r1777_6(glval) = VariableAddress[x] : -# 1777| m1777_7(int) = Store[x] : &:r1777_6, r1777_5 +# 1779| Block 9 +# 1779| r1779_1(glval) = VariableAddress[x] : +# 1779| r1779_2(int) = Load[x] : &:r1779_1, m1777_1 +# 1779| r1779_3(glval) = VariableAddress[z] : +# 1779| r1779_4(int) = Load[z] : &:r1779_3, m1777_5 +# 1779| r1779_5(int) = Add : r1779_2, r1779_4 +# 1779| r1779_6(glval) = VariableAddress[x] : +# 1779| m1779_7(int) = Store[x] : &:r1779_6, r1779_5 #-----| Goto -> Block 10 -# 1780| Block 10 -# 1780| m1780_1(int) = Phi : from 8:m1775_1, from 9:m1777_7 -# 1780| r1780_2(glval) = VariableAddress[z2] : -# 1780| r1780_3(glval) = VariableAddress[z] : -# 1780| r1780_4(int) = Load[z] : &:r1780_3, m1775_5 -# 1780| m1780_5(int) = Store[z2] : &:r1780_2, r1780_4 -# 1780| r1780_6(glval) = VariableAddress[z2] : -# 1780| r1780_7(int) = Load[z2] : &:r1780_6, m1780_5 -# 1780| r1780_8(int) = Constant[0] : -# 1780| r1780_9(bool) = CompareNE : r1780_7, r1780_8 -# 1780| r1780_10(bool) = CopyValue : r1780_9 -# 1780| v1780_11(void) = ConditionalBranch : r1780_10 +# 1782| Block 10 +# 1782| m1782_1(int) = Phi : from 8:m1777_1, from 9:m1779_7 +# 1782| r1782_2(glval) = VariableAddress[z2] : +# 1782| r1782_3(glval) = VariableAddress[z] : +# 1782| r1782_4(int) = Load[z] : &:r1782_3, m1777_5 +# 1782| m1782_5(int) = Store[z2] : &:r1782_2, r1782_4 +# 1782| r1782_6(glval) = VariableAddress[z2] : +# 1782| r1782_7(int) = Load[z2] : &:r1782_6, m1782_5 +# 1782| r1782_8(int) = Constant[0] : +# 1782| r1782_9(bool) = CompareNE : r1782_7, r1782_8 +# 1782| r1782_10(bool) = CopyValue : r1782_9 +# 1782| v1782_11(void) = ConditionalBranch : r1782_10 #-----| False -> Block 12 #-----| True -> Block 11 -# 1781| Block 11 -# 1781| r1781_1(glval) = VariableAddress[z2] : -# 1781| r1781_2(int) = Load[z2] : &:r1781_1, m1780_5 -# 1781| r1781_3(glval) = VariableAddress[x] : -# 1781| r1781_4(int) = Load[x] : &:r1781_3, m1780_1 -# 1781| r1781_5(int) = Add : r1781_4, r1781_2 -# 1781| m1781_6(int) = Store[x] : &:r1781_3, r1781_5 +# 1783| Block 11 +# 1783| r1783_1(glval) = VariableAddress[z2] : +# 1783| r1783_2(int) = Load[z2] : &:r1783_1, m1782_5 +# 1783| r1783_3(glval) = VariableAddress[x] : +# 1783| r1783_4(int) = Load[x] : &:r1783_3, m1782_1 +# 1783| r1783_5(int) = Add : r1783_4, r1783_2 +# 1783| m1783_6(int) = Store[x] : &:r1783_3, r1783_5 #-----| Goto -> Block 12 -# 1783| Block 12 -# 1783| v1783_1(void) = NoOp : -# 1757| v1757_7(void) = ReturnVoid : -# 1757| v1757_8(void) = AliasedUse : m1757_3 -# 1757| v1757_9(void) = ExitFunction : - -# 1785| void switch_initialization(int) -# 1785| Block 0 -# 1785| v1785_1(void) = EnterFunction : -# 1785| m1785_2(unknown) = AliasedDefinition : -# 1785| m1785_3(unknown) = InitializeNonLocal : -# 1785| m1785_4(unknown) = Chi : total:m1785_2, partial:m1785_3 -# 1785| r1785_5(glval) = VariableAddress[x] : -# 1785| m1785_6(int) = InitializeParameter[x] : &:r1785_5 -# 1786| r1786_1(glval) = VariableAddress[y] : -# 1786| r1786_2(glval) = VariableAddress[x] : -# 1786| r1786_3(int) = Load[x] : &:r1786_2, m1785_6 -# 1786| m1786_4(int) = Store[y] : &:r1786_1, r1786_3 -# 1786| r1786_5(glval) = VariableAddress[x] : -# 1786| r1786_6(int) = Load[x] : &:r1786_5, m1785_6 -# 1786| r1786_7(int) = Constant[1] : -# 1786| r1786_8(int) = Add : r1786_6, r1786_7 -# 1786| v1786_9(void) = Switch : r1786_8 +# 1785| Block 12 +# 1785| v1785_1(void) = NoOp : +# 1759| v1759_7(void) = ReturnVoid : +# 1759| v1759_8(void) = AliasedUse : m1759_3 +# 1759| v1759_9(void) = ExitFunction : + +# 1787| void switch_initialization(int) +# 1787| Block 0 +# 1787| v1787_1(void) = EnterFunction : +# 1787| m1787_2(unknown) = AliasedDefinition : +# 1787| m1787_3(unknown) = InitializeNonLocal : +# 1787| m1787_4(unknown) = Chi : total:m1787_2, partial:m1787_3 +# 1787| r1787_5(glval) = VariableAddress[x] : +# 1787| m1787_6(int) = InitializeParameter[x] : &:r1787_5 +# 1788| r1788_1(glval) = VariableAddress[y] : +# 1788| r1788_2(glval) = VariableAddress[x] : +# 1788| r1788_3(int) = Load[x] : &:r1788_2, m1787_6 +# 1788| m1788_4(int) = Store[y] : &:r1788_1, r1788_3 +# 1788| r1788_5(glval) = VariableAddress[x] : +# 1788| r1788_6(int) = Load[x] : &:r1788_5, m1787_6 +# 1788| r1788_7(int) = Constant[1] : +# 1788| r1788_8(int) = Add : r1788_6, r1788_7 +# 1788| v1788_9(void) = Switch : r1788_8 #-----| Default -> Block 1 -# 1787| Block 1 -# 1787| v1787_1(void) = NoOp : -# 1788| r1788_1(glval) = VariableAddress[x] : -# 1788| r1788_2(int) = Load[x] : &:r1788_1, m1785_6 -# 1788| r1788_3(glval) = VariableAddress[y] : -# 1788| r1788_4(int) = Load[y] : &:r1788_3, m1786_4 -# 1788| r1788_5(int) = Add : r1788_2, r1788_4 -# 1788| r1788_6(glval) = VariableAddress[x] : -# 1788| m1788_7(int) = Store[x] : &:r1788_6, r1788_5 -# 1791| r1791_1(glval) = VariableAddress[w] : -# 1791| m1791_2(int) = Uninitialized[w] : &:r1791_1 -# 1792| r1792_1(glval) = VariableAddress[x] : -# 1792| r1792_2(int) = Load[x] : &:r1792_1, m1788_7 -# 1792| r1792_3(glval) = VariableAddress[w] : -# 1792| m1792_4(int) = Store[w] : &:r1792_3, r1792_2 -# 1792| r1792_5(glval) = VariableAddress[x] : -# 1792| r1792_6(int) = Load[x] : &:r1792_5, m1788_7 -# 1792| r1792_7(int) = Constant[1] : -# 1792| r1792_8(int) = Add : r1792_6, r1792_7 -# 1792| v1792_9(void) = Switch : r1792_8 +# 1789| Block 1 +# 1789| v1789_1(void) = NoOp : +# 1790| r1790_1(glval) = VariableAddress[x] : +# 1790| r1790_2(int) = Load[x] : &:r1790_1, m1787_6 +# 1790| r1790_3(glval) = VariableAddress[y] : +# 1790| r1790_4(int) = Load[y] : &:r1790_3, m1788_4 +# 1790| r1790_5(int) = Add : r1790_2, r1790_4 +# 1790| r1790_6(glval) = VariableAddress[x] : +# 1790| m1790_7(int) = Store[x] : &:r1790_6, r1790_5 +# 1793| r1793_1(glval) = VariableAddress[w] : +# 1793| m1793_2(int) = Uninitialized[w] : &:r1793_1 +# 1794| r1794_1(glval) = VariableAddress[x] : +# 1794| r1794_2(int) = Load[x] : &:r1794_1, m1790_7 +# 1794| r1794_3(glval) = VariableAddress[w] : +# 1794| m1794_4(int) = Store[w] : &:r1794_3, r1794_2 +# 1794| r1794_5(glval) = VariableAddress[x] : +# 1794| r1794_6(int) = Load[x] : &:r1794_5, m1790_7 +# 1794| r1794_7(int) = Constant[1] : +# 1794| r1794_8(int) = Add : r1794_6, r1794_7 +# 1794| v1794_9(void) = Switch : r1794_8 #-----| Default -> Block 2 -# 1793| Block 2 -# 1793| v1793_1(void) = NoOp : -# 1794| r1794_1(glval) = VariableAddress[x] : -# 1794| r1794_2(int) = Load[x] : &:r1794_1, m1788_7 -# 1794| r1794_3(glval) = VariableAddress[w] : -# 1794| r1794_4(int) = Load[w] : &:r1794_3, m1792_4 -# 1794| r1794_5(int) = Add : r1794_2, r1794_4 -# 1794| r1794_6(glval) = VariableAddress[x] : -# 1794| m1794_7(int) = Store[x] : &:r1794_6, r1794_5 -# 1797| r1797_1(glval) = VariableAddress[x] : -# 1797| r1797_2(int) = Load[x] : &:r1797_1, m1794_7 -# 1797| r1797_3(glval) = VariableAddress[w] : -# 1797| m1797_4(int) = Store[w] : &:r1797_3, r1797_2 -# 1797| r1797_5(glval) = VariableAddress[w2] : -# 1797| r1797_6(glval) = VariableAddress[w] : -# 1797| r1797_7(int) = Load[w] : &:r1797_6, m1797_4 -# 1797| m1797_8(int) = Store[w2] : &:r1797_5, r1797_7 -# 1797| r1797_9(glval) = VariableAddress[w2] : -# 1797| r1797_10(int) = Load[w2] : &:r1797_9, m1797_8 -# 1797| r1797_11(int) = CopyValue : r1797_10 -# 1797| v1797_12(void) = Switch : r1797_11 -#-----| Default -> Block 3 - -# 1798| Block 3 -# 1798| v1798_1(void) = NoOp : +# 1795| Block 2 +# 1795| v1795_1(void) = NoOp : +# 1796| r1796_1(glval) = VariableAddress[x] : +# 1796| r1796_2(int) = Load[x] : &:r1796_1, m1790_7 +# 1796| r1796_3(glval) = VariableAddress[w] : +# 1796| r1796_4(int) = Load[w] : &:r1796_3, m1794_4 +# 1796| r1796_5(int) = Add : r1796_2, r1796_4 +# 1796| r1796_6(glval) = VariableAddress[x] : +# 1796| m1796_7(int) = Store[x] : &:r1796_6, r1796_5 # 1799| r1799_1(glval) = VariableAddress[x] : -# 1799| r1799_2(int) = Load[x] : &:r1799_1, m1794_7 +# 1799| r1799_2(int) = Load[x] : &:r1799_1, m1796_7 # 1799| r1799_3(glval) = VariableAddress[w] : -# 1799| r1799_4(int) = Load[w] : &:r1799_3, m1797_4 -# 1799| r1799_5(int) = Add : r1799_2, r1799_4 -# 1799| r1799_6(glval) = VariableAddress[x] : -# 1799| m1799_7(int) = Store[x] : &:r1799_6, r1799_5 -# 1802| r1802_1(glval) = VariableAddress[v] : -# 1802| r1802_2(glval) = VariableAddress[x] : -# 1802| r1802_3(int) = Load[x] : &:r1802_2, m1799_7 -# 1802| m1802_4(int) = Store[v] : &:r1802_1, r1802_3 -# 1802| r1802_5(glval) = VariableAddress[v2] : -# 1802| r1802_6(glval) = VariableAddress[v] : -# 1802| r1802_7(int) = Load[v] : &:r1802_6, m1802_4 -# 1802| m1802_8(int) = Store[v2] : &:r1802_5, r1802_7 -# 1802| r1802_9(glval) = VariableAddress[v2] : -# 1802| r1802_10(int) = Load[v2] : &:r1802_9, m1802_8 -# 1802| r1802_11(int) = CopyValue : r1802_10 -# 1802| v1802_12(void) = Switch : r1802_11 +# 1799| m1799_4(int) = Store[w] : &:r1799_3, r1799_2 +# 1799| r1799_5(glval) = VariableAddress[w2] : +# 1799| r1799_6(glval) = VariableAddress[w] : +# 1799| r1799_7(int) = Load[w] : &:r1799_6, m1799_4 +# 1799| m1799_8(int) = Store[w2] : &:r1799_5, r1799_7 +# 1799| r1799_9(glval) = VariableAddress[w2] : +# 1799| r1799_10(int) = Load[w2] : &:r1799_9, m1799_8 +# 1799| r1799_11(int) = CopyValue : r1799_10 +# 1799| v1799_12(void) = Switch : r1799_11 +#-----| Default -> Block 3 + +# 1800| Block 3 +# 1800| v1800_1(void) = NoOp : +# 1801| r1801_1(glval) = VariableAddress[x] : +# 1801| r1801_2(int) = Load[x] : &:r1801_1, m1796_7 +# 1801| r1801_3(glval) = VariableAddress[w] : +# 1801| r1801_4(int) = Load[w] : &:r1801_3, m1799_4 +# 1801| r1801_5(int) = Add : r1801_2, r1801_4 +# 1801| r1801_6(glval) = VariableAddress[x] : +# 1801| m1801_7(int) = Store[x] : &:r1801_6, r1801_5 +# 1804| r1804_1(glval) = VariableAddress[v] : +# 1804| r1804_2(glval) = VariableAddress[x] : +# 1804| r1804_3(int) = Load[x] : &:r1804_2, m1801_7 +# 1804| m1804_4(int) = Store[v] : &:r1804_1, r1804_3 +# 1804| r1804_5(glval) = VariableAddress[v2] : +# 1804| r1804_6(glval) = VariableAddress[v] : +# 1804| r1804_7(int) = Load[v] : &:r1804_6, m1804_4 +# 1804| m1804_8(int) = Store[v2] : &:r1804_5, r1804_7 +# 1804| r1804_9(glval) = VariableAddress[v2] : +# 1804| r1804_10(int) = Load[v2] : &:r1804_9, m1804_8 +# 1804| r1804_11(int) = CopyValue : r1804_10 +# 1804| v1804_12(void) = Switch : r1804_11 #-----| Default -> Block 4 -# 1803| Block 4 -# 1803| v1803_1(void) = NoOp : -# 1804| r1804_1(glval) = VariableAddress[x] : -# 1804| r1804_2(int) = Load[x] : &:r1804_1, m1799_7 -# 1804| r1804_3(glval) = VariableAddress[v] : -# 1804| r1804_4(int) = Load[v] : &:r1804_3, m1802_4 -# 1804| r1804_5(int) = Add : r1804_2, r1804_4 -# 1804| r1804_6(glval) = VariableAddress[x] : -# 1804| m1804_7(int) = Store[x] : &:r1804_6, r1804_5 -# 1807| r1807_1(glval) = VariableAddress[z] : -# 1807| r1807_2(glval) = VariableAddress[x] : -# 1807| r1807_3(int) = Load[x] : &:r1807_2, m1804_7 -# 1807| m1807_4(int) = Store[z] : &:r1807_1, r1807_3 -# 1808| r1808_1(glval) = VariableAddress[z] : -# 1808| r1808_2(int) = Load[z] : &:r1808_1, m1807_4 -# 1808| v1808_3(void) = Switch : r1808_2 +# 1805| Block 4 +# 1805| v1805_1(void) = NoOp : +# 1806| r1806_1(glval) = VariableAddress[x] : +# 1806| r1806_2(int) = Load[x] : &:r1806_1, m1801_7 +# 1806| r1806_3(glval) = VariableAddress[v] : +# 1806| r1806_4(int) = Load[v] : &:r1806_3, m1804_4 +# 1806| r1806_5(int) = Add : r1806_2, r1806_4 +# 1806| r1806_6(glval) = VariableAddress[x] : +# 1806| m1806_7(int) = Store[x] : &:r1806_6, r1806_5 +# 1809| r1809_1(glval) = VariableAddress[z] : +# 1809| r1809_2(glval) = VariableAddress[x] : +# 1809| r1809_3(int) = Load[x] : &:r1809_2, m1806_7 +# 1809| m1809_4(int) = Store[z] : &:r1809_1, r1809_3 +# 1810| r1810_1(glval) = VariableAddress[z] : +# 1810| r1810_2(int) = Load[z] : &:r1810_1, m1809_4 +# 1810| v1810_3(void) = Switch : r1810_2 #-----| Default -> Block 5 -# 1809| Block 5 -# 1809| v1809_1(void) = NoOp : -# 1810| r1810_1(glval) = VariableAddress[x] : -# 1810| r1810_2(int) = Load[x] : &:r1810_1, m1804_7 -# 1810| r1810_3(glval) = VariableAddress[z] : -# 1810| r1810_4(int) = Load[z] : &:r1810_3, m1807_4 -# 1810| r1810_5(int) = Add : r1810_2, r1810_4 -# 1810| r1810_6(glval) = VariableAddress[x] : -# 1810| m1810_7(int) = Store[x] : &:r1810_6, r1810_5 -# 1813| r1813_1(glval) = VariableAddress[z2] : -# 1813| r1813_2(glval) = VariableAddress[z] : -# 1813| r1813_3(int) = Load[z] : &:r1813_2, m1807_4 -# 1813| m1813_4(int) = Store[z2] : &:r1813_1, r1813_3 -# 1813| r1813_5(glval) = VariableAddress[z2] : -# 1813| r1813_6(int) = Load[z2] : &:r1813_5, m1813_4 -# 1813| r1813_7(int) = CopyValue : r1813_6 -# 1813| v1813_8(void) = Switch : r1813_7 +# 1811| Block 5 +# 1811| v1811_1(void) = NoOp : +# 1812| r1812_1(glval) = VariableAddress[x] : +# 1812| r1812_2(int) = Load[x] : &:r1812_1, m1806_7 +# 1812| r1812_3(glval) = VariableAddress[z] : +# 1812| r1812_4(int) = Load[z] : &:r1812_3, m1809_4 +# 1812| r1812_5(int) = Add : r1812_2, r1812_4 +# 1812| r1812_6(glval) = VariableAddress[x] : +# 1812| m1812_7(int) = Store[x] : &:r1812_6, r1812_5 +# 1815| r1815_1(glval) = VariableAddress[z2] : +# 1815| r1815_2(glval) = VariableAddress[z] : +# 1815| r1815_3(int) = Load[z] : &:r1815_2, m1809_4 +# 1815| m1815_4(int) = Store[z2] : &:r1815_1, r1815_3 +# 1815| r1815_5(glval) = VariableAddress[z2] : +# 1815| r1815_6(int) = Load[z2] : &:r1815_5, m1815_4 +# 1815| r1815_7(int) = CopyValue : r1815_6 +# 1815| v1815_8(void) = Switch : r1815_7 #-----| Default -> Block 6 -# 1814| Block 6 -# 1814| v1814_1(void) = NoOp : -# 1815| r1815_1(glval) = VariableAddress[z2] : -# 1815| r1815_2(int) = Load[z2] : &:r1815_1, m1813_4 -# 1815| r1815_3(glval) = VariableAddress[x] : -# 1815| r1815_4(int) = Load[x] : &:r1815_3, m1810_7 -# 1815| r1815_5(int) = Add : r1815_4, r1815_2 -# 1815| m1815_6(int) = Store[x] : &:r1815_3, r1815_5 -# 1817| v1817_1(void) = NoOp : -# 1785| v1785_7(void) = ReturnVoid : -# 1785| v1785_8(void) = AliasedUse : m1785_3 -# 1785| v1785_9(void) = ExitFunction : - -# 1821| int global_2 -# 1821| Block 0 -# 1821| v1821_1(void) = EnterFunction : -# 1821| m1821_2(unknown) = AliasedDefinition : -# 1821| r1821_3(glval) = VariableAddress[global_2] : -# 1821| r1821_4(int) = Constant[1] : -# 1821| m1821_5(int) = Store[global_2] : &:r1821_3, r1821_4 -# 1821| m1821_6(unknown) = Chi : total:m1821_2, partial:m1821_5 -# 1821| v1821_7(void) = ReturnVoid : -# 1821| v1821_8(void) = AliasedUse : ~m1821_6 -# 1821| v1821_9(void) = ExitFunction : - -# 1825| constructor_only global_4 -# 1825| Block 0 -# 1825| v1825_1(void) = EnterFunction : -# 1825| m1825_2(unknown) = AliasedDefinition : -# 1825| r1825_3(glval) = VariableAddress[global_4] : -# 1825| r1825_4(glval) = FunctionAddress[constructor_only] : -# 1825| r1825_5(int) = Constant[1] : -# 1825| v1825_6(void) = Call[constructor_only] : func:r1825_4, this:r1825_3, 0:r1825_5 -# 1825| m1825_7(unknown) = ^CallSideEffect : ~m1825_2 -# 1825| m1825_8(unknown) = Chi : total:m1825_2, partial:m1825_7 -# 1825| m1825_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1825_3 -# 1825| m1825_10(unknown) = Chi : total:m1825_8, partial:m1825_9 -# 1825| v1825_11(void) = ReturnVoid : -# 1825| v1825_12(void) = AliasedUse : ~m1825_10 -# 1825| v1825_13(void) = ExitFunction : - -# 1827| constructor_only global_5 +# 1816| Block 6 +# 1816| v1816_1(void) = NoOp : +# 1817| r1817_1(glval) = VariableAddress[z2] : +# 1817| r1817_2(int) = Load[z2] : &:r1817_1, m1815_4 +# 1817| r1817_3(glval) = VariableAddress[x] : +# 1817| r1817_4(int) = Load[x] : &:r1817_3, m1812_7 +# 1817| r1817_5(int) = Add : r1817_4, r1817_2 +# 1817| m1817_6(int) = Store[x] : &:r1817_3, r1817_5 +# 1819| v1819_1(void) = NoOp : +# 1787| v1787_7(void) = ReturnVoid : +# 1787| v1787_8(void) = AliasedUse : m1787_3 +# 1787| v1787_9(void) = ExitFunction : + +# 1823| int global_2 +# 1823| Block 0 +# 1823| v1823_1(void) = EnterFunction : +# 1823| m1823_2(unknown) = AliasedDefinition : +# 1823| r1823_3(glval) = VariableAddress[global_2] : +# 1823| r1823_4(int) = Constant[1] : +# 1823| m1823_5(int) = Store[global_2] : &:r1823_3, r1823_4 +# 1823| m1823_6(unknown) = Chi : total:m1823_2, partial:m1823_5 +# 1823| v1823_7(void) = ReturnVoid : +# 1823| v1823_8(void) = AliasedUse : ~m1823_6 +# 1823| v1823_9(void) = ExitFunction : + +# 1827| constructor_only global_4 # 1827| Block 0 # 1827| v1827_1(void) = EnterFunction : # 1827| m1827_2(unknown) = AliasedDefinition : -# 1827| r1827_3(glval) = VariableAddress[global_5] : +# 1827| r1827_3(glval) = VariableAddress[global_4] : # 1827| r1827_4(glval) = FunctionAddress[constructor_only] : -# 1827| r1827_5(int) = Constant[2] : +# 1827| r1827_5(int) = Constant[1] : # 1827| v1827_6(void) = Call[constructor_only] : func:r1827_4, this:r1827_3, 0:r1827_5 # 1827| m1827_7(unknown) = ^CallSideEffect : ~m1827_2 # 1827| m1827_8(unknown) = Chi : total:m1827_2, partial:m1827_7 @@ -10641,49 +10625,65 @@ ir.cpp: # 1827| v1827_12(void) = AliasedUse : ~m1827_10 # 1827| v1827_13(void) = ExitFunction : -# 1829| char* global_string +# 1829| constructor_only global_5 # 1829| Block 0 -# 1829| v1829_1(void) = EnterFunction : -# 1829| m1829_2(unknown) = AliasedDefinition : -# 1829| r1829_3(glval) = VariableAddress[global_string] : -# 1829| r1829_4(glval) = StringConstant["global string"] : -# 1829| r1829_5(char *) = Convert : r1829_4 -# 1829| r1829_6(char *) = Convert : r1829_5 -# 1829| m1829_7(char *) = Store[global_string] : &:r1829_3, r1829_6 -# 1829| m1829_8(unknown) = Chi : total:m1829_2, partial:m1829_7 -# 1829| v1829_9(void) = ReturnVoid : -# 1829| v1829_10(void) = AliasedUse : ~m1829_8 -# 1829| v1829_11(void) = ExitFunction : - -# 1831| int global_6 +# 1829| v1829_1(void) = EnterFunction : +# 1829| m1829_2(unknown) = AliasedDefinition : +# 1829| r1829_3(glval) = VariableAddress[global_5] : +# 1829| r1829_4(glval) = FunctionAddress[constructor_only] : +# 1829| r1829_5(int) = Constant[2] : +# 1829| v1829_6(void) = Call[constructor_only] : func:r1829_4, this:r1829_3, 0:r1829_5 +# 1829| m1829_7(unknown) = ^CallSideEffect : ~m1829_2 +# 1829| m1829_8(unknown) = Chi : total:m1829_2, partial:m1829_7 +# 1829| m1829_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1829_3 +# 1829| m1829_10(unknown) = Chi : total:m1829_8, partial:m1829_9 +# 1829| v1829_11(void) = ReturnVoid : +# 1829| v1829_12(void) = AliasedUse : ~m1829_10 +# 1829| v1829_13(void) = ExitFunction : + +# 1831| char* global_string # 1831| Block 0 -# 1831| v1831_1(void) = EnterFunction : -# 1831| m1831_2(unknown) = AliasedDefinition : -# 1831| r1831_3(glval) = VariableAddress[global_6] : -# 1831| r1831_4(glval) = VariableAddress[global_2] : -# 1831| r1831_5(int) = Load[global_2] : &:r1831_4, ~m1831_2 -# 1831| m1831_6(int) = Store[global_6] : &:r1831_3, r1831_5 -# 1831| m1831_7(unknown) = Chi : total:m1831_2, partial:m1831_6 -# 1831| v1831_8(void) = ReturnVoid : -# 1831| v1831_9(void) = AliasedUse : ~m1831_7 -# 1831| v1831_10(void) = ExitFunction : - -# 1834| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1834| Block 0 -# 1834| v1834_1(void) = EnterFunction : -# 1834| m1834_2(unknown) = AliasedDefinition : -# 1834| m1834_3(unknown) = InitializeNonLocal : -# 1834| m1834_4(unknown) = Chi : total:m1834_2, partial:m1834_3 -# 1834| r1834_5(glval) = VariableAddress[#this] : -# 1834| m1834_6(glval) = InitializeParameter[#this] : &:r1834_5 -# 1834| r1834_7(glval) = Load[#this] : &:r1834_5, m1834_6 -# 1834| m1834_8(A) = InitializeIndirection[#this] : &:r1834_7 +# 1831| v1831_1(void) = EnterFunction : +# 1831| m1831_2(unknown) = AliasedDefinition : +# 1831| r1831_3(glval) = VariableAddress[global_string] : +# 1831| r1831_4(glval) = StringConstant["global string"] : +# 1831| r1831_5(char *) = Convert : r1831_4 +# 1831| r1831_6(char *) = Convert : r1831_5 +# 1831| m1831_7(char *) = Store[global_string] : &:r1831_3, r1831_6 +# 1831| m1831_8(unknown) = Chi : total:m1831_2, partial:m1831_7 +# 1831| v1831_9(void) = ReturnVoid : +# 1831| v1831_10(void) = AliasedUse : ~m1831_8 +# 1831| v1831_11(void) = ExitFunction : + +# 1833| int global_6 +# 1833| Block 0 +# 1833| v1833_1(void) = EnterFunction : +# 1833| m1833_2(unknown) = AliasedDefinition : +# 1833| r1833_3(glval) = VariableAddress[global_6] : +# 1833| r1833_4(glval) = VariableAddress[global_2] : +# 1833| r1833_5(int) = Load[global_2] : &:r1833_4, ~m1833_2 +# 1833| m1833_6(int) = Store[global_6] : &:r1833_3, r1833_5 +# 1833| m1833_7(unknown) = Chi : total:m1833_2, partial:m1833_6 +# 1833| v1833_8(void) = ReturnVoid : +# 1833| v1833_9(void) = AliasedUse : ~m1833_7 +# 1833| v1833_10(void) = ExitFunction : + +# 1836| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1836| Block 0 +# 1836| v1836_1(void) = EnterFunction : +# 1836| m1836_2(unknown) = AliasedDefinition : +# 1836| m1836_3(unknown) = InitializeNonLocal : +# 1836| m1836_4(unknown) = Chi : total:m1836_2, partial:m1836_3 +# 1836| r1836_5(glval) = VariableAddress[#this] : +# 1836| m1836_6(glval) = InitializeParameter[#this] : &:r1836_5 +# 1836| r1836_7(glval) = Load[#this] : &:r1836_5, m1836_6 +# 1836| m1836_8(A) = InitializeIndirection[#this] : &:r1836_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(A &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(A &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 #-----| r0_5(glval) = VariableAddress[#this] : -#-----| r0_6(A *) = Load[#this] : &:r0_5, m1834_6 +#-----| r0_6(A *) = Load[#this] : &:r0_5, m1836_6 #-----| r0_7(glval[1]>) = FieldAddress[e] : r0_6 #-----| r0_8(glval) = VariableAddress[(unnamed parameter 0)] : #-----| r0_9(A &&) = Load[(unnamed parameter 0)] : &:r0_8, m0_2 @@ -10691,1787 +10691,1941 @@ ir.cpp: #-----| r0_11(glval[1]>) = FieldAddress[e] : r0_10 #-----| r0_12(enum [1]) = Load[?] : &:r0_11, ~m0_4 #-----| m0_13(enum [1]) = Store[?] : &:r0_7, r0_12 -#-----| m0_14(unknown) = Chi : total:m1834_8, partial:m0_13 +#-----| m0_14(unknown) = Chi : total:m1836_8, partial:m0_13 #-----| r0_15(glval) = VariableAddress[#return] : #-----| r0_16(glval) = VariableAddress[#this] : -#-----| r0_17(A *) = Load[#this] : &:r0_16, m1834_6 +#-----| r0_17(A *) = Load[#this] : &:r0_16, m1836_6 #-----| r0_18(glval) = CopyValue : r0_17 #-----| r0_19(A &) = CopyValue : r0_18 #-----| m0_20(A &) = Store[#return] : &:r0_15, r0_19 -# 1834| v1834_9(void) = ReturnIndirection[#this] : &:r1834_7, m0_14 +# 1836| v1836_9(void) = ReturnIndirection[#this] : &:r1836_7, m0_14 #-----| v0_21(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1834| r1834_10(glval) = VariableAddress[#return] : -# 1834| v1834_11(void) = ReturnValue : &:r1834_10, m0_20 -# 1834| v1834_12(void) = AliasedUse : m1834_3 -# 1834| v1834_13(void) = ExitFunction : - -# 1839| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1839| Block 0 -# 1839| v1839_1(void) = EnterFunction : -# 1839| m1839_2(unknown) = AliasedDefinition : -# 1839| m1839_3(unknown) = InitializeNonLocal : -# 1839| m1839_4(unknown) = Chi : total:m1839_2, partial:m1839_3 -# 1839| r1839_5(glval) = VariableAddress[#this] : -# 1839| m1839_6(glval) = InitializeParameter[#this] : &:r1839_5 -# 1839| r1839_7(glval) = Load[#this] : &:r1839_5, m1839_6 -# 1839| m1839_8(B) = InitializeIndirection[#this] : &:r1839_7 +# 1836| r1836_10(glval) = VariableAddress[#return] : +# 1836| v1836_11(void) = ReturnValue : &:r1836_10, m0_20 +# 1836| v1836_12(void) = AliasedUse : m1836_3 +# 1836| v1836_13(void) = ExitFunction : + +# 1841| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1841| Block 0 +# 1841| v1841_1(void) = EnterFunction : +# 1841| m1841_2(unknown) = AliasedDefinition : +# 1841| m1841_3(unknown) = InitializeNonLocal : +# 1841| m1841_4(unknown) = Chi : total:m1841_2, partial:m1841_3 +# 1841| r1841_5(glval) = VariableAddress[#this] : +# 1841| m1841_6(glval) = InitializeParameter[#this] : &:r1841_5 +# 1841| r1841_7(glval) = Load[#this] : &:r1841_5, m1841_6 +# 1841| m1841_8(B) = InitializeIndirection[#this] : &:r1841_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(B &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(B &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1839| r1839_9(glval) = VariableAddress[#this] : -# 1839| r1839_10(B *) = Load[#this] : &:r1839_9, m1839_6 -#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1839_10 -# 1839| r1839_11(glval) = FunctionAddress[operator=] : -# 1839| r1839_12(glval) = VariableAddress[(unnamed parameter 0)] : -# 1839| r1839_13(B &&) = Load[(unnamed parameter 0)] : &:r1839_12, m0_2 -#-----| r0_6(glval) = CopyValue : r1839_13 -# 1839| r1839_14(B *) = CopyValue : r0_6 -#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1839_14 -# 1839| r1839_15(glval) = CopyValue : r0_7 -#-----| r0_8(A &) = CopyValue : r1839_15 -# 1839| r1839_16(A &) = Call[operator=] : func:r1839_11, this:r0_5, 0:r0_8 -# 1839| m1839_17(unknown) = ^CallSideEffect : ~m1839_4 -# 1839| m1839_18(unknown) = Chi : total:m1839_4, partial:m1839_17 -#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m1839_8 +# 1841| r1841_9(glval) = VariableAddress[#this] : +# 1841| r1841_10(B *) = Load[#this] : &:r1841_9, m1841_6 +#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1841_10 +# 1841| r1841_11(glval) = FunctionAddress[operator=] : +# 1841| r1841_12(glval) = VariableAddress[(unnamed parameter 0)] : +# 1841| r1841_13(B &&) = Load[(unnamed parameter 0)] : &:r1841_12, m0_2 +#-----| r0_6(glval) = CopyValue : r1841_13 +# 1841| r1841_14(B *) = CopyValue : r0_6 +#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1841_14 +# 1841| r1841_15(glval) = CopyValue : r0_7 +#-----| r0_8(A &) = CopyValue : r1841_15 +# 1841| r1841_16(A &) = Call[operator=] : func:r1841_11, this:r0_5, 0:r0_8 +# 1841| m1841_17(unknown) = ^CallSideEffect : ~m1841_4 +# 1841| m1841_18(unknown) = Chi : total:m1841_4, partial:m1841_17 +#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m1841_8 #-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_8, ~m0_4 #-----| m0_11(A) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 -#-----| m0_12(unknown) = Chi : total:m1839_8, partial:m0_11 +#-----| m0_12(unknown) = Chi : total:m1841_8, partial:m0_11 #-----| m0_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_8 #-----| m0_14(unknown) = Chi : total:m0_4, partial:m0_13 -#-----| r0_15(glval) = CopyValue : r1839_16 +#-----| r0_15(glval) = CopyValue : r1841_16 #-----| r0_16(glval) = VariableAddress[#return] : #-----| r0_17(glval) = VariableAddress[#this] : -#-----| r0_18(B *) = Load[#this] : &:r0_17, m1839_6 +#-----| r0_18(B *) = Load[#this] : &:r0_17, m1841_6 #-----| r0_19(glval) = CopyValue : r0_18 #-----| r0_20(B &) = CopyValue : r0_19 #-----| m0_21(B &) = Store[#return] : &:r0_16, r0_20 -# 1839| v1839_19(void) = ReturnIndirection[#this] : &:r1839_7, m0_12 +# 1841| v1841_19(void) = ReturnIndirection[#this] : &:r1841_7, m0_12 #-----| v0_22(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_14 -# 1839| r1839_20(glval) = VariableAddress[#return] : -# 1839| v1839_21(void) = ReturnValue : &:r1839_20, m0_21 -# 1839| v1839_22(void) = AliasedUse : ~m1839_18 -# 1839| v1839_23(void) = ExitFunction : - -# 1843| void block_assignment::foo() -# 1843| Block 0 -# 1843| v1843_1(void) = EnterFunction : -# 1843| m1843_2(unknown) = AliasedDefinition : -# 1843| m1843_3(unknown) = InitializeNonLocal : -# 1843| m1843_4(unknown) = Chi : total:m1843_2, partial:m1843_3 -# 1844| r1844_1(glval) = VariableAddress[v] : -# 1844| m1844_2(B) = Uninitialized[v] : &:r1844_1 -# 1844| r1844_3(glval) = FunctionAddress[B] : -# 1844| r1844_4(A *) = Constant[0] : -# 1844| v1844_5(void) = Call[B] : func:r1844_3, this:r1844_1, 0:r1844_4 -# 1844| m1844_6(unknown) = ^CallSideEffect : ~m1843_4 -# 1844| m1844_7(unknown) = Chi : total:m1843_4, partial:m1844_6 -# 1844| v1844_8(void) = ^BufferReadSideEffect[0] : &:r1844_4, ~m1844_7 -# 1844| m1844_9(B) = ^IndirectMayWriteSideEffect[-1] : &:r1844_1 -# 1844| m1844_10(B) = Chi : total:m1844_2, partial:m1844_9 -# 1844| m1844_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1844_4 -# 1844| m1844_12(unknown) = Chi : total:m1844_7, partial:m1844_11 -# 1845| r1845_1(glval) = VariableAddress[v] : -# 1845| r1845_2(glval) = FunctionAddress[operator=] : -# 1845| r1845_3(glval) = VariableAddress[#temp1845:13] : -# 1845| m1845_4(B) = Uninitialized[#temp1845:13] : &:r1845_3 -# 1845| r1845_5(glval) = FunctionAddress[B] : -# 1845| r1845_6(A *) = Constant[0] : -# 1845| v1845_7(void) = Call[B] : func:r1845_5, this:r1845_3, 0:r1845_6 -# 1845| m1845_8(unknown) = ^CallSideEffect : ~m1844_12 -# 1845| m1845_9(unknown) = Chi : total:m1844_12, partial:m1845_8 -# 1845| v1845_10(void) = ^BufferReadSideEffect[0] : &:r1845_6, ~m1845_9 -# 1845| m1845_11(B) = ^IndirectMayWriteSideEffect[-1] : &:r1845_3 -# 1845| m1845_12(B) = Chi : total:m1845_4, partial:m1845_11 -# 1845| m1845_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1845_6 -# 1845| m1845_14(unknown) = Chi : total:m1845_9, partial:m1845_13 -# 1845| r1845_15(B &) = CopyValue : r1845_3 -# 1845| r1845_16(B &) = Call[operator=] : func:r1845_2, this:r1845_1, 0:r1845_15 -# 1845| m1845_17(unknown) = ^CallSideEffect : ~m1845_14 -# 1845| m1845_18(unknown) = Chi : total:m1845_14, partial:m1845_17 -# 1845| v1845_19(void) = ^IndirectReadSideEffect[-1] : &:r1845_1, m1844_10 -# 1845| v1845_20(void) = ^BufferReadSideEffect[0] : &:r1845_15, ~m1845_12 -# 1845| m1845_21(B) = ^IndirectMayWriteSideEffect[-1] : &:r1845_1 -# 1845| m1845_22(B) = Chi : total:m1844_10, partial:m1845_21 -# 1845| m1845_23(unknown) = ^BufferMayWriteSideEffect[0] : &:r1845_15 -# 1845| m1845_24(B) = Chi : total:m1845_12, partial:m1845_23 -# 1845| r1845_25(glval) = CopyValue : r1845_16 -# 1846| v1846_1(void) = NoOp : -# 1843| v1843_5(void) = ReturnVoid : -# 1843| v1843_6(void) = AliasedUse : ~m1845_18 -# 1843| v1843_7(void) = ExitFunction : - -# 1849| void magicvars() -# 1849| Block 0 -# 1849| v1849_1(void) = EnterFunction : -# 1849| m1849_2(unknown) = AliasedDefinition : -# 1849| m1849_3(unknown) = InitializeNonLocal : -# 1849| m1849_4(unknown) = Chi : total:m1849_2, partial:m1849_3 -# 1850| r1850_1(glval) = VariableAddress[pf] : -# 1850| r1850_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : -# 1850| r1850_3(char *) = Convert : r1850_2 -# 1850| m1850_4(char *) = Store[pf] : &:r1850_1, r1850_3 -# 1851| r1851_1(glval) = VariableAddress[strfunc] : -# 1851| r1851_2(glval) = VariableAddress[__func__] : -# 1851| r1851_3(char *) = Convert : r1851_2 -# 1851| m1851_4(char *) = Store[strfunc] : &:r1851_1, r1851_3 -# 1852| v1852_1(void) = NoOp : -# 1849| v1849_5(void) = ReturnVoid : -# 1849| v1849_6(void) = AliasedUse : m1849_3 -# 1849| v1849_7(void) = ExitFunction : - -# 1862| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1862| Block 0 -# 1862| v1862_1(void) = EnterFunction : -# 1862| m1862_2(unknown) = AliasedDefinition : -# 1862| m1862_3(unknown) = InitializeNonLocal : -# 1862| m1862_4(unknown) = Chi : total:m1862_2, partial:m1862_3 -# 1862| r1862_5(glval) = VariableAddress[#this] : -# 1862| m1862_6(glval>) = InitializeParameter[#this] : &:r1862_5 -# 1862| r1862_7(glval>) = Load[#this] : &:r1862_5, m1862_6 -# 1862| m1862_8(Bar1) = InitializeIndirection[#this] : &:r1862_7 -# 1862| r1862_9(glval) = VariableAddress[p] : -# 1862| m1862_10(S *) = InitializeParameter[p] : &:r1862_9 -# 1862| r1862_11(S *) = Load[p] : &:r1862_9, m1862_10 -# 1862| m1862_12(unknown) = InitializeIndirection[p] : &:r1862_11 -# 1864| r1864_1(glval) = VariableAddress[#return] : -# 1864| r1864_2(glval) = VariableAddress[p] : -# 1864| r1864_3(S *) = Load[p] : &:r1864_2, m1862_10 -# 1864| r1864_4(void *) = Convert : r1864_3 -# 1864| m1864_5(void *) = Store[#return] : &:r1864_1, r1864_4 -# 1862| v1862_13(void) = ReturnIndirection[#this] : &:r1862_7, m1862_8 -# 1862| v1862_14(void) = ReturnIndirection[p] : &:r1862_11, m1862_12 -# 1862| r1862_15(glval) = VariableAddress[#return] : -# 1862| v1862_16(void) = ReturnValue : &:r1862_15, m1864_5 -# 1862| v1862_17(void) = AliasedUse : m1862_3 -# 1862| v1862_18(void) = ExitFunction : - -# 1868| void missing_declaration_entries::test1() -# 1868| Block 0 -# 1868| v1868_1(void) = EnterFunction : -# 1868| m1868_2(unknown) = AliasedDefinition : -# 1868| m1868_3(unknown) = InitializeNonLocal : -# 1868| m1868_4(unknown) = Chi : total:m1868_2, partial:m1868_3 -# 1869| r1869_1(glval>) = VariableAddress[b] : -# 1869| m1869_2(Bar1) = Uninitialized[b] : &:r1869_1 -# 1870| r1870_1(glval>) = VariableAddress[b] : -# 1870| r1870_2(glval) = FunctionAddress[missing_type_decl_entry] : -# 1870| r1870_3(S *) = Constant[0] : -# 1870| r1870_4(void *) = Call[missing_type_decl_entry] : func:r1870_2, this:r1870_1, 0:r1870_3 -# 1870| m1870_5(unknown) = ^CallSideEffect : ~m1868_4 -# 1870| m1870_6(unknown) = Chi : total:m1868_4, partial:m1870_5 -# 1870| v1870_7(void) = ^IndirectReadSideEffect[-1] : &:r1870_1, m1869_2 -# 1870| v1870_8(void) = ^BufferReadSideEffect[0] : &:r1870_3, ~m1870_6 -# 1870| m1870_9(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1870_1 -# 1870| m1870_10(Bar1) = Chi : total:m1869_2, partial:m1870_9 -# 1870| m1870_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1870_3 -# 1870| m1870_12(unknown) = Chi : total:m1870_6, partial:m1870_11 -# 1871| v1871_1(void) = NoOp : -# 1868| v1868_5(void) = ReturnVoid : -# 1868| v1868_6(void) = AliasedUse : ~m1870_12 -# 1868| v1868_7(void) = ExitFunction : - -# 1875| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1875| Block 0 -# 1875| v1875_1(void) = EnterFunction : -# 1875| m1875_2(unknown) = AliasedDefinition : -# 1875| m1875_3(unknown) = InitializeNonLocal : -# 1875| m1875_4(unknown) = Chi : total:m1875_2, partial:m1875_3 -# 1875| r1875_5(glval) = VariableAddress[#this] : -# 1875| m1875_6(glval>) = InitializeParameter[#this] : &:r1875_5 -# 1875| r1875_7(glval>) = Load[#this] : &:r1875_5, m1875_6 -# 1875| m1875_8(Bar2) = InitializeIndirection[#this] : &:r1875_7 -# 1876| r1876_1(glval) = VariableAddress[x] : -# 1876| m1876_2(int[10]) = Uninitialized[x] : &:r1876_1 -# 1876| r1876_3(glval) = VariableAddress[y] : -# 1876| m1876_4(int[10]) = Uninitialized[y] : &:r1876_3 -# 1877| r1877_1(int) = Constant[10] : -# 1877| r1877_2(glval) = VariableAddress[x] : -# 1877| r1877_3(int *) = Convert : r1877_2 -# 1877| r1877_4(glval) = CopyValue : r1877_3 -# 1877| m1877_5(int) = Store[?] : &:r1877_4, r1877_1 -# 1877| m1877_6(int[10]) = Chi : total:m1876_2, partial:m1877_5 -# 1878| r1878_1(int) = Constant[10] : -# 1878| r1878_2(glval) = VariableAddress[y] : -# 1878| r1878_3(int *) = Convert : r1878_2 -# 1878| r1878_4(glval) = CopyValue : r1878_3 -# 1878| m1878_5(int) = Store[?] : &:r1878_4, r1878_1 -# 1878| m1878_6(int[10]) = Chi : total:m1876_4, partial:m1878_5 -# 1879| r1879_1(glval) = VariableAddress[#return] : +# 1841| r1841_20(glval) = VariableAddress[#return] : +# 1841| v1841_21(void) = ReturnValue : &:r1841_20, m0_21 +# 1841| v1841_22(void) = AliasedUse : ~m1841_18 +# 1841| v1841_23(void) = ExitFunction : + +# 1845| void block_assignment::foo() +# 1845| Block 0 +# 1845| v1845_1(void) = EnterFunction : +# 1845| m1845_2(unknown) = AliasedDefinition : +# 1845| m1845_3(unknown) = InitializeNonLocal : +# 1845| m1845_4(unknown) = Chi : total:m1845_2, partial:m1845_3 +# 1846| r1846_1(glval) = VariableAddress[v] : +# 1846| m1846_2(B) = Uninitialized[v] : &:r1846_1 +# 1846| r1846_3(glval) = FunctionAddress[B] : +# 1846| r1846_4(A *) = Constant[0] : +# 1846| v1846_5(void) = Call[B] : func:r1846_3, this:r1846_1, 0:r1846_4 +# 1846| m1846_6(unknown) = ^CallSideEffect : ~m1845_4 +# 1846| m1846_7(unknown) = Chi : total:m1845_4, partial:m1846_6 +# 1846| v1846_8(void) = ^BufferReadSideEffect[0] : &:r1846_4, ~m1846_7 +# 1846| m1846_9(B) = ^IndirectMayWriteSideEffect[-1] : &:r1846_1 +# 1846| m1846_10(B) = Chi : total:m1846_2, partial:m1846_9 +# 1846| m1846_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1846_4 +# 1846| m1846_12(unknown) = Chi : total:m1846_7, partial:m1846_11 +# 1847| r1847_1(glval) = VariableAddress[v] : +# 1847| r1847_2(glval) = FunctionAddress[operator=] : +# 1847| r1847_3(glval) = VariableAddress[#temp1847:13] : +# 1847| m1847_4(B) = Uninitialized[#temp1847:13] : &:r1847_3 +# 1847| r1847_5(glval) = FunctionAddress[B] : +# 1847| r1847_6(A *) = Constant[0] : +# 1847| v1847_7(void) = Call[B] : func:r1847_5, this:r1847_3, 0:r1847_6 +# 1847| m1847_8(unknown) = ^CallSideEffect : ~m1846_12 +# 1847| m1847_9(unknown) = Chi : total:m1846_12, partial:m1847_8 +# 1847| v1847_10(void) = ^BufferReadSideEffect[0] : &:r1847_6, ~m1847_9 +# 1847| m1847_11(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_3 +# 1847| m1847_12(B) = Chi : total:m1847_4, partial:m1847_11 +# 1847| m1847_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_6 +# 1847| m1847_14(unknown) = Chi : total:m1847_9, partial:m1847_13 +# 1847| r1847_15(B &) = CopyValue : r1847_3 +# 1847| r1847_16(B &) = Call[operator=] : func:r1847_2, this:r1847_1, 0:r1847_15 +# 1847| m1847_17(unknown) = ^CallSideEffect : ~m1847_14 +# 1847| m1847_18(unknown) = Chi : total:m1847_14, partial:m1847_17 +# 1847| v1847_19(void) = ^IndirectReadSideEffect[-1] : &:r1847_1, m1846_10 +# 1847| v1847_20(void) = ^BufferReadSideEffect[0] : &:r1847_15, ~m1847_12 +# 1847| m1847_21(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_1 +# 1847| m1847_22(B) = Chi : total:m1846_10, partial:m1847_21 +# 1847| m1847_23(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_15 +# 1847| m1847_24(B) = Chi : total:m1847_12, partial:m1847_23 +# 1847| r1847_25(glval) = CopyValue : r1847_16 +# 1848| v1848_1(void) = NoOp : +# 1845| v1845_5(void) = ReturnVoid : +# 1845| v1845_6(void) = AliasedUse : ~m1847_18 +# 1845| v1845_7(void) = ExitFunction : + +# 1851| void magicvars() +# 1851| Block 0 +# 1851| v1851_1(void) = EnterFunction : +# 1851| m1851_2(unknown) = AliasedDefinition : +# 1851| m1851_3(unknown) = InitializeNonLocal : +# 1851| m1851_4(unknown) = Chi : total:m1851_2, partial:m1851_3 +# 1852| r1852_1(glval) = VariableAddress[pf] : +# 1852| r1852_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : +# 1852| r1852_3(char *) = Convert : r1852_2 +# 1852| m1852_4(char *) = Store[pf] : &:r1852_1, r1852_3 +# 1853| r1853_1(glval) = VariableAddress[strfunc] : +# 1853| r1853_2(glval) = VariableAddress[__func__] : +# 1853| r1853_3(char *) = Convert : r1853_2 +# 1853| m1853_4(char *) = Store[strfunc] : &:r1853_1, r1853_3 +# 1854| v1854_1(void) = NoOp : +# 1851| v1851_5(void) = ReturnVoid : +# 1851| v1851_6(void) = AliasedUse : m1851_3 +# 1851| v1851_7(void) = ExitFunction : + +# 1864| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1864| Block 0 +# 1864| v1864_1(void) = EnterFunction : +# 1864| m1864_2(unknown) = AliasedDefinition : +# 1864| m1864_3(unknown) = InitializeNonLocal : +# 1864| m1864_4(unknown) = Chi : total:m1864_2, partial:m1864_3 +# 1864| r1864_5(glval) = VariableAddress[#this] : +# 1864| m1864_6(glval>) = InitializeParameter[#this] : &:r1864_5 +# 1864| r1864_7(glval>) = Load[#this] : &:r1864_5, m1864_6 +# 1864| m1864_8(Bar1) = InitializeIndirection[#this] : &:r1864_7 +# 1864| r1864_9(glval) = VariableAddress[p] : +# 1864| m1864_10(S *) = InitializeParameter[p] : &:r1864_9 +# 1864| r1864_11(S *) = Load[p] : &:r1864_9, m1864_10 +# 1864| m1864_12(unknown) = InitializeIndirection[p] : &:r1864_11 +# 1866| r1866_1(glval) = VariableAddress[#return] : +# 1866| r1866_2(glval) = VariableAddress[p] : +# 1866| r1866_3(S *) = Load[p] : &:r1866_2, m1864_10 +# 1866| r1866_4(void *) = Convert : r1866_3 +# 1866| m1866_5(void *) = Store[#return] : &:r1866_1, r1866_4 +# 1864| v1864_13(void) = ReturnIndirection[#this] : &:r1864_7, m1864_8 +# 1864| v1864_14(void) = ReturnIndirection[p] : &:r1864_11, m1864_12 +# 1864| r1864_15(glval) = VariableAddress[#return] : +# 1864| v1864_16(void) = ReturnValue : &:r1864_15, m1866_5 +# 1864| v1864_17(void) = AliasedUse : m1864_3 +# 1864| v1864_18(void) = ExitFunction : + +# 1870| void missing_declaration_entries::test1() +# 1870| Block 0 +# 1870| v1870_1(void) = EnterFunction : +# 1870| m1870_2(unknown) = AliasedDefinition : +# 1870| m1870_3(unknown) = InitializeNonLocal : +# 1870| m1870_4(unknown) = Chi : total:m1870_2, partial:m1870_3 +# 1871| r1871_1(glval>) = VariableAddress[b] : +# 1871| m1871_2(Bar1) = Uninitialized[b] : &:r1871_1 +# 1872| r1872_1(glval>) = VariableAddress[b] : +# 1872| r1872_2(glval) = FunctionAddress[missing_type_decl_entry] : +# 1872| r1872_3(S *) = Constant[0] : +# 1872| r1872_4(void *) = Call[missing_type_decl_entry] : func:r1872_2, this:r1872_1, 0:r1872_3 +# 1872| m1872_5(unknown) = ^CallSideEffect : ~m1870_4 +# 1872| m1872_6(unknown) = Chi : total:m1870_4, partial:m1872_5 +# 1872| v1872_7(void) = ^IndirectReadSideEffect[-1] : &:r1872_1, m1871_2 +# 1872| v1872_8(void) = ^BufferReadSideEffect[0] : &:r1872_3, ~m1872_6 +# 1872| m1872_9(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1872_1 +# 1872| m1872_10(Bar1) = Chi : total:m1871_2, partial:m1872_9 +# 1872| m1872_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1872_3 +# 1872| m1872_12(unknown) = Chi : total:m1872_6, partial:m1872_11 +# 1873| v1873_1(void) = NoOp : +# 1870| v1870_5(void) = ReturnVoid : +# 1870| v1870_6(void) = AliasedUse : ~m1872_12 +# 1870| v1870_7(void) = ExitFunction : + +# 1877| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1877| Block 0 +# 1877| v1877_1(void) = EnterFunction : +# 1877| m1877_2(unknown) = AliasedDefinition : +# 1877| m1877_3(unknown) = InitializeNonLocal : +# 1877| m1877_4(unknown) = Chi : total:m1877_2, partial:m1877_3 +# 1877| r1877_5(glval) = VariableAddress[#this] : +# 1877| m1877_6(glval>) = InitializeParameter[#this] : &:r1877_5 +# 1877| r1877_7(glval>) = Load[#this] : &:r1877_5, m1877_6 +# 1877| m1877_8(Bar2) = InitializeIndirection[#this] : &:r1877_7 +# 1878| r1878_1(glval) = VariableAddress[x] : +# 1878| m1878_2(int[10]) = Uninitialized[x] : &:r1878_1 +# 1878| r1878_3(glval) = VariableAddress[y] : +# 1878| m1878_4(int[10]) = Uninitialized[y] : &:r1878_3 +# 1879| r1879_1(int) = Constant[10] : # 1879| r1879_2(glval) = VariableAddress[x] : # 1879| r1879_3(int *) = Convert : r1879_2 -# 1879| r1879_4(int) = Load[?] : &:r1879_3, m1877_5 -# 1879| r1879_5(glval) = VariableAddress[y] : -# 1879| r1879_6(int *) = Convert : r1879_5 -# 1879| r1879_7(int) = Load[?] : &:r1879_6, m1878_5 -# 1879| r1879_8(int) = Add : r1879_4, r1879_7 -# 1879| m1879_9(int) = Store[#return] : &:r1879_1, r1879_8 -# 1875| v1875_9(void) = ReturnIndirection[#this] : &:r1875_7, m1875_8 -# 1875| r1875_10(glval) = VariableAddress[#return] : -# 1875| v1875_11(void) = ReturnValue : &:r1875_10, m1879_9 -# 1875| v1875_12(void) = AliasedUse : m1875_3 -# 1875| v1875_13(void) = ExitFunction : - -# 1883| void missing_declaration_entries::test2() -# 1883| Block 0 -# 1883| v1883_1(void) = EnterFunction : -# 1883| m1883_2(unknown) = AliasedDefinition : -# 1883| m1883_3(unknown) = InitializeNonLocal : -# 1883| m1883_4(unknown) = Chi : total:m1883_2, partial:m1883_3 -# 1884| r1884_1(glval>) = VariableAddress[b] : -# 1884| m1884_2(Bar2) = Uninitialized[b] : &:r1884_1 -# 1885| r1885_1(glval>) = VariableAddress[b] : -# 1885| r1885_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : -# 1885| r1885_3(int) = Call[two_missing_variable_declaration_entries] : func:r1885_2, this:r1885_1 -# 1885| m1885_4(unknown) = ^CallSideEffect : ~m1883_4 -# 1885| m1885_5(unknown) = Chi : total:m1883_4, partial:m1885_4 -# 1885| v1885_6(void) = ^IndirectReadSideEffect[-1] : &:r1885_1, m1884_2 -# 1885| m1885_7(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1885_1 -# 1885| m1885_8(Bar2) = Chi : total:m1884_2, partial:m1885_7 -# 1886| v1886_1(void) = NoOp : -# 1883| v1883_5(void) = ReturnVoid : -# 1883| v1883_6(void) = AliasedUse : ~m1885_5 -# 1883| v1883_7(void) = ExitFunction : - -# 1889| char global_template -# 1889| Block 0 -# 1889| v1889_1(void) = EnterFunction : -# 1889| m1889_2(unknown) = AliasedDefinition : -# 1889| r1889_3(glval) = VariableAddress[global_template] : -# 1889| r1889_4(char) = Constant[42] : -# 1889| m1889_5(char) = Store[global_template] : &:r1889_3, r1889_4 -# 1889| m1889_6(unknown) = Chi : total:m1889_2, partial:m1889_5 -# 1889| v1889_7(void) = ReturnVoid : -# 1889| v1889_8(void) = AliasedUse : ~m1889_6 -# 1889| v1889_9(void) = ExitFunction : - -# 1889| int global_template -# 1889| Block 0 -# 1889| v1889_1(void) = EnterFunction : -# 1889| m1889_2(unknown) = AliasedDefinition : -# 1889| r1889_3(glval) = VariableAddress[global_template] : -# 1889| r1889_4(int) = Constant[42] : -# 1889| m1889_5(int) = Store[global_template] : &:r1889_3, r1889_4 -# 1889| m1889_6(unknown) = Chi : total:m1889_2, partial:m1889_5 -# 1889| v1889_7(void) = ReturnVoid : -# 1889| v1889_8(void) = AliasedUse : ~m1889_6 -# 1889| v1889_9(void) = ExitFunction : - -# 1891| int test_global_template_int() +# 1879| r1879_4(glval) = CopyValue : r1879_3 +# 1879| m1879_5(int) = Store[?] : &:r1879_4, r1879_1 +# 1879| m1879_6(int[10]) = Chi : total:m1878_2, partial:m1879_5 +# 1880| r1880_1(int) = Constant[10] : +# 1880| r1880_2(glval) = VariableAddress[y] : +# 1880| r1880_3(int *) = Convert : r1880_2 +# 1880| r1880_4(glval) = CopyValue : r1880_3 +# 1880| m1880_5(int) = Store[?] : &:r1880_4, r1880_1 +# 1880| m1880_6(int[10]) = Chi : total:m1878_4, partial:m1880_5 +# 1881| r1881_1(glval) = VariableAddress[#return] : +# 1881| r1881_2(glval) = VariableAddress[x] : +# 1881| r1881_3(int *) = Convert : r1881_2 +# 1881| r1881_4(int) = Load[?] : &:r1881_3, m1879_5 +# 1881| r1881_5(glval) = VariableAddress[y] : +# 1881| r1881_6(int *) = Convert : r1881_5 +# 1881| r1881_7(int) = Load[?] : &:r1881_6, m1880_5 +# 1881| r1881_8(int) = Add : r1881_4, r1881_7 +# 1881| m1881_9(int) = Store[#return] : &:r1881_1, r1881_8 +# 1877| v1877_9(void) = ReturnIndirection[#this] : &:r1877_7, m1877_8 +# 1877| r1877_10(glval) = VariableAddress[#return] : +# 1877| v1877_11(void) = ReturnValue : &:r1877_10, m1881_9 +# 1877| v1877_12(void) = AliasedUse : m1877_3 +# 1877| v1877_13(void) = ExitFunction : + +# 1885| void missing_declaration_entries::test2() +# 1885| Block 0 +# 1885| v1885_1(void) = EnterFunction : +# 1885| m1885_2(unknown) = AliasedDefinition : +# 1885| m1885_3(unknown) = InitializeNonLocal : +# 1885| m1885_4(unknown) = Chi : total:m1885_2, partial:m1885_3 +# 1886| r1886_1(glval>) = VariableAddress[b] : +# 1886| m1886_2(Bar2) = Uninitialized[b] : &:r1886_1 +# 1887| r1887_1(glval>) = VariableAddress[b] : +# 1887| r1887_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : +# 1887| r1887_3(int) = Call[two_missing_variable_declaration_entries] : func:r1887_2, this:r1887_1 +# 1887| m1887_4(unknown) = ^CallSideEffect : ~m1885_4 +# 1887| m1887_5(unknown) = Chi : total:m1885_4, partial:m1887_4 +# 1887| v1887_6(void) = ^IndirectReadSideEffect[-1] : &:r1887_1, m1886_2 +# 1887| m1887_7(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1887_1 +# 1887| m1887_8(Bar2) = Chi : total:m1886_2, partial:m1887_7 +# 1888| v1888_1(void) = NoOp : +# 1885| v1885_5(void) = ReturnVoid : +# 1885| v1885_6(void) = AliasedUse : ~m1887_5 +# 1885| v1885_7(void) = ExitFunction : + +# 1891| char global_template # 1891| Block 0 # 1891| v1891_1(void) = EnterFunction : # 1891| m1891_2(unknown) = AliasedDefinition : -# 1891| m1891_3(unknown) = InitializeNonLocal : -# 1891| m1891_4(unknown) = Chi : total:m1891_2, partial:m1891_3 -# 1892| r1892_1(glval) = VariableAddress[local_int] : -# 1892| r1892_2(glval) = VariableAddress[global_template] : -# 1892| r1892_3(int) = Load[global_template] : &:r1892_2, ~m1891_3 -# 1892| m1892_4(int) = Store[local_int] : &:r1892_1, r1892_3 -# 1893| r1893_1(glval) = VariableAddress[local_char] : -# 1893| r1893_2(glval) = VariableAddress[global_template] : -# 1893| r1893_3(char) = Load[global_template] : &:r1893_2, ~m1891_3 -# 1893| m1893_4(char) = Store[local_char] : &:r1893_1, r1893_3 -# 1894| r1894_1(glval) = VariableAddress[#return] : -# 1894| r1894_2(glval) = VariableAddress[local_int] : -# 1894| r1894_3(int) = Load[local_int] : &:r1894_2, m1892_4 -# 1894| r1894_4(glval) = VariableAddress[local_char] : -# 1894| r1894_5(char) = Load[local_char] : &:r1894_4, m1893_4 -# 1894| r1894_6(int) = Convert : r1894_5 -# 1894| r1894_7(int) = Add : r1894_3, r1894_6 -# 1894| m1894_8(int) = Store[#return] : &:r1894_1, r1894_7 -# 1891| r1891_5(glval) = VariableAddress[#return] : -# 1891| v1891_6(void) = ReturnValue : &:r1891_5, m1894_8 -# 1891| v1891_7(void) = AliasedUse : m1891_3 -# 1891| v1891_8(void) = ExitFunction : - -# 1899| int noreturnTest(int) -# 1899| Block 0 -# 1899| v1899_1(void) = EnterFunction : -# 1899| m1899_2(unknown) = AliasedDefinition : -# 1899| m1899_3(unknown) = InitializeNonLocal : -# 1899| m1899_4(unknown) = Chi : total:m1899_2, partial:m1899_3 -# 1899| r1899_5(glval) = VariableAddress[x] : -# 1899| m1899_6(int) = InitializeParameter[x] : &:r1899_5 -# 1900| r1900_1(glval) = VariableAddress[x] : -# 1900| r1900_2(int) = Load[x] : &:r1900_1, m1899_6 -# 1900| r1900_3(int) = Constant[10] : -# 1900| r1900_4(bool) = CompareLT : r1900_2, r1900_3 -# 1900| v1900_5(void) = ConditionalBranch : r1900_4 +# 1891| r1891_3(glval) = VariableAddress[global_template] : +# 1891| r1891_4(char) = Constant[42] : +# 1891| m1891_5(char) = Store[global_template] : &:r1891_3, r1891_4 +# 1891| m1891_6(unknown) = Chi : total:m1891_2, partial:m1891_5 +# 1891| v1891_7(void) = ReturnVoid : +# 1891| v1891_8(void) = AliasedUse : ~m1891_6 +# 1891| v1891_9(void) = ExitFunction : + +# 1891| int global_template +# 1891| Block 0 +# 1891| v1891_1(void) = EnterFunction : +# 1891| m1891_2(unknown) = AliasedDefinition : +# 1891| r1891_3(glval) = VariableAddress[global_template] : +# 1891| r1891_4(int) = Constant[42] : +# 1891| m1891_5(int) = Store[global_template] : &:r1891_3, r1891_4 +# 1891| m1891_6(unknown) = Chi : total:m1891_2, partial:m1891_5 +# 1891| v1891_7(void) = ReturnVoid : +# 1891| v1891_8(void) = AliasedUse : ~m1891_6 +# 1891| v1891_9(void) = ExitFunction : + +# 1893| int test_global_template_int() +# 1893| Block 0 +# 1893| v1893_1(void) = EnterFunction : +# 1893| m1893_2(unknown) = AliasedDefinition : +# 1893| m1893_3(unknown) = InitializeNonLocal : +# 1893| m1893_4(unknown) = Chi : total:m1893_2, partial:m1893_3 +# 1894| r1894_1(glval) = VariableAddress[local_int] : +# 1894| r1894_2(glval) = VariableAddress[global_template] : +# 1894| r1894_3(int) = Load[global_template] : &:r1894_2, ~m1893_3 +# 1894| m1894_4(int) = Store[local_int] : &:r1894_1, r1894_3 +# 1895| r1895_1(glval) = VariableAddress[local_char] : +# 1895| r1895_2(glval) = VariableAddress[global_template] : +# 1895| r1895_3(char) = Load[global_template] : &:r1895_2, ~m1893_3 +# 1895| m1895_4(char) = Store[local_char] : &:r1895_1, r1895_3 +# 1896| r1896_1(glval) = VariableAddress[#return] : +# 1896| r1896_2(glval) = VariableAddress[local_int] : +# 1896| r1896_3(int) = Load[local_int] : &:r1896_2, m1894_4 +# 1896| r1896_4(glval) = VariableAddress[local_char] : +# 1896| r1896_5(char) = Load[local_char] : &:r1896_4, m1895_4 +# 1896| r1896_6(int) = Convert : r1896_5 +# 1896| r1896_7(int) = Add : r1896_3, r1896_6 +# 1896| m1896_8(int) = Store[#return] : &:r1896_1, r1896_7 +# 1893| r1893_5(glval) = VariableAddress[#return] : +# 1893| v1893_6(void) = ReturnValue : &:r1893_5, m1896_8 +# 1893| v1893_7(void) = AliasedUse : m1893_3 +# 1893| v1893_8(void) = ExitFunction : + +# 1901| int noreturnTest(int) +# 1901| Block 0 +# 1901| v1901_1(void) = EnterFunction : +# 1901| m1901_2(unknown) = AliasedDefinition : +# 1901| m1901_3(unknown) = InitializeNonLocal : +# 1901| m1901_4(unknown) = Chi : total:m1901_2, partial:m1901_3 +# 1901| r1901_5(glval) = VariableAddress[x] : +# 1901| m1901_6(int) = InitializeParameter[x] : &:r1901_5 +# 1902| r1902_1(glval) = VariableAddress[x] : +# 1902| r1902_2(int) = Load[x] : &:r1902_1, m1901_6 +# 1902| r1902_3(int) = Constant[10] : +# 1902| r1902_4(bool) = CompareLT : r1902_2, r1902_3 +# 1902| v1902_5(void) = ConditionalBranch : r1902_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1901| Block 1 -# 1901| r1901_1(glval) = VariableAddress[#return] : -# 1901| r1901_2(glval) = VariableAddress[x] : -# 1901| r1901_3(int) = Load[x] : &:r1901_2, m1899_6 -# 1901| m1901_4(int) = Store[#return] : &:r1901_1, r1901_3 -# 1899| r1899_7(glval) = VariableAddress[#return] : -# 1899| v1899_8(void) = ReturnValue : &:r1899_7, m1901_4 -# 1899| v1899_9(void) = AliasedUse : m1899_3 -# 1899| v1899_10(void) = ExitFunction : - -# 1903| Block 2 -# 1903| r1903_1(glval) = FunctionAddress[noreturnFunc] : -# 1903| v1903_2(void) = Call[noreturnFunc] : func:r1903_1 -# 1903| m1903_3(unknown) = ^CallSideEffect : ~m1899_4 -# 1903| m1903_4(unknown) = Chi : total:m1899_4, partial:m1903_3 -# 1899| v1899_11(void) = Unreached : - -# 1907| int noreturnTest2(int) -# 1907| Block 0 -# 1907| v1907_1(void) = EnterFunction : -# 1907| m1907_2(unknown) = AliasedDefinition : -# 1907| m1907_3(unknown) = InitializeNonLocal : -# 1907| m1907_4(unknown) = Chi : total:m1907_2, partial:m1907_3 -# 1907| r1907_5(glval) = VariableAddress[x] : -# 1907| m1907_6(int) = InitializeParameter[x] : &:r1907_5 -# 1908| r1908_1(glval) = VariableAddress[x] : -# 1908| r1908_2(int) = Load[x] : &:r1908_1, m1907_6 -# 1908| r1908_3(int) = Constant[10] : -# 1908| r1908_4(bool) = CompareLT : r1908_2, r1908_3 -# 1908| v1908_5(void) = ConditionalBranch : r1908_4 +# 1903| Block 1 +# 1903| r1903_1(glval) = VariableAddress[#return] : +# 1903| r1903_2(glval) = VariableAddress[x] : +# 1903| r1903_3(int) = Load[x] : &:r1903_2, m1901_6 +# 1903| m1903_4(int) = Store[#return] : &:r1903_1, r1903_3 +# 1901| r1901_7(glval) = VariableAddress[#return] : +# 1901| v1901_8(void) = ReturnValue : &:r1901_7, m1903_4 +# 1901| v1901_9(void) = AliasedUse : m1901_3 +# 1901| v1901_10(void) = ExitFunction : + +# 1905| Block 2 +# 1905| r1905_1(glval) = FunctionAddress[noreturnFunc] : +# 1905| v1905_2(void) = Call[noreturnFunc] : func:r1905_1 +# 1905| m1905_3(unknown) = ^CallSideEffect : ~m1901_4 +# 1905| m1905_4(unknown) = Chi : total:m1901_4, partial:m1905_3 +# 1901| v1901_11(void) = Unreached : + +# 1909| int noreturnTest2(int) +# 1909| Block 0 +# 1909| v1909_1(void) = EnterFunction : +# 1909| m1909_2(unknown) = AliasedDefinition : +# 1909| m1909_3(unknown) = InitializeNonLocal : +# 1909| m1909_4(unknown) = Chi : total:m1909_2, partial:m1909_3 +# 1909| r1909_5(glval) = VariableAddress[x] : +# 1909| m1909_6(int) = InitializeParameter[x] : &:r1909_5 +# 1910| r1910_1(glval) = VariableAddress[x] : +# 1910| r1910_2(int) = Load[x] : &:r1910_1, m1909_6 +# 1910| r1910_3(int) = Constant[10] : +# 1910| r1910_4(bool) = CompareLT : r1910_2, r1910_3 +# 1910| v1910_5(void) = ConditionalBranch : r1910_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1909| Block 1 -# 1909| r1909_1(glval) = FunctionAddress[noreturnFunc] : -# 1909| v1909_2(void) = Call[noreturnFunc] : func:r1909_1 -# 1909| m1909_3(unknown) = ^CallSideEffect : ~m1907_4 -# 1909| m1909_4(unknown) = Chi : total:m1907_4, partial:m1909_3 -# 1907| v1907_7(void) = Unreached : - -# 1911| Block 2 -# 1911| r1911_1(glval) = VariableAddress[#return] : -# 1911| r1911_2(glval) = VariableAddress[x] : -# 1911| r1911_3(int) = Load[x] : &:r1911_2, m1907_6 -# 1911| m1911_4(int) = Store[#return] : &:r1911_1, r1911_3 -# 1907| r1907_8(glval) = VariableAddress[#return] : -# 1907| v1907_9(void) = ReturnValue : &:r1907_8, m1911_4 -# 1907| v1907_10(void) = AliasedUse : m1907_3 -# 1907| v1907_11(void) = ExitFunction : - -# 1914| int static_function(int) -# 1914| Block 0 -# 1914| v1914_1(void) = EnterFunction : -# 1914| m1914_2(unknown) = AliasedDefinition : -# 1914| m1914_3(unknown) = InitializeNonLocal : -# 1914| m1914_4(unknown) = Chi : total:m1914_2, partial:m1914_3 -# 1914| r1914_5(glval) = VariableAddress[x] : -# 1914| m1914_6(int) = InitializeParameter[x] : &:r1914_5 -# 1915| r1915_1(glval) = VariableAddress[#return] : -# 1915| r1915_2(glval) = VariableAddress[x] : -# 1915| r1915_3(int) = Load[x] : &:r1915_2, m1914_6 -# 1915| m1915_4(int) = Store[#return] : &:r1915_1, r1915_3 -# 1914| r1914_7(glval) = VariableAddress[#return] : -# 1914| v1914_8(void) = ReturnValue : &:r1914_7, m1915_4 -# 1914| v1914_9(void) = AliasedUse : m1914_3 -# 1914| v1914_10(void) = ExitFunction : - -# 1918| void test_static_functions_with_assignments() -# 1918| Block 0 -# 1918| v1918_1(void) = EnterFunction : -# 1918| m1918_2(unknown) = AliasedDefinition : -# 1918| m1918_3(unknown) = InitializeNonLocal : -# 1918| m1918_4(unknown) = Chi : total:m1918_2, partial:m1918_3 -# 1919| r1919_1(glval) = VariableAddress[c] : -# 1919| m1919_2(C) = Uninitialized[c] : &:r1919_1 -# 1919| r1919_3(glval) = FunctionAddress[C] : -# 1919| v1919_4(void) = Call[C] : func:r1919_3, this:r1919_1 -# 1919| m1919_5(unknown) = ^CallSideEffect : ~m1918_4 -# 1919| m1919_6(unknown) = Chi : total:m1918_4, partial:m1919_5 -# 1919| m1919_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 -# 1919| m1919_8(C) = Chi : total:m1919_2, partial:m1919_7 -# 1920| r1920_1(glval) = VariableAddress[x] : -# 1920| m1920_2(int) = Uninitialized[x] : &:r1920_1 +# 1911| Block 1 +# 1911| r1911_1(glval) = FunctionAddress[noreturnFunc] : +# 1911| v1911_2(void) = Call[noreturnFunc] : func:r1911_1 +# 1911| m1911_3(unknown) = ^CallSideEffect : ~m1909_4 +# 1911| m1911_4(unknown) = Chi : total:m1909_4, partial:m1911_3 +# 1909| v1909_7(void) = Unreached : + +# 1913| Block 2 +# 1913| r1913_1(glval) = VariableAddress[#return] : +# 1913| r1913_2(glval) = VariableAddress[x] : +# 1913| r1913_3(int) = Load[x] : &:r1913_2, m1909_6 +# 1913| m1913_4(int) = Store[#return] : &:r1913_1, r1913_3 +# 1909| r1909_8(glval) = VariableAddress[#return] : +# 1909| v1909_9(void) = ReturnValue : &:r1909_8, m1913_4 +# 1909| v1909_10(void) = AliasedUse : m1909_3 +# 1909| v1909_11(void) = ExitFunction : + +# 1916| int static_function(int) +# 1916| Block 0 +# 1916| v1916_1(void) = EnterFunction : +# 1916| m1916_2(unknown) = AliasedDefinition : +# 1916| m1916_3(unknown) = InitializeNonLocal : +# 1916| m1916_4(unknown) = Chi : total:m1916_2, partial:m1916_3 +# 1916| r1916_5(glval) = VariableAddress[x] : +# 1916| m1916_6(int) = InitializeParameter[x] : &:r1916_5 +# 1917| r1917_1(glval) = VariableAddress[#return] : +# 1917| r1917_2(glval) = VariableAddress[x] : +# 1917| r1917_3(int) = Load[x] : &:r1917_2, m1916_6 +# 1917| m1917_4(int) = Store[#return] : &:r1917_1, r1917_3 +# 1916| r1916_7(glval) = VariableAddress[#return] : +# 1916| v1916_8(void) = ReturnValue : &:r1916_7, m1917_4 +# 1916| v1916_9(void) = AliasedUse : m1916_3 +# 1916| v1916_10(void) = ExitFunction : + +# 1920| void test_static_functions_with_assignments() +# 1920| Block 0 +# 1920| v1920_1(void) = EnterFunction : +# 1920| m1920_2(unknown) = AliasedDefinition : +# 1920| m1920_3(unknown) = InitializeNonLocal : +# 1920| m1920_4(unknown) = Chi : total:m1920_2, partial:m1920_3 # 1921| r1921_1(glval) = VariableAddress[c] : -# 1921| r1921_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1921| r1921_3(int) = Constant[10] : -# 1921| r1921_4(int) = Call[StaticMemberFunction] : func:r1921_2, 0:r1921_3 -# 1921| m1921_5(unknown) = ^CallSideEffect : ~m1919_6 -# 1921| m1921_6(unknown) = Chi : total:m1919_6, partial:m1921_5 -# 1921| r1921_7(glval) = VariableAddress[x] : -# 1921| m1921_8(int) = Store[x] : &:r1921_7, r1921_4 -# 1922| r1922_1(glval) = VariableAddress[y] : -# 1922| m1922_2(int) = Uninitialized[y] : &:r1922_1 -# 1923| r1923_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1923| r1923_2(int) = Constant[10] : -# 1923| r1923_3(int) = Call[StaticMemberFunction] : func:r1923_1, 0:r1923_2 -# 1923| m1923_4(unknown) = ^CallSideEffect : ~m1921_6 -# 1923| m1923_5(unknown) = Chi : total:m1921_6, partial:m1923_4 -# 1923| r1923_6(glval) = VariableAddress[y] : -# 1923| m1923_7(int) = Store[y] : &:r1923_6, r1923_3 -# 1924| r1924_1(glval) = VariableAddress[z] : -# 1924| m1924_2(int) = Uninitialized[z] : &:r1924_1 -# 1925| r1925_1(glval) = FunctionAddress[static_function] : +# 1921| m1921_2(C) = Uninitialized[c] : &:r1921_1 +# 1921| r1921_3(glval) = FunctionAddress[C] : +# 1921| v1921_4(void) = Call[C] : func:r1921_3, this:r1921_1 +# 1921| m1921_5(unknown) = ^CallSideEffect : ~m1920_4 +# 1921| m1921_6(unknown) = Chi : total:m1920_4, partial:m1921_5 +# 1921| m1921_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 +# 1921| m1921_8(C) = Chi : total:m1921_2, partial:m1921_7 +# 1922| r1922_1(glval) = VariableAddress[x] : +# 1922| m1922_2(int) = Uninitialized[x] : &:r1922_1 +# 1923| r1923_1(glval) = VariableAddress[c] : +# 1923| r1923_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1923| r1923_3(int) = Constant[10] : +# 1923| r1923_4(int) = Call[StaticMemberFunction] : func:r1923_2, 0:r1923_3 +# 1923| m1923_5(unknown) = ^CallSideEffect : ~m1921_6 +# 1923| m1923_6(unknown) = Chi : total:m1921_6, partial:m1923_5 +# 1923| r1923_7(glval) = VariableAddress[x] : +# 1923| m1923_8(int) = Store[x] : &:r1923_7, r1923_4 +# 1924| r1924_1(glval) = VariableAddress[y] : +# 1924| m1924_2(int) = Uninitialized[y] : &:r1924_1 +# 1925| r1925_1(glval) = FunctionAddress[StaticMemberFunction] : # 1925| r1925_2(int) = Constant[10] : -# 1925| r1925_3(int) = Call[static_function] : func:r1925_1, 0:r1925_2 -# 1925| m1925_4(unknown) = ^CallSideEffect : ~m1923_5 -# 1925| m1925_5(unknown) = Chi : total:m1923_5, partial:m1925_4 -# 1925| r1925_6(glval) = VariableAddress[z] : -# 1925| m1925_7(int) = Store[z] : &:r1925_6, r1925_3 -# 1926| v1926_1(void) = NoOp : -# 1918| v1918_5(void) = ReturnVoid : -# 1918| v1918_6(void) = AliasedUse : ~m1925_5 -# 1918| v1918_7(void) = ExitFunction : - -# 1928| void test_double_assign() -# 1928| Block 0 -# 1928| v1928_1(void) = EnterFunction : -# 1928| m1928_2(unknown) = AliasedDefinition : -# 1928| m1928_3(unknown) = InitializeNonLocal : -# 1928| m1928_4(unknown) = Chi : total:m1928_2, partial:m1928_3 -# 1929| r1929_1(glval) = VariableAddress[i] : -# 1929| m1929_2(int) = Uninitialized[i] : &:r1929_1 -# 1929| r1929_3(glval) = VariableAddress[j] : -# 1929| m1929_4(int) = Uninitialized[j] : &:r1929_3 -# 1930| r1930_1(int) = Constant[40] : -# 1930| r1930_2(glval) = VariableAddress[j] : -# 1930| m1930_3(int) = Store[j] : &:r1930_2, r1930_1 -# 1930| r1930_4(int) = Load[j] : &:r1930_2, m1930_3 -# 1930| r1930_5(glval) = VariableAddress[i] : -# 1930| m1930_6(int) = Store[i] : &:r1930_5, r1930_4 -# 1931| v1931_1(void) = NoOp : -# 1928| v1928_5(void) = ReturnVoid : -# 1928| v1928_6(void) = AliasedUse : m1928_3 -# 1928| v1928_7(void) = ExitFunction : - -# 1933| void test_assign_with_assign_operation() -# 1933| Block 0 -# 1933| v1933_1(void) = EnterFunction : -# 1933| m1933_2(unknown) = AliasedDefinition : -# 1933| m1933_3(unknown) = InitializeNonLocal : -# 1933| m1933_4(unknown) = Chi : total:m1933_2, partial:m1933_3 -# 1934| r1934_1(glval) = VariableAddress[i] : -# 1934| m1934_2(int) = Uninitialized[i] : &:r1934_1 -# 1934| r1934_3(glval) = VariableAddress[j] : -# 1934| r1934_4(int) = Constant[0] : -# 1934| m1934_5(int) = Store[j] : &:r1934_3, r1934_4 -# 1935| r1935_1(int) = Constant[40] : -# 1935| r1935_2(glval) = VariableAddress[j] : -# 1935| r1935_3(int) = Load[j] : &:r1935_2, m1934_5 -# 1935| r1935_4(int) = Add : r1935_3, r1935_1 -# 1935| m1935_5(int) = Store[j] : &:r1935_2, r1935_4 -# 1935| r1935_6(int) = Load[j] : &:r1935_2, m1935_5 -# 1935| r1935_7(glval) = VariableAddress[i] : -# 1935| m1935_8(int) = Store[i] : &:r1935_7, r1935_6 -# 1936| v1936_1(void) = NoOp : -# 1933| v1933_5(void) = ReturnVoid : -# 1933| v1933_6(void) = AliasedUse : m1933_3 -# 1933| v1933_7(void) = ExitFunction : - -# 1942| D& D::ReferenceStaticMemberFunction() -# 1942| Block 0 -# 1942| v1942_1(void) = EnterFunction : -# 1942| m1942_2(unknown) = AliasedDefinition : -# 1942| m1942_3(unknown) = InitializeNonLocal : -# 1942| m1942_4(unknown) = Chi : total:m1942_2, partial:m1942_3 -# 1943| r1943_1(glval) = VariableAddress[#return] : -# 1943| r1943_2(glval) = VariableAddress[x] : -# 1943| r1943_3(D &) = CopyValue : r1943_2 -# 1943| m1943_4(D &) = Store[#return] : &:r1943_1, r1943_3 -# 1942| r1942_5(glval) = VariableAddress[#return] : -# 1942| v1942_6(void) = ReturnValue : &:r1942_5, m1943_4 -# 1942| v1942_7(void) = AliasedUse : m1942_3 -# 1942| v1942_8(void) = ExitFunction : - -# 1945| D D::ObjectStaticMemberFunction() -# 1945| Block 0 -# 1945| v1945_1(void) = EnterFunction : -# 1945| m1945_2(unknown) = AliasedDefinition : -# 1945| m1945_3(unknown) = InitializeNonLocal : -# 1945| m1945_4(unknown) = Chi : total:m1945_2, partial:m1945_3 -# 1946| r1946_1(glval) = VariableAddress[#return] : -# 1946| r1946_2(glval) = VariableAddress[x] : -# 1946| r1946_3(D) = Load[x] : &:r1946_2, ~m1945_3 -# 1946| m1946_4(D) = Store[#return] : &:r1946_1, r1946_3 -# 1945| r1945_5(glval) = VariableAddress[#return] : -# 1945| v1945_6(void) = ReturnValue : &:r1945_5, m1946_4 -# 1945| v1945_7(void) = AliasedUse : m1945_3 -# 1945| v1945_8(void) = ExitFunction : - -# 1950| void test_static_member_functions_with_reference_return() -# 1950| Block 0 -# 1950| v1950_1(void) = EnterFunction : -# 1950| m1950_2(unknown) = AliasedDefinition : -# 1950| m1950_3(unknown) = InitializeNonLocal : -# 1950| m1950_4(unknown) = Chi : total:m1950_2, partial:m1950_3 -# 1951| r1951_1(glval) = VariableAddress[d] : -# 1951| m1951_2(D) = Uninitialized[d] : &:r1951_1 +# 1925| r1925_3(int) = Call[StaticMemberFunction] : func:r1925_1, 0:r1925_2 +# 1925| m1925_4(unknown) = ^CallSideEffect : ~m1923_6 +# 1925| m1925_5(unknown) = Chi : total:m1923_6, partial:m1925_4 +# 1925| r1925_6(glval) = VariableAddress[y] : +# 1925| m1925_7(int) = Store[y] : &:r1925_6, r1925_3 +# 1926| r1926_1(glval) = VariableAddress[z] : +# 1926| m1926_2(int) = Uninitialized[z] : &:r1926_1 +# 1927| r1927_1(glval) = FunctionAddress[static_function] : +# 1927| r1927_2(int) = Constant[10] : +# 1927| r1927_3(int) = Call[static_function] : func:r1927_1, 0:r1927_2 +# 1927| m1927_4(unknown) = ^CallSideEffect : ~m1925_5 +# 1927| m1927_5(unknown) = Chi : total:m1925_5, partial:m1927_4 +# 1927| r1927_6(glval) = VariableAddress[z] : +# 1927| m1927_7(int) = Store[z] : &:r1927_6, r1927_3 +# 1928| v1928_1(void) = NoOp : +# 1920| v1920_5(void) = ReturnVoid : +# 1920| v1920_6(void) = AliasedUse : ~m1927_5 +# 1920| v1920_7(void) = ExitFunction : + +# 1930| void test_double_assign() +# 1930| Block 0 +# 1930| v1930_1(void) = EnterFunction : +# 1930| m1930_2(unknown) = AliasedDefinition : +# 1930| m1930_3(unknown) = InitializeNonLocal : +# 1930| m1930_4(unknown) = Chi : total:m1930_2, partial:m1930_3 +# 1931| r1931_1(glval) = VariableAddress[i] : +# 1931| m1931_2(int) = Uninitialized[i] : &:r1931_1 +# 1931| r1931_3(glval) = VariableAddress[j] : +# 1931| m1931_4(int) = Uninitialized[j] : &:r1931_3 +# 1932| r1932_1(int) = Constant[40] : +# 1932| r1932_2(glval) = VariableAddress[j] : +# 1932| m1932_3(int) = Store[j] : &:r1932_2, r1932_1 +# 1932| r1932_4(int) = Load[j] : &:r1932_2, m1932_3 +# 1932| r1932_5(glval) = VariableAddress[i] : +# 1932| m1932_6(int) = Store[i] : &:r1932_5, r1932_4 +# 1933| v1933_1(void) = NoOp : +# 1930| v1930_5(void) = ReturnVoid : +# 1930| v1930_6(void) = AliasedUse : m1930_3 +# 1930| v1930_7(void) = ExitFunction : + +# 1935| void test_assign_with_assign_operation() +# 1935| Block 0 +# 1935| v1935_1(void) = EnterFunction : +# 1935| m1935_2(unknown) = AliasedDefinition : +# 1935| m1935_3(unknown) = InitializeNonLocal : +# 1935| m1935_4(unknown) = Chi : total:m1935_2, partial:m1935_3 +# 1936| r1936_1(glval) = VariableAddress[i] : +# 1936| m1936_2(int) = Uninitialized[i] : &:r1936_1 +# 1936| r1936_3(glval) = VariableAddress[j] : +# 1936| r1936_4(int) = Constant[0] : +# 1936| m1936_5(int) = Store[j] : &:r1936_3, r1936_4 +# 1937| r1937_1(int) = Constant[40] : +# 1937| r1937_2(glval) = VariableAddress[j] : +# 1937| r1937_3(int) = Load[j] : &:r1937_2, m1936_5 +# 1937| r1937_4(int) = Add : r1937_3, r1937_1 +# 1937| m1937_5(int) = Store[j] : &:r1937_2, r1937_4 +# 1937| r1937_6(int) = Load[j] : &:r1937_2, m1937_5 +# 1937| r1937_7(glval) = VariableAddress[i] : +# 1937| m1937_8(int) = Store[i] : &:r1937_7, r1937_6 +# 1938| v1938_1(void) = NoOp : +# 1935| v1935_5(void) = ReturnVoid : +# 1935| v1935_6(void) = AliasedUse : m1935_3 +# 1935| v1935_7(void) = ExitFunction : + +# 1944| D& D::ReferenceStaticMemberFunction() +# 1944| Block 0 +# 1944| v1944_1(void) = EnterFunction : +# 1944| m1944_2(unknown) = AliasedDefinition : +# 1944| m1944_3(unknown) = InitializeNonLocal : +# 1944| m1944_4(unknown) = Chi : total:m1944_2, partial:m1944_3 +# 1945| r1945_1(glval) = VariableAddress[#return] : +# 1945| r1945_2(glval) = VariableAddress[x] : +# 1945| r1945_3(D &) = CopyValue : r1945_2 +# 1945| m1945_4(D &) = Store[#return] : &:r1945_1, r1945_3 +# 1944| r1944_5(glval) = VariableAddress[#return] : +# 1944| v1944_6(void) = ReturnValue : &:r1944_5, m1945_4 +# 1944| v1944_7(void) = AliasedUse : m1944_3 +# 1944| v1944_8(void) = ExitFunction : + +# 1947| D D::ObjectStaticMemberFunction() +# 1947| Block 0 +# 1947| v1947_1(void) = EnterFunction : +# 1947| m1947_2(unknown) = AliasedDefinition : +# 1947| m1947_3(unknown) = InitializeNonLocal : +# 1947| m1947_4(unknown) = Chi : total:m1947_2, partial:m1947_3 +# 1948| r1948_1(glval) = VariableAddress[#return] : +# 1948| r1948_2(glval) = VariableAddress[x] : +# 1948| r1948_3(D) = Load[x] : &:r1948_2, ~m1947_3 +# 1948| m1948_4(D) = Store[#return] : &:r1948_1, r1948_3 +# 1947| r1947_5(glval) = VariableAddress[#return] : +# 1947| v1947_6(void) = ReturnValue : &:r1947_5, m1948_4 +# 1947| v1947_7(void) = AliasedUse : m1947_3 +# 1947| v1947_8(void) = ExitFunction : + +# 1952| void test_static_member_functions_with_reference_return() +# 1952| Block 0 +# 1952| v1952_1(void) = EnterFunction : +# 1952| m1952_2(unknown) = AliasedDefinition : +# 1952| m1952_3(unknown) = InitializeNonLocal : +# 1952| m1952_4(unknown) = Chi : total:m1952_2, partial:m1952_3 # 1953| r1953_1(glval) = VariableAddress[d] : -# 1953| r1953_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1953| r1953_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1953_2 -# 1953| m1953_4(unknown) = ^CallSideEffect : ~m1950_4 -# 1953| m1953_5(unknown) = Chi : total:m1950_4, partial:m1953_4 -# 1953| r1953_6(glval) = CopyValue : r1953_3 -# 1954| r1954_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1954| r1954_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1954_1 -# 1954| m1954_3(unknown) = ^CallSideEffect : ~m1953_5 -# 1954| m1954_4(unknown) = Chi : total:m1953_5, partial:m1954_3 -# 1954| r1954_5(glval) = CopyValue : r1954_2 +# 1953| m1953_2(D) = Uninitialized[d] : &:r1953_1 # 1955| r1955_1(glval) = VariableAddress[d] : -# 1955| r1955_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1955| r1955_3(D) = Call[ObjectStaticMemberFunction] : func:r1955_2 -# 1955| m1955_4(unknown) = ^CallSideEffect : ~m1954_4 -# 1955| m1955_5(unknown) = Chi : total:m1954_4, partial:m1955_4 -# 1956| r1956_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1956| r1956_2(D) = Call[ObjectStaticMemberFunction] : func:r1956_1 +# 1955| r1955_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1955| r1955_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1955_2 +# 1955| m1955_4(unknown) = ^CallSideEffect : ~m1952_4 +# 1955| m1955_5(unknown) = Chi : total:m1952_4, partial:m1955_4 +# 1955| r1955_6(glval) = CopyValue : r1955_3 +# 1956| r1956_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1956| r1956_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1956_1 # 1956| m1956_3(unknown) = ^CallSideEffect : ~m1955_5 # 1956| m1956_4(unknown) = Chi : total:m1955_5, partial:m1956_3 -# 1958| r1958_1(glval) = VariableAddress[x] : -# 1958| m1958_2(D) = Uninitialized[x] : &:r1958_1 -# 1959| r1959_1(glval) = VariableAddress[d] : -# 1959| r1959_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1959| r1959_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1959_2 -# 1959| m1959_4(unknown) = ^CallSideEffect : ~m1956_4 -# 1959| m1959_5(unknown) = Chi : total:m1956_4, partial:m1959_4 -# 1959| r1959_6(D) = Load[?] : &:r1959_3, ~m1959_5 -# 1959| r1959_7(glval) = VariableAddress[x] : -# 1959| m1959_8(D) = Store[x] : &:r1959_7, r1959_6 -# 1960| r1960_1(glval) = VariableAddress[y] : -# 1960| m1960_2(D) = Uninitialized[y] : &:r1960_1 -# 1961| r1961_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1961| r1961_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1961_1 -# 1961| m1961_3(unknown) = ^CallSideEffect : ~m1959_5 -# 1961| m1961_4(unknown) = Chi : total:m1959_5, partial:m1961_3 -# 1961| r1961_5(D) = Load[?] : &:r1961_2, ~m1961_4 -# 1961| r1961_6(glval) = VariableAddress[y] : -# 1961| m1961_7(D) = Store[y] : &:r1961_6, r1961_5 -# 1962| r1962_1(glval) = VariableAddress[j] : -# 1962| m1962_2(D) = Uninitialized[j] : &:r1962_1 -# 1963| r1963_1(glval) = VariableAddress[d] : -# 1963| r1963_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1963| r1963_3(D) = Call[ObjectStaticMemberFunction] : func:r1963_2 -# 1963| m1963_4(unknown) = ^CallSideEffect : ~m1961_4 -# 1963| m1963_5(unknown) = Chi : total:m1961_4, partial:m1963_4 -# 1963| r1963_6(glval) = VariableAddress[j] : -# 1963| m1963_7(D) = Store[j] : &:r1963_6, r1963_3 -# 1964| r1964_1(glval) = VariableAddress[k] : -# 1964| m1964_2(D) = Uninitialized[k] : &:r1964_1 -# 1965| r1965_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1965| r1965_2(D) = Call[ObjectStaticMemberFunction] : func:r1965_1 -# 1965| m1965_3(unknown) = ^CallSideEffect : ~m1963_5 -# 1965| m1965_4(unknown) = Chi : total:m1963_5, partial:m1965_3 -# 1965| r1965_5(glval) = VariableAddress[k] : -# 1965| m1965_6(D) = Store[k] : &:r1965_5, r1965_2 -# 1966| v1966_1(void) = NoOp : -# 1950| v1950_5(void) = ReturnVoid : -# 1950| v1950_6(void) = AliasedUse : ~m1965_4 -# 1950| v1950_7(void) = ExitFunction : - -# 1968| void test_volatile() -# 1968| Block 0 -# 1968| v1968_1(void) = EnterFunction : -# 1968| m1968_2(unknown) = AliasedDefinition : -# 1968| m1968_3(unknown) = InitializeNonLocal : -# 1968| m1968_4(unknown) = Chi : total:m1968_2, partial:m1968_3 -# 1969| r1969_1(glval) = VariableAddress[x] : -# 1969| m1969_2(int) = Uninitialized[x] : &:r1969_1 -# 1970| r1970_1(glval) = VariableAddress[x] : -# 1970| r1970_2(int) = Load[x] : &:r1970_1, m1969_2 -# 1971| v1971_1(void) = NoOp : -# 1968| v1968_5(void) = ReturnVoid : -# 1968| v1968_6(void) = AliasedUse : m1968_3 -# 1968| v1968_7(void) = ExitFunction : - -# 1979| void value_category_test() -# 1979| Block 0 -# 1979| v1979_1(void) = EnterFunction : -# 1979| m1979_2(unknown) = AliasedDefinition : -# 1979| m1979_3(unknown) = InitializeNonLocal : -# 1979| m1979_4(unknown) = Chi : total:m1979_2, partial:m1979_3 -# 1980| r1980_1(glval) = VariableAddress[c] : -# 1980| m1980_2(ValCat) = Uninitialized[c] : &:r1980_1 +# 1956| r1956_5(glval) = CopyValue : r1956_2 +# 1957| r1957_1(glval) = VariableAddress[d] : +# 1957| r1957_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1957| r1957_3(D) = Call[ObjectStaticMemberFunction] : func:r1957_2 +# 1957| m1957_4(unknown) = ^CallSideEffect : ~m1956_4 +# 1957| m1957_5(unknown) = Chi : total:m1956_4, partial:m1957_4 +# 1958| r1958_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1958| r1958_2(D) = Call[ObjectStaticMemberFunction] : func:r1958_1 +# 1958| m1958_3(unknown) = ^CallSideEffect : ~m1957_5 +# 1958| m1958_4(unknown) = Chi : total:m1957_5, partial:m1958_3 +# 1960| r1960_1(glval) = VariableAddress[x] : +# 1960| m1960_2(D) = Uninitialized[x] : &:r1960_1 +# 1961| r1961_1(glval) = VariableAddress[d] : +# 1961| r1961_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1961| r1961_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1961_2 +# 1961| m1961_4(unknown) = ^CallSideEffect : ~m1958_4 +# 1961| m1961_5(unknown) = Chi : total:m1958_4, partial:m1961_4 +# 1961| r1961_6(D) = Load[?] : &:r1961_3, ~m1961_5 +# 1961| r1961_7(glval) = VariableAddress[x] : +# 1961| m1961_8(D) = Store[x] : &:r1961_7, r1961_6 +# 1962| r1962_1(glval) = VariableAddress[y] : +# 1962| m1962_2(D) = Uninitialized[y] : &:r1962_1 +# 1963| r1963_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1963| r1963_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1963_1 +# 1963| m1963_3(unknown) = ^CallSideEffect : ~m1961_5 +# 1963| m1963_4(unknown) = Chi : total:m1961_5, partial:m1963_3 +# 1963| r1963_5(D) = Load[?] : &:r1963_2, ~m1963_4 +# 1963| r1963_6(glval) = VariableAddress[y] : +# 1963| m1963_7(D) = Store[y] : &:r1963_6, r1963_5 +# 1964| r1964_1(glval) = VariableAddress[j] : +# 1964| m1964_2(D) = Uninitialized[j] : &:r1964_1 +# 1965| r1965_1(glval) = VariableAddress[d] : +# 1965| r1965_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1965| r1965_3(D) = Call[ObjectStaticMemberFunction] : func:r1965_2 +# 1965| m1965_4(unknown) = ^CallSideEffect : ~m1963_4 +# 1965| m1965_5(unknown) = Chi : total:m1963_4, partial:m1965_4 +# 1965| r1965_6(glval) = VariableAddress[j] : +# 1965| m1965_7(D) = Store[j] : &:r1965_6, r1965_3 +# 1966| r1966_1(glval) = VariableAddress[k] : +# 1966| m1966_2(D) = Uninitialized[k] : &:r1966_1 +# 1967| r1967_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1967| r1967_2(D) = Call[ObjectStaticMemberFunction] : func:r1967_1 +# 1967| m1967_3(unknown) = ^CallSideEffect : ~m1965_5 +# 1967| m1967_4(unknown) = Chi : total:m1965_5, partial:m1967_3 +# 1967| r1967_5(glval) = VariableAddress[k] : +# 1967| m1967_6(D) = Store[k] : &:r1967_5, r1967_2 +# 1968| v1968_1(void) = NoOp : +# 1952| v1952_5(void) = ReturnVoid : +# 1952| v1952_6(void) = AliasedUse : ~m1967_4 +# 1952| v1952_7(void) = ExitFunction : + +# 1970| void test_volatile() +# 1970| Block 0 +# 1970| v1970_1(void) = EnterFunction : +# 1970| m1970_2(unknown) = AliasedDefinition : +# 1970| m1970_3(unknown) = InitializeNonLocal : +# 1970| m1970_4(unknown) = Chi : total:m1970_2, partial:m1970_3 +# 1971| r1971_1(glval) = VariableAddress[x] : +# 1971| m1971_2(int) = Uninitialized[x] : &:r1971_1 +# 1972| r1972_1(glval) = VariableAddress[x] : +# 1972| r1972_2(int) = Load[x] : &:r1972_1, m1971_2 +# 1973| v1973_1(void) = NoOp : +# 1970| v1970_5(void) = ReturnVoid : +# 1970| v1970_6(void) = AliasedUse : m1970_3 +# 1970| v1970_7(void) = ExitFunction : + +# 1981| void value_category_test() +# 1981| Block 0 +# 1981| v1981_1(void) = EnterFunction : +# 1981| m1981_2(unknown) = AliasedDefinition : +# 1981| m1981_3(unknown) = InitializeNonLocal : +# 1981| m1981_4(unknown) = Chi : total:m1981_2, partial:m1981_3 +# 1982| r1982_1(glval) = VariableAddress[c] : +# 1982| m1982_2(ValCat) = Uninitialized[c] : &:r1982_1 #-----| r0_1(glval) = VariableAddress[#temp0:0] : #-----| m0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, m0_2 -# 1982| r1982_1(glval) = VariableAddress[c] : -# 1982| r1982_2(glval) = FunctionAddress[lvalue] : -# 1982| r1982_3(ValCat &) = Call[lvalue] : func:r1982_2 -# 1982| m1982_4(unknown) = ^CallSideEffect : ~m1979_4 -# 1982| m1982_5(unknown) = Chi : total:m1979_4, partial:m1982_4 -# 1982| r1982_6(glval) = CopyValue : r1982_3 -# 1982| m1982_7(ValCat) = Store[?] : &:r1982_6, r0_3 -# 1982| m1982_8(unknown) = Chi : total:m1982_5, partial:m1982_7 +# 1984| r1984_1(glval) = VariableAddress[c] : +# 1984| r1984_2(glval) = FunctionAddress[lvalue] : +# 1984| r1984_3(ValCat &) = Call[lvalue] : func:r1984_2 +# 1984| m1984_4(unknown) = ^CallSideEffect : ~m1981_4 +# 1984| m1984_5(unknown) = Chi : total:m1981_4, partial:m1984_4 +# 1984| r1984_6(glval) = CopyValue : r1984_3 +# 1984| m1984_7(ValCat) = Store[?] : &:r1984_6, r0_3 +# 1984| m1984_8(unknown) = Chi : total:m1984_5, partial:m1984_7 #-----| r0_4(glval) = VariableAddress[#temp0:0] : #-----| m0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, m0_5 -# 1983| r1983_1(glval) = VariableAddress[c] : -# 1983| r1983_2(glval) = FunctionAddress[xvalue] : -# 1983| r1983_3(ValCat &&) = Call[xvalue] : func:r1983_2 -# 1983| m1983_4(unknown) = ^CallSideEffect : ~m1982_8 -# 1983| m1983_5(unknown) = Chi : total:m1982_8, partial:m1983_4 -# 1983| r1983_6(glval) = CopyValue : r1983_3 -# 1983| m1983_7(ValCat) = Store[?] : &:r1983_6, r0_6 -# 1983| m1983_8(unknown) = Chi : total:m1983_5, partial:m1983_7 +# 1985| r1985_1(glval) = VariableAddress[c] : +# 1985| r1985_2(glval) = FunctionAddress[xvalue] : +# 1985| r1985_3(ValCat &&) = Call[xvalue] : func:r1985_2 +# 1985| m1985_4(unknown) = ^CallSideEffect : ~m1984_8 +# 1985| m1985_5(unknown) = Chi : total:m1984_8, partial:m1985_4 +# 1985| r1985_6(glval) = CopyValue : r1985_3 +# 1985| m1985_7(ValCat) = Store[?] : &:r1985_6, r0_6 +# 1985| m1985_8(unknown) = Chi : total:m1985_5, partial:m1985_7 #-----| r0_7(glval) = VariableAddress[#temp0:0] : #-----| m0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, m0_8 -# 1984| r1984_1(glval) = VariableAddress[#temp1984:5] : -# 1984| r1984_2(glval) = VariableAddress[c] : -# 1984| r1984_3(glval) = FunctionAddress[prvalue] : -# 1984| r1984_4(ValCat) = Call[prvalue] : func:r1984_3 -# 1984| m1984_5(unknown) = ^CallSideEffect : ~m1983_8 -# 1984| m1984_6(unknown) = Chi : total:m1983_8, partial:m1984_5 -# 1984| m1984_7(ValCat) = Store[#temp1984:5] : &:r1984_1, r1984_4 -# 1984| m1984_8(ValCat) = Store[#temp1984:5] : &:r1984_1, r0_9 +# 1986| r1986_1(glval) = VariableAddress[#temp1986:5] : +# 1986| r1986_2(glval) = VariableAddress[c] : +# 1986| r1986_3(glval) = FunctionAddress[prvalue] : +# 1986| r1986_4(ValCat) = Call[prvalue] : func:r1986_3 +# 1986| m1986_5(unknown) = ^CallSideEffect : ~m1985_8 +# 1986| m1986_6(unknown) = Chi : total:m1985_8, partial:m1986_5 +# 1986| m1986_7(ValCat) = Store[#temp1986:5] : &:r1986_1, r1986_4 +# 1986| m1986_8(ValCat) = Store[#temp1986:5] : &:r1986_1, r0_9 #-----| r0_10(glval) = VariableAddress[#temp0:0] : #-----| m0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, m0_11 -# 1985| r1985_1(glval) = FunctionAddress[lvalue] : -# 1985| r1985_2(ValCat &) = Call[lvalue] : func:r1985_1 -# 1985| m1985_3(unknown) = ^CallSideEffect : ~m1984_6 -# 1985| m1985_4(unknown) = Chi : total:m1984_6, partial:m1985_3 -# 1985| r1985_5(glval) = CopyValue : r1985_2 -# 1985| m1985_6(ValCat) = Store[?] : &:r1985_5, r0_12 -# 1985| m1985_7(unknown) = Chi : total:m1985_4, partial:m1985_6 +# 1987| r1987_1(glval) = FunctionAddress[lvalue] : +# 1987| r1987_2(ValCat &) = Call[lvalue] : func:r1987_1 +# 1987| m1987_3(unknown) = ^CallSideEffect : ~m1986_6 +# 1987| m1987_4(unknown) = Chi : total:m1986_6, partial:m1987_3 +# 1987| r1987_5(glval) = CopyValue : r1987_2 +# 1987| m1987_6(ValCat) = Store[?] : &:r1987_5, r0_12 +# 1987| m1987_7(unknown) = Chi : total:m1987_4, partial:m1987_6 #-----| r0_13(glval) = VariableAddress[#temp0:0] : #-----| m0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, m0_14 -# 1986| r1986_1(glval) = FunctionAddress[xvalue] : -# 1986| r1986_2(ValCat &&) = Call[xvalue] : func:r1986_1 -# 1986| m1986_3(unknown) = ^CallSideEffect : ~m1985_7 -# 1986| m1986_4(unknown) = Chi : total:m1985_7, partial:m1986_3 -# 1986| r1986_5(glval) = CopyValue : r1986_2 -# 1986| m1986_6(ValCat) = Store[?] : &:r1986_5, r0_15 -# 1986| m1986_7(unknown) = Chi : total:m1986_4, partial:m1986_6 +# 1988| r1988_1(glval) = FunctionAddress[xvalue] : +# 1988| r1988_2(ValCat &&) = Call[xvalue] : func:r1988_1 +# 1988| m1988_3(unknown) = ^CallSideEffect : ~m1987_7 +# 1988| m1988_4(unknown) = Chi : total:m1987_7, partial:m1988_3 +# 1988| r1988_5(glval) = CopyValue : r1988_2 +# 1988| m1988_6(ValCat) = Store[?] : &:r1988_5, r0_15 +# 1988| m1988_7(unknown) = Chi : total:m1988_4, partial:m1988_6 #-----| r0_16(glval) = VariableAddress[#temp0:0] : #-----| m0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, m0_17 -# 1987| r1987_1(glval) = VariableAddress[#temp1987:5] : -# 1987| r1987_2(glval) = FunctionAddress[prvalue] : -# 1987| r1987_3(ValCat) = Call[prvalue] : func:r1987_2 -# 1987| m1987_4(unknown) = ^CallSideEffect : ~m1986_7 -# 1987| m1987_5(unknown) = Chi : total:m1986_7, partial:m1987_4 -# 1987| m1987_6(ValCat) = Store[#temp1987:5] : &:r1987_1, r1987_3 -# 1987| m1987_7(ValCat) = Store[#temp1987:5] : &:r1987_1, r0_18 -# 1988| v1988_1(void) = NoOp : -# 1979| v1979_5(void) = ReturnVoid : -# 1979| v1979_6(void) = AliasedUse : ~m1987_5 -# 1979| v1979_7(void) = ExitFunction : - -# 1990| void SetStaticFuncPtr() -# 1990| Block 0 -# 1990| v1990_1(void) = EnterFunction : -# 1990| m1990_2(unknown) = AliasedDefinition : -# 1990| m1990_3(unknown) = InitializeNonLocal : -# 1990| m1990_4(unknown) = Chi : total:m1990_2, partial:m1990_3 -# 1991| r1991_1(glval) = VariableAddress[c] : -# 1991| m1991_2(C) = Uninitialized[c] : &:r1991_1 -# 1991| r1991_3(glval) = FunctionAddress[C] : -# 1991| v1991_4(void) = Call[C] : func:r1991_3, this:r1991_1 -# 1991| m1991_5(unknown) = ^CallSideEffect : ~m1990_4 -# 1991| m1991_6(unknown) = Chi : total:m1990_4, partial:m1991_5 -# 1991| m1991_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1991_1 -# 1991| m1991_8(C) = Chi : total:m1991_2, partial:m1991_7 -# 1992| r1992_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1992| r1992_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1992| m1992_3(..(*)(..)) = Store[pfn] : &:r1992_1, r1992_2 +# 1989| r1989_1(glval) = VariableAddress[#temp1989:5] : +# 1989| r1989_2(glval) = FunctionAddress[prvalue] : +# 1989| r1989_3(ValCat) = Call[prvalue] : func:r1989_2 +# 1989| m1989_4(unknown) = ^CallSideEffect : ~m1988_7 +# 1989| m1989_5(unknown) = Chi : total:m1988_7, partial:m1989_4 +# 1989| m1989_6(ValCat) = Store[#temp1989:5] : &:r1989_1, r1989_3 +# 1989| m1989_7(ValCat) = Store[#temp1989:5] : &:r1989_1, r0_18 +# 1990| v1990_1(void) = NoOp : +# 1981| v1981_5(void) = ReturnVoid : +# 1981| v1981_6(void) = AliasedUse : ~m1989_5 +# 1981| v1981_7(void) = ExitFunction : + +# 1992| void SetStaticFuncPtr() +# 1992| Block 0 +# 1992| v1992_1(void) = EnterFunction : +# 1992| m1992_2(unknown) = AliasedDefinition : +# 1992| m1992_3(unknown) = InitializeNonLocal : +# 1992| m1992_4(unknown) = Chi : total:m1992_2, partial:m1992_3 # 1993| r1993_1(glval) = VariableAddress[c] : -# 1993| r1993_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1993| r1993_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1993| m1993_4(..(*)(..)) = Store[pfn] : &:r1993_3, r1993_2 -# 1994| v1994_1(void) = NoOp : -# 1990| v1990_5(void) = ReturnVoid : -# 1990| v1990_6(void) = AliasedUse : ~m1991_6 -# 1990| v1990_7(void) = ExitFunction : - -# 1996| void TernaryTestInt(bool, int, int, int) -# 1996| Block 0 -# 1996| v1996_1(void) = EnterFunction : -# 1996| m1996_2(unknown) = AliasedDefinition : -# 1996| m1996_3(unknown) = InitializeNonLocal : -# 1996| m1996_4(unknown) = Chi : total:m1996_2, partial:m1996_3 -# 1996| r1996_5(glval) = VariableAddress[a] : -# 1996| m1996_6(bool) = InitializeParameter[a] : &:r1996_5 -# 1996| r1996_7(glval) = VariableAddress[x] : -# 1996| m1996_8(int) = InitializeParameter[x] : &:r1996_7 -# 1996| r1996_9(glval) = VariableAddress[y] : -# 1996| m1996_10(int) = InitializeParameter[y] : &:r1996_9 -# 1996| r1996_11(glval) = VariableAddress[z] : -# 1996| m1996_12(int) = InitializeParameter[z] : &:r1996_11 -# 1997| r1997_1(glval) = VariableAddress[a] : -# 1997| r1997_2(bool) = Load[a] : &:r1997_1, m1996_6 -# 1997| v1997_3(void) = ConditionalBranch : r1997_2 +# 1993| m1993_2(C) = Uninitialized[c] : &:r1993_1 +# 1993| r1993_3(glval) = FunctionAddress[C] : +# 1993| v1993_4(void) = Call[C] : func:r1993_3, this:r1993_1 +# 1993| m1993_5(unknown) = ^CallSideEffect : ~m1992_4 +# 1993| m1993_6(unknown) = Chi : total:m1992_4, partial:m1993_5 +# 1993| m1993_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1993_1 +# 1993| m1993_8(C) = Chi : total:m1993_2, partial:m1993_7 +# 1994| r1994_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 1994| r1994_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 1994| m1994_3(..(*)(..)) = Store[pfn] : &:r1994_1, r1994_2 +# 1995| r1995_1(glval) = VariableAddress[c] : +# 1995| r1995_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 1995| r1995_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 1995| m1995_4(..(*)(..)) = Store[pfn] : &:r1995_3, r1995_2 +# 1996| v1996_1(void) = NoOp : +# 1992| v1992_5(void) = ReturnVoid : +# 1992| v1992_6(void) = AliasedUse : ~m1993_6 +# 1992| v1992_7(void) = ExitFunction : + +# 1998| void TernaryTestInt(bool, int, int, int) +# 1998| Block 0 +# 1998| v1998_1(void) = EnterFunction : +# 1998| m1998_2(unknown) = AliasedDefinition : +# 1998| m1998_3(unknown) = InitializeNonLocal : +# 1998| m1998_4(unknown) = Chi : total:m1998_2, partial:m1998_3 +# 1998| r1998_5(glval) = VariableAddress[a] : +# 1998| m1998_6(bool) = InitializeParameter[a] : &:r1998_5 +# 1998| r1998_7(glval) = VariableAddress[x] : +# 1998| m1998_8(int) = InitializeParameter[x] : &:r1998_7 +# 1998| r1998_9(glval) = VariableAddress[y] : +# 1998| m1998_10(int) = InitializeParameter[y] : &:r1998_9 +# 1998| r1998_11(glval) = VariableAddress[z] : +# 1998| m1998_12(int) = InitializeParameter[z] : &:r1998_11 +# 1999| r1999_1(glval) = VariableAddress[a] : +# 1999| r1999_2(bool) = Load[a] : &:r1999_1, m1998_6 +# 1999| v1999_3(void) = ConditionalBranch : r1999_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1997| Block 1 -# 1997| m1997_4(int) = Phi : from 2:m1997_12, from 3:m1997_16 -# 1997| r1997_5(glval) = VariableAddress[#temp1997:9] : -# 1997| r1997_6(int) = Load[#temp1997:9] : &:r1997_5, m1997_4 -# 1997| r1997_7(glval) = VariableAddress[z] : -# 1997| m1997_8(int) = Store[z] : &:r1997_7, r1997_6 -# 1998| r1998_1(glval) = VariableAddress[a] : -# 1998| r1998_2(bool) = Load[a] : &:r1998_1, m1996_6 -# 1998| v1998_3(void) = ConditionalBranch : r1998_2 +# 1999| Block 1 +# 1999| m1999_4(int) = Phi : from 2:m1999_12, from 3:m1999_16 +# 1999| r1999_5(glval) = VariableAddress[#temp1999:9] : +# 1999| r1999_6(int) = Load[#temp1999:9] : &:r1999_5, m1999_4 +# 1999| r1999_7(glval) = VariableAddress[z] : +# 1999| m1999_8(int) = Store[z] : &:r1999_7, r1999_6 +# 2000| r2000_1(glval) = VariableAddress[a] : +# 2000| r2000_2(bool) = Load[a] : &:r2000_1, m1998_6 +# 2000| v2000_3(void) = ConditionalBranch : r2000_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1997| Block 2 -# 1997| r1997_9(glval) = VariableAddress[x] : -# 1997| r1997_10(int) = Load[x] : &:r1997_9, m1996_8 -# 1997| r1997_11(glval) = VariableAddress[#temp1997:9] : -# 1997| m1997_12(int) = Store[#temp1997:9] : &:r1997_11, r1997_10 +# 1999| Block 2 +# 1999| r1999_9(glval) = VariableAddress[x] : +# 1999| r1999_10(int) = Load[x] : &:r1999_9, m1998_8 +# 1999| r1999_11(glval) = VariableAddress[#temp1999:9] : +# 1999| m1999_12(int) = Store[#temp1999:9] : &:r1999_11, r1999_10 #-----| Goto -> Block 1 -# 1997| Block 3 -# 1997| r1997_13(glval) = VariableAddress[y] : -# 1997| r1997_14(int) = Load[y] : &:r1997_13, m1996_10 -# 1997| r1997_15(glval) = VariableAddress[#temp1997:9] : -# 1997| m1997_16(int) = Store[#temp1997:9] : &:r1997_15, r1997_14 +# 1999| Block 3 +# 1999| r1999_13(glval) = VariableAddress[y] : +# 1999| r1999_14(int) = Load[y] : &:r1999_13, m1998_10 +# 1999| r1999_15(glval) = VariableAddress[#temp1999:9] : +# 1999| m1999_16(int) = Store[#temp1999:9] : &:r1999_15, r1999_14 #-----| Goto -> Block 1 -# 1998| Block 4 -# 1998| m1998_4(int) = Phi : from 5:m1998_12, from 6:m1998_15 -# 1998| r1998_5(glval) = VariableAddress[#temp1998:9] : -# 1998| r1998_6(int) = Load[#temp1998:9] : &:r1998_5, m1998_4 -# 1998| r1998_7(glval) = VariableAddress[z] : -# 1998| m1998_8(int) = Store[z] : &:r1998_7, r1998_6 -# 1999| r1999_1(glval) = VariableAddress[a] : -# 1999| r1999_2(bool) = Load[a] : &:r1999_1, m1996_6 -# 1999| v1999_3(void) = ConditionalBranch : r1999_2 +# 2000| Block 4 +# 2000| m2000_4(int) = Phi : from 5:m2000_12, from 6:m2000_15 +# 2000| r2000_5(glval) = VariableAddress[#temp2000:9] : +# 2000| r2000_6(int) = Load[#temp2000:9] : &:r2000_5, m2000_4 +# 2000| r2000_7(glval) = VariableAddress[z] : +# 2000| m2000_8(int) = Store[z] : &:r2000_7, r2000_6 +# 2001| r2001_1(glval) = VariableAddress[a] : +# 2001| r2001_2(bool) = Load[a] : &:r2001_1, m1998_6 +# 2001| v2001_3(void) = ConditionalBranch : r2001_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 1998| Block 5 -# 1998| r1998_9(glval) = VariableAddress[x] : -# 1998| r1998_10(int) = Load[x] : &:r1998_9, m1996_8 -# 1998| r1998_11(glval) = VariableAddress[#temp1998:9] : -# 1998| m1998_12(int) = Store[#temp1998:9] : &:r1998_11, r1998_10 +# 2000| Block 5 +# 2000| r2000_9(glval) = VariableAddress[x] : +# 2000| r2000_10(int) = Load[x] : &:r2000_9, m1998_8 +# 2000| r2000_11(glval) = VariableAddress[#temp2000:9] : +# 2000| m2000_12(int) = Store[#temp2000:9] : &:r2000_11, r2000_10 #-----| Goto -> Block 4 -# 1998| Block 6 -# 1998| r1998_13(int) = Constant[5] : -# 1998| r1998_14(glval) = VariableAddress[#temp1998:9] : -# 1998| m1998_15(int) = Store[#temp1998:9] : &:r1998_14, r1998_13 +# 2000| Block 6 +# 2000| r2000_13(int) = Constant[5] : +# 2000| r2000_14(glval) = VariableAddress[#temp2000:9] : +# 2000| m2000_15(int) = Store[#temp2000:9] : &:r2000_14, r2000_13 #-----| Goto -> Block 4 -# 1999| Block 7 -# 1999| m1999_4(int) = Phi : from 8:m1999_11, from 9:m1999_14 -# 1999| r1999_5(glval) = VariableAddress[#temp1999:9] : -# 1999| r1999_6(int) = Load[#temp1999:9] : &:r1999_5, m1999_4 -# 1999| r1999_7(glval) = VariableAddress[z] : -# 1999| m1999_8(int) = Store[z] : &:r1999_7, r1999_6 -# 2000| r2000_1(int) = Constant[7] : -# 2000| r2000_2(glval) = VariableAddress[a] : -# 2000| r2000_3(bool) = Load[a] : &:r2000_2, m1996_6 -# 2000| v2000_4(void) = ConditionalBranch : r2000_3 +# 2001| Block 7 +# 2001| m2001_4(int) = Phi : from 8:m2001_11, from 9:m2001_14 +# 2001| r2001_5(glval) = VariableAddress[#temp2001:9] : +# 2001| r2001_6(int) = Load[#temp2001:9] : &:r2001_5, m2001_4 +# 2001| r2001_7(glval) = VariableAddress[z] : +# 2001| m2001_8(int) = Store[z] : &:r2001_7, r2001_6 +# 2002| r2002_1(int) = Constant[7] : +# 2002| r2002_2(glval) = VariableAddress[a] : +# 2002| r2002_3(bool) = Load[a] : &:r2002_2, m1998_6 +# 2002| v2002_4(void) = ConditionalBranch : r2002_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 1999| Block 8 -# 1999| r1999_9(int) = Constant[3] : -# 1999| r1999_10(glval) = VariableAddress[#temp1999:9] : -# 1999| m1999_11(int) = Store[#temp1999:9] : &:r1999_10, r1999_9 +# 2001| Block 8 +# 2001| r2001_9(int) = Constant[3] : +# 2001| r2001_10(glval) = VariableAddress[#temp2001:9] : +# 2001| m2001_11(int) = Store[#temp2001:9] : &:r2001_10, r2001_9 #-----| Goto -> Block 7 -# 1999| Block 9 -# 1999| r1999_12(int) = Constant[5] : -# 1999| r1999_13(glval) = VariableAddress[#temp1999:9] : -# 1999| m1999_14(int) = Store[#temp1999:9] : &:r1999_13, r1999_12 +# 2001| Block 9 +# 2001| r2001_12(int) = Constant[5] : +# 2001| r2001_13(glval) = VariableAddress[#temp2001:9] : +# 2001| m2001_14(int) = Store[#temp2001:9] : &:r2001_13, r2001_12 #-----| Goto -> Block 7 -# 2000| Block 10 -# 2000| m2000_5(glval) = Phi : from 11:m2000_12, from 12:m2000_15 -# 2000| r2000_6(glval) = VariableAddress[#temp2000:6] : -# 2000| r2000_7(glval) = Load[#temp2000:6] : &:r2000_6, m2000_5 -# 2000| m2000_8(int) = Store[?] : &:r2000_7, r2000_1 -# 2000| m2000_9(unknown) = Chi : total:m1996_4, partial:m2000_8 -# 2001| v2001_1(void) = NoOp : -# 1996| v1996_13(void) = ReturnVoid : -# 1996| v1996_14(void) = AliasedUse : ~m2000_9 -# 1996| v1996_15(void) = ExitFunction : - -# 2000| Block 11 -# 2000| r2000_10(glval) = VariableAddress[x] : -# 2000| r2000_11(glval) = VariableAddress[#temp2000:6] : -# 2000| m2000_12(glval) = Store[#temp2000:6] : &:r2000_11, r2000_10 +# 2002| Block 10 +# 2002| m2002_5(glval) = Phi : from 11:m2002_12, from 12:m2002_15 +# 2002| r2002_6(glval) = VariableAddress[#temp2002:6] : +# 2002| r2002_7(glval) = Load[#temp2002:6] : &:r2002_6, m2002_5 +# 2002| m2002_8(int) = Store[?] : &:r2002_7, r2002_1 +# 2002| m2002_9(unknown) = Chi : total:m1998_4, partial:m2002_8 +# 2003| v2003_1(void) = NoOp : +# 1998| v1998_13(void) = ReturnVoid : +# 1998| v1998_14(void) = AliasedUse : ~m2002_9 +# 1998| v1998_15(void) = ExitFunction : + +# 2002| Block 11 +# 2002| r2002_10(glval) = VariableAddress[x] : +# 2002| r2002_11(glval) = VariableAddress[#temp2002:6] : +# 2002| m2002_12(glval) = Store[#temp2002:6] : &:r2002_11, r2002_10 #-----| Goto -> Block 10 -# 2000| Block 12 -# 2000| r2000_13(glval) = VariableAddress[y] : -# 2000| r2000_14(glval) = VariableAddress[#temp2000:6] : -# 2000| m2000_15(glval) = Store[#temp2000:6] : &:r2000_14, r2000_13 +# 2002| Block 12 +# 2002| r2002_13(glval) = VariableAddress[y] : +# 2002| r2002_14(glval) = VariableAddress[#temp2002:6] : +# 2002| m2002_15(glval) = Store[#temp2002:6] : &:r2002_14, r2002_13 #-----| Goto -> Block 10 -# 2006| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2006| Block 0 -# 2006| v2006_1(void) = EnterFunction : -# 2006| m2006_2(unknown) = AliasedDefinition : -# 2006| m2006_3(unknown) = InitializeNonLocal : -# 2006| m2006_4(unknown) = Chi : total:m2006_2, partial:m2006_3 -# 2006| r2006_5(glval) = VariableAddress[a] : -# 2006| m2006_6(bool) = InitializeParameter[a] : &:r2006_5 -# 2006| r2006_7(glval) = VariableAddress[x] : -# 2006| m2006_8(TernaryPodObj) = InitializeParameter[x] : &:r2006_7 -# 2006| r2006_9(glval) = VariableAddress[y] : -# 2006| m2006_10(TernaryPodObj) = InitializeParameter[y] : &:r2006_9 -# 2006| r2006_11(glval) = VariableAddress[z] : -# 2006| m2006_12(TernaryPodObj) = InitializeParameter[z] : &:r2006_11 -# 2007| r2007_1(glval) = VariableAddress[a] : -# 2007| r2007_2(bool) = Load[a] : &:r2007_1, m2006_6 -# 2007| v2007_3(void) = ConditionalBranch : r2007_2 +# 2008| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2008| Block 0 +# 2008| v2008_1(void) = EnterFunction : +# 2008| m2008_2(unknown) = AliasedDefinition : +# 2008| m2008_3(unknown) = InitializeNonLocal : +# 2008| m2008_4(unknown) = Chi : total:m2008_2, partial:m2008_3 +# 2008| r2008_5(glval) = VariableAddress[a] : +# 2008| m2008_6(bool) = InitializeParameter[a] : &:r2008_5 +# 2008| r2008_7(glval) = VariableAddress[x] : +# 2008| m2008_8(TernaryPodObj) = InitializeParameter[x] : &:r2008_7 +# 2008| r2008_9(glval) = VariableAddress[y] : +# 2008| m2008_10(TernaryPodObj) = InitializeParameter[y] : &:r2008_9 +# 2008| r2008_11(glval) = VariableAddress[z] : +# 2008| m2008_12(TernaryPodObj) = InitializeParameter[z] : &:r2008_11 +# 2009| r2009_1(glval) = VariableAddress[a] : +# 2009| r2009_2(bool) = Load[a] : &:r2009_1, m2008_6 +# 2009| v2009_3(void) = ConditionalBranch : r2009_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2007| Block 1 -# 2007| m2007_4(TernaryPodObj) = Phi : from 2:m2007_12, from 3:m2007_16 -# 2007| r2007_5(glval) = VariableAddress[#temp2007:9] : -# 2007| r2007_6(TernaryPodObj) = Load[#temp2007:9] : &:r2007_5, m2007_4 -# 2007| r2007_7(glval) = VariableAddress[z] : -# 2007| m2007_8(TernaryPodObj) = Store[z] : &:r2007_7, r2007_6 -# 2008| r2008_1(glval) = VariableAddress[#temp2008:9] : -# 2008| r2008_2(glval) = VariableAddress[a] : -# 2008| r2008_3(bool) = Load[a] : &:r2008_2, m2006_6 -# 2008| v2008_4(void) = ConditionalBranch : r2008_3 +# 2009| Block 1 +# 2009| m2009_4(TernaryPodObj) = Phi : from 2:m2009_12, from 3:m2009_16 +# 2009| r2009_5(glval) = VariableAddress[#temp2009:9] : +# 2009| r2009_6(TernaryPodObj) = Load[#temp2009:9] : &:r2009_5, m2009_4 +# 2009| r2009_7(glval) = VariableAddress[z] : +# 2009| m2009_8(TernaryPodObj) = Store[z] : &:r2009_7, r2009_6 +# 2010| r2010_1(glval) = VariableAddress[#temp2010:9] : +# 2010| r2010_2(glval) = VariableAddress[a] : +# 2010| r2010_3(bool) = Load[a] : &:r2010_2, m2008_6 +# 2010| v2010_4(void) = ConditionalBranch : r2010_3 #-----| False -> Block 6 #-----| True -> Block 5 -# 2007| Block 2 -# 2007| r2007_9(glval) = VariableAddress[x] : -# 2007| r2007_10(TernaryPodObj) = Load[x] : &:r2007_9, m2006_8 -# 2007| r2007_11(glval) = VariableAddress[#temp2007:9] : -# 2007| m2007_12(TernaryPodObj) = Store[#temp2007:9] : &:r2007_11, r2007_10 +# 2009| Block 2 +# 2009| r2009_9(glval) = VariableAddress[x] : +# 2009| r2009_10(TernaryPodObj) = Load[x] : &:r2009_9, m2008_8 +# 2009| r2009_11(glval) = VariableAddress[#temp2009:9] : +# 2009| m2009_12(TernaryPodObj) = Store[#temp2009:9] : &:r2009_11, r2009_10 #-----| Goto -> Block 1 -# 2007| Block 3 -# 2007| r2007_13(glval) = VariableAddress[y] : -# 2007| r2007_14(TernaryPodObj) = Load[y] : &:r2007_13, m2006_10 -# 2007| r2007_15(glval) = VariableAddress[#temp2007:9] : -# 2007| m2007_16(TernaryPodObj) = Store[#temp2007:9] : &:r2007_15, r2007_14 +# 2009| Block 3 +# 2009| r2009_13(glval) = VariableAddress[y] : +# 2009| r2009_14(TernaryPodObj) = Load[y] : &:r2009_13, m2008_10 +# 2009| r2009_15(glval) = VariableAddress[#temp2009:9] : +# 2009| m2009_16(TernaryPodObj) = Store[#temp2009:9] : &:r2009_15, r2009_14 #-----| Goto -> Block 1 -# 2008| Block 4 -# 2008| m2008_5(TernaryPodObj) = Phi : from 5:m2008_18, from 6:m2008_24 -# 2008| r2008_6(glval) = VariableAddress[#temp2008:9] : -# 2008| r2008_7(TernaryPodObj) = Load[#temp2008:9] : &:r2008_6, m2008_5 -# 2008| m2008_8(TernaryPodObj) = Store[#temp2008:9] : &:r2008_1, r2008_7 -# 2008| r2008_9(TernaryPodObj) = Load[#temp2008:9] : &:r2008_1, m2008_8 -# 2008| r2008_10(glval) = VariableAddress[z] : -# 2008| m2008_11(TernaryPodObj) = Store[z] : &:r2008_10, r2008_9 -# 2009| r2009_1(glval) = VariableAddress[#temp2009:9] : -# 2009| r2009_2(glval) = VariableAddress[a] : -# 2009| r2009_3(bool) = Load[a] : &:r2009_2, m2006_6 -# 2009| v2009_4(void) = ConditionalBranch : r2009_3 +# 2010| Block 4 +# 2010| m2010_5(TernaryPodObj) = Phi : from 5:m2010_18, from 6:m2010_24 +# 2010| r2010_6(glval) = VariableAddress[#temp2010:9] : +# 2010| r2010_7(TernaryPodObj) = Load[#temp2010:9] : &:r2010_6, m2010_5 +# 2010| m2010_8(TernaryPodObj) = Store[#temp2010:9] : &:r2010_1, r2010_7 +# 2010| r2010_9(TernaryPodObj) = Load[#temp2010:9] : &:r2010_1, m2010_8 +# 2010| r2010_10(glval) = VariableAddress[z] : +# 2010| m2010_11(TernaryPodObj) = Store[z] : &:r2010_10, r2010_9 +# 2011| r2011_1(glval) = VariableAddress[#temp2011:9] : +# 2011| r2011_2(glval) = VariableAddress[a] : +# 2011| r2011_3(bool) = Load[a] : &:r2011_2, m2008_6 +# 2011| v2011_4(void) = ConditionalBranch : r2011_3 #-----| False -> Block 9 #-----| True -> Block 8 -# 2008| Block 5 -# 2008| r2008_12(glval) = VariableAddress[#temp2008:13] : -# 2008| r2008_13(glval) = VariableAddress[x] : -# 2008| r2008_14(TernaryPodObj) = Load[x] : &:r2008_13, m2006_8 -# 2008| m2008_15(TernaryPodObj) = Store[#temp2008:13] : &:r2008_12, r2008_14 -# 2008| r2008_16(TernaryPodObj) = Load[#temp2008:13] : &:r2008_12, m2008_15 -# 2008| r2008_17(glval) = VariableAddress[#temp2008:9] : -# 2008| m2008_18(TernaryPodObj) = Store[#temp2008:9] : &:r2008_17, r2008_16 +# 2010| Block 5 +# 2010| r2010_12(glval) = VariableAddress[#temp2010:13] : +# 2010| r2010_13(glval) = VariableAddress[x] : +# 2010| r2010_14(TernaryPodObj) = Load[x] : &:r2010_13, m2008_8 +# 2010| m2010_15(TernaryPodObj) = Store[#temp2010:13] : &:r2010_12, r2010_14 +# 2010| r2010_16(TernaryPodObj) = Load[#temp2010:13] : &:r2010_12, m2010_15 +# 2010| r2010_17(glval) = VariableAddress[#temp2010:9] : +# 2010| m2010_18(TernaryPodObj) = Store[#temp2010:9] : &:r2010_17, r2010_16 #-----| Goto -> Block 4 -# 2008| Block 6 -# 2008| r2008_19(glval) = VariableAddress[#temp2008:17] : -# 2008| r2008_20(TernaryPodObj) = Constant[0] : -# 2008| m2008_21(TernaryPodObj) = Store[#temp2008:17] : &:r2008_19, r2008_20 -# 2008| r2008_22(TernaryPodObj) = Load[#temp2008:17] : &:r2008_19, m2008_21 -# 2008| r2008_23(glval) = VariableAddress[#temp2008:9] : -# 2008| m2008_24(TernaryPodObj) = Store[#temp2008:9] : &:r2008_23, r2008_22 +# 2010| Block 6 +# 2010| r2010_19(glval) = VariableAddress[#temp2010:17] : +# 2010| r2010_20(TernaryPodObj) = Constant[0] : +# 2010| m2010_21(TernaryPodObj) = Store[#temp2010:17] : &:r2010_19, r2010_20 +# 2010| r2010_22(TernaryPodObj) = Load[#temp2010:17] : &:r2010_19, m2010_21 +# 2010| r2010_23(glval) = VariableAddress[#temp2010:9] : +# 2010| m2010_24(TernaryPodObj) = Store[#temp2010:9] : &:r2010_23, r2010_22 #-----| Goto -> Block 4 -# 2009| Block 7 -# 2009| m2009_5(TernaryPodObj) = Phi : from 8:m2009_17, from 9:m2009_23 -# 2009| r2009_6(glval) = VariableAddress[#temp2009:9] : -# 2009| r2009_7(TernaryPodObj) = Load[#temp2009:9] : &:r2009_6, m2009_5 -# 2009| m2009_8(TernaryPodObj) = Store[#temp2009:9] : &:r2009_1, r2009_7 -# 2009| r2009_9(TernaryPodObj) = Load[#temp2009:9] : &:r2009_1, m2009_8 -# 2009| r2009_10(glval) = VariableAddress[z] : -# 2009| m2009_11(TernaryPodObj) = Store[z] : &:r2009_10, r2009_9 -# 2010| r2010_1(glval) = VariableAddress[#temp2010:23] : -# 2010| r2010_2(TernaryPodObj) = Constant[0] : -# 2010| m2010_3(TernaryPodObj) = Store[#temp2010:23] : &:r2010_1, r2010_2 -# 2010| r2010_4(TernaryPodObj) = Load[#temp2010:23] : &:r2010_1, m2010_3 -# 2010| r2010_5(glval) = VariableAddress[a] : -# 2010| r2010_6(bool) = Load[a] : &:r2010_5, m2006_6 -# 2010| v2010_7(void) = ConditionalBranch : r2010_6 +# 2011| Block 7 +# 2011| m2011_5(TernaryPodObj) = Phi : from 8:m2011_17, from 9:m2011_23 +# 2011| r2011_6(glval) = VariableAddress[#temp2011:9] : +# 2011| r2011_7(TernaryPodObj) = Load[#temp2011:9] : &:r2011_6, m2011_5 +# 2011| m2011_8(TernaryPodObj) = Store[#temp2011:9] : &:r2011_1, r2011_7 +# 2011| r2011_9(TernaryPodObj) = Load[#temp2011:9] : &:r2011_1, m2011_8 +# 2011| r2011_10(glval) = VariableAddress[z] : +# 2011| m2011_11(TernaryPodObj) = Store[z] : &:r2011_10, r2011_9 +# 2012| r2012_1(glval) = VariableAddress[#temp2012:23] : +# 2012| r2012_2(TernaryPodObj) = Constant[0] : +# 2012| m2012_3(TernaryPodObj) = Store[#temp2012:23] : &:r2012_1, r2012_2 +# 2012| r2012_4(TernaryPodObj) = Load[#temp2012:23] : &:r2012_1, m2012_3 +# 2012| r2012_5(glval) = VariableAddress[a] : +# 2012| r2012_6(bool) = Load[a] : &:r2012_5, m2008_6 +# 2012| v2012_7(void) = ConditionalBranch : r2012_6 #-----| False -> Block 12 #-----| True -> Block 11 -# 2009| Block 8 -# 2009| r2009_12(glval) = VariableAddress[#temp2009:13] : -# 2009| r2009_13(TernaryPodObj) = Constant[0] : -# 2009| m2009_14(TernaryPodObj) = Store[#temp2009:13] : &:r2009_12, r2009_13 -# 2009| r2009_15(TernaryPodObj) = Load[#temp2009:13] : &:r2009_12, m2009_14 -# 2009| r2009_16(glval) = VariableAddress[#temp2009:9] : -# 2009| m2009_17(TernaryPodObj) = Store[#temp2009:9] : &:r2009_16, r2009_15 +# 2011| Block 8 +# 2011| r2011_12(glval) = VariableAddress[#temp2011:13] : +# 2011| r2011_13(TernaryPodObj) = Constant[0] : +# 2011| m2011_14(TernaryPodObj) = Store[#temp2011:13] : &:r2011_12, r2011_13 +# 2011| r2011_15(TernaryPodObj) = Load[#temp2011:13] : &:r2011_12, m2011_14 +# 2011| r2011_16(glval) = VariableAddress[#temp2011:9] : +# 2011| m2011_17(TernaryPodObj) = Store[#temp2011:9] : &:r2011_16, r2011_15 #-----| Goto -> Block 7 -# 2009| Block 9 -# 2009| r2009_18(glval) = VariableAddress[#temp2009:31] : -# 2009| r2009_19(TernaryPodObj) = Constant[0] : -# 2009| m2009_20(TernaryPodObj) = Store[#temp2009:31] : &:r2009_18, r2009_19 -# 2009| r2009_21(TernaryPodObj) = Load[#temp2009:31] : &:r2009_18, m2009_20 -# 2009| r2009_22(glval) = VariableAddress[#temp2009:9] : -# 2009| m2009_23(TernaryPodObj) = Store[#temp2009:9] : &:r2009_22, r2009_21 +# 2011| Block 9 +# 2011| r2011_18(glval) = VariableAddress[#temp2011:31] : +# 2011| r2011_19(TernaryPodObj) = Constant[0] : +# 2011| m2011_20(TernaryPodObj) = Store[#temp2011:31] : &:r2011_18, r2011_19 +# 2011| r2011_21(TernaryPodObj) = Load[#temp2011:31] : &:r2011_18, m2011_20 +# 2011| r2011_22(glval) = VariableAddress[#temp2011:9] : +# 2011| m2011_23(TernaryPodObj) = Store[#temp2011:9] : &:r2011_22, r2011_21 #-----| Goto -> Block 7 -# 2010| Block 10 -# 2010| m2010_8(TernaryPodObj) = Phi : from 11:m2010_18, from 12:m2010_22 -# 2010| r2010_9(glval) = VariableAddress[#temp2010:10] : -# 2010| r2010_10(TernaryPodObj) = Load[#temp2010:10] : &:r2010_9, m2010_8 -# 2010| r2010_11(glval) = VariableAddress[z] : -# 2010| m2010_12(TernaryPodObj) = Store[z] : &:r2010_11, r2010_10 -# 2010| r2010_13(glval) = CopyValue : r2010_11 -# 2010| m2010_14(TernaryPodObj) = Store[?] : &:r2010_13, r2010_4 -# 2011| v2011_1(void) = NoOp : -# 2006| v2006_13(void) = ReturnVoid : -# 2006| v2006_14(void) = AliasedUse : m2006_3 -# 2006| v2006_15(void) = ExitFunction : - -# 2010| Block 11 -# 2010| r2010_15(glval) = VariableAddress[x] : -# 2010| r2010_16(TernaryPodObj) = Load[x] : &:r2010_15, m2006_8 -# 2010| r2010_17(glval) = VariableAddress[#temp2010:10] : -# 2010| m2010_18(TernaryPodObj) = Store[#temp2010:10] : &:r2010_17, r2010_16 +# 2012| Block 10 +# 2012| m2012_8(TernaryPodObj) = Phi : from 11:m2012_18, from 12:m2012_22 +# 2012| r2012_9(glval) = VariableAddress[#temp2012:10] : +# 2012| r2012_10(TernaryPodObj) = Load[#temp2012:10] : &:r2012_9, m2012_8 +# 2012| r2012_11(glval) = VariableAddress[z] : +# 2012| m2012_12(TernaryPodObj) = Store[z] : &:r2012_11, r2012_10 +# 2012| r2012_13(glval) = CopyValue : r2012_11 +# 2012| m2012_14(TernaryPodObj) = Store[?] : &:r2012_13, r2012_4 +# 2013| v2013_1(void) = NoOp : +# 2008| v2008_13(void) = ReturnVoid : +# 2008| v2008_14(void) = AliasedUse : m2008_3 +# 2008| v2008_15(void) = ExitFunction : + +# 2012| Block 11 +# 2012| r2012_15(glval) = VariableAddress[x] : +# 2012| r2012_16(TernaryPodObj) = Load[x] : &:r2012_15, m2008_8 +# 2012| r2012_17(glval) = VariableAddress[#temp2012:10] : +# 2012| m2012_18(TernaryPodObj) = Store[#temp2012:10] : &:r2012_17, r2012_16 #-----| Goto -> Block 10 -# 2010| Block 12 -# 2010| r2010_19(glval) = VariableAddress[y] : -# 2010| r2010_20(TernaryPodObj) = Load[y] : &:r2010_19, m2006_10 -# 2010| r2010_21(glval) = VariableAddress[#temp2010:10] : -# 2010| m2010_22(TernaryPodObj) = Store[#temp2010:10] : &:r2010_21, r2010_20 +# 2012| Block 12 +# 2012| r2012_19(glval) = VariableAddress[y] : +# 2012| r2012_20(TernaryPodObj) = Load[y] : &:r2012_19, m2008_10 +# 2012| r2012_21(glval) = VariableAddress[#temp2012:10] : +# 2012| m2012_22(TernaryPodObj) = Store[#temp2012:10] : &:r2012_21, r2012_20 #-----| Goto -> Block 10 -# 2013| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| m2013_2(unknown) = AliasedDefinition : -# 2013| m2013_3(unknown) = InitializeNonLocal : -# 2013| m2013_4(unknown) = Chi : total:m2013_2, partial:m2013_3 -# 2013| r2013_5(glval) = VariableAddress[#this] : -# 2013| m2013_6(glval) = InitializeParameter[#this] : &:r2013_5 -# 2013| r2013_7(glval) = Load[#this] : &:r2013_5, m2013_6 -# 2013| m2013_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2013_7 +# 2015| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| m2015_2(unknown) = AliasedDefinition : +# 2015| m2015_3(unknown) = InitializeNonLocal : +# 2015| m2015_4(unknown) = Chi : total:m2015_2, partial:m2015_3 +# 2015| r2015_5(glval) = VariableAddress[#this] : +# 2015| m2015_6(glval) = InitializeParameter[#this] : &:r2015_5 +# 2015| r2015_7(glval) = Load[#this] : &:r2015_5, m2015_6 +# 2015| m2015_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 #-----| r0_5(glval) = VariableAddress[#return] : #-----| r0_6(glval) = VariableAddress[#this] : -#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2013_6 +#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2015_6 #-----| r0_8(glval) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| m0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2013| v2013_9(void) = ReturnIndirection[#this] : &:r2013_7, m2013_8 +# 2015| v2015_9(void) = ReturnIndirection[#this] : &:r2015_7, m2015_8 #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2013| r2013_10(glval) = VariableAddress[#return] : -# 2013| v2013_11(void) = ReturnValue : &:r2013_10, m0_10 -# 2013| v2013_12(void) = AliasedUse : m2013_3 -# 2013| v2013_13(void) = ExitFunction : - -# 2013| void TernaryNonPodObj::TernaryNonPodObj() -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| m2013_2(unknown) = AliasedDefinition : -# 2013| m2013_3(unknown) = InitializeNonLocal : -# 2013| m2013_4(unknown) = Chi : total:m2013_2, partial:m2013_3 -# 2013| r2013_5(glval) = VariableAddress[#this] : -# 2013| m2013_6(glval) = InitializeParameter[#this] : &:r2013_5 -# 2013| r2013_7(glval) = Load[#this] : &:r2013_5, m2013_6 -# 2013| m2013_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2013_7 -# 2013| v2013_9(void) = NoOp : -# 2013| v2013_10(void) = ReturnIndirection[#this] : &:r2013_7, m2013_8 -# 2013| v2013_11(void) = ReturnVoid : -# 2013| v2013_12(void) = AliasedUse : m2013_3 -# 2013| v2013_13(void) = ExitFunction : - -# 2013| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| m2013_2(unknown) = AliasedDefinition : -# 2013| m2013_3(unknown) = InitializeNonLocal : -# 2013| m2013_4(unknown) = Chi : total:m2013_2, partial:m2013_3 -# 2013| r2013_5(glval) = VariableAddress[#this] : -# 2013| m2013_6(glval) = InitializeParameter[#this] : &:r2013_5 -# 2013| r2013_7(glval) = Load[#this] : &:r2013_5, m2013_6 -# 2013| m2013_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2013_7 +# 2015| r2015_10(glval) = VariableAddress[#return] : +# 2015| v2015_11(void) = ReturnValue : &:r2015_10, m0_10 +# 2015| v2015_12(void) = AliasedUse : m2015_3 +# 2015| v2015_13(void) = ExitFunction : + +# 2015| void TernaryNonPodObj::TernaryNonPodObj() +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| m2015_2(unknown) = AliasedDefinition : +# 2015| m2015_3(unknown) = InitializeNonLocal : +# 2015| m2015_4(unknown) = Chi : total:m2015_2, partial:m2015_3 +# 2015| r2015_5(glval) = VariableAddress[#this] : +# 2015| m2015_6(glval) = InitializeParameter[#this] : &:r2015_5 +# 2015| r2015_7(glval) = Load[#this] : &:r2015_5, m2015_6 +# 2015| m2015_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_7 +# 2015| v2015_9(void) = NoOp : +# 2015| v2015_10(void) = ReturnIndirection[#this] : &:r2015_7, m2015_8 +# 2015| v2015_11(void) = ReturnVoid : +# 2015| v2015_12(void) = AliasedUse : m2015_3 +# 2015| v2015_13(void) = ExitFunction : + +# 2015| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| m2015_2(unknown) = AliasedDefinition : +# 2015| m2015_3(unknown) = InitializeNonLocal : +# 2015| m2015_4(unknown) = Chi : total:m2015_2, partial:m2015_3 +# 2015| r2015_5(glval) = VariableAddress[#this] : +# 2015| m2015_6(glval) = InitializeParameter[#this] : &:r2015_5 +# 2015| r2015_7(glval) = Load[#this] : &:r2015_5, m2015_6 +# 2015| m2015_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2013| v2013_9(void) = NoOp : -# 2013| v2013_10(void) = ReturnIndirection[#this] : &:r2013_7, m2013_8 +# 2015| v2015_9(void) = NoOp : +# 2015| v2015_10(void) = ReturnIndirection[#this] : &:r2015_7, m2015_8 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2013| v2013_11(void) = ReturnVoid : -# 2013| v2013_12(void) = AliasedUse : m2013_3 -# 2013| v2013_13(void) = ExitFunction : - -# 2014| void TernaryNonPodObj::~TernaryNonPodObj() -# 2014| Block 0 -# 2014| v2014_1(void) = EnterFunction : -# 2014| m2014_2(unknown) = AliasedDefinition : -# 2014| m2014_3(unknown) = InitializeNonLocal : -# 2014| m2014_4(unknown) = Chi : total:m2014_2, partial:m2014_3 -# 2014| r2014_5(glval) = VariableAddress[#this] : -# 2014| m2014_6(glval) = InitializeParameter[#this] : &:r2014_5 -# 2014| r2014_7(glval) = Load[#this] : &:r2014_5, m2014_6 -# 2014| m2014_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2014_7 -# 2014| v2014_9(void) = NoOp : -# 2014| v2014_10(void) = ReturnIndirection[#this] : &:r2014_7, m2014_8 -# 2014| v2014_11(void) = ReturnVoid : -# 2014| v2014_12(void) = AliasedUse : m2014_3 -# 2014| v2014_13(void) = ExitFunction : - -# 2017| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2017| Block 0 -# 2017| v2017_1(void) = EnterFunction : -# 2017| m2017_2(unknown) = AliasedDefinition : -# 2017| m2017_3(unknown) = InitializeNonLocal : -# 2017| m2017_4(unknown) = Chi : total:m2017_2, partial:m2017_3 -# 2017| r2017_5(glval) = VariableAddress[a] : -# 2017| m2017_6(bool) = InitializeParameter[a] : &:r2017_5 -# 2017| r2017_7(glval) = VariableAddress[x] : -# 2017| m2017_8(TernaryNonPodObj) = InitializeParameter[x] : &:r2017_7 -# 2017| r2017_9(glval) = VariableAddress[y] : -# 2017| m2017_10(TernaryNonPodObj) = InitializeParameter[y] : &:r2017_9 -# 2017| r2017_11(glval) = VariableAddress[z] : -# 2017| m2017_12(TernaryNonPodObj) = InitializeParameter[z] : &:r2017_11 -# 2018| r2018_1(glval) = VariableAddress[z] : -# 2018| r2018_2(glval) = FunctionAddress[operator=] : -# 2018| r2018_3(glval) = VariableAddress[a] : -# 2018| r2018_4(bool) = Load[a] : &:r2018_3, m2017_6 -# 2018| v2018_5(void) = ConditionalBranch : r2018_4 +# 2015| v2015_11(void) = ReturnVoid : +# 2015| v2015_12(void) = AliasedUse : m2015_3 +# 2015| v2015_13(void) = ExitFunction : + +# 2016| void TernaryNonPodObj::~TernaryNonPodObj() +# 2016| Block 0 +# 2016| v2016_1(void) = EnterFunction : +# 2016| m2016_2(unknown) = AliasedDefinition : +# 2016| m2016_3(unknown) = InitializeNonLocal : +# 2016| m2016_4(unknown) = Chi : total:m2016_2, partial:m2016_3 +# 2016| r2016_5(glval) = VariableAddress[#this] : +# 2016| m2016_6(glval) = InitializeParameter[#this] : &:r2016_5 +# 2016| r2016_7(glval) = Load[#this] : &:r2016_5, m2016_6 +# 2016| m2016_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2016_7 +# 2016| v2016_9(void) = NoOp : +# 2016| v2016_10(void) = ReturnIndirection[#this] : &:r2016_7, m2016_8 +# 2016| v2016_11(void) = ReturnVoid : +# 2016| v2016_12(void) = AliasedUse : m2016_3 +# 2016| v2016_13(void) = ExitFunction : + +# 2019| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2019| Block 0 +# 2019| v2019_1(void) = EnterFunction : +# 2019| m2019_2(unknown) = AliasedDefinition : +# 2019| m2019_3(unknown) = InitializeNonLocal : +# 2019| m2019_4(unknown) = Chi : total:m2019_2, partial:m2019_3 +# 2019| r2019_5(glval) = VariableAddress[a] : +# 2019| m2019_6(bool) = InitializeParameter[a] : &:r2019_5 +# 2019| r2019_7(glval) = VariableAddress[x] : +# 2019| m2019_8(TernaryNonPodObj) = InitializeParameter[x] : &:r2019_7 +# 2019| r2019_9(glval) = VariableAddress[y] : +# 2019| m2019_10(TernaryNonPodObj) = InitializeParameter[y] : &:r2019_9 +# 2019| r2019_11(glval) = VariableAddress[z] : +# 2019| m2019_12(TernaryNonPodObj) = InitializeParameter[z] : &:r2019_11 +# 2020| r2020_1(glval) = VariableAddress[z] : +# 2020| r2020_2(glval) = FunctionAddress[operator=] : +# 2020| r2020_3(glval) = VariableAddress[a] : +# 2020| r2020_4(bool) = Load[a] : &:r2020_3, m2019_6 +# 2020| v2020_5(void) = ConditionalBranch : r2020_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2018| Block 1 -# 2018| m2018_6(glval) = Phi : from 2:m2018_21, from 3:m2018_24 -# 2018| r2018_7(glval) = VariableAddress[#temp2018:9] : -# 2018| r2018_8(glval) = Load[#temp2018:9] : &:r2018_7, m2018_6 -# 2018| r2018_9(glval) = Convert : r2018_8 -# 2018| r2018_10(TernaryNonPodObj &) = CopyValue : r2018_9 -# 2018| r2018_11(TernaryNonPodObj &) = Call[operator=] : func:r2018_2, this:r2018_1, 0:r2018_10 -# 2018| m2018_12(unknown) = ^CallSideEffect : ~m2017_4 -# 2018| m2018_13(unknown) = Chi : total:m2017_4, partial:m2018_12 -# 2018| v2018_14(void) = ^IndirectReadSideEffect[-1] : &:r2018_1, m2017_12 -# 2018| v2018_15(void) = ^BufferReadSideEffect[0] : &:r2018_10, ~m2018_13 -# 2018| m2018_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2018_1 -# 2018| m2018_17(TernaryNonPodObj) = Chi : total:m2017_12, partial:m2018_16 -# 2018| r2018_18(glval) = CopyValue : r2018_11 -# 2019| r2019_1(glval) = VariableAddress[z] : -# 2019| r2019_2(glval) = FunctionAddress[operator=] : -# 2019| r2019_3(glval) = VariableAddress[#temp2019:9] : -# 2019| r2019_4(glval) = VariableAddress[a] : -# 2019| r2019_5(bool) = Load[a] : &:r2019_4, m2017_6 -# 2019| v2019_6(void) = ConditionalBranch : r2019_5 +# 2020| Block 1 +# 2020| m2020_6(glval) = Phi : from 2:m2020_21, from 3:m2020_24 +# 2020| r2020_7(glval) = VariableAddress[#temp2020:9] : +# 2020| r2020_8(glval) = Load[#temp2020:9] : &:r2020_7, m2020_6 +# 2020| r2020_9(glval) = Convert : r2020_8 +# 2020| r2020_10(TernaryNonPodObj &) = CopyValue : r2020_9 +# 2020| r2020_11(TernaryNonPodObj &) = Call[operator=] : func:r2020_2, this:r2020_1, 0:r2020_10 +# 2020| m2020_12(unknown) = ^CallSideEffect : ~m2019_4 +# 2020| m2020_13(unknown) = Chi : total:m2019_4, partial:m2020_12 +# 2020| v2020_14(void) = ^IndirectReadSideEffect[-1] : &:r2020_1, m2019_12 +# 2020| v2020_15(void) = ^BufferReadSideEffect[0] : &:r2020_10, ~m2020_13 +# 2020| m2020_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 +# 2020| m2020_17(TernaryNonPodObj) = Chi : total:m2019_12, partial:m2020_16 +# 2020| r2020_18(glval) = CopyValue : r2020_11 +# 2021| r2021_1(glval) = VariableAddress[z] : +# 2021| r2021_2(glval) = FunctionAddress[operator=] : +# 2021| r2021_3(glval) = VariableAddress[#temp2021:9] : +# 2021| r2021_4(glval) = VariableAddress[a] : +# 2021| r2021_5(bool) = Load[a] : &:r2021_4, m2019_6 +# 2021| v2021_6(void) = ConditionalBranch : r2021_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2018| Block 2 -# 2018| r2018_19(glval) = VariableAddress[x] : -# 2018| r2018_20(glval) = VariableAddress[#temp2018:9] : -# 2018| m2018_21(glval) = Store[#temp2018:9] : &:r2018_20, r2018_19 +# 2020| Block 2 +# 2020| r2020_19(glval) = VariableAddress[x] : +# 2020| r2020_20(glval) = VariableAddress[#temp2020:9] : +# 2020| m2020_21(glval) = Store[#temp2020:9] : &:r2020_20, r2020_19 #-----| Goto -> Block 1 -# 2018| Block 3 -# 2018| r2018_22(glval) = VariableAddress[y] : -# 2018| r2018_23(glval) = VariableAddress[#temp2018:9] : -# 2018| m2018_24(glval) = Store[#temp2018:9] : &:r2018_23, r2018_22 +# 2020| Block 3 +# 2020| r2020_22(glval) = VariableAddress[y] : +# 2020| r2020_23(glval) = VariableAddress[#temp2020:9] : +# 2020| m2020_24(glval) = Store[#temp2020:9] : &:r2020_23, r2020_22 #-----| Goto -> Block 1 -# 2019| Block 4 -# 2019| m2019_7(unknown) = Phi : from 5:~m2019_30, from 6:~m2019_42 -# 2019| m2019_8(TernaryNonPodObj) = Phi : from 5:m2019_36, from 6:m2019_47 -# 2019| r2019_9(glval) = VariableAddress[#temp2019:9] : -# 2019| r2019_10(TernaryNonPodObj) = Load[#temp2019:9] : &:r2019_9, m2019_8 -# 2019| m2019_11(TernaryNonPodObj) = Store[#temp2019:9] : &:r2019_3, r2019_10 -# 2019| r2019_12(glval) = Convert : r2019_3 -# 2019| r2019_13(TernaryNonPodObj &) = CopyValue : r2019_12 -# 2019| r2019_14(TernaryNonPodObj &) = Call[operator=] : func:r2019_2, this:r2019_1, 0:r2019_13 -# 2019| m2019_15(unknown) = ^CallSideEffect : ~m2019_7 -# 2019| m2019_16(unknown) = Chi : total:m2019_7, partial:m2019_15 -# 2019| v2019_17(void) = ^IndirectReadSideEffect[-1] : &:r2019_1, m2018_17 -# 2019| v2019_18(void) = ^BufferReadSideEffect[0] : &:r2019_13, ~m2019_11 -# 2019| m2019_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2019_1 -# 2019| m2019_20(TernaryNonPodObj) = Chi : total:m2018_17, partial:m2019_19 -# 2019| r2019_21(glval) = CopyValue : r2019_14 -# 2020| r2020_1(glval) = VariableAddress[z] : -# 2020| r2020_2(glval) = FunctionAddress[operator=] : -# 2020| r2020_3(glval) = VariableAddress[#temp2020:9] : -# 2020| r2020_4(glval) = VariableAddress[a] : -# 2020| r2020_5(bool) = Load[a] : &:r2020_4, m2017_6 -# 2020| v2020_6(void) = ConditionalBranch : r2020_5 +# 2021| Block 4 +# 2021| m2021_7(unknown) = Phi : from 5:~m2021_30, from 6:~m2021_42 +# 2021| m2021_8(TernaryNonPodObj) = Phi : from 5:m2021_36, from 6:m2021_47 +# 2021| r2021_9(glval) = VariableAddress[#temp2021:9] : +# 2021| r2021_10(TernaryNonPodObj) = Load[#temp2021:9] : &:r2021_9, m2021_8 +# 2021| m2021_11(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_3, r2021_10 +# 2021| r2021_12(glval) = Convert : r2021_3 +# 2021| r2021_13(TernaryNonPodObj &) = CopyValue : r2021_12 +# 2021| r2021_14(TernaryNonPodObj &) = Call[operator=] : func:r2021_2, this:r2021_1, 0:r2021_13 +# 2021| m2021_15(unknown) = ^CallSideEffect : ~m2021_7 +# 2021| m2021_16(unknown) = Chi : total:m2021_7, partial:m2021_15 +# 2021| v2021_17(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, m2020_17 +# 2021| v2021_18(void) = ^BufferReadSideEffect[0] : &:r2021_13, ~m2021_11 +# 2021| m2021_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 +# 2021| m2021_20(TernaryNonPodObj) = Chi : total:m2020_17, partial:m2021_19 +# 2021| r2021_21(glval) = CopyValue : r2021_14 +# 2022| r2022_1(glval) = VariableAddress[z] : +# 2022| r2022_2(glval) = FunctionAddress[operator=] : +# 2022| r2022_3(glval) = VariableAddress[#temp2022:9] : +# 2022| r2022_4(glval) = VariableAddress[a] : +# 2022| r2022_5(bool) = Load[a] : &:r2022_4, m2019_6 +# 2022| v2022_6(void) = ConditionalBranch : r2022_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2019| Block 5 -# 2019| r2019_22(glval) = VariableAddress[#temp2019:13] : -# 2019| m2019_23(TernaryNonPodObj) = Uninitialized[#temp2019:13] : &:r2019_22 -# 2019| r2019_24(glval) = FunctionAddress[TernaryNonPodObj] : -# 2019| r2019_25(glval) = VariableAddress[x] : -# 2019| r2019_26(glval) = Convert : r2019_25 -# 2019| r2019_27(TernaryNonPodObj &) = CopyValue : r2019_26 -# 2019| v2019_28(void) = Call[TernaryNonPodObj] : func:r2019_24, this:r2019_22, 0:r2019_27 -# 2019| m2019_29(unknown) = ^CallSideEffect : ~m2018_13 -# 2019| m2019_30(unknown) = Chi : total:m2018_13, partial:m2019_29 -# 2019| v2019_31(void) = ^BufferReadSideEffect[0] : &:r2019_27, ~m2017_8 -# 2019| m2019_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2019_22 -# 2019| m2019_33(TernaryNonPodObj) = Chi : total:m2019_23, partial:m2019_32 -# 2019| r2019_34(TernaryNonPodObj) = Load[#temp2019:13] : &:r2019_22, m2019_33 -# 2019| r2019_35(glval) = VariableAddress[#temp2019:9] : -# 2019| m2019_36(TernaryNonPodObj) = Store[#temp2019:9] : &:r2019_35, r2019_34 +# 2021| Block 5 +# 2021| r2021_22(glval) = VariableAddress[#temp2021:13] : +# 2021| m2021_23(TernaryNonPodObj) = Uninitialized[#temp2021:13] : &:r2021_22 +# 2021| r2021_24(glval) = FunctionAddress[TernaryNonPodObj] : +# 2021| r2021_25(glval) = VariableAddress[x] : +# 2021| r2021_26(glval) = Convert : r2021_25 +# 2021| r2021_27(TernaryNonPodObj &) = CopyValue : r2021_26 +# 2021| v2021_28(void) = Call[TernaryNonPodObj] : func:r2021_24, this:r2021_22, 0:r2021_27 +# 2021| m2021_29(unknown) = ^CallSideEffect : ~m2020_13 +# 2021| m2021_30(unknown) = Chi : total:m2020_13, partial:m2021_29 +# 2021| v2021_31(void) = ^BufferReadSideEffect[0] : &:r2021_27, ~m2019_8 +# 2021| m2021_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_22 +# 2021| m2021_33(TernaryNonPodObj) = Chi : total:m2021_23, partial:m2021_32 +# 2021| r2021_34(TernaryNonPodObj) = Load[#temp2021:13] : &:r2021_22, m2021_33 +# 2021| r2021_35(glval) = VariableAddress[#temp2021:9] : +# 2021| m2021_36(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_35, r2021_34 #-----| Goto -> Block 4 -# 2019| Block 6 -# 2019| r2019_37(glval) = VariableAddress[#temp2019:17] : -# 2019| m2019_38(TernaryNonPodObj) = Uninitialized[#temp2019:17] : &:r2019_37 -# 2019| r2019_39(glval) = FunctionAddress[TernaryNonPodObj] : -# 2019| v2019_40(void) = Call[TernaryNonPodObj] : func:r2019_39, this:r2019_37 -# 2019| m2019_41(unknown) = ^CallSideEffect : ~m2018_13 -# 2019| m2019_42(unknown) = Chi : total:m2018_13, partial:m2019_41 -# 2019| m2019_43(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2019_37 -# 2019| m2019_44(TernaryNonPodObj) = Chi : total:m2019_38, partial:m2019_43 -# 2019| r2019_45(TernaryNonPodObj) = Load[#temp2019:17] : &:r2019_37, m2019_44 -# 2019| r2019_46(glval) = VariableAddress[#temp2019:9] : -# 2019| m2019_47(TernaryNonPodObj) = Store[#temp2019:9] : &:r2019_46, r2019_45 +# 2021| Block 6 +# 2021| r2021_37(glval) = VariableAddress[#temp2021:17] : +# 2021| m2021_38(TernaryNonPodObj) = Uninitialized[#temp2021:17] : &:r2021_37 +# 2021| r2021_39(glval) = FunctionAddress[TernaryNonPodObj] : +# 2021| v2021_40(void) = Call[TernaryNonPodObj] : func:r2021_39, this:r2021_37 +# 2021| m2021_41(unknown) = ^CallSideEffect : ~m2020_13 +# 2021| m2021_42(unknown) = Chi : total:m2020_13, partial:m2021_41 +# 2021| m2021_43(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_37 +# 2021| m2021_44(TernaryNonPodObj) = Chi : total:m2021_38, partial:m2021_43 +# 2021| r2021_45(TernaryNonPodObj) = Load[#temp2021:17] : &:r2021_37, m2021_44 +# 2021| r2021_46(glval) = VariableAddress[#temp2021:9] : +# 2021| m2021_47(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_46, r2021_45 #-----| Goto -> Block 4 -# 2020| Block 7 -# 2020| m2020_7(unknown) = Phi : from 8:~m2020_27, from 9:~m2020_38 -# 2020| m2020_8(TernaryNonPodObj) = Phi : from 8:m2020_32, from 9:m2020_43 -# 2020| r2020_9(glval) = VariableAddress[#temp2020:9] : -# 2020| r2020_10(TernaryNonPodObj) = Load[#temp2020:9] : &:r2020_9, m2020_8 -# 2020| m2020_11(TernaryNonPodObj) = Store[#temp2020:9] : &:r2020_3, r2020_10 -# 2020| r2020_12(glval) = Convert : r2020_3 -# 2020| r2020_13(TernaryNonPodObj &) = CopyValue : r2020_12 -# 2020| r2020_14(TernaryNonPodObj &) = Call[operator=] : func:r2020_2, this:r2020_1, 0:r2020_13 -# 2020| m2020_15(unknown) = ^CallSideEffect : ~m2020_7 -# 2020| m2020_16(unknown) = Chi : total:m2020_7, partial:m2020_15 -# 2020| v2020_17(void) = ^IndirectReadSideEffect[-1] : &:r2020_1, m2019_20 -# 2020| v2020_18(void) = ^BufferReadSideEffect[0] : &:r2020_13, ~m2020_11 -# 2020| m2020_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 -# 2020| m2020_20(TernaryNonPodObj) = Chi : total:m2019_20, partial:m2020_19 -# 2020| r2020_21(glval) = CopyValue : r2020_14 -# 2021| r2021_1(glval) = VariableAddress[z] : -# 2021| r2021_2(glval) = FunctionAddress[operator=] : -# 2021| r2021_3(glval) = VariableAddress[a] : -# 2021| r2021_4(bool) = Load[a] : &:r2021_3, m2017_6 -# 2021| v2021_5(void) = ConditionalBranch : r2021_4 +# 2022| Block 7 +# 2022| m2022_7(unknown) = Phi : from 8:~m2022_27, from 9:~m2022_38 +# 2022| m2022_8(TernaryNonPodObj) = Phi : from 8:m2022_32, from 9:m2022_43 +# 2022| r2022_9(glval) = VariableAddress[#temp2022:9] : +# 2022| r2022_10(TernaryNonPodObj) = Load[#temp2022:9] : &:r2022_9, m2022_8 +# 2022| m2022_11(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_3, r2022_10 +# 2022| r2022_12(glval) = Convert : r2022_3 +# 2022| r2022_13(TernaryNonPodObj &) = CopyValue : r2022_12 +# 2022| r2022_14(TernaryNonPodObj &) = Call[operator=] : func:r2022_2, this:r2022_1, 0:r2022_13 +# 2022| m2022_15(unknown) = ^CallSideEffect : ~m2022_7 +# 2022| m2022_16(unknown) = Chi : total:m2022_7, partial:m2022_15 +# 2022| v2022_17(void) = ^IndirectReadSideEffect[-1] : &:r2022_1, m2021_20 +# 2022| v2022_18(void) = ^BufferReadSideEffect[0] : &:r2022_13, ~m2022_11 +# 2022| m2022_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_1 +# 2022| m2022_20(TernaryNonPodObj) = Chi : total:m2021_20, partial:m2022_19 +# 2022| r2022_21(glval) = CopyValue : r2022_14 +# 2023| r2023_1(glval) = VariableAddress[z] : +# 2023| r2023_2(glval) = FunctionAddress[operator=] : +# 2023| r2023_3(glval) = VariableAddress[a] : +# 2023| r2023_4(bool) = Load[a] : &:r2023_3, m2019_6 +# 2023| v2023_5(void) = ConditionalBranch : r2023_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2020| Block 8 -# 2020| r2020_22(glval) = VariableAddress[#temp2020:13] : -# 2020| m2020_23(TernaryNonPodObj) = Uninitialized[#temp2020:13] : &:r2020_22 -# 2020| r2020_24(glval) = FunctionAddress[TernaryNonPodObj] : -# 2020| v2020_25(void) = Call[TernaryNonPodObj] : func:r2020_24, this:r2020_22 -# 2020| m2020_26(unknown) = ^CallSideEffect : ~m2019_16 -# 2020| m2020_27(unknown) = Chi : total:m2019_16, partial:m2020_26 -# 2020| m2020_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_22 -# 2020| m2020_29(TernaryNonPodObj) = Chi : total:m2020_23, partial:m2020_28 -# 2020| r2020_30(TernaryNonPodObj) = Load[#temp2020:13] : &:r2020_22, m2020_29 -# 2020| r2020_31(glval) = VariableAddress[#temp2020:9] : -# 2020| m2020_32(TernaryNonPodObj) = Store[#temp2020:9] : &:r2020_31, r2020_30 +# 2022| Block 8 +# 2022| r2022_22(glval) = VariableAddress[#temp2022:13] : +# 2022| m2022_23(TernaryNonPodObj) = Uninitialized[#temp2022:13] : &:r2022_22 +# 2022| r2022_24(glval) = FunctionAddress[TernaryNonPodObj] : +# 2022| v2022_25(void) = Call[TernaryNonPodObj] : func:r2022_24, this:r2022_22 +# 2022| m2022_26(unknown) = ^CallSideEffect : ~m2021_16 +# 2022| m2022_27(unknown) = Chi : total:m2021_16, partial:m2022_26 +# 2022| m2022_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_22 +# 2022| m2022_29(TernaryNonPodObj) = Chi : total:m2022_23, partial:m2022_28 +# 2022| r2022_30(TernaryNonPodObj) = Load[#temp2022:13] : &:r2022_22, m2022_29 +# 2022| r2022_31(glval) = VariableAddress[#temp2022:9] : +# 2022| m2022_32(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_31, r2022_30 #-----| Goto -> Block 7 -# 2020| Block 9 -# 2020| r2020_33(glval) = VariableAddress[#temp2020:34] : -# 2020| m2020_34(TernaryNonPodObj) = Uninitialized[#temp2020:34] : &:r2020_33 -# 2020| r2020_35(glval) = FunctionAddress[TernaryNonPodObj] : -# 2020| v2020_36(void) = Call[TernaryNonPodObj] : func:r2020_35, this:r2020_33 -# 2020| m2020_37(unknown) = ^CallSideEffect : ~m2019_16 -# 2020| m2020_38(unknown) = Chi : total:m2019_16, partial:m2020_37 -# 2020| m2020_39(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_33 -# 2020| m2020_40(TernaryNonPodObj) = Chi : total:m2020_34, partial:m2020_39 -# 2020| r2020_41(TernaryNonPodObj) = Load[#temp2020:34] : &:r2020_33, m2020_40 -# 2020| r2020_42(glval) = VariableAddress[#temp2020:9] : -# 2020| m2020_43(TernaryNonPodObj) = Store[#temp2020:9] : &:r2020_42, r2020_41 +# 2022| Block 9 +# 2022| r2022_33(glval) = VariableAddress[#temp2022:34] : +# 2022| m2022_34(TernaryNonPodObj) = Uninitialized[#temp2022:34] : &:r2022_33 +# 2022| r2022_35(glval) = FunctionAddress[TernaryNonPodObj] : +# 2022| v2022_36(void) = Call[TernaryNonPodObj] : func:r2022_35, this:r2022_33 +# 2022| m2022_37(unknown) = ^CallSideEffect : ~m2021_16 +# 2022| m2022_38(unknown) = Chi : total:m2021_16, partial:m2022_37 +# 2022| m2022_39(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_33 +# 2022| m2022_40(TernaryNonPodObj) = Chi : total:m2022_34, partial:m2022_39 +# 2022| r2022_41(TernaryNonPodObj) = Load[#temp2022:34] : &:r2022_33, m2022_40 +# 2022| r2022_42(glval) = VariableAddress[#temp2022:9] : +# 2022| m2022_43(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_42, r2022_41 #-----| Goto -> Block 7 -# 2021| Block 10 -# 2021| m2021_6(glval) = Phi : from 11:m2021_40, from 12:m2021_43 -# 2021| r2021_7(glval) = VariableAddress[#temp2021:10] : -# 2021| r2021_8(glval) = Load[#temp2021:10] : &:r2021_7, m2021_6 -# 2021| r2021_9(glval) = Convert : r2021_8 -# 2021| r2021_10(TernaryNonPodObj &) = CopyValue : r2021_9 -# 2021| r2021_11(TernaryNonPodObj &) = Call[operator=] : func:r2021_2, this:r2021_1, 0:r2021_10 -# 2021| m2021_12(unknown) = ^CallSideEffect : ~m2020_16 -# 2021| m2021_13(unknown) = Chi : total:m2020_16, partial:m2021_12 -# 2021| v2021_14(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, m2020_20 -# 2021| v2021_15(void) = ^BufferReadSideEffect[0] : &:r2021_10, ~m2021_13 -# 2021| m2021_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 -# 2021| m2021_17(TernaryNonPodObj) = Chi : total:m2020_20, partial:m2021_16 -# 2021| r2021_18(glval) = CopyValue : r2021_11 -# 2021| r2021_19(glval) = FunctionAddress[operator=] : -# 2021| r2021_20(glval) = VariableAddress[#temp2021:23] : -# 2021| m2021_21(TernaryNonPodObj) = Uninitialized[#temp2021:23] : &:r2021_20 -# 2021| r2021_22(glval) = FunctionAddress[TernaryNonPodObj] : -# 2021| v2021_23(void) = Call[TernaryNonPodObj] : func:r2021_22, this:r2021_20 -# 2021| m2021_24(unknown) = ^CallSideEffect : ~m2021_13 -# 2021| m2021_25(unknown) = Chi : total:m2021_13, partial:m2021_24 -# 2021| m2021_26(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_20 -# 2021| m2021_27(TernaryNonPodObj) = Chi : total:m2021_21, partial:m2021_26 -# 2021| r2021_28(glval) = Convert : r2021_20 -# 2021| r2021_29(TernaryNonPodObj &) = CopyValue : r2021_28 -# 2021| r2021_30(TernaryNonPodObj &) = Call[operator=] : func:r2021_19, this:r2021_18, 0:r2021_29 -# 2021| m2021_31(unknown) = ^CallSideEffect : ~m2021_25 -# 2021| m2021_32(unknown) = Chi : total:m2021_25, partial:m2021_31 -# 2021| v2021_33(void) = ^IndirectReadSideEffect[-1] : &:r2021_18, m2021_17 -# 2021| v2021_34(void) = ^BufferReadSideEffect[0] : &:r2021_29, ~m2021_27 -# 2021| m2021_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_18 -# 2021| m2021_36(TernaryNonPodObj) = Chi : total:m2021_17, partial:m2021_35 -# 2021| r2021_37(glval) = CopyValue : r2021_30 -# 2022| v2022_1(void) = NoOp : -# 2017| v2017_13(void) = ReturnVoid : -# 2017| v2017_14(void) = AliasedUse : ~m2021_32 -# 2017| v2017_15(void) = ExitFunction : - -# 2021| Block 11 -# 2021| r2021_38(glval) = VariableAddress[x] : -# 2021| r2021_39(glval) = VariableAddress[#temp2021:10] : -# 2021| m2021_40(glval) = Store[#temp2021:10] : &:r2021_39, r2021_38 +# 2023| Block 10 +# 2023| m2023_6(glval) = Phi : from 11:m2023_40, from 12:m2023_43 +# 2023| r2023_7(glval) = VariableAddress[#temp2023:10] : +# 2023| r2023_8(glval) = Load[#temp2023:10] : &:r2023_7, m2023_6 +# 2023| r2023_9(glval) = Convert : r2023_8 +# 2023| r2023_10(TernaryNonPodObj &) = CopyValue : r2023_9 +# 2023| r2023_11(TernaryNonPodObj &) = Call[operator=] : func:r2023_2, this:r2023_1, 0:r2023_10 +# 2023| m2023_12(unknown) = ^CallSideEffect : ~m2022_16 +# 2023| m2023_13(unknown) = Chi : total:m2022_16, partial:m2023_12 +# 2023| v2023_14(void) = ^IndirectReadSideEffect[-1] : &:r2023_1, m2022_20 +# 2023| v2023_15(void) = ^BufferReadSideEffect[0] : &:r2023_10, ~m2023_13 +# 2023| m2023_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_1 +# 2023| m2023_17(TernaryNonPodObj) = Chi : total:m2022_20, partial:m2023_16 +# 2023| r2023_18(glval) = CopyValue : r2023_11 +# 2023| r2023_19(glval) = FunctionAddress[operator=] : +# 2023| r2023_20(glval) = VariableAddress[#temp2023:23] : +# 2023| m2023_21(TernaryNonPodObj) = Uninitialized[#temp2023:23] : &:r2023_20 +# 2023| r2023_22(glval) = FunctionAddress[TernaryNonPodObj] : +# 2023| v2023_23(void) = Call[TernaryNonPodObj] : func:r2023_22, this:r2023_20 +# 2023| m2023_24(unknown) = ^CallSideEffect : ~m2023_13 +# 2023| m2023_25(unknown) = Chi : total:m2023_13, partial:m2023_24 +# 2023| m2023_26(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_20 +# 2023| m2023_27(TernaryNonPodObj) = Chi : total:m2023_21, partial:m2023_26 +# 2023| r2023_28(glval) = Convert : r2023_20 +# 2023| r2023_29(TernaryNonPodObj &) = CopyValue : r2023_28 +# 2023| r2023_30(TernaryNonPodObj &) = Call[operator=] : func:r2023_19, this:r2023_18, 0:r2023_29 +# 2023| m2023_31(unknown) = ^CallSideEffect : ~m2023_25 +# 2023| m2023_32(unknown) = Chi : total:m2023_25, partial:m2023_31 +# 2023| v2023_33(void) = ^IndirectReadSideEffect[-1] : &:r2023_18, m2023_17 +# 2023| v2023_34(void) = ^BufferReadSideEffect[0] : &:r2023_29, ~m2023_27 +# 2023| m2023_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_18 +# 2023| m2023_36(TernaryNonPodObj) = Chi : total:m2023_17, partial:m2023_35 +# 2023| r2023_37(glval) = CopyValue : r2023_30 +# 2024| v2024_1(void) = NoOp : +# 2019| v2019_13(void) = ReturnVoid : +# 2019| v2019_14(void) = AliasedUse : ~m2023_32 +# 2019| v2019_15(void) = ExitFunction : + +# 2023| Block 11 +# 2023| r2023_38(glval) = VariableAddress[x] : +# 2023| r2023_39(glval) = VariableAddress[#temp2023:10] : +# 2023| m2023_40(glval) = Store[#temp2023:10] : &:r2023_39, r2023_38 #-----| Goto -> Block 10 -# 2021| Block 12 -# 2021| r2021_41(glval) = VariableAddress[y] : -# 2021| r2021_42(glval) = VariableAddress[#temp2021:10] : -# 2021| m2021_43(glval) = Store[#temp2021:10] : &:r2021_42, r2021_41 +# 2023| Block 12 +# 2023| r2023_41(glval) = VariableAddress[y] : +# 2023| r2023_42(glval) = VariableAddress[#temp2023:10] : +# 2023| m2023_43(glval) = Store[#temp2023:10] : &:r2023_42, r2023_41 #-----| Goto -> Block 10 -# 2026| unsigned int CommaTest(unsigned int) -# 2026| Block 0 -# 2026| v2026_1(void) = EnterFunction : -# 2026| m2026_2(unknown) = AliasedDefinition : -# 2026| m2026_3(unknown) = InitializeNonLocal : -# 2026| m2026_4(unknown) = Chi : total:m2026_2, partial:m2026_3 -# 2026| r2026_5(glval) = VariableAddress[x] : -# 2026| m2026_6(unsigned int) = InitializeParameter[x] : &:r2026_5 -# 2027| r2027_1(glval) = VariableAddress[y] : -# 2027| m2027_2(unsigned int) = Uninitialized[y] : &:r2027_1 -# 2028| r2028_1(glval) = VariableAddress[x] : -# 2028| r2028_2(unsigned int) = Load[x] : &:r2028_1, m2026_6 -# 2028| r2028_3(unsigned int) = Constant[100] : -# 2028| r2028_4(bool) = CompareLT : r2028_2, r2028_3 -# 2028| v2028_5(void) = ConditionalBranch : r2028_4 +# 2028| unsigned int CommaTest(unsigned int) +# 2028| Block 0 +# 2028| v2028_1(void) = EnterFunction : +# 2028| m2028_2(unknown) = AliasedDefinition : +# 2028| m2028_3(unknown) = InitializeNonLocal : +# 2028| m2028_4(unknown) = Chi : total:m2028_2, partial:m2028_3 +# 2028| r2028_5(glval) = VariableAddress[x] : +# 2028| m2028_6(unsigned int) = InitializeParameter[x] : &:r2028_5 +# 2029| r2029_1(glval) = VariableAddress[y] : +# 2029| m2029_2(unsigned int) = Uninitialized[y] : &:r2029_1 +# 2030| r2030_1(glval) = VariableAddress[x] : +# 2030| r2030_2(unsigned int) = Load[x] : &:r2030_1, m2028_6 +# 2030| r2030_3(unsigned int) = Constant[100] : +# 2030| r2030_4(bool) = CompareLT : r2030_2, r2030_3 +# 2030| v2030_5(void) = ConditionalBranch : r2030_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2028| Block 1 -# 2028| m2028_6(unknown) = Phi : from 2:~m2029_6, from 3:~m2030_6 -# 2028| m2028_7(unsigned int) = Phi : from 2:m2028_13, from 3:m2028_15 -# 2028| r2028_8(glval) = VariableAddress[#temp2028:7] : -# 2028| r2028_9(unsigned int) = Load[#temp2028:7] : &:r2028_8, m2028_7 -# 2028| r2028_10(glval) = VariableAddress[y] : -# 2028| m2028_11(unsigned int) = Store[y] : &:r2028_10, r2028_9 -# 2031| r2031_1(glval) = VariableAddress[#return] : -# 2031| m2031_2(unsigned int) = Uninitialized[#return] : &:r2031_1 -# 2026| r2026_7(glval) = VariableAddress[#return] : -# 2026| v2026_8(void) = ReturnValue : &:r2026_7, m2031_2 -# 2026| v2026_9(void) = AliasedUse : ~m2028_6 -# 2026| v2026_10(void) = ExitFunction : - -# 2029| Block 2 -# 2029| r2029_1(glval) = FunctionAddress[CommaTestHelper] : -# 2029| r2029_2(glval) = VariableAddress[x] : -# 2029| r2029_3(unsigned int) = Load[x] : &:r2029_2, m2026_6 -# 2029| v2029_4(void) = Call[CommaTestHelper] : func:r2029_1, 0:r2029_3 -# 2029| m2029_5(unknown) = ^CallSideEffect : ~m2026_4 -# 2029| m2029_6(unknown) = Chi : total:m2026_4, partial:m2029_5 -# 2029| r2029_7(glval) = VariableAddress[x] : -# 2029| r2029_8(unsigned int) = Load[x] : &:r2029_7, m2026_6 -# 2029| r2029_9(unsigned int) = CopyValue : r2029_8 -# 2028| r2028_12(glval) = VariableAddress[#temp2028:7] : -# 2028| m2028_13(unsigned int) = Store[#temp2028:7] : &:r2028_12, r2029_9 +# 2030| Block 1 +# 2030| m2030_6(unknown) = Phi : from 2:~m2031_6, from 3:~m2032_6 +# 2030| m2030_7(unsigned int) = Phi : from 2:m2030_13, from 3:m2030_15 +# 2030| r2030_8(glval) = VariableAddress[#temp2030:7] : +# 2030| r2030_9(unsigned int) = Load[#temp2030:7] : &:r2030_8, m2030_7 +# 2030| r2030_10(glval) = VariableAddress[y] : +# 2030| m2030_11(unsigned int) = Store[y] : &:r2030_10, r2030_9 +# 2033| r2033_1(glval) = VariableAddress[#return] : +# 2033| m2033_2(unsigned int) = Uninitialized[#return] : &:r2033_1 +# 2028| r2028_7(glval) = VariableAddress[#return] : +# 2028| v2028_8(void) = ReturnValue : &:r2028_7, m2033_2 +# 2028| v2028_9(void) = AliasedUse : ~m2030_6 +# 2028| v2028_10(void) = ExitFunction : + +# 2031| Block 2 +# 2031| r2031_1(glval) = FunctionAddress[CommaTestHelper] : +# 2031| r2031_2(glval) = VariableAddress[x] : +# 2031| r2031_3(unsigned int) = Load[x] : &:r2031_2, m2028_6 +# 2031| v2031_4(void) = Call[CommaTestHelper] : func:r2031_1, 0:r2031_3 +# 2031| m2031_5(unknown) = ^CallSideEffect : ~m2028_4 +# 2031| m2031_6(unknown) = Chi : total:m2028_4, partial:m2031_5 +# 2031| r2031_7(glval) = VariableAddress[x] : +# 2031| r2031_8(unsigned int) = Load[x] : &:r2031_7, m2028_6 +# 2031| r2031_9(unsigned int) = CopyValue : r2031_8 +# 2030| r2030_12(glval) = VariableAddress[#temp2030:7] : +# 2030| m2030_13(unsigned int) = Store[#temp2030:7] : &:r2030_12, r2031_9 #-----| Goto -> Block 1 -# 2030| Block 3 -# 2030| r2030_1(glval) = FunctionAddress[CommaTestHelper] : -# 2030| r2030_2(glval) = VariableAddress[x] : -# 2030| r2030_3(unsigned int) = Load[x] : &:r2030_2, m2026_6 -# 2030| v2030_4(void) = Call[CommaTestHelper] : func:r2030_1, 0:r2030_3 -# 2030| m2030_5(unknown) = ^CallSideEffect : ~m2026_4 -# 2030| m2030_6(unknown) = Chi : total:m2026_4, partial:m2030_5 -# 2030| r2030_7(int) = Constant[10] : -# 2030| r2030_8(int) = CopyValue : r2030_7 -# 2030| r2030_9(unsigned int) = Convert : r2030_8 -# 2028| r2028_14(glval) = VariableAddress[#temp2028:7] : -# 2028| m2028_15(unsigned int) = Store[#temp2028:7] : &:r2028_14, r2030_9 +# 2032| Block 3 +# 2032| r2032_1(glval) = FunctionAddress[CommaTestHelper] : +# 2032| r2032_2(glval) = VariableAddress[x] : +# 2032| r2032_3(unsigned int) = Load[x] : &:r2032_2, m2028_6 +# 2032| v2032_4(void) = Call[CommaTestHelper] : func:r2032_1, 0:r2032_3 +# 2032| m2032_5(unknown) = ^CallSideEffect : ~m2028_4 +# 2032| m2032_6(unknown) = Chi : total:m2028_4, partial:m2032_5 +# 2032| r2032_7(int) = Constant[10] : +# 2032| r2032_8(int) = CopyValue : r2032_7 +# 2032| r2032_9(unsigned int) = Convert : r2032_8 +# 2030| r2030_14(glval) = VariableAddress[#temp2030:7] : +# 2030| m2030_15(unsigned int) = Store[#temp2030:7] : &:r2030_14, r2032_9 #-----| Goto -> Block 1 -# 2033| void NewDeleteMem() -# 2033| Block 0 -# 2033| v2033_1(void) = EnterFunction : -# 2033| m2033_2(unknown) = AliasedDefinition : -# 2033| m2033_3(unknown) = InitializeNonLocal : -# 2033| m2033_4(unknown) = Chi : total:m2033_2, partial:m2033_3 -# 2034| r2034_1(glval) = VariableAddress[x] : -# 2034| r2034_2(glval) = FunctionAddress[operator new] : -# 2034| r2034_3(unsigned long) = Constant[4] : -# 2034| r2034_4(void *) = Call[operator new] : func:r2034_2, 0:r2034_3 -# 2034| m2034_5(unknown) = ^CallSideEffect : ~m2033_4 -# 2034| m2034_6(unknown) = Chi : total:m2033_4, partial:m2034_5 -# 2034| m2034_7(unknown) = ^InitializeDynamicAllocation : &:r2034_4 -# 2034| r2034_8(int *) = Convert : r2034_4 -# 2034| m2034_9(int *) = Store[x] : &:r2034_1, r2034_8 -# 2035| r2035_1(int) = Constant[6] : -# 2035| r2035_2(glval) = VariableAddress[x] : -# 2035| r2035_3(int *) = Load[x] : &:r2035_2, m2034_9 -# 2035| r2035_4(glval) = CopyValue : r2035_3 -# 2035| m2035_5(int) = Store[?] : &:r2035_4, r2035_1 -# 2035| m2035_6(unknown) = Chi : total:m2034_7, partial:m2035_5 -# 2036| r2036_1(glval) = FunctionAddress[operator delete] : -# 2036| r2036_2(glval) = VariableAddress[x] : -# 2036| r2036_3(int *) = Load[x] : &:r2036_2, m2034_9 -# 2036| v2036_4(void) = Call[operator delete] : func:r2036_1, 0:r2036_3 -# 2036| m2036_5(unknown) = ^CallSideEffect : ~m2034_6 -# 2036| m2036_6(unknown) = Chi : total:m2034_6, partial:m2036_5 -# 2037| v2037_1(void) = NoOp : -# 2033| v2033_5(void) = ReturnVoid : -# 2033| v2033_6(void) = AliasedUse : ~m2036_6 -# 2033| v2033_7(void) = ExitFunction : - -# 2039| void Base2::Base2() -# 2039| Block 0 -# 2039| v2039_1(void) = EnterFunction : -# 2039| m2039_2(unknown) = AliasedDefinition : -# 2039| m2039_3(unknown) = InitializeNonLocal : -# 2039| m2039_4(unknown) = Chi : total:m2039_2, partial:m2039_3 -# 2039| r2039_5(glval) = VariableAddress[#this] : -# 2039| m2039_6(glval) = InitializeParameter[#this] : &:r2039_5 -# 2039| r2039_7(glval) = Load[#this] : &:r2039_5, m2039_6 -# 2039| m2039_8(Base2) = InitializeIndirection[#this] : &:r2039_7 -# 2039| v2039_9(void) = NoOp : -# 2039| v2039_10(void) = ReturnIndirection[#this] : &:r2039_7, m2039_8 -# 2039| v2039_11(void) = ReturnVoid : -# 2039| v2039_12(void) = AliasedUse : m2039_3 -# 2039| v2039_13(void) = ExitFunction : - -# 2041| void Base2::operator delete(void*) +# 2035| void NewDeleteMem() +# 2035| Block 0 +# 2035| v2035_1(void) = EnterFunction : +# 2035| m2035_2(unknown) = AliasedDefinition : +# 2035| m2035_3(unknown) = InitializeNonLocal : +# 2035| m2035_4(unknown) = Chi : total:m2035_2, partial:m2035_3 +# 2036| r2036_1(glval) = VariableAddress[x] : +# 2036| r2036_2(glval) = FunctionAddress[operator new] : +# 2036| r2036_3(unsigned long) = Constant[4] : +# 2036| r2036_4(void *) = Call[operator new] : func:r2036_2, 0:r2036_3 +# 2036| m2036_5(unknown) = ^CallSideEffect : ~m2035_4 +# 2036| m2036_6(unknown) = Chi : total:m2035_4, partial:m2036_5 +# 2036| m2036_7(unknown) = ^InitializeDynamicAllocation : &:r2036_4 +# 2036| r2036_8(int *) = Convert : r2036_4 +# 2036| m2036_9(int *) = Store[x] : &:r2036_1, r2036_8 +# 2037| r2037_1(int) = Constant[6] : +# 2037| r2037_2(glval) = VariableAddress[x] : +# 2037| r2037_3(int *) = Load[x] : &:r2037_2, m2036_9 +# 2037| r2037_4(glval) = CopyValue : r2037_3 +# 2037| m2037_5(int) = Store[?] : &:r2037_4, r2037_1 +# 2037| m2037_6(unknown) = Chi : total:m2036_7, partial:m2037_5 +# 2038| r2038_1(glval) = FunctionAddress[operator delete] : +# 2038| r2038_2(glval) = VariableAddress[x] : +# 2038| r2038_3(int *) = Load[x] : &:r2038_2, m2036_9 +# 2038| v2038_4(void) = Call[operator delete] : func:r2038_1, 0:r2038_3 +# 2038| m2038_5(unknown) = ^CallSideEffect : ~m2036_6 +# 2038| m2038_6(unknown) = Chi : total:m2036_6, partial:m2038_5 +# 2039| v2039_1(void) = NoOp : +# 2035| v2035_5(void) = ReturnVoid : +# 2035| v2035_6(void) = AliasedUse : ~m2038_6 +# 2035| v2035_7(void) = ExitFunction : + +# 2041| void Base2::Base2() # 2041| Block 0 -# 2041| v2041_1(void) = EnterFunction : -# 2041| m2041_2(unknown) = AliasedDefinition : -# 2041| m2041_3(unknown) = InitializeNonLocal : -# 2041| m2041_4(unknown) = Chi : total:m2041_2, partial:m2041_3 -# 2041| r2041_5(glval) = VariableAddress[p] : -# 2041| m2041_6(void *) = InitializeParameter[p] : &:r2041_5 -# 2041| r2041_7(void *) = Load[p] : &:r2041_5, m2041_6 -# 2041| m2041_8(unknown) = InitializeIndirection[p] : &:r2041_7 -# 2042| v2042_1(void) = NoOp : -# 2041| v2041_9(void) = ReturnIndirection[p] : &:r2041_7, m2041_8 -# 2041| v2041_10(void) = ReturnVoid : -# 2041| v2041_11(void) = AliasedUse : m2041_3 -# 2041| v2041_12(void) = ExitFunction : - -# 2043| void Base2::~Base2() +# 2041| v2041_1(void) = EnterFunction : +# 2041| m2041_2(unknown) = AliasedDefinition : +# 2041| m2041_3(unknown) = InitializeNonLocal : +# 2041| m2041_4(unknown) = Chi : total:m2041_2, partial:m2041_3 +# 2041| r2041_5(glval) = VariableAddress[#this] : +# 2041| m2041_6(glval) = InitializeParameter[#this] : &:r2041_5 +# 2041| r2041_7(glval) = Load[#this] : &:r2041_5, m2041_6 +# 2041| m2041_8(Base2) = InitializeIndirection[#this] : &:r2041_7 +# 2041| v2041_9(void) = NoOp : +# 2041| v2041_10(void) = ReturnIndirection[#this] : &:r2041_7, m2041_8 +# 2041| v2041_11(void) = ReturnVoid : +# 2041| v2041_12(void) = AliasedUse : m2041_3 +# 2041| v2041_13(void) = ExitFunction : + +# 2043| void Base2::operator delete(void*) # 2043| Block 0 -# 2043| v2043_1(void) = EnterFunction : -# 2043| m2043_2(unknown) = AliasedDefinition : -# 2043| m2043_3(unknown) = InitializeNonLocal : -# 2043| m2043_4(unknown) = Chi : total:m2043_2, partial:m2043_3 -# 2043| r2043_5(glval) = VariableAddress[#this] : -# 2043| m2043_6(glval) = InitializeParameter[#this] : &:r2043_5 -# 2043| r2043_7(glval) = Load[#this] : &:r2043_5, m2043_6 -# 2043| m2043_8(Base2) = InitializeIndirection[#this] : &:r2043_7 -# 2043| v2043_9(void) = NoOp : -# 2043| v2043_10(void) = ReturnIndirection[#this] : &:r2043_7, m2043_8 -# 2043| v2043_11(void) = ReturnVoid : -# 2043| v2043_12(void) = AliasedUse : m2043_3 -# 2043| v2043_13(void) = ExitFunction : - -# 2046| void Derived2::Derived2() -# 2046| Block 0 -# 2046| v2046_1(void) = EnterFunction : -# 2046| m2046_2(unknown) = AliasedDefinition : -# 2046| m2046_3(unknown) = InitializeNonLocal : -# 2046| m2046_4(unknown) = Chi : total:m2046_2, partial:m2046_3 -# 2046| r2046_5(glval) = VariableAddress[#this] : -# 2046| m2046_6(glval) = InitializeParameter[#this] : &:r2046_5 -# 2046| r2046_7(glval) = Load[#this] : &:r2046_5, m2046_6 -# 2046| m2046_8(Derived2) = InitializeIndirection[#this] : &:r2046_7 -# 2046| r2046_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : m2046_6 -# 2046| r2046_10(glval) = FunctionAddress[Base2] : -# 2046| v2046_11(void) = Call[Base2] : func:r2046_10, this:r2046_9 -# 2046| m2046_12(unknown) = ^CallSideEffect : ~m2046_4 -# 2046| m2046_13(unknown) = Chi : total:m2046_4, partial:m2046_12 -# 2046| m2046_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2046_9 -# 2046| m2046_15(unknown) = Chi : total:m2046_8, partial:m2046_14 -# 2046| v2046_16(void) = NoOp : -# 2046| v2046_17(void) = ReturnIndirection[#this] : &:r2046_7, m2046_15 -# 2046| v2046_18(void) = ReturnVoid : -# 2046| v2046_19(void) = AliasedUse : ~m2046_13 -# 2046| v2046_20(void) = ExitFunction : - -# 2049| void Derived2::~Derived2() -# 2049| Block 0 -# 2049| v2049_1(void) = EnterFunction : -# 2049| m2049_2(unknown) = AliasedDefinition : -# 2049| m2049_3(unknown) = InitializeNonLocal : -# 2049| m2049_4(unknown) = Chi : total:m2049_2, partial:m2049_3 -# 2049| r2049_5(glval) = VariableAddress[#this] : -# 2049| m2049_6(glval) = InitializeParameter[#this] : &:r2049_5 -# 2049| r2049_7(glval) = Load[#this] : &:r2049_5, m2049_6 -# 2049| m2049_8(Derived2) = InitializeIndirection[#this] : &:r2049_7 -# 2049| v2049_9(void) = NoOp : -# 2049| r2049_10(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : m2049_6 -# 2049| r2049_11(glval) = FunctionAddress[~Base2] : -# 2049| v2049_12(void) = Call[~Base2] : func:r2049_11, this:r2049_10 -# 2049| m2049_13(unknown) = ^CallSideEffect : ~m2049_4 -# 2049| m2049_14(unknown) = Chi : total:m2049_4, partial:m2049_13 -# 2049| v2049_15(void) = ReturnIndirection[#this] : &:r2049_7, m2049_8 -# 2049| v2049_16(void) = ReturnVoid : -# 2049| v2049_17(void) = AliasedUse : ~m2049_14 -# 2049| v2049_18(void) = ExitFunction : - -# 2051| void Derived2::operator delete(void*) +# 2043| v2043_1(void) = EnterFunction : +# 2043| m2043_2(unknown) = AliasedDefinition : +# 2043| m2043_3(unknown) = InitializeNonLocal : +# 2043| m2043_4(unknown) = Chi : total:m2043_2, partial:m2043_3 +# 2043| r2043_5(glval) = VariableAddress[p] : +# 2043| m2043_6(void *) = InitializeParameter[p] : &:r2043_5 +# 2043| r2043_7(void *) = Load[p] : &:r2043_5, m2043_6 +# 2043| m2043_8(unknown) = InitializeIndirection[p] : &:r2043_7 +# 2044| v2044_1(void) = NoOp : +# 2043| v2043_9(void) = ReturnIndirection[p] : &:r2043_7, m2043_8 +# 2043| v2043_10(void) = ReturnVoid : +# 2043| v2043_11(void) = AliasedUse : m2043_3 +# 2043| v2043_12(void) = ExitFunction : + +# 2045| void Base2::~Base2() +# 2045| Block 0 +# 2045| v2045_1(void) = EnterFunction : +# 2045| m2045_2(unknown) = AliasedDefinition : +# 2045| m2045_3(unknown) = InitializeNonLocal : +# 2045| m2045_4(unknown) = Chi : total:m2045_2, partial:m2045_3 +# 2045| r2045_5(glval) = VariableAddress[#this] : +# 2045| m2045_6(glval) = InitializeParameter[#this] : &:r2045_5 +# 2045| r2045_7(glval) = Load[#this] : &:r2045_5, m2045_6 +# 2045| m2045_8(Base2) = InitializeIndirection[#this] : &:r2045_7 +# 2045| v2045_9(void) = NoOp : +# 2045| v2045_10(void) = ReturnIndirection[#this] : &:r2045_7, m2045_8 +# 2045| v2045_11(void) = ReturnVoid : +# 2045| v2045_12(void) = AliasedUse : m2045_3 +# 2045| v2045_13(void) = ExitFunction : + +# 2048| void Derived2::Derived2() +# 2048| Block 0 +# 2048| v2048_1(void) = EnterFunction : +# 2048| m2048_2(unknown) = AliasedDefinition : +# 2048| m2048_3(unknown) = InitializeNonLocal : +# 2048| m2048_4(unknown) = Chi : total:m2048_2, partial:m2048_3 +# 2048| r2048_5(glval) = VariableAddress[#this] : +# 2048| m2048_6(glval) = InitializeParameter[#this] : &:r2048_5 +# 2048| r2048_7(glval) = Load[#this] : &:r2048_5, m2048_6 +# 2048| m2048_8(Derived2) = InitializeIndirection[#this] : &:r2048_7 +# 2048| r2048_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : m2048_6 +# 2048| r2048_10(glval) = FunctionAddress[Base2] : +# 2048| v2048_11(void) = Call[Base2] : func:r2048_10, this:r2048_9 +# 2048| m2048_12(unknown) = ^CallSideEffect : ~m2048_4 +# 2048| m2048_13(unknown) = Chi : total:m2048_4, partial:m2048_12 +# 2048| m2048_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2048_9 +# 2048| m2048_15(unknown) = Chi : total:m2048_8, partial:m2048_14 +# 2048| v2048_16(void) = NoOp : +# 2048| v2048_17(void) = ReturnIndirection[#this] : &:r2048_7, m2048_15 +# 2048| v2048_18(void) = ReturnVoid : +# 2048| v2048_19(void) = AliasedUse : ~m2048_13 +# 2048| v2048_20(void) = ExitFunction : + +# 2051| void Derived2::~Derived2() # 2051| Block 0 -# 2051| v2051_1(void) = EnterFunction : -# 2051| m2051_2(unknown) = AliasedDefinition : -# 2051| m2051_3(unknown) = InitializeNonLocal : -# 2051| m2051_4(unknown) = Chi : total:m2051_2, partial:m2051_3 -# 2051| r2051_5(glval) = VariableAddress[p] : -# 2051| m2051_6(void *) = InitializeParameter[p] : &:r2051_5 -# 2051| r2051_7(void *) = Load[p] : &:r2051_5, m2051_6 -# 2051| m2051_8(unknown) = InitializeIndirection[p] : &:r2051_7 -# 2052| v2052_1(void) = NoOp : -# 2051| v2051_9(void) = ReturnIndirection[p] : &:r2051_7, m2051_8 -# 2051| v2051_10(void) = ReturnVoid : -# 2051| v2051_11(void) = AliasedUse : m2051_3 -# 2051| v2051_12(void) = ExitFunction : - -# 2056| int virtual_delete() -# 2056| Block 0 -# 2056| v2056_1(void) = EnterFunction : -# 2056| m2056_2(unknown) = AliasedDefinition : -# 2056| m2056_3(unknown) = InitializeNonLocal : -# 2056| m2056_4(unknown) = Chi : total:m2056_2, partial:m2056_3 -# 2058| r2058_1(glval) = VariableAddress[b1] : -# 2058| r2058_2(glval) = FunctionAddress[operator new] : -# 2058| r2058_3(unsigned long) = Constant[8] : -# 2058| r2058_4(void *) = Call[operator new] : func:r2058_2, 0:r2058_3 -# 2058| m2058_5(unknown) = ^CallSideEffect : ~m2056_4 -# 2058| m2058_6(unknown) = Chi : total:m2056_4, partial:m2058_5 -# 2058| m2058_7(unknown) = ^InitializeDynamicAllocation : &:r2058_4 -# 2058| r2058_8(Base2 *) = Convert : r2058_4 -# 2058| r2058_9(glval) = FunctionAddress[Base2] : -# 2058| v2058_10(void) = Call[Base2] : func:r2058_9, this:r2058_8 -# 2058| m2058_11(unknown) = ^CallSideEffect : ~m2058_6 -# 2058| m2058_12(unknown) = Chi : total:m2058_6, partial:m2058_11 -# 2058| m2058_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2058_8 -# 2058| m2058_14(unknown) = Chi : total:m2058_7, partial:m2058_13 -# 2058| m2058_15(Base2 *) = Store[b1] : &:r2058_1, r2058_8 -# 2059| r2059_1(glval) = VirtualDeleteFunctionAddress : -# 2059| r2059_2(glval) = VariableAddress[b1] : -# 2059| r2059_3(Base2 *) = Load[b1] : &:r2059_2, m2058_15 -# 2059| v2059_4(void) = Call[?] : func:r2059_1, 0:r2059_3 -# 2059| m2059_5(unknown) = ^CallSideEffect : ~m2058_12 -# 2059| m2059_6(unknown) = Chi : total:m2058_12, partial:m2059_5 -# 2061| r2061_1(glval) = VariableAddress[b2] : -# 2061| r2061_2(glval) = FunctionAddress[operator new] : -# 2061| r2061_3(unsigned long) = Constant[16] : -# 2061| r2061_4(void *) = Call[operator new] : func:r2061_2, 0:r2061_3 -# 2061| m2061_5(unknown) = ^CallSideEffect : ~m2059_6 -# 2061| m2061_6(unknown) = Chi : total:m2059_6, partial:m2061_5 -# 2061| m2061_7(unknown) = ^InitializeDynamicAllocation : &:r2061_4 -# 2061| r2061_8(Derived2 *) = Convert : r2061_4 -# 2061| r2061_9(glval) = FunctionAddress[Derived2] : -# 2061| v2061_10(void) = Call[Derived2] : func:r2061_9, this:r2061_8 -# 2061| m2061_11(unknown) = ^CallSideEffect : ~m2061_6 -# 2061| m2061_12(unknown) = Chi : total:m2061_6, partial:m2061_11 -# 2061| m2061_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2061_8 -# 2061| m2061_14(unknown) = Chi : total:m2061_7, partial:m2061_13 -# 2061| r2061_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2061_8 -# 2061| m2061_16(Base2 *) = Store[b2] : &:r2061_1, r2061_15 -# 2062| r2062_1(glval) = VirtualDeleteFunctionAddress : -# 2062| r2062_2(glval) = VariableAddress[b2] : -# 2062| r2062_3(Base2 *) = Load[b2] : &:r2062_2, m2061_16 -# 2062| v2062_4(void) = Call[?] : func:r2062_1, 0:r2062_3 -# 2062| m2062_5(unknown) = ^CallSideEffect : ~m2061_12 -# 2062| m2062_6(unknown) = Chi : total:m2061_12, partial:m2062_5 -# 2064| r2064_1(glval) = VariableAddress[d] : -# 2064| r2064_2(glval) = FunctionAddress[operator new] : -# 2064| r2064_3(unsigned long) = Constant[16] : -# 2064| r2064_4(void *) = Call[operator new] : func:r2064_2, 0:r2064_3 -# 2064| m2064_5(unknown) = ^CallSideEffect : ~m2062_6 -# 2064| m2064_6(unknown) = Chi : total:m2062_6, partial:m2064_5 -# 2064| m2064_7(unknown) = ^InitializeDynamicAllocation : &:r2064_4 -# 2064| r2064_8(Derived2 *) = Convert : r2064_4 -# 2064| r2064_9(glval) = FunctionAddress[Derived2] : -# 2064| v2064_10(void) = Call[Derived2] : func:r2064_9, this:r2064_8 -# 2064| m2064_11(unknown) = ^CallSideEffect : ~m2064_6 -# 2064| m2064_12(unknown) = Chi : total:m2064_6, partial:m2064_11 -# 2064| m2064_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2064_8 -# 2064| m2064_14(unknown) = Chi : total:m2064_7, partial:m2064_13 -# 2064| m2064_15(Derived2 *) = Store[d] : &:r2064_1, r2064_8 -# 2065| r2065_1(glval) = VirtualDeleteFunctionAddress : -# 2065| r2065_2(glval) = VariableAddress[d] : -# 2065| r2065_3(Derived2 *) = Load[d] : &:r2065_2, m2064_15 -# 2065| v2065_4(void) = Call[?] : func:r2065_1, 0:r2065_3 -# 2065| m2065_5(unknown) = ^CallSideEffect : ~m2064_12 -# 2065| m2065_6(unknown) = Chi : total:m2064_12, partial:m2065_5 -# 2066| r2066_1(glval) = VariableAddress[#return] : -# 2066| m2066_2(int) = Uninitialized[#return] : &:r2066_1 -# 2056| r2056_5(glval) = VariableAddress[#return] : -# 2056| v2056_6(void) = ReturnValue : &:r2056_5, m2066_2 -# 2056| v2056_7(void) = AliasedUse : ~m2065_6 -# 2056| v2056_8(void) = ExitFunction : - -# 2070| void test_constant_folding() -# 2070| Block 0 -# 2070| v2070_1(void) = EnterFunction : -# 2070| m2070_2(unknown) = AliasedDefinition : -# 2070| m2070_3(unknown) = InitializeNonLocal : -# 2070| m2070_4(unknown) = Chi : total:m2070_2, partial:m2070_3 -# 2071| r2071_1(glval) = VariableAddress[x] : -# 2071| r2071_2(int) = Constant[116] : -# 2071| m2071_3(int) = Store[x] : &:r2071_1, r2071_2 -# 2072| r2072_1(glval) = FunctionAddress[test_constant_folding_use] : -# 2072| r2072_2(int) = Constant[116] : -# 2072| v2072_3(void) = Call[test_constant_folding_use] : func:r2072_1, 0:r2072_2 -# 2072| m2072_4(unknown) = ^CallSideEffect : ~m2070_4 -# 2072| m2072_5(unknown) = Chi : total:m2070_4, partial:m2072_4 -# 2073| v2073_1(void) = NoOp : -# 2070| v2070_5(void) = ReturnVoid : -# 2070| v2070_6(void) = AliasedUse : ~m2072_5 -# 2070| v2070_7(void) = ExitFunction : - -# 2077| int NonExit() -# 2077| Block 0 -# 2077| v2077_1(void) = EnterFunction : -# 2077| m2077_2(unknown) = AliasedDefinition : -# 2077| m2077_3(unknown) = InitializeNonLocal : -# 2077| m2077_4(unknown) = Chi : total:m2077_2, partial:m2077_3 -# 2078| r2078_1(glval) = VariableAddress[x] : -# 2078| r2078_2(glval) = FunctionAddress[Add] : -# 2078| r2078_3(int) = Constant[3] : -# 2078| r2078_4(int) = Constant[4] : -# 2078| r2078_5(int) = Call[Add] : func:r2078_2, 0:r2078_3, 1:r2078_4 -# 2078| m2078_6(unknown) = ^CallSideEffect : ~m2077_4 -# 2078| m2078_7(unknown) = Chi : total:m2077_4, partial:m2078_6 -# 2078| m2078_8(int) = Store[x] : &:r2078_1, r2078_5 -# 2079| r2079_1(glval) = VariableAddress[x] : -# 2079| r2079_2(int) = Load[x] : &:r2079_1, m2078_8 -# 2079| r2079_3(int) = Constant[7] : -# 2079| r2079_4(bool) = CompareEQ : r2079_2, r2079_3 -# 2079| v2079_5(void) = ConditionalBranch : r2079_4 +# 2051| v2051_1(void) = EnterFunction : +# 2051| m2051_2(unknown) = AliasedDefinition : +# 2051| m2051_3(unknown) = InitializeNonLocal : +# 2051| m2051_4(unknown) = Chi : total:m2051_2, partial:m2051_3 +# 2051| r2051_5(glval) = VariableAddress[#this] : +# 2051| m2051_6(glval) = InitializeParameter[#this] : &:r2051_5 +# 2051| r2051_7(glval) = Load[#this] : &:r2051_5, m2051_6 +# 2051| m2051_8(Derived2) = InitializeIndirection[#this] : &:r2051_7 +# 2051| v2051_9(void) = NoOp : +# 2051| r2051_10(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : m2051_6 +# 2051| r2051_11(glval) = FunctionAddress[~Base2] : +# 2051| v2051_12(void) = Call[~Base2] : func:r2051_11, this:r2051_10 +# 2051| m2051_13(unknown) = ^CallSideEffect : ~m2051_4 +# 2051| m2051_14(unknown) = Chi : total:m2051_4, partial:m2051_13 +# 2051| v2051_15(void) = ReturnIndirection[#this] : &:r2051_7, m2051_8 +# 2051| v2051_16(void) = ReturnVoid : +# 2051| v2051_17(void) = AliasedUse : ~m2051_14 +# 2051| v2051_18(void) = ExitFunction : + +# 2053| void Derived2::operator delete(void*) +# 2053| Block 0 +# 2053| v2053_1(void) = EnterFunction : +# 2053| m2053_2(unknown) = AliasedDefinition : +# 2053| m2053_3(unknown) = InitializeNonLocal : +# 2053| m2053_4(unknown) = Chi : total:m2053_2, partial:m2053_3 +# 2053| r2053_5(glval) = VariableAddress[p] : +# 2053| m2053_6(void *) = InitializeParameter[p] : &:r2053_5 +# 2053| r2053_7(void *) = Load[p] : &:r2053_5, m2053_6 +# 2053| m2053_8(unknown) = InitializeIndirection[p] : &:r2053_7 +# 2054| v2054_1(void) = NoOp : +# 2053| v2053_9(void) = ReturnIndirection[p] : &:r2053_7, m2053_8 +# 2053| v2053_10(void) = ReturnVoid : +# 2053| v2053_11(void) = AliasedUse : m2053_3 +# 2053| v2053_12(void) = ExitFunction : + +# 2058| int virtual_delete() +# 2058| Block 0 +# 2058| v2058_1(void) = EnterFunction : +# 2058| m2058_2(unknown) = AliasedDefinition : +# 2058| m2058_3(unknown) = InitializeNonLocal : +# 2058| m2058_4(unknown) = Chi : total:m2058_2, partial:m2058_3 +# 2060| r2060_1(glval) = VariableAddress[b1] : +# 2060| r2060_2(glval) = FunctionAddress[operator new] : +# 2060| r2060_3(unsigned long) = Constant[8] : +# 2060| r2060_4(void *) = Call[operator new] : func:r2060_2, 0:r2060_3 +# 2060| m2060_5(unknown) = ^CallSideEffect : ~m2058_4 +# 2060| m2060_6(unknown) = Chi : total:m2058_4, partial:m2060_5 +# 2060| m2060_7(unknown) = ^InitializeDynamicAllocation : &:r2060_4 +# 2060| r2060_8(Base2 *) = Convert : r2060_4 +# 2060| r2060_9(glval) = FunctionAddress[Base2] : +# 2060| v2060_10(void) = Call[Base2] : func:r2060_9, this:r2060_8 +# 2060| m2060_11(unknown) = ^CallSideEffect : ~m2060_6 +# 2060| m2060_12(unknown) = Chi : total:m2060_6, partial:m2060_11 +# 2060| m2060_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2060_8 +# 2060| m2060_14(unknown) = Chi : total:m2060_7, partial:m2060_13 +# 2060| m2060_15(Base2 *) = Store[b1] : &:r2060_1, r2060_8 +# 2061| r2061_1(glval) = VirtualDeleteFunctionAddress : +# 2061| r2061_2(glval) = VariableAddress[b1] : +# 2061| r2061_3(Base2 *) = Load[b1] : &:r2061_2, m2060_15 +# 2061| v2061_4(void) = Call[?] : func:r2061_1, 0:r2061_3 +# 2061| m2061_5(unknown) = ^CallSideEffect : ~m2060_12 +# 2061| m2061_6(unknown) = Chi : total:m2060_12, partial:m2061_5 +# 2063| r2063_1(glval) = VariableAddress[b2] : +# 2063| r2063_2(glval) = FunctionAddress[operator new] : +# 2063| r2063_3(unsigned long) = Constant[16] : +# 2063| r2063_4(void *) = Call[operator new] : func:r2063_2, 0:r2063_3 +# 2063| m2063_5(unknown) = ^CallSideEffect : ~m2061_6 +# 2063| m2063_6(unknown) = Chi : total:m2061_6, partial:m2063_5 +# 2063| m2063_7(unknown) = ^InitializeDynamicAllocation : &:r2063_4 +# 2063| r2063_8(Derived2 *) = Convert : r2063_4 +# 2063| r2063_9(glval) = FunctionAddress[Derived2] : +# 2063| v2063_10(void) = Call[Derived2] : func:r2063_9, this:r2063_8 +# 2063| m2063_11(unknown) = ^CallSideEffect : ~m2063_6 +# 2063| m2063_12(unknown) = Chi : total:m2063_6, partial:m2063_11 +# 2063| m2063_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2063_8 +# 2063| m2063_14(unknown) = Chi : total:m2063_7, partial:m2063_13 +# 2063| r2063_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2063_8 +# 2063| m2063_16(Base2 *) = Store[b2] : &:r2063_1, r2063_15 +# 2064| r2064_1(glval) = VirtualDeleteFunctionAddress : +# 2064| r2064_2(glval) = VariableAddress[b2] : +# 2064| r2064_3(Base2 *) = Load[b2] : &:r2064_2, m2063_16 +# 2064| v2064_4(void) = Call[?] : func:r2064_1, 0:r2064_3 +# 2064| m2064_5(unknown) = ^CallSideEffect : ~m2063_12 +# 2064| m2064_6(unknown) = Chi : total:m2063_12, partial:m2064_5 +# 2066| r2066_1(glval) = VariableAddress[d] : +# 2066| r2066_2(glval) = FunctionAddress[operator new] : +# 2066| r2066_3(unsigned long) = Constant[16] : +# 2066| r2066_4(void *) = Call[operator new] : func:r2066_2, 0:r2066_3 +# 2066| m2066_5(unknown) = ^CallSideEffect : ~m2064_6 +# 2066| m2066_6(unknown) = Chi : total:m2064_6, partial:m2066_5 +# 2066| m2066_7(unknown) = ^InitializeDynamicAllocation : &:r2066_4 +# 2066| r2066_8(Derived2 *) = Convert : r2066_4 +# 2066| r2066_9(glval) = FunctionAddress[Derived2] : +# 2066| v2066_10(void) = Call[Derived2] : func:r2066_9, this:r2066_8 +# 2066| m2066_11(unknown) = ^CallSideEffect : ~m2066_6 +# 2066| m2066_12(unknown) = Chi : total:m2066_6, partial:m2066_11 +# 2066| m2066_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2066_8 +# 2066| m2066_14(unknown) = Chi : total:m2066_7, partial:m2066_13 +# 2066| m2066_15(Derived2 *) = Store[d] : &:r2066_1, r2066_8 +# 2067| r2067_1(glval) = VirtualDeleteFunctionAddress : +# 2067| r2067_2(glval) = VariableAddress[d] : +# 2067| r2067_3(Derived2 *) = Load[d] : &:r2067_2, m2066_15 +# 2067| v2067_4(void) = Call[?] : func:r2067_1, 0:r2067_3 +# 2067| m2067_5(unknown) = ^CallSideEffect : ~m2066_12 +# 2067| m2067_6(unknown) = Chi : total:m2066_12, partial:m2067_5 +# 2068| r2068_1(glval) = VariableAddress[#return] : +# 2068| m2068_2(int) = Uninitialized[#return] : &:r2068_1 +# 2058| r2058_5(glval) = VariableAddress[#return] : +# 2058| v2058_6(void) = ReturnValue : &:r2058_5, m2068_2 +# 2058| v2058_7(void) = AliasedUse : ~m2067_6 +# 2058| v2058_8(void) = ExitFunction : + +# 2072| void test_constant_folding() +# 2072| Block 0 +# 2072| v2072_1(void) = EnterFunction : +# 2072| m2072_2(unknown) = AliasedDefinition : +# 2072| m2072_3(unknown) = InitializeNonLocal : +# 2072| m2072_4(unknown) = Chi : total:m2072_2, partial:m2072_3 +# 2073| r2073_1(glval) = VariableAddress[x] : +# 2073| r2073_2(int) = Constant[116] : +# 2073| m2073_3(int) = Store[x] : &:r2073_1, r2073_2 +# 2074| r2074_1(glval) = FunctionAddress[test_constant_folding_use] : +# 2074| r2074_2(int) = Constant[116] : +# 2074| v2074_3(void) = Call[test_constant_folding_use] : func:r2074_1, 0:r2074_2 +# 2074| m2074_4(unknown) = ^CallSideEffect : ~m2072_4 +# 2074| m2074_5(unknown) = Chi : total:m2072_4, partial:m2074_4 +# 2075| v2075_1(void) = NoOp : +# 2072| v2072_5(void) = ReturnVoid : +# 2072| v2072_6(void) = AliasedUse : ~m2074_5 +# 2072| v2072_7(void) = ExitFunction : + +# 2079| int NonExit() +# 2079| Block 0 +# 2079| v2079_1(void) = EnterFunction : +# 2079| m2079_2(unknown) = AliasedDefinition : +# 2079| m2079_3(unknown) = InitializeNonLocal : +# 2079| m2079_4(unknown) = Chi : total:m2079_2, partial:m2079_3 +# 2080| r2080_1(glval) = VariableAddress[x] : +# 2080| r2080_2(glval) = FunctionAddress[Add] : +# 2080| r2080_3(int) = Constant[3] : +# 2080| r2080_4(int) = Constant[4] : +# 2080| r2080_5(int) = Call[Add] : func:r2080_2, 0:r2080_3, 1:r2080_4 +# 2080| m2080_6(unknown) = ^CallSideEffect : ~m2079_4 +# 2080| m2080_7(unknown) = Chi : total:m2079_4, partial:m2080_6 +# 2080| m2080_8(int) = Store[x] : &:r2080_1, r2080_5 +# 2081| r2081_1(glval) = VariableAddress[x] : +# 2081| r2081_2(int) = Load[x] : &:r2081_1, m2080_8 +# 2081| r2081_3(int) = Constant[7] : +# 2081| r2081_4(bool) = CompareEQ : r2081_2, r2081_3 +# 2081| v2081_5(void) = ConditionalBranch : r2081_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2080| Block 1 -# 2080| r2080_1(glval) = FunctionAddress[exit] : -# 2080| r2080_2(int) = Constant[3] : -# 2080| v2080_3(void) = Call[exit] : func:r2080_1, 0:r2080_2 -# 2080| m2080_4(unknown) = ^CallSideEffect : ~m2078_7 -# 2080| m2080_5(unknown) = Chi : total:m2078_7, partial:m2080_4 -# 2077| v2077_5(void) = Unreached : - -# 2081| Block 2 -# 2081| r2081_1(glval) = FunctionAddress[VoidFunc] : -# 2081| v2081_2(void) = Call[VoidFunc] : func:r2081_1 -# 2081| m2081_3(unknown) = ^CallSideEffect : ~m2078_7 -# 2081| m2081_4(unknown) = Chi : total:m2078_7, partial:m2081_3 -# 2082| r2082_1(glval) = VariableAddress[#return] : -# 2082| r2082_2(glval) = VariableAddress[x] : -# 2082| r2082_3(int) = Load[x] : &:r2082_2, m2078_8 -# 2082| m2082_4(int) = Store[#return] : &:r2082_1, r2082_3 -# 2077| r2077_6(glval) = VariableAddress[#return] : -# 2077| v2077_7(void) = ReturnValue : &:r2077_6, m2082_4 -# 2077| v2077_8(void) = AliasedUse : ~m2081_4 -# 2077| v2077_9(void) = ExitFunction : - -# 2085| void CallsNonExit() -# 2085| Block 0 -# 2085| v2085_1(void) = EnterFunction : -# 2085| m2085_2(unknown) = AliasedDefinition : -# 2085| m2085_3(unknown) = InitializeNonLocal : -# 2085| m2085_4(unknown) = Chi : total:m2085_2, partial:m2085_3 -# 2086| r2086_1(glval) = FunctionAddress[VoidFunc] : -# 2086| v2086_2(void) = Call[VoidFunc] : func:r2086_1 -# 2086| m2086_3(unknown) = ^CallSideEffect : ~m2085_4 -# 2086| m2086_4(unknown) = Chi : total:m2085_4, partial:m2086_3 -# 2087| r2087_1(glval) = FunctionAddress[exit] : -# 2087| r2087_2(int) = Constant[3] : -# 2087| v2087_3(void) = Call[exit] : func:r2087_1, 0:r2087_2 -# 2087| m2087_4(unknown) = ^CallSideEffect : ~m2086_4 -# 2087| m2087_5(unknown) = Chi : total:m2086_4, partial:m2087_4 -# 2085| v2085_5(void) = Unreached : - -# 2090| int TransNonExit() -# 2090| Block 0 -# 2090| v2090_1(void) = EnterFunction : -# 2090| m2090_2(unknown) = AliasedDefinition : -# 2090| m2090_3(unknown) = InitializeNonLocal : -# 2090| m2090_4(unknown) = Chi : total:m2090_2, partial:m2090_3 -# 2091| r2091_1(glval) = VariableAddress[x] : -# 2091| r2091_2(glval) = FunctionAddress[Add] : -# 2091| r2091_3(int) = Constant[3] : -# 2091| r2091_4(int) = Constant[4] : -# 2091| r2091_5(int) = Call[Add] : func:r2091_2, 0:r2091_3, 1:r2091_4 -# 2091| m2091_6(unknown) = ^CallSideEffect : ~m2090_4 -# 2091| m2091_7(unknown) = Chi : total:m2090_4, partial:m2091_6 -# 2091| m2091_8(int) = Store[x] : &:r2091_1, r2091_5 -# 2092| r2092_1(glval) = VariableAddress[x] : -# 2092| r2092_2(int) = Load[x] : &:r2092_1, m2091_8 -# 2092| r2092_3(int) = Constant[7] : -# 2092| r2092_4(bool) = CompareEQ : r2092_2, r2092_3 -# 2092| v2092_5(void) = ConditionalBranch : r2092_4 +# 2082| Block 1 +# 2082| r2082_1(glval) = FunctionAddress[exit] : +# 2082| r2082_2(int) = Constant[3] : +# 2082| v2082_3(void) = Call[exit] : func:r2082_1, 0:r2082_2 +# 2082| m2082_4(unknown) = ^CallSideEffect : ~m2080_7 +# 2082| m2082_5(unknown) = Chi : total:m2080_7, partial:m2082_4 +# 2079| v2079_5(void) = Unreached : + +# 2083| Block 2 +# 2083| r2083_1(glval) = FunctionAddress[VoidFunc] : +# 2083| v2083_2(void) = Call[VoidFunc] : func:r2083_1 +# 2083| m2083_3(unknown) = ^CallSideEffect : ~m2080_7 +# 2083| m2083_4(unknown) = Chi : total:m2080_7, partial:m2083_3 +# 2084| r2084_1(glval) = VariableAddress[#return] : +# 2084| r2084_2(glval) = VariableAddress[x] : +# 2084| r2084_3(int) = Load[x] : &:r2084_2, m2080_8 +# 2084| m2084_4(int) = Store[#return] : &:r2084_1, r2084_3 +# 2079| r2079_6(glval) = VariableAddress[#return] : +# 2079| v2079_7(void) = ReturnValue : &:r2079_6, m2084_4 +# 2079| v2079_8(void) = AliasedUse : ~m2083_4 +# 2079| v2079_9(void) = ExitFunction : + +# 2087| void CallsNonExit() +# 2087| Block 0 +# 2087| v2087_1(void) = EnterFunction : +# 2087| m2087_2(unknown) = AliasedDefinition : +# 2087| m2087_3(unknown) = InitializeNonLocal : +# 2087| m2087_4(unknown) = Chi : total:m2087_2, partial:m2087_3 +# 2088| r2088_1(glval) = FunctionAddress[VoidFunc] : +# 2088| v2088_2(void) = Call[VoidFunc] : func:r2088_1 +# 2088| m2088_3(unknown) = ^CallSideEffect : ~m2087_4 +# 2088| m2088_4(unknown) = Chi : total:m2087_4, partial:m2088_3 +# 2089| r2089_1(glval) = FunctionAddress[exit] : +# 2089| r2089_2(int) = Constant[3] : +# 2089| v2089_3(void) = Call[exit] : func:r2089_1, 0:r2089_2 +# 2089| m2089_4(unknown) = ^CallSideEffect : ~m2088_4 +# 2089| m2089_5(unknown) = Chi : total:m2088_4, partial:m2089_4 +# 2087| v2087_5(void) = Unreached : + +# 2092| int TransNonExit() +# 2092| Block 0 +# 2092| v2092_1(void) = EnterFunction : +# 2092| m2092_2(unknown) = AliasedDefinition : +# 2092| m2092_3(unknown) = InitializeNonLocal : +# 2092| m2092_4(unknown) = Chi : total:m2092_2, partial:m2092_3 +# 2093| r2093_1(glval) = VariableAddress[x] : +# 2093| r2093_2(glval) = FunctionAddress[Add] : +# 2093| r2093_3(int) = Constant[3] : +# 2093| r2093_4(int) = Constant[4] : +# 2093| r2093_5(int) = Call[Add] : func:r2093_2, 0:r2093_3, 1:r2093_4 +# 2093| m2093_6(unknown) = ^CallSideEffect : ~m2092_4 +# 2093| m2093_7(unknown) = Chi : total:m2092_4, partial:m2093_6 +# 2093| m2093_8(int) = Store[x] : &:r2093_1, r2093_5 +# 2094| r2094_1(glval) = VariableAddress[x] : +# 2094| r2094_2(int) = Load[x] : &:r2094_1, m2093_8 +# 2094| r2094_3(int) = Constant[7] : +# 2094| r2094_4(bool) = CompareEQ : r2094_2, r2094_3 +# 2094| v2094_5(void) = ConditionalBranch : r2094_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2093| Block 1 -# 2093| r2093_1(glval) = FunctionAddress[CallsNonExit] : -# 2093| v2093_2(void) = Call[CallsNonExit] : func:r2093_1 -# 2090| v2090_5(void) = Unreached : - -# 2094| Block 2 -# 2094| r2094_1(glval) = FunctionAddress[VoidFunc] : -# 2094| v2094_2(void) = Call[VoidFunc] : func:r2094_1 -# 2094| m2094_3(unknown) = ^CallSideEffect : ~m2091_7 -# 2094| m2094_4(unknown) = Chi : total:m2091_7, partial:m2094_3 -# 2095| r2095_1(glval) = VariableAddress[#return] : -# 2095| r2095_2(glval) = VariableAddress[x] : -# 2095| r2095_3(int) = Load[x] : &:r2095_2, m2091_8 -# 2095| m2095_4(int) = Store[#return] : &:r2095_1, r2095_3 -# 2090| r2090_6(glval) = VariableAddress[#return] : -# 2090| v2090_7(void) = ReturnValue : &:r2090_6, m2095_4 -# 2090| v2090_8(void) = AliasedUse : ~m2094_4 -# 2090| v2090_9(void) = ExitFunction : - -# 2098| void newArrayCorrectType(size_t) -# 2098| Block 0 -# 2098| v2098_1(void) = EnterFunction : -# 2098| m2098_2(unknown) = AliasedDefinition : -# 2098| m2098_3(unknown) = InitializeNonLocal : -# 2098| m2098_4(unknown) = Chi : total:m2098_2, partial:m2098_3 -# 2098| r2098_5(glval) = VariableAddress[n] : -# 2098| m2098_6(unsigned long) = InitializeParameter[n] : &:r2098_5 -# 2099| r2099_1(glval) = FunctionAddress[operator new[]] : -# 2099| r2099_2(glval) = VariableAddress[n] : -# 2099| r2099_3(unsigned long) = Load[n] : &:r2099_2, m2098_6 -# 2099| r2099_4(unsigned long) = Constant[4] : -# 2099| r2099_5(unsigned long) = Mul : r2099_3, r2099_4 -# 2099| r2099_6(void *) = Call[operator new[]] : func:r2099_1, 0:r2099_5 -# 2099| m2099_7(unknown) = ^CallSideEffect : ~m2098_4 -# 2099| m2099_8(unknown) = Chi : total:m2098_4, partial:m2099_7 -# 2099| m2099_9(unknown) = ^InitializeDynamicAllocation : &:r2099_6 -# 2099| r2099_10(int *) = Convert : r2099_6 -# 2100| r2100_1(glval) = FunctionAddress[operator new[]] : -# 2100| r2100_2(glval) = VariableAddress[n] : -# 2100| r2100_3(unsigned long) = Load[n] : &:r2100_2, m2098_6 -# 2100| r2100_4(unsigned long) = Constant[4] : -# 2100| r2100_5(unsigned long) = Mul : r2100_3, r2100_4 -# 2100| r2100_6(float) = Constant[1.0] : -# 2100| r2100_7(void *) = Call[operator new[]] : func:r2100_1, 0:r2100_5, 1:r2100_6 -# 2100| m2100_8(unknown) = ^CallSideEffect : ~m2099_8 -# 2100| m2100_9(unknown) = Chi : total:m2099_8, partial:m2100_8 -# 2100| m2100_10(unknown) = ^InitializeDynamicAllocation : &:r2100_7 -# 2100| r2100_11(int *) = Convert : r2100_7 +# 2095| Block 1 +# 2095| r2095_1(glval) = FunctionAddress[CallsNonExit] : +# 2095| v2095_2(void) = Call[CallsNonExit] : func:r2095_1 +# 2092| v2092_5(void) = Unreached : + +# 2096| Block 2 +# 2096| r2096_1(glval) = FunctionAddress[VoidFunc] : +# 2096| v2096_2(void) = Call[VoidFunc] : func:r2096_1 +# 2096| m2096_3(unknown) = ^CallSideEffect : ~m2093_7 +# 2096| m2096_4(unknown) = Chi : total:m2093_7, partial:m2096_3 +# 2097| r2097_1(glval) = VariableAddress[#return] : +# 2097| r2097_2(glval) = VariableAddress[x] : +# 2097| r2097_3(int) = Load[x] : &:r2097_2, m2093_8 +# 2097| m2097_4(int) = Store[#return] : &:r2097_1, r2097_3 +# 2092| r2092_6(glval) = VariableAddress[#return] : +# 2092| v2092_7(void) = ReturnValue : &:r2092_6, m2097_4 +# 2092| v2092_8(void) = AliasedUse : ~m2096_4 +# 2092| v2092_9(void) = ExitFunction : + +# 2100| void newArrayCorrectType(size_t) +# 2100| Block 0 +# 2100| v2100_1(void) = EnterFunction : +# 2100| m2100_2(unknown) = AliasedDefinition : +# 2100| m2100_3(unknown) = InitializeNonLocal : +# 2100| m2100_4(unknown) = Chi : total:m2100_2, partial:m2100_3 +# 2100| r2100_5(glval) = VariableAddress[n] : +# 2100| m2100_6(unsigned long) = InitializeParameter[n] : &:r2100_5 # 2101| r2101_1(glval) = FunctionAddress[operator new[]] : # 2101| r2101_2(glval) = VariableAddress[n] : -# 2101| r2101_3(unsigned long) = Load[n] : &:r2101_2, m2098_6 -# 2101| r2101_4(unsigned long) = Constant[8] : +# 2101| r2101_3(unsigned long) = Load[n] : &:r2101_2, m2100_6 +# 2101| r2101_4(unsigned long) = Constant[4] : # 2101| r2101_5(unsigned long) = Mul : r2101_3, r2101_4 # 2101| r2101_6(void *) = Call[operator new[]] : func:r2101_1, 0:r2101_5 -# 2101| m2101_7(unknown) = ^CallSideEffect : ~m2100_9 -# 2101| m2101_8(unknown) = Chi : total:m2100_9, partial:m2101_7 +# 2101| m2101_7(unknown) = ^CallSideEffect : ~m2100_4 +# 2101| m2101_8(unknown) = Chi : total:m2100_4, partial:m2101_7 # 2101| m2101_9(unknown) = ^InitializeDynamicAllocation : &:r2101_6 -# 2101| r2101_10(String *) = Convert : r2101_6 +# 2101| r2101_10(int *) = Convert : r2101_6 # 2102| r2102_1(glval) = FunctionAddress[operator new[]] : # 2102| r2102_2(glval) = VariableAddress[n] : -# 2102| r2102_3(unsigned long) = Load[n] : &:r2102_2, m2098_6 -# 2102| r2102_4(unsigned long) = Constant[256] : +# 2102| r2102_3(unsigned long) = Load[n] : &:r2102_2, m2100_6 +# 2102| r2102_4(unsigned long) = Constant[4] : # 2102| r2102_5(unsigned long) = Mul : r2102_3, r2102_4 -# 2102| r2102_6(align_val_t) = Constant[128] : +# 2102| r2102_6(float) = Constant[1.0] : # 2102| r2102_7(void *) = Call[operator new[]] : func:r2102_1, 0:r2102_5, 1:r2102_6 # 2102| m2102_8(unknown) = ^CallSideEffect : ~m2101_8 # 2102| m2102_9(unknown) = Chi : total:m2101_8, partial:m2102_8 # 2102| m2102_10(unknown) = ^InitializeDynamicAllocation : &:r2102_7 -# 2102| r2102_11(Overaligned *) = Convert : r2102_7 +# 2102| r2102_11(int *) = Convert : r2102_7 # 2103| r2103_1(glval) = FunctionAddress[operator new[]] : # 2103| r2103_2(glval) = VariableAddress[n] : -# 2103| r2103_3(unsigned long) = Load[n] : &:r2103_2, m2098_6 -# 2103| r2103_4(unsigned long) = Constant[1] : +# 2103| r2103_3(unsigned long) = Load[n] : &:r2103_2, m2100_6 +# 2103| r2103_4(unsigned long) = Constant[8] : # 2103| r2103_5(unsigned long) = Mul : r2103_3, r2103_4 # 2103| r2103_6(void *) = Call[operator new[]] : func:r2103_1, 0:r2103_5 # 2103| m2103_7(unknown) = ^CallSideEffect : ~m2102_9 # 2103| m2103_8(unknown) = Chi : total:m2102_9, partial:m2103_7 # 2103| m2103_9(unknown) = ^InitializeDynamicAllocation : &:r2103_6 -# 2103| r2103_10(DefaultCtorWithDefaultParam *) = Convert : r2103_6 +# 2103| r2103_10(String *) = Convert : r2103_6 # 2104| r2104_1(glval) = FunctionAddress[operator new[]] : # 2104| r2104_2(glval) = VariableAddress[n] : -# 2104| r2104_3(unsigned long) = Load[n] : &:r2104_2, m2098_6 -# 2104| r2104_4(unsigned long) = Constant[4] : +# 2104| r2104_3(unsigned long) = Load[n] : &:r2104_2, m2100_6 +# 2104| r2104_4(unsigned long) = Constant[256] : # 2104| r2104_5(unsigned long) = Mul : r2104_3, r2104_4 -# 2104| r2104_6(void *) = Call[operator new[]] : func:r2104_1, 0:r2104_5 -# 2104| m2104_7(unknown) = ^CallSideEffect : ~m2103_8 -# 2104| m2104_8(unknown) = Chi : total:m2103_8, partial:m2104_7 -# 2104| m2104_9(unknown) = ^InitializeDynamicAllocation : &:r2104_6 -# 2104| r2104_10(int *) = Convert : r2104_6 -# 2105| v2105_1(void) = NoOp : -# 2098| v2098_7(void) = ReturnVoid : -# 2098| v2098_8(void) = AliasedUse : ~m2104_8 -# 2098| v2098_9(void) = ExitFunction : - -# 2109| char* test_strtod(char*) -# 2109| Block 0 -# 2109| v2109_1(void) = EnterFunction : -# 2109| m2109_2(unknown) = AliasedDefinition : -# 2109| m2109_3(unknown) = InitializeNonLocal : -# 2109| m2109_4(unknown) = Chi : total:m2109_2, partial:m2109_3 -# 2109| r2109_5(glval) = VariableAddress[s] : -# 2109| m2109_6(char *) = InitializeParameter[s] : &:r2109_5 -# 2109| r2109_7(char *) = Load[s] : &:r2109_5, m2109_6 -# 2109| m2109_8(unknown) = InitializeIndirection[s] : &:r2109_7 -# 2110| r2110_1(glval) = VariableAddress[end] : -# 2110| m2110_2(char *) = Uninitialized[end] : &:r2110_1 -# 2111| r2111_1(glval) = VariableAddress[d] : -# 2111| r2111_2(glval) = FunctionAddress[strtod] : -# 2111| r2111_3(glval) = VariableAddress[s] : -# 2111| r2111_4(char *) = Load[s] : &:r2111_3, m2109_6 -# 2111| r2111_5(char *) = Convert : r2111_4 -# 2111| r2111_6(glval) = VariableAddress[end] : -# 2111| r2111_7(char **) = CopyValue : r2111_6 -# 2111| r2111_8(double) = Call[strtod] : func:r2111_2, 0:r2111_5, 1:r2111_7 -# 2111| v2111_9(void) = ^BufferReadSideEffect[0] : &:r2111_5, ~m2109_8 -# 2111| m2111_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2111_7 -# 2111| m2111_11(char *) = Chi : total:m2110_2, partial:m2111_10 -# 2111| m2111_12(double) = Store[d] : &:r2111_1, r2111_8 -# 2112| r2112_1(glval) = VariableAddress[#return] : -# 2112| r2112_2(glval) = VariableAddress[end] : -# 2112| r2112_3(char *) = Load[end] : &:r2112_2, m2111_11 -# 2112| m2112_4(char *) = Store[#return] : &:r2112_1, r2112_3 -# 2109| v2109_9(void) = ReturnIndirection[s] : &:r2109_7, m2109_8 -# 2109| r2109_10(glval) = VariableAddress[#return] : -# 2109| v2109_11(void) = ReturnValue : &:r2109_10, m2112_4 -# 2109| v2109_12(void) = AliasedUse : m2109_3 -# 2109| v2109_13(void) = ExitFunction : - -# 2119| void call_as_child_of_ConditionDeclExpr() -# 2119| Block 0 -# 2119| v2119_1(void) = EnterFunction : -# 2119| m2119_2(unknown) = AliasedDefinition : -# 2119| m2119_3(unknown) = InitializeNonLocal : -# 2119| m2119_4(unknown) = Chi : total:m2119_2, partial:m2119_3 -# 2120| r2120_1(glval) = VariableAddress[b] : -# 2120| r2120_2(HasOperatorBool) = Constant[0] : -# 2120| m2120_3(HasOperatorBool) = Store[b] : &:r2120_1, r2120_2 -# 2120| r2120_4(glval) = VariableAddress[b] : -# 2120| r2120_5(glval) = FunctionAddress[operator bool] : -# 2120| r2120_6(bool) = Call[operator bool] : func:r2120_5, this:r2120_4 -# 2120| m2120_7(unknown) = ^CallSideEffect : ~m2119_4 -# 2120| m2120_8(unknown) = Chi : total:m2119_4, partial:m2120_7 -# 2120| v2120_9(void) = ^IndirectReadSideEffect[-1] : &:r2120_4, m2120_3 -# 2120| m2120_10(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2120_4 -# 2120| m2120_11(HasOperatorBool) = Chi : total:m2120_3, partial:m2120_10 -# 2120| r2120_12(bool) = CopyValue : r2120_6 -# 2120| v2120_13(void) = ConditionalBranch : r2120_12 +# 2104| r2104_6(align_val_t) = Constant[128] : +# 2104| r2104_7(void *) = Call[operator new[]] : func:r2104_1, 0:r2104_5, 1:r2104_6 +# 2104| m2104_8(unknown) = ^CallSideEffect : ~m2103_8 +# 2104| m2104_9(unknown) = Chi : total:m2103_8, partial:m2104_8 +# 2104| m2104_10(unknown) = ^InitializeDynamicAllocation : &:r2104_7 +# 2104| r2104_11(Overaligned *) = Convert : r2104_7 +# 2105| r2105_1(glval) = FunctionAddress[operator new[]] : +# 2105| r2105_2(glval) = VariableAddress[n] : +# 2105| r2105_3(unsigned long) = Load[n] : &:r2105_2, m2100_6 +# 2105| r2105_4(unsigned long) = Constant[1] : +# 2105| r2105_5(unsigned long) = Mul : r2105_3, r2105_4 +# 2105| r2105_6(void *) = Call[operator new[]] : func:r2105_1, 0:r2105_5 +# 2105| m2105_7(unknown) = ^CallSideEffect : ~m2104_9 +# 2105| m2105_8(unknown) = Chi : total:m2104_9, partial:m2105_7 +# 2105| m2105_9(unknown) = ^InitializeDynamicAllocation : &:r2105_6 +# 2105| r2105_10(DefaultCtorWithDefaultParam *) = Convert : r2105_6 +# 2106| r2106_1(glval) = FunctionAddress[operator new[]] : +# 2106| r2106_2(glval) = VariableAddress[n] : +# 2106| r2106_3(unsigned long) = Load[n] : &:r2106_2, m2100_6 +# 2106| r2106_4(unsigned long) = Constant[4] : +# 2106| r2106_5(unsigned long) = Mul : r2106_3, r2106_4 +# 2106| r2106_6(void *) = Call[operator new[]] : func:r2106_1, 0:r2106_5 +# 2106| m2106_7(unknown) = ^CallSideEffect : ~m2105_8 +# 2106| m2106_8(unknown) = Chi : total:m2105_8, partial:m2106_7 +# 2106| m2106_9(unknown) = ^InitializeDynamicAllocation : &:r2106_6 +# 2106| r2106_10(int *) = Convert : r2106_6 +# 2107| v2107_1(void) = NoOp : +# 2100| v2100_7(void) = ReturnVoid : +# 2100| v2100_8(void) = AliasedUse : ~m2106_8 +# 2100| v2100_9(void) = ExitFunction : + +# 2111| char* test_strtod(char*) +# 2111| Block 0 +# 2111| v2111_1(void) = EnterFunction : +# 2111| m2111_2(unknown) = AliasedDefinition : +# 2111| m2111_3(unknown) = InitializeNonLocal : +# 2111| m2111_4(unknown) = Chi : total:m2111_2, partial:m2111_3 +# 2111| r2111_5(glval) = VariableAddress[s] : +# 2111| m2111_6(char *) = InitializeParameter[s] : &:r2111_5 +# 2111| r2111_7(char *) = Load[s] : &:r2111_5, m2111_6 +# 2111| m2111_8(unknown) = InitializeIndirection[s] : &:r2111_7 +# 2112| r2112_1(glval) = VariableAddress[end] : +# 2112| m2112_2(char *) = Uninitialized[end] : &:r2112_1 +# 2113| r2113_1(glval) = VariableAddress[d] : +# 2113| r2113_2(glval) = FunctionAddress[strtod] : +# 2113| r2113_3(glval) = VariableAddress[s] : +# 2113| r2113_4(char *) = Load[s] : &:r2113_3, m2111_6 +# 2113| r2113_5(char *) = Convert : r2113_4 +# 2113| r2113_6(glval) = VariableAddress[end] : +# 2113| r2113_7(char **) = CopyValue : r2113_6 +# 2113| r2113_8(double) = Call[strtod] : func:r2113_2, 0:r2113_5, 1:r2113_7 +# 2113| v2113_9(void) = ^BufferReadSideEffect[0] : &:r2113_5, ~m2111_8 +# 2113| m2113_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2113_7 +# 2113| m2113_11(char *) = Chi : total:m2112_2, partial:m2113_10 +# 2113| m2113_12(double) = Store[d] : &:r2113_1, r2113_8 +# 2114| r2114_1(glval) = VariableAddress[#return] : +# 2114| r2114_2(glval) = VariableAddress[end] : +# 2114| r2114_3(char *) = Load[end] : &:r2114_2, m2113_11 +# 2114| m2114_4(char *) = Store[#return] : &:r2114_1, r2114_3 +# 2111| v2111_9(void) = ReturnIndirection[s] : &:r2111_7, m2111_8 +# 2111| r2111_10(glval) = VariableAddress[#return] : +# 2111| v2111_11(void) = ReturnValue : &:r2111_10, m2114_4 +# 2111| v2111_12(void) = AliasedUse : m2111_3 +# 2111| v2111_13(void) = ExitFunction : + +# 2121| void call_as_child_of_ConditionDeclExpr() +# 2121| Block 0 +# 2121| v2121_1(void) = EnterFunction : +# 2121| m2121_2(unknown) = AliasedDefinition : +# 2121| m2121_3(unknown) = InitializeNonLocal : +# 2121| m2121_4(unknown) = Chi : total:m2121_2, partial:m2121_3 +# 2122| r2122_1(glval) = VariableAddress[b] : +# 2122| r2122_2(HasOperatorBool) = Constant[0] : +# 2122| m2122_3(HasOperatorBool) = Store[b] : &:r2122_1, r2122_2 +# 2122| r2122_4(glval) = VariableAddress[b] : +# 2122| r2122_5(glval) = FunctionAddress[operator bool] : +# 2122| r2122_6(bool) = Call[operator bool] : func:r2122_5, this:r2122_4 +# 2122| m2122_7(unknown) = ^CallSideEffect : ~m2121_4 +# 2122| m2122_8(unknown) = Chi : total:m2121_4, partial:m2122_7 +# 2122| v2122_9(void) = ^IndirectReadSideEffect[-1] : &:r2122_4, m2122_3 +# 2122| m2122_10(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2122_4 +# 2122| m2122_11(HasOperatorBool) = Chi : total:m2122_3, partial:m2122_10 +# 2122| r2122_12(bool) = CopyValue : r2122_6 +# 2122| v2122_13(void) = ConditionalBranch : r2122_12 #-----| False -> Block 2 #-----| True -> Block 1 -# 2120| Block 1 -# 2120| v2120_14(void) = NoOp : +# 2122| Block 1 +# 2122| v2122_14(void) = NoOp : #-----| Goto -> Block 2 -# 2121| Block 2 -# 2121| v2121_1(void) = NoOp : -# 2119| v2119_5(void) = ReturnVoid : -# 2119| v2119_6(void) = AliasedUse : ~m2120_8 -# 2119| v2119_7(void) = ExitFunction : +# 2123| Block 2 +# 2123| v2123_1(void) = NoOp : +# 2121| v2121_5(void) = ReturnVoid : +# 2121| v2121_6(void) = AliasedUse : ~m2122_8 +# 2121| v2121_7(void) = ExitFunction : + +# 2125| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2125| Block 0 +# 2125| v2125_1(void) = EnterFunction : +# 2125| m2125_2(unknown) = AliasedDefinition : +# 2125| m2125_3(unknown) = InitializeNonLocal : +# 2125| m2125_4(unknown) = Chi : total:m2125_2, partial:m2125_3 +# 2125| r2125_5(glval) = VariableAddress[#this] : +# 2125| m2125_6(glval) = InitializeParameter[#this] : &:r2125_5 +# 2125| r2125_7(glval) = Load[#this] : &:r2125_5, m2125_6 +# 2125| m2125_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2125_7 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| m0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 +#-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 2125| r2125_9(glval) = FieldAddress[x] : m2125_6 +# 2125| r2125_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 2125| r2125_11(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2125_10, m0_2 +# 2125| r2125_12(glval) = CopyValue : r2125_11 +# 2125| r2125_13(glval) = FieldAddress[x] : r2125_12 +# 2125| r2125_14(char *) = Load[?] : &:r2125_13, ~m0_4 +# 2125| m2125_15(char *) = Store[?] : &:r2125_9, r2125_14 +# 2125| m2125_16(unknown) = Chi : total:m2125_8, partial:m2125_15 +# 2125| v2125_17(void) = NoOp : +# 2125| v2125_18(void) = ReturnIndirection[#this] : &:r2125_7, m2125_16 +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 +# 2125| v2125_19(void) = ReturnVoid : +# 2125| v2125_20(void) = AliasedUse : m2125_3 +# 2125| v2125_21(void) = ExitFunction : + +# 2128| void ClassWithDestructor::ClassWithDestructor() +# 2128| Block 0 +# 2128| v2128_1(void) = EnterFunction : +# 2128| m2128_2(unknown) = AliasedDefinition : +# 2128| m2128_3(unknown) = InitializeNonLocal : +# 2128| m2128_4(unknown) = Chi : total:m2128_2, partial:m2128_3 +# 2128| r2128_5(glval) = VariableAddress[#this] : +# 2128| m2128_6(glval) = InitializeParameter[#this] : &:r2128_5 +# 2128| r2128_7(glval) = Load[#this] : &:r2128_5, m2128_6 +# 2128| m2128_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2128_7 +# 2128| r2128_9(glval) = FunctionAddress[operator new] : +# 2128| r2128_10(unsigned long) = Constant[1] : +# 2128| r2128_11(void *) = Call[operator new] : func:r2128_9, 0:r2128_10 +# 2128| m2128_12(unknown) = ^CallSideEffect : ~m2128_4 +# 2128| m2128_13(unknown) = Chi : total:m2128_4, partial:m2128_12 +# 2128| m2128_14(unknown) = ^InitializeDynamicAllocation : &:r2128_11 +# 2128| r2128_15(char *) = Convert : r2128_11 +# 2128| r2128_16(glval) = VariableAddress[#this] : +# 2128| r2128_17(ClassWithDestructor *) = Load[#this] : &:r2128_16, m2128_6 +# 2128| r2128_18(glval) = FieldAddress[x] : r2128_17 +# 2128| m2128_19(char *) = Store[?] : &:r2128_18, r2128_15 +# 2128| m2128_20(unknown) = Chi : total:m2128_8, partial:m2128_19 +# 2128| v2128_21(void) = NoOp : +# 2128| v2128_22(void) = ReturnIndirection[#this] : &:r2128_7, m2128_20 +# 2128| v2128_23(void) = ReturnVoid : +# 2128| v2128_24(void) = AliasedUse : ~m2128_13 +# 2128| v2128_25(void) = ExitFunction : + +# 2129| void ClassWithDestructor::~ClassWithDestructor() +# 2129| Block 0 +# 2129| v2129_1(void) = EnterFunction : +# 2129| m2129_2(unknown) = AliasedDefinition : +# 2129| m2129_3(unknown) = InitializeNonLocal : +# 2129| m2129_4(unknown) = Chi : total:m2129_2, partial:m2129_3 +# 2129| r2129_5(glval) = VariableAddress[#this] : +# 2129| m2129_6(glval) = InitializeParameter[#this] : &:r2129_5 +# 2129| r2129_7(glval) = Load[#this] : &:r2129_5, m2129_6 +# 2129| m2129_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2129_7 +# 2129| r2129_9(glval) = FunctionAddress[operator delete] : +# 2129| r2129_10(glval) = VariableAddress[#this] : +# 2129| r2129_11(ClassWithDestructor *) = Load[#this] : &:r2129_10, m2129_6 +# 2129| r2129_12(glval) = FieldAddress[x] : r2129_11 +# 2129| r2129_13(char *) = Load[?] : &:r2129_12, ~m2129_8 +# 2129| v2129_14(void) = Call[operator delete] : func:r2129_9, 0:r2129_13 +# 2129| m2129_15(unknown) = ^CallSideEffect : ~m2129_4 +# 2129| m2129_16(unknown) = Chi : total:m2129_4, partial:m2129_15 +# 2129| v2129_17(void) = NoOp : +# 2129| v2129_18(void) = ReturnIndirection[#this] : &:r2129_7, m2129_8 +# 2129| v2129_19(void) = ReturnVoid : +# 2129| v2129_20(void) = AliasedUse : ~m2129_16 +# 2129| v2129_21(void) = ExitFunction : + +# 2131| void ClassWithDestructor::set_x(char) +# 2131| Block 0 +# 2131| v2131_1(void) = EnterFunction : +# 2131| m2131_2(unknown) = AliasedDefinition : +# 2131| m2131_3(unknown) = InitializeNonLocal : +# 2131| m2131_4(unknown) = Chi : total:m2131_2, partial:m2131_3 +# 2131| r2131_5(glval) = VariableAddress[#this] : +# 2131| m2131_6(glval) = InitializeParameter[#this] : &:r2131_5 +# 2131| r2131_7(glval) = Load[#this] : &:r2131_5, m2131_6 +# 2131| m2131_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2131_7 +# 2131| r2131_9(glval) = VariableAddress[y] : +# 2131| m2131_10(char) = InitializeParameter[y] : &:r2131_9 +# 2131| r2131_11(glval) = VariableAddress[y] : +# 2131| r2131_12(char) = Load[y] : &:r2131_11, m2131_10 +# 2131| r2131_13(glval) = VariableAddress[#this] : +# 2131| r2131_14(ClassWithDestructor *) = Load[#this] : &:r2131_13, m2131_6 +# 2131| r2131_15(glval) = FieldAddress[x] : r2131_14 +# 2131| r2131_16(char *) = Load[?] : &:r2131_15, ~m2131_8 +# 2131| r2131_17(glval) = CopyValue : r2131_16 +# 2131| m2131_18(char) = Store[?] : &:r2131_17, r2131_12 +# 2131| m2131_19(unknown) = Chi : total:m2131_4, partial:m2131_18 +# 2131| v2131_20(void) = NoOp : +# 2131| v2131_21(void) = ReturnIndirection[#this] : &:r2131_7, m2131_8 +# 2131| v2131_22(void) = ReturnVoid : +# 2131| v2131_23(void) = AliasedUse : ~m2131_19 +# 2131| v2131_24(void) = ExitFunction : + +# 2134| bool initialization_with_destructor_bool +# 2134| Block 0 +# 2134| v2134_1(void) = EnterFunction : +# 2134| m2134_2(unknown) = AliasedDefinition : +# 2134| r2134_3(glval) = VariableAddress[initialization_with_destructor_bool] : +# 2134| r2134_4(bool) = Constant[1] : +# 2134| m2134_5(bool) = Store[initialization_with_destructor_bool] : &:r2134_3, r2134_4 +# 2134| m2134_6(unknown) = Chi : total:m2134_2, partial:m2134_5 +# 2134| v2134_7(void) = ReturnVoid : +# 2134| v2134_8(void) = AliasedUse : ~m2134_6 +# 2134| v2134_9(void) = ExitFunction : + +# 2136| void initialization_with_destructor(bool, char) +# 2136| Block 0 +# 2136| v2136_1(void) = EnterFunction : +# 2136| m2136_2(unknown) = AliasedDefinition : +# 2136| m2136_3(unknown) = InitializeNonLocal : +# 2136| m2136_4(unknown) = Chi : total:m2136_2, partial:m2136_3 +# 2136| r2136_5(glval) = VariableAddress[b] : +# 2136| m2136_6(bool) = InitializeParameter[b] : &:r2136_5 +# 2136| r2136_7(glval) = VariableAddress[c] : +# 2136| m2136_8(char) = InitializeParameter[c] : &:r2136_7 +# 2137| r2137_1(glval) = VariableAddress[x] : +# 2137| m2137_2(ClassWithDestructor) = Uninitialized[x] : &:r2137_1 +# 2137| r2137_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2137| v2137_4(void) = Call[ClassWithDestructor] : func:r2137_3, this:r2137_1 +# 2137| m2137_5(unknown) = ^CallSideEffect : ~m2136_4 +# 2137| m2137_6(unknown) = Chi : total:m2136_4, partial:m2137_5 +# 2137| m2137_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2137_1 +# 2137| m2137_8(ClassWithDestructor) = Chi : total:m2137_2, partial:m2137_7 +# 2137| r2137_9(glval) = VariableAddress[b] : +# 2137| r2137_10(bool) = Load[b] : &:r2137_9, m2136_6 +# 2137| v2137_11(void) = ConditionalBranch : r2137_10 +#-----| True -> Block 1 + +# 2138| Block 1 +# 2138| r2138_1(glval) = VariableAddress[x] : +# 2138| r2138_2(glval) = FunctionAddress[set_x] : +# 2138| r2138_3(char) = Constant[97] : +# 2138| v2138_4(void) = Call[set_x] : func:r2138_2, this:r2138_1, 0:r2138_3 +# 2138| m2138_5(unknown) = ^CallSideEffect : ~m2137_6 +# 2138| m2138_6(unknown) = Chi : total:m2137_6, partial:m2138_5 +# 2138| v2138_7(void) = ^IndirectReadSideEffect[-1] : &:r2138_1, m2137_8 +# 2138| m2138_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2138_1 +# 2138| m2138_9(ClassWithDestructor) = Chi : total:m2137_8, partial:m2138_8 perf-regression.cpp: # 6| void Big::Big() diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected index b93c7d2649f8..b027437d48a9 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:2138:9:2138:9 | Chi: x | Instruction 'Chi: x' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected index b93c7d2649f8..b027437d48a9 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:2138:9:2138:9 | Chi: x | Instruction 'Chi: x' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index ce03076f0c36..cd702fcb265b 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1065,6 +1065,8 @@ struct vector { bool operator!=(iterator right) const; }; + vector(T); + ~vector(); iterator begin() const; iterator end() const; }; @@ -2120,4 +2122,36 @@ void call_as_child_of_ConditionDeclExpr() { if(HasOperatorBool b = HasOperatorBool()) {} } -// semmle-extractor-options: -std=c++17 --clang +class ClassWithDestructor { + char *x; +public: + ClassWithDestructor() { x = new char; } + ~ClassWithDestructor() { delete x; } + + void set_x(char y) { *x = y; } +}; + +constexpr bool initialization_with_destructor_bool = true; + +void initialization_with_destructor(bool b, char c) { + if (ClassWithDestructor x; b) + x.set_x('a'); + + if constexpr (ClassWithDestructor x; initialization_with_destructor_bool) + x.set_x('a'); + + switch(ClassWithDestructor x; c) { + case 'a': + x.set_x('a'); + break; + default: + x.set_x('b'); + break; + } + + ClassWithDestructor x; + for(vector ys(x); ClassWithDestructor y : ys) + y.set_x('a'); +} + +// semmle-extractor-options: -std=c++20 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 2af9a3488e08..eba7196785f1 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -688,6 +688,8 @@ | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_2 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | @@ -720,6 +722,8 @@ | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_5 | @@ -794,12 +798,12 @@ | file://:0:0:0:0 | ChiTotal | total:m754_8 | | file://:0:0:0:0 | ChiTotal | total:m763_8 | | file://:0:0:0:0 | ChiTotal | total:m1043_10 | -| file://:0:0:0:0 | ChiTotal | total:m1240_4 | -| file://:0:0:0:0 | ChiTotal | total:m1688_3 | -| file://:0:0:0:0 | ChiTotal | total:m1716_8 | -| file://:0:0:0:0 | ChiTotal | total:m1716_19 | -| file://:0:0:0:0 | ChiTotal | total:m1834_8 | -| file://:0:0:0:0 | ChiTotal | total:m1839_8 | +| file://:0:0:0:0 | ChiTotal | total:m1242_4 | +| file://:0:0:0:0 | ChiTotal | total:m1690_3 | +| file://:0:0:0:0 | ChiTotal | total:m1718_8 | +| file://:0:0:0:0 | ChiTotal | total:m1718_19 | +| file://:0:0:0:0 | ChiTotal | total:m1836_8 | +| file://:0:0:0:0 | ChiTotal | total:m1841_8 | | file://:0:0:0:0 | Left | r0_2 | | file://:0:0:0:0 | Left | r0_4 | | file://:0:0:0:0 | Left | r0_7 | @@ -821,6 +825,7 @@ | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | +| file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_5 | | file://:0:0:0:0 | Load | m0_8 | | file://:0:0:0:0 | Load | m0_11 | @@ -829,18 +834,18 @@ | file://:0:0:0:0 | Load | m745_6 | | file://:0:0:0:0 | Load | m754_6 | | file://:0:0:0:0 | Load | m763_6 | -| file://:0:0:0:0 | Load | m1466_4 | -| file://:0:0:0:0 | Load | m1466_4 | -| file://:0:0:0:0 | Load | m1685_9 | -| file://:0:0:0:0 | Load | m1714_4 | -| file://:0:0:0:0 | Load | m1834_6 | -| file://:0:0:0:0 | Load | m1834_6 | -| file://:0:0:0:0 | Load | m1839_6 | -| file://:0:0:0:0 | Load | m2013_6 | +| file://:0:0:0:0 | Load | m1468_4 | +| file://:0:0:0:0 | Load | m1468_4 | +| file://:0:0:0:0 | Load | m1687_9 | +| file://:0:0:0:0 | Load | m1716_4 | +| file://:0:0:0:0 | Load | m1836_6 | +| file://:0:0:0:0 | Load | m1836_6 | +| file://:0:0:0:0 | Load | m1841_6 | +| file://:0:0:0:0 | Load | m2015_6 | | file://:0:0:0:0 | Load | ~m0_4 | -| file://:0:0:0:0 | Load | ~m1444_6 | -| file://:0:0:0:0 | Load | ~m1712_10 | -| file://:0:0:0:0 | Load | ~m1712_14 | +| file://:0:0:0:0 | Load | ~m1446_6 | +| file://:0:0:0:0 | Load | ~m1714_10 | +| file://:0:0:0:0 | Load | ~m1714_14 | | file://:0:0:0:0 | Right | r0_3 | | file://:0:0:0:0 | Right | r0_5 | | file://:0:0:0:0 | Right | r0_8 | @@ -859,11 +864,12 @@ | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | +| file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_14 | -| file://:0:0:0:0 | SideEffect | m1078_23 | -| file://:0:0:0:0 | SideEffect | m1078_23 | -| file://:0:0:0:0 | SideEffect | m1084_23 | -| file://:0:0:0:0 | SideEffect | m1084_23 | +| file://:0:0:0:0 | SideEffect | m1080_23 | +| file://:0:0:0:0 | SideEffect | m1080_23 | +| file://:0:0:0:0 | SideEffect | m1086_23 | +| file://:0:0:0:0 | SideEffect | m1086_23 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | @@ -873,13 +879,13 @@ | file://:0:0:0:0 | SideEffect | ~m96_8 | | file://:0:0:0:0 | SideEffect | ~m754_8 | | file://:0:0:0:0 | SideEffect | ~m763_8 | -| file://:0:0:0:0 | SideEffect | ~m1077_8 | -| file://:0:0:0:0 | SideEffect | ~m1077_8 | -| file://:0:0:0:0 | SideEffect | ~m1077_8 | -| file://:0:0:0:0 | SideEffect | ~m1077_8 | -| file://:0:0:0:0 | SideEffect | ~m1240_4 | -| file://:0:0:0:0 | SideEffect | ~m1447_6 | -| file://:0:0:0:0 | SideEffect | ~m1839_8 | +| file://:0:0:0:0 | SideEffect | ~m1079_8 | +| file://:0:0:0:0 | SideEffect | ~m1079_8 | +| file://:0:0:0:0 | SideEffect | ~m1079_8 | +| file://:0:0:0:0 | SideEffect | ~m1079_8 | +| file://:0:0:0:0 | SideEffect | ~m1242_4 | +| file://:0:0:0:0 | SideEffect | ~m1449_6 | +| file://:0:0:0:0 | SideEffect | ~m1841_8 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | @@ -5525,4568 +5531,4684 @@ | ir.cpp:1055:15:1055:15 | ChiTotal | total:m1052_7 | | ir.cpp:1055:15:1055:15 | SideEffect | ~m1052_7 | | ir.cpp:1055:16:1055:16 | Arg(0) | 0:r1055_4 | -| ir.cpp:1077:6:1077:18 | ChiPartial | partial:m1077_3 | -| ir.cpp:1077:6:1077:18 | ChiTotal | total:m1077_2 | -| ir.cpp:1077:6:1077:18 | SideEffect | ~m1088_1 | -| ir.cpp:1077:39:1077:39 | Address | &:r1077_5 | -| ir.cpp:1077:39:1077:39 | Address | &:r1077_5 | -| ir.cpp:1077:39:1077:39 | Address | &:r1077_7 | -| ir.cpp:1077:39:1077:39 | Address | &:r1077_7 | -| ir.cpp:1077:39:1077:39 | Load | m1077_6 | -| ir.cpp:1077:39:1077:39 | SideEffect | m1077_8 | -| ir.cpp:1078:5:1082:5 | Address | &:r1078_1 | -| ir.cpp:1078:5:1082:5 | Address | &:r1078_7 | -| ir.cpp:1078:5:1082:5 | Address | &:r1078_15 | -| ir.cpp:1078:5:1082:5 | Address | &:r1078_33 | -| ir.cpp:1078:18:1078:18 | Address | &:r1078_2 | -| ir.cpp:1078:18:1078:18 | Address | &:r1078_8 | -| ir.cpp:1078:18:1078:18 | Address | &:r1078_16 | -| ir.cpp:1078:18:1078:18 | Address | &:r1078_27 | -| ir.cpp:1078:18:1078:18 | Address | &:r1078_36 | -| ir.cpp:1078:18:1078:18 | Address | &:r1078_42 | -| ir.cpp:1078:18:1078:18 | Address | &:r1078_42 | -| ir.cpp:1078:18:1078:18 | Arg(0) | 0:r1078_28 | -| ir.cpp:1078:18:1078:18 | Arg(this) | this:r0_1 | -| ir.cpp:1078:18:1078:18 | Arg(this) | this:r0_3 | -| ir.cpp:1078:18:1078:18 | Arg(this) | this:r0_5 | -| ir.cpp:1078:18:1078:18 | Arg(this) | this:r0_7 | -| ir.cpp:1078:18:1078:18 | Arg(this) | this:r1078_42 | -| ir.cpp:1078:18:1078:18 | CallTarget | func:r1078_10 | -| ir.cpp:1078:18:1078:18 | CallTarget | func:r1078_18 | -| ir.cpp:1078:18:1078:18 | CallTarget | func:r1078_26 | -| ir.cpp:1078:18:1078:18 | CallTarget | func:r1078_35 | -| ir.cpp:1078:18:1078:18 | CallTarget | func:r1078_43 | -| ir.cpp:1078:18:1078:18 | ChiPartial | partial:m1078_12 | -| ir.cpp:1078:18:1078:18 | ChiPartial | partial:m1078_20 | -| ir.cpp:1078:18:1078:18 | ChiPartial | partial:m1078_30 | -| ir.cpp:1078:18:1078:18 | ChiPartial | partial:m1078_37 | -| ir.cpp:1078:18:1078:18 | ChiPartial | partial:m1078_45 | -| ir.cpp:1078:18:1078:18 | ChiPartial | partial:m1078_48 | -| ir.cpp:1078:18:1078:18 | ChiTotal | total:m1077_4 | -| ir.cpp:1078:18:1078:18 | ChiTotal | total:m1078_13 | -| ir.cpp:1078:18:1078:18 | ChiTotal | total:m1078_23 | -| ir.cpp:1078:18:1078:18 | ChiTotal | total:m1078_24 | -| ir.cpp:1078:18:1078:18 | ChiTotal | total:m1078_31 | -| ir.cpp:1078:18:1078:18 | ChiTotal | total:m1078_38 | -| ir.cpp:1078:18:1078:18 | Condition | r1078_29 | -| ir.cpp:1078:18:1078:18 | Load | m1077_6 | -| ir.cpp:1078:18:1078:18 | Load | m1078_6 | -| ir.cpp:1078:18:1078:18 | Load | m1078_6 | -| ir.cpp:1078:18:1078:18 | Load | m1078_22 | -| ir.cpp:1078:18:1078:18 | Phi | from 0:m1078_14 | -| ir.cpp:1078:18:1078:18 | Phi | from 0:~m1078_21 | -| ir.cpp:1078:18:1078:18 | Phi | from 4:m1078_49 | -| ir.cpp:1078:18:1078:18 | Phi | from 4:~m1078_46 | -| ir.cpp:1078:18:1078:18 | SideEffect | m1078_23 | -| ir.cpp:1078:18:1078:18 | SideEffect | ~m1077_4 | -| ir.cpp:1078:18:1078:18 | SideEffect | ~m1078_13 | -| ir.cpp:1078:18:1078:18 | SideEffect | ~m1078_24 | -| ir.cpp:1078:18:1078:18 | SideEffect | ~m1078_31 | -| ir.cpp:1078:18:1078:18 | SideEffect | ~m1078_38 | -| ir.cpp:1078:18:1078:18 | StoreValue | r1078_5 | -| ir.cpp:1078:18:1078:18 | StoreValue | r1078_11 | -| ir.cpp:1078:18:1078:18 | StoreValue | r1078_19 | -| ir.cpp:1078:18:1078:18 | Unary | r1078_3 | -| ir.cpp:1078:18:1078:18 | Unary | r1078_4 | -| ir.cpp:1078:18:1078:18 | Unary | r1078_9 | -| ir.cpp:1078:18:1078:18 | Unary | r1078_17 | -| ir.cpp:1078:18:1078:18 | Unary | r1078_25 | -| ir.cpp:1078:18:1078:18 | Unary | r1078_34 | -| ir.cpp:1078:18:1078:18 | Unary | r1078_44 | -| ir.cpp:1078:18:1078:19 | Load | ~m1078_38 | -| ir.cpp:1078:18:1078:19 | StoreValue | r1078_39 | -| ir.cpp:1079:13:1079:13 | Address | &:r1079_1 | -| ir.cpp:1079:13:1079:13 | Left | r1079_2 | -| ir.cpp:1079:13:1079:13 | Load | m1078_40 | -| ir.cpp:1079:13:1079:17 | Condition | r1079_4 | -| ir.cpp:1079:17:1079:17 | Right | r1079_3 | -| ir.cpp:1084:5:1088:5 | Address | &:r1084_1 | -| ir.cpp:1084:5:1088:5 | Address | &:r1084_7 | -| ir.cpp:1084:5:1088:5 | Address | &:r1084_15 | -| ir.cpp:1084:5:1088:5 | Address | &:r1084_42 | -| ir.cpp:1084:25:1084:25 | Address | &:r1084_2 | -| ir.cpp:1084:25:1084:25 | Address | &:r1084_8 | -| ir.cpp:1084:25:1084:25 | Address | &:r1084_16 | -| ir.cpp:1084:25:1084:25 | Address | &:r1084_27 | -| ir.cpp:1084:25:1084:25 | Address | &:r1084_33 | -| ir.cpp:1084:25:1084:25 | Address | &:r1084_33 | -| ir.cpp:1084:25:1084:25 | Arg(0) | 0:r1084_28 | -| ir.cpp:1084:25:1084:25 | Arg(this) | this:r0_9 | -| ir.cpp:1084:25:1084:25 | Arg(this) | this:r0_11 | -| ir.cpp:1084:25:1084:25 | Arg(this) | this:r0_13 | -| ir.cpp:1084:25:1084:25 | Arg(this) | this:r0_15 | -| ir.cpp:1084:25:1084:25 | Arg(this) | this:r1084_33 | -| ir.cpp:1084:25:1084:25 | CallTarget | func:r1084_10 | -| ir.cpp:1084:25:1084:25 | CallTarget | func:r1084_18 | -| ir.cpp:1084:25:1084:25 | CallTarget | func:r1084_26 | -| ir.cpp:1084:25:1084:25 | CallTarget | func:r1084_34 | -| ir.cpp:1084:25:1084:25 | CallTarget | func:r1084_44 | -| ir.cpp:1084:25:1084:25 | ChiPartial | partial:m1084_12 | -| ir.cpp:1084:25:1084:25 | ChiPartial | partial:m1084_20 | -| ir.cpp:1084:25:1084:25 | ChiPartial | partial:m1084_30 | -| ir.cpp:1084:25:1084:25 | ChiPartial | partial:m1084_36 | -| ir.cpp:1084:25:1084:25 | ChiPartial | partial:m1084_39 | -| ir.cpp:1084:25:1084:25 | ChiPartial | partial:m1084_46 | -| ir.cpp:1084:25:1084:25 | ChiTotal | total:m1078_31 | -| ir.cpp:1084:25:1084:25 | ChiTotal | total:m1084_13 | -| ir.cpp:1084:25:1084:25 | ChiTotal | total:m1084_23 | -| ir.cpp:1084:25:1084:25 | ChiTotal | total:m1084_24 | -| ir.cpp:1084:25:1084:25 | ChiTotal | total:m1084_31 | -| ir.cpp:1084:25:1084:25 | ChiTotal | total:m1084_47 | -| ir.cpp:1084:25:1084:25 | Condition | r1084_29 | -| ir.cpp:1084:25:1084:25 | Load | m1077_6 | -| ir.cpp:1084:25:1084:25 | Load | m1084_6 | -| ir.cpp:1084:25:1084:25 | Load | m1084_6 | -| ir.cpp:1084:25:1084:25 | Load | m1084_22 | -| ir.cpp:1084:25:1084:25 | Phi | from 5:m1084_14 | -| ir.cpp:1084:25:1084:25 | Phi | from 5:~m1084_21 | -| ir.cpp:1084:25:1084:25 | Phi | from 7:m1084_40 | -| ir.cpp:1084:25:1084:25 | Phi | from 7:~m1084_37 | -| ir.cpp:1084:25:1084:25 | SideEffect | m1084_23 | -| ir.cpp:1084:25:1084:25 | SideEffect | ~m1078_31 | -| ir.cpp:1084:25:1084:25 | SideEffect | ~m1084_13 | -| ir.cpp:1084:25:1084:25 | SideEffect | ~m1084_24 | -| ir.cpp:1084:25:1084:25 | SideEffect | ~m1084_31 | -| ir.cpp:1084:25:1084:25 | SideEffect | ~m1084_47 | -| ir.cpp:1084:25:1084:25 | StoreValue | r1084_5 | -| ir.cpp:1084:25:1084:25 | StoreValue | r1084_11 | -| ir.cpp:1084:25:1084:25 | StoreValue | r1084_19 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_3 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_4 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_9 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_17 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_25 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_35 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_43 | -| ir.cpp:1084:25:1084:25 | Unary | r1084_45 | -| ir.cpp:1084:25:1084:26 | StoreValue | r1084_50 | -| ir.cpp:1084:25:1084:26 | Unary | r1084_48 | -| ir.cpp:1084:25:1084:26 | Unary | r1084_49 | -| ir.cpp:1085:13:1085:13 | Address | &:r1085_1 | -| ir.cpp:1085:13:1085:13 | Address | &:r1085_2 | -| ir.cpp:1085:13:1085:13 | Left | r1085_3 | -| ir.cpp:1085:13:1085:13 | Load | m1084_51 | -| ir.cpp:1085:13:1085:13 | Load | ~m1084_47 | -| ir.cpp:1085:13:1085:17 | Condition | r1085_5 | -| ir.cpp:1085:17:1085:17 | Right | r1085_4 | -| ir.cpp:1088:5:1088:5 | Phi | from 6:~m1084_31 | -| ir.cpp:1088:5:1088:5 | Phi | from 9:~m1084_47 | -| ir.cpp:1108:5:1108:11 | Address | &:r1108_7 | -| ir.cpp:1108:5:1108:11 | ChiPartial | partial:m1108_3 | -| ir.cpp:1108:5:1108:11 | ChiTotal | total:m1108_2 | -| ir.cpp:1108:5:1108:11 | Load | m1110_4 | -| ir.cpp:1108:5:1108:11 | SideEffect | ~m1109_2 | -| ir.cpp:1108:17:1108:17 | Address | &:r1108_5 | -| ir.cpp:1109:3:1109:14 | ChiPartial | partial:m1109_1 | -| ir.cpp:1109:3:1109:14 | ChiTotal | total:m1108_4 | -| ir.cpp:1109:3:1109:14 | SideEffect | ~m1108_4 | -| ir.cpp:1110:3:1110:11 | Address | &:r1110_1 | -| ir.cpp:1110:10:1110:10 | Address | &:r1110_2 | -| ir.cpp:1110:10:1110:10 | Load | m1108_6 | -| ir.cpp:1110:10:1110:10 | StoreValue | r1110_3 | -| ir.cpp:1113:13:1113:30 | ChiPartial | partial:m1113_3 | -| ir.cpp:1113:13:1113:30 | ChiTotal | total:m1113_2 | -| ir.cpp:1113:13:1113:30 | SideEffect | ~m1115_2 | -| ir.cpp:1113:46:1113:46 | Address | &:r1113_5 | -| ir.cpp:1113:46:1113:46 | Address | &:r1113_5 | -| ir.cpp:1113:46:1113:46 | Address | &:r1113_7 | -| ir.cpp:1113:46:1113:46 | Address | &:r1113_7 | -| ir.cpp:1113:46:1113:46 | Load | m1113_6 | -| ir.cpp:1113:46:1113:46 | SideEffect | m1113_8 | -| ir.cpp:1113:62:1113:62 | Address | &:r1113_9 | -| ir.cpp:1113:79:1113:79 | Address | &:r1113_11 | -| ir.cpp:1113:79:1113:79 | Address | &:r1113_11 | -| ir.cpp:1113:79:1113:79 | Address | &:r1113_13 | -| ir.cpp:1113:79:1113:79 | Address | &:r1113_13 | -| ir.cpp:1113:79:1113:79 | Load | m1113_12 | -| ir.cpp:1113:79:1113:79 | SideEffect | m1113_14 | -| ir.cpp:1113:95:1113:95 | Address | &:r1113_15 | -| ir.cpp:1115:3:1119:6 | ChiPartial | partial:m1115_1 | -| ir.cpp:1115:3:1119:6 | ChiTotal | total:m1113_4 | -| ir.cpp:1115:3:1119:6 | SideEffect | ~m1113_4 | -| ir.cpp:1118:13:1118:13 | Address | &:r1118_1 | -| ir.cpp:1118:13:1118:13 | AsmOperand(0) | 0:r1118_3 | -| ir.cpp:1118:13:1118:13 | Load | m1113_6 | -| ir.cpp:1118:13:1118:13 | Unary | r1118_2 | -| ir.cpp:1118:23:1118:23 | AsmOperand(1) | 1:r1118_4 | -| ir.cpp:1118:33:1118:33 | Address | &:r1118_5 | -| ir.cpp:1118:33:1118:33 | Address | &:r1118_6 | -| ir.cpp:1118:33:1118:33 | AsmOperand(2) | 2:r1118_7 | -| ir.cpp:1118:33:1118:33 | Load | m1113_12 | -| ir.cpp:1118:33:1118:33 | Load | ~m1113_14 | -| ir.cpp:1118:42:1118:42 | Address | &:r1118_8 | -| ir.cpp:1118:42:1118:42 | AsmOperand(3) | 3:r1118_9 | -| ir.cpp:1118:42:1118:42 | Load | m1113_16 | -| ir.cpp:1122:6:1122:23 | ChiPartial | partial:m1122_3 | -| ir.cpp:1122:6:1122:23 | ChiTotal | total:m1122_2 | -| ir.cpp:1122:6:1122:23 | SideEffect | m1122_3 | -| ir.cpp:1125:9:1125:9 | Address | &:r1125_1 | -| ir.cpp:1126:9:1126:9 | Address | &:r1126_1 | -| ir.cpp:1127:29:1127:29 | Address | &:r1127_1 | -| ir.cpp:1137:6:1137:30 | ChiPartial | partial:m1137_3 | -| ir.cpp:1137:6:1137:30 | ChiTotal | total:m1137_2 | -| ir.cpp:1137:6:1137:30 | SideEffect | m1137_3 | -| ir.cpp:1139:5:1139:20 | Address | &:r1139_1 | -| ir.cpp:1139:5:1139:20 | Address | &:r1139_5 | -| ir.cpp:1139:5:1139:20 | Address | &:r1139_10 | -| ir.cpp:1139:5:1139:20 | Address | &:r1139_10 | -| ir.cpp:1139:5:1139:20 | Condition | r1139_8 | -| ir.cpp:1139:5:1139:20 | Left | r1139_6 | -| ir.cpp:1139:5:1139:20 | Left | r1139_11 | -| ir.cpp:1139:5:1139:20 | Load | m1139_4 | -| ir.cpp:1139:5:1139:20 | Load | m1139_4 | -| ir.cpp:1139:5:1139:20 | Phi | from 0:m1139_3 | -| ir.cpp:1139:5:1139:20 | Phi | from 2:m1139_14 | -| ir.cpp:1139:5:1139:20 | Right | r1139_7 | -| ir.cpp:1139:5:1139:20 | Right | r1139_12 | -| ir.cpp:1139:5:1139:20 | StoreValue | r1139_2 | -| ir.cpp:1139:5:1139:20 | StoreValue | r1139_13 | -| ir.cpp:1142:6:1142:23 | ChiPartial | partial:m1142_3 | -| ir.cpp:1142:6:1142:23 | ChiTotal | total:m1142_2 | -| ir.cpp:1142:6:1142:23 | Phi | from 2:~m1142_10 | -| ir.cpp:1142:6:1142:23 | Phi | from 7:~m1154_8 | -| ir.cpp:1142:6:1142:23 | Phi | from 8:~m1142_4 | -| ir.cpp:1142:6:1142:23 | Phi | from 10:~m1142_4 | -| ir.cpp:1142:6:1142:23 | SideEffect | ~m1142_7 | -| ir.cpp:1142:30:1142:30 | Address | &:r1142_5 | -| ir.cpp:1144:9:1144:9 | Address | &:r1144_1 | -| ir.cpp:1144:12:1144:13 | StoreValue | r1144_2 | -| ir.cpp:1145:9:1145:9 | Address | &:r1145_1 | -| ir.cpp:1145:9:1145:9 | Condition | r1145_2 | -| ir.cpp:1145:9:1145:9 | Load | m1142_6 | -| ir.cpp:1146:7:1146:28 | Address | &:r1146_1 | -| ir.cpp:1146:7:1146:28 | Address | &:r1146_1 | -| ir.cpp:1146:7:1146:28 | Load | m1146_4 | -| ir.cpp:1146:13:1146:28 | StoreValue | r1146_3 | -| ir.cpp:1146:13:1146:28 | Unary | r1146_2 | -| ir.cpp:1148:14:1148:14 | Address | &:r1148_1 | -| ir.cpp:1148:14:1148:14 | Left | r1148_2 | -| ir.cpp:1148:14:1148:14 | Load | m1144_3 | -| ir.cpp:1148:14:1148:18 | Condition | r1148_4 | -| ir.cpp:1148:18:1148:18 | Right | r1148_3 | -| ir.cpp:1151:5:1151:5 | Address | &:r1151_2 | -| ir.cpp:1151:9:1151:9 | StoreValue | r1151_1 | -| ir.cpp:1153:22:1153:22 | Address | &:r1153_2 | -| ir.cpp:1153:22:1153:22 | Address | &:r1153_2 | -| ir.cpp:1153:22:1153:22 | Address | &:r1153_4 | -| ir.cpp:1153:22:1153:22 | Load | m1153_3 | -| ir.cpp:1154:5:1154:19 | Address | &:r1154_1 | -| ir.cpp:1154:5:1154:19 | Address | &:r1154_1 | -| ir.cpp:1154:5:1154:19 | Address | &:r1154_1 | -| ir.cpp:1154:5:1154:19 | Arg(this) | this:r1154_1 | -| ir.cpp:1154:5:1154:19 | CallTarget | func:r1154_3 | -| ir.cpp:1154:5:1154:19 | ChiPartial | partial:m1154_7 | -| ir.cpp:1154:5:1154:19 | ChiPartial | partial:m1154_10 | -| ir.cpp:1154:5:1154:19 | ChiTotal | total:m1142_4 | -| ir.cpp:1154:5:1154:19 | ChiTotal | total:m1154_2 | -| ir.cpp:1154:5:1154:19 | Load | m1154_11 | -| ir.cpp:1154:5:1154:19 | SideEffect | ~m1142_4 | -| ir.cpp:1154:18:1154:18 | Address | &:r1154_4 | -| ir.cpp:1154:18:1154:18 | Address | &:r1154_5 | -| ir.cpp:1154:18:1154:18 | Arg(0) | 0:r1154_5 | -| ir.cpp:1154:18:1154:18 | Load | m1153_3 | -| ir.cpp:1154:18:1154:18 | SideEffect | ~m1153_5 | -| ir.cpp:1156:24:1156:24 | Address | &:r1156_2 | -| ir.cpp:1156:24:1156:24 | Address | &:r1156_2 | -| ir.cpp:1156:24:1156:24 | Address | &:r1156_4 | -| ir.cpp:1156:24:1156:24 | Load | m1156_3 | -| ir.cpp:1162:6:1162:16 | ChiPartial | partial:m1162_3 | -| ir.cpp:1162:6:1162:16 | ChiTotal | total:m1162_2 | -| ir.cpp:1162:6:1162:16 | SideEffect | m1162_3 | -| ir.cpp:1162:22:1162:22 | Address | &:r1162_5 | -| ir.cpp:1163:18:1163:20 | Address | &:r1163_1 | -| ir.cpp:1163:18:1163:20 | Left | r1163_1 | -| ir.cpp:1163:18:1163:20 | Left | r1163_1 | -| ir.cpp:1163:18:1163:20 | Left | r1163_1 | -| ir.cpp:1163:18:1163:20 | Left | r1163_1 | -| ir.cpp:1163:23:1163:37 | Address | &:r1163_4 | -| ir.cpp:1163:23:1163:37 | Address | &:r1163_9 | -| ir.cpp:1163:23:1163:37 | Address | &:r1163_14 | -| ir.cpp:1163:23:1163:37 | Address | &:r1163_19 | -| ir.cpp:1163:23:1163:37 | Right | r1163_3 | -| ir.cpp:1163:23:1163:37 | Right | r1163_8 | -| ir.cpp:1163:23:1163:37 | Right | r1163_13 | -| ir.cpp:1163:23:1163:37 | Right | r1163_18 | -| ir.cpp:1163:26:1163:26 | ChiPartial | partial:m1163_6 | -| ir.cpp:1163:26:1163:26 | ChiTotal | total:m1163_2 | -| ir.cpp:1163:26:1163:26 | StoreValue | r1163_5 | -| ir.cpp:1163:29:1163:29 | ChiPartial | partial:m1163_11 | -| ir.cpp:1163:29:1163:29 | ChiTotal | total:m1163_7 | -| ir.cpp:1163:29:1163:29 | StoreValue | r1163_10 | -| ir.cpp:1163:32:1163:32 | ChiPartial | partial:m1163_16 | -| ir.cpp:1163:32:1163:32 | ChiTotal | total:m1163_12 | -| ir.cpp:1163:32:1163:32 | StoreValue | r1163_15 | -| ir.cpp:1163:35:1163:35 | ChiPartial | partial:m1163_21 | -| ir.cpp:1163:35:1163:35 | ChiTotal | total:m1163_17 | -| ir.cpp:1163:35:1163:35 | StoreValue | r1163_20 | -| ir.cpp:1164:7:1164:7 | Address | &:r1164_1 | -| ir.cpp:1164:11:1164:13 | Left | r1164_2 | -| ir.cpp:1164:11:1164:16 | Address | &:r1164_5 | -| ir.cpp:1164:11:1164:16 | Load | ~m1163_22 | -| ir.cpp:1164:11:1164:16 | StoreValue | r1164_6 | -| ir.cpp:1164:15:1164:15 | Address | &:r1164_3 | -| ir.cpp:1164:15:1164:15 | Load | m1162_6 | -| ir.cpp:1164:15:1164:15 | Right | r1164_4 | -| ir.cpp:1165:3:1165:5 | Left | r1165_3 | -| ir.cpp:1165:3:1165:8 | Address | &:r1165_6 | -| ir.cpp:1165:3:1165:12 | ChiPartial | partial:m1165_7 | -| ir.cpp:1165:3:1165:12 | ChiTotal | total:m1163_22 | -| ir.cpp:1165:7:1165:7 | Address | &:r1165_4 | -| ir.cpp:1165:7:1165:7 | Load | m1162_6 | -| ir.cpp:1165:7:1165:7 | Right | r1165_5 | -| ir.cpp:1165:12:1165:12 | Address | &:r1165_1 | -| ir.cpp:1165:12:1165:12 | Load | m1164_7 | -| ir.cpp:1165:12:1165:12 | StoreValue | r1165_2 | -| ir.cpp:1166:18:1166:28 | Address | &:r1166_1 | -| ir.cpp:1166:32:1166:78 | Arg(2) | 2:r1166_6 | -| ir.cpp:1166:32:1166:78 | StoreValue | r1166_10 | -| ir.cpp:1166:56:1166:58 | Address | &:r1166_2 | -| ir.cpp:1166:56:1166:58 | Arg(0) | 0:r1166_3 | -| ir.cpp:1166:56:1166:58 | Load | m1165_8 | -| ir.cpp:1166:61:1166:63 | Address | &:r1166_4 | -| ir.cpp:1166:61:1166:63 | Arg(1) | 1:r1166_5 | -| ir.cpp:1166:61:1166:63 | Load | m1165_8 | -| ir.cpp:1166:71:1166:71 | Arg(3) | 3:r1166_7 | -| ir.cpp:1166:74:1166:74 | Arg(4) | 4:r1166_8 | -| ir.cpp:1166:77:1166:77 | Arg(5) | 5:r1166_9 | -| ir.cpp:1167:3:1167:5 | Address | &:r1167_6 | -| ir.cpp:1167:9:1167:11 | Address | &:r1167_1 | -| ir.cpp:1167:9:1167:11 | Left | r1167_2 | -| ir.cpp:1167:9:1167:11 | Load | m1165_8 | -| ir.cpp:1167:9:1167:25 | StoreValue | r1167_5 | -| ir.cpp:1167:15:1167:25 | Address | &:r1167_3 | -| ir.cpp:1167:15:1167:25 | Load | m1166_11 | -| ir.cpp:1167:15:1167:25 | Right | r1167_4 | -| ir.cpp:1172:5:1172:21 | Address | &:r1172_7 | -| ir.cpp:1172:5:1172:21 | ChiPartial | partial:m1172_3 | -| ir.cpp:1172:5:1172:21 | ChiTotal | total:m1172_2 | -| ir.cpp:1172:5:1172:21 | Load | m1175_4 | -| ir.cpp:1172:5:1172:21 | SideEffect | m1172_3 | -| ir.cpp:1172:27:1172:27 | Address | &:r1172_5 | -| ir.cpp:1173:7:1173:7 | Address | &:r1173_1 | -| ir.cpp:1174:3:1174:8 | CallTarget | func:r1174_1 | -| ir.cpp:1174:10:1174:11 | Address | &:r1174_4 | -| ir.cpp:1174:10:1174:11 | Arg(0) | 0:r1174_4 | -| ir.cpp:1174:10:1174:11 | ChiPartial | partial:m1174_11 | -| ir.cpp:1174:10:1174:11 | ChiTotal | total:m1173_2 | -| ir.cpp:1174:10:1174:11 | Unary | r1174_3 | -| ir.cpp:1174:11:1174:11 | Unary | r1174_2 | -| ir.cpp:1174:14:1174:15 | Address | &:r1174_7 | -| ir.cpp:1174:14:1174:15 | Arg(1) | 1:r1174_7 | -| ir.cpp:1174:14:1174:15 | SideEffect | ~m1172_6 | -| ir.cpp:1174:14:1174:15 | Unary | r1174_6 | -| ir.cpp:1174:15:1174:15 | Unary | r1174_5 | -| ir.cpp:1174:18:1174:28 | Arg(2) | 2:r1174_8 | -| ir.cpp:1174:18:1174:28 | BufferSize | r1174_8 | -| ir.cpp:1174:18:1174:28 | BufferSize | r1174_8 | -| ir.cpp:1175:3:1175:11 | Address | &:r1175_1 | -| ir.cpp:1175:10:1175:10 | Address | &:r1175_2 | -| ir.cpp:1175:10:1175:10 | Load | m1174_12 | -| ir.cpp:1175:10:1175:10 | StoreValue | r1175_3 | -| ir.cpp:1178:8:1178:23 | Address | &:r1178_5 | -| ir.cpp:1178:8:1178:23 | ChiPartial | partial:m1178_3 | -| ir.cpp:1178:8:1178:23 | ChiTotal | total:m1178_2 | -| ir.cpp:1178:8:1178:23 | Load | m1179_11 | -| ir.cpp:1178:8:1178:23 | SideEffect | ~m1179_8 | -| ir.cpp:1179:3:1179:23 | Address | &:r1179_1 | -| ir.cpp:1179:3:1179:23 | Address | &:r1179_1 | -| ir.cpp:1179:3:1179:23 | Arg(this) | this:r1179_1 | -| ir.cpp:1179:3:1179:23 | CallTarget | func:r1179_3 | -| ir.cpp:1179:3:1179:23 | ChiPartial | partial:m1179_7 | -| ir.cpp:1179:3:1179:23 | ChiPartial | partial:m1179_10 | -| ir.cpp:1179:3:1179:23 | ChiTotal | total:m1178_4 | -| ir.cpp:1179:3:1179:23 | ChiTotal | total:m1179_2 | -| ir.cpp:1179:3:1179:23 | SideEffect | ~m1178_4 | -| ir.cpp:1179:17:1179:21 | Address | &:r1179_5 | -| ir.cpp:1179:17:1179:21 | Arg(0) | 0:r1179_5 | -| ir.cpp:1179:17:1179:21 | SideEffect | ~m1178_3 | -| ir.cpp:1179:17:1179:21 | Unary | r1179_4 | -| ir.cpp:1182:6:1182:16 | ChiPartial | partial:m1182_3 | -| ir.cpp:1182:6:1182:16 | ChiTotal | total:m1182_2 | -| ir.cpp:1182:6:1182:16 | SideEffect | m1182_3 | -| ir.cpp:1182:22:1182:22 | Address | &:r1182_5 | -| ir.cpp:1183:9:1183:9 | Address | &:r1183_1 | -| ir.cpp:1183:12:1183:13 | StoreValue | r1183_2 | -| ir.cpp:1184:12:1184:12 | Address | &:r1184_1 | -| ir.cpp:1184:12:1184:12 | Condition | r1184_2 | -| ir.cpp:1184:12:1184:12 | Load | m1182_6 | -| ir.cpp:1186:9:1186:9 | Address | &:r1186_2 | -| ir.cpp:1186:13:1186:13 | StoreValue | r1186_1 | +| ir.cpp:1079:6:1079:18 | ChiPartial | partial:m1079_3 | +| ir.cpp:1079:6:1079:18 | ChiTotal | total:m1079_2 | +| ir.cpp:1079:6:1079:18 | SideEffect | ~m1090_1 | +| ir.cpp:1079:39:1079:39 | Address | &:r1079_5 | +| ir.cpp:1079:39:1079:39 | Address | &:r1079_5 | +| ir.cpp:1079:39:1079:39 | Address | &:r1079_7 | +| ir.cpp:1079:39:1079:39 | Address | &:r1079_7 | +| ir.cpp:1079:39:1079:39 | Load | m1079_6 | +| ir.cpp:1079:39:1079:39 | SideEffect | m1079_8 | +| ir.cpp:1080:5:1080:5 | Address | &:r1080_1 | +| ir.cpp:1080:5:1080:5 | Address | &:r1080_7 | +| ir.cpp:1080:5:1080:5 | Address | &:r1080_15 | +| ir.cpp:1080:14:1080:14 | Address | &:r1080_33 | +| ir.cpp:1080:18:1080:18 | Address | &:r1080_2 | +| ir.cpp:1080:18:1080:18 | Address | &:r1080_8 | +| ir.cpp:1080:18:1080:18 | Address | &:r1080_16 | +| ir.cpp:1080:18:1080:18 | Address | &:r1080_27 | +| ir.cpp:1080:18:1080:18 | Address | &:r1080_36 | +| ir.cpp:1080:18:1080:18 | Address | &:r1080_42 | +| ir.cpp:1080:18:1080:18 | Address | &:r1080_42 | +| ir.cpp:1080:18:1080:18 | Arg(0) | 0:r1080_28 | +| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_1 | +| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_3 | +| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_5 | +| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_7 | +| ir.cpp:1080:18:1080:18 | Arg(this) | this:r1080_42 | +| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_10 | +| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_18 | +| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_26 | +| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_35 | +| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_43 | +| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_12 | +| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_20 | +| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_30 | +| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_37 | +| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_45 | +| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_48 | +| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1079_4 | +| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_13 | +| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_23 | +| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_24 | +| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_31 | +| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_38 | +| ir.cpp:1080:18:1080:18 | Condition | r1080_29 | +| ir.cpp:1080:18:1080:18 | Load | m1079_6 | +| ir.cpp:1080:18:1080:18 | Load | m1080_6 | +| ir.cpp:1080:18:1080:18 | Load | m1080_6 | +| ir.cpp:1080:18:1080:18 | Load | m1080_22 | +| ir.cpp:1080:18:1080:18 | Phi | from 0:m1080_14 | +| ir.cpp:1080:18:1080:18 | Phi | from 0:~m1080_21 | +| ir.cpp:1080:18:1080:18 | Phi | from 4:m1080_49 | +| ir.cpp:1080:18:1080:18 | Phi | from 4:~m1080_46 | +| ir.cpp:1080:18:1080:18 | SideEffect | m1080_23 | +| ir.cpp:1080:18:1080:18 | SideEffect | ~m1079_4 | +| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_13 | +| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_24 | +| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_31 | +| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_38 | +| ir.cpp:1080:18:1080:18 | StoreValue | r1080_5 | +| ir.cpp:1080:18:1080:18 | StoreValue | r1080_11 | +| ir.cpp:1080:18:1080:18 | StoreValue | r1080_19 | +| ir.cpp:1080:18:1080:18 | Unary | r1080_3 | +| ir.cpp:1080:18:1080:18 | Unary | r1080_4 | +| ir.cpp:1080:18:1080:18 | Unary | r1080_9 | +| ir.cpp:1080:18:1080:18 | Unary | r1080_17 | +| ir.cpp:1080:18:1080:18 | Unary | r1080_25 | +| ir.cpp:1080:18:1080:18 | Unary | r1080_34 | +| ir.cpp:1080:18:1080:18 | Unary | r1080_44 | +| ir.cpp:1080:18:1080:19 | Load | ~m1080_38 | +| ir.cpp:1080:18:1080:19 | StoreValue | r1080_39 | +| ir.cpp:1081:13:1081:13 | Address | &:r1081_1 | +| ir.cpp:1081:13:1081:13 | Left | r1081_2 | +| ir.cpp:1081:13:1081:13 | Load | m1080_40 | +| ir.cpp:1081:13:1081:17 | Condition | r1081_4 | +| ir.cpp:1081:17:1081:17 | Right | r1081_3 | +| ir.cpp:1086:5:1086:5 | Address | &:r1086_1 | +| ir.cpp:1086:5:1086:5 | Address | &:r1086_7 | +| ir.cpp:1086:5:1086:5 | Address | &:r1086_15 | +| ir.cpp:1086:21:1086:21 | Address | &:r1086_42 | +| ir.cpp:1086:25:1086:25 | Address | &:r1086_2 | +| ir.cpp:1086:25:1086:25 | Address | &:r1086_8 | +| ir.cpp:1086:25:1086:25 | Address | &:r1086_16 | +| ir.cpp:1086:25:1086:25 | Address | &:r1086_27 | +| ir.cpp:1086:25:1086:25 | Address | &:r1086_33 | +| ir.cpp:1086:25:1086:25 | Address | &:r1086_33 | +| ir.cpp:1086:25:1086:25 | Arg(0) | 0:r1086_28 | +| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_9 | +| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_11 | +| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_13 | +| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_15 | +| ir.cpp:1086:25:1086:25 | Arg(this) | this:r1086_33 | +| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_10 | +| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_18 | +| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_26 | +| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_34 | +| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_44 | +| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_12 | +| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_20 | +| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_30 | +| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_36 | +| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_39 | +| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_46 | +| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1080_31 | +| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_13 | +| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_23 | +| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_24 | +| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_31 | +| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_47 | +| ir.cpp:1086:25:1086:25 | Condition | r1086_29 | +| ir.cpp:1086:25:1086:25 | Load | m1079_6 | +| ir.cpp:1086:25:1086:25 | Load | m1086_6 | +| ir.cpp:1086:25:1086:25 | Load | m1086_6 | +| ir.cpp:1086:25:1086:25 | Load | m1086_22 | +| ir.cpp:1086:25:1086:25 | Phi | from 5:m1086_14 | +| ir.cpp:1086:25:1086:25 | Phi | from 5:~m1086_21 | +| ir.cpp:1086:25:1086:25 | Phi | from 7:m1086_40 | +| ir.cpp:1086:25:1086:25 | Phi | from 7:~m1086_37 | +| ir.cpp:1086:25:1086:25 | SideEffect | m1086_23 | +| ir.cpp:1086:25:1086:25 | SideEffect | ~m1080_31 | +| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_13 | +| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_24 | +| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_31 | +| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_47 | +| ir.cpp:1086:25:1086:25 | StoreValue | r1086_5 | +| ir.cpp:1086:25:1086:25 | StoreValue | r1086_11 | +| ir.cpp:1086:25:1086:25 | StoreValue | r1086_19 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_3 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_4 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_9 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_17 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_25 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_35 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_43 | +| ir.cpp:1086:25:1086:25 | Unary | r1086_45 | +| ir.cpp:1086:25:1086:26 | StoreValue | r1086_50 | +| ir.cpp:1086:25:1086:26 | Unary | r1086_48 | +| ir.cpp:1086:25:1086:26 | Unary | r1086_49 | +| ir.cpp:1087:13:1087:13 | Address | &:r1087_1 | +| ir.cpp:1087:13:1087:13 | Address | &:r1087_2 | +| ir.cpp:1087:13:1087:13 | Left | r1087_3 | +| ir.cpp:1087:13:1087:13 | Load | m1086_51 | +| ir.cpp:1087:13:1087:13 | Load | ~m1086_47 | +| ir.cpp:1087:13:1087:17 | Condition | r1087_5 | +| ir.cpp:1087:17:1087:17 | Right | r1087_4 | +| ir.cpp:1090:5:1090:5 | Phi | from 6:~m1086_31 | +| ir.cpp:1090:5:1090:5 | Phi | from 9:~m1086_47 | +| ir.cpp:1110:5:1110:11 | Address | &:r1110_7 | +| ir.cpp:1110:5:1110:11 | ChiPartial | partial:m1110_3 | +| ir.cpp:1110:5:1110:11 | ChiTotal | total:m1110_2 | +| ir.cpp:1110:5:1110:11 | Load | m1112_4 | +| ir.cpp:1110:5:1110:11 | SideEffect | ~m1111_2 | +| ir.cpp:1110:17:1110:17 | Address | &:r1110_5 | +| ir.cpp:1111:3:1111:14 | ChiPartial | partial:m1111_1 | +| ir.cpp:1111:3:1111:14 | ChiTotal | total:m1110_4 | +| ir.cpp:1111:3:1111:14 | SideEffect | ~m1110_4 | +| ir.cpp:1112:3:1112:11 | Address | &:r1112_1 | +| ir.cpp:1112:10:1112:10 | Address | &:r1112_2 | +| ir.cpp:1112:10:1112:10 | Load | m1110_6 | +| ir.cpp:1112:10:1112:10 | StoreValue | r1112_3 | +| ir.cpp:1115:13:1115:30 | ChiPartial | partial:m1115_3 | +| ir.cpp:1115:13:1115:30 | ChiTotal | total:m1115_2 | +| ir.cpp:1115:13:1115:30 | SideEffect | ~m1117_2 | +| ir.cpp:1115:46:1115:46 | Address | &:r1115_5 | +| ir.cpp:1115:46:1115:46 | Address | &:r1115_5 | +| ir.cpp:1115:46:1115:46 | Address | &:r1115_7 | +| ir.cpp:1115:46:1115:46 | Address | &:r1115_7 | +| ir.cpp:1115:46:1115:46 | Load | m1115_6 | +| ir.cpp:1115:46:1115:46 | SideEffect | m1115_8 | +| ir.cpp:1115:62:1115:62 | Address | &:r1115_9 | +| ir.cpp:1115:79:1115:79 | Address | &:r1115_11 | +| ir.cpp:1115:79:1115:79 | Address | &:r1115_11 | +| ir.cpp:1115:79:1115:79 | Address | &:r1115_13 | +| ir.cpp:1115:79:1115:79 | Address | &:r1115_13 | +| ir.cpp:1115:79:1115:79 | Load | m1115_12 | +| ir.cpp:1115:79:1115:79 | SideEffect | m1115_14 | +| ir.cpp:1115:95:1115:95 | Address | &:r1115_15 | +| ir.cpp:1117:3:1121:6 | ChiPartial | partial:m1117_1 | +| ir.cpp:1117:3:1121:6 | ChiTotal | total:m1115_4 | +| ir.cpp:1117:3:1121:6 | SideEffect | ~m1115_4 | +| ir.cpp:1120:13:1120:13 | Address | &:r1120_1 | +| ir.cpp:1120:13:1120:13 | AsmOperand(0) | 0:r1120_3 | +| ir.cpp:1120:13:1120:13 | Load | m1115_6 | +| ir.cpp:1120:13:1120:13 | Unary | r1120_2 | +| ir.cpp:1120:23:1120:23 | AsmOperand(1) | 1:r1120_4 | +| ir.cpp:1120:33:1120:33 | Address | &:r1120_5 | +| ir.cpp:1120:33:1120:33 | Address | &:r1120_6 | +| ir.cpp:1120:33:1120:33 | AsmOperand(2) | 2:r1120_7 | +| ir.cpp:1120:33:1120:33 | Load | m1115_12 | +| ir.cpp:1120:33:1120:33 | Load | ~m1115_14 | +| ir.cpp:1120:42:1120:42 | Address | &:r1120_8 | +| ir.cpp:1120:42:1120:42 | AsmOperand(3) | 3:r1120_9 | +| ir.cpp:1120:42:1120:42 | Load | m1115_16 | +| ir.cpp:1124:6:1124:23 | ChiPartial | partial:m1124_3 | +| ir.cpp:1124:6:1124:23 | ChiTotal | total:m1124_2 | +| ir.cpp:1124:6:1124:23 | SideEffect | m1124_3 | +| ir.cpp:1127:9:1127:9 | Address | &:r1127_1 | +| ir.cpp:1128:9:1128:9 | Address | &:r1128_1 | +| ir.cpp:1129:29:1129:29 | Address | &:r1129_1 | +| ir.cpp:1139:6:1139:30 | ChiPartial | partial:m1139_3 | +| ir.cpp:1139:6:1139:30 | ChiTotal | total:m1139_2 | +| ir.cpp:1139:6:1139:30 | SideEffect | m1139_3 | +| ir.cpp:1141:5:1141:20 | Address | &:r1141_1 | +| ir.cpp:1141:5:1141:20 | Address | &:r1141_5 | +| ir.cpp:1141:5:1141:20 | Address | &:r1141_10 | +| ir.cpp:1141:5:1141:20 | Address | &:r1141_10 | +| ir.cpp:1141:5:1141:20 | Condition | r1141_8 | +| ir.cpp:1141:5:1141:20 | Left | r1141_6 | +| ir.cpp:1141:5:1141:20 | Left | r1141_11 | +| ir.cpp:1141:5:1141:20 | Load | m1141_4 | +| ir.cpp:1141:5:1141:20 | Load | m1141_4 | +| ir.cpp:1141:5:1141:20 | Phi | from 0:m1141_3 | +| ir.cpp:1141:5:1141:20 | Phi | from 2:m1141_14 | +| ir.cpp:1141:5:1141:20 | Right | r1141_7 | +| ir.cpp:1141:5:1141:20 | Right | r1141_12 | +| ir.cpp:1141:5:1141:20 | StoreValue | r1141_2 | +| ir.cpp:1141:5:1141:20 | StoreValue | r1141_13 | +| ir.cpp:1144:6:1144:23 | ChiPartial | partial:m1144_3 | +| ir.cpp:1144:6:1144:23 | ChiTotal | total:m1144_2 | +| ir.cpp:1144:6:1144:23 | Phi | from 2:~m1144_10 | +| ir.cpp:1144:6:1144:23 | Phi | from 7:~m1156_8 | +| ir.cpp:1144:6:1144:23 | Phi | from 8:~m1144_4 | +| ir.cpp:1144:6:1144:23 | Phi | from 10:~m1144_4 | +| ir.cpp:1144:6:1144:23 | SideEffect | ~m1144_7 | +| ir.cpp:1144:30:1144:30 | Address | &:r1144_5 | +| ir.cpp:1146:9:1146:9 | Address | &:r1146_1 | +| ir.cpp:1146:12:1146:13 | StoreValue | r1146_2 | +| ir.cpp:1147:9:1147:9 | Address | &:r1147_1 | +| ir.cpp:1147:9:1147:9 | Condition | r1147_2 | +| ir.cpp:1147:9:1147:9 | Load | m1144_6 | +| ir.cpp:1148:7:1148:28 | Address | &:r1148_1 | +| ir.cpp:1148:7:1148:28 | Address | &:r1148_1 | +| ir.cpp:1148:7:1148:28 | Load | m1148_4 | +| ir.cpp:1148:13:1148:28 | StoreValue | r1148_3 | +| ir.cpp:1148:13:1148:28 | Unary | r1148_2 | +| ir.cpp:1150:14:1150:14 | Address | &:r1150_1 | +| ir.cpp:1150:14:1150:14 | Left | r1150_2 | +| ir.cpp:1150:14:1150:14 | Load | m1146_3 | +| ir.cpp:1150:14:1150:18 | Condition | r1150_4 | +| ir.cpp:1150:18:1150:18 | Right | r1150_3 | +| ir.cpp:1153:5:1153:5 | Address | &:r1153_2 | +| ir.cpp:1153:9:1153:9 | StoreValue | r1153_1 | +| ir.cpp:1155:22:1155:22 | Address | &:r1155_2 | +| ir.cpp:1155:22:1155:22 | Address | &:r1155_2 | +| ir.cpp:1155:22:1155:22 | Address | &:r1155_4 | +| ir.cpp:1155:22:1155:22 | Load | m1155_3 | +| ir.cpp:1156:5:1156:19 | Address | &:r1156_1 | +| ir.cpp:1156:5:1156:19 | Address | &:r1156_1 | +| ir.cpp:1156:5:1156:19 | Address | &:r1156_1 | +| ir.cpp:1156:5:1156:19 | Arg(this) | this:r1156_1 | +| ir.cpp:1156:5:1156:19 | CallTarget | func:r1156_3 | +| ir.cpp:1156:5:1156:19 | ChiPartial | partial:m1156_7 | +| ir.cpp:1156:5:1156:19 | ChiPartial | partial:m1156_10 | +| ir.cpp:1156:5:1156:19 | ChiTotal | total:m1144_4 | +| ir.cpp:1156:5:1156:19 | ChiTotal | total:m1156_2 | +| ir.cpp:1156:5:1156:19 | Load | m1156_11 | +| ir.cpp:1156:5:1156:19 | SideEffect | ~m1144_4 | +| ir.cpp:1156:18:1156:18 | Address | &:r1156_4 | +| ir.cpp:1156:18:1156:18 | Address | &:r1156_5 | +| ir.cpp:1156:18:1156:18 | Arg(0) | 0:r1156_5 | +| ir.cpp:1156:18:1156:18 | Load | m1155_3 | +| ir.cpp:1156:18:1156:18 | SideEffect | ~m1155_5 | +| ir.cpp:1158:24:1158:24 | Address | &:r1158_2 | +| ir.cpp:1158:24:1158:24 | Address | &:r1158_2 | +| ir.cpp:1158:24:1158:24 | Address | &:r1158_4 | +| ir.cpp:1158:24:1158:24 | Load | m1158_3 | +| ir.cpp:1164:6:1164:16 | ChiPartial | partial:m1164_3 | +| ir.cpp:1164:6:1164:16 | ChiTotal | total:m1164_2 | +| ir.cpp:1164:6:1164:16 | SideEffect | m1164_3 | +| ir.cpp:1164:22:1164:22 | Address | &:r1164_5 | +| ir.cpp:1165:18:1165:20 | Address | &:r1165_1 | +| ir.cpp:1165:18:1165:20 | Left | r1165_1 | +| ir.cpp:1165:18:1165:20 | Left | r1165_1 | +| ir.cpp:1165:18:1165:20 | Left | r1165_1 | +| ir.cpp:1165:18:1165:20 | Left | r1165_1 | +| ir.cpp:1165:23:1165:37 | Address | &:r1165_4 | +| ir.cpp:1165:23:1165:37 | Address | &:r1165_9 | +| ir.cpp:1165:23:1165:37 | Address | &:r1165_14 | +| ir.cpp:1165:23:1165:37 | Address | &:r1165_19 | +| ir.cpp:1165:23:1165:37 | Right | r1165_3 | +| ir.cpp:1165:23:1165:37 | Right | r1165_8 | +| ir.cpp:1165:23:1165:37 | Right | r1165_13 | +| ir.cpp:1165:23:1165:37 | Right | r1165_18 | +| ir.cpp:1165:26:1165:26 | ChiPartial | partial:m1165_6 | +| ir.cpp:1165:26:1165:26 | ChiTotal | total:m1165_2 | +| ir.cpp:1165:26:1165:26 | StoreValue | r1165_5 | +| ir.cpp:1165:29:1165:29 | ChiPartial | partial:m1165_11 | +| ir.cpp:1165:29:1165:29 | ChiTotal | total:m1165_7 | +| ir.cpp:1165:29:1165:29 | StoreValue | r1165_10 | +| ir.cpp:1165:32:1165:32 | ChiPartial | partial:m1165_16 | +| ir.cpp:1165:32:1165:32 | ChiTotal | total:m1165_12 | +| ir.cpp:1165:32:1165:32 | StoreValue | r1165_15 | +| ir.cpp:1165:35:1165:35 | ChiPartial | partial:m1165_21 | +| ir.cpp:1165:35:1165:35 | ChiTotal | total:m1165_17 | +| ir.cpp:1165:35:1165:35 | StoreValue | r1165_20 | +| ir.cpp:1166:7:1166:7 | Address | &:r1166_1 | +| ir.cpp:1166:11:1166:13 | Left | r1166_2 | +| ir.cpp:1166:11:1166:16 | Address | &:r1166_5 | +| ir.cpp:1166:11:1166:16 | Load | ~m1165_22 | +| ir.cpp:1166:11:1166:16 | StoreValue | r1166_6 | +| ir.cpp:1166:15:1166:15 | Address | &:r1166_3 | +| ir.cpp:1166:15:1166:15 | Load | m1164_6 | +| ir.cpp:1166:15:1166:15 | Right | r1166_4 | +| ir.cpp:1167:3:1167:5 | Left | r1167_3 | +| ir.cpp:1167:3:1167:8 | Address | &:r1167_6 | +| ir.cpp:1167:3:1167:12 | ChiPartial | partial:m1167_7 | +| ir.cpp:1167:3:1167:12 | ChiTotal | total:m1165_22 | +| ir.cpp:1167:7:1167:7 | Address | &:r1167_4 | +| ir.cpp:1167:7:1167:7 | Load | m1164_6 | +| ir.cpp:1167:7:1167:7 | Right | r1167_5 | +| ir.cpp:1167:12:1167:12 | Address | &:r1167_1 | +| ir.cpp:1167:12:1167:12 | Load | m1166_7 | +| ir.cpp:1167:12:1167:12 | StoreValue | r1167_2 | +| ir.cpp:1168:18:1168:28 | Address | &:r1168_1 | +| ir.cpp:1168:32:1168:78 | Arg(2) | 2:r1168_6 | +| ir.cpp:1168:32:1168:78 | StoreValue | r1168_10 | +| ir.cpp:1168:56:1168:58 | Address | &:r1168_2 | +| ir.cpp:1168:56:1168:58 | Arg(0) | 0:r1168_3 | +| ir.cpp:1168:56:1168:58 | Load | m1167_8 | +| ir.cpp:1168:61:1168:63 | Address | &:r1168_4 | +| ir.cpp:1168:61:1168:63 | Arg(1) | 1:r1168_5 | +| ir.cpp:1168:61:1168:63 | Load | m1167_8 | +| ir.cpp:1168:71:1168:71 | Arg(3) | 3:r1168_7 | +| ir.cpp:1168:74:1168:74 | Arg(4) | 4:r1168_8 | +| ir.cpp:1168:77:1168:77 | Arg(5) | 5:r1168_9 | +| ir.cpp:1169:3:1169:5 | Address | &:r1169_6 | +| ir.cpp:1169:9:1169:11 | Address | &:r1169_1 | +| ir.cpp:1169:9:1169:11 | Left | r1169_2 | +| ir.cpp:1169:9:1169:11 | Load | m1167_8 | +| ir.cpp:1169:9:1169:25 | StoreValue | r1169_5 | +| ir.cpp:1169:15:1169:25 | Address | &:r1169_3 | +| ir.cpp:1169:15:1169:25 | Load | m1168_11 | +| ir.cpp:1169:15:1169:25 | Right | r1169_4 | +| ir.cpp:1174:5:1174:21 | Address | &:r1174_7 | +| ir.cpp:1174:5:1174:21 | ChiPartial | partial:m1174_3 | +| ir.cpp:1174:5:1174:21 | ChiTotal | total:m1174_2 | +| ir.cpp:1174:5:1174:21 | Load | m1177_4 | +| ir.cpp:1174:5:1174:21 | SideEffect | m1174_3 | +| ir.cpp:1174:27:1174:27 | Address | &:r1174_5 | +| ir.cpp:1175:7:1175:7 | Address | &:r1175_1 | +| ir.cpp:1176:3:1176:8 | CallTarget | func:r1176_1 | +| ir.cpp:1176:10:1176:11 | Address | &:r1176_4 | +| ir.cpp:1176:10:1176:11 | Arg(0) | 0:r1176_4 | +| ir.cpp:1176:10:1176:11 | ChiPartial | partial:m1176_11 | +| ir.cpp:1176:10:1176:11 | ChiTotal | total:m1175_2 | +| ir.cpp:1176:10:1176:11 | Unary | r1176_3 | +| ir.cpp:1176:11:1176:11 | Unary | r1176_2 | +| ir.cpp:1176:14:1176:15 | Address | &:r1176_7 | +| ir.cpp:1176:14:1176:15 | Arg(1) | 1:r1176_7 | +| ir.cpp:1176:14:1176:15 | SideEffect | ~m1174_6 | +| ir.cpp:1176:14:1176:15 | Unary | r1176_6 | +| ir.cpp:1176:15:1176:15 | Unary | r1176_5 | +| ir.cpp:1176:18:1176:28 | Arg(2) | 2:r1176_8 | +| ir.cpp:1176:18:1176:28 | BufferSize | r1176_8 | +| ir.cpp:1176:18:1176:28 | BufferSize | r1176_8 | +| ir.cpp:1177:3:1177:11 | Address | &:r1177_1 | +| ir.cpp:1177:10:1177:10 | Address | &:r1177_2 | +| ir.cpp:1177:10:1177:10 | Load | m1176_12 | +| ir.cpp:1177:10:1177:10 | StoreValue | r1177_3 | +| ir.cpp:1180:8:1180:23 | Address | &:r1180_5 | +| ir.cpp:1180:8:1180:23 | ChiPartial | partial:m1180_3 | +| ir.cpp:1180:8:1180:23 | ChiTotal | total:m1180_2 | +| ir.cpp:1180:8:1180:23 | Load | m1181_11 | +| ir.cpp:1180:8:1180:23 | SideEffect | ~m1181_8 | +| ir.cpp:1181:3:1181:23 | Address | &:r1181_1 | +| ir.cpp:1181:3:1181:23 | Address | &:r1181_1 | +| ir.cpp:1181:3:1181:23 | Arg(this) | this:r1181_1 | +| ir.cpp:1181:3:1181:23 | CallTarget | func:r1181_3 | +| ir.cpp:1181:3:1181:23 | ChiPartial | partial:m1181_7 | +| ir.cpp:1181:3:1181:23 | ChiPartial | partial:m1181_10 | +| ir.cpp:1181:3:1181:23 | ChiTotal | total:m1180_4 | +| ir.cpp:1181:3:1181:23 | ChiTotal | total:m1181_2 | +| ir.cpp:1181:3:1181:23 | SideEffect | ~m1180_4 | +| ir.cpp:1181:17:1181:21 | Address | &:r1181_5 | +| ir.cpp:1181:17:1181:21 | Arg(0) | 0:r1181_5 | +| ir.cpp:1181:17:1181:21 | SideEffect | ~m1180_3 | +| ir.cpp:1181:17:1181:21 | Unary | r1181_4 | +| ir.cpp:1184:6:1184:16 | ChiPartial | partial:m1184_3 | +| ir.cpp:1184:6:1184:16 | ChiTotal | total:m1184_2 | +| ir.cpp:1184:6:1184:16 | SideEffect | m1184_3 | +| ir.cpp:1184:22:1184:22 | Address | &:r1184_5 | +| ir.cpp:1185:9:1185:9 | Address | &:r1185_1 | +| ir.cpp:1185:12:1185:13 | StoreValue | r1185_2 | +| ir.cpp:1186:12:1186:12 | Address | &:r1186_1 | +| ir.cpp:1186:12:1186:12 | Condition | r1186_2 | +| ir.cpp:1186:12:1186:12 | Load | m1184_6 | | ir.cpp:1188:9:1188:9 | Address | &:r1188_2 | -| ir.cpp:1188:9:1188:9 | Phi | from 0:m1183_3 | -| ir.cpp:1188:9:1188:9 | Phi | from 1:m1186_3 | -| ir.cpp:1188:13:1188:13 | Address | &:r1188_3 | -| ir.cpp:1188:13:1188:13 | Load | m1188_1 | -| ir.cpp:1188:13:1188:13 | StoreValue | r1188_4 | -| ir.cpp:1191:6:1191:28 | ChiPartial | partial:m1191_3 | -| ir.cpp:1191:6:1191:28 | ChiTotal | total:m1191_2 | -| ir.cpp:1191:6:1191:28 | SideEffect | m1191_3 | -| ir.cpp:1191:34:1191:34 | Address | &:r1191_5 | -| ir.cpp:1192:9:1192:9 | Address | &:r1192_1 | -| ir.cpp:1192:12:1192:13 | StoreValue | r1192_2 | -| ir.cpp:1193:12:1193:12 | Address | &:r1193_1 | -| ir.cpp:1193:12:1193:12 | Condition | r1193_2 | -| ir.cpp:1193:12:1193:12 | Load | m1191_6 | -| ir.cpp:1195:9:1195:9 | Address | &:r1195_2 | -| ir.cpp:1195:13:1195:13 | StoreValue | r1195_1 | +| ir.cpp:1188:13:1188:13 | StoreValue | r1188_1 | +| ir.cpp:1190:9:1190:9 | Address | &:r1190_2 | +| ir.cpp:1190:9:1190:9 | Phi | from 0:m1185_3 | +| ir.cpp:1190:9:1190:9 | Phi | from 1:m1188_3 | +| ir.cpp:1190:13:1190:13 | Address | &:r1190_3 | +| ir.cpp:1190:13:1190:13 | Load | m1190_1 | +| ir.cpp:1190:13:1190:13 | StoreValue | r1190_4 | +| ir.cpp:1193:6:1193:28 | ChiPartial | partial:m1193_3 | +| ir.cpp:1193:6:1193:28 | ChiTotal | total:m1193_2 | +| ir.cpp:1193:6:1193:28 | SideEffect | m1193_3 | +| ir.cpp:1193:34:1193:34 | Address | &:r1193_5 | +| ir.cpp:1194:9:1194:9 | Address | &:r1194_1 | +| ir.cpp:1194:12:1194:13 | StoreValue | r1194_2 | +| ir.cpp:1195:12:1195:12 | Address | &:r1195_1 | +| ir.cpp:1195:12:1195:12 | Condition | r1195_2 | +| ir.cpp:1195:12:1195:12 | Load | m1193_6 | | ir.cpp:1197:9:1197:9 | Address | &:r1197_2 | | ir.cpp:1197:13:1197:13 | StoreValue | r1197_1 | | ir.cpp:1199:9:1199:9 | Address | &:r1199_2 | -| ir.cpp:1199:9:1199:9 | Phi | from 0:m1192_3 | -| ir.cpp:1199:9:1199:9 | Phi | from 2:m1197_3 | -| ir.cpp:1199:13:1199:13 | Address | &:r1199_3 | -| ir.cpp:1199:13:1199:13 | Load | m1199_1 | -| ir.cpp:1199:13:1199:13 | StoreValue | r1199_4 | -| ir.cpp:1202:6:1202:16 | ChiPartial | partial:m1202_3 | -| ir.cpp:1202:6:1202:16 | ChiTotal | total:m1202_2 | -| ir.cpp:1202:6:1202:16 | SideEffect | m1202_3 | -| ir.cpp:1202:22:1202:22 | Address | &:r1202_5 | -| ir.cpp:1203:9:1203:9 | Address | &:r1203_1 | -| ir.cpp:1203:12:1203:13 | StoreValue | r1203_2 | -| ir.cpp:1204:12:1204:12 | Address | &:r1204_1 | -| ir.cpp:1204:12:1204:12 | Condition | r1204_2 | -| ir.cpp:1204:12:1204:12 | Load | m1202_6 | -| ir.cpp:1206:9:1206:9 | Address | &:r1206_2 | -| ir.cpp:1206:13:1206:13 | StoreValue | r1206_1 | -| ir.cpp:1209:9:1209:9 | Address | &:r1209_2 | -| ir.cpp:1209:13:1209:13 | StoreValue | r1209_1 | -| ir.cpp:1210:5:1210:5 | Phi | from 0:m1203_3 | -| ir.cpp:1210:5:1210:5 | Phi | from 1:m1206_3 | -| ir.cpp:1210:5:1210:5 | Phi | from 2:m1209_3 | -| ir.cpp:1211:9:1211:9 | Address | &:r1211_1 | -| ir.cpp:1211:13:1211:13 | Address | &:r1211_2 | -| ir.cpp:1211:13:1211:13 | Load | m1210_1 | -| ir.cpp:1211:13:1211:13 | StoreValue | r1211_3 | -| ir.cpp:1214:6:1214:24 | ChiPartial | partial:m1214_3 | -| ir.cpp:1214:6:1214:24 | ChiTotal | total:m1214_2 | -| ir.cpp:1214:6:1214:24 | SideEffect | m1214_3 | -| ir.cpp:1214:30:1214:30 | Address | &:r1214_5 | -| ir.cpp:1215:9:1215:9 | Address | &:r1215_1 | -| ir.cpp:1215:12:1215:13 | StoreValue | r1215_2 | -| ir.cpp:1216:12:1216:12 | Address | &:r1216_1 | -| ir.cpp:1216:12:1216:12 | Condition | r1216_2 | -| ir.cpp:1216:12:1216:12 | Load | m1214_6 | -| ir.cpp:1218:13:1218:13 | Address | &:r1218_2 | -| ir.cpp:1218:17:1218:17 | StoreValue | r1218_1 | -| ir.cpp:1222:13:1222:13 | Address | &:r1222_2 | -| ir.cpp:1222:17:1222:17 | StoreValue | r1222_1 | -| ir.cpp:1226:13:1226:13 | Address | &:r1226_2 | -| ir.cpp:1226:17:1226:17 | StoreValue | r1226_1 | -| ir.cpp:1227:5:1227:5 | Phi | from 1:m1218_3 | -| ir.cpp:1227:5:1227:5 | Phi | from 2:m1222_3 | -| ir.cpp:1227:5:1227:5 | Phi | from 3:m1226_3 | -| ir.cpp:1228:9:1228:9 | Address | &:r1228_1 | +| ir.cpp:1199:13:1199:13 | StoreValue | r1199_1 | +| ir.cpp:1201:9:1201:9 | Address | &:r1201_2 | +| ir.cpp:1201:9:1201:9 | Phi | from 0:m1194_3 | +| ir.cpp:1201:9:1201:9 | Phi | from 2:m1199_3 | +| ir.cpp:1201:13:1201:13 | Address | &:r1201_3 | +| ir.cpp:1201:13:1201:13 | Load | m1201_1 | +| ir.cpp:1201:13:1201:13 | StoreValue | r1201_4 | +| ir.cpp:1204:6:1204:16 | ChiPartial | partial:m1204_3 | +| ir.cpp:1204:6:1204:16 | ChiTotal | total:m1204_2 | +| ir.cpp:1204:6:1204:16 | SideEffect | m1204_3 | +| ir.cpp:1204:22:1204:22 | Address | &:r1204_5 | +| ir.cpp:1205:9:1205:9 | Address | &:r1205_1 | +| ir.cpp:1205:12:1205:13 | StoreValue | r1205_2 | +| ir.cpp:1206:12:1206:12 | Address | &:r1206_1 | +| ir.cpp:1206:12:1206:12 | Condition | r1206_2 | +| ir.cpp:1206:12:1206:12 | Load | m1204_6 | +| ir.cpp:1208:9:1208:9 | Address | &:r1208_2 | +| ir.cpp:1208:13:1208:13 | StoreValue | r1208_1 | +| ir.cpp:1211:9:1211:9 | Address | &:r1211_2 | +| ir.cpp:1211:13:1211:13 | StoreValue | r1211_1 | +| ir.cpp:1212:5:1212:5 | Phi | from 0:m1205_3 | +| ir.cpp:1212:5:1212:5 | Phi | from 1:m1208_3 | +| ir.cpp:1212:5:1212:5 | Phi | from 2:m1211_3 | +| ir.cpp:1213:9:1213:9 | Address | &:r1213_1 | +| ir.cpp:1213:13:1213:13 | Address | &:r1213_2 | +| ir.cpp:1213:13:1213:13 | Load | m1212_1 | +| ir.cpp:1213:13:1213:13 | StoreValue | r1213_3 | +| ir.cpp:1216:6:1216:24 | ChiPartial | partial:m1216_3 | +| ir.cpp:1216:6:1216:24 | ChiTotal | total:m1216_2 | +| ir.cpp:1216:6:1216:24 | SideEffect | m1216_3 | +| ir.cpp:1216:30:1216:30 | Address | &:r1216_5 | +| ir.cpp:1217:9:1217:9 | Address | &:r1217_1 | +| ir.cpp:1217:12:1217:13 | StoreValue | r1217_2 | +| ir.cpp:1218:12:1218:12 | Address | &:r1218_1 | +| ir.cpp:1218:12:1218:12 | Condition | r1218_2 | +| ir.cpp:1218:12:1218:12 | Load | m1216_6 | +| ir.cpp:1220:13:1220:13 | Address | &:r1220_2 | +| ir.cpp:1220:17:1220:17 | StoreValue | r1220_1 | +| ir.cpp:1224:13:1224:13 | Address | &:r1224_2 | +| ir.cpp:1224:17:1224:17 | StoreValue | r1224_1 | | ir.cpp:1228:13:1228:13 | Address | &:r1228_2 | -| ir.cpp:1228:13:1228:13 | Load | m1227_1 | -| ir.cpp:1228:13:1228:13 | StoreValue | r1228_3 | -| ir.cpp:1231:5:1231:19 | Address | &:r1231_7 | -| ir.cpp:1231:5:1231:19 | ChiPartial | partial:m1231_3 | -| ir.cpp:1231:5:1231:19 | ChiTotal | total:m1231_2 | -| ir.cpp:1231:5:1231:19 | Load | m1237_15 | -| ir.cpp:1231:5:1231:19 | SideEffect | ~m1237_2 | -| ir.cpp:1231:25:1231:25 | Address | &:r1231_5 | -| ir.cpp:1232:16:1232:16 | Address | &:r1232_3 | -| ir.cpp:1232:16:1232:16 | SideEffect | ~m1232_6 | -| ir.cpp:1232:20:1232:20 | ChiPartial | partial:m1232_5 | -| ir.cpp:1232:20:1232:20 | ChiTotal | total:m1232_2 | -| ir.cpp:1232:20:1232:20 | StoreValue | r1232_4 | -| ir.cpp:1233:16:1233:16 | Address | &:r1233_3 | -| ir.cpp:1233:16:1233:16 | SideEffect | ~m1233_6 | -| ir.cpp:1233:20:1233:28 | ChiPartial | partial:m1233_5 | -| ir.cpp:1233:20:1233:28 | ChiTotal | total:m1233_2 | -| ir.cpp:1233:20:1233:28 | StoreValue | r1233_4 | -| ir.cpp:1234:16:1234:16 | Address | &:r1234_1 | -| ir.cpp:1234:16:1234:16 | Address | &:r1234_1 | -| ir.cpp:1234:16:1234:16 | Address | &:r1234_4 | -| ir.cpp:1234:16:1234:16 | ChiPartial | partial:m1234_10 | -| ir.cpp:1234:16:1234:16 | ChiTotal | total:m1234_8 | -| ir.cpp:1234:16:1234:16 | Condition | r1234_2 | -| ir.cpp:1234:16:1234:16 | Load | ~m1231_3 | -| ir.cpp:1234:16:1234:16 | StoreValue | r1234_9 | -| ir.cpp:1234:20:1234:20 | Address | &:r1234_5 | -| ir.cpp:1234:20:1234:20 | ChiPartial | partial:m1234_7 | -| ir.cpp:1234:20:1234:20 | ChiTotal | total:m1231_4 | -| ir.cpp:1234:20:1234:20 | Load | m1231_6 | -| ir.cpp:1234:20:1234:20 | StoreValue | r1234_6 | -| ir.cpp:1237:5:1237:25 | Address | &:r1237_3 | -| ir.cpp:1237:5:1237:25 | Phi | from 0:~m1231_3 | -| ir.cpp:1237:5:1237:25 | Phi | from 0:~m1231_4 | -| ir.cpp:1237:5:1237:25 | Phi | from 1:m1234_7 | -| ir.cpp:1237:5:1237:25 | Phi | from 1:~m1234_11 | -| ir.cpp:1237:12:1237:12 | Address | &:r1237_4 | -| ir.cpp:1237:12:1237:12 | Left | r1237_5 | -| ir.cpp:1237:12:1237:12 | Load | ~m1237_2 | -| ir.cpp:1237:12:1237:16 | Left | r1237_8 | -| ir.cpp:1237:12:1237:20 | Left | r1237_11 | -| ir.cpp:1237:12:1237:24 | StoreValue | r1237_14 | -| ir.cpp:1237:16:1237:16 | Address | &:r1237_6 | -| ir.cpp:1237:16:1237:16 | Load | ~m1237_2 | -| ir.cpp:1237:16:1237:16 | Right | r1237_7 | -| ir.cpp:1237:20:1237:20 | Address | &:r1237_9 | -| ir.cpp:1237:20:1237:20 | Load | m1237_1 | -| ir.cpp:1237:20:1237:20 | Right | r1237_10 | -| ir.cpp:1237:24:1237:24 | Address | &:r1237_12 | -| ir.cpp:1237:24:1237:24 | Load | ~m1237_2 | -| ir.cpp:1237:24:1237:24 | Right | r1237_13 | -| ir.cpp:1240:6:1240:31 | ChiPartial | partial:m1240_3 | -| ir.cpp:1240:6:1240:31 | ChiTotal | total:m1240_2 | -| ir.cpp:1240:6:1240:31 | SideEffect | ~m1244_1 | -| ir.cpp:1240:45:1240:51 | Address | &:r1240_5 | -| ir.cpp:1240:45:1240:51 | Address | &:r1240_5 | -| ir.cpp:1240:45:1240:51 | Address | &:r1240_7 | -| ir.cpp:1240:45:1240:51 | Address | &:r1240_7 | -| ir.cpp:1240:45:1240:51 | Load | m1240_6 | -| ir.cpp:1240:45:1240:51 | SideEffect | m1240_8 | -| ir.cpp:1241:19:1241:19 | Address | &:r1241_1 | -| ir.cpp:1241:19:1241:19 | Address | &:r1241_1 | -| ir.cpp:1241:19:1241:19 | Address | &:r1241_4 | -| ir.cpp:1241:19:1241:19 | Arg(this) | this:r1241_4 | -| ir.cpp:1241:19:1241:19 | ChiPartial | partial:m1241_6 | -| ir.cpp:1241:19:1241:19 | ChiTotal | total:m0_6 | -| ir.cpp:1241:19:1241:19 | Condition | r1241_2 | -| ir.cpp:1241:19:1241:19 | Load | ~m1240_3 | -| ir.cpp:1241:19:1241:19 | StoreValue | r1241_5 | -| ir.cpp:1242:19:1242:19 | Address | &:r1242_2 | -| ir.cpp:1242:19:1242:19 | Address | &:r1242_2 | -| ir.cpp:1242:19:1242:19 | Address | &:r1242_5 | -| ir.cpp:1242:19:1242:19 | Arg(this) | this:r1242_5 | -| ir.cpp:1242:19:1242:19 | ChiPartial | partial:m1242_16 | -| ir.cpp:1242:19:1242:19 | ChiTotal | total:m1242_14 | -| ir.cpp:1242:19:1242:19 | Condition | r1242_3 | -| ir.cpp:1242:19:1242:19 | Load | ~m1242_1 | -| ir.cpp:1242:19:1242:19 | Phi | from 0:~m1240_4 | -| ir.cpp:1242:19:1242:19 | Phi | from 1:~m1241_7 | -| ir.cpp:1242:19:1242:19 | StoreValue | r1242_15 | -| ir.cpp:1242:20:1242:29 | CallTarget | func:r1242_6 | -| ir.cpp:1242:20:1242:29 | ChiPartial | partial:m1242_10 | -| ir.cpp:1242:20:1242:29 | ChiPartial | partial:m1242_13 | -| ir.cpp:1242:20:1242:29 | ChiTotal | total:m1242_1 | -| ir.cpp:1242:20:1242:29 | ChiTotal | total:m1242_11 | -| ir.cpp:1242:20:1242:29 | SideEffect | ~m1242_1 | -| ir.cpp:1242:21:1242:28 | Address | &:r1242_8 | -| ir.cpp:1242:21:1242:28 | Arg(0) | 0:r1242_8 | -| ir.cpp:1242:21:1242:28 | SideEffect | ~m1240_3 | -| ir.cpp:1242:21:1242:28 | Unary | r1242_7 | -| ir.cpp:1243:19:1243:19 | Address | &:r1243_2 | -| ir.cpp:1243:19:1243:19 | Address | &:r1243_2 | -| ir.cpp:1243:19:1243:19 | Address | &:r1243_5 | -| ir.cpp:1243:19:1243:19 | Arg(this) | this:r1243_5 | -| ir.cpp:1243:19:1243:19 | ChiPartial | partial:m1243_16 | -| ir.cpp:1243:19:1243:19 | ChiTotal | total:m1243_14 | -| ir.cpp:1243:19:1243:19 | Condition | r1243_3 | -| ir.cpp:1243:19:1243:19 | Load | ~m1243_1 | -| ir.cpp:1243:19:1243:19 | Phi | from 2:~m1242_1 | -| ir.cpp:1243:19:1243:19 | Phi | from 3:~m1242_17 | -| ir.cpp:1243:19:1243:19 | StoreValue | r1243_15 | -| ir.cpp:1243:20:1243:28 | CallTarget | func:r1243_6 | -| ir.cpp:1243:20:1243:28 | ChiPartial | partial:m1243_10 | -| ir.cpp:1243:20:1243:28 | ChiPartial | partial:m1243_13 | -| ir.cpp:1243:20:1243:28 | ChiTotal | total:m1243_1 | -| ir.cpp:1243:20:1243:28 | ChiTotal | total:m1243_11 | -| ir.cpp:1243:20:1243:28 | SideEffect | ~m1243_1 | -| ir.cpp:1243:21:1243:27 | Address | &:r1243_7 | -| ir.cpp:1243:21:1243:27 | Address | &:r1243_8 | -| ir.cpp:1243:21:1243:27 | Arg(0) | 0:r1243_8 | -| ir.cpp:1243:21:1243:27 | Load | m1240_6 | -| ir.cpp:1243:21:1243:27 | SideEffect | ~m1240_8 | -| ir.cpp:1244:1:1244:1 | Phi | from 4:~m1243_1 | -| ir.cpp:1244:1:1244:1 | Phi | from 5:~m1243_17 | -| ir.cpp:1251:6:1251:17 | ChiPartial | partial:m1251_3 | -| ir.cpp:1251:6:1251:17 | ChiTotal | total:m1251_2 | -| ir.cpp:1251:6:1251:17 | SideEffect | m1251_3 | -| ir.cpp:1251:25:1251:26 | Address | &:r1251_5 | -| ir.cpp:1251:25:1251:26 | Address | &:r1251_5 | -| ir.cpp:1251:25:1251:26 | Address | &:r1251_7 | -| ir.cpp:1251:25:1251:26 | Address | &:r1251_7 | -| ir.cpp:1251:25:1251:26 | Load | m1251_6 | -| ir.cpp:1251:25:1251:26 | SideEffect | m1251_8 | -| ir.cpp:1251:35:1251:36 | Address | &:r1251_9 | -| ir.cpp:1251:35:1251:36 | Address | &:r1251_9 | -| ir.cpp:1251:35:1251:36 | Address | &:r1251_11 | -| ir.cpp:1251:35:1251:36 | Address | &:r1251_11 | -| ir.cpp:1251:35:1251:36 | Load | m1251_10 | -| ir.cpp:1251:35:1251:36 | SideEffect | m1251_12 | -| ir.cpp:1252:10:1252:15 | Address | &:r1252_1 | -| ir.cpp:1252:10:1252:15 | Left | r1252_1 | -| ir.cpp:1252:10:1252:15 | Left | r1252_1 | -| ir.cpp:1252:24:1252:27 | Address | &:r1252_4 | -| ir.cpp:1252:24:1252:27 | Address | &:r1252_9 | -| ir.cpp:1252:24:1252:27 | ChiPartial | partial:m1252_11 | -| ir.cpp:1252:24:1252:27 | ChiTotal | total:m1252_7 | -| ir.cpp:1252:24:1252:27 | Right | r1252_3 | -| ir.cpp:1252:24:1252:27 | Right | r1252_8 | -| ir.cpp:1252:24:1252:27 | StoreValue | r1252_10 | -| ir.cpp:1252:26:1252:26 | ChiPartial | partial:m1252_6 | -| ir.cpp:1252:26:1252:26 | ChiTotal | total:m1252_2 | -| ir.cpp:1252:26:1252:26 | StoreValue | r1252_5 | -| ir.cpp:1254:5:1254:10 | CallTarget | func:r1254_1 | -| ir.cpp:1254:12:1254:17 | Address | &:r1254_3 | -| ir.cpp:1254:12:1254:17 | Arg(0) | 0:r1254_3 | -| ir.cpp:1254:12:1254:17 | ChiPartial | partial:m1254_9 | -| ir.cpp:1254:12:1254:17 | ChiTotal | total:m1252_12 | -| ir.cpp:1254:12:1254:17 | Unary | r1254_2 | -| ir.cpp:1254:20:1254:21 | Address | &:r1254_4 | -| ir.cpp:1254:20:1254:21 | Address | &:r1254_6 | -| ir.cpp:1254:20:1254:21 | Arg(1) | 1:r1254_6 | -| ir.cpp:1254:20:1254:21 | Load | m1251_6 | -| ir.cpp:1254:20:1254:21 | SideEffect | ~m1251_8 | -| ir.cpp:1254:20:1254:21 | Unary | r1254_5 | -| ir.cpp:1255:5:1255:10 | CallTarget | func:r1255_1 | -| ir.cpp:1255:12:1255:17 | Address | &:r1255_3 | -| ir.cpp:1255:12:1255:17 | Address | &:r1255_3 | -| ir.cpp:1255:12:1255:17 | Arg(0) | 0:r1255_3 | -| ir.cpp:1255:12:1255:17 | ChiPartial | partial:m1255_10 | -| ir.cpp:1255:12:1255:17 | ChiTotal | total:m1254_10 | -| ir.cpp:1255:12:1255:17 | SideEffect | ~m1254_10 | -| ir.cpp:1255:12:1255:17 | Unary | r1255_2 | -| ir.cpp:1255:20:1255:21 | Address | &:r1255_4 | -| ir.cpp:1255:20:1255:21 | Address | &:r1255_6 | -| ir.cpp:1255:20:1255:21 | Arg(1) | 1:r1255_6 | -| ir.cpp:1255:20:1255:21 | Load | m1251_10 | -| ir.cpp:1255:20:1255:21 | SideEffect | ~m1251_12 | -| ir.cpp:1255:20:1255:21 | Unary | r1255_5 | -| ir.cpp:1261:17:1261:29 | ChiPartial | partial:m1261_3 | -| ir.cpp:1261:17:1261:29 | ChiTotal | total:m1261_2 | -| ir.cpp:1261:17:1261:29 | SideEffect | m1261_3 | -| ir.cpp:1261:34:1261:34 | Address | &:r1261_5 | -| ir.cpp:1261:34:1261:34 | Address | &:r1261_5 | -| ir.cpp:1261:34:1261:34 | Address | &:r1261_7 | -| ir.cpp:1261:34:1261:34 | Address | &:r1261_7 | -| ir.cpp:1261:34:1261:34 | Load | m1261_6 | -| ir.cpp:1261:34:1261:34 | SideEffect | m1262_7 | -| ir.cpp:1261:41:1261:41 | Address | &:r1261_9 | -| ir.cpp:1262:9:1262:9 | Address | &:r1262_3 | -| ir.cpp:1262:9:1262:9 | Load | m1261_6 | -| ir.cpp:1262:9:1262:9 | Unary | r1262_4 | -| ir.cpp:1262:9:1262:21 | ChiPartial | partial:m1262_6 | -| ir.cpp:1262:9:1262:21 | ChiTotal | total:m1261_8 | -| ir.cpp:1262:12:1262:17 | Address | &:r1262_5 | -| ir.cpp:1262:21:1262:21 | Address | &:r1262_1 | -| ir.cpp:1262:21:1262:21 | Load | m1261_10 | -| ir.cpp:1262:21:1262:21 | StoreValue | r1262_2 | -| ir.cpp:1270:6:1270:33 | ChiPartial | partial:m1270_3 | -| ir.cpp:1270:6:1270:33 | ChiTotal | total:m1270_2 | -| ir.cpp:1270:6:1270:33 | SideEffect | ~m1286_8 | -| ir.cpp:1270:39:1270:45 | Address | &:r1270_5 | -| ir.cpp:1270:51:1270:55 | Address | &:r1270_7 | -| ir.cpp:1270:51:1270:55 | Address | &:r1270_7 | -| ir.cpp:1270:51:1270:55 | Address | &:r1270_9 | -| ir.cpp:1270:51:1270:55 | Address | &:r1270_9 | -| ir.cpp:1270:51:1270:55 | Load | m1270_8 | -| ir.cpp:1270:51:1270:55 | SideEffect | m1281_12 | -| ir.cpp:1271:7:1271:7 | Address | &:r1271_1 | -| ir.cpp:1271:7:1271:7 | Address | &:r1271_1 | -| ir.cpp:1271:7:1271:7 | Arg(this) | this:r1271_1 | -| ir.cpp:1271:7:1271:7 | CallTarget | func:r1271_3 | -| ir.cpp:1271:7:1271:7 | ChiPartial | partial:m1271_5 | -| ir.cpp:1271:7:1271:7 | ChiPartial | partial:m1271_7 | -| ir.cpp:1271:7:1271:7 | ChiTotal | total:m1270_4 | -| ir.cpp:1271:7:1271:7 | ChiTotal | total:m1271_2 | -| ir.cpp:1271:7:1271:7 | SideEffect | ~m1270_4 | -| ir.cpp:1272:7:1272:26 | CallTarget | func:r1272_2 | -| ir.cpp:1272:7:1272:26 | ChiPartial | partial:m1272_5 | -| ir.cpp:1272:7:1272:26 | ChiTotal | total:m1271_6 | -| ir.cpp:1272:7:1272:26 | SideEffect | ~m1271_6 | -| ir.cpp:1272:28:1272:29 | Arg(0) | 0:r1272_3 | -| ir.cpp:1273:5:1273:27 | CallTarget | func:r1273_1 | -| ir.cpp:1273:5:1273:27 | ChiPartial | partial:m1273_4 | -| ir.cpp:1273:5:1273:27 | ChiTotal | total:m1272_6 | -| ir.cpp:1273:5:1273:27 | SideEffect | ~m1272_6 | -| ir.cpp:1273:29:1273:30 | Arg(0) | 0:r1273_2 | -| ir.cpp:1275:7:1275:7 | Address | &:r1275_1 | -| ir.cpp:1276:7:1276:19 | CallTarget | func:r1276_2 | -| ir.cpp:1276:7:1276:19 | ChiPartial | partial:m1276_8 | -| ir.cpp:1276:7:1276:19 | ChiTotal | total:m1273_5 | -| ir.cpp:1276:7:1276:19 | SideEffect | ~m1273_5 | -| ir.cpp:1276:21:1276:22 | Address | &:r1276_4 | -| ir.cpp:1276:21:1276:22 | Address | &:r1276_4 | -| ir.cpp:1276:21:1276:22 | Arg(0) | 0:r1276_4 | -| ir.cpp:1276:21:1276:22 | ChiPartial | partial:m1276_11 | -| ir.cpp:1276:21:1276:22 | ChiTotal | total:m1275_2 | -| ir.cpp:1276:21:1276:22 | SideEffect | ~m1275_2 | -| ir.cpp:1276:22:1276:22 | Unary | r1276_3 | -| ir.cpp:1276:25:1276:31 | Address | &:r1276_5 | -| ir.cpp:1276:25:1276:31 | Arg(1) | 1:r1276_6 | -| ir.cpp:1276:25:1276:31 | Load | m1270_6 | -| ir.cpp:1277:5:1277:20 | CallTarget | func:r1277_1 | -| ir.cpp:1277:5:1277:20 | ChiPartial | partial:m1277_7 | -| ir.cpp:1277:5:1277:20 | ChiTotal | total:m1276_9 | -| ir.cpp:1277:5:1277:20 | SideEffect | ~m1276_9 | -| ir.cpp:1277:22:1277:23 | Address | &:r1277_3 | -| ir.cpp:1277:22:1277:23 | Address | &:r1277_3 | -| ir.cpp:1277:22:1277:23 | Arg(0) | 0:r1277_3 | -| ir.cpp:1277:22:1277:23 | ChiPartial | partial:m1277_10 | -| ir.cpp:1277:22:1277:23 | ChiTotal | total:m1276_12 | -| ir.cpp:1277:22:1277:23 | SideEffect | ~m1276_12 | -| ir.cpp:1277:23:1277:23 | Unary | r1277_2 | -| ir.cpp:1277:26:1277:32 | Address | &:r1277_4 | -| ir.cpp:1277:26:1277:32 | Arg(1) | 1:r1277_5 | -| ir.cpp:1277:26:1277:32 | Load | m1270_6 | -| ir.cpp:1279:7:1279:7 | Unary | r1279_1 | -| ir.cpp:1279:11:1279:23 | CallTarget | func:r1279_3 | -| ir.cpp:1279:11:1279:23 | ChiPartial | partial:m1279_11 | -| ir.cpp:1279:11:1279:23 | ChiTotal | total:m1277_8 | -| ir.cpp:1279:11:1279:23 | SideEffect | ~m1277_8 | -| ir.cpp:1279:25:1279:29 | Address | &:r1279_4 | -| ir.cpp:1279:25:1279:29 | Address | &:r1279_5 | -| ir.cpp:1279:25:1279:29 | Address | &:r1279_5 | -| ir.cpp:1279:25:1279:29 | Arg(0) | 0:r1279_5 | -| ir.cpp:1279:25:1279:29 | ChiPartial | partial:m1279_14 | -| ir.cpp:1279:25:1279:29 | ChiTotal | total:m1270_10 | -| ir.cpp:1279:25:1279:29 | Load | m1270_8 | -| ir.cpp:1279:25:1279:29 | SideEffect | ~m1270_10 | -| ir.cpp:1279:32:1279:38 | Address | &:r1279_6 | -| ir.cpp:1279:32:1279:38 | Left | r1279_7 | -| ir.cpp:1279:32:1279:38 | Load | m1270_6 | -| ir.cpp:1279:32:1279:42 | Arg(1) | 1:r1279_9 | -| ir.cpp:1279:42:1279:42 | Right | r1279_8 | -| ir.cpp:1280:7:1280:11 | Address | &:r1280_1 | -| ir.cpp:1280:7:1280:11 | Load | m1270_8 | -| ir.cpp:1280:7:1280:11 | Unary | r1280_2 | -| ir.cpp:1280:14:1280:26 | CallTarget | func:r1280_4 | -| ir.cpp:1280:14:1280:26 | ChiPartial | partial:m1280_9 | -| ir.cpp:1280:14:1280:26 | ChiTotal | total:m1279_12 | -| ir.cpp:1280:14:1280:26 | SideEffect | ~m1279_12 | -| ir.cpp:1280:28:1280:29 | Address | &:r1280_6 | -| ir.cpp:1280:28:1280:29 | Address | &:r1280_6 | -| ir.cpp:1280:28:1280:29 | Arg(0) | 0:r1280_6 | -| ir.cpp:1280:28:1280:29 | ChiPartial | partial:m1280_12 | -| ir.cpp:1280:28:1280:29 | ChiTotal | total:m1277_11 | -| ir.cpp:1280:28:1280:29 | SideEffect | ~m1277_11 | -| ir.cpp:1280:29:1280:29 | Unary | r1280_5 | -| ir.cpp:1280:32:1280:33 | Arg(1) | 1:r1280_7 | -| ir.cpp:1281:5:1281:9 | Address | &:r1281_1 | -| ir.cpp:1281:5:1281:9 | Load | m1270_8 | -| ir.cpp:1281:12:1281:24 | CallTarget | func:r1281_3 | -| ir.cpp:1281:12:1281:24 | ChiPartial | partial:m1281_8 | -| ir.cpp:1281:12:1281:24 | ChiTotal | total:m1280_10 | -| ir.cpp:1281:12:1281:24 | SideEffect | ~m1280_10 | -| ir.cpp:1281:26:1281:30 | Address | &:r1281_4 | -| ir.cpp:1281:26:1281:30 | Address | &:r1281_5 | -| ir.cpp:1281:26:1281:30 | Address | &:r1281_5 | -| ir.cpp:1281:26:1281:30 | Arg(0) | 0:r1281_5 | -| ir.cpp:1281:26:1281:30 | ChiPartial | partial:m1281_11 | -| ir.cpp:1281:26:1281:30 | ChiTotal | total:m1279_15 | -| ir.cpp:1281:26:1281:30 | Load | m1270_8 | -| ir.cpp:1281:26:1281:30 | SideEffect | ~m1279_15 | -| ir.cpp:1281:33:1281:34 | Arg(1) | 1:r1281_6 | -| ir.cpp:1283:7:1283:31 | CallTarget | func:r1283_2 | -| ir.cpp:1283:7:1283:31 | ChiPartial | partial:m1283_4 | -| ir.cpp:1283:7:1283:31 | ChiTotal | total:m1281_9 | -| ir.cpp:1283:7:1283:31 | SideEffect | ~m1281_9 | -| ir.cpp:1284:5:1284:32 | CallTarget | func:r1284_1 | -| ir.cpp:1284:5:1284:32 | ChiPartial | partial:m1284_3 | -| ir.cpp:1284:5:1284:32 | ChiTotal | total:m1283_5 | -| ir.cpp:1284:5:1284:32 | SideEffect | ~m1283_5 | -| ir.cpp:1286:5:1286:20 | CallTarget | func:r1286_1 | -| ir.cpp:1286:5:1286:20 | ChiPartial | partial:m1286_3 | -| ir.cpp:1286:5:1286:20 | ChiTotal | total:m1284_4 | -| ir.cpp:1286:5:1286:20 | SideEffect | ~m1284_4 | -| ir.cpp:1286:25:1286:49 | CallTarget | func:r1286_5 | -| ir.cpp:1286:25:1286:49 | ChiPartial | partial:m1286_7 | -| ir.cpp:1286:25:1286:49 | ChiTotal | total:m1286_4 | -| ir.cpp:1286:25:1286:49 | SideEffect | ~m1286_4 | -| ir.cpp:1289:5:1289:22 | Address | &:r1289_10 | -| ir.cpp:1289:5:1289:22 | ChiPartial | partial:m1289_3 | -| ir.cpp:1289:5:1289:22 | ChiTotal | total:m1289_2 | -| ir.cpp:1289:5:1289:22 | Load | m1289_9 | -| ir.cpp:1289:5:1289:22 | Phi | from 2:m1291_4 | -| ir.cpp:1289:5:1289:22 | Phi | from 3:m1293_2 | -| ir.cpp:1289:5:1289:22 | SideEffect | m1289_3 | -| ir.cpp:1289:29:1289:29 | Address | &:r1289_5 | -| ir.cpp:1289:36:1289:36 | Address | &:r1289_7 | -| ir.cpp:1290:9:1290:9 | Address | &:r1290_1 | -| ir.cpp:1290:9:1290:9 | Condition | r1290_2 | -| ir.cpp:1290:9:1290:9 | Load | m1289_6 | -| ir.cpp:1291:9:1291:17 | Address | &:r1291_1 | -| ir.cpp:1291:16:1291:16 | Address | &:r1291_2 | -| ir.cpp:1291:16:1291:16 | Load | m1289_8 | -| ir.cpp:1291:16:1291:16 | StoreValue | r1291_3 | -| ir.cpp:1293:1:1293:1 | Address | &:r1293_1 | -| ir.cpp:1295:6:1295:15 | ChiPartial | partial:m1295_3 | -| ir.cpp:1295:6:1295:15 | ChiTotal | total:m1295_2 | -| ir.cpp:1295:6:1295:15 | SideEffect | ~m1296_8 | -| ir.cpp:1295:21:1295:21 | Address | &:r1295_5 | -| ir.cpp:1295:28:1295:28 | Address | &:r1295_7 | -| ir.cpp:1296:12:1296:21 | CallTarget | func:r1296_1 | -| ir.cpp:1296:12:1296:21 | ChiPartial | partial:m1296_7 | -| ir.cpp:1296:12:1296:21 | ChiTotal | total:m1295_4 | -| ir.cpp:1296:12:1296:21 | SideEffect | ~m1295_4 | -| ir.cpp:1296:23:1296:23 | Address | &:r1296_2 | -| ir.cpp:1296:23:1296:23 | Arg(0) | 0:r1296_3 | -| ir.cpp:1296:23:1296:23 | Load | m1295_6 | -| ir.cpp:1296:26:1296:26 | Address | &:r1296_4 | -| ir.cpp:1296:26:1296:26 | Arg(1) | 1:r1296_5 | -| ir.cpp:1296:26:1296:26 | Load | m1295_8 | -| ir.cpp:1299:6:1299:25 | ChiPartial | partial:m1299_3 | -| ir.cpp:1299:6:1299:25 | ChiTotal | total:m1299_2 | -| ir.cpp:1299:6:1299:25 | SideEffect | m1299_3 | -| ir.cpp:1299:32:1299:32 | Address | &:r1299_5 | -| ir.cpp:1299:39:1299:39 | Address | &:r1299_7 | -| ir.cpp:1299:47:1299:47 | Address | &:r1299_9 | -| ir.cpp:1300:9:1300:9 | Address | &:r1300_1 | -| ir.cpp:1300:13:1300:13 | Address | &:r1300_2 | -| ir.cpp:1300:13:1300:13 | Load | m1299_8 | -| ir.cpp:1300:13:1300:13 | StoreValue | r1300_3 | -| ir.cpp:1301:5:1301:5 | Address | &:r1301_7 | -| ir.cpp:1301:9:1301:9 | Address | &:r1301_1 | -| ir.cpp:1301:9:1301:9 | Condition | r1301_2 | -| ir.cpp:1301:9:1301:9 | Load | m1299_6 | -| ir.cpp:1301:9:1301:9 | StoreValue | r1301_2 | -| ir.cpp:1301:9:1301:14 | Address | &:r1301_5 | -| ir.cpp:1301:9:1301:14 | Address | &:r1301_9 | -| ir.cpp:1301:9:1301:14 | Address | &:r1301_13 | -| ir.cpp:1301:9:1301:14 | Load | m1301_4 | -| ir.cpp:1301:9:1301:14 | Phi | from 2:m1301_10 | -| ir.cpp:1301:9:1301:14 | Phi | from 3:m1301_14 | -| ir.cpp:1301:9:1301:14 | StoreValue | r1301_6 | -| ir.cpp:1301:14:1301:14 | Address | &:r1301_11 | -| ir.cpp:1301:14:1301:14 | Load | m1299_8 | -| ir.cpp:1301:14:1301:14 | StoreValue | r1301_12 | -| ir.cpp:1302:5:1302:5 | Address | &:r1302_8 | +| ir.cpp:1228:17:1228:17 | StoreValue | r1228_1 | +| ir.cpp:1229:5:1229:5 | Phi | from 1:m1220_3 | +| ir.cpp:1229:5:1229:5 | Phi | from 2:m1224_3 | +| ir.cpp:1229:5:1229:5 | Phi | from 3:m1228_3 | +| ir.cpp:1230:9:1230:9 | Address | &:r1230_1 | +| ir.cpp:1230:13:1230:13 | Address | &:r1230_2 | +| ir.cpp:1230:13:1230:13 | Load | m1229_1 | +| ir.cpp:1230:13:1230:13 | StoreValue | r1230_3 | +| ir.cpp:1233:5:1233:19 | Address | &:r1233_7 | +| ir.cpp:1233:5:1233:19 | ChiPartial | partial:m1233_3 | +| ir.cpp:1233:5:1233:19 | ChiTotal | total:m1233_2 | +| ir.cpp:1233:5:1233:19 | Load | m1239_15 | +| ir.cpp:1233:5:1233:19 | SideEffect | ~m1239_2 | +| ir.cpp:1233:25:1233:25 | Address | &:r1233_5 | +| ir.cpp:1234:16:1234:16 | Address | &:r1234_3 | +| ir.cpp:1234:16:1234:16 | SideEffect | ~m1234_6 | +| ir.cpp:1234:20:1234:20 | ChiPartial | partial:m1234_5 | +| ir.cpp:1234:20:1234:20 | ChiTotal | total:m1234_2 | +| ir.cpp:1234:20:1234:20 | StoreValue | r1234_4 | +| ir.cpp:1235:16:1235:16 | Address | &:r1235_3 | +| ir.cpp:1235:16:1235:16 | SideEffect | ~m1235_6 | +| ir.cpp:1235:20:1235:28 | ChiPartial | partial:m1235_5 | +| ir.cpp:1235:20:1235:28 | ChiTotal | total:m1235_2 | +| ir.cpp:1235:20:1235:28 | StoreValue | r1235_4 | +| ir.cpp:1236:16:1236:16 | Address | &:r1236_1 | +| ir.cpp:1236:16:1236:16 | Address | &:r1236_1 | +| ir.cpp:1236:16:1236:16 | Address | &:r1236_4 | +| ir.cpp:1236:16:1236:16 | ChiPartial | partial:m1236_10 | +| ir.cpp:1236:16:1236:16 | ChiTotal | total:m1236_8 | +| ir.cpp:1236:16:1236:16 | Condition | r1236_2 | +| ir.cpp:1236:16:1236:16 | Load | ~m1233_3 | +| ir.cpp:1236:16:1236:16 | StoreValue | r1236_9 | +| ir.cpp:1236:20:1236:20 | Address | &:r1236_5 | +| ir.cpp:1236:20:1236:20 | ChiPartial | partial:m1236_7 | +| ir.cpp:1236:20:1236:20 | ChiTotal | total:m1233_4 | +| ir.cpp:1236:20:1236:20 | Load | m1233_6 | +| ir.cpp:1236:20:1236:20 | StoreValue | r1236_6 | +| ir.cpp:1239:5:1239:25 | Address | &:r1239_3 | +| ir.cpp:1239:5:1239:25 | Phi | from 0:~m1233_3 | +| ir.cpp:1239:5:1239:25 | Phi | from 0:~m1233_4 | +| ir.cpp:1239:5:1239:25 | Phi | from 1:m1236_7 | +| ir.cpp:1239:5:1239:25 | Phi | from 1:~m1236_11 | +| ir.cpp:1239:12:1239:12 | Address | &:r1239_4 | +| ir.cpp:1239:12:1239:12 | Left | r1239_5 | +| ir.cpp:1239:12:1239:12 | Load | ~m1239_2 | +| ir.cpp:1239:12:1239:16 | Left | r1239_8 | +| ir.cpp:1239:12:1239:20 | Left | r1239_11 | +| ir.cpp:1239:12:1239:24 | StoreValue | r1239_14 | +| ir.cpp:1239:16:1239:16 | Address | &:r1239_6 | +| ir.cpp:1239:16:1239:16 | Load | ~m1239_2 | +| ir.cpp:1239:16:1239:16 | Right | r1239_7 | +| ir.cpp:1239:20:1239:20 | Address | &:r1239_9 | +| ir.cpp:1239:20:1239:20 | Load | m1239_1 | +| ir.cpp:1239:20:1239:20 | Right | r1239_10 | +| ir.cpp:1239:24:1239:24 | Address | &:r1239_12 | +| ir.cpp:1239:24:1239:24 | Load | ~m1239_2 | +| ir.cpp:1239:24:1239:24 | Right | r1239_13 | +| ir.cpp:1242:6:1242:31 | ChiPartial | partial:m1242_3 | +| ir.cpp:1242:6:1242:31 | ChiTotal | total:m1242_2 | +| ir.cpp:1242:6:1242:31 | SideEffect | ~m1246_1 | +| ir.cpp:1242:45:1242:51 | Address | &:r1242_5 | +| ir.cpp:1242:45:1242:51 | Address | &:r1242_5 | +| ir.cpp:1242:45:1242:51 | Address | &:r1242_7 | +| ir.cpp:1242:45:1242:51 | Address | &:r1242_7 | +| ir.cpp:1242:45:1242:51 | Load | m1242_6 | +| ir.cpp:1242:45:1242:51 | SideEffect | m1242_8 | +| ir.cpp:1243:19:1243:19 | Address | &:r1243_1 | +| ir.cpp:1243:19:1243:19 | Address | &:r1243_1 | +| ir.cpp:1243:19:1243:19 | Address | &:r1243_4 | +| ir.cpp:1243:19:1243:19 | Arg(this) | this:r1243_4 | +| ir.cpp:1243:19:1243:19 | ChiPartial | partial:m1243_6 | +| ir.cpp:1243:19:1243:19 | ChiTotal | total:m0_6 | +| ir.cpp:1243:19:1243:19 | Condition | r1243_2 | +| ir.cpp:1243:19:1243:19 | Load | ~m1242_3 | +| ir.cpp:1243:19:1243:19 | StoreValue | r1243_5 | +| ir.cpp:1244:19:1244:19 | Address | &:r1244_2 | +| ir.cpp:1244:19:1244:19 | Address | &:r1244_2 | +| ir.cpp:1244:19:1244:19 | Address | &:r1244_5 | +| ir.cpp:1244:19:1244:19 | Arg(this) | this:r1244_5 | +| ir.cpp:1244:19:1244:19 | ChiPartial | partial:m1244_16 | +| ir.cpp:1244:19:1244:19 | ChiTotal | total:m1244_14 | +| ir.cpp:1244:19:1244:19 | Condition | r1244_3 | +| ir.cpp:1244:19:1244:19 | Load | ~m1244_1 | +| ir.cpp:1244:19:1244:19 | Phi | from 0:~m1242_4 | +| ir.cpp:1244:19:1244:19 | Phi | from 1:~m1243_7 | +| ir.cpp:1244:19:1244:19 | StoreValue | r1244_15 | +| ir.cpp:1244:20:1244:29 | CallTarget | func:r1244_6 | +| ir.cpp:1244:20:1244:29 | ChiPartial | partial:m1244_10 | +| ir.cpp:1244:20:1244:29 | ChiPartial | partial:m1244_13 | +| ir.cpp:1244:20:1244:29 | ChiTotal | total:m1244_1 | +| ir.cpp:1244:20:1244:29 | ChiTotal | total:m1244_11 | +| ir.cpp:1244:20:1244:29 | SideEffect | ~m1244_1 | +| ir.cpp:1244:21:1244:28 | Address | &:r1244_8 | +| ir.cpp:1244:21:1244:28 | Arg(0) | 0:r1244_8 | +| ir.cpp:1244:21:1244:28 | SideEffect | ~m1242_3 | +| ir.cpp:1244:21:1244:28 | Unary | r1244_7 | +| ir.cpp:1245:19:1245:19 | Address | &:r1245_2 | +| ir.cpp:1245:19:1245:19 | Address | &:r1245_2 | +| ir.cpp:1245:19:1245:19 | Address | &:r1245_5 | +| ir.cpp:1245:19:1245:19 | Arg(this) | this:r1245_5 | +| ir.cpp:1245:19:1245:19 | ChiPartial | partial:m1245_16 | +| ir.cpp:1245:19:1245:19 | ChiTotal | total:m1245_14 | +| ir.cpp:1245:19:1245:19 | Condition | r1245_3 | +| ir.cpp:1245:19:1245:19 | Load | ~m1245_1 | +| ir.cpp:1245:19:1245:19 | Phi | from 2:~m1244_1 | +| ir.cpp:1245:19:1245:19 | Phi | from 3:~m1244_17 | +| ir.cpp:1245:19:1245:19 | StoreValue | r1245_15 | +| ir.cpp:1245:20:1245:28 | CallTarget | func:r1245_6 | +| ir.cpp:1245:20:1245:28 | ChiPartial | partial:m1245_10 | +| ir.cpp:1245:20:1245:28 | ChiPartial | partial:m1245_13 | +| ir.cpp:1245:20:1245:28 | ChiTotal | total:m1245_1 | +| ir.cpp:1245:20:1245:28 | ChiTotal | total:m1245_11 | +| ir.cpp:1245:20:1245:28 | SideEffect | ~m1245_1 | +| ir.cpp:1245:21:1245:27 | Address | &:r1245_7 | +| ir.cpp:1245:21:1245:27 | Address | &:r1245_8 | +| ir.cpp:1245:21:1245:27 | Arg(0) | 0:r1245_8 | +| ir.cpp:1245:21:1245:27 | Load | m1242_6 | +| ir.cpp:1245:21:1245:27 | SideEffect | ~m1242_8 | +| ir.cpp:1246:1:1246:1 | Phi | from 4:~m1245_1 | +| ir.cpp:1246:1:1246:1 | Phi | from 5:~m1245_17 | +| ir.cpp:1253:6:1253:17 | ChiPartial | partial:m1253_3 | +| ir.cpp:1253:6:1253:17 | ChiTotal | total:m1253_2 | +| ir.cpp:1253:6:1253:17 | SideEffect | m1253_3 | +| ir.cpp:1253:25:1253:26 | Address | &:r1253_5 | +| ir.cpp:1253:25:1253:26 | Address | &:r1253_5 | +| ir.cpp:1253:25:1253:26 | Address | &:r1253_7 | +| ir.cpp:1253:25:1253:26 | Address | &:r1253_7 | +| ir.cpp:1253:25:1253:26 | Load | m1253_6 | +| ir.cpp:1253:25:1253:26 | SideEffect | m1253_8 | +| ir.cpp:1253:35:1253:36 | Address | &:r1253_9 | +| ir.cpp:1253:35:1253:36 | Address | &:r1253_9 | +| ir.cpp:1253:35:1253:36 | Address | &:r1253_11 | +| ir.cpp:1253:35:1253:36 | Address | &:r1253_11 | +| ir.cpp:1253:35:1253:36 | Load | m1253_10 | +| ir.cpp:1253:35:1253:36 | SideEffect | m1253_12 | +| ir.cpp:1254:10:1254:15 | Address | &:r1254_1 | +| ir.cpp:1254:10:1254:15 | Left | r1254_1 | +| ir.cpp:1254:10:1254:15 | Left | r1254_1 | +| ir.cpp:1254:24:1254:27 | Address | &:r1254_4 | +| ir.cpp:1254:24:1254:27 | Address | &:r1254_9 | +| ir.cpp:1254:24:1254:27 | ChiPartial | partial:m1254_11 | +| ir.cpp:1254:24:1254:27 | ChiTotal | total:m1254_7 | +| ir.cpp:1254:24:1254:27 | Right | r1254_3 | +| ir.cpp:1254:24:1254:27 | Right | r1254_8 | +| ir.cpp:1254:24:1254:27 | StoreValue | r1254_10 | +| ir.cpp:1254:26:1254:26 | ChiPartial | partial:m1254_6 | +| ir.cpp:1254:26:1254:26 | ChiTotal | total:m1254_2 | +| ir.cpp:1254:26:1254:26 | StoreValue | r1254_5 | +| ir.cpp:1256:5:1256:10 | CallTarget | func:r1256_1 | +| ir.cpp:1256:12:1256:17 | Address | &:r1256_3 | +| ir.cpp:1256:12:1256:17 | Arg(0) | 0:r1256_3 | +| ir.cpp:1256:12:1256:17 | ChiPartial | partial:m1256_9 | +| ir.cpp:1256:12:1256:17 | ChiTotal | total:m1254_12 | +| ir.cpp:1256:12:1256:17 | Unary | r1256_2 | +| ir.cpp:1256:20:1256:21 | Address | &:r1256_4 | +| ir.cpp:1256:20:1256:21 | Address | &:r1256_6 | +| ir.cpp:1256:20:1256:21 | Arg(1) | 1:r1256_6 | +| ir.cpp:1256:20:1256:21 | Load | m1253_6 | +| ir.cpp:1256:20:1256:21 | SideEffect | ~m1253_8 | +| ir.cpp:1256:20:1256:21 | Unary | r1256_5 | +| ir.cpp:1257:5:1257:10 | CallTarget | func:r1257_1 | +| ir.cpp:1257:12:1257:17 | Address | &:r1257_3 | +| ir.cpp:1257:12:1257:17 | Address | &:r1257_3 | +| ir.cpp:1257:12:1257:17 | Arg(0) | 0:r1257_3 | +| ir.cpp:1257:12:1257:17 | ChiPartial | partial:m1257_10 | +| ir.cpp:1257:12:1257:17 | ChiTotal | total:m1256_10 | +| ir.cpp:1257:12:1257:17 | SideEffect | ~m1256_10 | +| ir.cpp:1257:12:1257:17 | Unary | r1257_2 | +| ir.cpp:1257:20:1257:21 | Address | &:r1257_4 | +| ir.cpp:1257:20:1257:21 | Address | &:r1257_6 | +| ir.cpp:1257:20:1257:21 | Arg(1) | 1:r1257_6 | +| ir.cpp:1257:20:1257:21 | Load | m1253_10 | +| ir.cpp:1257:20:1257:21 | SideEffect | ~m1253_12 | +| ir.cpp:1257:20:1257:21 | Unary | r1257_5 | +| ir.cpp:1263:17:1263:29 | ChiPartial | partial:m1263_3 | +| ir.cpp:1263:17:1263:29 | ChiTotal | total:m1263_2 | +| ir.cpp:1263:17:1263:29 | SideEffect | m1263_3 | +| ir.cpp:1263:34:1263:34 | Address | &:r1263_5 | +| ir.cpp:1263:34:1263:34 | Address | &:r1263_5 | +| ir.cpp:1263:34:1263:34 | Address | &:r1263_7 | +| ir.cpp:1263:34:1263:34 | Address | &:r1263_7 | +| ir.cpp:1263:34:1263:34 | Load | m1263_6 | +| ir.cpp:1263:34:1263:34 | SideEffect | m1264_7 | +| ir.cpp:1263:41:1263:41 | Address | &:r1263_9 | +| ir.cpp:1264:9:1264:9 | Address | &:r1264_3 | +| ir.cpp:1264:9:1264:9 | Load | m1263_6 | +| ir.cpp:1264:9:1264:9 | Unary | r1264_4 | +| ir.cpp:1264:9:1264:21 | ChiPartial | partial:m1264_6 | +| ir.cpp:1264:9:1264:21 | ChiTotal | total:m1263_8 | +| ir.cpp:1264:12:1264:17 | Address | &:r1264_5 | +| ir.cpp:1264:21:1264:21 | Address | &:r1264_1 | +| ir.cpp:1264:21:1264:21 | Load | m1263_10 | +| ir.cpp:1264:21:1264:21 | StoreValue | r1264_2 | +| ir.cpp:1272:6:1272:33 | ChiPartial | partial:m1272_3 | +| ir.cpp:1272:6:1272:33 | ChiTotal | total:m1272_2 | +| ir.cpp:1272:6:1272:33 | SideEffect | ~m1288_8 | +| ir.cpp:1272:39:1272:45 | Address | &:r1272_5 | +| ir.cpp:1272:51:1272:55 | Address | &:r1272_7 | +| ir.cpp:1272:51:1272:55 | Address | &:r1272_7 | +| ir.cpp:1272:51:1272:55 | Address | &:r1272_9 | +| ir.cpp:1272:51:1272:55 | Address | &:r1272_9 | +| ir.cpp:1272:51:1272:55 | Load | m1272_8 | +| ir.cpp:1272:51:1272:55 | SideEffect | m1283_12 | +| ir.cpp:1273:7:1273:7 | Address | &:r1273_1 | +| ir.cpp:1273:7:1273:7 | Address | &:r1273_1 | +| ir.cpp:1273:7:1273:7 | Arg(this) | this:r1273_1 | +| ir.cpp:1273:7:1273:7 | CallTarget | func:r1273_3 | +| ir.cpp:1273:7:1273:7 | ChiPartial | partial:m1273_5 | +| ir.cpp:1273:7:1273:7 | ChiPartial | partial:m1273_7 | +| ir.cpp:1273:7:1273:7 | ChiTotal | total:m1272_4 | +| ir.cpp:1273:7:1273:7 | ChiTotal | total:m1273_2 | +| ir.cpp:1273:7:1273:7 | SideEffect | ~m1272_4 | +| ir.cpp:1274:7:1274:26 | CallTarget | func:r1274_2 | +| ir.cpp:1274:7:1274:26 | ChiPartial | partial:m1274_5 | +| ir.cpp:1274:7:1274:26 | ChiTotal | total:m1273_6 | +| ir.cpp:1274:7:1274:26 | SideEffect | ~m1273_6 | +| ir.cpp:1274:28:1274:29 | Arg(0) | 0:r1274_3 | +| ir.cpp:1275:5:1275:27 | CallTarget | func:r1275_1 | +| ir.cpp:1275:5:1275:27 | ChiPartial | partial:m1275_4 | +| ir.cpp:1275:5:1275:27 | ChiTotal | total:m1274_6 | +| ir.cpp:1275:5:1275:27 | SideEffect | ~m1274_6 | +| ir.cpp:1275:29:1275:30 | Arg(0) | 0:r1275_2 | +| ir.cpp:1277:7:1277:7 | Address | &:r1277_1 | +| ir.cpp:1278:7:1278:19 | CallTarget | func:r1278_2 | +| ir.cpp:1278:7:1278:19 | ChiPartial | partial:m1278_8 | +| ir.cpp:1278:7:1278:19 | ChiTotal | total:m1275_5 | +| ir.cpp:1278:7:1278:19 | SideEffect | ~m1275_5 | +| ir.cpp:1278:21:1278:22 | Address | &:r1278_4 | +| ir.cpp:1278:21:1278:22 | Address | &:r1278_4 | +| ir.cpp:1278:21:1278:22 | Arg(0) | 0:r1278_4 | +| ir.cpp:1278:21:1278:22 | ChiPartial | partial:m1278_11 | +| ir.cpp:1278:21:1278:22 | ChiTotal | total:m1277_2 | +| ir.cpp:1278:21:1278:22 | SideEffect | ~m1277_2 | +| ir.cpp:1278:22:1278:22 | Unary | r1278_3 | +| ir.cpp:1278:25:1278:31 | Address | &:r1278_5 | +| ir.cpp:1278:25:1278:31 | Arg(1) | 1:r1278_6 | +| ir.cpp:1278:25:1278:31 | Load | m1272_6 | +| ir.cpp:1279:5:1279:20 | CallTarget | func:r1279_1 | +| ir.cpp:1279:5:1279:20 | ChiPartial | partial:m1279_7 | +| ir.cpp:1279:5:1279:20 | ChiTotal | total:m1278_9 | +| ir.cpp:1279:5:1279:20 | SideEffect | ~m1278_9 | +| ir.cpp:1279:22:1279:23 | Address | &:r1279_3 | +| ir.cpp:1279:22:1279:23 | Address | &:r1279_3 | +| ir.cpp:1279:22:1279:23 | Arg(0) | 0:r1279_3 | +| ir.cpp:1279:22:1279:23 | ChiPartial | partial:m1279_10 | +| ir.cpp:1279:22:1279:23 | ChiTotal | total:m1278_12 | +| ir.cpp:1279:22:1279:23 | SideEffect | ~m1278_12 | +| ir.cpp:1279:23:1279:23 | Unary | r1279_2 | +| ir.cpp:1279:26:1279:32 | Address | &:r1279_4 | +| ir.cpp:1279:26:1279:32 | Arg(1) | 1:r1279_5 | +| ir.cpp:1279:26:1279:32 | Load | m1272_6 | +| ir.cpp:1281:7:1281:7 | Unary | r1281_1 | +| ir.cpp:1281:11:1281:23 | CallTarget | func:r1281_3 | +| ir.cpp:1281:11:1281:23 | ChiPartial | partial:m1281_11 | +| ir.cpp:1281:11:1281:23 | ChiTotal | total:m1279_8 | +| ir.cpp:1281:11:1281:23 | SideEffect | ~m1279_8 | +| ir.cpp:1281:25:1281:29 | Address | &:r1281_4 | +| ir.cpp:1281:25:1281:29 | Address | &:r1281_5 | +| ir.cpp:1281:25:1281:29 | Address | &:r1281_5 | +| ir.cpp:1281:25:1281:29 | Arg(0) | 0:r1281_5 | +| ir.cpp:1281:25:1281:29 | ChiPartial | partial:m1281_14 | +| ir.cpp:1281:25:1281:29 | ChiTotal | total:m1272_10 | +| ir.cpp:1281:25:1281:29 | Load | m1272_8 | +| ir.cpp:1281:25:1281:29 | SideEffect | ~m1272_10 | +| ir.cpp:1281:32:1281:38 | Address | &:r1281_6 | +| ir.cpp:1281:32:1281:38 | Left | r1281_7 | +| ir.cpp:1281:32:1281:38 | Load | m1272_6 | +| ir.cpp:1281:32:1281:42 | Arg(1) | 1:r1281_9 | +| ir.cpp:1281:42:1281:42 | Right | r1281_8 | +| ir.cpp:1282:7:1282:11 | Address | &:r1282_1 | +| ir.cpp:1282:7:1282:11 | Load | m1272_8 | +| ir.cpp:1282:7:1282:11 | Unary | r1282_2 | +| ir.cpp:1282:14:1282:26 | CallTarget | func:r1282_4 | +| ir.cpp:1282:14:1282:26 | ChiPartial | partial:m1282_9 | +| ir.cpp:1282:14:1282:26 | ChiTotal | total:m1281_12 | +| ir.cpp:1282:14:1282:26 | SideEffect | ~m1281_12 | +| ir.cpp:1282:28:1282:29 | Address | &:r1282_6 | +| ir.cpp:1282:28:1282:29 | Address | &:r1282_6 | +| ir.cpp:1282:28:1282:29 | Arg(0) | 0:r1282_6 | +| ir.cpp:1282:28:1282:29 | ChiPartial | partial:m1282_12 | +| ir.cpp:1282:28:1282:29 | ChiTotal | total:m1279_11 | +| ir.cpp:1282:28:1282:29 | SideEffect | ~m1279_11 | +| ir.cpp:1282:29:1282:29 | Unary | r1282_5 | +| ir.cpp:1282:32:1282:33 | Arg(1) | 1:r1282_7 | +| ir.cpp:1283:5:1283:9 | Address | &:r1283_1 | +| ir.cpp:1283:5:1283:9 | Load | m1272_8 | +| ir.cpp:1283:12:1283:24 | CallTarget | func:r1283_3 | +| ir.cpp:1283:12:1283:24 | ChiPartial | partial:m1283_8 | +| ir.cpp:1283:12:1283:24 | ChiTotal | total:m1282_10 | +| ir.cpp:1283:12:1283:24 | SideEffect | ~m1282_10 | +| ir.cpp:1283:26:1283:30 | Address | &:r1283_4 | +| ir.cpp:1283:26:1283:30 | Address | &:r1283_5 | +| ir.cpp:1283:26:1283:30 | Address | &:r1283_5 | +| ir.cpp:1283:26:1283:30 | Arg(0) | 0:r1283_5 | +| ir.cpp:1283:26:1283:30 | ChiPartial | partial:m1283_11 | +| ir.cpp:1283:26:1283:30 | ChiTotal | total:m1281_15 | +| ir.cpp:1283:26:1283:30 | Load | m1272_8 | +| ir.cpp:1283:26:1283:30 | SideEffect | ~m1281_15 | +| ir.cpp:1283:33:1283:34 | Arg(1) | 1:r1283_6 | +| ir.cpp:1285:7:1285:31 | CallTarget | func:r1285_2 | +| ir.cpp:1285:7:1285:31 | ChiPartial | partial:m1285_4 | +| ir.cpp:1285:7:1285:31 | ChiTotal | total:m1283_9 | +| ir.cpp:1285:7:1285:31 | SideEffect | ~m1283_9 | +| ir.cpp:1286:5:1286:32 | CallTarget | func:r1286_1 | +| ir.cpp:1286:5:1286:32 | ChiPartial | partial:m1286_3 | +| ir.cpp:1286:5:1286:32 | ChiTotal | total:m1285_5 | +| ir.cpp:1286:5:1286:32 | SideEffect | ~m1285_5 | +| ir.cpp:1288:5:1288:20 | CallTarget | func:r1288_1 | +| ir.cpp:1288:5:1288:20 | ChiPartial | partial:m1288_3 | +| ir.cpp:1288:5:1288:20 | ChiTotal | total:m1286_4 | +| ir.cpp:1288:5:1288:20 | SideEffect | ~m1286_4 | +| ir.cpp:1288:25:1288:49 | CallTarget | func:r1288_5 | +| ir.cpp:1288:25:1288:49 | ChiPartial | partial:m1288_7 | +| ir.cpp:1288:25:1288:49 | ChiTotal | total:m1288_4 | +| ir.cpp:1288:25:1288:49 | SideEffect | ~m1288_4 | +| ir.cpp:1291:5:1291:22 | Address | &:r1291_10 | +| ir.cpp:1291:5:1291:22 | ChiPartial | partial:m1291_3 | +| ir.cpp:1291:5:1291:22 | ChiTotal | total:m1291_2 | +| ir.cpp:1291:5:1291:22 | Load | m1291_9 | +| ir.cpp:1291:5:1291:22 | Phi | from 2:m1293_4 | +| ir.cpp:1291:5:1291:22 | Phi | from 3:m1295_2 | +| ir.cpp:1291:5:1291:22 | SideEffect | m1291_3 | +| ir.cpp:1291:29:1291:29 | Address | &:r1291_5 | +| ir.cpp:1291:36:1291:36 | Address | &:r1291_7 | +| ir.cpp:1292:9:1292:9 | Address | &:r1292_1 | +| ir.cpp:1292:9:1292:9 | Condition | r1292_2 | +| ir.cpp:1292:9:1292:9 | Load | m1291_6 | +| ir.cpp:1293:9:1293:17 | Address | &:r1293_1 | +| ir.cpp:1293:16:1293:16 | Address | &:r1293_2 | +| ir.cpp:1293:16:1293:16 | Load | m1291_8 | +| ir.cpp:1293:16:1293:16 | StoreValue | r1293_3 | +| ir.cpp:1295:1:1295:1 | Address | &:r1295_1 | +| ir.cpp:1297:6:1297:15 | ChiPartial | partial:m1297_3 | +| ir.cpp:1297:6:1297:15 | ChiTotal | total:m1297_2 | +| ir.cpp:1297:6:1297:15 | SideEffect | ~m1298_8 | +| ir.cpp:1297:21:1297:21 | Address | &:r1297_5 | +| ir.cpp:1297:28:1297:28 | Address | &:r1297_7 | +| ir.cpp:1298:12:1298:21 | CallTarget | func:r1298_1 | +| ir.cpp:1298:12:1298:21 | ChiPartial | partial:m1298_7 | +| ir.cpp:1298:12:1298:21 | ChiTotal | total:m1297_4 | +| ir.cpp:1298:12:1298:21 | SideEffect | ~m1297_4 | +| ir.cpp:1298:23:1298:23 | Address | &:r1298_2 | +| ir.cpp:1298:23:1298:23 | Arg(0) | 0:r1298_3 | +| ir.cpp:1298:23:1298:23 | Load | m1297_6 | +| ir.cpp:1298:26:1298:26 | Address | &:r1298_4 | +| ir.cpp:1298:26:1298:26 | Arg(1) | 1:r1298_5 | +| ir.cpp:1298:26:1298:26 | Load | m1297_8 | +| ir.cpp:1301:6:1301:25 | ChiPartial | partial:m1301_3 | +| ir.cpp:1301:6:1301:25 | ChiTotal | total:m1301_2 | +| ir.cpp:1301:6:1301:25 | SideEffect | m1301_3 | +| ir.cpp:1301:32:1301:32 | Address | &:r1301_5 | +| ir.cpp:1301:39:1301:39 | Address | &:r1301_7 | +| ir.cpp:1301:47:1301:47 | Address | &:r1301_9 | | ir.cpp:1302:9:1302:9 | Address | &:r1302_1 | -| ir.cpp:1302:9:1302:9 | Condition | r1302_2 | -| ir.cpp:1302:9:1302:9 | Load | m1299_6 | -| ir.cpp:1302:9:1302:9 | StoreValue | r1302_2 | -| ir.cpp:1302:9:1302:14 | Address | &:r1302_5 | -| ir.cpp:1302:9:1302:14 | Address | &:r1302_10 | -| ir.cpp:1302:9:1302:14 | Address | &:r1302_14 | -| ir.cpp:1302:9:1302:14 | Load | m1302_4 | -| ir.cpp:1302:9:1302:14 | Phi | from 5:m1302_11 | -| ir.cpp:1302:9:1302:14 | Phi | from 6:m1302_15 | -| ir.cpp:1302:9:1302:14 | StoreValue | r1302_7 | -| ir.cpp:1302:9:1302:14 | Unary | r1302_6 | -| ir.cpp:1302:14:1302:14 | Address | &:r1302_12 | -| ir.cpp:1302:14:1302:14 | Load | m1299_10 | -| ir.cpp:1302:14:1302:14 | StoreValue | r1302_13 | -| ir.cpp:1303:5:1303:5 | Address | &:r1303_9 | +| ir.cpp:1302:13:1302:13 | Address | &:r1302_2 | +| ir.cpp:1302:13:1302:13 | Load | m1301_8 | +| ir.cpp:1302:13:1302:13 | StoreValue | r1302_3 | +| ir.cpp:1303:5:1303:5 | Address | &:r1303_7 | | ir.cpp:1303:9:1303:9 | Address | &:r1303_1 | -| ir.cpp:1303:9:1303:9 | Condition | r1303_4 | -| ir.cpp:1303:9:1303:9 | Left | r1303_2 | -| ir.cpp:1303:9:1303:9 | Load | m1299_8 | -| ir.cpp:1303:9:1303:9 | Right | r1303_3 | +| ir.cpp:1303:9:1303:9 | Condition | r1303_2 | +| ir.cpp:1303:9:1303:9 | Load | m1301_6 | | ir.cpp:1303:9:1303:9 | StoreValue | r1303_2 | -| ir.cpp:1303:9:1303:14 | Address | &:r1303_7 | -| ir.cpp:1303:9:1303:14 | Address | &:r1303_11 | -| ir.cpp:1303:9:1303:14 | Address | &:r1303_15 | -| ir.cpp:1303:9:1303:14 | Load | m1303_6 | -| ir.cpp:1303:9:1303:14 | Phi | from 8:m1303_12 | -| ir.cpp:1303:9:1303:14 | Phi | from 9:m1303_16 | -| ir.cpp:1303:9:1303:14 | StoreValue | r1303_8 | -| ir.cpp:1303:14:1303:14 | Address | &:r1303_13 | -| ir.cpp:1303:14:1303:14 | Load | m1299_8 | -| ir.cpp:1303:14:1303:14 | StoreValue | r1303_14 | -| ir.cpp:1304:5:1304:5 | Address | &:r1304_10 | +| ir.cpp:1303:9:1303:14 | Address | &:r1303_5 | +| ir.cpp:1303:9:1303:14 | Address | &:r1303_9 | +| ir.cpp:1303:9:1303:14 | Address | &:r1303_13 | +| ir.cpp:1303:9:1303:14 | Load | m1303_4 | +| ir.cpp:1303:9:1303:14 | Phi | from 2:m1303_10 | +| ir.cpp:1303:9:1303:14 | Phi | from 3:m1303_14 | +| ir.cpp:1303:9:1303:14 | StoreValue | r1303_6 | +| ir.cpp:1303:14:1303:14 | Address | &:r1303_11 | +| ir.cpp:1303:14:1303:14 | Load | m1301_8 | +| ir.cpp:1303:14:1303:14 | StoreValue | r1303_12 | +| ir.cpp:1304:5:1304:5 | Address | &:r1304_8 | | ir.cpp:1304:9:1304:9 | Address | &:r1304_1 | -| ir.cpp:1304:9:1304:9 | Condition | r1304_4 | -| ir.cpp:1304:9:1304:9 | Left | r1304_2 | -| ir.cpp:1304:9:1304:9 | Load | m1299_8 | -| ir.cpp:1304:9:1304:9 | Right | r1304_3 | +| ir.cpp:1304:9:1304:9 | Condition | r1304_2 | +| ir.cpp:1304:9:1304:9 | Load | m1301_6 | | ir.cpp:1304:9:1304:9 | StoreValue | r1304_2 | -| ir.cpp:1304:9:1304:14 | Address | &:r1304_7 | -| ir.cpp:1304:9:1304:14 | Address | &:r1304_12 | -| ir.cpp:1304:9:1304:14 | Address | &:r1304_16 | -| ir.cpp:1304:9:1304:14 | Load | m1304_6 | -| ir.cpp:1304:9:1304:14 | Phi | from 11:m1304_13 | -| ir.cpp:1304:9:1304:14 | Phi | from 12:m1304_17 | -| ir.cpp:1304:9:1304:14 | StoreValue | r1304_9 | -| ir.cpp:1304:9:1304:14 | Unary | r1304_8 | -| ir.cpp:1304:14:1304:14 | Address | &:r1304_14 | -| ir.cpp:1304:14:1304:14 | Load | m1299_10 | -| ir.cpp:1304:14:1304:14 | StoreValue | r1304_15 | -| ir.cpp:1305:5:1305:5 | Address | &:r1305_10 | +| ir.cpp:1304:9:1304:14 | Address | &:r1304_5 | +| ir.cpp:1304:9:1304:14 | Address | &:r1304_10 | +| ir.cpp:1304:9:1304:14 | Address | &:r1304_14 | +| ir.cpp:1304:9:1304:14 | Load | m1304_4 | +| ir.cpp:1304:9:1304:14 | Phi | from 5:m1304_11 | +| ir.cpp:1304:9:1304:14 | Phi | from 6:m1304_15 | +| ir.cpp:1304:9:1304:14 | StoreValue | r1304_7 | +| ir.cpp:1304:9:1304:14 | Unary | r1304_6 | +| ir.cpp:1304:14:1304:14 | Address | &:r1304_12 | +| ir.cpp:1304:14:1304:14 | Load | m1301_10 | +| ir.cpp:1304:14:1304:14 | StoreValue | r1304_13 | +| ir.cpp:1305:5:1305:5 | Address | &:r1305_9 | | ir.cpp:1305:9:1305:9 | Address | &:r1305_1 | | ir.cpp:1305:9:1305:9 | Condition | r1305_4 | | ir.cpp:1305:9:1305:9 | Left | r1305_2 | -| ir.cpp:1305:9:1305:9 | Load | m1299_10 | +| ir.cpp:1305:9:1305:9 | Load | m1301_8 | | ir.cpp:1305:9:1305:9 | Right | r1305_3 | | ir.cpp:1305:9:1305:9 | StoreValue | r1305_2 | | ir.cpp:1305:9:1305:14 | Address | &:r1305_7 | -| ir.cpp:1305:9:1305:14 | Address | &:r1305_12 | -| ir.cpp:1305:9:1305:14 | Address | &:r1305_17 | +| ir.cpp:1305:9:1305:14 | Address | &:r1305_11 | +| ir.cpp:1305:9:1305:14 | Address | &:r1305_15 | | ir.cpp:1305:9:1305:14 | Load | m1305_6 | -| ir.cpp:1305:9:1305:14 | Phi | from 14:m1305_13 | -| ir.cpp:1305:9:1305:14 | Phi | from 15:m1305_18 | -| ir.cpp:1305:9:1305:14 | StoreValue | r1305_9 | -| ir.cpp:1305:9:1305:14 | Unary | r1305_8 | -| ir.cpp:1305:14:1305:14 | Address | &:r1305_14 | -| ir.cpp:1305:14:1305:14 | Load | m1299_8 | -| ir.cpp:1305:14:1305:14 | StoreValue | r1305_16 | -| ir.cpp:1305:14:1305:14 | Unary | r1305_15 | +| ir.cpp:1305:9:1305:14 | Phi | from 8:m1305_12 | +| ir.cpp:1305:9:1305:14 | Phi | from 9:m1305_16 | +| ir.cpp:1305:9:1305:14 | StoreValue | r1305_8 | +| ir.cpp:1305:14:1305:14 | Address | &:r1305_13 | +| ir.cpp:1305:14:1305:14 | Load | m1301_8 | +| ir.cpp:1305:14:1305:14 | StoreValue | r1305_14 | | ir.cpp:1306:5:1306:5 | Address | &:r1306_10 | | ir.cpp:1306:9:1306:9 | Address | &:r1306_1 | | ir.cpp:1306:9:1306:9 | Condition | r1306_4 | | ir.cpp:1306:9:1306:9 | Left | r1306_2 | -| ir.cpp:1306:9:1306:9 | Load | m1299_10 | +| ir.cpp:1306:9:1306:9 | Load | m1301_8 | | ir.cpp:1306:9:1306:9 | Right | r1306_3 | | ir.cpp:1306:9:1306:9 | StoreValue | r1306_2 | | ir.cpp:1306:9:1306:14 | Address | &:r1306_7 | | ir.cpp:1306:9:1306:14 | Address | &:r1306_12 | | ir.cpp:1306:9:1306:14 | Address | &:r1306_16 | | ir.cpp:1306:9:1306:14 | Load | m1306_6 | -| ir.cpp:1306:9:1306:14 | Phi | from 17:m1306_13 | -| ir.cpp:1306:9:1306:14 | Phi | from 18:m1306_17 | +| ir.cpp:1306:9:1306:14 | Phi | from 11:m1306_13 | +| ir.cpp:1306:9:1306:14 | Phi | from 12:m1306_17 | | ir.cpp:1306:9:1306:14 | StoreValue | r1306_9 | | ir.cpp:1306:9:1306:14 | Unary | r1306_8 | | ir.cpp:1306:14:1306:14 | Address | &:r1306_14 | -| ir.cpp:1306:14:1306:14 | Load | m1299_10 | +| ir.cpp:1306:14:1306:14 | Load | m1301_10 | | ir.cpp:1306:14:1306:14 | StoreValue | r1306_15 | -| ir.cpp:1308:5:1308:5 | Address | &:r1308_9 | -| ir.cpp:1308:9:1308:26 | Address | &:r1308_7 | -| ir.cpp:1308:9:1308:26 | Address | &:r1308_11 | -| ir.cpp:1308:9:1308:26 | Address | &:r1308_33 | -| ir.cpp:1308:9:1308:26 | Load | m1308_6 | -| ir.cpp:1308:9:1308:26 | Phi | from 20:m1308_12 | -| ir.cpp:1308:9:1308:26 | Phi | from 26:m1308_34 | -| ir.cpp:1308:9:1308:26 | StoreValue | r1308_8 | -| ir.cpp:1308:10:1308:10 | Address | &:r1308_1 | -| ir.cpp:1308:10:1308:10 | Condition | r1308_4 | -| ir.cpp:1308:10:1308:10 | Left | r1308_2 | -| ir.cpp:1308:10:1308:10 | Load | m1299_8 | -| ir.cpp:1308:10:1308:10 | Right | r1308_3 | -| ir.cpp:1308:10:1308:20 | Address | &:r1308_13 | -| ir.cpp:1308:10:1308:20 | Address | &:r1308_17 | -| ir.cpp:1308:10:1308:20 | Address | &:r1308_20 | -| ir.cpp:1308:10:1308:20 | Condition | r1308_18 | -| ir.cpp:1308:10:1308:20 | Load | m1308_16 | -| ir.cpp:1308:10:1308:20 | Phi | from 21:m1308_15 | -| ir.cpp:1308:10:1308:20 | Phi | from 23:m1308_22 | -| ir.cpp:1308:10:1308:20 | StoreValue | r1308_14 | -| ir.cpp:1308:10:1308:20 | StoreValue | r1308_18 | -| ir.cpp:1308:10:1308:20 | StoreValue | r1308_21 | -| ir.cpp:1308:15:1308:15 | Address | &:r1308_23 | -| ir.cpp:1308:15:1308:15 | Condition | r1308_24 | -| ir.cpp:1308:15:1308:15 | Load | m1299_6 | -| ir.cpp:1308:20:1308:20 | Address | &:r1308_26 | -| ir.cpp:1308:20:1308:20 | Condition | r1308_29 | -| ir.cpp:1308:20:1308:20 | Left | r1308_27 | -| ir.cpp:1308:20:1308:20 | Load | m1299_10 | -| ir.cpp:1308:20:1308:20 | Right | r1308_28 | -| ir.cpp:1308:26:1308:26 | Address | &:r1308_31 | -| ir.cpp:1308:26:1308:26 | Load | m1299_8 | -| ir.cpp:1308:26:1308:26 | StoreValue | r1308_32 | -| ir.cpp:1314:5:1314:27 | Address | &:r1314_9 | -| ir.cpp:1314:5:1314:27 | ChiPartial | partial:m1314_3 | -| ir.cpp:1314:5:1314:27 | ChiTotal | total:m1314_2 | -| ir.cpp:1314:5:1314:27 | Load | m1315_11 | -| ir.cpp:1314:5:1314:27 | SideEffect | ~m1315_7 | -| ir.cpp:1314:33:1314:33 | Address | &:r1314_5 | -| ir.cpp:1314:40:1314:40 | Address | &:r1314_7 | -| ir.cpp:1315:5:1315:48 | Address | &:r1315_1 | -| ir.cpp:1315:12:1315:21 | CallTarget | func:r1315_2 | -| ir.cpp:1315:12:1315:21 | ChiPartial | partial:m1315_4 | -| ir.cpp:1315:12:1315:21 | ChiTotal | total:m1314_4 | -| ir.cpp:1315:12:1315:21 | Condition | r1315_3 | -| ir.cpp:1315:12:1315:21 | SideEffect | ~m1314_4 | -| ir.cpp:1315:12:1315:47 | Address | &:r1315_9 | -| ir.cpp:1315:12:1315:47 | Address | &:r1315_19 | -| ir.cpp:1315:12:1315:47 | Address | &:r1315_24 | -| ir.cpp:1315:12:1315:47 | Load | m1315_8 | -| ir.cpp:1315:12:1315:47 | Phi | from 3:m1315_20 | -| ir.cpp:1315:12:1315:47 | Phi | from 3:~m1315_15 | -| ir.cpp:1315:12:1315:47 | Phi | from 4:m1315_25 | -| ir.cpp:1315:12:1315:47 | Phi | from 4:~m1315_21 | -| ir.cpp:1315:12:1315:47 | StoreValue | r1315_10 | -| ir.cpp:1315:28:1315:37 | CallTarget | func:r1315_12 | -| ir.cpp:1315:28:1315:37 | ChiPartial | partial:m1315_14 | -| ir.cpp:1315:28:1315:37 | ChiTotal | total:m1315_5 | -| ir.cpp:1315:28:1315:37 | Condition | r1315_13 | -| ir.cpp:1315:28:1315:37 | SideEffect | ~m1315_5 | -| ir.cpp:1315:43:1315:43 | Address | &:r1315_17 | -| ir.cpp:1315:43:1315:43 | Load | m1314_6 | -| ir.cpp:1315:43:1315:43 | StoreValue | r1315_18 | -| ir.cpp:1315:47:1315:47 | Address | &:r1315_22 | -| ir.cpp:1315:47:1315:47 | Load | m1314_8 | -| ir.cpp:1315:47:1315:47 | Phi | from 0:~m1315_5 | -| ir.cpp:1315:47:1315:47 | Phi | from 2:~m1315_15 | -| ir.cpp:1315:47:1315:47 | StoreValue | r1315_23 | -| ir.cpp:1320:6:1320:6 | ChiPartial | partial:m1320_3 | -| ir.cpp:1320:6:1320:6 | ChiTotal | total:m1320_2 | -| ir.cpp:1320:6:1320:6 | SideEffect | ~m1322_8 | -| ir.cpp:1320:13:1320:13 | Address | &:r1320_5 | -| ir.cpp:1320:13:1320:13 | Address | &:r1320_5 | -| ir.cpp:1320:13:1320:13 | Address | &:r1320_7 | -| ir.cpp:1320:13:1320:13 | Address | &:r1320_7 | -| ir.cpp:1320:13:1320:13 | Load | m1320_6 | -| ir.cpp:1320:13:1320:13 | SideEffect | m1320_8 | -| ir.cpp:1322:3:1322:13 | Address | &:r1322_6 | -| ir.cpp:1322:3:1322:13 | Arg(0) | 0:r1322_2 | -| ir.cpp:1322:3:1322:13 | CallTarget | func:r1322_1 | -| ir.cpp:1322:3:1322:13 | ChiPartial | partial:m1322_7 | -| ir.cpp:1322:3:1322:13 | ChiTotal | total:m1320_4 | -| ir.cpp:1322:3:1322:13 | SideEffect | ~m1320_4 | -| ir.cpp:1322:3:1322:13 | Unary | r1322_6 | -| ir.cpp:1322:8:1322:8 | Address | &:r1322_3 | -| ir.cpp:1322:8:1322:8 | Arg(1) | 1:r1322_5 | -| ir.cpp:1322:8:1322:8 | Load | m1320_6 | -| ir.cpp:1322:8:1322:8 | Unary | r1322_4 | -| ir.cpp:1326:3:1326:3 | Address | &:r1326_5 | -| ir.cpp:1326:3:1326:3 | Address | &:r1326_5 | -| ir.cpp:1326:3:1326:3 | Address | &:r1326_5 | -| ir.cpp:1326:3:1326:3 | Address | &:r1326_5 | -| ir.cpp:1326:3:1326:3 | ChiPartial | partial:m1326_3 | -| ir.cpp:1326:3:1326:3 | ChiPartial | partial:m1326_3 | -| ir.cpp:1326:3:1326:3 | ChiPartial | partial:m1326_3 | -| ir.cpp:1326:3:1326:3 | ChiPartial | partial:m1326_3 | -| ir.cpp:1326:3:1326:3 | ChiTotal | total:m1326_2 | -| ir.cpp:1326:3:1326:3 | ChiTotal | total:m1326_2 | -| ir.cpp:1326:3:1326:3 | ChiTotal | total:m1326_2 | -| ir.cpp:1326:3:1326:3 | ChiTotal | total:m1326_2 | -| ir.cpp:1326:3:1326:3 | Load | m1327_3 | -| ir.cpp:1326:3:1326:3 | Load | m1327_3 | -| ir.cpp:1326:3:1326:3 | Load | m1327_8 | -| ir.cpp:1326:3:1326:3 | Load | m1327_8 | -| ir.cpp:1326:3:1326:3 | SideEffect | m1326_3 | -| ir.cpp:1326:3:1326:3 | SideEffect | m1326_3 | -| ir.cpp:1326:3:1326:3 | SideEffect | ~m1327_6 | -| ir.cpp:1326:3:1326:3 | SideEffect | ~m1327_6 | -| ir.cpp:1327:5:1327:15 | Address | &:r1327_1 | -| ir.cpp:1327:5:1327:15 | Address | &:r1327_1 | -| ir.cpp:1327:5:1327:15 | Address | &:r1327_1 | -| ir.cpp:1327:5:1327:15 | Address | &:r1327_1 | -| ir.cpp:1327:5:1327:15 | Address | &:r1327_1 | -| ir.cpp:1327:5:1327:15 | Address | &:r1327_1 | -| ir.cpp:1327:5:1327:15 | Arg(this) | this:r1327_1 | -| ir.cpp:1327:5:1327:15 | Arg(this) | this:r1327_1 | -| ir.cpp:1327:5:1327:15 | CallTarget | func:r1327_3 | -| ir.cpp:1327:5:1327:15 | CallTarget | func:r1327_3 | -| ir.cpp:1327:5:1327:15 | ChiPartial | partial:m1327_5 | -| ir.cpp:1327:5:1327:15 | ChiPartial | partial:m1327_5 | -| ir.cpp:1327:5:1327:15 | ChiPartial | partial:m1327_7 | -| ir.cpp:1327:5:1327:15 | ChiPartial | partial:m1327_7 | -| ir.cpp:1327:5:1327:15 | ChiTotal | total:m1326_4 | -| ir.cpp:1327:5:1327:15 | ChiTotal | total:m1326_4 | -| ir.cpp:1327:5:1327:15 | ChiTotal | total:m1327_2 | -| ir.cpp:1327:5:1327:15 | ChiTotal | total:m1327_2 | -| ir.cpp:1327:5:1327:15 | SideEffect | ~m1326_4 | -| ir.cpp:1327:5:1327:15 | SideEffect | ~m1326_4 | -| ir.cpp:1327:5:1327:15 | StoreValue | r1327_2 | -| ir.cpp:1327:5:1327:15 | StoreValue | r1327_2 | -| ir.cpp:1365:6:1365:21 | ChiPartial | partial:m1365_3 | -| ir.cpp:1365:6:1365:21 | ChiTotal | total:m1365_2 | -| ir.cpp:1365:6:1365:21 | SideEffect | ~m1376_5 | -| ir.cpp:1366:12:1366:12 | Address | &:r1366_1 | -| ir.cpp:1366:16:1366:34 | CallTarget | func:r1366_2 | -| ir.cpp:1366:16:1366:34 | ChiPartial | partial:m1366_4 | -| ir.cpp:1366:16:1366:34 | ChiTotal | total:m1365_4 | -| ir.cpp:1366:16:1366:34 | SideEffect | ~m1365_4 | -| ir.cpp:1366:16:1366:34 | StoreValue | r1366_3 | -| ir.cpp:1367:19:1367:20 | Address | &:r1367_1 | -| ir.cpp:1367:24:1367:42 | CallTarget | func:r1367_3 | -| ir.cpp:1367:24:1367:42 | ChiPartial | partial:m1367_5 | -| ir.cpp:1367:24:1367:42 | ChiTotal | total:m1366_5 | -| ir.cpp:1367:24:1367:42 | SideEffect | ~m1366_5 | -| ir.cpp:1367:24:1367:42 | StoreValue | r1367_4 | -| ir.cpp:1367:24:1367:44 | Address | &:r1367_2 | -| ir.cpp:1367:24:1367:44 | StoreValue | r1367_9 | -| ir.cpp:1367:24:1367:44 | Unary | r1367_2 | -| ir.cpp:1367:24:1367:44 | Unary | r1367_8 | -| ir.cpp:1369:5:1369:13 | CallTarget | func:r1369_1 | -| ir.cpp:1369:5:1369:13 | ChiPartial | partial:m1369_6 | -| ir.cpp:1369:5:1369:13 | ChiTotal | total:m1367_6 | -| ir.cpp:1369:5:1369:13 | SideEffect | ~m1367_6 | -| ir.cpp:1369:15:1369:15 | Address | &:r1369_4 | -| ir.cpp:1369:15:1369:15 | Arg(0) | 0:r1369_4 | -| ir.cpp:1369:15:1369:15 | SideEffect | ~m1366_6 | -| ir.cpp:1369:15:1369:15 | Unary | r1369_2 | -| ir.cpp:1369:15:1369:15 | Unary | r1369_3 | -| ir.cpp:1370:5:1370:21 | CallTarget | func:r1370_1 | -| ir.cpp:1370:5:1370:21 | ChiPartial | partial:m1370_15 | -| ir.cpp:1370:5:1370:21 | ChiTotal | total:m1370_9 | -| ir.cpp:1370:5:1370:21 | SideEffect | ~m1370_9 | -| ir.cpp:1370:23:1370:27 | Address | &:r1370_2 | -| ir.cpp:1370:23:1370:27 | Address | &:r1370_2 | -| ir.cpp:1370:23:1370:27 | Address | &:r1370_6 | -| ir.cpp:1370:23:1370:27 | Address | &:r1370_13 | -| ir.cpp:1370:23:1370:27 | Arg(0) | 0:r1370_6 | -| ir.cpp:1370:23:1370:27 | Arg(0) | 0:r1370_13 | -| ir.cpp:1370:23:1370:27 | Arg(this) | this:r1370_2 | -| ir.cpp:1370:23:1370:27 | CallTarget | func:r1370_4 | -| ir.cpp:1370:23:1370:27 | ChiPartial | partial:m1370_8 | -| ir.cpp:1370:23:1370:27 | ChiPartial | partial:m1370_11 | -| ir.cpp:1370:23:1370:27 | ChiTotal | total:m1369_7 | -| ir.cpp:1370:23:1370:27 | ChiTotal | total:m1370_3 | -| ir.cpp:1370:23:1370:27 | SideEffect | ~m1365_3 | -| ir.cpp:1370:23:1370:27 | SideEffect | ~m1369_7 | -| ir.cpp:1370:23:1370:27 | SideEffect | ~m1370_12 | -| ir.cpp:1370:23:1370:27 | Unary | r1370_2 | -| ir.cpp:1370:23:1370:27 | Unary | r1370_5 | -| ir.cpp:1371:5:1371:15 | CallTarget | func:r1371_1 | -| ir.cpp:1371:5:1371:15 | ChiPartial | partial:m1371_16 | -| ir.cpp:1371:5:1371:15 | ChiTotal | total:m1371_10 | -| ir.cpp:1371:5:1371:15 | SideEffect | ~m1371_10 | -| ir.cpp:1371:17:1371:17 | Address | &:r1371_2 | -| ir.cpp:1371:17:1371:17 | Address | &:r1371_2 | -| ir.cpp:1371:17:1371:17 | Address | &:r1371_2 | -| ir.cpp:1371:17:1371:17 | Address | &:r1371_7 | -| ir.cpp:1371:17:1371:17 | Arg(0) | 0:r1371_7 | -| ir.cpp:1371:17:1371:17 | Arg(0) | 0:r1371_14 | -| ir.cpp:1371:17:1371:17 | Arg(this) | this:r1371_2 | -| ir.cpp:1371:17:1371:17 | CallTarget | func:r1371_4 | -| ir.cpp:1371:17:1371:17 | ChiPartial | partial:m1371_9 | -| ir.cpp:1371:17:1371:17 | ChiPartial | partial:m1371_12 | -| ir.cpp:1371:17:1371:17 | ChiTotal | total:m1370_16 | -| ir.cpp:1371:17:1371:17 | ChiTotal | total:m1371_3 | -| ir.cpp:1371:17:1371:17 | Load | m1371_13 | -| ir.cpp:1371:17:1371:17 | SideEffect | ~m1366_6 | -| ir.cpp:1371:17:1371:17 | SideEffect | ~m1370_16 | -| ir.cpp:1371:17:1371:17 | Unary | r1371_5 | -| ir.cpp:1371:17:1371:17 | Unary | r1371_6 | -| ir.cpp:1372:5:1372:23 | CallTarget | func:r1372_1 | -| ir.cpp:1372:5:1372:23 | ChiPartial | partial:m1372_15 | -| ir.cpp:1372:5:1372:23 | ChiTotal | total:m1372_9 | -| ir.cpp:1372:5:1372:23 | SideEffect | ~m1372_9 | -| ir.cpp:1372:25:1372:29 | Address | &:r1372_2 | -| ir.cpp:1372:25:1372:29 | Address | &:r1372_2 | -| ir.cpp:1372:25:1372:29 | Address | &:r1372_2 | -| ir.cpp:1372:25:1372:29 | Address | &:r1372_6 | -| ir.cpp:1372:25:1372:29 | Arg(0) | 0:r1372_6 | -| ir.cpp:1372:25:1372:29 | Arg(0) | 0:r1372_13 | -| ir.cpp:1372:25:1372:29 | Arg(this) | this:r1372_2 | -| ir.cpp:1372:25:1372:29 | CallTarget | func:r1372_4 | -| ir.cpp:1372:25:1372:29 | ChiPartial | partial:m1372_8 | -| ir.cpp:1372:25:1372:29 | ChiPartial | partial:m1372_11 | -| ir.cpp:1372:25:1372:29 | ChiTotal | total:m1371_17 | -| ir.cpp:1372:25:1372:29 | ChiTotal | total:m1372_3 | -| ir.cpp:1372:25:1372:29 | Load | m1372_12 | -| ir.cpp:1372:25:1372:29 | SideEffect | ~m1365_3 | -| ir.cpp:1372:25:1372:29 | SideEffect | ~m1371_17 | -| ir.cpp:1372:25:1372:29 | Unary | r1372_5 | -| ir.cpp:1373:5:1373:12 | Address | &:r1373_1 | -| ir.cpp:1373:5:1373:12 | Address | &:r1373_1 | -| ir.cpp:1373:5:1373:12 | Address | &:r1373_9 | -| ir.cpp:1373:5:1373:12 | Arg(this) | this:r1373_1 | -| ir.cpp:1373:5:1373:12 | Arg(this) | this:r1373_9 | -| ir.cpp:1373:5:1373:12 | CallTarget | func:r1373_3 | -| ir.cpp:1373:5:1373:12 | ChiPartial | partial:m1373_5 | -| ir.cpp:1373:5:1373:12 | ChiPartial | partial:m1373_7 | -| ir.cpp:1373:5:1373:12 | ChiTotal | total:m1372_16 | -| ir.cpp:1373:5:1373:12 | ChiTotal | total:m1373_2 | -| ir.cpp:1373:5:1373:12 | SideEffect | m1373_8 | -| ir.cpp:1373:5:1373:12 | SideEffect | ~m1372_16 | -| ir.cpp:1373:5:1373:12 | Unary | r1373_1 | -| ir.cpp:1373:14:1373:18 | CallTarget | func:r1373_10 | -| ir.cpp:1373:14:1373:18 | ChiPartial | partial:m1373_12 | -| ir.cpp:1373:14:1373:18 | ChiTotal | total:m1373_6 | -| ir.cpp:1373:14:1373:18 | SideEffect | ~m1373_6 | -| ir.cpp:1374:5:1374:23 | CallTarget | func:r1374_2 | -| ir.cpp:1374:5:1374:23 | ChiPartial | partial:m1374_4 | -| ir.cpp:1374:5:1374:23 | ChiTotal | total:m1373_13 | -| ir.cpp:1374:5:1374:23 | SideEffect | ~m1373_13 | -| ir.cpp:1374:5:1374:23 | StoreValue | r1374_3 | -| ir.cpp:1374:5:1374:25 | Address | &:r1374_1 | -| ir.cpp:1374:5:1374:25 | Address | &:r1374_7 | -| ir.cpp:1374:5:1374:25 | Arg(this) | this:r1374_7 | -| ir.cpp:1374:5:1374:25 | SideEffect | m1374_6 | -| ir.cpp:1374:5:1374:25 | Unary | r1374_1 | -| ir.cpp:1374:27:1374:31 | CallTarget | func:r1374_8 | -| ir.cpp:1374:27:1374:31 | ChiPartial | partial:m1374_10 | -| ir.cpp:1374:27:1374:31 | ChiTotal | total:m1374_5 | -| ir.cpp:1374:27:1374:31 | SideEffect | ~m1374_5 | -| ir.cpp:1376:5:1376:28 | CallTarget | func:r1376_2 | -| ir.cpp:1376:5:1376:28 | ChiPartial | partial:m1376_4 | -| ir.cpp:1376:5:1376:28 | ChiTotal | total:m1374_11 | -| ir.cpp:1376:5:1376:28 | SideEffect | ~m1374_11 | -| ir.cpp:1376:5:1376:28 | StoreValue | r1376_3 | -| ir.cpp:1376:5:1376:30 | Address | &:r1376_1 | -| ir.cpp:1379:6:1379:30 | ChiPartial | partial:m1379_3 | -| ir.cpp:1379:6:1379:30 | ChiTotal | total:m1379_2 | -| ir.cpp:1379:6:1379:30 | SideEffect | ~m1388_5 | -| ir.cpp:1380:21:1380:21 | Address | &:r1380_1 | -| ir.cpp:1380:25:1380:52 | CallTarget | func:r1380_2 | -| ir.cpp:1380:25:1380:52 | ChiPartial | partial:m1380_4 | -| ir.cpp:1380:25:1380:52 | ChiTotal | total:m1379_4 | -| ir.cpp:1380:25:1380:52 | SideEffect | ~m1379_4 | -| ir.cpp:1380:25:1380:52 | StoreValue | r1380_3 | -| ir.cpp:1381:28:1381:29 | Address | &:r1381_1 | -| ir.cpp:1381:33:1381:60 | CallTarget | func:r1381_3 | -| ir.cpp:1381:33:1381:60 | ChiPartial | partial:m1381_5 | -| ir.cpp:1381:33:1381:60 | ChiTotal | total:m1380_5 | -| ir.cpp:1381:33:1381:60 | SideEffect | ~m1380_5 | -| ir.cpp:1381:33:1381:60 | StoreValue | r1381_4 | -| ir.cpp:1381:33:1381:62 | Address | &:r1381_2 | -| ir.cpp:1381:33:1381:62 | StoreValue | r1381_9 | -| ir.cpp:1381:33:1381:62 | Unary | r1381_2 | -| ir.cpp:1381:33:1381:62 | Unary | r1381_8 | -| ir.cpp:1382:21:1382:22 | Address | &:r1382_1 | -| ir.cpp:1383:5:1383:13 | CallTarget | func:r1383_1 | -| ir.cpp:1383:5:1383:13 | ChiPartial | partial:m1383_6 | -| ir.cpp:1383:5:1383:13 | ChiTotal | total:m1381_6 | -| ir.cpp:1383:5:1383:13 | SideEffect | ~m1381_6 | -| ir.cpp:1383:15:1383:15 | Address | &:r1383_4 | -| ir.cpp:1383:15:1383:15 | Arg(0) | 0:r1383_4 | -| ir.cpp:1383:15:1383:15 | SideEffect | ~m1380_6 | -| ir.cpp:1383:15:1383:15 | Unary | r1383_2 | -| ir.cpp:1383:15:1383:15 | Unary | r1383_3 | -| ir.cpp:1384:5:1384:15 | CallTarget | func:r1384_1 | -| ir.cpp:1384:5:1384:15 | ChiPartial | partial:m1384_8 | -| ir.cpp:1384:5:1384:15 | ChiTotal | total:m1383_7 | -| ir.cpp:1384:5:1384:15 | SideEffect | ~m1383_7 | -| ir.cpp:1384:17:1384:17 | Address | &:r1384_2 | -| ir.cpp:1384:17:1384:17 | Address | &:r1384_2 | -| ir.cpp:1384:17:1384:17 | Address | &:r1384_3 | -| ir.cpp:1384:17:1384:17 | Arg(0) | 0:r1384_6 | -| ir.cpp:1384:17:1384:17 | Load | m1380_6 | -| ir.cpp:1384:17:1384:17 | Load | m1384_5 | -| ir.cpp:1384:17:1384:17 | StoreValue | r1384_4 | -| ir.cpp:1385:5:1385:21 | Address | &:r1385_1 | -| ir.cpp:1385:5:1385:21 | Address | &:r1385_1 | -| ir.cpp:1385:5:1385:21 | Address | &:r1385_1 | -| ir.cpp:1385:5:1385:21 | Arg(this) | this:r1385_1 | -| ir.cpp:1385:5:1385:21 | ChiPartial | partial:m1385_9 | -| ir.cpp:1385:5:1385:21 | ChiTotal | total:m1385_3 | -| ir.cpp:1385:5:1385:21 | SideEffect | m1385_3 | -| ir.cpp:1385:5:1385:21 | StoreValue | r1385_2 | -| ir.cpp:1385:23:1385:28 | CallTarget | func:r1385_4 | -| ir.cpp:1385:23:1385:28 | ChiPartial | partial:m1385_6 | -| ir.cpp:1385:23:1385:28 | ChiTotal | total:m1384_9 | -| ir.cpp:1385:23:1385:28 | SideEffect | ~m1384_9 | -| ir.cpp:1386:5:1386:32 | CallTarget | func:r1386_2 | -| ir.cpp:1386:5:1386:32 | ChiPartial | partial:m1386_4 | -| ir.cpp:1386:5:1386:32 | ChiTotal | total:m1385_7 | -| ir.cpp:1386:5:1386:32 | SideEffect | ~m1385_7 | -| ir.cpp:1386:5:1386:32 | StoreValue | r1386_3 | -| ir.cpp:1386:5:1386:34 | Address | &:r1386_1 | -| ir.cpp:1386:5:1386:34 | Address | &:r1386_1 | -| ir.cpp:1386:5:1386:34 | Address | &:r1386_1 | -| ir.cpp:1386:5:1386:34 | Arg(this) | this:r1386_1 | -| ir.cpp:1386:5:1386:34 | ChiPartial | partial:m1386_12 | -| ir.cpp:1386:5:1386:34 | ChiTotal | total:m1386_6 | -| ir.cpp:1386:5:1386:34 | SideEffect | m1386_6 | -| ir.cpp:1386:36:1386:41 | CallTarget | func:r1386_7 | -| ir.cpp:1386:36:1386:41 | ChiPartial | partial:m1386_9 | -| ir.cpp:1386:36:1386:41 | ChiTotal | total:m1386_5 | -| ir.cpp:1386:36:1386:41 | SideEffect | ~m1386_5 | -| ir.cpp:1388:5:1388:37 | CallTarget | func:r1388_2 | -| ir.cpp:1388:5:1388:37 | ChiPartial | partial:m1388_4 | -| ir.cpp:1388:5:1388:37 | ChiTotal | total:m1386_10 | -| ir.cpp:1388:5:1388:37 | SideEffect | ~m1386_10 | -| ir.cpp:1388:5:1388:37 | StoreValue | r1388_3 | -| ir.cpp:1388:5:1388:39 | Address | &:r1388_1 | -| ir.cpp:1391:6:1391:31 | ChiPartial | partial:m1391_3 | -| ir.cpp:1391:6:1391:31 | ChiTotal | total:m1391_2 | -| ir.cpp:1391:6:1391:31 | SideEffect | ~m1401_6 | -| ir.cpp:1392:22:1392:22 | Address | &:r1392_1 | -| ir.cpp:1392:26:1392:54 | CallTarget | func:r1392_2 | -| ir.cpp:1392:26:1392:54 | ChiPartial | partial:m1392_4 | -| ir.cpp:1392:26:1392:54 | ChiTotal | total:m1391_4 | -| ir.cpp:1392:26:1392:54 | SideEffect | ~m1391_4 | -| ir.cpp:1392:26:1392:54 | StoreValue | r1392_3 | -| ir.cpp:1393:29:1393:30 | Address | &:r1393_1 | -| ir.cpp:1393:34:1393:62 | CallTarget | func:r1393_3 | -| ir.cpp:1393:34:1393:62 | ChiPartial | partial:m1393_5 | -| ir.cpp:1393:34:1393:62 | ChiTotal | total:m1392_5 | -| ir.cpp:1393:34:1393:62 | SideEffect | ~m1392_5 | -| ir.cpp:1393:34:1393:62 | StoreValue | r1393_4 | -| ir.cpp:1393:34:1393:64 | Address | &:r1393_2 | -| ir.cpp:1393:34:1393:64 | StoreValue | r1393_9 | -| ir.cpp:1393:34:1393:64 | Unary | r1393_2 | -| ir.cpp:1393:34:1393:64 | Unary | r1393_8 | -| ir.cpp:1394:22:1394:23 | Address | &:r1394_1 | -| ir.cpp:1394:22:1394:23 | Address | &:r1394_1 | -| ir.cpp:1394:22:1394:23 | Arg(this) | this:r1394_1 | -| ir.cpp:1394:22:1394:23 | CallTarget | func:r1394_3 | -| ir.cpp:1394:22:1394:23 | ChiPartial | partial:m1394_5 | -| ir.cpp:1394:22:1394:23 | ChiPartial | partial:m1394_7 | -| ir.cpp:1394:22:1394:23 | ChiTotal | total:m1393_6 | -| ir.cpp:1394:22:1394:23 | ChiTotal | total:m1394_2 | -| ir.cpp:1394:22:1394:23 | SideEffect | ~m1393_6 | -| ir.cpp:1395:5:1395:13 | CallTarget | func:r1395_1 | -| ir.cpp:1395:5:1395:13 | ChiPartial | partial:m1395_6 | -| ir.cpp:1395:5:1395:13 | ChiTotal | total:m1394_6 | -| ir.cpp:1395:5:1395:13 | SideEffect | ~m1394_6 | -| ir.cpp:1395:15:1395:15 | Address | &:r1395_4 | -| ir.cpp:1395:15:1395:15 | Arg(0) | 0:r1395_4 | -| ir.cpp:1395:15:1395:15 | SideEffect | ~m1392_6 | -| ir.cpp:1395:15:1395:15 | Unary | r1395_2 | -| ir.cpp:1395:15:1395:15 | Unary | r1395_3 | -| ir.cpp:1396:5:1396:15 | CallTarget | func:r1396_1 | -| ir.cpp:1396:5:1396:15 | ChiPartial | partial:m1396_16 | -| ir.cpp:1396:5:1396:15 | ChiTotal | total:m1396_10 | -| ir.cpp:1396:5:1396:15 | SideEffect | ~m1396_10 | -| ir.cpp:1396:17:1396:17 | Address | &:r1396_2 | -| ir.cpp:1396:17:1396:17 | Address | &:r1396_2 | -| ir.cpp:1396:17:1396:17 | Address | &:r1396_2 | -| ir.cpp:1396:17:1396:17 | Address | &:r1396_7 | -| ir.cpp:1396:17:1396:17 | Arg(0) | 0:r1396_7 | -| ir.cpp:1396:17:1396:17 | Arg(0) | 0:r1396_14 | -| ir.cpp:1396:17:1396:17 | Arg(this) | this:r1396_2 | -| ir.cpp:1396:17:1396:17 | CallTarget | func:r1396_4 | -| ir.cpp:1396:17:1396:17 | ChiPartial | partial:m1396_9 | -| ir.cpp:1396:17:1396:17 | ChiPartial | partial:m1396_12 | -| ir.cpp:1396:17:1396:17 | ChiTotal | total:m1395_7 | -| ir.cpp:1396:17:1396:17 | ChiTotal | total:m1396_3 | -| ir.cpp:1396:17:1396:17 | Load | m1396_13 | -| ir.cpp:1396:17:1396:17 | SideEffect | ~m1392_6 | -| ir.cpp:1396:17:1396:17 | SideEffect | ~m1395_7 | -| ir.cpp:1396:17:1396:17 | Unary | r1396_5 | -| ir.cpp:1396:17:1396:17 | Unary | r1396_6 | -| ir.cpp:1397:5:1397:22 | Address | &:r1397_1 | -| ir.cpp:1397:5:1397:22 | Address | &:r1397_1 | -| ir.cpp:1397:5:1397:22 | Address | &:r1397_1 | -| ir.cpp:1397:5:1397:22 | Address | &:r1397_1 | -| ir.cpp:1397:5:1397:22 | Arg(this) | this:r1397_1 | -| ir.cpp:1397:5:1397:22 | Arg(this) | this:r1397_1 | -| ir.cpp:1397:5:1397:22 | CallTarget | func:r1397_3 | -| ir.cpp:1397:5:1397:22 | ChiPartial | partial:m1397_5 | -| ir.cpp:1397:5:1397:22 | ChiPartial | partial:m1397_7 | -| ir.cpp:1397:5:1397:22 | ChiPartial | partial:m1397_14 | -| ir.cpp:1397:5:1397:22 | ChiTotal | total:m1396_17 | -| ir.cpp:1397:5:1397:22 | ChiTotal | total:m1397_2 | -| ir.cpp:1397:5:1397:22 | ChiTotal | total:m1397_8 | -| ir.cpp:1397:5:1397:22 | SideEffect | m1397_8 | -| ir.cpp:1397:5:1397:22 | SideEffect | ~m1396_17 | -| ir.cpp:1397:24:1397:29 | CallTarget | func:r1397_9 | -| ir.cpp:1397:24:1397:29 | ChiPartial | partial:m1397_11 | -| ir.cpp:1397:24:1397:29 | ChiTotal | total:m1397_6 | -| ir.cpp:1397:24:1397:29 | SideEffect | ~m1397_6 | -| ir.cpp:1398:5:1398:33 | CallTarget | func:r1398_2 | -| ir.cpp:1398:5:1398:33 | ChiPartial | partial:m1398_4 | -| ir.cpp:1398:5:1398:33 | ChiTotal | total:m1397_12 | -| ir.cpp:1398:5:1398:33 | SideEffect | ~m1397_12 | -| ir.cpp:1398:5:1398:33 | StoreValue | r1398_3 | -| ir.cpp:1398:5:1398:35 | Address | &:r1398_1 | -| ir.cpp:1398:5:1398:35 | Address | &:r1398_1 | -| ir.cpp:1398:5:1398:35 | Address | &:r1398_1 | -| ir.cpp:1398:5:1398:35 | Arg(this) | this:r1398_1 | -| ir.cpp:1398:5:1398:35 | ChiPartial | partial:m1398_12 | -| ir.cpp:1398:5:1398:35 | ChiTotal | total:m1398_6 | -| ir.cpp:1398:5:1398:35 | SideEffect | m1398_6 | -| ir.cpp:1398:37:1398:42 | CallTarget | func:r1398_7 | -| ir.cpp:1398:37:1398:42 | ChiPartial | partial:m1398_9 | -| ir.cpp:1398:37:1398:42 | ChiTotal | total:m1398_5 | -| ir.cpp:1398:37:1398:42 | SideEffect | ~m1398_5 | -| ir.cpp:1399:5:1399:38 | CallTarget | func:r1399_2 | -| ir.cpp:1399:5:1399:38 | ChiPartial | partial:m1399_4 | -| ir.cpp:1399:5:1399:38 | ChiTotal | total:m1398_10 | -| ir.cpp:1399:5:1399:38 | SideEffect | ~m1398_10 | -| ir.cpp:1399:5:1399:38 | StoreValue | r1399_3 | -| ir.cpp:1399:5:1399:40 | Address | &:r1399_1 | -| ir.cpp:1401:9:1401:9 | Address | &:r1401_1 | -| ir.cpp:1401:13:1401:41 | CallTarget | func:r1401_3 | -| ir.cpp:1401:13:1401:41 | ChiPartial | partial:m1401_5 | -| ir.cpp:1401:13:1401:41 | ChiTotal | total:m1399_5 | -| ir.cpp:1401:13:1401:41 | SideEffect | ~m1399_5 | -| ir.cpp:1401:13:1401:41 | StoreValue | r1401_4 | -| ir.cpp:1401:13:1401:43 | Address | &:r1401_2 | -| ir.cpp:1401:13:1401:43 | Unary | r1401_2 | -| ir.cpp:1401:45:1401:45 | Address | &:r1401_8 | -| ir.cpp:1401:45:1401:45 | Load | ~m1401_7 | -| ir.cpp:1401:45:1401:45 | StoreValue | r1401_9 | -| ir.cpp:1404:6:1404:20 | ChiPartial | partial:m1404_3 | -| ir.cpp:1404:6:1404:20 | ChiTotal | total:m1404_2 | -| ir.cpp:1404:6:1404:20 | SideEffect | ~m1413_4 | -| ir.cpp:1405:11:1405:11 | Address | &:r1405_1 | -| ir.cpp:1405:15:1405:32 | CallTarget | func:r1405_2 | -| ir.cpp:1405:15:1405:32 | ChiPartial | partial:m1405_4 | -| ir.cpp:1405:15:1405:32 | ChiTotal | total:m1404_4 | -| ir.cpp:1405:15:1405:32 | SideEffect | ~m1404_4 | -| ir.cpp:1405:15:1405:32 | StoreValue | r1405_3 | -| ir.cpp:1406:18:1406:19 | Address | &:r1406_1 | -| ir.cpp:1406:23:1406:40 | CallTarget | func:r1406_3 | -| ir.cpp:1406:23:1406:40 | ChiPartial | partial:m1406_5 | -| ir.cpp:1406:23:1406:40 | ChiTotal | total:m1405_5 | -| ir.cpp:1406:23:1406:40 | SideEffect | ~m1405_5 | -| ir.cpp:1406:23:1406:40 | StoreValue | r1406_4 | -| ir.cpp:1406:23:1406:42 | Address | &:r1406_2 | -| ir.cpp:1406:23:1406:42 | StoreValue | r1406_9 | -| ir.cpp:1406:23:1406:42 | Unary | r1406_2 | -| ir.cpp:1406:23:1406:42 | Unary | r1406_8 | -| ir.cpp:1408:5:1408:13 | CallTarget | func:r1408_1 | -| ir.cpp:1408:5:1408:13 | ChiPartial | partial:m1408_6 | -| ir.cpp:1408:5:1408:13 | ChiTotal | total:m1406_6 | -| ir.cpp:1408:5:1408:13 | SideEffect | ~m1406_6 | -| ir.cpp:1408:15:1408:15 | Address | &:r1408_4 | -| ir.cpp:1408:15:1408:15 | Arg(0) | 0:r1408_4 | -| ir.cpp:1408:15:1408:15 | SideEffect | ~m1405_6 | -| ir.cpp:1408:15:1408:15 | Unary | r1408_2 | -| ir.cpp:1408:15:1408:15 | Unary | r1408_3 | -| ir.cpp:1409:5:1409:15 | CallTarget | func:r1409_1 | -| ir.cpp:1409:5:1409:15 | ChiPartial | partial:m1409_5 | -| ir.cpp:1409:5:1409:15 | ChiTotal | total:m1408_7 | -| ir.cpp:1409:5:1409:15 | SideEffect | ~m1408_7 | -| ir.cpp:1409:17:1409:17 | Address | &:r1409_2 | -| ir.cpp:1409:17:1409:17 | Arg(0) | 0:r1409_3 | -| ir.cpp:1409:17:1409:17 | Load | m1405_6 | -| ir.cpp:1411:9:1411:9 | Address | &:r1411_1 | -| ir.cpp:1411:13:1411:30 | Address | &:r1411_6 | -| ir.cpp:1411:13:1411:30 | CallTarget | func:r1411_2 | -| ir.cpp:1411:13:1411:30 | ChiPartial | partial:m1411_4 | -| ir.cpp:1411:13:1411:30 | ChiTotal | total:m1409_6 | -| ir.cpp:1411:13:1411:30 | SideEffect | ~m1409_6 | -| ir.cpp:1411:13:1411:30 | StoreValue | r1411_3 | -| ir.cpp:1411:13:1411:30 | Unary | r1411_6 | -| ir.cpp:1411:34:1411:34 | Address | &:r1411_8 | -| ir.cpp:1411:34:1411:34 | Load | ~m1411_7 | -| ir.cpp:1411:34:1411:34 | StoreValue | r1411_9 | -| ir.cpp:1413:5:1413:27 | CallTarget | func:r1413_1 | -| ir.cpp:1413:5:1413:27 | ChiPartial | partial:m1413_3 | -| ir.cpp:1413:5:1413:27 | ChiTotal | total:m1411_5 | -| ir.cpp:1413:5:1413:27 | SideEffect | ~m1411_5 | -| ir.cpp:1421:6:1421:29 | ChiPartial | partial:m1421_3 | -| ir.cpp:1421:6:1421:29 | ChiTotal | total:m1421_2 | -| ir.cpp:1421:6:1421:29 | SideEffect | ~m1426_5 | -| ir.cpp:1422:16:1422:17 | Address | &:r1422_1 | -| ir.cpp:1422:21:1422:46 | Address | &:r1422_6 | -| ir.cpp:1422:21:1422:46 | CallTarget | func:r1422_2 | -| ir.cpp:1422:21:1422:46 | ChiPartial | partial:m1422_4 | -| ir.cpp:1422:21:1422:46 | ChiTotal | total:m1421_4 | -| ir.cpp:1422:21:1422:46 | SideEffect | ~m1421_4 | -| ir.cpp:1422:21:1422:46 | StoreValue | r1422_3 | -| ir.cpp:1422:21:1422:46 | Unary | r1422_6 | -| ir.cpp:1422:21:1422:50 | StoreValue | r1422_12 | -| ir.cpp:1422:21:1422:50 | Unary | r1422_10 | -| ir.cpp:1422:21:1422:50 | Unary | r1422_11 | -| ir.cpp:1422:50:1422:50 | Address | &:r1422_8 | -| ir.cpp:1422:50:1422:50 | Load | ~m1422_7 | -| ir.cpp:1422:50:1422:50 | Unary | r1422_9 | -| ir.cpp:1423:9:1423:9 | Address | &:r1423_1 | -| ir.cpp:1423:13:1423:38 | Address | &:r1423_6 | -| ir.cpp:1423:13:1423:38 | CallTarget | func:r1423_2 | -| ir.cpp:1423:13:1423:38 | ChiPartial | partial:m1423_4 | -| ir.cpp:1423:13:1423:38 | ChiTotal | total:m1422_5 | -| ir.cpp:1423:13:1423:38 | SideEffect | ~m1422_5 | -| ir.cpp:1423:13:1423:38 | StoreValue | r1423_3 | -| ir.cpp:1423:13:1423:38 | Unary | r1423_6 | -| ir.cpp:1423:13:1423:42 | Load | ~m1423_5 | -| ir.cpp:1423:13:1423:42 | StoreValue | r1423_10 | -| ir.cpp:1423:42:1423:42 | Address | &:r1423_8 | -| ir.cpp:1423:42:1423:42 | Address | &:r1423_9 | -| ir.cpp:1423:42:1423:42 | Load | ~m1423_7 | -| ir.cpp:1425:18:1425:19 | Address | &:r1425_1 | -| ir.cpp:1425:23:1425:48 | Address | &:r1425_6 | -| ir.cpp:1425:23:1425:48 | CallTarget | func:r1425_2 | -| ir.cpp:1425:23:1425:48 | ChiPartial | partial:m1425_4 | -| ir.cpp:1425:23:1425:48 | ChiTotal | total:m1423_5 | -| ir.cpp:1425:23:1425:48 | SideEffect | ~m1423_5 | -| ir.cpp:1425:23:1425:48 | StoreValue | r1425_3 | -| ir.cpp:1425:23:1425:48 | Unary | r1425_6 | -| ir.cpp:1425:23:1425:52 | Left | r1425_9 | -| ir.cpp:1425:23:1425:55 | StoreValue | r1425_13 | -| ir.cpp:1425:23:1425:55 | Unary | r1425_11 | -| ir.cpp:1425:23:1425:55 | Unary | r1425_12 | -| ir.cpp:1425:52:1425:52 | Unary | r1425_8 | -| ir.cpp:1425:54:1425:54 | Right | r1425_10 | -| ir.cpp:1426:11:1426:11 | Address | &:r1426_1 | -| ir.cpp:1426:15:1426:40 | Address | &:r1426_6 | -| ir.cpp:1426:15:1426:40 | CallTarget | func:r1426_2 | -| ir.cpp:1426:15:1426:40 | ChiPartial | partial:m1426_4 | -| ir.cpp:1426:15:1426:40 | ChiTotal | total:m1425_5 | -| ir.cpp:1426:15:1426:40 | SideEffect | ~m1425_5 | -| ir.cpp:1426:15:1426:40 | StoreValue | r1426_3 | -| ir.cpp:1426:15:1426:40 | Unary | r1426_6 | -| ir.cpp:1426:15:1426:44 | Left | r1426_9 | -| ir.cpp:1426:15:1426:47 | Address | &:r1426_11 | -| ir.cpp:1426:15:1426:47 | Load | ~m1426_7 | -| ir.cpp:1426:15:1426:47 | StoreValue | r1426_12 | -| ir.cpp:1426:44:1426:44 | Unary | r1426_8 | -| ir.cpp:1426:46:1426:46 | Right | r1426_10 | -| ir.cpp:1443:6:1443:24 | ChiPartial | partial:m1443_3 | -| ir.cpp:1443:6:1443:24 | ChiTotal | total:m1443_2 | -| ir.cpp:1443:6:1443:24 | SideEffect | ~m1447_10 | -| ir.cpp:1444:14:1444:14 | Address | &:r1444_1 | -| ir.cpp:1444:18:1444:40 | CallTarget | func:r1444_2 | -| ir.cpp:1444:18:1444:40 | ChiPartial | partial:m1444_4 | -| ir.cpp:1444:18:1444:40 | ChiTotal | total:m1443_4 | -| ir.cpp:1444:18:1444:40 | SideEffect | ~m1443_4 | -| ir.cpp:1444:18:1444:40 | StoreValue | r1444_3 | -| ir.cpp:1445:5:1445:5 | Address | &:r1445_10 | -| ir.cpp:1445:9:1445:36 | Address | &:r1445_1 | -| ir.cpp:1445:9:1445:36 | Address | &:r1445_8 | -| ir.cpp:1445:9:1445:36 | Load | ~m1445_6 | -| ir.cpp:1445:9:1445:36 | StoreValue | r1445_9 | -| ir.cpp:1445:9:1445:36 | Unary | r1445_1 | -| ir.cpp:1445:9:1445:36 | Unary | r1445_7 | -| ir.cpp:1445:10:1445:33 | CallTarget | func:r1445_2 | -| ir.cpp:1445:10:1445:33 | ChiPartial | partial:m1445_4 | -| ir.cpp:1445:10:1445:33 | ChiTotal | total:m1444_5 | -| ir.cpp:1445:10:1445:33 | SideEffect | ~m1444_5 | -| ir.cpp:1445:10:1445:33 | StoreValue | r1445_3 | -| ir.cpp:1446:9:1446:9 | Address | &:r1446_1 | -| ir.cpp:1446:13:1446:36 | CallTarget | func:r1446_2 | -| ir.cpp:1446:13:1446:36 | ChiPartial | partial:m1446_4 | -| ir.cpp:1446:13:1446:36 | ChiTotal | total:m1445_5 | -| ir.cpp:1446:13:1446:36 | SideEffect | ~m1445_5 | -| ir.cpp:1446:13:1446:36 | StoreValue | r1446_3 | -| ir.cpp:1446:40:1446:40 | Address | &:r1446_7 | -| ir.cpp:1446:40:1446:40 | Load | ~m1446_6 | -| ir.cpp:1446:40:1446:40 | StoreValue | r1446_8 | -| ir.cpp:1447:11:1447:11 | Address | &:r1447_1 | -| ir.cpp:1447:16:1447:39 | CallTarget | func:r1447_2 | -| ir.cpp:1447:16:1447:39 | ChiPartial | partial:m1447_4 | -| ir.cpp:1447:16:1447:39 | ChiTotal | total:m1446_5 | -| ir.cpp:1447:16:1447:39 | SideEffect | ~m1446_5 | -| ir.cpp:1447:16:1447:39 | StoreValue | r1447_3 | -| ir.cpp:1447:44:1447:44 | Arg(this) | this:r0_11 | -| ir.cpp:1447:44:1447:44 | CallTarget | func:r1447_7 | -| ir.cpp:1447:44:1447:44 | ChiPartial | partial:m1447_9 | -| ir.cpp:1447:44:1447:44 | ChiTotal | total:m1447_5 | -| ir.cpp:1447:44:1447:44 | SideEffect | ~m1447_5 | -| ir.cpp:1447:44:1447:44 | StoreValue | r1447_8 | -| ir.cpp:1451:3:1451:21 | Address | &:r1451_5 | -| ir.cpp:1451:3:1451:21 | Address | &:r1451_5 | -| ir.cpp:1451:3:1451:21 | Address | &:r1451_7 | -| ir.cpp:1451:3:1451:21 | Address | &:r1451_7 | -| ir.cpp:1451:3:1451:21 | ChiPartial | partial:m1451_3 | -| ir.cpp:1451:3:1451:21 | ChiTotal | total:m1451_2 | -| ir.cpp:1451:3:1451:21 | Load | m1451_6 | -| ir.cpp:1451:3:1451:21 | SideEffect | m1451_3 | -| ir.cpp:1451:3:1451:21 | SideEffect | m1451_8 | -| ir.cpp:1457:3:1457:20 | Address | &:r1457_5 | -| ir.cpp:1457:3:1457:20 | Address | &:r1457_5 | -| ir.cpp:1457:3:1457:20 | Address | &:r1457_7 | -| ir.cpp:1457:3:1457:20 | Address | &:r1457_7 | -| ir.cpp:1457:3:1457:20 | ChiPartial | partial:m1457_3 | -| ir.cpp:1457:3:1457:20 | ChiTotal | total:m1457_2 | -| ir.cpp:1457:3:1457:20 | Load | m1457_6 | -| ir.cpp:1457:3:1457:20 | SideEffect | m1457_3 | -| ir.cpp:1457:3:1457:20 | SideEffect | m1458_6 | -| ir.cpp:1457:3:1457:20 | Unary | m1457_6 | -| ir.cpp:1457:26:1457:30 | Address | &:r1457_9 | -| ir.cpp:1457:26:1457:30 | ChiPartial | partial:m1457_11 | -| ir.cpp:1457:26:1457:30 | ChiTotal | total:m1457_8 | -| ir.cpp:1457:26:1457:30 | StoreValue | r1457_10 | -| ir.cpp:1458:5:1458:5 | Address | &:r1458_2 | -| ir.cpp:1458:5:1458:5 | Address | &:r1458_4 | -| ir.cpp:1458:5:1458:5 | Load | m1457_6 | -| ir.cpp:1458:5:1458:5 | Unary | r1458_3 | -| ir.cpp:1458:5:1458:9 | ChiPartial | partial:m1458_5 | -| ir.cpp:1458:5:1458:9 | ChiTotal | total:m1457_12 | -| ir.cpp:1458:9:1458:9 | StoreValue | r1458_1 | -| ir.cpp:1462:6:1462:29 | ChiPartial | partial:m1462_3 | -| ir.cpp:1462:6:1462:29 | ChiTotal | total:m1462_2 | -| ir.cpp:1462:6:1462:29 | SideEffect | m1462_3 | -| ir.cpp:1463:9:1463:10 | Address | &:r1463_1 | -| ir.cpp:1463:9:1463:10 | Left | r1463_1 | -| ir.cpp:1463:9:1463:10 | Left | r1463_1 | -| ir.cpp:1463:16:1463:22 | Address | &:r1463_4 | -| ir.cpp:1463:16:1463:22 | Address | &:r1463_9 | -| ir.cpp:1463:16:1463:22 | Right | r1463_3 | -| ir.cpp:1463:16:1463:22 | Right | r1463_8 | -| ir.cpp:1463:18:1463:18 | ChiPartial | partial:m1463_6 | -| ir.cpp:1463:18:1463:18 | ChiTotal | total:m1463_2 | -| ir.cpp:1463:18:1463:18 | StoreValue | r1463_5 | -| ir.cpp:1463:21:1463:21 | ChiPartial | partial:m1463_11 | -| ir.cpp:1463:21:1463:21 | ChiTotal | total:m1463_7 | -| ir.cpp:1463:21:1463:21 | StoreValue | r1463_10 | -| ir.cpp:1466:15:1466:15 | Address | &:r1466_1 | -| ir.cpp:1466:16:1466:16 | Address | &:r1466_5 | -| ir.cpp:1466:20:1466:20 | Address | &:r1466_6 | -| ir.cpp:1466:26:1466:27 | StoreValue | r1466_3 | -| ir.cpp:1466:26:1466:27 | Unary | r1466_2 | -| ir.cpp:1467:9:1467:10 | Address | &:r1467_2 | -| ir.cpp:1467:9:1467:10 | Address | &:r1467_3 | -| ir.cpp:1467:9:1467:10 | Load | m0_14 | -| ir.cpp:1467:9:1467:14 | ChiPartial | partial:m1467_4 | -| ir.cpp:1467:9:1467:14 | ChiTotal | total:m1463_12 | -| ir.cpp:1467:14:1467:14 | StoreValue | r1467_1 | -| ir.cpp:1468:14:1468:16 | Address | &:r1468_1 | -| ir.cpp:1468:20:1468:21 | Address | &:r1468_2 | -| ir.cpp:1468:20:1468:21 | Load | m0_14 | -| ir.cpp:1468:20:1468:21 | StoreValue | r1468_4 | -| ir.cpp:1468:20:1468:21 | Unary | r1468_3 | -| ir.cpp:1469:13:1469:13 | Address | &:r1469_1 | -| ir.cpp:1469:17:1469:18 | Address | &:r1469_2 | -| ir.cpp:1469:17:1469:18 | Address | &:r1469_3 | -| ir.cpp:1469:17:1469:18 | Load | m0_14 | -| ir.cpp:1469:17:1469:18 | Load | m1467_4 | -| ir.cpp:1469:17:1469:18 | StoreValue | r1469_4 | -| ir.cpp:1473:15:1473:36 | Address | &:r1473_1 | -| ir.cpp:1473:40:1473:41 | StoreValue | r1473_3 | -| ir.cpp:1473:40:1473:41 | Unary | r1473_2 | -| ir.cpp:1474:15:1474:16 | Address | &:r1474_1 | -| ir.cpp:1474:20:1474:41 | Address | &:r1474_2 | -| ir.cpp:1474:20:1474:41 | Left | r1474_5 | -| ir.cpp:1474:20:1474:41 | Load | m1473_4 | -| ir.cpp:1474:20:1474:41 | Unary | r1474_3 | -| ir.cpp:1474:20:1474:41 | Unary | r1474_4 | -| ir.cpp:1474:20:1474:44 | StoreValue | r1474_8 | -| ir.cpp:1474:20:1474:44 | Unary | r1474_7 | -| ir.cpp:1474:43:1474:43 | Right | r1474_6 | -| ir.cpp:1475:15:1475:16 | Address | &:r1475_1 | -| ir.cpp:1475:20:1475:41 | Address | &:r1475_2 | -| ir.cpp:1475:20:1475:41 | Left | r1475_5 | -| ir.cpp:1475:20:1475:41 | Load | m1473_4 | -| ir.cpp:1475:20:1475:41 | Unary | r1475_3 | -| ir.cpp:1475:20:1475:41 | Unary | r1475_4 | -| ir.cpp:1475:20:1475:44 | StoreValue | r1475_8 | -| ir.cpp:1475:20:1475:44 | Unary | r1475_7 | -| ir.cpp:1475:43:1475:43 | Right | r1475_6 | -| ir.cpp:1476:9:1476:10 | Address | &:r1476_2 | -| ir.cpp:1476:9:1476:10 | Address | &:r1476_4 | -| ir.cpp:1476:9:1476:10 | Load | m1475_9 | -| ir.cpp:1476:9:1476:10 | Unary | r1476_3 | -| ir.cpp:1476:9:1476:14 | ChiPartial | partial:m1476_5 | -| ir.cpp:1476:9:1476:14 | ChiTotal | total:m1467_5 | -| ir.cpp:1476:14:1476:14 | StoreValue | r1476_1 | -| ir.cpp:1477:14:1477:16 | Address | &:r1477_1 | -| ir.cpp:1477:20:1477:21 | Address | &:r1477_2 | -| ir.cpp:1477:20:1477:21 | Load | m1475_9 | -| ir.cpp:1477:20:1477:21 | StoreValue | r1477_5 | -| ir.cpp:1477:20:1477:21 | Unary | r1477_3 | -| ir.cpp:1477:20:1477:21 | Unary | r1477_4 | -| ir.cpp:1478:13:1478:13 | Address | &:r1478_1 | -| ir.cpp:1478:17:1478:18 | Address | &:r1478_2 | -| ir.cpp:1478:17:1478:18 | Address | &:r1478_3 | -| ir.cpp:1478:17:1478:18 | Load | m1475_9 | -| ir.cpp:1478:17:1478:18 | Load | m1476_5 | -| ir.cpp:1478:17:1478:18 | StoreValue | r1478_4 | -| ir.cpp:1482:8:1482:8 | Address | &:r1482_5 | -| ir.cpp:1482:8:1482:8 | Address | &:r1482_5 | -| ir.cpp:1482:8:1482:8 | Address | &:r1482_7 | -| ir.cpp:1482:8:1482:8 | Address | &:r1482_7 | -| ir.cpp:1482:8:1482:8 | ChiPartial | partial:m1482_3 | -| ir.cpp:1482:8:1482:8 | ChiTotal | total:m1482_2 | -| ir.cpp:1482:8:1482:8 | Load | m1482_6 | -| ir.cpp:1482:8:1482:8 | SideEffect | m1482_3 | -| ir.cpp:1482:8:1482:8 | SideEffect | m1482_8 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_5 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_5 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_5 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_5 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_7 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_7 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_7 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_7 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_9 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_10 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_13 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_17 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_18 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_21 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_25 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_26 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_29 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_33 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_34 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_37 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_41 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_42 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_45 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_49 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_50 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_53 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_57 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_58 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_61 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_65 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_66 | -| ir.cpp:1486:8:1486:8 | Address | &:r1486_69 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_3 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_3 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_15 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_23 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_31 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_39 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_47 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_55 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_63 | -| ir.cpp:1486:8:1486:8 | ChiPartial | partial:m1486_71 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_2 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_2 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_8 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_16 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_24 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_32 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_40 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_48 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_56 | -| ir.cpp:1486:8:1486:8 | ChiTotal | total:m1486_64 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m0_2 | -| ir.cpp:1486:8:1486:8 | Load | m1486_6 | -| ir.cpp:1486:8:1486:8 | Load | m1486_6 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | Load | ~m0_4 | -| ir.cpp:1486:8:1486:8 | SideEffect | m1486_3 | -| ir.cpp:1486:8:1486:8 | SideEffect | m1486_3 | -| ir.cpp:1486:8:1486:8 | SideEffect | m1486_8 | -| ir.cpp:1486:8:1486:8 | SideEffect | m1486_72 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_14 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_22 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_30 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_38 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_46 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_54 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_62 | -| ir.cpp:1486:8:1486:8 | StoreValue | r1486_70 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | m1486_6 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_11 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_12 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_19 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_20 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_27 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_28 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_35 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_36 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_43 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_44 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_51 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_52 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_59 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_60 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_67 | -| ir.cpp:1486:8:1486:8 | Unary | r1486_68 | -| ir.cpp:1499:6:1499:35 | ChiPartial | partial:m1499_3 | -| ir.cpp:1499:6:1499:35 | ChiTotal | total:m1499_2 | -| ir.cpp:1499:6:1499:35 | SideEffect | ~m1525_7 | -| ir.cpp:1500:39:1500:39 | Address | &:r1500_1 | -| ir.cpp:1500:39:1500:39 | Address | &:r1500_1 | -| ir.cpp:1500:39:1500:39 | Arg(this) | this:r1500_1 | -| ir.cpp:1500:39:1500:39 | CallTarget | func:r1500_3 | -| ir.cpp:1500:39:1500:39 | ChiPartial | partial:m1500_5 | -| ir.cpp:1500:39:1500:39 | ChiPartial | partial:m1500_7 | -| ir.cpp:1500:39:1500:39 | ChiTotal | total:m1499_4 | -| ir.cpp:1500:39:1500:39 | ChiTotal | total:m1500_2 | -| ir.cpp:1500:39:1500:39 | SideEffect | ~m1499_4 | -| ir.cpp:1503:14:1503:14 | Address | &:r1503_1 | -| ir.cpp:1503:15:1503:15 | Address | &:r1503_5 | -| ir.cpp:1503:18:1503:18 | Address | &:r1503_9 | -| ir.cpp:1503:21:1503:21 | Address | &:r1503_13 | -| ir.cpp:1503:24:1503:24 | Address | &:r1503_17 | -| ir.cpp:1503:27:1503:27 | Address | &:r1503_23 | -| ir.cpp:1503:30:1503:30 | Address | &:r1503_27 | -| ir.cpp:1503:34:1503:34 | Address | &:r1503_31 | -| ir.cpp:1503:41:1503:41 | Address | &:r1503_37 | -| ir.cpp:1503:46:1503:46 | Address | &:r1503_2 | -| ir.cpp:1503:46:1503:46 | Load | m1500_8 | -| ir.cpp:1503:46:1503:46 | StoreValue | r1503_3 | -| ir.cpp:1503:47:1503:47 | Address | &:r1503_19 | -| ir.cpp:1503:47:1503:47 | Address | &:r1503_33 | -| ir.cpp:1503:47:1503:47 | Load | ~m1503_4 | -| ir.cpp:1503:47:1503:47 | Load | ~m1503_4 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_7 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_11 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_15 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_21 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_25 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_29 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_35 | -| ir.cpp:1503:47:1503:47 | StoreValue | r1503_39 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_6 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_10 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_14 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_18 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_20 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_24 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_28 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_32 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_34 | -| ir.cpp:1503:47:1503:47 | Unary | r1503_38 | -| ir.cpp:1504:9:1504:9 | Address | &:r1504_2 | -| ir.cpp:1504:9:1504:9 | Address | &:r1504_3 | -| ir.cpp:1504:9:1504:9 | Load | m1503_12 | -| ir.cpp:1504:9:1504:15 | ChiPartial | partial:m1504_4 | -| ir.cpp:1504:9:1504:15 | ChiTotal | total:m1503_4 | -| ir.cpp:1504:13:1504:15 | StoreValue | r1504_1 | -| ir.cpp:1505:17:1505:18 | Address | &:r1505_1 | -| ir.cpp:1505:22:1505:22 | Address | &:r1505_2 | -| ir.cpp:1505:22:1505:22 | Load | m1503_12 | -| ir.cpp:1505:22:1505:22 | StoreValue | r1505_4 | -| ir.cpp:1505:22:1505:22 | Unary | r1505_3 | -| ir.cpp:1506:13:1506:13 | Address | &:r1506_1 | -| ir.cpp:1506:17:1506:17 | Address | &:r1506_2 | -| ir.cpp:1506:17:1506:17 | Address | &:r1506_3 | -| ir.cpp:1506:17:1506:17 | Load | m1503_8 | -| ir.cpp:1506:17:1506:17 | Load | ~m1503_4 | -| ir.cpp:1506:17:1506:17 | StoreValue | r1506_4 | -| ir.cpp:1507:9:1507:9 | Address | &:r1507_2 | -| ir.cpp:1507:9:1507:9 | Address | &:r1507_3 | -| ir.cpp:1507:9:1507:9 | Load | m1503_22 | -| ir.cpp:1507:9:1507:13 | ChiPartial | partial:m1507_4 | -| ir.cpp:1507:9:1507:13 | ChiTotal | total:m1500_6 | -| ir.cpp:1507:13:1507:13 | StoreValue | r1507_1 | -| ir.cpp:1508:9:1508:10 | Address | &:r1508_5 | -| ir.cpp:1508:9:1508:14 | ChiPartial | partial:m1508_6 | -| ir.cpp:1508:9:1508:14 | ChiTotal | total:m1507_5 | -| ir.cpp:1508:10:1508:10 | Address | &:r1508_2 | -| ir.cpp:1508:10:1508:10 | Address | &:r1508_3 | -| ir.cpp:1508:10:1508:10 | Load | m1503_26 | -| ir.cpp:1508:10:1508:10 | Load | ~m1503_4 | -| ir.cpp:1508:10:1508:10 | Unary | r1508_4 | -| ir.cpp:1508:14:1508:14 | StoreValue | r1508_1 | -| ir.cpp:1509:14:1509:15 | Address | &:r1509_1 | -| ir.cpp:1509:19:1509:19 | Address | &:r1509_2 | -| ir.cpp:1509:19:1509:19 | Load | m1503_22 | -| ir.cpp:1509:19:1509:19 | StoreValue | r1509_4 | -| ir.cpp:1509:19:1509:19 | Unary | r1509_3 | -| ir.cpp:1510:14:1510:15 | Address | &:r1510_1 | -| ir.cpp:1510:19:1510:20 | StoreValue | r1510_4 | -| ir.cpp:1510:20:1510:20 | Address | &:r1510_2 | -| ir.cpp:1510:20:1510:20 | Load | m1503_22 | -| ir.cpp:1510:20:1510:20 | Unary | r1510_3 | -| ir.cpp:1511:13:1511:13 | Address | &:r1511_1 | -| ir.cpp:1511:17:1511:17 | Address | &:r1511_2 | -| ir.cpp:1511:17:1511:17 | Address | &:r1511_3 | -| ir.cpp:1511:17:1511:17 | Load | m1503_22 | -| ir.cpp:1511:17:1511:17 | Load | ~m1508_7 | -| ir.cpp:1511:17:1511:17 | StoreValue | r1511_4 | -| ir.cpp:1515:14:1515:35 | Address | &:r1515_1 | -| ir.cpp:1515:39:1515:39 | Address | &:r1515_2 | -| ir.cpp:1515:39:1515:39 | Load | m1500_8 | -| ir.cpp:1515:39:1515:39 | StoreValue | r1515_3 | -| ir.cpp:1516:15:1516:15 | Address | &:r1516_1 | -| ir.cpp:1516:19:1516:40 | Unary | r1516_2 | -| ir.cpp:1516:19:1516:42 | StoreValue | r1516_4 | -| ir.cpp:1516:42:1516:42 | Unary | r1516_3 | -| ir.cpp:1517:15:1517:15 | Address | &:r1517_1 | -| ir.cpp:1517:19:1517:40 | Unary | r1517_2 | -| ir.cpp:1517:19:1517:42 | StoreValue | r1517_4 | -| ir.cpp:1517:42:1517:42 | Unary | r1517_3 | +| ir.cpp:1307:5:1307:5 | Address | &:r1307_10 | +| ir.cpp:1307:9:1307:9 | Address | &:r1307_1 | +| ir.cpp:1307:9:1307:9 | Condition | r1307_4 | +| ir.cpp:1307:9:1307:9 | Left | r1307_2 | +| ir.cpp:1307:9:1307:9 | Load | m1301_10 | +| ir.cpp:1307:9:1307:9 | Right | r1307_3 | +| ir.cpp:1307:9:1307:9 | StoreValue | r1307_2 | +| ir.cpp:1307:9:1307:14 | Address | &:r1307_7 | +| ir.cpp:1307:9:1307:14 | Address | &:r1307_12 | +| ir.cpp:1307:9:1307:14 | Address | &:r1307_17 | +| ir.cpp:1307:9:1307:14 | Load | m1307_6 | +| ir.cpp:1307:9:1307:14 | Phi | from 14:m1307_13 | +| ir.cpp:1307:9:1307:14 | Phi | from 15:m1307_18 | +| ir.cpp:1307:9:1307:14 | StoreValue | r1307_9 | +| ir.cpp:1307:9:1307:14 | Unary | r1307_8 | +| ir.cpp:1307:14:1307:14 | Address | &:r1307_14 | +| ir.cpp:1307:14:1307:14 | Load | m1301_8 | +| ir.cpp:1307:14:1307:14 | StoreValue | r1307_16 | +| ir.cpp:1307:14:1307:14 | Unary | r1307_15 | +| ir.cpp:1308:5:1308:5 | Address | &:r1308_10 | +| ir.cpp:1308:9:1308:9 | Address | &:r1308_1 | +| ir.cpp:1308:9:1308:9 | Condition | r1308_4 | +| ir.cpp:1308:9:1308:9 | Left | r1308_2 | +| ir.cpp:1308:9:1308:9 | Load | m1301_10 | +| ir.cpp:1308:9:1308:9 | Right | r1308_3 | +| ir.cpp:1308:9:1308:9 | StoreValue | r1308_2 | +| ir.cpp:1308:9:1308:14 | Address | &:r1308_7 | +| ir.cpp:1308:9:1308:14 | Address | &:r1308_12 | +| ir.cpp:1308:9:1308:14 | Address | &:r1308_16 | +| ir.cpp:1308:9:1308:14 | Load | m1308_6 | +| ir.cpp:1308:9:1308:14 | Phi | from 17:m1308_13 | +| ir.cpp:1308:9:1308:14 | Phi | from 18:m1308_17 | +| ir.cpp:1308:9:1308:14 | StoreValue | r1308_9 | +| ir.cpp:1308:9:1308:14 | Unary | r1308_8 | +| ir.cpp:1308:14:1308:14 | Address | &:r1308_14 | +| ir.cpp:1308:14:1308:14 | Load | m1301_10 | +| ir.cpp:1308:14:1308:14 | StoreValue | r1308_15 | +| ir.cpp:1310:5:1310:5 | Address | &:r1310_9 | +| ir.cpp:1310:9:1310:26 | Address | &:r1310_7 | +| ir.cpp:1310:9:1310:26 | Address | &:r1310_11 | +| ir.cpp:1310:9:1310:26 | Address | &:r1310_33 | +| ir.cpp:1310:9:1310:26 | Load | m1310_6 | +| ir.cpp:1310:9:1310:26 | Phi | from 20:m1310_12 | +| ir.cpp:1310:9:1310:26 | Phi | from 26:m1310_34 | +| ir.cpp:1310:9:1310:26 | StoreValue | r1310_8 | +| ir.cpp:1310:10:1310:10 | Address | &:r1310_1 | +| ir.cpp:1310:10:1310:10 | Condition | r1310_4 | +| ir.cpp:1310:10:1310:10 | Left | r1310_2 | +| ir.cpp:1310:10:1310:10 | Load | m1301_8 | +| ir.cpp:1310:10:1310:10 | Right | r1310_3 | +| ir.cpp:1310:10:1310:20 | Address | &:r1310_13 | +| ir.cpp:1310:10:1310:20 | Address | &:r1310_17 | +| ir.cpp:1310:10:1310:20 | Address | &:r1310_20 | +| ir.cpp:1310:10:1310:20 | Condition | r1310_18 | +| ir.cpp:1310:10:1310:20 | Load | m1310_16 | +| ir.cpp:1310:10:1310:20 | Phi | from 21:m1310_15 | +| ir.cpp:1310:10:1310:20 | Phi | from 23:m1310_22 | +| ir.cpp:1310:10:1310:20 | StoreValue | r1310_14 | +| ir.cpp:1310:10:1310:20 | StoreValue | r1310_18 | +| ir.cpp:1310:10:1310:20 | StoreValue | r1310_21 | +| ir.cpp:1310:15:1310:15 | Address | &:r1310_23 | +| ir.cpp:1310:15:1310:15 | Condition | r1310_24 | +| ir.cpp:1310:15:1310:15 | Load | m1301_6 | +| ir.cpp:1310:20:1310:20 | Address | &:r1310_26 | +| ir.cpp:1310:20:1310:20 | Condition | r1310_29 | +| ir.cpp:1310:20:1310:20 | Left | r1310_27 | +| ir.cpp:1310:20:1310:20 | Load | m1301_10 | +| ir.cpp:1310:20:1310:20 | Right | r1310_28 | +| ir.cpp:1310:26:1310:26 | Address | &:r1310_31 | +| ir.cpp:1310:26:1310:26 | Load | m1301_8 | +| ir.cpp:1310:26:1310:26 | StoreValue | r1310_32 | +| ir.cpp:1316:5:1316:27 | Address | &:r1316_9 | +| ir.cpp:1316:5:1316:27 | ChiPartial | partial:m1316_3 | +| ir.cpp:1316:5:1316:27 | ChiTotal | total:m1316_2 | +| ir.cpp:1316:5:1316:27 | Load | m1317_11 | +| ir.cpp:1316:5:1316:27 | SideEffect | ~m1317_7 | +| ir.cpp:1316:33:1316:33 | Address | &:r1316_5 | +| ir.cpp:1316:40:1316:40 | Address | &:r1316_7 | +| ir.cpp:1317:5:1317:48 | Address | &:r1317_1 | +| ir.cpp:1317:12:1317:21 | CallTarget | func:r1317_2 | +| ir.cpp:1317:12:1317:21 | ChiPartial | partial:m1317_4 | +| ir.cpp:1317:12:1317:21 | ChiTotal | total:m1316_4 | +| ir.cpp:1317:12:1317:21 | Condition | r1317_3 | +| ir.cpp:1317:12:1317:21 | SideEffect | ~m1316_4 | +| ir.cpp:1317:12:1317:47 | Address | &:r1317_9 | +| ir.cpp:1317:12:1317:47 | Address | &:r1317_19 | +| ir.cpp:1317:12:1317:47 | Address | &:r1317_24 | +| ir.cpp:1317:12:1317:47 | Load | m1317_8 | +| ir.cpp:1317:12:1317:47 | Phi | from 3:m1317_20 | +| ir.cpp:1317:12:1317:47 | Phi | from 3:~m1317_15 | +| ir.cpp:1317:12:1317:47 | Phi | from 4:m1317_25 | +| ir.cpp:1317:12:1317:47 | Phi | from 4:~m1317_21 | +| ir.cpp:1317:12:1317:47 | StoreValue | r1317_10 | +| ir.cpp:1317:28:1317:37 | CallTarget | func:r1317_12 | +| ir.cpp:1317:28:1317:37 | ChiPartial | partial:m1317_14 | +| ir.cpp:1317:28:1317:37 | ChiTotal | total:m1317_5 | +| ir.cpp:1317:28:1317:37 | Condition | r1317_13 | +| ir.cpp:1317:28:1317:37 | SideEffect | ~m1317_5 | +| ir.cpp:1317:43:1317:43 | Address | &:r1317_17 | +| ir.cpp:1317:43:1317:43 | Load | m1316_6 | +| ir.cpp:1317:43:1317:43 | StoreValue | r1317_18 | +| ir.cpp:1317:47:1317:47 | Address | &:r1317_22 | +| ir.cpp:1317:47:1317:47 | Load | m1316_8 | +| ir.cpp:1317:47:1317:47 | Phi | from 0:~m1317_5 | +| ir.cpp:1317:47:1317:47 | Phi | from 2:~m1317_15 | +| ir.cpp:1317:47:1317:47 | StoreValue | r1317_23 | +| ir.cpp:1322:6:1322:6 | ChiPartial | partial:m1322_3 | +| ir.cpp:1322:6:1322:6 | ChiTotal | total:m1322_2 | +| ir.cpp:1322:6:1322:6 | SideEffect | ~m1324_8 | +| ir.cpp:1322:13:1322:13 | Address | &:r1322_5 | +| ir.cpp:1322:13:1322:13 | Address | &:r1322_5 | +| ir.cpp:1322:13:1322:13 | Address | &:r1322_7 | +| ir.cpp:1322:13:1322:13 | Address | &:r1322_7 | +| ir.cpp:1322:13:1322:13 | Load | m1322_6 | +| ir.cpp:1322:13:1322:13 | SideEffect | m1322_8 | +| ir.cpp:1324:3:1324:13 | Address | &:r1324_6 | +| ir.cpp:1324:3:1324:13 | Arg(0) | 0:r1324_2 | +| ir.cpp:1324:3:1324:13 | CallTarget | func:r1324_1 | +| ir.cpp:1324:3:1324:13 | ChiPartial | partial:m1324_7 | +| ir.cpp:1324:3:1324:13 | ChiTotal | total:m1322_4 | +| ir.cpp:1324:3:1324:13 | SideEffect | ~m1322_4 | +| ir.cpp:1324:3:1324:13 | Unary | r1324_6 | +| ir.cpp:1324:8:1324:8 | Address | &:r1324_3 | +| ir.cpp:1324:8:1324:8 | Arg(1) | 1:r1324_5 | +| ir.cpp:1324:8:1324:8 | Load | m1322_6 | +| ir.cpp:1324:8:1324:8 | Unary | r1324_4 | +| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | +| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | +| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | +| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | +| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | +| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | +| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | +| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | +| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | +| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | +| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | +| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | +| ir.cpp:1328:3:1328:3 | Load | m1329_3 | +| ir.cpp:1328:3:1328:3 | Load | m1329_3 | +| ir.cpp:1328:3:1328:3 | Load | m1329_8 | +| ir.cpp:1328:3:1328:3 | Load | m1329_8 | +| ir.cpp:1328:3:1328:3 | SideEffect | m1328_3 | +| ir.cpp:1328:3:1328:3 | SideEffect | m1328_3 | +| ir.cpp:1328:3:1328:3 | SideEffect | ~m1329_6 | +| ir.cpp:1328:3:1328:3 | SideEffect | ~m1329_6 | +| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | +| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | +| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | +| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | +| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | +| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | +| ir.cpp:1329:5:1329:15 | Arg(this) | this:r1329_1 | +| ir.cpp:1329:5:1329:15 | Arg(this) | this:r1329_1 | +| ir.cpp:1329:5:1329:15 | CallTarget | func:r1329_3 | +| ir.cpp:1329:5:1329:15 | CallTarget | func:r1329_3 | +| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_5 | +| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_5 | +| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_7 | +| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_7 | +| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1328_4 | +| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1328_4 | +| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1329_2 | +| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1329_2 | +| ir.cpp:1329:5:1329:15 | SideEffect | ~m1328_4 | +| ir.cpp:1329:5:1329:15 | SideEffect | ~m1328_4 | +| ir.cpp:1329:5:1329:15 | StoreValue | r1329_2 | +| ir.cpp:1329:5:1329:15 | StoreValue | r1329_2 | +| ir.cpp:1367:6:1367:21 | ChiPartial | partial:m1367_3 | +| ir.cpp:1367:6:1367:21 | ChiTotal | total:m1367_2 | +| ir.cpp:1367:6:1367:21 | SideEffect | ~m1378_5 | +| ir.cpp:1368:12:1368:12 | Address | &:r1368_1 | +| ir.cpp:1368:16:1368:34 | CallTarget | func:r1368_2 | +| ir.cpp:1368:16:1368:34 | ChiPartial | partial:m1368_4 | +| ir.cpp:1368:16:1368:34 | ChiTotal | total:m1367_4 | +| ir.cpp:1368:16:1368:34 | SideEffect | ~m1367_4 | +| ir.cpp:1368:16:1368:34 | StoreValue | r1368_3 | +| ir.cpp:1369:19:1369:20 | Address | &:r1369_1 | +| ir.cpp:1369:24:1369:42 | CallTarget | func:r1369_3 | +| ir.cpp:1369:24:1369:42 | ChiPartial | partial:m1369_5 | +| ir.cpp:1369:24:1369:42 | ChiTotal | total:m1368_5 | +| ir.cpp:1369:24:1369:42 | SideEffect | ~m1368_5 | +| ir.cpp:1369:24:1369:42 | StoreValue | r1369_4 | +| ir.cpp:1369:24:1369:44 | Address | &:r1369_2 | +| ir.cpp:1369:24:1369:44 | StoreValue | r1369_9 | +| ir.cpp:1369:24:1369:44 | Unary | r1369_2 | +| ir.cpp:1369:24:1369:44 | Unary | r1369_8 | +| ir.cpp:1371:5:1371:13 | CallTarget | func:r1371_1 | +| ir.cpp:1371:5:1371:13 | ChiPartial | partial:m1371_6 | +| ir.cpp:1371:5:1371:13 | ChiTotal | total:m1369_6 | +| ir.cpp:1371:5:1371:13 | SideEffect | ~m1369_6 | +| ir.cpp:1371:15:1371:15 | Address | &:r1371_4 | +| ir.cpp:1371:15:1371:15 | Arg(0) | 0:r1371_4 | +| ir.cpp:1371:15:1371:15 | SideEffect | ~m1368_6 | +| ir.cpp:1371:15:1371:15 | Unary | r1371_2 | +| ir.cpp:1371:15:1371:15 | Unary | r1371_3 | +| ir.cpp:1372:5:1372:21 | CallTarget | func:r1372_1 | +| ir.cpp:1372:5:1372:21 | ChiPartial | partial:m1372_15 | +| ir.cpp:1372:5:1372:21 | ChiTotal | total:m1372_9 | +| ir.cpp:1372:5:1372:21 | SideEffect | ~m1372_9 | +| ir.cpp:1372:23:1372:27 | Address | &:r1372_2 | +| ir.cpp:1372:23:1372:27 | Address | &:r1372_2 | +| ir.cpp:1372:23:1372:27 | Address | &:r1372_6 | +| ir.cpp:1372:23:1372:27 | Address | &:r1372_13 | +| ir.cpp:1372:23:1372:27 | Arg(0) | 0:r1372_6 | +| ir.cpp:1372:23:1372:27 | Arg(0) | 0:r1372_13 | +| ir.cpp:1372:23:1372:27 | Arg(this) | this:r1372_2 | +| ir.cpp:1372:23:1372:27 | CallTarget | func:r1372_4 | +| ir.cpp:1372:23:1372:27 | ChiPartial | partial:m1372_8 | +| ir.cpp:1372:23:1372:27 | ChiPartial | partial:m1372_11 | +| ir.cpp:1372:23:1372:27 | ChiTotal | total:m1371_7 | +| ir.cpp:1372:23:1372:27 | ChiTotal | total:m1372_3 | +| ir.cpp:1372:23:1372:27 | SideEffect | ~m1367_3 | +| ir.cpp:1372:23:1372:27 | SideEffect | ~m1371_7 | +| ir.cpp:1372:23:1372:27 | SideEffect | ~m1372_12 | +| ir.cpp:1372:23:1372:27 | Unary | r1372_2 | +| ir.cpp:1372:23:1372:27 | Unary | r1372_5 | +| ir.cpp:1373:5:1373:15 | CallTarget | func:r1373_1 | +| ir.cpp:1373:5:1373:15 | ChiPartial | partial:m1373_16 | +| ir.cpp:1373:5:1373:15 | ChiTotal | total:m1373_10 | +| ir.cpp:1373:5:1373:15 | SideEffect | ~m1373_10 | +| ir.cpp:1373:17:1373:17 | Address | &:r1373_2 | +| ir.cpp:1373:17:1373:17 | Address | &:r1373_2 | +| ir.cpp:1373:17:1373:17 | Address | &:r1373_2 | +| ir.cpp:1373:17:1373:17 | Address | &:r1373_7 | +| ir.cpp:1373:17:1373:17 | Arg(0) | 0:r1373_7 | +| ir.cpp:1373:17:1373:17 | Arg(0) | 0:r1373_14 | +| ir.cpp:1373:17:1373:17 | Arg(this) | this:r1373_2 | +| ir.cpp:1373:17:1373:17 | CallTarget | func:r1373_4 | +| ir.cpp:1373:17:1373:17 | ChiPartial | partial:m1373_9 | +| ir.cpp:1373:17:1373:17 | ChiPartial | partial:m1373_12 | +| ir.cpp:1373:17:1373:17 | ChiTotal | total:m1372_16 | +| ir.cpp:1373:17:1373:17 | ChiTotal | total:m1373_3 | +| ir.cpp:1373:17:1373:17 | Load | m1373_13 | +| ir.cpp:1373:17:1373:17 | SideEffect | ~m1368_6 | +| ir.cpp:1373:17:1373:17 | SideEffect | ~m1372_16 | +| ir.cpp:1373:17:1373:17 | Unary | r1373_5 | +| ir.cpp:1373:17:1373:17 | Unary | r1373_6 | +| ir.cpp:1374:5:1374:23 | CallTarget | func:r1374_1 | +| ir.cpp:1374:5:1374:23 | ChiPartial | partial:m1374_15 | +| ir.cpp:1374:5:1374:23 | ChiTotal | total:m1374_9 | +| ir.cpp:1374:5:1374:23 | SideEffect | ~m1374_9 | +| ir.cpp:1374:25:1374:29 | Address | &:r1374_2 | +| ir.cpp:1374:25:1374:29 | Address | &:r1374_2 | +| ir.cpp:1374:25:1374:29 | Address | &:r1374_2 | +| ir.cpp:1374:25:1374:29 | Address | &:r1374_6 | +| ir.cpp:1374:25:1374:29 | Arg(0) | 0:r1374_6 | +| ir.cpp:1374:25:1374:29 | Arg(0) | 0:r1374_13 | +| ir.cpp:1374:25:1374:29 | Arg(this) | this:r1374_2 | +| ir.cpp:1374:25:1374:29 | CallTarget | func:r1374_4 | +| ir.cpp:1374:25:1374:29 | ChiPartial | partial:m1374_8 | +| ir.cpp:1374:25:1374:29 | ChiPartial | partial:m1374_11 | +| ir.cpp:1374:25:1374:29 | ChiTotal | total:m1373_17 | +| ir.cpp:1374:25:1374:29 | ChiTotal | total:m1374_3 | +| ir.cpp:1374:25:1374:29 | Load | m1374_12 | +| ir.cpp:1374:25:1374:29 | SideEffect | ~m1367_3 | +| ir.cpp:1374:25:1374:29 | SideEffect | ~m1373_17 | +| ir.cpp:1374:25:1374:29 | Unary | r1374_5 | +| ir.cpp:1375:5:1375:12 | Address | &:r1375_1 | +| ir.cpp:1375:5:1375:12 | Address | &:r1375_1 | +| ir.cpp:1375:5:1375:12 | Address | &:r1375_9 | +| ir.cpp:1375:5:1375:12 | Arg(this) | this:r1375_1 | +| ir.cpp:1375:5:1375:12 | Arg(this) | this:r1375_9 | +| ir.cpp:1375:5:1375:12 | CallTarget | func:r1375_3 | +| ir.cpp:1375:5:1375:12 | ChiPartial | partial:m1375_5 | +| ir.cpp:1375:5:1375:12 | ChiPartial | partial:m1375_7 | +| ir.cpp:1375:5:1375:12 | ChiTotal | total:m1374_16 | +| ir.cpp:1375:5:1375:12 | ChiTotal | total:m1375_2 | +| ir.cpp:1375:5:1375:12 | SideEffect | m1375_8 | +| ir.cpp:1375:5:1375:12 | SideEffect | ~m1374_16 | +| ir.cpp:1375:5:1375:12 | Unary | r1375_1 | +| ir.cpp:1375:14:1375:18 | CallTarget | func:r1375_10 | +| ir.cpp:1375:14:1375:18 | ChiPartial | partial:m1375_12 | +| ir.cpp:1375:14:1375:18 | ChiTotal | total:m1375_6 | +| ir.cpp:1375:14:1375:18 | SideEffect | ~m1375_6 | +| ir.cpp:1376:5:1376:23 | CallTarget | func:r1376_2 | +| ir.cpp:1376:5:1376:23 | ChiPartial | partial:m1376_4 | +| ir.cpp:1376:5:1376:23 | ChiTotal | total:m1375_13 | +| ir.cpp:1376:5:1376:23 | SideEffect | ~m1375_13 | +| ir.cpp:1376:5:1376:23 | StoreValue | r1376_3 | +| ir.cpp:1376:5:1376:25 | Address | &:r1376_1 | +| ir.cpp:1376:5:1376:25 | Address | &:r1376_7 | +| ir.cpp:1376:5:1376:25 | Arg(this) | this:r1376_7 | +| ir.cpp:1376:5:1376:25 | SideEffect | m1376_6 | +| ir.cpp:1376:5:1376:25 | Unary | r1376_1 | +| ir.cpp:1376:27:1376:31 | CallTarget | func:r1376_8 | +| ir.cpp:1376:27:1376:31 | ChiPartial | partial:m1376_10 | +| ir.cpp:1376:27:1376:31 | ChiTotal | total:m1376_5 | +| ir.cpp:1376:27:1376:31 | SideEffect | ~m1376_5 | +| ir.cpp:1378:5:1378:28 | CallTarget | func:r1378_2 | +| ir.cpp:1378:5:1378:28 | ChiPartial | partial:m1378_4 | +| ir.cpp:1378:5:1378:28 | ChiTotal | total:m1376_11 | +| ir.cpp:1378:5:1378:28 | SideEffect | ~m1376_11 | +| ir.cpp:1378:5:1378:28 | StoreValue | r1378_3 | +| ir.cpp:1378:5:1378:30 | Address | &:r1378_1 | +| ir.cpp:1381:6:1381:30 | ChiPartial | partial:m1381_3 | +| ir.cpp:1381:6:1381:30 | ChiTotal | total:m1381_2 | +| ir.cpp:1381:6:1381:30 | SideEffect | ~m1390_5 | +| ir.cpp:1382:21:1382:21 | Address | &:r1382_1 | +| ir.cpp:1382:25:1382:52 | CallTarget | func:r1382_2 | +| ir.cpp:1382:25:1382:52 | ChiPartial | partial:m1382_4 | +| ir.cpp:1382:25:1382:52 | ChiTotal | total:m1381_4 | +| ir.cpp:1382:25:1382:52 | SideEffect | ~m1381_4 | +| ir.cpp:1382:25:1382:52 | StoreValue | r1382_3 | +| ir.cpp:1383:28:1383:29 | Address | &:r1383_1 | +| ir.cpp:1383:33:1383:60 | CallTarget | func:r1383_3 | +| ir.cpp:1383:33:1383:60 | ChiPartial | partial:m1383_5 | +| ir.cpp:1383:33:1383:60 | ChiTotal | total:m1382_5 | +| ir.cpp:1383:33:1383:60 | SideEffect | ~m1382_5 | +| ir.cpp:1383:33:1383:60 | StoreValue | r1383_4 | +| ir.cpp:1383:33:1383:62 | Address | &:r1383_2 | +| ir.cpp:1383:33:1383:62 | StoreValue | r1383_9 | +| ir.cpp:1383:33:1383:62 | Unary | r1383_2 | +| ir.cpp:1383:33:1383:62 | Unary | r1383_8 | +| ir.cpp:1384:21:1384:22 | Address | &:r1384_1 | +| ir.cpp:1385:5:1385:13 | CallTarget | func:r1385_1 | +| ir.cpp:1385:5:1385:13 | ChiPartial | partial:m1385_6 | +| ir.cpp:1385:5:1385:13 | ChiTotal | total:m1383_6 | +| ir.cpp:1385:5:1385:13 | SideEffect | ~m1383_6 | +| ir.cpp:1385:15:1385:15 | Address | &:r1385_4 | +| ir.cpp:1385:15:1385:15 | Arg(0) | 0:r1385_4 | +| ir.cpp:1385:15:1385:15 | SideEffect | ~m1382_6 | +| ir.cpp:1385:15:1385:15 | Unary | r1385_2 | +| ir.cpp:1385:15:1385:15 | Unary | r1385_3 | +| ir.cpp:1386:5:1386:15 | CallTarget | func:r1386_1 | +| ir.cpp:1386:5:1386:15 | ChiPartial | partial:m1386_8 | +| ir.cpp:1386:5:1386:15 | ChiTotal | total:m1385_7 | +| ir.cpp:1386:5:1386:15 | SideEffect | ~m1385_7 | +| ir.cpp:1386:17:1386:17 | Address | &:r1386_2 | +| ir.cpp:1386:17:1386:17 | Address | &:r1386_2 | +| ir.cpp:1386:17:1386:17 | Address | &:r1386_3 | +| ir.cpp:1386:17:1386:17 | Arg(0) | 0:r1386_6 | +| ir.cpp:1386:17:1386:17 | Load | m1382_6 | +| ir.cpp:1386:17:1386:17 | Load | m1386_5 | +| ir.cpp:1386:17:1386:17 | StoreValue | r1386_4 | +| ir.cpp:1387:5:1387:21 | Address | &:r1387_1 | +| ir.cpp:1387:5:1387:21 | Address | &:r1387_1 | +| ir.cpp:1387:5:1387:21 | Address | &:r1387_1 | +| ir.cpp:1387:5:1387:21 | Arg(this) | this:r1387_1 | +| ir.cpp:1387:5:1387:21 | ChiPartial | partial:m1387_9 | +| ir.cpp:1387:5:1387:21 | ChiTotal | total:m1387_3 | +| ir.cpp:1387:5:1387:21 | SideEffect | m1387_3 | +| ir.cpp:1387:5:1387:21 | StoreValue | r1387_2 | +| ir.cpp:1387:23:1387:28 | CallTarget | func:r1387_4 | +| ir.cpp:1387:23:1387:28 | ChiPartial | partial:m1387_6 | +| ir.cpp:1387:23:1387:28 | ChiTotal | total:m1386_9 | +| ir.cpp:1387:23:1387:28 | SideEffect | ~m1386_9 | +| ir.cpp:1388:5:1388:32 | CallTarget | func:r1388_2 | +| ir.cpp:1388:5:1388:32 | ChiPartial | partial:m1388_4 | +| ir.cpp:1388:5:1388:32 | ChiTotal | total:m1387_7 | +| ir.cpp:1388:5:1388:32 | SideEffect | ~m1387_7 | +| ir.cpp:1388:5:1388:32 | StoreValue | r1388_3 | +| ir.cpp:1388:5:1388:34 | Address | &:r1388_1 | +| ir.cpp:1388:5:1388:34 | Address | &:r1388_1 | +| ir.cpp:1388:5:1388:34 | Address | &:r1388_1 | +| ir.cpp:1388:5:1388:34 | Arg(this) | this:r1388_1 | +| ir.cpp:1388:5:1388:34 | ChiPartial | partial:m1388_12 | +| ir.cpp:1388:5:1388:34 | ChiTotal | total:m1388_6 | +| ir.cpp:1388:5:1388:34 | SideEffect | m1388_6 | +| ir.cpp:1388:36:1388:41 | CallTarget | func:r1388_7 | +| ir.cpp:1388:36:1388:41 | ChiPartial | partial:m1388_9 | +| ir.cpp:1388:36:1388:41 | ChiTotal | total:m1388_5 | +| ir.cpp:1388:36:1388:41 | SideEffect | ~m1388_5 | +| ir.cpp:1390:5:1390:37 | CallTarget | func:r1390_2 | +| ir.cpp:1390:5:1390:37 | ChiPartial | partial:m1390_4 | +| ir.cpp:1390:5:1390:37 | ChiTotal | total:m1388_10 | +| ir.cpp:1390:5:1390:37 | SideEffect | ~m1388_10 | +| ir.cpp:1390:5:1390:37 | StoreValue | r1390_3 | +| ir.cpp:1390:5:1390:39 | Address | &:r1390_1 | +| ir.cpp:1393:6:1393:31 | ChiPartial | partial:m1393_3 | +| ir.cpp:1393:6:1393:31 | ChiTotal | total:m1393_2 | +| ir.cpp:1393:6:1393:31 | SideEffect | ~m1403_6 | +| ir.cpp:1394:22:1394:22 | Address | &:r1394_1 | +| ir.cpp:1394:26:1394:54 | CallTarget | func:r1394_2 | +| ir.cpp:1394:26:1394:54 | ChiPartial | partial:m1394_4 | +| ir.cpp:1394:26:1394:54 | ChiTotal | total:m1393_4 | +| ir.cpp:1394:26:1394:54 | SideEffect | ~m1393_4 | +| ir.cpp:1394:26:1394:54 | StoreValue | r1394_3 | +| ir.cpp:1395:29:1395:30 | Address | &:r1395_1 | +| ir.cpp:1395:34:1395:62 | CallTarget | func:r1395_3 | +| ir.cpp:1395:34:1395:62 | ChiPartial | partial:m1395_5 | +| ir.cpp:1395:34:1395:62 | ChiTotal | total:m1394_5 | +| ir.cpp:1395:34:1395:62 | SideEffect | ~m1394_5 | +| ir.cpp:1395:34:1395:62 | StoreValue | r1395_4 | +| ir.cpp:1395:34:1395:64 | Address | &:r1395_2 | +| ir.cpp:1395:34:1395:64 | StoreValue | r1395_9 | +| ir.cpp:1395:34:1395:64 | Unary | r1395_2 | +| ir.cpp:1395:34:1395:64 | Unary | r1395_8 | +| ir.cpp:1396:22:1396:23 | Address | &:r1396_1 | +| ir.cpp:1396:22:1396:23 | Address | &:r1396_1 | +| ir.cpp:1396:22:1396:23 | Arg(this) | this:r1396_1 | +| ir.cpp:1396:22:1396:23 | CallTarget | func:r1396_3 | +| ir.cpp:1396:22:1396:23 | ChiPartial | partial:m1396_5 | +| ir.cpp:1396:22:1396:23 | ChiPartial | partial:m1396_7 | +| ir.cpp:1396:22:1396:23 | ChiTotal | total:m1395_6 | +| ir.cpp:1396:22:1396:23 | ChiTotal | total:m1396_2 | +| ir.cpp:1396:22:1396:23 | SideEffect | ~m1395_6 | +| ir.cpp:1397:5:1397:13 | CallTarget | func:r1397_1 | +| ir.cpp:1397:5:1397:13 | ChiPartial | partial:m1397_6 | +| ir.cpp:1397:5:1397:13 | ChiTotal | total:m1396_6 | +| ir.cpp:1397:5:1397:13 | SideEffect | ~m1396_6 | +| ir.cpp:1397:15:1397:15 | Address | &:r1397_4 | +| ir.cpp:1397:15:1397:15 | Arg(0) | 0:r1397_4 | +| ir.cpp:1397:15:1397:15 | SideEffect | ~m1394_6 | +| ir.cpp:1397:15:1397:15 | Unary | r1397_2 | +| ir.cpp:1397:15:1397:15 | Unary | r1397_3 | +| ir.cpp:1398:5:1398:15 | CallTarget | func:r1398_1 | +| ir.cpp:1398:5:1398:15 | ChiPartial | partial:m1398_16 | +| ir.cpp:1398:5:1398:15 | ChiTotal | total:m1398_10 | +| ir.cpp:1398:5:1398:15 | SideEffect | ~m1398_10 | +| ir.cpp:1398:17:1398:17 | Address | &:r1398_2 | +| ir.cpp:1398:17:1398:17 | Address | &:r1398_2 | +| ir.cpp:1398:17:1398:17 | Address | &:r1398_2 | +| ir.cpp:1398:17:1398:17 | Address | &:r1398_7 | +| ir.cpp:1398:17:1398:17 | Arg(0) | 0:r1398_7 | +| ir.cpp:1398:17:1398:17 | Arg(0) | 0:r1398_14 | +| ir.cpp:1398:17:1398:17 | Arg(this) | this:r1398_2 | +| ir.cpp:1398:17:1398:17 | CallTarget | func:r1398_4 | +| ir.cpp:1398:17:1398:17 | ChiPartial | partial:m1398_9 | +| ir.cpp:1398:17:1398:17 | ChiPartial | partial:m1398_12 | +| ir.cpp:1398:17:1398:17 | ChiTotal | total:m1397_7 | +| ir.cpp:1398:17:1398:17 | ChiTotal | total:m1398_3 | +| ir.cpp:1398:17:1398:17 | Load | m1398_13 | +| ir.cpp:1398:17:1398:17 | SideEffect | ~m1394_6 | +| ir.cpp:1398:17:1398:17 | SideEffect | ~m1397_7 | +| ir.cpp:1398:17:1398:17 | Unary | r1398_5 | +| ir.cpp:1398:17:1398:17 | Unary | r1398_6 | +| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | +| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | +| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | +| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | +| ir.cpp:1399:5:1399:22 | Arg(this) | this:r1399_1 | +| ir.cpp:1399:5:1399:22 | Arg(this) | this:r1399_1 | +| ir.cpp:1399:5:1399:22 | CallTarget | func:r1399_3 | +| ir.cpp:1399:5:1399:22 | ChiPartial | partial:m1399_5 | +| ir.cpp:1399:5:1399:22 | ChiPartial | partial:m1399_7 | +| ir.cpp:1399:5:1399:22 | ChiPartial | partial:m1399_14 | +| ir.cpp:1399:5:1399:22 | ChiTotal | total:m1398_17 | +| ir.cpp:1399:5:1399:22 | ChiTotal | total:m1399_2 | +| ir.cpp:1399:5:1399:22 | ChiTotal | total:m1399_8 | +| ir.cpp:1399:5:1399:22 | SideEffect | m1399_8 | +| ir.cpp:1399:5:1399:22 | SideEffect | ~m1398_17 | +| ir.cpp:1399:24:1399:29 | CallTarget | func:r1399_9 | +| ir.cpp:1399:24:1399:29 | ChiPartial | partial:m1399_11 | +| ir.cpp:1399:24:1399:29 | ChiTotal | total:m1399_6 | +| ir.cpp:1399:24:1399:29 | SideEffect | ~m1399_6 | +| ir.cpp:1400:5:1400:33 | CallTarget | func:r1400_2 | +| ir.cpp:1400:5:1400:33 | ChiPartial | partial:m1400_4 | +| ir.cpp:1400:5:1400:33 | ChiTotal | total:m1399_12 | +| ir.cpp:1400:5:1400:33 | SideEffect | ~m1399_12 | +| ir.cpp:1400:5:1400:33 | StoreValue | r1400_3 | +| ir.cpp:1400:5:1400:35 | Address | &:r1400_1 | +| ir.cpp:1400:5:1400:35 | Address | &:r1400_1 | +| ir.cpp:1400:5:1400:35 | Address | &:r1400_1 | +| ir.cpp:1400:5:1400:35 | Arg(this) | this:r1400_1 | +| ir.cpp:1400:5:1400:35 | ChiPartial | partial:m1400_12 | +| ir.cpp:1400:5:1400:35 | ChiTotal | total:m1400_6 | +| ir.cpp:1400:5:1400:35 | SideEffect | m1400_6 | +| ir.cpp:1400:37:1400:42 | CallTarget | func:r1400_7 | +| ir.cpp:1400:37:1400:42 | ChiPartial | partial:m1400_9 | +| ir.cpp:1400:37:1400:42 | ChiTotal | total:m1400_5 | +| ir.cpp:1400:37:1400:42 | SideEffect | ~m1400_5 | +| ir.cpp:1401:5:1401:38 | CallTarget | func:r1401_2 | +| ir.cpp:1401:5:1401:38 | ChiPartial | partial:m1401_4 | +| ir.cpp:1401:5:1401:38 | ChiTotal | total:m1400_10 | +| ir.cpp:1401:5:1401:38 | SideEffect | ~m1400_10 | +| ir.cpp:1401:5:1401:38 | StoreValue | r1401_3 | +| ir.cpp:1401:5:1401:40 | Address | &:r1401_1 | +| ir.cpp:1403:9:1403:9 | Address | &:r1403_1 | +| ir.cpp:1403:13:1403:41 | CallTarget | func:r1403_3 | +| ir.cpp:1403:13:1403:41 | ChiPartial | partial:m1403_5 | +| ir.cpp:1403:13:1403:41 | ChiTotal | total:m1401_5 | +| ir.cpp:1403:13:1403:41 | SideEffect | ~m1401_5 | +| ir.cpp:1403:13:1403:41 | StoreValue | r1403_4 | +| ir.cpp:1403:13:1403:43 | Address | &:r1403_2 | +| ir.cpp:1403:13:1403:43 | Unary | r1403_2 | +| ir.cpp:1403:45:1403:45 | Address | &:r1403_8 | +| ir.cpp:1403:45:1403:45 | Load | ~m1403_7 | +| ir.cpp:1403:45:1403:45 | StoreValue | r1403_9 | +| ir.cpp:1406:6:1406:20 | ChiPartial | partial:m1406_3 | +| ir.cpp:1406:6:1406:20 | ChiTotal | total:m1406_2 | +| ir.cpp:1406:6:1406:20 | SideEffect | ~m1415_4 | +| ir.cpp:1407:11:1407:11 | Address | &:r1407_1 | +| ir.cpp:1407:15:1407:32 | CallTarget | func:r1407_2 | +| ir.cpp:1407:15:1407:32 | ChiPartial | partial:m1407_4 | +| ir.cpp:1407:15:1407:32 | ChiTotal | total:m1406_4 | +| ir.cpp:1407:15:1407:32 | SideEffect | ~m1406_4 | +| ir.cpp:1407:15:1407:32 | StoreValue | r1407_3 | +| ir.cpp:1408:18:1408:19 | Address | &:r1408_1 | +| ir.cpp:1408:23:1408:40 | CallTarget | func:r1408_3 | +| ir.cpp:1408:23:1408:40 | ChiPartial | partial:m1408_5 | +| ir.cpp:1408:23:1408:40 | ChiTotal | total:m1407_5 | +| ir.cpp:1408:23:1408:40 | SideEffect | ~m1407_5 | +| ir.cpp:1408:23:1408:40 | StoreValue | r1408_4 | +| ir.cpp:1408:23:1408:42 | Address | &:r1408_2 | +| ir.cpp:1408:23:1408:42 | StoreValue | r1408_9 | +| ir.cpp:1408:23:1408:42 | Unary | r1408_2 | +| ir.cpp:1408:23:1408:42 | Unary | r1408_8 | +| ir.cpp:1410:5:1410:13 | CallTarget | func:r1410_1 | +| ir.cpp:1410:5:1410:13 | ChiPartial | partial:m1410_6 | +| ir.cpp:1410:5:1410:13 | ChiTotal | total:m1408_6 | +| ir.cpp:1410:5:1410:13 | SideEffect | ~m1408_6 | +| ir.cpp:1410:15:1410:15 | Address | &:r1410_4 | +| ir.cpp:1410:15:1410:15 | Arg(0) | 0:r1410_4 | +| ir.cpp:1410:15:1410:15 | SideEffect | ~m1407_6 | +| ir.cpp:1410:15:1410:15 | Unary | r1410_2 | +| ir.cpp:1410:15:1410:15 | Unary | r1410_3 | +| ir.cpp:1411:5:1411:15 | CallTarget | func:r1411_1 | +| ir.cpp:1411:5:1411:15 | ChiPartial | partial:m1411_5 | +| ir.cpp:1411:5:1411:15 | ChiTotal | total:m1410_7 | +| ir.cpp:1411:5:1411:15 | SideEffect | ~m1410_7 | +| ir.cpp:1411:17:1411:17 | Address | &:r1411_2 | +| ir.cpp:1411:17:1411:17 | Arg(0) | 0:r1411_3 | +| ir.cpp:1411:17:1411:17 | Load | m1407_6 | +| ir.cpp:1413:9:1413:9 | Address | &:r1413_1 | +| ir.cpp:1413:13:1413:30 | Address | &:r1413_6 | +| ir.cpp:1413:13:1413:30 | CallTarget | func:r1413_2 | +| ir.cpp:1413:13:1413:30 | ChiPartial | partial:m1413_4 | +| ir.cpp:1413:13:1413:30 | ChiTotal | total:m1411_6 | +| ir.cpp:1413:13:1413:30 | SideEffect | ~m1411_6 | +| ir.cpp:1413:13:1413:30 | StoreValue | r1413_3 | +| ir.cpp:1413:13:1413:30 | Unary | r1413_6 | +| ir.cpp:1413:34:1413:34 | Address | &:r1413_8 | +| ir.cpp:1413:34:1413:34 | Load | ~m1413_7 | +| ir.cpp:1413:34:1413:34 | StoreValue | r1413_9 | +| ir.cpp:1415:5:1415:27 | CallTarget | func:r1415_1 | +| ir.cpp:1415:5:1415:27 | ChiPartial | partial:m1415_3 | +| ir.cpp:1415:5:1415:27 | ChiTotal | total:m1413_5 | +| ir.cpp:1415:5:1415:27 | SideEffect | ~m1413_5 | +| ir.cpp:1423:6:1423:29 | ChiPartial | partial:m1423_3 | +| ir.cpp:1423:6:1423:29 | ChiTotal | total:m1423_2 | +| ir.cpp:1423:6:1423:29 | SideEffect | ~m1428_5 | +| ir.cpp:1424:16:1424:17 | Address | &:r1424_1 | +| ir.cpp:1424:21:1424:46 | Address | &:r1424_6 | +| ir.cpp:1424:21:1424:46 | CallTarget | func:r1424_2 | +| ir.cpp:1424:21:1424:46 | ChiPartial | partial:m1424_4 | +| ir.cpp:1424:21:1424:46 | ChiTotal | total:m1423_4 | +| ir.cpp:1424:21:1424:46 | SideEffect | ~m1423_4 | +| ir.cpp:1424:21:1424:46 | StoreValue | r1424_3 | +| ir.cpp:1424:21:1424:46 | Unary | r1424_6 | +| ir.cpp:1424:21:1424:50 | StoreValue | r1424_12 | +| ir.cpp:1424:21:1424:50 | Unary | r1424_10 | +| ir.cpp:1424:21:1424:50 | Unary | r1424_11 | +| ir.cpp:1424:50:1424:50 | Address | &:r1424_8 | +| ir.cpp:1424:50:1424:50 | Load | ~m1424_7 | +| ir.cpp:1424:50:1424:50 | Unary | r1424_9 | +| ir.cpp:1425:9:1425:9 | Address | &:r1425_1 | +| ir.cpp:1425:13:1425:38 | Address | &:r1425_6 | +| ir.cpp:1425:13:1425:38 | CallTarget | func:r1425_2 | +| ir.cpp:1425:13:1425:38 | ChiPartial | partial:m1425_4 | +| ir.cpp:1425:13:1425:38 | ChiTotal | total:m1424_5 | +| ir.cpp:1425:13:1425:38 | SideEffect | ~m1424_5 | +| ir.cpp:1425:13:1425:38 | StoreValue | r1425_3 | +| ir.cpp:1425:13:1425:38 | Unary | r1425_6 | +| ir.cpp:1425:13:1425:42 | Load | ~m1425_5 | +| ir.cpp:1425:13:1425:42 | StoreValue | r1425_10 | +| ir.cpp:1425:42:1425:42 | Address | &:r1425_8 | +| ir.cpp:1425:42:1425:42 | Address | &:r1425_9 | +| ir.cpp:1425:42:1425:42 | Load | ~m1425_7 | +| ir.cpp:1427:18:1427:19 | Address | &:r1427_1 | +| ir.cpp:1427:23:1427:48 | Address | &:r1427_6 | +| ir.cpp:1427:23:1427:48 | CallTarget | func:r1427_2 | +| ir.cpp:1427:23:1427:48 | ChiPartial | partial:m1427_4 | +| ir.cpp:1427:23:1427:48 | ChiTotal | total:m1425_5 | +| ir.cpp:1427:23:1427:48 | SideEffect | ~m1425_5 | +| ir.cpp:1427:23:1427:48 | StoreValue | r1427_3 | +| ir.cpp:1427:23:1427:48 | Unary | r1427_6 | +| ir.cpp:1427:23:1427:52 | Left | r1427_9 | +| ir.cpp:1427:23:1427:55 | StoreValue | r1427_13 | +| ir.cpp:1427:23:1427:55 | Unary | r1427_11 | +| ir.cpp:1427:23:1427:55 | Unary | r1427_12 | +| ir.cpp:1427:52:1427:52 | Unary | r1427_8 | +| ir.cpp:1427:54:1427:54 | Right | r1427_10 | +| ir.cpp:1428:11:1428:11 | Address | &:r1428_1 | +| ir.cpp:1428:15:1428:40 | Address | &:r1428_6 | +| ir.cpp:1428:15:1428:40 | CallTarget | func:r1428_2 | +| ir.cpp:1428:15:1428:40 | ChiPartial | partial:m1428_4 | +| ir.cpp:1428:15:1428:40 | ChiTotal | total:m1427_5 | +| ir.cpp:1428:15:1428:40 | SideEffect | ~m1427_5 | +| ir.cpp:1428:15:1428:40 | StoreValue | r1428_3 | +| ir.cpp:1428:15:1428:40 | Unary | r1428_6 | +| ir.cpp:1428:15:1428:44 | Left | r1428_9 | +| ir.cpp:1428:15:1428:47 | Address | &:r1428_11 | +| ir.cpp:1428:15:1428:47 | Load | ~m1428_7 | +| ir.cpp:1428:15:1428:47 | StoreValue | r1428_12 | +| ir.cpp:1428:44:1428:44 | Unary | r1428_8 | +| ir.cpp:1428:46:1428:46 | Right | r1428_10 | +| ir.cpp:1445:6:1445:24 | ChiPartial | partial:m1445_3 | +| ir.cpp:1445:6:1445:24 | ChiTotal | total:m1445_2 | +| ir.cpp:1445:6:1445:24 | SideEffect | ~m1449_10 | +| ir.cpp:1446:14:1446:14 | Address | &:r1446_1 | +| ir.cpp:1446:18:1446:40 | CallTarget | func:r1446_2 | +| ir.cpp:1446:18:1446:40 | ChiPartial | partial:m1446_4 | +| ir.cpp:1446:18:1446:40 | ChiTotal | total:m1445_4 | +| ir.cpp:1446:18:1446:40 | SideEffect | ~m1445_4 | +| ir.cpp:1446:18:1446:40 | StoreValue | r1446_3 | +| ir.cpp:1447:5:1447:5 | Address | &:r1447_10 | +| ir.cpp:1447:9:1447:36 | Address | &:r1447_1 | +| ir.cpp:1447:9:1447:36 | Address | &:r1447_8 | +| ir.cpp:1447:9:1447:36 | Load | ~m1447_6 | +| ir.cpp:1447:9:1447:36 | StoreValue | r1447_9 | +| ir.cpp:1447:9:1447:36 | Unary | r1447_1 | +| ir.cpp:1447:9:1447:36 | Unary | r1447_7 | +| ir.cpp:1447:10:1447:33 | CallTarget | func:r1447_2 | +| ir.cpp:1447:10:1447:33 | ChiPartial | partial:m1447_4 | +| ir.cpp:1447:10:1447:33 | ChiTotal | total:m1446_5 | +| ir.cpp:1447:10:1447:33 | SideEffect | ~m1446_5 | +| ir.cpp:1447:10:1447:33 | StoreValue | r1447_3 | +| ir.cpp:1448:9:1448:9 | Address | &:r1448_1 | +| ir.cpp:1448:13:1448:36 | CallTarget | func:r1448_2 | +| ir.cpp:1448:13:1448:36 | ChiPartial | partial:m1448_4 | +| ir.cpp:1448:13:1448:36 | ChiTotal | total:m1447_5 | +| ir.cpp:1448:13:1448:36 | SideEffect | ~m1447_5 | +| ir.cpp:1448:13:1448:36 | StoreValue | r1448_3 | +| ir.cpp:1448:40:1448:40 | Address | &:r1448_7 | +| ir.cpp:1448:40:1448:40 | Load | ~m1448_6 | +| ir.cpp:1448:40:1448:40 | StoreValue | r1448_8 | +| ir.cpp:1449:11:1449:11 | Address | &:r1449_1 | +| ir.cpp:1449:16:1449:39 | CallTarget | func:r1449_2 | +| ir.cpp:1449:16:1449:39 | ChiPartial | partial:m1449_4 | +| ir.cpp:1449:16:1449:39 | ChiTotal | total:m1448_5 | +| ir.cpp:1449:16:1449:39 | SideEffect | ~m1448_5 | +| ir.cpp:1449:16:1449:39 | StoreValue | r1449_3 | +| ir.cpp:1449:44:1449:44 | Arg(this) | this:r0_11 | +| ir.cpp:1449:44:1449:44 | CallTarget | func:r1449_7 | +| ir.cpp:1449:44:1449:44 | ChiPartial | partial:m1449_9 | +| ir.cpp:1449:44:1449:44 | ChiTotal | total:m1449_5 | +| ir.cpp:1449:44:1449:44 | SideEffect | ~m1449_5 | +| ir.cpp:1449:44:1449:44 | StoreValue | r1449_8 | +| ir.cpp:1453:3:1453:21 | Address | &:r1453_5 | +| ir.cpp:1453:3:1453:21 | Address | &:r1453_5 | +| ir.cpp:1453:3:1453:21 | Address | &:r1453_7 | +| ir.cpp:1453:3:1453:21 | Address | &:r1453_7 | +| ir.cpp:1453:3:1453:21 | ChiPartial | partial:m1453_3 | +| ir.cpp:1453:3:1453:21 | ChiTotal | total:m1453_2 | +| ir.cpp:1453:3:1453:21 | Load | m1453_6 | +| ir.cpp:1453:3:1453:21 | SideEffect | m1453_3 | +| ir.cpp:1453:3:1453:21 | SideEffect | m1453_8 | +| ir.cpp:1459:3:1459:20 | Address | &:r1459_5 | +| ir.cpp:1459:3:1459:20 | Address | &:r1459_5 | +| ir.cpp:1459:3:1459:20 | Address | &:r1459_7 | +| ir.cpp:1459:3:1459:20 | Address | &:r1459_7 | +| ir.cpp:1459:3:1459:20 | ChiPartial | partial:m1459_3 | +| ir.cpp:1459:3:1459:20 | ChiTotal | total:m1459_2 | +| ir.cpp:1459:3:1459:20 | Load | m1459_6 | +| ir.cpp:1459:3:1459:20 | SideEffect | m1459_3 | +| ir.cpp:1459:3:1459:20 | SideEffect | m1460_6 | +| ir.cpp:1459:3:1459:20 | Unary | m1459_6 | +| ir.cpp:1459:26:1459:30 | Address | &:r1459_9 | +| ir.cpp:1459:26:1459:30 | ChiPartial | partial:m1459_11 | +| ir.cpp:1459:26:1459:30 | ChiTotal | total:m1459_8 | +| ir.cpp:1459:26:1459:30 | StoreValue | r1459_10 | +| ir.cpp:1460:5:1460:5 | Address | &:r1460_2 | +| ir.cpp:1460:5:1460:5 | Address | &:r1460_4 | +| ir.cpp:1460:5:1460:5 | Load | m1459_6 | +| ir.cpp:1460:5:1460:5 | Unary | r1460_3 | +| ir.cpp:1460:5:1460:9 | ChiPartial | partial:m1460_5 | +| ir.cpp:1460:5:1460:9 | ChiTotal | total:m1459_12 | +| ir.cpp:1460:9:1460:9 | StoreValue | r1460_1 | +| ir.cpp:1464:6:1464:29 | ChiPartial | partial:m1464_3 | +| ir.cpp:1464:6:1464:29 | ChiTotal | total:m1464_2 | +| ir.cpp:1464:6:1464:29 | SideEffect | m1464_3 | +| ir.cpp:1465:9:1465:10 | Address | &:r1465_1 | +| ir.cpp:1465:9:1465:10 | Left | r1465_1 | +| ir.cpp:1465:9:1465:10 | Left | r1465_1 | +| ir.cpp:1465:16:1465:22 | Address | &:r1465_4 | +| ir.cpp:1465:16:1465:22 | Address | &:r1465_9 | +| ir.cpp:1465:16:1465:22 | Right | r1465_3 | +| ir.cpp:1465:16:1465:22 | Right | r1465_8 | +| ir.cpp:1465:18:1465:18 | ChiPartial | partial:m1465_6 | +| ir.cpp:1465:18:1465:18 | ChiTotal | total:m1465_2 | +| ir.cpp:1465:18:1465:18 | StoreValue | r1465_5 | +| ir.cpp:1465:21:1465:21 | ChiPartial | partial:m1465_11 | +| ir.cpp:1465:21:1465:21 | ChiTotal | total:m1465_7 | +| ir.cpp:1465:21:1465:21 | StoreValue | r1465_10 | +| ir.cpp:1468:15:1468:15 | Address | &:r1468_1 | +| ir.cpp:1468:16:1468:16 | Address | &:r1468_5 | +| ir.cpp:1468:20:1468:20 | Address | &:r1468_6 | +| ir.cpp:1468:26:1468:27 | StoreValue | r1468_3 | +| ir.cpp:1468:26:1468:27 | Unary | r1468_2 | +| ir.cpp:1469:9:1469:10 | Address | &:r1469_2 | +| ir.cpp:1469:9:1469:10 | Address | &:r1469_3 | +| ir.cpp:1469:9:1469:10 | Load | m0_14 | +| ir.cpp:1469:9:1469:14 | ChiPartial | partial:m1469_4 | +| ir.cpp:1469:9:1469:14 | ChiTotal | total:m1465_12 | +| ir.cpp:1469:14:1469:14 | StoreValue | r1469_1 | +| ir.cpp:1470:14:1470:16 | Address | &:r1470_1 | +| ir.cpp:1470:20:1470:21 | Address | &:r1470_2 | +| ir.cpp:1470:20:1470:21 | Load | m0_14 | +| ir.cpp:1470:20:1470:21 | StoreValue | r1470_4 | +| ir.cpp:1470:20:1470:21 | Unary | r1470_3 | +| ir.cpp:1471:13:1471:13 | Address | &:r1471_1 | +| ir.cpp:1471:17:1471:18 | Address | &:r1471_2 | +| ir.cpp:1471:17:1471:18 | Address | &:r1471_3 | +| ir.cpp:1471:17:1471:18 | Load | m0_14 | +| ir.cpp:1471:17:1471:18 | Load | m1469_4 | +| ir.cpp:1471:17:1471:18 | StoreValue | r1471_4 | +| ir.cpp:1475:15:1475:36 | Address | &:r1475_1 | +| ir.cpp:1475:40:1475:41 | StoreValue | r1475_3 | +| ir.cpp:1475:40:1475:41 | Unary | r1475_2 | +| ir.cpp:1476:15:1476:16 | Address | &:r1476_1 | +| ir.cpp:1476:20:1476:41 | Address | &:r1476_2 | +| ir.cpp:1476:20:1476:41 | Left | r1476_5 | +| ir.cpp:1476:20:1476:41 | Load | m1475_4 | +| ir.cpp:1476:20:1476:41 | Unary | r1476_3 | +| ir.cpp:1476:20:1476:41 | Unary | r1476_4 | +| ir.cpp:1476:20:1476:44 | StoreValue | r1476_8 | +| ir.cpp:1476:20:1476:44 | Unary | r1476_7 | +| ir.cpp:1476:43:1476:43 | Right | r1476_6 | +| ir.cpp:1477:15:1477:16 | Address | &:r1477_1 | +| ir.cpp:1477:20:1477:41 | Address | &:r1477_2 | +| ir.cpp:1477:20:1477:41 | Left | r1477_5 | +| ir.cpp:1477:20:1477:41 | Load | m1475_4 | +| ir.cpp:1477:20:1477:41 | Unary | r1477_3 | +| ir.cpp:1477:20:1477:41 | Unary | r1477_4 | +| ir.cpp:1477:20:1477:44 | StoreValue | r1477_8 | +| ir.cpp:1477:20:1477:44 | Unary | r1477_7 | +| ir.cpp:1477:43:1477:43 | Right | r1477_6 | +| ir.cpp:1478:9:1478:10 | Address | &:r1478_2 | +| ir.cpp:1478:9:1478:10 | Address | &:r1478_4 | +| ir.cpp:1478:9:1478:10 | Load | m1477_9 | +| ir.cpp:1478:9:1478:10 | Unary | r1478_3 | +| ir.cpp:1478:9:1478:14 | ChiPartial | partial:m1478_5 | +| ir.cpp:1478:9:1478:14 | ChiTotal | total:m1469_5 | +| ir.cpp:1478:14:1478:14 | StoreValue | r1478_1 | +| ir.cpp:1479:14:1479:16 | Address | &:r1479_1 | +| ir.cpp:1479:20:1479:21 | Address | &:r1479_2 | +| ir.cpp:1479:20:1479:21 | Load | m1477_9 | +| ir.cpp:1479:20:1479:21 | StoreValue | r1479_5 | +| ir.cpp:1479:20:1479:21 | Unary | r1479_3 | +| ir.cpp:1479:20:1479:21 | Unary | r1479_4 | +| ir.cpp:1480:13:1480:13 | Address | &:r1480_1 | +| ir.cpp:1480:17:1480:18 | Address | &:r1480_2 | +| ir.cpp:1480:17:1480:18 | Address | &:r1480_3 | +| ir.cpp:1480:17:1480:18 | Load | m1477_9 | +| ir.cpp:1480:17:1480:18 | Load | m1478_5 | +| ir.cpp:1480:17:1480:18 | StoreValue | r1480_4 | +| ir.cpp:1484:8:1484:8 | Address | &:r1484_5 | +| ir.cpp:1484:8:1484:8 | Address | &:r1484_5 | +| ir.cpp:1484:8:1484:8 | Address | &:r1484_7 | +| ir.cpp:1484:8:1484:8 | Address | &:r1484_7 | +| ir.cpp:1484:8:1484:8 | ChiPartial | partial:m1484_3 | +| ir.cpp:1484:8:1484:8 | ChiTotal | total:m1484_2 | +| ir.cpp:1484:8:1484:8 | Load | m1484_6 | +| ir.cpp:1484:8:1484:8 | SideEffect | m1484_3 | +| ir.cpp:1484:8:1484:8 | SideEffect | m1484_8 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_9 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_10 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_13 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_17 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_18 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_21 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_25 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_26 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_29 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_33 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_34 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_37 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_41 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_42 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_45 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_49 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_50 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_53 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_57 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_58 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_61 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_65 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_66 | +| ir.cpp:1488:8:1488:8 | Address | &:r1488_69 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_3 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_3 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_15 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_23 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_31 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_39 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_47 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_55 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_63 | +| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_71 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_2 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_2 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_8 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_16 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_24 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_32 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_40 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_48 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_56 | +| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_64 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m0_2 | +| ir.cpp:1488:8:1488:8 | Load | m1488_6 | +| ir.cpp:1488:8:1488:8 | Load | m1488_6 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | +| ir.cpp:1488:8:1488:8 | SideEffect | m1488_3 | +| ir.cpp:1488:8:1488:8 | SideEffect | m1488_3 | +| ir.cpp:1488:8:1488:8 | SideEffect | m1488_8 | +| ir.cpp:1488:8:1488:8 | SideEffect | m1488_72 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_14 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_22 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_30 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_38 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_46 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_54 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_62 | +| ir.cpp:1488:8:1488:8 | StoreValue | r1488_70 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_11 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_12 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_19 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_20 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_27 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_28 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_35 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_36 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_43 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_44 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_51 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_52 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_59 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_60 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_67 | +| ir.cpp:1488:8:1488:8 | Unary | r1488_68 | +| ir.cpp:1501:6:1501:35 | ChiPartial | partial:m1501_3 | +| ir.cpp:1501:6:1501:35 | ChiTotal | total:m1501_2 | +| ir.cpp:1501:6:1501:35 | SideEffect | ~m1527_7 | +| ir.cpp:1502:39:1502:39 | Address | &:r1502_1 | +| ir.cpp:1502:39:1502:39 | Address | &:r1502_1 | +| ir.cpp:1502:39:1502:39 | Arg(this) | this:r1502_1 | +| ir.cpp:1502:39:1502:39 | CallTarget | func:r1502_3 | +| ir.cpp:1502:39:1502:39 | ChiPartial | partial:m1502_5 | +| ir.cpp:1502:39:1502:39 | ChiPartial | partial:m1502_7 | +| ir.cpp:1502:39:1502:39 | ChiTotal | total:m1501_4 | +| ir.cpp:1502:39:1502:39 | ChiTotal | total:m1502_2 | +| ir.cpp:1502:39:1502:39 | SideEffect | ~m1501_4 | +| ir.cpp:1505:14:1505:14 | Address | &:r1505_1 | +| ir.cpp:1505:15:1505:15 | Address | &:r1505_5 | +| ir.cpp:1505:18:1505:18 | Address | &:r1505_9 | +| ir.cpp:1505:21:1505:21 | Address | &:r1505_13 | +| ir.cpp:1505:24:1505:24 | Address | &:r1505_17 | +| ir.cpp:1505:27:1505:27 | Address | &:r1505_23 | +| ir.cpp:1505:30:1505:30 | Address | &:r1505_27 | +| ir.cpp:1505:34:1505:34 | Address | &:r1505_31 | +| ir.cpp:1505:41:1505:41 | Address | &:r1505_37 | +| ir.cpp:1505:46:1505:46 | Address | &:r1505_2 | +| ir.cpp:1505:46:1505:46 | Load | m1502_8 | +| ir.cpp:1505:46:1505:46 | StoreValue | r1505_3 | +| ir.cpp:1505:47:1505:47 | Address | &:r1505_19 | +| ir.cpp:1505:47:1505:47 | Address | &:r1505_33 | +| ir.cpp:1505:47:1505:47 | Load | ~m1505_4 | +| ir.cpp:1505:47:1505:47 | Load | ~m1505_4 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_7 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_11 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_15 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_21 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_25 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_29 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_35 | +| ir.cpp:1505:47:1505:47 | StoreValue | r1505_39 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_6 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_10 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_14 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_18 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_20 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_24 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_28 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_32 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_34 | +| ir.cpp:1505:47:1505:47 | Unary | r1505_38 | +| ir.cpp:1506:9:1506:9 | Address | &:r1506_2 | +| ir.cpp:1506:9:1506:9 | Address | &:r1506_3 | +| ir.cpp:1506:9:1506:9 | Load | m1505_12 | +| ir.cpp:1506:9:1506:15 | ChiPartial | partial:m1506_4 | +| ir.cpp:1506:9:1506:15 | ChiTotal | total:m1505_4 | +| ir.cpp:1506:13:1506:15 | StoreValue | r1506_1 | +| ir.cpp:1507:17:1507:18 | Address | &:r1507_1 | +| ir.cpp:1507:22:1507:22 | Address | &:r1507_2 | +| ir.cpp:1507:22:1507:22 | Load | m1505_12 | +| ir.cpp:1507:22:1507:22 | StoreValue | r1507_4 | +| ir.cpp:1507:22:1507:22 | Unary | r1507_3 | +| ir.cpp:1508:13:1508:13 | Address | &:r1508_1 | +| ir.cpp:1508:17:1508:17 | Address | &:r1508_2 | +| ir.cpp:1508:17:1508:17 | Address | &:r1508_3 | +| ir.cpp:1508:17:1508:17 | Load | m1505_8 | +| ir.cpp:1508:17:1508:17 | Load | ~m1505_4 | +| ir.cpp:1508:17:1508:17 | StoreValue | r1508_4 | +| ir.cpp:1509:9:1509:9 | Address | &:r1509_2 | +| ir.cpp:1509:9:1509:9 | Address | &:r1509_3 | +| ir.cpp:1509:9:1509:9 | Load | m1505_22 | +| ir.cpp:1509:9:1509:13 | ChiPartial | partial:m1509_4 | +| ir.cpp:1509:9:1509:13 | ChiTotal | total:m1502_6 | +| ir.cpp:1509:13:1509:13 | StoreValue | r1509_1 | +| ir.cpp:1510:9:1510:10 | Address | &:r1510_5 | +| ir.cpp:1510:9:1510:14 | ChiPartial | partial:m1510_6 | +| ir.cpp:1510:9:1510:14 | ChiTotal | total:m1509_5 | +| ir.cpp:1510:10:1510:10 | Address | &:r1510_2 | +| ir.cpp:1510:10:1510:10 | Address | &:r1510_3 | +| ir.cpp:1510:10:1510:10 | Load | m1505_26 | +| ir.cpp:1510:10:1510:10 | Load | ~m1505_4 | +| ir.cpp:1510:10:1510:10 | Unary | r1510_4 | +| ir.cpp:1510:14:1510:14 | StoreValue | r1510_1 | +| ir.cpp:1511:14:1511:15 | Address | &:r1511_1 | +| ir.cpp:1511:19:1511:19 | Address | &:r1511_2 | +| ir.cpp:1511:19:1511:19 | Load | m1505_22 | +| ir.cpp:1511:19:1511:19 | StoreValue | r1511_4 | +| ir.cpp:1511:19:1511:19 | Unary | r1511_3 | +| ir.cpp:1512:14:1512:15 | Address | &:r1512_1 | +| ir.cpp:1512:19:1512:20 | StoreValue | r1512_4 | +| ir.cpp:1512:20:1512:20 | Address | &:r1512_2 | +| ir.cpp:1512:20:1512:20 | Load | m1505_22 | +| ir.cpp:1512:20:1512:20 | Unary | r1512_3 | +| ir.cpp:1513:13:1513:13 | Address | &:r1513_1 | +| ir.cpp:1513:17:1513:17 | Address | &:r1513_2 | +| ir.cpp:1513:17:1513:17 | Address | &:r1513_3 | +| ir.cpp:1513:17:1513:17 | Load | m1505_22 | +| ir.cpp:1513:17:1513:17 | Load | ~m1510_7 | +| ir.cpp:1513:17:1513:17 | StoreValue | r1513_4 | +| ir.cpp:1517:14:1517:35 | Address | &:r1517_1 | +| ir.cpp:1517:39:1517:39 | Address | &:r1517_2 | +| ir.cpp:1517:39:1517:39 | Load | m1502_8 | +| ir.cpp:1517:39:1517:39 | StoreValue | r1517_3 | +| ir.cpp:1518:15:1518:15 | Address | &:r1518_1 | +| ir.cpp:1518:19:1518:40 | Unary | r1518_2 | +| ir.cpp:1518:19:1518:42 | StoreValue | r1518_4 | +| ir.cpp:1518:42:1518:42 | Unary | r1518_3 | | ir.cpp:1519:15:1519:15 | Address | &:r1519_1 | | ir.cpp:1519:19:1519:40 | Unary | r1519_2 | -| ir.cpp:1519:19:1519:42 | StoreValue | r1519_6 | -| ir.cpp:1519:19:1519:42 | Unary | r1519_5 | -| ir.cpp:1519:42:1519:42 | Address | &:r1519_3 | -| ir.cpp:1519:42:1519:42 | Load | ~m1515_4 | -| ir.cpp:1519:42:1519:42 | Unary | r1519_4 | -| ir.cpp:1520:15:1520:15 | Address | &:r1520_1 | -| ir.cpp:1520:19:1520:40 | Unary | r1520_2 | -| ir.cpp:1520:19:1520:42 | StoreValue | r1520_4 | -| ir.cpp:1520:42:1520:42 | Unary | r1520_3 | -| ir.cpp:1521:9:1521:9 | Address | &:r1521_2 | -| ir.cpp:1521:9:1521:9 | Address | &:r1521_4 | -| ir.cpp:1521:9:1521:9 | Load | m1517_5 | -| ir.cpp:1521:9:1521:9 | Unary | r1521_3 | -| ir.cpp:1521:9:1521:15 | ChiPartial | partial:m1521_5 | -| ir.cpp:1521:9:1521:15 | ChiTotal | total:m1515_4 | -| ir.cpp:1521:13:1521:15 | StoreValue | r1521_1 | -| ir.cpp:1522:17:1522:18 | Address | &:r1522_1 | -| ir.cpp:1522:22:1522:22 | Address | &:r1522_2 | -| ir.cpp:1522:22:1522:22 | Load | m1517_5 | -| ir.cpp:1522:22:1522:22 | StoreValue | r1522_5 | -| ir.cpp:1522:22:1522:22 | Unary | r1522_3 | -| ir.cpp:1522:22:1522:22 | Unary | r1522_4 | -| ir.cpp:1523:13:1523:13 | Address | &:r1523_1 | -| ir.cpp:1523:17:1523:17 | Address | &:r1523_2 | -| ir.cpp:1523:17:1523:17 | Address | &:r1523_3 | -| ir.cpp:1523:17:1523:17 | Load | m1516_5 | -| ir.cpp:1523:17:1523:17 | Load | ~m1515_4 | -| ir.cpp:1523:17:1523:17 | StoreValue | r1523_4 | -| ir.cpp:1524:9:1524:9 | Address | &:r1524_2 | -| ir.cpp:1524:9:1524:9 | Address | &:r1524_4 | -| ir.cpp:1524:9:1524:9 | Load | m1519_7 | -| ir.cpp:1524:9:1524:9 | Unary | r1524_3 | -| ir.cpp:1524:9:1524:13 | ChiPartial | partial:m1524_5 | -| ir.cpp:1524:9:1524:13 | ChiTotal | total:m1508_7 | -| ir.cpp:1524:13:1524:13 | StoreValue | r1524_1 | -| ir.cpp:1525:9:1525:10 | Address | &:r1525_5 | -| ir.cpp:1525:9:1525:14 | ChiPartial | partial:m1525_6 | -| ir.cpp:1525:9:1525:14 | ChiTotal | total:m1524_6 | -| ir.cpp:1525:10:1525:10 | Address | &:r1525_2 | -| ir.cpp:1525:10:1525:10 | Address | &:r1525_3 | -| ir.cpp:1525:10:1525:10 | Load | m1520_5 | -| ir.cpp:1525:10:1525:10 | Load | ~m1515_4 | -| ir.cpp:1525:10:1525:10 | Unary | r1525_4 | -| ir.cpp:1525:14:1525:14 | StoreValue | r1525_1 | -| ir.cpp:1526:14:1526:15 | Address | &:r1526_1 | -| ir.cpp:1526:19:1526:19 | Address | &:r1526_2 | -| ir.cpp:1526:19:1526:19 | Load | m1519_7 | -| ir.cpp:1526:19:1526:19 | StoreValue | r1526_5 | -| ir.cpp:1526:19:1526:19 | Unary | r1526_3 | -| ir.cpp:1526:19:1526:19 | Unary | r1526_4 | -| ir.cpp:1527:14:1527:15 | Address | &:r1527_1 | -| ir.cpp:1527:19:1527:20 | StoreValue | r1527_5 | -| ir.cpp:1527:20:1527:20 | Address | &:r1527_2 | -| ir.cpp:1527:20:1527:20 | Load | m1519_7 | -| ir.cpp:1527:20:1527:20 | Unary | r1527_3 | -| ir.cpp:1527:20:1527:20 | Unary | r1527_4 | -| ir.cpp:1528:13:1528:13 | Address | &:r1528_1 | -| ir.cpp:1528:17:1528:17 | Address | &:r1528_2 | -| ir.cpp:1528:17:1528:17 | Address | &:r1528_3 | -| ir.cpp:1528:17:1528:17 | Load | m1519_7 | -| ir.cpp:1528:17:1528:17 | Load | ~m1525_7 | -| ir.cpp:1528:17:1528:17 | StoreValue | r1528_4 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_5 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_5 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_5 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_5 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_7 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_7 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_7 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_7 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_9 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_10 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_13 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_17 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_18 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_21 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_25 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_26 | -| ir.cpp:1539:8:1539:8 | Address | &:r1539_29 | -| ir.cpp:1539:8:1539:8 | ChiPartial | partial:m1539_3 | -| ir.cpp:1539:8:1539:8 | ChiPartial | partial:m1539_3 | -| ir.cpp:1539:8:1539:8 | ChiPartial | partial:m1539_15 | -| ir.cpp:1539:8:1539:8 | ChiPartial | partial:m1539_23 | -| ir.cpp:1539:8:1539:8 | ChiPartial | partial:m1539_31 | -| ir.cpp:1539:8:1539:8 | ChiTotal | total:m1539_2 | -| ir.cpp:1539:8:1539:8 | ChiTotal | total:m1539_2 | -| ir.cpp:1539:8:1539:8 | ChiTotal | total:m1539_8 | -| ir.cpp:1539:8:1539:8 | ChiTotal | total:m1539_16 | -| ir.cpp:1539:8:1539:8 | ChiTotal | total:m1539_24 | -| ir.cpp:1539:8:1539:8 | Load | m0_2 | -| ir.cpp:1539:8:1539:8 | Load | m0_2 | -| ir.cpp:1539:8:1539:8 | Load | m0_2 | -| ir.cpp:1539:8:1539:8 | Load | m1539_6 | -| ir.cpp:1539:8:1539:8 | Load | m1539_6 | -| ir.cpp:1539:8:1539:8 | Load | ~m0_4 | -| ir.cpp:1539:8:1539:8 | Load | ~m0_4 | -| ir.cpp:1539:8:1539:8 | Load | ~m0_4 | -| ir.cpp:1539:8:1539:8 | SideEffect | m1539_3 | -| ir.cpp:1539:8:1539:8 | SideEffect | m1539_3 | -| ir.cpp:1539:8:1539:8 | SideEffect | m1539_8 | -| ir.cpp:1539:8:1539:8 | SideEffect | m1539_32 | -| ir.cpp:1539:8:1539:8 | StoreValue | r1539_14 | -| ir.cpp:1539:8:1539:8 | StoreValue | r1539_22 | -| ir.cpp:1539:8:1539:8 | StoreValue | r1539_30 | -| ir.cpp:1539:8:1539:8 | Unary | m1539_6 | -| ir.cpp:1539:8:1539:8 | Unary | m1539_6 | -| ir.cpp:1539:8:1539:8 | Unary | m1539_6 | -| ir.cpp:1539:8:1539:8 | Unary | r1539_11 | -| ir.cpp:1539:8:1539:8 | Unary | r1539_12 | -| ir.cpp:1539:8:1539:8 | Unary | r1539_19 | -| ir.cpp:1539:8:1539:8 | Unary | r1539_20 | -| ir.cpp:1539:8:1539:8 | Unary | r1539_27 | -| ir.cpp:1539:8:1539:8 | Unary | r1539_28 | -| ir.cpp:1567:60:1567:95 | Address | &:r1567_5 | -| ir.cpp:1567:60:1567:95 | Address | &:r1567_5 | -| ir.cpp:1567:60:1567:95 | Address | &:r1567_7 | -| ir.cpp:1567:60:1567:95 | Address | &:r1567_7 | -| ir.cpp:1567:60:1567:95 | Address | &:r1567_10 | -| ir.cpp:1567:60:1567:95 | ChiPartial | partial:m1567_3 | -| ir.cpp:1567:60:1567:95 | ChiTotal | total:m1567_2 | -| ir.cpp:1567:60:1567:95 | Load | m0_2 | -| ir.cpp:1567:60:1567:95 | Load | m1567_6 | -| ir.cpp:1567:60:1567:95 | SideEffect | m1567_3 | -| ir.cpp:1567:60:1567:95 | SideEffect | m1567_8 | -| ir.cpp:1568:5:1568:13 | Address | &:r1568_1 | -| ir.cpp:1568:12:1568:12 | Address | &:r1568_2 | -| ir.cpp:1568:12:1568:12 | Load | m1567_6 | -| ir.cpp:1568:12:1568:12 | Unary | r1568_3 | -| ir.cpp:1568:12:1568:12 | Unary | r1568_4 | -| ir.cpp:1571:60:1571:95 | Address | &:r1571_5 | -| ir.cpp:1571:60:1571:95 | Address | &:r1571_5 | -| ir.cpp:1571:60:1571:95 | Address | &:r1571_7 | -| ir.cpp:1571:60:1571:95 | Address | &:r1571_7 | -| ir.cpp:1571:60:1571:95 | Address | &:r1571_10 | -| ir.cpp:1571:60:1571:95 | ChiPartial | partial:m1571_3 | -| ir.cpp:1571:60:1571:95 | ChiTotal | total:m1571_2 | -| ir.cpp:1571:60:1571:95 | Load | m0_2 | -| ir.cpp:1571:60:1571:95 | Load | m1571_6 | -| ir.cpp:1571:60:1571:95 | SideEffect | m1571_3 | -| ir.cpp:1571:60:1571:95 | SideEffect | m1571_8 | -| ir.cpp:1572:5:1572:13 | Address | &:r1572_1 | -| ir.cpp:1572:12:1572:12 | Address | &:r1572_2 | -| ir.cpp:1572:12:1572:12 | Load | m1571_6 | -| ir.cpp:1572:12:1572:12 | Unary | r1572_3 | -| ir.cpp:1572:12:1572:12 | Unary | r1572_4 | -| ir.cpp:1575:60:1575:95 | Address | &:r1575_5 | -| ir.cpp:1575:60:1575:95 | Address | &:r1575_5 | -| ir.cpp:1575:60:1575:95 | Address | &:r1575_7 | -| ir.cpp:1575:60:1575:95 | Address | &:r1575_7 | -| ir.cpp:1575:60:1575:95 | Address | &:r1575_10 | -| ir.cpp:1575:60:1575:95 | ChiPartial | partial:m1575_3 | -| ir.cpp:1575:60:1575:95 | ChiTotal | total:m1575_2 | -| ir.cpp:1575:60:1575:95 | Load | m1575_6 | -| ir.cpp:1575:60:1575:95 | Load | m1576_8 | -| ir.cpp:1575:60:1575:95 | SideEffect | m1575_3 | -| ir.cpp:1575:60:1575:95 | SideEffect | m1575_8 | -| ir.cpp:1576:5:1576:13 | Address | &:r1576_1 | -| ir.cpp:1576:12:1576:12 | Address | &:r1576_2 | -| ir.cpp:1576:12:1576:12 | Address | &:r1576_4 | -| ir.cpp:1576:12:1576:12 | Load | m1575_6 | -| ir.cpp:1576:12:1576:12 | Load | ~m1575_8 | -| ir.cpp:1576:12:1576:12 | StoreValue | r1576_7 | -| ir.cpp:1576:12:1576:12 | Unary | r1576_3 | -| ir.cpp:1576:12:1576:12 | Unary | r1576_5 | -| ir.cpp:1576:12:1576:12 | Unary | r1576_6 | -| ir.cpp:1579:6:1579:37 | ChiPartial | partial:m1579_3 | -| ir.cpp:1579:6:1579:37 | ChiTotal | total:m1579_2 | -| ir.cpp:1579:6:1579:37 | SideEffect | ~m1600_6 | -| ir.cpp:1580:34:1580:34 | Address | &:r1580_1 | -| ir.cpp:1580:34:1580:34 | Address | &:r1580_1 | -| ir.cpp:1580:34:1580:34 | Arg(this) | this:r1580_1 | -| ir.cpp:1580:34:1580:34 | CallTarget | func:r1580_3 | -| ir.cpp:1580:34:1580:34 | ChiPartial | partial:m1580_5 | -| ir.cpp:1580:34:1580:34 | ChiPartial | partial:m1580_7 | -| ir.cpp:1580:34:1580:34 | ChiTotal | total:m1579_4 | -| ir.cpp:1580:34:1580:34 | ChiTotal | total:m1580_2 | -| ir.cpp:1580:34:1580:34 | SideEffect | ~m1579_4 | -| ir.cpp:1583:14:1583:14 | Address | &:r1583_1 | -| ir.cpp:1583:14:1583:14 | Address | &:r1583_6 | -| ir.cpp:1583:14:1583:14 | Address | &:r1583_6 | -| ir.cpp:1583:14:1583:14 | Address | &:r1583_18 | -| ir.cpp:1583:14:1583:14 | Address | &:r1583_18 | -| ir.cpp:1583:14:1583:14 | Address | &:r1583_30 | -| ir.cpp:1583:14:1583:14 | Address | &:r1583_30 | -| ir.cpp:1583:14:1583:14 | Arg(this) | this:r1583_6 | -| ir.cpp:1583:14:1583:14 | Arg(this) | this:r1583_18 | -| ir.cpp:1583:14:1583:14 | Arg(this) | this:r1583_30 | -| ir.cpp:1583:14:1583:14 | CallTarget | func:r1583_7 | -| ir.cpp:1583:14:1583:14 | CallTarget | func:r1583_19 | -| ir.cpp:1583:14:1583:14 | CallTarget | func:r1583_31 | -| ir.cpp:1583:14:1583:14 | ChiPartial | partial:m1583_9 | -| ir.cpp:1583:14:1583:14 | ChiPartial | partial:m1583_12 | -| ir.cpp:1583:14:1583:14 | ChiPartial | partial:m1583_21 | -| ir.cpp:1583:14:1583:14 | ChiPartial | partial:m1583_24 | -| ir.cpp:1583:14:1583:14 | ChiPartial | partial:m1583_33 | -| ir.cpp:1583:14:1583:14 | ChiPartial | partial:m1583_36 | -| ir.cpp:1583:14:1583:14 | ChiTotal | total:m1580_6 | -| ir.cpp:1583:14:1583:14 | ChiTotal | total:m1583_4 | -| ir.cpp:1583:14:1583:14 | ChiTotal | total:m1583_10 | -| ir.cpp:1583:14:1583:14 | ChiTotal | total:m1583_13 | -| ir.cpp:1583:14:1583:14 | ChiTotal | total:m1583_22 | -| ir.cpp:1583:14:1583:14 | ChiTotal | total:m1583_25 | -| ir.cpp:1583:14:1583:14 | SideEffect | m1583_4 | -| ir.cpp:1583:14:1583:14 | SideEffect | m1583_13 | -| ir.cpp:1583:14:1583:14 | SideEffect | m1583_25 | -| ir.cpp:1583:14:1583:14 | SideEffect | ~m1580_6 | -| ir.cpp:1583:14:1583:14 | SideEffect | ~m1583_10 | -| ir.cpp:1583:14:1583:14 | SideEffect | ~m1583_22 | -| ir.cpp:1583:14:1583:14 | Unary | r1583_8 | -| ir.cpp:1583:14:1583:14 | Unary | r1583_20 | -| ir.cpp:1583:14:1583:14 | Unary | r1583_32 | -| ir.cpp:1583:14:1583:27 | StoreValue | r1583_15 | -| ir.cpp:1583:14:1583:27 | StoreValue | r1583_27 | -| ir.cpp:1583:14:1583:27 | StoreValue | r1583_39 | -| ir.cpp:1583:14:1583:27 | Unary | r1583_14 | -| ir.cpp:1583:14:1583:27 | Unary | r1583_26 | -| ir.cpp:1583:14:1583:27 | Unary | r1583_38 | -| ir.cpp:1583:15:1583:15 | Address | &:r1583_5 | -| ir.cpp:1583:18:1583:18 | Address | &:r1583_17 | -| ir.cpp:1583:21:1583:21 | Address | &:r1583_29 | -| ir.cpp:1583:26:1583:26 | Address | &:r1583_2 | -| ir.cpp:1583:26:1583:26 | Load | m1580_8 | -| ir.cpp:1583:26:1583:26 | StoreValue | r1583_3 | -| ir.cpp:1584:9:1584:9 | Address | &:r1584_2 | -| ir.cpp:1584:9:1584:9 | Address | &:r1584_4 | -| ir.cpp:1584:9:1584:9 | Load | m1583_28 | -| ir.cpp:1584:9:1584:9 | Unary | r1584_3 | -| ir.cpp:1584:9:1584:15 | ChiPartial | partial:m1584_5 | -| ir.cpp:1584:9:1584:15 | ChiTotal | total:m1583_37 | -| ir.cpp:1584:13:1584:15 | StoreValue | r1584_1 | -| ir.cpp:1585:17:1585:18 | Address | &:r1585_1 | -| ir.cpp:1585:22:1585:22 | Address | &:r1585_2 | -| ir.cpp:1585:22:1585:22 | Load | m1583_28 | -| ir.cpp:1585:22:1585:22 | StoreValue | r1585_5 | -| ir.cpp:1585:22:1585:22 | Unary | r1585_3 | -| ir.cpp:1585:22:1585:22 | Unary | r1585_4 | -| ir.cpp:1586:13:1586:13 | Address | &:r1586_1 | -| ir.cpp:1586:17:1586:17 | Address | &:r1586_2 | -| ir.cpp:1586:17:1586:17 | Address | &:r1586_3 | -| ir.cpp:1586:17:1586:17 | Load | m1583_16 | -| ir.cpp:1586:17:1586:17 | Load | ~m1583_37 | -| ir.cpp:1586:17:1586:17 | StoreValue | r1586_4 | -| ir.cpp:1587:9:1587:9 | Address | &:r1587_2 | -| ir.cpp:1587:9:1587:9 | Address | &:r1587_4 | -| ir.cpp:1587:9:1587:9 | Load | m1583_40 | -| ir.cpp:1587:9:1587:9 | Unary | r1587_3 | -| ir.cpp:1587:9:1587:13 | ChiPartial | partial:m1587_5 | -| ir.cpp:1587:9:1587:13 | ChiTotal | total:m1583_34 | -| ir.cpp:1587:13:1587:13 | StoreValue | r1587_1 | -| ir.cpp:1588:14:1588:15 | Address | &:r1588_1 | -| ir.cpp:1588:19:1588:19 | Address | &:r1588_2 | -| ir.cpp:1588:19:1588:19 | Load | m1583_40 | -| ir.cpp:1588:19:1588:19 | StoreValue | r1588_5 | -| ir.cpp:1588:19:1588:19 | Unary | r1588_3 | -| ir.cpp:1588:19:1588:19 | Unary | r1588_4 | -| ir.cpp:1589:13:1589:13 | Address | &:r1589_1 | -| ir.cpp:1589:17:1589:17 | Address | &:r1589_2 | -| ir.cpp:1589:17:1589:17 | Address | &:r1589_3 | -| ir.cpp:1589:17:1589:17 | Load | m1583_40 | -| ir.cpp:1589:17:1589:17 | Load | ~m1587_6 | -| ir.cpp:1589:17:1589:17 | StoreValue | r1589_4 | -| ir.cpp:1593:14:1593:35 | Address | &:r1593_1 | -| ir.cpp:1593:39:1593:39 | Address | &:r1593_2 | -| ir.cpp:1593:39:1593:39 | Load | m1580_8 | -| ir.cpp:1593:39:1593:39 | StoreValue | r1593_3 | -| ir.cpp:1594:15:1594:15 | Address | &:r1594_1 | -| ir.cpp:1594:19:1594:40 | Address | &:r1594_2 | -| ir.cpp:1594:19:1594:40 | Address | &:r1594_2 | -| ir.cpp:1594:19:1594:40 | Arg(this) | this:r1594_2 | -| ir.cpp:1594:19:1594:40 | ChiPartial | partial:m1594_8 | -| ir.cpp:1594:19:1594:40 | ChiTotal | total:m1593_4 | -| ir.cpp:1594:19:1594:40 | SideEffect | m1593_4 | -| ir.cpp:1594:42:1594:47 | CallTarget | func:r1594_3 | -| ir.cpp:1594:42:1594:47 | ChiPartial | partial:m1594_5 | -| ir.cpp:1594:42:1594:47 | ChiTotal | total:m1587_6 | -| ir.cpp:1594:42:1594:47 | SideEffect | ~m1587_6 | -| ir.cpp:1594:42:1594:47 | Unary | r1594_4 | -| ir.cpp:1594:48:1594:50 | StoreValue | r1594_11 | -| ir.cpp:1594:48:1594:50 | Unary | r1594_10 | -| ir.cpp:1595:15:1595:15 | Address | &:r1595_1 | -| ir.cpp:1595:19:1595:40 | Address | &:r1595_2 | -| ir.cpp:1595:19:1595:40 | Address | &:r1595_2 | -| ir.cpp:1595:19:1595:40 | Arg(this) | this:r1595_2 | -| ir.cpp:1595:19:1595:40 | ChiPartial | partial:m1595_8 | -| ir.cpp:1595:19:1595:40 | ChiTotal | total:m1594_9 | -| ir.cpp:1595:19:1595:40 | SideEffect | m1594_9 | -| ir.cpp:1595:42:1595:47 | CallTarget | func:r1595_3 | -| ir.cpp:1595:42:1595:47 | ChiPartial | partial:m1595_5 | -| ir.cpp:1595:42:1595:47 | ChiTotal | total:m1594_6 | -| ir.cpp:1595:42:1595:47 | SideEffect | ~m1594_6 | -| ir.cpp:1595:42:1595:47 | Unary | r1595_4 | -| ir.cpp:1595:48:1595:50 | StoreValue | r1595_11 | -| ir.cpp:1595:48:1595:50 | Unary | r1595_10 | +| ir.cpp:1519:19:1519:42 | StoreValue | r1519_4 | +| ir.cpp:1519:42:1519:42 | Unary | r1519_3 | +| ir.cpp:1521:15:1521:15 | Address | &:r1521_1 | +| ir.cpp:1521:19:1521:40 | Unary | r1521_2 | +| ir.cpp:1521:19:1521:42 | StoreValue | r1521_6 | +| ir.cpp:1521:19:1521:42 | Unary | r1521_5 | +| ir.cpp:1521:42:1521:42 | Address | &:r1521_3 | +| ir.cpp:1521:42:1521:42 | Load | ~m1517_4 | +| ir.cpp:1521:42:1521:42 | Unary | r1521_4 | +| ir.cpp:1522:15:1522:15 | Address | &:r1522_1 | +| ir.cpp:1522:19:1522:40 | Unary | r1522_2 | +| ir.cpp:1522:19:1522:42 | StoreValue | r1522_4 | +| ir.cpp:1522:42:1522:42 | Unary | r1522_3 | +| ir.cpp:1523:9:1523:9 | Address | &:r1523_2 | +| ir.cpp:1523:9:1523:9 | Address | &:r1523_4 | +| ir.cpp:1523:9:1523:9 | Load | m1519_5 | +| ir.cpp:1523:9:1523:9 | Unary | r1523_3 | +| ir.cpp:1523:9:1523:15 | ChiPartial | partial:m1523_5 | +| ir.cpp:1523:9:1523:15 | ChiTotal | total:m1517_4 | +| ir.cpp:1523:13:1523:15 | StoreValue | r1523_1 | +| ir.cpp:1524:17:1524:18 | Address | &:r1524_1 | +| ir.cpp:1524:22:1524:22 | Address | &:r1524_2 | +| ir.cpp:1524:22:1524:22 | Load | m1519_5 | +| ir.cpp:1524:22:1524:22 | StoreValue | r1524_5 | +| ir.cpp:1524:22:1524:22 | Unary | r1524_3 | +| ir.cpp:1524:22:1524:22 | Unary | r1524_4 | +| ir.cpp:1525:13:1525:13 | Address | &:r1525_1 | +| ir.cpp:1525:17:1525:17 | Address | &:r1525_2 | +| ir.cpp:1525:17:1525:17 | Address | &:r1525_3 | +| ir.cpp:1525:17:1525:17 | Load | m1518_5 | +| ir.cpp:1525:17:1525:17 | Load | ~m1517_4 | +| ir.cpp:1525:17:1525:17 | StoreValue | r1525_4 | +| ir.cpp:1526:9:1526:9 | Address | &:r1526_2 | +| ir.cpp:1526:9:1526:9 | Address | &:r1526_4 | +| ir.cpp:1526:9:1526:9 | Load | m1521_7 | +| ir.cpp:1526:9:1526:9 | Unary | r1526_3 | +| ir.cpp:1526:9:1526:13 | ChiPartial | partial:m1526_5 | +| ir.cpp:1526:9:1526:13 | ChiTotal | total:m1510_7 | +| ir.cpp:1526:13:1526:13 | StoreValue | r1526_1 | +| ir.cpp:1527:9:1527:10 | Address | &:r1527_5 | +| ir.cpp:1527:9:1527:14 | ChiPartial | partial:m1527_6 | +| ir.cpp:1527:9:1527:14 | ChiTotal | total:m1526_6 | +| ir.cpp:1527:10:1527:10 | Address | &:r1527_2 | +| ir.cpp:1527:10:1527:10 | Address | &:r1527_3 | +| ir.cpp:1527:10:1527:10 | Load | m1522_5 | +| ir.cpp:1527:10:1527:10 | Load | ~m1517_4 | +| ir.cpp:1527:10:1527:10 | Unary | r1527_4 | +| ir.cpp:1527:14:1527:14 | StoreValue | r1527_1 | +| ir.cpp:1528:14:1528:15 | Address | &:r1528_1 | +| ir.cpp:1528:19:1528:19 | Address | &:r1528_2 | +| ir.cpp:1528:19:1528:19 | Load | m1521_7 | +| ir.cpp:1528:19:1528:19 | StoreValue | r1528_5 | +| ir.cpp:1528:19:1528:19 | Unary | r1528_3 | +| ir.cpp:1528:19:1528:19 | Unary | r1528_4 | +| ir.cpp:1529:14:1529:15 | Address | &:r1529_1 | +| ir.cpp:1529:19:1529:20 | StoreValue | r1529_5 | +| ir.cpp:1529:20:1529:20 | Address | &:r1529_2 | +| ir.cpp:1529:20:1529:20 | Load | m1521_7 | +| ir.cpp:1529:20:1529:20 | Unary | r1529_3 | +| ir.cpp:1529:20:1529:20 | Unary | r1529_4 | +| ir.cpp:1530:13:1530:13 | Address | &:r1530_1 | +| ir.cpp:1530:17:1530:17 | Address | &:r1530_2 | +| ir.cpp:1530:17:1530:17 | Address | &:r1530_3 | +| ir.cpp:1530:17:1530:17 | Load | m1521_7 | +| ir.cpp:1530:17:1530:17 | Load | ~m1527_7 | +| ir.cpp:1530:17:1530:17 | StoreValue | r1530_4 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_9 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_10 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_13 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_17 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_18 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_21 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_25 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_26 | +| ir.cpp:1541:8:1541:8 | Address | &:r1541_29 | +| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_3 | +| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_3 | +| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_15 | +| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_23 | +| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_31 | +| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_2 | +| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_2 | +| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_8 | +| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_16 | +| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_24 | +| ir.cpp:1541:8:1541:8 | Load | m0_2 | +| ir.cpp:1541:8:1541:8 | Load | m0_2 | +| ir.cpp:1541:8:1541:8 | Load | m0_2 | +| ir.cpp:1541:8:1541:8 | Load | m1541_6 | +| ir.cpp:1541:8:1541:8 | Load | m1541_6 | +| ir.cpp:1541:8:1541:8 | Load | ~m0_4 | +| ir.cpp:1541:8:1541:8 | Load | ~m0_4 | +| ir.cpp:1541:8:1541:8 | Load | ~m0_4 | +| ir.cpp:1541:8:1541:8 | SideEffect | m1541_3 | +| ir.cpp:1541:8:1541:8 | SideEffect | m1541_3 | +| ir.cpp:1541:8:1541:8 | SideEffect | m1541_8 | +| ir.cpp:1541:8:1541:8 | SideEffect | m1541_32 | +| ir.cpp:1541:8:1541:8 | StoreValue | r1541_14 | +| ir.cpp:1541:8:1541:8 | StoreValue | r1541_22 | +| ir.cpp:1541:8:1541:8 | StoreValue | r1541_30 | +| ir.cpp:1541:8:1541:8 | Unary | m1541_6 | +| ir.cpp:1541:8:1541:8 | Unary | m1541_6 | +| ir.cpp:1541:8:1541:8 | Unary | m1541_6 | +| ir.cpp:1541:8:1541:8 | Unary | r1541_11 | +| ir.cpp:1541:8:1541:8 | Unary | r1541_12 | +| ir.cpp:1541:8:1541:8 | Unary | r1541_19 | +| ir.cpp:1541:8:1541:8 | Unary | r1541_20 | +| ir.cpp:1541:8:1541:8 | Unary | r1541_27 | +| ir.cpp:1541:8:1541:8 | Unary | r1541_28 | +| ir.cpp:1569:60:1569:95 | Address | &:r1569_5 | +| ir.cpp:1569:60:1569:95 | Address | &:r1569_5 | +| ir.cpp:1569:60:1569:95 | Address | &:r1569_7 | +| ir.cpp:1569:60:1569:95 | Address | &:r1569_7 | +| ir.cpp:1569:60:1569:95 | Address | &:r1569_10 | +| ir.cpp:1569:60:1569:95 | ChiPartial | partial:m1569_3 | +| ir.cpp:1569:60:1569:95 | ChiTotal | total:m1569_2 | +| ir.cpp:1569:60:1569:95 | Load | m0_2 | +| ir.cpp:1569:60:1569:95 | Load | m1569_6 | +| ir.cpp:1569:60:1569:95 | SideEffect | m1569_3 | +| ir.cpp:1569:60:1569:95 | SideEffect | m1569_8 | +| ir.cpp:1570:5:1570:13 | Address | &:r1570_1 | +| ir.cpp:1570:12:1570:12 | Address | &:r1570_2 | +| ir.cpp:1570:12:1570:12 | Load | m1569_6 | +| ir.cpp:1570:12:1570:12 | Unary | r1570_3 | +| ir.cpp:1570:12:1570:12 | Unary | r1570_4 | +| ir.cpp:1573:60:1573:95 | Address | &:r1573_5 | +| ir.cpp:1573:60:1573:95 | Address | &:r1573_5 | +| ir.cpp:1573:60:1573:95 | Address | &:r1573_7 | +| ir.cpp:1573:60:1573:95 | Address | &:r1573_7 | +| ir.cpp:1573:60:1573:95 | Address | &:r1573_10 | +| ir.cpp:1573:60:1573:95 | ChiPartial | partial:m1573_3 | +| ir.cpp:1573:60:1573:95 | ChiTotal | total:m1573_2 | +| ir.cpp:1573:60:1573:95 | Load | m0_2 | +| ir.cpp:1573:60:1573:95 | Load | m1573_6 | +| ir.cpp:1573:60:1573:95 | SideEffect | m1573_3 | +| ir.cpp:1573:60:1573:95 | SideEffect | m1573_8 | +| ir.cpp:1574:5:1574:13 | Address | &:r1574_1 | +| ir.cpp:1574:12:1574:12 | Address | &:r1574_2 | +| ir.cpp:1574:12:1574:12 | Load | m1573_6 | +| ir.cpp:1574:12:1574:12 | Unary | r1574_3 | +| ir.cpp:1574:12:1574:12 | Unary | r1574_4 | +| ir.cpp:1577:60:1577:95 | Address | &:r1577_5 | +| ir.cpp:1577:60:1577:95 | Address | &:r1577_5 | +| ir.cpp:1577:60:1577:95 | Address | &:r1577_7 | +| ir.cpp:1577:60:1577:95 | Address | &:r1577_7 | +| ir.cpp:1577:60:1577:95 | Address | &:r1577_10 | +| ir.cpp:1577:60:1577:95 | ChiPartial | partial:m1577_3 | +| ir.cpp:1577:60:1577:95 | ChiTotal | total:m1577_2 | +| ir.cpp:1577:60:1577:95 | Load | m1577_6 | +| ir.cpp:1577:60:1577:95 | Load | m1578_8 | +| ir.cpp:1577:60:1577:95 | SideEffect | m1577_3 | +| ir.cpp:1577:60:1577:95 | SideEffect | m1577_8 | +| ir.cpp:1578:5:1578:13 | Address | &:r1578_1 | +| ir.cpp:1578:12:1578:12 | Address | &:r1578_2 | +| ir.cpp:1578:12:1578:12 | Address | &:r1578_4 | +| ir.cpp:1578:12:1578:12 | Load | m1577_6 | +| ir.cpp:1578:12:1578:12 | Load | ~m1577_8 | +| ir.cpp:1578:12:1578:12 | StoreValue | r1578_7 | +| ir.cpp:1578:12:1578:12 | Unary | r1578_3 | +| ir.cpp:1578:12:1578:12 | Unary | r1578_5 | +| ir.cpp:1578:12:1578:12 | Unary | r1578_6 | +| ir.cpp:1581:6:1581:37 | ChiPartial | partial:m1581_3 | +| ir.cpp:1581:6:1581:37 | ChiTotal | total:m1581_2 | +| ir.cpp:1581:6:1581:37 | SideEffect | ~m1602_6 | +| ir.cpp:1582:34:1582:34 | Address | &:r1582_1 | +| ir.cpp:1582:34:1582:34 | Address | &:r1582_1 | +| ir.cpp:1582:34:1582:34 | Arg(this) | this:r1582_1 | +| ir.cpp:1582:34:1582:34 | CallTarget | func:r1582_3 | +| ir.cpp:1582:34:1582:34 | ChiPartial | partial:m1582_5 | +| ir.cpp:1582:34:1582:34 | ChiPartial | partial:m1582_7 | +| ir.cpp:1582:34:1582:34 | ChiTotal | total:m1581_4 | +| ir.cpp:1582:34:1582:34 | ChiTotal | total:m1582_2 | +| ir.cpp:1582:34:1582:34 | SideEffect | ~m1581_4 | +| ir.cpp:1585:14:1585:14 | Address | &:r1585_1 | +| ir.cpp:1585:14:1585:14 | Address | &:r1585_6 | +| ir.cpp:1585:14:1585:14 | Address | &:r1585_6 | +| ir.cpp:1585:14:1585:14 | Address | &:r1585_18 | +| ir.cpp:1585:14:1585:14 | Address | &:r1585_18 | +| ir.cpp:1585:14:1585:14 | Address | &:r1585_30 | +| ir.cpp:1585:14:1585:14 | Address | &:r1585_30 | +| ir.cpp:1585:14:1585:14 | Arg(this) | this:r1585_6 | +| ir.cpp:1585:14:1585:14 | Arg(this) | this:r1585_18 | +| ir.cpp:1585:14:1585:14 | Arg(this) | this:r1585_30 | +| ir.cpp:1585:14:1585:14 | CallTarget | func:r1585_7 | +| ir.cpp:1585:14:1585:14 | CallTarget | func:r1585_19 | +| ir.cpp:1585:14:1585:14 | CallTarget | func:r1585_31 | +| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_9 | +| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_12 | +| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_21 | +| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_24 | +| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_33 | +| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_36 | +| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1582_6 | +| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_4 | +| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_10 | +| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_13 | +| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_22 | +| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_25 | +| ir.cpp:1585:14:1585:14 | SideEffect | m1585_4 | +| ir.cpp:1585:14:1585:14 | SideEffect | m1585_13 | +| ir.cpp:1585:14:1585:14 | SideEffect | m1585_25 | +| ir.cpp:1585:14:1585:14 | SideEffect | ~m1582_6 | +| ir.cpp:1585:14:1585:14 | SideEffect | ~m1585_10 | +| ir.cpp:1585:14:1585:14 | SideEffect | ~m1585_22 | +| ir.cpp:1585:14:1585:14 | Unary | r1585_8 | +| ir.cpp:1585:14:1585:14 | Unary | r1585_20 | +| ir.cpp:1585:14:1585:14 | Unary | r1585_32 | +| ir.cpp:1585:14:1585:27 | StoreValue | r1585_15 | +| ir.cpp:1585:14:1585:27 | StoreValue | r1585_27 | +| ir.cpp:1585:14:1585:27 | StoreValue | r1585_39 | +| ir.cpp:1585:14:1585:27 | Unary | r1585_14 | +| ir.cpp:1585:14:1585:27 | Unary | r1585_26 | +| ir.cpp:1585:14:1585:27 | Unary | r1585_38 | +| ir.cpp:1585:15:1585:15 | Address | &:r1585_5 | +| ir.cpp:1585:18:1585:18 | Address | &:r1585_17 | +| ir.cpp:1585:21:1585:21 | Address | &:r1585_29 | +| ir.cpp:1585:26:1585:26 | Address | &:r1585_2 | +| ir.cpp:1585:26:1585:26 | Load | m1582_8 | +| ir.cpp:1585:26:1585:26 | StoreValue | r1585_3 | +| ir.cpp:1586:9:1586:9 | Address | &:r1586_2 | +| ir.cpp:1586:9:1586:9 | Address | &:r1586_4 | +| ir.cpp:1586:9:1586:9 | Load | m1585_28 | +| ir.cpp:1586:9:1586:9 | Unary | r1586_3 | +| ir.cpp:1586:9:1586:15 | ChiPartial | partial:m1586_5 | +| ir.cpp:1586:9:1586:15 | ChiTotal | total:m1585_37 | +| ir.cpp:1586:13:1586:15 | StoreValue | r1586_1 | +| ir.cpp:1587:17:1587:18 | Address | &:r1587_1 | +| ir.cpp:1587:22:1587:22 | Address | &:r1587_2 | +| ir.cpp:1587:22:1587:22 | Load | m1585_28 | +| ir.cpp:1587:22:1587:22 | StoreValue | r1587_5 | +| ir.cpp:1587:22:1587:22 | Unary | r1587_3 | +| ir.cpp:1587:22:1587:22 | Unary | r1587_4 | +| ir.cpp:1588:13:1588:13 | Address | &:r1588_1 | +| ir.cpp:1588:17:1588:17 | Address | &:r1588_2 | +| ir.cpp:1588:17:1588:17 | Address | &:r1588_3 | +| ir.cpp:1588:17:1588:17 | Load | m1585_16 | +| ir.cpp:1588:17:1588:17 | Load | ~m1585_37 | +| ir.cpp:1588:17:1588:17 | StoreValue | r1588_4 | +| ir.cpp:1589:9:1589:9 | Address | &:r1589_2 | +| ir.cpp:1589:9:1589:9 | Address | &:r1589_4 | +| ir.cpp:1589:9:1589:9 | Load | m1585_40 | +| ir.cpp:1589:9:1589:9 | Unary | r1589_3 | +| ir.cpp:1589:9:1589:13 | ChiPartial | partial:m1589_5 | +| ir.cpp:1589:9:1589:13 | ChiTotal | total:m1585_34 | +| ir.cpp:1589:13:1589:13 | StoreValue | r1589_1 | +| ir.cpp:1590:14:1590:15 | Address | &:r1590_1 | +| ir.cpp:1590:19:1590:19 | Address | &:r1590_2 | +| ir.cpp:1590:19:1590:19 | Load | m1585_40 | +| ir.cpp:1590:19:1590:19 | StoreValue | r1590_5 | +| ir.cpp:1590:19:1590:19 | Unary | r1590_3 | +| ir.cpp:1590:19:1590:19 | Unary | r1590_4 | +| ir.cpp:1591:13:1591:13 | Address | &:r1591_1 | +| ir.cpp:1591:17:1591:17 | Address | &:r1591_2 | +| ir.cpp:1591:17:1591:17 | Address | &:r1591_3 | +| ir.cpp:1591:17:1591:17 | Load | m1585_40 | +| ir.cpp:1591:17:1591:17 | Load | ~m1589_6 | +| ir.cpp:1591:17:1591:17 | StoreValue | r1591_4 | +| ir.cpp:1595:14:1595:35 | Address | &:r1595_1 | +| ir.cpp:1595:39:1595:39 | Address | &:r1595_2 | +| ir.cpp:1595:39:1595:39 | Load | m1582_8 | +| ir.cpp:1595:39:1595:39 | StoreValue | r1595_3 | | ir.cpp:1596:15:1596:15 | Address | &:r1596_1 | | ir.cpp:1596:19:1596:40 | Address | &:r1596_2 | | ir.cpp:1596:19:1596:40 | Address | &:r1596_2 | | ir.cpp:1596:19:1596:40 | Arg(this) | this:r1596_2 | | ir.cpp:1596:19:1596:40 | ChiPartial | partial:m1596_8 | -| ir.cpp:1596:19:1596:40 | ChiTotal | total:m1595_9 | -| ir.cpp:1596:19:1596:40 | SideEffect | m1595_9 | +| ir.cpp:1596:19:1596:40 | ChiTotal | total:m1595_4 | +| ir.cpp:1596:19:1596:40 | SideEffect | m1595_4 | | ir.cpp:1596:42:1596:47 | CallTarget | func:r1596_3 | | ir.cpp:1596:42:1596:47 | ChiPartial | partial:m1596_5 | -| ir.cpp:1596:42:1596:47 | ChiTotal | total:m1595_6 | -| ir.cpp:1596:42:1596:47 | SideEffect | ~m1595_6 | +| ir.cpp:1596:42:1596:47 | ChiTotal | total:m1589_6 | +| ir.cpp:1596:42:1596:47 | SideEffect | ~m1589_6 | | ir.cpp:1596:42:1596:47 | Unary | r1596_4 | | ir.cpp:1596:48:1596:50 | StoreValue | r1596_11 | | ir.cpp:1596:48:1596:50 | Unary | r1596_10 | -| ir.cpp:1597:9:1597:9 | Address | &:r1597_2 | -| ir.cpp:1597:9:1597:9 | Address | &:r1597_4 | -| ir.cpp:1597:9:1597:9 | Load | m1595_12 | -| ir.cpp:1597:9:1597:9 | Unary | r1597_3 | -| ir.cpp:1597:9:1597:15 | ChiPartial | partial:m1597_5 | -| ir.cpp:1597:9:1597:15 | ChiTotal | total:m1596_9 | -| ir.cpp:1597:13:1597:15 | StoreValue | r1597_1 | -| ir.cpp:1598:17:1598:18 | Address | &:r1598_1 | -| ir.cpp:1598:22:1598:22 | Address | &:r1598_2 | -| ir.cpp:1598:22:1598:22 | Load | m1595_12 | -| ir.cpp:1598:22:1598:22 | StoreValue | r1598_5 | -| ir.cpp:1598:22:1598:22 | Unary | r1598_3 | -| ir.cpp:1598:22:1598:22 | Unary | r1598_4 | -| ir.cpp:1599:13:1599:13 | Address | &:r1599_1 | -| ir.cpp:1599:17:1599:17 | Address | &:r1599_2 | -| ir.cpp:1599:17:1599:17 | Address | &:r1599_3 | -| ir.cpp:1599:17:1599:17 | Load | m1594_12 | -| ir.cpp:1599:17:1599:17 | Load | ~m1596_9 | -| ir.cpp:1599:17:1599:17 | StoreValue | r1599_4 | -| ir.cpp:1600:9:1600:9 | Address | &:r1600_2 | -| ir.cpp:1600:9:1600:9 | Address | &:r1600_4 | -| ir.cpp:1600:9:1600:9 | Load | m1596_12 | -| ir.cpp:1600:9:1600:9 | Unary | r1600_3 | -| ir.cpp:1600:9:1600:13 | ChiPartial | partial:m1600_5 | -| ir.cpp:1600:9:1600:13 | ChiTotal | total:m1596_6 | -| ir.cpp:1600:13:1600:13 | StoreValue | r1600_1 | -| ir.cpp:1601:14:1601:15 | Address | &:r1601_1 | -| ir.cpp:1601:19:1601:19 | Address | &:r1601_2 | -| ir.cpp:1601:19:1601:19 | Load | m1596_12 | -| ir.cpp:1601:19:1601:19 | StoreValue | r1601_5 | -| ir.cpp:1601:19:1601:19 | Unary | r1601_3 | -| ir.cpp:1601:19:1601:19 | Unary | r1601_4 | -| ir.cpp:1602:13:1602:13 | Address | &:r1602_1 | -| ir.cpp:1602:17:1602:17 | Address | &:r1602_2 | -| ir.cpp:1602:17:1602:17 | Address | &:r1602_3 | -| ir.cpp:1602:17:1602:17 | Load | m1596_12 | -| ir.cpp:1602:17:1602:17 | Load | ~m1600_6 | -| ir.cpp:1602:17:1602:17 | StoreValue | r1602_4 | -| ir.cpp:1606:8:1606:8 | Address | &:r1606_5 | -| ir.cpp:1606:8:1606:8 | Address | &:r1606_5 | -| ir.cpp:1606:8:1606:8 | Address | &:r1606_7 | -| ir.cpp:1606:8:1606:8 | Address | &:r1606_7 | -| ir.cpp:1606:8:1606:8 | ChiPartial | partial:m1606_3 | -| ir.cpp:1606:8:1606:8 | ChiTotal | total:m1606_2 | -| ir.cpp:1606:8:1606:8 | Load | m1606_6 | -| ir.cpp:1606:8:1606:8 | SideEffect | m1606_3 | -| ir.cpp:1606:8:1606:8 | SideEffect | m1606_8 | -| ir.cpp:1633:61:1633:98 | Address | &:r1633_5 | -| ir.cpp:1633:61:1633:98 | Address | &:r1633_5 | -| ir.cpp:1633:61:1633:98 | Address | &:r1633_7 | -| ir.cpp:1633:61:1633:98 | Address | &:r1633_7 | -| ir.cpp:1633:61:1633:98 | Address | &:r1633_10 | -| ir.cpp:1633:61:1633:98 | ChiPartial | partial:m1633_3 | -| ir.cpp:1633:61:1633:98 | ChiTotal | total:m1633_2 | -| ir.cpp:1633:61:1633:98 | Load | m1633_6 | -| ir.cpp:1633:61:1633:98 | Load | m1634_6 | -| ir.cpp:1633:61:1633:98 | SideEffect | m1633_3 | -| ir.cpp:1633:61:1633:98 | SideEffect | m1633_8 | -| ir.cpp:1634:5:1634:13 | Address | &:r1634_1 | -| ir.cpp:1634:12:1634:12 | Address | &:r1634_2 | -| ir.cpp:1634:12:1634:12 | Address | &:r1634_4 | -| ir.cpp:1634:12:1634:12 | Load | m1633_6 | -| ir.cpp:1634:12:1634:12 | Load | ~m1633_8 | -| ir.cpp:1634:12:1634:12 | StoreValue | r1634_5 | -| ir.cpp:1634:12:1634:12 | Unary | r1634_3 | -| ir.cpp:1637:61:1637:98 | Address | &:r1637_5 | -| ir.cpp:1637:61:1637:98 | Address | &:r1637_5 | -| ir.cpp:1637:61:1637:98 | Address | &:r1637_7 | -| ir.cpp:1637:61:1637:98 | Address | &:r1637_7 | -| ir.cpp:1637:61:1637:98 | Address | &:r1637_10 | -| ir.cpp:1637:61:1637:98 | ChiPartial | partial:m1637_3 | -| ir.cpp:1637:61:1637:98 | ChiTotal | total:m1637_2 | -| ir.cpp:1637:61:1637:98 | Load | m1637_6 | -| ir.cpp:1637:61:1637:98 | Load | m1638_8 | -| ir.cpp:1637:61:1637:98 | SideEffect | m1637_3 | -| ir.cpp:1637:61:1637:98 | SideEffect | m1637_8 | -| ir.cpp:1638:5:1638:13 | Address | &:r1638_1 | -| ir.cpp:1638:12:1638:12 | Address | &:r1638_2 | -| ir.cpp:1638:12:1638:12 | Address | &:r1638_4 | -| ir.cpp:1638:12:1638:12 | Load | m1637_6 | -| ir.cpp:1638:12:1638:12 | Load | ~m1637_8 | -| ir.cpp:1638:12:1638:12 | StoreValue | r1638_7 | -| ir.cpp:1638:12:1638:12 | Unary | r1638_3 | -| ir.cpp:1638:12:1638:12 | Unary | r1638_5 | -| ir.cpp:1638:12:1638:12 | Unary | r1638_6 | -| ir.cpp:1641:61:1641:98 | Address | &:r1641_5 | -| ir.cpp:1641:61:1641:98 | Address | &:r1641_5 | -| ir.cpp:1641:61:1641:98 | Address | &:r1641_7 | -| ir.cpp:1641:61:1641:98 | Address | &:r1641_7 | -| ir.cpp:1641:61:1641:98 | Address | &:r1641_10 | -| ir.cpp:1641:61:1641:98 | ChiPartial | partial:m1641_3 | -| ir.cpp:1641:61:1641:98 | ChiTotal | total:m1641_2 | -| ir.cpp:1641:61:1641:98 | Load | m1641_6 | -| ir.cpp:1641:61:1641:98 | Load | m1642_6 | -| ir.cpp:1641:61:1641:98 | SideEffect | m1641_3 | -| ir.cpp:1641:61:1641:98 | SideEffect | m1641_8 | -| ir.cpp:1642:5:1642:13 | Address | &:r1642_1 | -| ir.cpp:1642:12:1642:12 | Address | &:r1642_2 | -| ir.cpp:1642:12:1642:12 | StoreValue | r1642_3 | -| ir.cpp:1642:12:1642:12 | StoreValue | r1642_5 | -| ir.cpp:1642:12:1642:12 | Unary | r1642_2 | -| ir.cpp:1645:6:1645:40 | ChiPartial | partial:m1645_3 | -| ir.cpp:1645:6:1645:40 | ChiTotal | total:m1645_2 | -| ir.cpp:1645:6:1645:40 | SideEffect | ~m1666_6 | -| ir.cpp:1646:36:1646:36 | Address | &:r1646_1 | -| ir.cpp:1646:36:1646:36 | Address | &:r1646_1 | -| ir.cpp:1646:36:1646:36 | Arg(this) | this:r1646_1 | -| ir.cpp:1646:36:1646:36 | CallTarget | func:r1646_3 | -| ir.cpp:1646:36:1646:36 | ChiPartial | partial:m1646_5 | -| ir.cpp:1646:36:1646:36 | ChiPartial | partial:m1646_7 | -| ir.cpp:1646:36:1646:36 | ChiTotal | total:m1645_4 | -| ir.cpp:1646:36:1646:36 | ChiTotal | total:m1646_2 | -| ir.cpp:1646:36:1646:36 | SideEffect | ~m1645_4 | -| ir.cpp:1649:16:1649:16 | Address | &:r1649_1 | -| ir.cpp:1649:16:1649:16 | Address | &:r1649_7 | -| ir.cpp:1649:16:1649:16 | Address | &:r1649_21 | -| ir.cpp:1649:16:1649:16 | Address | &:r1649_35 | -| ir.cpp:1649:16:1649:16 | CallTarget | func:r1649_10 | -| ir.cpp:1649:16:1649:16 | CallTarget | func:r1649_24 | -| ir.cpp:1649:16:1649:16 | CallTarget | func:r1649_38 | -| ir.cpp:1649:16:1649:16 | ChiPartial | partial:m1649_12 | -| ir.cpp:1649:16:1649:16 | ChiPartial | partial:m1649_26 | -| ir.cpp:1649:16:1649:16 | ChiPartial | partial:m1649_40 | -| ir.cpp:1649:16:1649:16 | ChiTotal | total:m1646_6 | -| ir.cpp:1649:16:1649:16 | ChiTotal | total:m1649_13 | -| ir.cpp:1649:16:1649:16 | ChiTotal | total:m1649_27 | -| ir.cpp:1649:16:1649:16 | Load | m1649_4 | -| ir.cpp:1649:16:1649:16 | Load | m1649_4 | -| ir.cpp:1649:16:1649:16 | Load | m1649_4 | -| ir.cpp:1649:16:1649:16 | SideEffect | ~m1646_6 | -| ir.cpp:1649:16:1649:16 | SideEffect | ~m1649_13 | -| ir.cpp:1649:16:1649:16 | SideEffect | ~m1649_27 | -| ir.cpp:1649:16:1649:16 | StoreValue | r1649_11 | -| ir.cpp:1649:16:1649:16 | Unary | r1649_8 | -| ir.cpp:1649:16:1649:16 | Unary | r1649_22 | -| ir.cpp:1649:16:1649:16 | Unary | r1649_25 | -| ir.cpp:1649:16:1649:16 | Unary | r1649_36 | -| ir.cpp:1649:16:1649:16 | Unary | r1649_39 | -| ir.cpp:1649:16:1649:30 | Address | &:r1649_6 | -| ir.cpp:1649:16:1649:30 | StoreValue | r1649_18 | -| ir.cpp:1649:16:1649:30 | StoreValue | r1649_32 | -| ir.cpp:1649:16:1649:30 | StoreValue | r1649_46 | -| ir.cpp:1649:16:1649:30 | Unary | r1649_6 | -| ir.cpp:1649:16:1649:30 | Unary | r1649_31 | -| ir.cpp:1649:16:1649:30 | Unary | r1649_45 | -| ir.cpp:1649:17:1649:17 | Address | &:r1649_5 | -| ir.cpp:1649:20:1649:20 | Address | &:r1649_20 | -| ir.cpp:1649:23:1649:23 | Address | &:r1649_34 | -| ir.cpp:1649:29:1649:29 | StoreValue | r1649_3 | -| ir.cpp:1649:29:1649:29 | Unary | r1649_2 | -| ir.cpp:1649:30:1649:30 | Address | &:r1649_9 | -| ir.cpp:1649:30:1649:30 | Address | &:r1649_9 | -| ir.cpp:1649:30:1649:30 | Address | &:r1649_23 | -| ir.cpp:1649:30:1649:30 | Address | &:r1649_23 | -| ir.cpp:1649:30:1649:30 | Address | &:r1649_37 | -| ir.cpp:1649:30:1649:30 | Address | &:r1649_37 | -| ir.cpp:1649:30:1649:30 | Arg(this) | this:r1649_9 | -| ir.cpp:1649:30:1649:30 | Arg(this) | this:r1649_23 | -| ir.cpp:1649:30:1649:30 | Arg(this) | this:r1649_37 | -| ir.cpp:1649:30:1649:30 | ChiPartial | partial:m1649_15 | -| ir.cpp:1649:30:1649:30 | ChiPartial | partial:m1649_29 | -| ir.cpp:1649:30:1649:30 | ChiPartial | partial:m1649_43 | -| ir.cpp:1649:30:1649:30 | ChiTotal | total:m1646_8 | -| ir.cpp:1649:30:1649:30 | ChiTotal | total:m1649_16 | -| ir.cpp:1649:30:1649:30 | ChiTotal | total:m1649_30 | -| ir.cpp:1649:30:1649:30 | SideEffect | m1646_8 | -| ir.cpp:1649:30:1649:30 | SideEffect | m1649_16 | -| ir.cpp:1649:30:1649:30 | SideEffect | m1649_30 | -| ir.cpp:1650:9:1650:9 | Address | &:r1650_2 | -| ir.cpp:1650:9:1650:9 | Address | &:r1650_4 | -| ir.cpp:1650:9:1650:9 | Load | m1649_19 | -| ir.cpp:1650:9:1650:9 | Unary | r1650_3 | -| ir.cpp:1650:13:1650:13 | StoreValue | r1650_1 | -| ir.cpp:1651:14:1651:15 | Address | &:r1651_1 | -| ir.cpp:1651:19:1651:19 | Address | &:r1651_2 | -| ir.cpp:1651:19:1651:19 | Load | m1649_19 | -| ir.cpp:1651:19:1651:19 | StoreValue | r1651_5 | -| ir.cpp:1651:19:1651:19 | Unary | r1651_3 | -| ir.cpp:1651:19:1651:19 | Unary | r1651_4 | -| ir.cpp:1652:13:1652:13 | Address | &:r1652_1 | -| ir.cpp:1652:17:1652:17 | Address | &:r1652_2 | -| ir.cpp:1652:17:1652:17 | Address | &:r1652_3 | -| ir.cpp:1652:17:1652:17 | Load | m1649_19 | -| ir.cpp:1652:17:1652:17 | Load | m1650_5 | -| ir.cpp:1652:17:1652:17 | StoreValue | r1652_4 | -| ir.cpp:1653:9:1653:9 | Address | &:r1653_2 | -| ir.cpp:1653:9:1653:9 | Address | &:r1653_4 | -| ir.cpp:1653:9:1653:9 | Load | m1649_33 | -| ir.cpp:1653:9:1653:9 | Unary | r1653_3 | -| ir.cpp:1653:9:1653:13 | ChiPartial | partial:m1653_5 | -| ir.cpp:1653:9:1653:13 | ChiTotal | total:m1649_41 | -| ir.cpp:1653:13:1653:13 | StoreValue | r1653_1 | -| ir.cpp:1654:14:1654:15 | Address | &:r1654_1 | -| ir.cpp:1654:19:1654:19 | Address | &:r1654_2 | -| ir.cpp:1654:19:1654:19 | Load | m1649_33 | -| ir.cpp:1654:19:1654:19 | StoreValue | r1654_5 | -| ir.cpp:1654:19:1654:19 | Unary | r1654_3 | -| ir.cpp:1654:19:1654:19 | Unary | r1654_4 | -| ir.cpp:1655:13:1655:13 | Address | &:r1655_1 | -| ir.cpp:1655:17:1655:17 | Address | &:r1655_2 | -| ir.cpp:1655:17:1655:17 | Address | &:r1655_3 | -| ir.cpp:1655:17:1655:17 | Load | m1649_33 | -| ir.cpp:1655:17:1655:17 | Load | ~m1653_6 | -| ir.cpp:1655:17:1655:17 | StoreValue | r1655_4 | -| ir.cpp:1659:16:1659:37 | Address | &:r1659_1 | -| ir.cpp:1659:41:1659:41 | StoreValue | r1659_3 | -| ir.cpp:1659:41:1659:41 | Unary | r1659_2 | -| ir.cpp:1660:16:1660:16 | Address | &:r1660_1 | -| ir.cpp:1660:20:1660:41 | Address | &:r1660_3 | -| ir.cpp:1660:20:1660:41 | Address | &:r1660_5 | -| ir.cpp:1660:20:1660:41 | Address | &:r1660_5 | -| ir.cpp:1660:20:1660:41 | Arg(this) | this:r1660_5 | -| ir.cpp:1660:20:1660:41 | ChiPartial | partial:m1660_11 | -| ir.cpp:1660:20:1660:41 | ChiTotal | total:m1649_44 | -| ir.cpp:1660:20:1660:41 | Load | m1659_4 | -| ir.cpp:1660:20:1660:41 | SideEffect | m1649_44 | -| ir.cpp:1660:20:1660:41 | Unary | r1660_4 | -| ir.cpp:1660:20:1660:50 | Address | &:r1660_2 | -| ir.cpp:1660:20:1660:50 | StoreValue | r1660_14 | -| ir.cpp:1660:20:1660:50 | Unary | r1660_2 | -| ir.cpp:1660:43:1660:48 | CallTarget | func:r1660_6 | -| ir.cpp:1660:43:1660:48 | ChiPartial | partial:m1660_8 | -| ir.cpp:1660:43:1660:48 | ChiTotal | total:m1653_6 | -| ir.cpp:1660:43:1660:48 | SideEffect | ~m1653_6 | -| ir.cpp:1660:43:1660:48 | StoreValue | r1660_7 | -| ir.cpp:1661:15:1661:15 | Address | &:r1661_1 | -| ir.cpp:1661:19:1661:40 | Address | &:r1661_2 | -| ir.cpp:1661:19:1661:40 | Address | &:r1661_4 | -| ir.cpp:1661:19:1661:40 | Address | &:r1661_4 | -| ir.cpp:1661:19:1661:40 | Arg(this) | this:r1661_4 | -| ir.cpp:1661:19:1661:40 | ChiPartial | partial:m1661_10 | -| ir.cpp:1661:19:1661:40 | ChiTotal | total:m1660_12 | -| ir.cpp:1661:19:1661:40 | Load | m1659_4 | -| ir.cpp:1661:19:1661:40 | SideEffect | m1660_12 | -| ir.cpp:1661:19:1661:40 | Unary | r1661_3 | -| ir.cpp:1661:42:1661:47 | CallTarget | func:r1661_5 | -| ir.cpp:1661:42:1661:47 | ChiPartial | partial:m1661_7 | -| ir.cpp:1661:42:1661:47 | ChiTotal | total:m1660_9 | -| ir.cpp:1661:42:1661:47 | SideEffect | ~m1660_9 | -| ir.cpp:1661:42:1661:47 | Unary | r1661_6 | -| ir.cpp:1661:48:1661:50 | StoreValue | r1661_13 | -| ir.cpp:1661:48:1661:50 | Unary | r1661_12 | -| ir.cpp:1662:16:1662:17 | Address | &:r1662_1 | -| ir.cpp:1662:21:1662:42 | Address | &:r1662_2 | -| ir.cpp:1662:21:1662:42 | Address | &:r1662_4 | -| ir.cpp:1662:21:1662:42 | Address | &:r1662_4 | -| ir.cpp:1662:21:1662:42 | Arg(this) | this:r1662_4 | -| ir.cpp:1662:21:1662:42 | ChiPartial | partial:m1662_10 | -| ir.cpp:1662:21:1662:42 | ChiTotal | total:m1661_11 | -| ir.cpp:1662:21:1662:42 | Load | m1659_4 | -| ir.cpp:1662:21:1662:42 | SideEffect | m1661_11 | -| ir.cpp:1662:21:1662:42 | Unary | r1662_3 | -| ir.cpp:1662:44:1662:49 | CallTarget | func:r1662_5 | -| ir.cpp:1662:44:1662:49 | ChiPartial | partial:m1662_7 | -| ir.cpp:1662:44:1662:49 | ChiTotal | total:m1661_8 | -| ir.cpp:1662:44:1662:49 | SideEffect | ~m1661_8 | -| ir.cpp:1662:44:1662:49 | Unary | r1662_6 | -| ir.cpp:1662:50:1662:52 | StoreValue | r1662_13 | -| ir.cpp:1662:50:1662:52 | Unary | r1662_12 | -| ir.cpp:1663:9:1663:9 | Address | &:r1663_2 | -| ir.cpp:1663:9:1663:9 | Address | &:r1663_4 | -| ir.cpp:1663:9:1663:9 | Load | m1660_15 | -| ir.cpp:1663:9:1663:9 | Unary | r1663_3 | -| ir.cpp:1663:13:1663:13 | StoreValue | r1663_1 | -| ir.cpp:1664:14:1664:15 | Address | &:r1664_1 | -| ir.cpp:1664:19:1664:19 | Address | &:r1664_2 | -| ir.cpp:1664:19:1664:19 | Load | m1660_15 | -| ir.cpp:1664:19:1664:19 | StoreValue | r1664_5 | -| ir.cpp:1664:19:1664:19 | Unary | r1664_3 | -| ir.cpp:1664:19:1664:19 | Unary | r1664_4 | -| ir.cpp:1665:13:1665:13 | Address | &:r1665_1 | -| ir.cpp:1665:17:1665:17 | Address | &:r1665_2 | -| ir.cpp:1665:17:1665:17 | Address | &:r1665_3 | -| ir.cpp:1665:17:1665:17 | Load | m1660_15 | -| ir.cpp:1665:17:1665:17 | Load | m1663_5 | -| ir.cpp:1665:17:1665:17 | StoreValue | r1665_4 | -| ir.cpp:1666:9:1666:9 | Address | &:r1666_2 | -| ir.cpp:1666:9:1666:9 | Address | &:r1666_4 | -| ir.cpp:1666:9:1666:9 | Load | m1661_14 | -| ir.cpp:1666:9:1666:9 | Unary | r1666_3 | -| ir.cpp:1666:9:1666:13 | ChiPartial | partial:m1666_5 | -| ir.cpp:1666:9:1666:13 | ChiTotal | total:m1662_8 | -| ir.cpp:1666:13:1666:13 | StoreValue | r1666_1 | -| ir.cpp:1667:14:1667:15 | Address | &:r1667_1 | -| ir.cpp:1667:19:1667:19 | Address | &:r1667_2 | -| ir.cpp:1667:19:1667:19 | Load | m1661_14 | -| ir.cpp:1667:19:1667:19 | StoreValue | r1667_5 | -| ir.cpp:1667:19:1667:19 | Unary | r1667_3 | -| ir.cpp:1667:19:1667:19 | Unary | r1667_4 | -| ir.cpp:1668:13:1668:13 | Address | &:r1668_1 | -| ir.cpp:1668:17:1668:17 | Address | &:r1668_2 | -| ir.cpp:1668:17:1668:17 | Address | &:r1668_3 | -| ir.cpp:1668:17:1668:17 | Load | m1661_14 | -| ir.cpp:1668:17:1668:17 | Load | ~m1666_6 | -| ir.cpp:1668:17:1668:17 | StoreValue | r1668_4 | -| ir.cpp:1672:6:1672:42 | ChiPartial | partial:m1672_3 | -| ir.cpp:1672:6:1672:42 | ChiTotal | total:m1672_2 | -| ir.cpp:1672:6:1672:42 | SideEffect | m1672_3 | -| ir.cpp:1673:9:1673:10 | Address | &:r1673_1 | -| ir.cpp:1673:9:1673:10 | Left | r1673_1 | -| ir.cpp:1673:9:1673:10 | Left | r1673_1 | -| ir.cpp:1673:16:1673:22 | Address | &:r1673_4 | -| ir.cpp:1673:16:1673:22 | Address | &:r1673_9 | -| ir.cpp:1673:16:1673:22 | Right | r1673_3 | -| ir.cpp:1673:16:1673:22 | Right | r1673_8 | -| ir.cpp:1673:18:1673:18 | ChiPartial | partial:m1673_6 | -| ir.cpp:1673:18:1673:18 | ChiTotal | total:m1673_2 | -| ir.cpp:1673:18:1673:18 | StoreValue | r1673_5 | -| ir.cpp:1673:21:1673:21 | ChiPartial | partial:m1673_11 | -| ir.cpp:1673:21:1673:21 | ChiTotal | total:m1673_7 | -| ir.cpp:1673:21:1673:21 | StoreValue | r1673_10 | -| ir.cpp:1674:10:1674:10 | Address | &:r1674_1 | -| ir.cpp:1674:11:1674:11 | Address | &:r1674_5 | -| ir.cpp:1674:15:1674:15 | Address | &:r1674_6 | -| ir.cpp:1674:21:1674:22 | Address | &:r1674_2 | -| ir.cpp:1674:21:1674:22 | Load | m1673_12 | -| ir.cpp:1674:21:1674:22 | StoreValue | r1674_3 | -| ir.cpp:1680:5:1680:23 | Address | &:r1680_5 | -| ir.cpp:1680:5:1680:23 | Address | &:r1680_5 | -| ir.cpp:1680:5:1680:23 | Address | &:r1680_7 | -| ir.cpp:1680:5:1680:23 | Address | &:r1680_7 | -| ir.cpp:1680:5:1680:23 | ChiPartial | partial:m1680_3 | -| ir.cpp:1680:5:1680:23 | ChiTotal | total:m1680_2 | -| ir.cpp:1680:5:1680:23 | Load | m1680_6 | -| ir.cpp:1680:5:1680:23 | SideEffect | m1680_3 | -| ir.cpp:1680:5:1680:23 | SideEffect | m1680_8 | -| ir.cpp:1683:6:1683:20 | ChiPartial | partial:m1683_3 | -| ir.cpp:1683:6:1683:20 | ChiTotal | total:m1683_2 | -| ir.cpp:1683:6:1683:20 | SideEffect | ~m1686_6 | -| ir.cpp:1683:26:1683:26 | Address | &:r1683_5 | -| ir.cpp:1683:34:1683:34 | Address | &:r1683_7 | -| ir.cpp:1683:34:1683:34 | Address | &:r1683_7 | -| ir.cpp:1683:34:1683:34 | Address | &:r1683_9 | -| ir.cpp:1683:34:1683:34 | Address | &:r1683_9 | -| ir.cpp:1683:34:1683:34 | Load | m1683_8 | -| ir.cpp:1683:34:1683:34 | SideEffect | m1683_10 | -| ir.cpp:1683:43:1683:43 | Address | &:r1683_11 | -| ir.cpp:1683:43:1683:43 | Address | &:r1683_11 | -| ir.cpp:1683:43:1683:43 | Address | &:r1683_13 | -| ir.cpp:1683:43:1683:43 | Address | &:r1683_13 | -| ir.cpp:1683:43:1683:43 | Load | m1683_12 | -| ir.cpp:1683:43:1683:43 | SideEffect | m1683_14 | -| ir.cpp:1685:17:1685:20 | Address | &:r1685_1 | -| ir.cpp:1685:24:1685:44 | Address | &:r1685_2 | -| ir.cpp:1685:24:1685:44 | Address | &:r1685_2 | -| ir.cpp:1685:24:1685:44 | Arg(this) | this:r1685_2 | -| ir.cpp:1685:24:1685:44 | CallTarget | func:r1685_4 | -| ir.cpp:1685:24:1685:44 | ChiPartial | partial:m1685_6 | -| ir.cpp:1685:24:1685:44 | ChiPartial | partial:m1685_8 | -| ir.cpp:1685:24:1685:44 | ChiTotal | total:m1683_4 | -| ir.cpp:1685:24:1685:44 | ChiTotal | total:m1685_3 | -| ir.cpp:1685:24:1685:44 | SideEffect | ~m1683_4 | -| ir.cpp:1685:24:1685:44 | StoreValue | r1685_11 | -| ir.cpp:1685:24:1685:44 | Unary | r1685_2 | -| ir.cpp:1685:24:1685:44 | Unary | r1685_10 | -| ir.cpp:1686:10:1686:13 | Address | &:r1686_1 | -| ir.cpp:1686:10:1686:13 | Address | &:r1686_1 | -| ir.cpp:1686:10:1686:13 | Arg(this) | this:r1686_1 | -| ir.cpp:1686:16:1686:37 | CallTarget | func:r1686_3 | -| ir.cpp:1686:16:1686:37 | ChiPartial | partial:m1686_5 | -| ir.cpp:1686:16:1686:37 | ChiPartial | partial:m1686_7 | -| ir.cpp:1686:16:1686:37 | ChiTotal | total:m1685_7 | -| ir.cpp:1686:16:1686:37 | ChiTotal | total:m1686_2 | -| ir.cpp:1686:16:1686:37 | SideEffect | ~m1685_7 | -| ir.cpp:1688:10:1688:21 | Address | &:r1688_1 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_2 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_2 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_4 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_5 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_6 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_7 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_8 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_12 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_17 | -| ir.cpp:1688:24:1690:5 | Address | &:r1688_20 | -| ir.cpp:1688:24:1690:5 | ChiPartial | partial:m1688_10 | -| ir.cpp:1688:24:1690:5 | ChiTotal | total:m0_3 | -| ir.cpp:1688:24:1690:5 | Load | m1685_12 | -| ir.cpp:1688:24:1690:5 | Load | m1686_8 | -| ir.cpp:1688:24:1690:5 | Load | m1690_6 | -| ir.cpp:1688:24:1690:5 | StoreValue | r1688_9 | -| ir.cpp:1688:24:1690:5 | StoreValue | r1688_23 | -| ir.cpp:1688:24:1690:5 | Unary | r1688_2 | -| ir.cpp:1688:24:1690:5 | Unary | r1688_2 | -| ir.cpp:1688:24:1690:5 | Unary | r1688_2 | -| ir.cpp:1688:24:1690:5 | Unary | r1688_2 | -| ir.cpp:1688:24:1690:5 | Unary | r1688_2 | -| ir.cpp:1688:38:1688:38 | Address | &:r1688_13 | -| ir.cpp:1688:38:1688:38 | ChiPartial | partial:m1688_15 | -| ir.cpp:1688:38:1688:38 | ChiTotal | total:m1688_11 | -| ir.cpp:1688:38:1688:38 | Load | m1683_6 | -| ir.cpp:1688:38:1688:38 | StoreValue | r1688_14 | -| ir.cpp:1688:41:1688:41 | Address | &:r1688_18 | -| ir.cpp:1688:41:1688:41 | Address | &:r1688_19 | -| ir.cpp:1688:41:1688:41 | Load | m1683_8 | -| ir.cpp:1688:44:1688:44 | Address | &:r1688_21 | -| ir.cpp:1688:44:1688:44 | Address | &:r1688_22 | -| ir.cpp:1688:44:1688:44 | Load | m1683_12 | -| ir.cpp:1688:46:1688:46 | Address | &:r1688_5 | -| ir.cpp:1688:46:1688:46 | Address | &:r1688_5 | -| ir.cpp:1688:46:1688:46 | Address | &:r1688_7 | -| ir.cpp:1688:46:1688:46 | Address | &:r1688_7 | -| ir.cpp:1688:46:1688:46 | ChiPartial | partial:m1688_3 | -| ir.cpp:1688:46:1688:46 | ChiTotal | total:m1688_2 | -| ir.cpp:1688:46:1688:46 | Load | m1688_6 | -| ir.cpp:1688:46:1688:46 | SideEffect | m1688_3 | -| ir.cpp:1688:46:1688:46 | SideEffect | m1688_8 | -| ir.cpp:1689:14:1689:25 | Address | &:r1689_1 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_2 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_2 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_4 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_5 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_7 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_11 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_12 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_14 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_18 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_19 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_21 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_25 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_26 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_28 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_32 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_33 | -| ir.cpp:1689:28:1689:54 | Address | &:r1689_35 | -| ir.cpp:1689:28:1689:54 | ChiPartial | partial:m1689_9 | -| ir.cpp:1689:28:1689:54 | ChiPartial | partial:m1689_16 | -| ir.cpp:1689:28:1689:54 | ChiPartial | partial:m1689_23 | -| ir.cpp:1689:28:1689:54 | ChiPartial | partial:m1689_30 | -| ir.cpp:1689:28:1689:54 | ChiPartial | partial:m1689_37 | -| ir.cpp:1689:28:1689:54 | ChiTotal | total:m1689_3 | -| ir.cpp:1689:28:1689:54 | ChiTotal | total:m1689_10 | -| ir.cpp:1689:28:1689:54 | ChiTotal | total:m1689_17 | -| ir.cpp:1689:28:1689:54 | ChiTotal | total:m1689_24 | -| ir.cpp:1689:28:1689:54 | ChiTotal | total:m1689_31 | -| ir.cpp:1689:28:1689:54 | Load | m1688_6 | -| ir.cpp:1689:28:1689:54 | Load | m1688_6 | -| ir.cpp:1689:28:1689:54 | Load | m1688_6 | -| ir.cpp:1689:28:1689:54 | Load | m1688_6 | -| ir.cpp:1689:28:1689:54 | Load | m1688_6 | -| ir.cpp:1689:28:1689:54 | Load | m1689_38 | -| ir.cpp:1689:28:1689:54 | Load | ~m1688_8 | -| ir.cpp:1689:28:1689:54 | Load | ~m1688_8 | -| ir.cpp:1689:28:1689:54 | Load | ~m1688_8 | -| ir.cpp:1689:28:1689:54 | Load | ~m1688_8 | -| ir.cpp:1689:28:1689:54 | Load | ~m1688_8 | -| ir.cpp:1689:28:1689:54 | StoreValue | r1689_8 | -| ir.cpp:1689:28:1689:54 | StoreValue | r1689_15 | -| ir.cpp:1689:28:1689:54 | StoreValue | r1689_22 | -| ir.cpp:1689:28:1689:54 | StoreValue | r1689_29 | -| ir.cpp:1689:28:1689:54 | StoreValue | r1689_36 | -| ir.cpp:1689:28:1689:54 | StoreValue | r1689_39 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_2 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_2 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_2 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_2 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_2 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_6 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_13 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_20 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_27 | -| ir.cpp:1689:28:1689:54 | Unary | r1689_34 | -| ir.cpp:1689:50:1689:50 | Address | &:r1689_5 | -| ir.cpp:1689:50:1689:50 | Address | &:r1689_5 | -| ir.cpp:1689:50:1689:50 | Address | &:r1689_7 | -| ir.cpp:1689:50:1689:50 | Address | &:r1689_7 | -| ir.cpp:1689:50:1689:50 | ChiPartial | partial:m1689_3 | -| ir.cpp:1689:50:1689:50 | ChiTotal | total:m1689_2 | -| ir.cpp:1689:50:1689:50 | Load | m1689_6 | -| ir.cpp:1689:50:1689:50 | SideEffect | m1689_3 | -| ir.cpp:1689:50:1689:50 | SideEffect | m1689_8 | -| ir.cpp:1690:6:1690:6 | ChiPartial | partial:m1690_2 | -| ir.cpp:1690:6:1690:6 | ChiPartial | partial:m1690_5 | -| ir.cpp:1690:6:1690:6 | ChiTotal | total:m1688_16 | -| ir.cpp:1690:6:1690:6 | ChiTotal | total:m1690_3 | -| ir.cpp:1690:6:1690:6 | Load | ~m1683_10 | -| ir.cpp:1690:6:1690:6 | Load | ~m1683_14 | -| ir.cpp:1690:6:1690:6 | StoreValue | r1690_1 | -| ir.cpp:1690:6:1690:6 | StoreValue | r1690_4 | -| ir.cpp:1693:5:1693:21 | Address | &:r1693_5 | -| ir.cpp:1693:5:1693:21 | ChiPartial | partial:m1693_3 | -| ir.cpp:1693:5:1693:21 | ChiTotal | total:m1693_2 | -| ir.cpp:1693:5:1693:21 | Load | m1696_4 | -| ir.cpp:1693:5:1693:21 | SideEffect | m1693_3 | -| ir.cpp:1694:7:1694:7 | Address | &:r1694_1 | -| ir.cpp:1694:10:1694:12 | StoreValue | r1694_2 | -| ir.cpp:1696:3:1696:11 | Address | &:r1696_1 | -| ir.cpp:1696:10:1696:10 | Address | &:r1696_2 | -| ir.cpp:1696:10:1696:10 | Load | m1694_3 | -| ir.cpp:1696:10:1696:10 | StoreValue | r1696_3 | -| ir.cpp:1701:10:1701:10 | Address | &:r1701_5 | -| ir.cpp:1701:10:1701:10 | Address | &:r1701_5 | -| ir.cpp:1701:10:1701:10 | Address | &:r1701_7 | -| ir.cpp:1701:10:1701:10 | Address | &:r1701_7 | -| ir.cpp:1701:10:1701:10 | ChiPartial | partial:m1701_3 | -| ir.cpp:1701:10:1701:10 | ChiTotal | total:m1701_2 | -| ir.cpp:1701:10:1701:10 | Load | m1701_6 | -| ir.cpp:1701:10:1701:10 | SideEffect | m1701_3 | -| ir.cpp:1701:10:1701:10 | SideEffect | m1701_8 | -| ir.cpp:1702:14:1702:22 | Address | &:r1702_1 | -| ir.cpp:1702:25:1708:9 | Address | &:r1702_2 | -| ir.cpp:1702:25:1708:9 | Address | &:r1702_2 | -| ir.cpp:1702:25:1708:9 | Address | &:r1702_4 | -| ir.cpp:1702:25:1708:9 | Address | &:r1702_5 | -| ir.cpp:1702:25:1708:9 | Address | &:r1702_6 | -| ir.cpp:1702:25:1708:9 | Load | m1701_6 | -| ir.cpp:1702:25:1708:9 | Load | ~m1701_8 | -| ir.cpp:1702:25:1708:9 | Load | ~m1702_8 | -| ir.cpp:1702:25:1708:9 | StoreValue | r1702_7 | -| ir.cpp:1702:25:1708:9 | StoreValue | r1702_9 | -| ir.cpp:1702:25:1708:9 | Unary | r1702_2 | -| ir.cpp:1702:34:1702:34 | Address | &:r1702_5 | -| ir.cpp:1702:34:1702:34 | Address | &:r1702_5 | -| ir.cpp:1702:34:1702:34 | Address | &:r1702_7 | -| ir.cpp:1702:34:1702:34 | Address | &:r1702_7 | -| ir.cpp:1702:34:1702:34 | ChiPartial | partial:m1702_3 | -| ir.cpp:1702:34:1702:34 | ChiTotal | total:m1702_2 | -| ir.cpp:1702:34:1702:34 | Load | m1702_6 | -| ir.cpp:1702:34:1702:34 | SideEffect | m1702_8 | -| ir.cpp:1702:34:1702:34 | SideEffect | ~m1703_8 | -| ir.cpp:1703:13:1703:13 | Address | &:r1703_1 | -| ir.cpp:1703:13:1703:13 | Address | &:r1703_4 | -| ir.cpp:1703:13:1703:13 | Arg(this) | this:r1703_4 | -| ir.cpp:1703:13:1703:13 | CallTarget | func:r1703_5 | -| ir.cpp:1703:13:1703:13 | ChiPartial | partial:m1703_7 | -| ir.cpp:1703:13:1703:13 | ChiTotal | total:m1702_4 | -| ir.cpp:1703:13:1703:13 | Load | m1702_6 | -| ir.cpp:1703:13:1703:13 | SideEffect | ~m1702_4 | -| ir.cpp:1703:13:1703:13 | SideEffect | ~m1702_8 | -| ir.cpp:1703:13:1703:13 | Unary | r1703_2 | -| ir.cpp:1703:13:1703:13 | Unary | r1703_3 | -| ir.cpp:1705:18:1705:26 | Address | &:r1705_1 | -| ir.cpp:1705:29:1707:13 | Address | &:r1705_2 | -| ir.cpp:1705:29:1707:13 | Address | &:r1705_2 | -| ir.cpp:1705:29:1707:13 | Address | &:r1705_4 | -| ir.cpp:1705:29:1707:13 | Address | &:r1705_5 | -| ir.cpp:1705:29:1707:13 | Address | &:r1705_7 | -| ir.cpp:1705:29:1707:13 | Load | m1702_6 | -| ir.cpp:1705:29:1707:13 | Load | ~m1702_8 | -| ir.cpp:1705:29:1707:13 | Load | ~m1705_9 | -| ir.cpp:1705:29:1707:13 | StoreValue | r1705_8 | -| ir.cpp:1705:29:1707:13 | StoreValue | r1705_10 | -| ir.cpp:1705:29:1707:13 | Unary | r1705_2 | -| ir.cpp:1705:29:1707:13 | Unary | r1705_6 | -| ir.cpp:1705:38:1705:38 | Address | &:r1705_5 | -| ir.cpp:1705:38:1705:38 | Address | &:r1705_5 | -| ir.cpp:1705:38:1705:38 | Address | &:r1705_7 | -| ir.cpp:1705:38:1705:38 | Address | &:r1705_7 | -| ir.cpp:1705:38:1705:38 | ChiPartial | partial:m1705_3 | -| ir.cpp:1705:38:1705:38 | ChiTotal | total:m1705_2 | -| ir.cpp:1705:38:1705:38 | Load | m1705_6 | -| ir.cpp:1705:38:1705:38 | SideEffect | m1705_8 | -| ir.cpp:1705:38:1705:38 | SideEffect | ~m1706_8 | -| ir.cpp:1706:17:1706:17 | Address | &:r1706_1 | -| ir.cpp:1706:17:1706:17 | Address | &:r1706_4 | -| ir.cpp:1706:17:1706:17 | Arg(this) | this:r1706_4 | -| ir.cpp:1706:17:1706:17 | CallTarget | func:r1706_5 | -| ir.cpp:1706:17:1706:17 | ChiPartial | partial:m1706_7 | -| ir.cpp:1706:17:1706:17 | ChiTotal | total:m1705_4 | -| ir.cpp:1706:17:1706:17 | Load | m1705_6 | -| ir.cpp:1706:17:1706:17 | SideEffect | ~m1705_4 | -| ir.cpp:1706:17:1706:17 | SideEffect | ~m1705_8 | -| ir.cpp:1706:17:1706:17 | Unary | r1706_2 | -| ir.cpp:1706:17:1706:17 | Unary | r1706_3 | -| ir.cpp:1712:6:1712:21 | ChiPartial | partial:m1712_3 | -| ir.cpp:1712:6:1712:21 | ChiTotal | total:m1712_2 | -| ir.cpp:1712:6:1712:21 | SideEffect | m1712_3 | -| ir.cpp:1712:42:1712:43 | Address | &:r1712_5 | -| ir.cpp:1712:66:1712:67 | Address | &:r1712_7 | -| ir.cpp:1712:66:1712:67 | Address | &:r1712_7 | -| ir.cpp:1712:66:1712:67 | Address | &:r1712_9 | -| ir.cpp:1712:66:1712:67 | Address | &:r1712_9 | -| ir.cpp:1712:66:1712:67 | Load | m1712_8 | -| ir.cpp:1712:66:1712:67 | SideEffect | m1712_10 | -| ir.cpp:1712:91:1712:92 | Address | &:r1712_11 | -| ir.cpp:1712:91:1712:92 | Address | &:r1712_11 | -| ir.cpp:1712:91:1712:92 | Address | &:r1712_13 | -| ir.cpp:1712:91:1712:92 | Address | &:r1712_13 | -| ir.cpp:1712:91:1712:92 | Load | m1712_12 | -| ir.cpp:1712:91:1712:92 | SideEffect | m1712_14 | -| ir.cpp:1713:30:1713:31 | Address | &:r1713_1 | -| ir.cpp:1714:31:1714:32 | Address | &:r1714_1 | -| ir.cpp:1714:36:1714:55 | Address | &:r1714_2 | -| ir.cpp:1714:36:1714:55 | StoreValue | r1714_3 | -| ir.cpp:1714:36:1714:55 | StoreValue | r1714_6 | -| ir.cpp:1714:36:1714:55 | Unary | r1714_2 | -| ir.cpp:1714:36:1714:55 | Unary | r1714_5 | -| ir.cpp:1716:10:1716:17 | Address | &:r1716_1 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_2 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_2 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_4 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_5 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_9 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_10 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_11 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_12 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_13 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_14 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_15 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_16 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_20 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_21 | -| ir.cpp:1716:20:1718:5 | Address | &:r1716_22 | -| ir.cpp:1716:20:1718:5 | ChiPartial | partial:m1716_7 | -| ir.cpp:1716:20:1718:5 | ChiPartial | partial:m1716_18 | -| ir.cpp:1716:20:1718:5 | ChiTotal | total:m0_6 | -| ir.cpp:1716:20:1718:5 | ChiTotal | total:m1716_3 | -| ir.cpp:1716:20:1718:5 | Load | m0_9 | -| ir.cpp:1716:20:1718:5 | Load | m1712_6 | -| ir.cpp:1716:20:1718:5 | Load | m1712_8 | -| ir.cpp:1716:20:1718:5 | Load | m1712_12 | -| ir.cpp:1716:20:1718:5 | Load | m1713_2 | -| ir.cpp:1716:20:1718:5 | Load | m1714_7 | -| ir.cpp:1716:20:1718:5 | StoreValue | r1716_6 | -| ir.cpp:1716:20:1718:5 | StoreValue | r1716_17 | -| ir.cpp:1716:20:1718:5 | StoreValue | r1716_23 | -| ir.cpp:1716:20:1718:5 | Unary | r1716_2 | -| ir.cpp:1716:20:1718:5 | Unary | r1716_2 | -| ir.cpp:1716:20:1718:5 | Unary | r1716_2 | -| ir.cpp:1716:20:1718:5 | Unary | r1716_2 | -| ir.cpp:1716:20:1718:5 | Unary | r1716_2 | -| ir.cpp:1716:42:1716:42 | Address | &:r1716_5 | -| ir.cpp:1716:42:1716:42 | Address | &:r1716_5 | -| ir.cpp:1716:42:1716:42 | Address | &:r1716_7 | -| ir.cpp:1716:42:1716:42 | Address | &:r1716_7 | -| ir.cpp:1716:42:1716:42 | ChiPartial | partial:m1716_3 | -| ir.cpp:1716:42:1716:42 | ChiTotal | total:m1716_2 | -| ir.cpp:1716:42:1716:42 | Load | m1716_6 | -| ir.cpp:1716:42:1716:42 | SideEffect | m1716_3 | -| ir.cpp:1716:42:1716:42 | SideEffect | m1716_8 | -| ir.cpp:1717:14:1717:21 | Address | &:r1717_1 | -| ir.cpp:1717:24:1717:31 | Address | &:r1717_2 | -| ir.cpp:1717:24:1717:31 | Address | &:r1717_2 | -| ir.cpp:1717:24:1717:31 | Address | &:r1717_4 | -| ir.cpp:1717:24:1717:31 | Address | &:r1717_5 | -| ir.cpp:1717:24:1717:31 | Address | &:r1717_7 | -| ir.cpp:1717:24:1717:31 | Load | m1716_6 | -| ir.cpp:1717:24:1717:31 | Load | ~m1716_8 | -| ir.cpp:1717:24:1717:31 | Load | ~m1717_9 | -| ir.cpp:1717:24:1717:31 | StoreValue | r1717_8 | -| ir.cpp:1717:24:1717:31 | StoreValue | r1717_10 | -| ir.cpp:1717:24:1717:31 | Unary | r1717_2 | -| ir.cpp:1717:24:1717:31 | Unary | r1717_6 | -| ir.cpp:1717:30:1717:30 | Address | &:r1717_5 | -| ir.cpp:1717:30:1717:30 | Address | &:r1717_5 | -| ir.cpp:1717:30:1717:30 | Address | &:r1717_7 | -| ir.cpp:1717:30:1717:30 | Address | &:r1717_7 | -| ir.cpp:1717:30:1717:30 | ChiPartial | partial:m1717_3 | -| ir.cpp:1717:30:1717:30 | ChiTotal | total:m1717_2 | -| ir.cpp:1717:30:1717:30 | Load | m1717_6 | -| ir.cpp:1717:30:1717:30 | SideEffect | m1717_3 | -| ir.cpp:1717:30:1717:30 | SideEffect | m1717_8 | -| ir.cpp:1724:5:1724:44 | Address | &:r1724_5 | -| ir.cpp:1724:5:1724:44 | Address | &:r1724_5 | -| ir.cpp:1724:5:1724:44 | Address | &:r1724_7 | -| ir.cpp:1724:5:1724:44 | Address | &:r1724_7 | -| ir.cpp:1724:5:1724:44 | ChiPartial | partial:m1724_3 | -| ir.cpp:1724:5:1724:44 | ChiTotal | total:m1724_2 | -| ir.cpp:1724:5:1724:44 | Load | m1724_6 | -| ir.cpp:1724:5:1724:44 | SideEffect | m1724_3 | -| ir.cpp:1724:5:1724:44 | SideEffect | m1724_8 | -| ir.cpp:1725:5:1725:44 | Address | &:r1725_5 | -| ir.cpp:1725:5:1725:44 | Address | &:r1725_5 | -| ir.cpp:1725:5:1725:44 | Address | &:r1725_7 | -| ir.cpp:1725:5:1725:44 | Address | &:r1725_7 | -| ir.cpp:1725:5:1725:44 | ChiPartial | partial:m1725_3 | -| ir.cpp:1725:5:1725:44 | ChiTotal | total:m1725_2 | -| ir.cpp:1725:5:1725:44 | Load | m1725_6 | -| ir.cpp:1725:5:1725:44 | SideEffect | m1725_3 | -| ir.cpp:1725:5:1725:44 | SideEffect | m1726_10 | -| ir.cpp:1725:94:1725:94 | Address | &:r1725_9 | -| ir.cpp:1725:94:1725:94 | Address | &:r1725_9 | -| ir.cpp:1725:94:1725:94 | Address | &:r1725_11 | -| ir.cpp:1725:94:1725:94 | Address | &:r1725_11 | -| ir.cpp:1725:94:1725:94 | Load | m1725_10 | -| ir.cpp:1725:94:1725:94 | SideEffect | m1725_12 | -| ir.cpp:1726:9:1726:9 | Address | &:r1726_6 | -| ir.cpp:1726:9:1726:9 | Address | &:r1726_8 | -| ir.cpp:1726:9:1726:9 | Load | m1725_6 | -| ir.cpp:1726:9:1726:9 | Unary | r1726_7 | -| ir.cpp:1726:9:1726:15 | ChiPartial | partial:m1726_9 | -| ir.cpp:1726:9:1726:15 | ChiTotal | total:m1725_8 | -| ir.cpp:1726:13:1726:13 | Address | &:r1726_1 | -| ir.cpp:1726:13:1726:13 | Load | m1725_10 | -| ir.cpp:1726:13:1726:13 | Unary | r1726_2 | -| ir.cpp:1726:13:1726:13 | Unary | r1726_3 | -| ir.cpp:1726:15:1726:15 | Address | &:r1726_4 | -| ir.cpp:1726:15:1726:15 | Load | ~m1725_12 | -| ir.cpp:1726:15:1726:15 | StoreValue | r1726_5 | -| ir.cpp:1733:5:1733:39 | Address | &:r1733_5 | -| ir.cpp:1733:5:1733:39 | Address | &:r1733_5 | -| ir.cpp:1733:5:1733:39 | Address | &:r1733_7 | -| ir.cpp:1733:5:1733:39 | Address | &:r1733_7 | -| ir.cpp:1733:5:1733:39 | ChiPartial | partial:m1733_3 | -| ir.cpp:1733:5:1733:39 | ChiTotal | total:m1733_2 | -| ir.cpp:1733:5:1733:39 | Load | m1733_6 | -| ir.cpp:1733:5:1733:39 | SideEffect | m1733_3 | -| ir.cpp:1733:5:1733:39 | SideEffect | m1733_8 | -| ir.cpp:1736:7:1736:7 | Address | &:r1736_5 | -| ir.cpp:1736:7:1736:7 | Address | &:r1736_5 | -| ir.cpp:1736:7:1736:7 | Address | &:r1736_7 | -| ir.cpp:1736:7:1736:7 | Address | &:r1736_7 | -| ir.cpp:1736:7:1736:7 | Address | &:r1736_9 | -| ir.cpp:1736:7:1736:7 | Address | &:r1736_11 | -| ir.cpp:1736:7:1736:7 | Address | &:r1736_15 | -| ir.cpp:1736:7:1736:7 | Arg(0) | 0:r1736_15 | -| ir.cpp:1736:7:1736:7 | Arg(this) | this:r1736_9 | -| ir.cpp:1736:7:1736:7 | CallTarget | func:r1736_10 | -| ir.cpp:1736:7:1736:7 | ChiPartial | partial:m1736_3 | -| ir.cpp:1736:7:1736:7 | ChiPartial | partial:m1736_17 | -| ir.cpp:1736:7:1736:7 | ChiPartial | partial:m1736_20 | -| ir.cpp:1736:7:1736:7 | ChiTotal | total:m1736_2 | -| ir.cpp:1736:7:1736:7 | ChiTotal | total:m1736_4 | -| ir.cpp:1736:7:1736:7 | ChiTotal | total:m1736_8 | -| ir.cpp:1736:7:1736:7 | Load | m0_2 | -| ir.cpp:1736:7:1736:7 | Load | m1736_6 | -| ir.cpp:1736:7:1736:7 | SideEffect | m1736_21 | -| ir.cpp:1736:7:1736:7 | SideEffect | ~m0_4 | -| ir.cpp:1736:7:1736:7 | SideEffect | ~m1736_4 | -| ir.cpp:1736:7:1736:7 | SideEffect | ~m1736_18 | -| ir.cpp:1736:7:1736:7 | Unary | m1736_6 | -| ir.cpp:1736:7:1736:7 | Unary | r1736_12 | -| ir.cpp:1736:7:1736:7 | Unary | r1736_13 | -| ir.cpp:1736:7:1736:7 | Unary | r1736_14 | -| ir.cpp:1740:5:1740:38 | Address | &:r1740_5 | -| ir.cpp:1740:5:1740:38 | Address | &:r1740_5 | -| ir.cpp:1740:5:1740:38 | Address | &:r1740_7 | -| ir.cpp:1740:5:1740:38 | Address | &:r1740_7 | -| ir.cpp:1740:5:1740:38 | ChiPartial | partial:m1740_3 | -| ir.cpp:1740:5:1740:38 | ChiTotal | total:m1740_2 | -| ir.cpp:1740:5:1740:38 | Load | m1740_6 | -| ir.cpp:1740:5:1740:38 | SideEffect | m1740_22 | -| ir.cpp:1740:5:1740:38 | SideEffect | ~m1740_20 | -| ir.cpp:1740:5:1740:38 | Unary | m1740_6 | -| ir.cpp:1740:5:1740:38 | Unary | m1740_6 | -| ir.cpp:1740:42:1740:42 | Address | &:r1740_9 | -| ir.cpp:1740:42:1740:42 | Address | &:r1740_16 | -| ir.cpp:1740:42:1740:42 | Arg(this) | this:r1740_9 | -| ir.cpp:1740:42:1740:42 | Arg(this) | this:r1740_16 | -| ir.cpp:1740:42:1740:42 | CallTarget | func:r1740_10 | -| ir.cpp:1740:42:1740:42 | CallTarget | func:r1740_17 | -| ir.cpp:1740:42:1740:42 | ChiPartial | partial:m1740_12 | -| ir.cpp:1740:42:1740:42 | ChiPartial | partial:m1740_14 | -| ir.cpp:1740:42:1740:42 | ChiPartial | partial:m1740_19 | -| ir.cpp:1740:42:1740:42 | ChiPartial | partial:m1740_21 | -| ir.cpp:1740:42:1740:42 | ChiTotal | total:m1740_4 | -| ir.cpp:1740:42:1740:42 | ChiTotal | total:m1740_8 | -| ir.cpp:1740:42:1740:42 | ChiTotal | total:m1740_13 | -| ir.cpp:1740:42:1740:42 | ChiTotal | total:m1740_15 | -| ir.cpp:1740:42:1740:42 | SideEffect | ~m1740_4 | -| ir.cpp:1740:42:1740:42 | SideEffect | ~m1740_13 | -| ir.cpp:1743:7:1743:7 | Address | &:r1743_5 | -| ir.cpp:1743:7:1743:7 | Address | &:r1743_5 | -| ir.cpp:1743:7:1743:7 | Address | &:r1743_7 | -| ir.cpp:1743:7:1743:7 | Address | &:r1743_7 | -| ir.cpp:1743:7:1743:7 | Address | &:r1743_9 | -| ir.cpp:1743:7:1743:7 | Address | &:r1743_11 | -| ir.cpp:1743:7:1743:7 | Address | &:r1743_15 | -| ir.cpp:1743:7:1743:7 | Arg(0) | 0:r1743_15 | -| ir.cpp:1743:7:1743:7 | Arg(this) | this:r1743_9 | -| ir.cpp:1743:7:1743:7 | CallTarget | func:r1743_10 | -| ir.cpp:1743:7:1743:7 | ChiPartial | partial:m1743_3 | -| ir.cpp:1743:7:1743:7 | ChiPartial | partial:m1743_17 | -| ir.cpp:1743:7:1743:7 | ChiPartial | partial:m1743_20 | -| ir.cpp:1743:7:1743:7 | ChiTotal | total:m1743_2 | -| ir.cpp:1743:7:1743:7 | ChiTotal | total:m1743_4 | -| ir.cpp:1743:7:1743:7 | ChiTotal | total:m1743_18 | -| ir.cpp:1743:7:1743:7 | Load | m0_2 | -| ir.cpp:1743:7:1743:7 | Load | m1743_6 | -| ir.cpp:1743:7:1743:7 | SideEffect | m1743_8 | -| ir.cpp:1743:7:1743:7 | SideEffect | ~m0_4 | -| ir.cpp:1743:7:1743:7 | SideEffect | ~m1743_4 | -| ir.cpp:1743:7:1743:7 | SideEffect | ~m1743_21 | -| ir.cpp:1743:7:1743:7 | Unary | m1743_6 | -| ir.cpp:1743:7:1743:7 | Unary | r1743_12 | -| ir.cpp:1743:7:1743:7 | Unary | r1743_13 | -| ir.cpp:1743:7:1743:7 | Unary | r1743_14 | -| ir.cpp:1747:5:1747:35 | Address | &:r1747_5 | -| ir.cpp:1747:5:1747:35 | Address | &:r1747_5 | -| ir.cpp:1747:5:1747:35 | Address | &:r1747_7 | -| ir.cpp:1747:5:1747:35 | Address | &:r1747_7 | -| ir.cpp:1747:5:1747:35 | ChiPartial | partial:m1747_3 | -| ir.cpp:1747:5:1747:35 | ChiTotal | total:m1747_2 | -| ir.cpp:1747:5:1747:35 | Load | m1747_6 | -| ir.cpp:1747:5:1747:35 | SideEffect | m1747_8 | -| ir.cpp:1747:5:1747:35 | SideEffect | ~m1747_22 | -| ir.cpp:1747:5:1747:35 | Unary | m1747_6 | -| ir.cpp:1747:5:1747:35 | Unary | m1747_6 | -| ir.cpp:1747:39:1747:39 | Address | &:r1747_9 | -| ir.cpp:1747:39:1747:39 | Address | &:r1747_16 | -| ir.cpp:1747:39:1747:39 | Arg(this) | this:r1747_9 | -| ir.cpp:1747:39:1747:39 | Arg(this) | this:r1747_16 | -| ir.cpp:1747:39:1747:39 | CallTarget | func:r1747_10 | -| ir.cpp:1747:39:1747:39 | CallTarget | func:r1747_17 | -| ir.cpp:1747:39:1747:39 | ChiPartial | partial:m1747_12 | -| ir.cpp:1747:39:1747:39 | ChiPartial | partial:m1747_14 | -| ir.cpp:1747:39:1747:39 | ChiPartial | partial:m1747_19 | -| ir.cpp:1747:39:1747:39 | ChiPartial | partial:m1747_21 | -| ir.cpp:1747:39:1747:39 | ChiTotal | total:m1747_4 | -| ir.cpp:1747:39:1747:39 | ChiTotal | total:m1747_13 | -| ir.cpp:1747:39:1747:39 | ChiTotal | total:m1747_15 | -| ir.cpp:1747:39:1747:39 | ChiTotal | total:m1747_20 | -| ir.cpp:1747:39:1747:39 | SideEffect | ~m1747_4 | -| ir.cpp:1747:39:1747:39 | SideEffect | ~m1747_15 | -| ir.cpp:1750:5:1750:34 | Address | &:r1750_5 | -| ir.cpp:1750:5:1750:34 | ChiPartial | partial:m1750_3 | -| ir.cpp:1750:5:1750:34 | ChiTotal | total:m1750_2 | -| ir.cpp:1750:5:1750:34 | Load | m1755_2 | -| ir.cpp:1750:5:1750:34 | SideEffect | ~m1754_10 | -| ir.cpp:1751:51:1751:51 | Address | &:r1751_1 | -| ir.cpp:1751:51:1751:51 | Address | &:r1751_1 | -| ir.cpp:1751:51:1751:51 | Address | &:r1751_3 | -| ir.cpp:1751:51:1751:51 | Address | &:r1751_3 | -| ir.cpp:1751:51:1751:51 | Load | m1751_2 | -| ir.cpp:1751:51:1751:51 | SideEffect | m1751_4 | -| ir.cpp:1752:48:1752:48 | Address | &:r1752_1 | -| ir.cpp:1752:48:1752:48 | Address | &:r1752_1 | -| ir.cpp:1752:48:1752:48 | Address | &:r1752_3 | -| ir.cpp:1752:48:1752:48 | Address | &:r1752_3 | -| ir.cpp:1752:48:1752:48 | Load | m1752_2 | -| ir.cpp:1752:48:1752:48 | SideEffect | m1752_4 | -| ir.cpp:1753:40:1753:41 | Address | &:r1753_1 | -| ir.cpp:1753:40:1753:41 | Address | &:r1753_1 | -| ir.cpp:1753:40:1753:41 | Arg(this) | this:r1753_1 | -| ir.cpp:1753:44:1753:45 | CallTarget | func:r1753_3 | -| ir.cpp:1753:44:1753:45 | ChiPartial | partial:m1753_9 | -| ir.cpp:1753:44:1753:45 | ChiPartial | partial:m1753_12 | -| ir.cpp:1753:44:1753:45 | ChiTotal | total:m1750_4 | -| ir.cpp:1753:44:1753:45 | ChiTotal | total:m1753_2 | -| ir.cpp:1753:44:1753:45 | SideEffect | ~m1750_4 | -| ir.cpp:1753:45:1753:45 | Address | &:r1753_4 | -| ir.cpp:1753:45:1753:45 | Address | &:r1753_7 | -| ir.cpp:1753:45:1753:45 | Arg(0) | 0:r1753_7 | -| ir.cpp:1753:45:1753:45 | Load | m1751_2 | -| ir.cpp:1753:45:1753:45 | SideEffect | ~m1751_4 | -| ir.cpp:1753:45:1753:45 | Unary | r1753_5 | -| ir.cpp:1753:45:1753:45 | Unary | r1753_6 | -| ir.cpp:1754:37:1754:38 | Address | &:r1754_1 | -| ir.cpp:1754:37:1754:38 | Address | &:r1754_1 | -| ir.cpp:1754:37:1754:38 | Arg(this) | this:r1754_1 | -| ir.cpp:1754:41:1754:42 | CallTarget | func:r1754_3 | -| ir.cpp:1754:41:1754:42 | ChiPartial | partial:m1754_9 | -| ir.cpp:1754:41:1754:42 | ChiPartial | partial:m1754_12 | -| ir.cpp:1754:41:1754:42 | ChiTotal | total:m1753_10 | -| ir.cpp:1754:41:1754:42 | ChiTotal | total:m1754_2 | -| ir.cpp:1754:41:1754:42 | SideEffect | ~m1753_10 | -| ir.cpp:1754:42:1754:42 | Address | &:r1754_4 | -| ir.cpp:1754:42:1754:42 | Address | &:r1754_7 | -| ir.cpp:1754:42:1754:42 | Arg(0) | 0:r1754_7 | -| ir.cpp:1754:42:1754:42 | Load | m1752_2 | -| ir.cpp:1754:42:1754:42 | SideEffect | ~m1752_4 | -| ir.cpp:1754:42:1754:42 | Unary | r1754_5 | -| ir.cpp:1754:42:1754:42 | Unary | r1754_6 | -| ir.cpp:1755:1:1755:1 | Address | &:r1755_1 | -| ir.cpp:1757:6:1757:22 | ChiPartial | partial:m1757_3 | -| ir.cpp:1757:6:1757:22 | ChiTotal | total:m1757_2 | -| ir.cpp:1757:6:1757:22 | SideEffect | m1757_3 | -| ir.cpp:1757:28:1757:28 | Address | &:r1757_5 | -| ir.cpp:1758:13:1758:13 | Address | &:r1758_1 | -| ir.cpp:1758:17:1758:17 | Address | &:r1758_2 | -| ir.cpp:1758:17:1758:17 | Load | m1757_6 | -| ir.cpp:1758:17:1758:17 | StoreValue | r1758_3 | -| ir.cpp:1758:20:1758:20 | Address | &:r1758_5 | -| ir.cpp:1758:20:1758:20 | Left | r1758_6 | -| ir.cpp:1758:20:1758:20 | Load | m1757_6 | -| ir.cpp:1758:20:1758:24 | Condition | r1758_10 | -| ir.cpp:1758:20:1758:24 | Left | r1758_8 | -| ir.cpp:1758:20:1758:24 | Right | r1758_9 | -| ir.cpp:1758:24:1758:24 | Right | r1758_7 | -| ir.cpp:1759:9:1759:9 | Address | &:r1759_6 | -| ir.cpp:1759:13:1759:13 | Address | &:r1759_1 | -| ir.cpp:1759:13:1759:13 | Left | r1759_2 | -| ir.cpp:1759:13:1759:13 | Load | m1757_6 | -| ir.cpp:1759:13:1759:17 | StoreValue | r1759_5 | -| ir.cpp:1759:17:1759:17 | Address | &:r1759_3 | -| ir.cpp:1759:17:1759:17 | Load | m1758_4 | -| ir.cpp:1759:17:1759:17 | Right | r1759_4 | -| ir.cpp:1762:9:1762:9 | Address | &:r1762_2 | -| ir.cpp:1762:9:1762:9 | Phi | from 0:m1757_6 | -| ir.cpp:1762:9:1762:9 | Phi | from 1:m1759_7 | -| ir.cpp:1763:9:1763:9 | Address | &:r1763_3 | -| ir.cpp:1763:13:1763:13 | Address | &:r1763_1 | -| ir.cpp:1763:13:1763:13 | Load | m1762_1 | -| ir.cpp:1763:13:1763:13 | StoreValue | r1763_2 | -| ir.cpp:1763:16:1763:16 | Address | &:r1763_5 | -| ir.cpp:1763:16:1763:16 | Left | r1763_6 | -| ir.cpp:1763:16:1763:16 | Load | m1762_1 | -| ir.cpp:1763:16:1763:20 | Condition | r1763_10 | -| ir.cpp:1763:16:1763:20 | Left | r1763_8 | -| ir.cpp:1763:16:1763:20 | Right | r1763_9 | -| ir.cpp:1763:20:1763:20 | Right | r1763_7 | -| ir.cpp:1764:9:1764:9 | Address | &:r1764_6 | -| ir.cpp:1764:13:1764:13 | Address | &:r1764_1 | -| ir.cpp:1764:13:1764:13 | Left | r1764_2 | -| ir.cpp:1764:13:1764:13 | Load | m1762_1 | -| ir.cpp:1764:13:1764:17 | StoreValue | r1764_5 | -| ir.cpp:1764:17:1764:17 | Address | &:r1764_3 | -| ir.cpp:1764:17:1764:17 | Load | m1763_4 | -| ir.cpp:1764:17:1764:17 | Right | r1764_4 | -| ir.cpp:1767:9:1767:9 | Address | &:r1767_4 | -| ir.cpp:1767:13:1767:13 | Address | &:r1767_2 | -| ir.cpp:1767:13:1767:13 | Load | m1767_1 | -| ir.cpp:1767:13:1767:13 | Phi | from 2:m1762_1 | -| ir.cpp:1767:13:1767:13 | Phi | from 3:m1764_7 | -| ir.cpp:1767:13:1767:13 | StoreValue | r1767_3 | -| ir.cpp:1767:14:1767:25 | Address | &:r1767_6 | -| ir.cpp:1767:14:1767:25 | Condition | r1767_14 | -| ir.cpp:1767:20:1767:21 | Address | &:r1767_10 | -| ir.cpp:1767:20:1767:21 | Left | r1767_11 | -| ir.cpp:1767:20:1767:21 | Load | m1767_9 | -| ir.cpp:1767:20:1767:21 | Right | r1767_12 | -| ir.cpp:1767:20:1767:21 | Unary | r1767_13 | -| ir.cpp:1767:25:1767:25 | Address | &:r1767_7 | -| ir.cpp:1767:25:1767:25 | Load | m1767_5 | -| ir.cpp:1767:25:1767:25 | StoreValue | r1767_8 | -| ir.cpp:1768:9:1768:9 | Address | &:r1768_6 | -| ir.cpp:1768:13:1768:13 | Address | &:r1768_1 | -| ir.cpp:1768:13:1768:13 | Left | r1768_2 | -| ir.cpp:1768:13:1768:13 | Load | m1767_1 | -| ir.cpp:1768:13:1768:17 | StoreValue | r1768_5 | -| ir.cpp:1768:17:1768:17 | Address | &:r1768_3 | -| ir.cpp:1768:17:1768:17 | Load | m1767_5 | -| ir.cpp:1768:17:1768:17 | Right | r1768_4 | -| ir.cpp:1771:9:1771:29 | Address | &:r1771_6 | -| ir.cpp:1771:9:1771:29 | Condition | r1771_14 | -| ir.cpp:1771:13:1771:13 | Address | &:r1771_2 | -| ir.cpp:1771:13:1771:13 | Phi | from 4:m1767_1 | -| ir.cpp:1771:13:1771:13 | Phi | from 5:m1768_7 | -| ir.cpp:1771:17:1771:17 | Address | &:r1771_3 | -| ir.cpp:1771:17:1771:17 | Load | m1771_1 | -| ir.cpp:1771:17:1771:17 | StoreValue | r1771_4 | -| ir.cpp:1771:24:1771:25 | Address | &:r1771_10 | -| ir.cpp:1771:24:1771:25 | Left | r1771_11 | -| ir.cpp:1771:24:1771:25 | Load | m1771_9 | -| ir.cpp:1771:24:1771:25 | Right | r1771_12 | -| ir.cpp:1771:24:1771:25 | Unary | r1771_13 | -| ir.cpp:1771:29:1771:29 | Address | &:r1771_7 | -| ir.cpp:1771:29:1771:29 | Load | m1771_5 | -| ir.cpp:1771:29:1771:29 | StoreValue | r1771_8 | -| ir.cpp:1772:9:1772:9 | Address | &:r1772_6 | -| ir.cpp:1772:13:1772:13 | Address | &:r1772_1 | -| ir.cpp:1772:13:1772:13 | Left | r1772_2 | -| ir.cpp:1772:13:1772:13 | Load | m1771_1 | -| ir.cpp:1772:13:1772:17 | StoreValue | r1772_5 | -| ir.cpp:1772:17:1772:17 | Address | &:r1772_3 | -| ir.cpp:1772:17:1772:17 | Load | m1771_5 | -| ir.cpp:1772:17:1772:17 | Right | r1772_4 | -| ir.cpp:1775:9:1775:9 | Address | &:r1775_2 | -| ir.cpp:1775:9:1775:9 | Phi | from 6:m1771_1 | -| ir.cpp:1775:9:1775:9 | Phi | from 7:m1772_7 | -| ir.cpp:1775:13:1775:13 | Address | &:r1775_3 | -| ir.cpp:1775:13:1775:13 | Load | m1775_1 | -| ir.cpp:1775:13:1775:13 | StoreValue | r1775_4 | -| ir.cpp:1776:9:1776:9 | Address | &:r1776_1 | -| ir.cpp:1776:9:1776:9 | Condition | r1776_4 | -| ir.cpp:1776:9:1776:9 | Left | r1776_2 | -| ir.cpp:1776:9:1776:9 | Load | m1775_5 | -| ir.cpp:1776:9:1776:9 | Right | r1776_3 | -| ir.cpp:1777:9:1777:9 | Address | &:r1777_6 | -| ir.cpp:1777:13:1777:13 | Address | &:r1777_1 | -| ir.cpp:1777:13:1777:13 | Left | r1777_2 | -| ir.cpp:1777:13:1777:13 | Load | m1775_1 | -| ir.cpp:1777:13:1777:17 | StoreValue | r1777_5 | -| ir.cpp:1777:17:1777:17 | Address | &:r1777_3 | -| ir.cpp:1777:17:1777:17 | Load | m1775_5 | -| ir.cpp:1777:17:1777:17 | Right | r1777_4 | -| ir.cpp:1780:9:1780:18 | Address | &:r1780_2 | -| ir.cpp:1780:9:1780:18 | Condition | r1780_10 | -| ir.cpp:1780:9:1780:18 | Phi | from 8:m1775_1 | -| ir.cpp:1780:9:1780:18 | Phi | from 9:m1777_7 | -| ir.cpp:1780:13:1780:14 | Address | &:r1780_6 | -| ir.cpp:1780:13:1780:14 | Left | r1780_7 | -| ir.cpp:1780:13:1780:14 | Load | m1780_5 | -| ir.cpp:1780:13:1780:14 | Right | r1780_8 | -| ir.cpp:1780:13:1780:14 | Unary | r1780_9 | -| ir.cpp:1780:18:1780:18 | Address | &:r1780_3 | -| ir.cpp:1780:18:1780:18 | Load | m1775_5 | -| ir.cpp:1780:18:1780:18 | StoreValue | r1780_4 | -| ir.cpp:1781:9:1781:9 | Address | &:r1781_3 | -| ir.cpp:1781:9:1781:9 | Address | &:r1781_3 | -| ir.cpp:1781:9:1781:9 | Left | r1781_4 | -| ir.cpp:1781:9:1781:9 | Load | m1780_1 | -| ir.cpp:1781:9:1781:15 | StoreValue | r1781_5 | -| ir.cpp:1781:14:1781:15 | Address | &:r1781_1 | -| ir.cpp:1781:14:1781:15 | Load | m1780_5 | -| ir.cpp:1781:14:1781:15 | Right | r1781_2 | -| ir.cpp:1785:6:1785:26 | ChiPartial | partial:m1785_3 | -| ir.cpp:1785:6:1785:26 | ChiTotal | total:m1785_2 | -| ir.cpp:1785:6:1785:26 | SideEffect | m1785_3 | -| ir.cpp:1785:32:1785:32 | Address | &:r1785_5 | -| ir.cpp:1786:17:1786:17 | Address | &:r1786_1 | -| ir.cpp:1786:21:1786:21 | Address | &:r1786_2 | -| ir.cpp:1786:21:1786:21 | Load | m1785_6 | -| ir.cpp:1786:21:1786:21 | StoreValue | r1786_3 | -| ir.cpp:1786:24:1786:24 | Address | &:r1786_5 | -| ir.cpp:1786:24:1786:24 | Left | r1786_6 | -| ir.cpp:1786:24:1786:24 | Load | m1785_6 | -| ir.cpp:1786:24:1786:28 | Condition | r1786_8 | -| ir.cpp:1786:28:1786:28 | Right | r1786_7 | -| ir.cpp:1788:9:1788:9 | Address | &:r1788_6 | -| ir.cpp:1788:13:1788:13 | Address | &:r1788_1 | -| ir.cpp:1788:13:1788:13 | Left | r1788_2 | -| ir.cpp:1788:13:1788:13 | Load | m1785_6 | -| ir.cpp:1788:13:1788:17 | StoreValue | r1788_5 | -| ir.cpp:1788:17:1788:17 | Address | &:r1788_3 | -| ir.cpp:1788:17:1788:17 | Load | m1786_4 | -| ir.cpp:1788:17:1788:17 | Right | r1788_4 | -| ir.cpp:1791:9:1791:9 | Address | &:r1791_1 | -| ir.cpp:1792:13:1792:13 | Address | &:r1792_3 | -| ir.cpp:1792:17:1792:17 | Address | &:r1792_1 | -| ir.cpp:1792:17:1792:17 | Load | m1788_7 | -| ir.cpp:1792:17:1792:17 | StoreValue | r1792_2 | -| ir.cpp:1792:20:1792:20 | Address | &:r1792_5 | -| ir.cpp:1792:20:1792:20 | Left | r1792_6 | -| ir.cpp:1792:20:1792:20 | Load | m1788_7 | -| ir.cpp:1792:20:1792:24 | Condition | r1792_8 | -| ir.cpp:1792:24:1792:24 | Right | r1792_7 | -| ir.cpp:1794:9:1794:9 | Address | &:r1794_6 | -| ir.cpp:1794:13:1794:13 | Address | &:r1794_1 | -| ir.cpp:1794:13:1794:13 | Left | r1794_2 | -| ir.cpp:1794:13:1794:13 | Load | m1788_7 | -| ir.cpp:1794:13:1794:17 | StoreValue | r1794_5 | -| ir.cpp:1794:17:1794:17 | Address | &:r1794_3 | -| ir.cpp:1794:17:1794:17 | Load | m1792_4 | -| ir.cpp:1794:17:1794:17 | Right | r1794_4 | -| ir.cpp:1797:13:1797:13 | Address | &:r1797_3 | -| ir.cpp:1797:17:1797:17 | Address | &:r1797_1 | -| ir.cpp:1797:17:1797:17 | Load | m1794_7 | -| ir.cpp:1797:17:1797:17 | StoreValue | r1797_2 | -| ir.cpp:1797:18:1797:29 | Address | &:r1797_5 | -| ir.cpp:1797:18:1797:29 | Condition | r1797_11 | -| ir.cpp:1797:24:1797:25 | Address | &:r1797_9 | -| ir.cpp:1797:24:1797:25 | Load | m1797_8 | -| ir.cpp:1797:24:1797:25 | Unary | r1797_10 | -| ir.cpp:1797:29:1797:29 | Address | &:r1797_6 | -| ir.cpp:1797:29:1797:29 | Load | m1797_4 | -| ir.cpp:1797:29:1797:29 | StoreValue | r1797_7 | -| ir.cpp:1799:9:1799:9 | Address | &:r1799_6 | -| ir.cpp:1799:13:1799:13 | Address | &:r1799_1 | -| ir.cpp:1799:13:1799:13 | Left | r1799_2 | -| ir.cpp:1799:13:1799:13 | Load | m1794_7 | -| ir.cpp:1799:13:1799:17 | StoreValue | r1799_5 | -| ir.cpp:1799:17:1799:17 | Address | &:r1799_3 | -| ir.cpp:1799:17:1799:17 | Load | m1797_4 | -| ir.cpp:1799:17:1799:17 | Right | r1799_4 | -| ir.cpp:1802:13:1802:33 | Address | &:r1802_5 | -| ir.cpp:1802:13:1802:33 | Condition | r1802_11 | -| ir.cpp:1802:17:1802:17 | Address | &:r1802_1 | -| ir.cpp:1802:21:1802:21 | Address | &:r1802_2 | -| ir.cpp:1802:21:1802:21 | Load | m1799_7 | -| ir.cpp:1802:21:1802:21 | StoreValue | r1802_3 | -| ir.cpp:1802:28:1802:29 | Address | &:r1802_9 | -| ir.cpp:1802:28:1802:29 | Load | m1802_8 | -| ir.cpp:1802:28:1802:29 | Unary | r1802_10 | -| ir.cpp:1802:33:1802:33 | Address | &:r1802_6 | -| ir.cpp:1802:33:1802:33 | Load | m1802_4 | -| ir.cpp:1802:33:1802:33 | StoreValue | r1802_7 | -| ir.cpp:1804:9:1804:9 | Address | &:r1804_6 | -| ir.cpp:1804:13:1804:13 | Address | &:r1804_1 | -| ir.cpp:1804:13:1804:13 | Left | r1804_2 | -| ir.cpp:1804:13:1804:13 | Load | m1799_7 | -| ir.cpp:1804:13:1804:17 | StoreValue | r1804_5 | -| ir.cpp:1804:17:1804:17 | Address | &:r1804_3 | -| ir.cpp:1804:17:1804:17 | Load | m1802_4 | -| ir.cpp:1804:17:1804:17 | Right | r1804_4 | -| ir.cpp:1807:9:1807:9 | Address | &:r1807_1 | -| ir.cpp:1807:13:1807:13 | Address | &:r1807_2 | -| ir.cpp:1807:13:1807:13 | Load | m1804_7 | -| ir.cpp:1807:13:1807:13 | StoreValue | r1807_3 | -| ir.cpp:1808:13:1808:13 | Address | &:r1808_1 | -| ir.cpp:1808:13:1808:13 | Condition | r1808_2 | -| ir.cpp:1808:13:1808:13 | Load | m1807_4 | -| ir.cpp:1810:9:1810:9 | Address | &:r1810_6 | +| ir.cpp:1597:15:1597:15 | Address | &:r1597_1 | +| ir.cpp:1597:19:1597:40 | Address | &:r1597_2 | +| ir.cpp:1597:19:1597:40 | Address | &:r1597_2 | +| ir.cpp:1597:19:1597:40 | Arg(this) | this:r1597_2 | +| ir.cpp:1597:19:1597:40 | ChiPartial | partial:m1597_8 | +| ir.cpp:1597:19:1597:40 | ChiTotal | total:m1596_9 | +| ir.cpp:1597:19:1597:40 | SideEffect | m1596_9 | +| ir.cpp:1597:42:1597:47 | CallTarget | func:r1597_3 | +| ir.cpp:1597:42:1597:47 | ChiPartial | partial:m1597_5 | +| ir.cpp:1597:42:1597:47 | ChiTotal | total:m1596_6 | +| ir.cpp:1597:42:1597:47 | SideEffect | ~m1596_6 | +| ir.cpp:1597:42:1597:47 | Unary | r1597_4 | +| ir.cpp:1597:48:1597:50 | StoreValue | r1597_11 | +| ir.cpp:1597:48:1597:50 | Unary | r1597_10 | +| ir.cpp:1598:15:1598:15 | Address | &:r1598_1 | +| ir.cpp:1598:19:1598:40 | Address | &:r1598_2 | +| ir.cpp:1598:19:1598:40 | Address | &:r1598_2 | +| ir.cpp:1598:19:1598:40 | Arg(this) | this:r1598_2 | +| ir.cpp:1598:19:1598:40 | ChiPartial | partial:m1598_8 | +| ir.cpp:1598:19:1598:40 | ChiTotal | total:m1597_9 | +| ir.cpp:1598:19:1598:40 | SideEffect | m1597_9 | +| ir.cpp:1598:42:1598:47 | CallTarget | func:r1598_3 | +| ir.cpp:1598:42:1598:47 | ChiPartial | partial:m1598_5 | +| ir.cpp:1598:42:1598:47 | ChiTotal | total:m1597_6 | +| ir.cpp:1598:42:1598:47 | SideEffect | ~m1597_6 | +| ir.cpp:1598:42:1598:47 | Unary | r1598_4 | +| ir.cpp:1598:48:1598:50 | StoreValue | r1598_11 | +| ir.cpp:1598:48:1598:50 | Unary | r1598_10 | +| ir.cpp:1599:9:1599:9 | Address | &:r1599_2 | +| ir.cpp:1599:9:1599:9 | Address | &:r1599_4 | +| ir.cpp:1599:9:1599:9 | Load | m1597_12 | +| ir.cpp:1599:9:1599:9 | Unary | r1599_3 | +| ir.cpp:1599:9:1599:15 | ChiPartial | partial:m1599_5 | +| ir.cpp:1599:9:1599:15 | ChiTotal | total:m1598_9 | +| ir.cpp:1599:13:1599:15 | StoreValue | r1599_1 | +| ir.cpp:1600:17:1600:18 | Address | &:r1600_1 | +| ir.cpp:1600:22:1600:22 | Address | &:r1600_2 | +| ir.cpp:1600:22:1600:22 | Load | m1597_12 | +| ir.cpp:1600:22:1600:22 | StoreValue | r1600_5 | +| ir.cpp:1600:22:1600:22 | Unary | r1600_3 | +| ir.cpp:1600:22:1600:22 | Unary | r1600_4 | +| ir.cpp:1601:13:1601:13 | Address | &:r1601_1 | +| ir.cpp:1601:17:1601:17 | Address | &:r1601_2 | +| ir.cpp:1601:17:1601:17 | Address | &:r1601_3 | +| ir.cpp:1601:17:1601:17 | Load | m1596_12 | +| ir.cpp:1601:17:1601:17 | Load | ~m1598_9 | +| ir.cpp:1601:17:1601:17 | StoreValue | r1601_4 | +| ir.cpp:1602:9:1602:9 | Address | &:r1602_2 | +| ir.cpp:1602:9:1602:9 | Address | &:r1602_4 | +| ir.cpp:1602:9:1602:9 | Load | m1598_12 | +| ir.cpp:1602:9:1602:9 | Unary | r1602_3 | +| ir.cpp:1602:9:1602:13 | ChiPartial | partial:m1602_5 | +| ir.cpp:1602:9:1602:13 | ChiTotal | total:m1598_6 | +| ir.cpp:1602:13:1602:13 | StoreValue | r1602_1 | +| ir.cpp:1603:14:1603:15 | Address | &:r1603_1 | +| ir.cpp:1603:19:1603:19 | Address | &:r1603_2 | +| ir.cpp:1603:19:1603:19 | Load | m1598_12 | +| ir.cpp:1603:19:1603:19 | StoreValue | r1603_5 | +| ir.cpp:1603:19:1603:19 | Unary | r1603_3 | +| ir.cpp:1603:19:1603:19 | Unary | r1603_4 | +| ir.cpp:1604:13:1604:13 | Address | &:r1604_1 | +| ir.cpp:1604:17:1604:17 | Address | &:r1604_2 | +| ir.cpp:1604:17:1604:17 | Address | &:r1604_3 | +| ir.cpp:1604:17:1604:17 | Load | m1598_12 | +| ir.cpp:1604:17:1604:17 | Load | ~m1602_6 | +| ir.cpp:1604:17:1604:17 | StoreValue | r1604_4 | +| ir.cpp:1608:8:1608:8 | Address | &:r1608_5 | +| ir.cpp:1608:8:1608:8 | Address | &:r1608_5 | +| ir.cpp:1608:8:1608:8 | Address | &:r1608_7 | +| ir.cpp:1608:8:1608:8 | Address | &:r1608_7 | +| ir.cpp:1608:8:1608:8 | ChiPartial | partial:m1608_3 | +| ir.cpp:1608:8:1608:8 | ChiTotal | total:m1608_2 | +| ir.cpp:1608:8:1608:8 | Load | m1608_6 | +| ir.cpp:1608:8:1608:8 | SideEffect | m1608_3 | +| ir.cpp:1608:8:1608:8 | SideEffect | m1608_8 | +| ir.cpp:1635:61:1635:98 | Address | &:r1635_5 | +| ir.cpp:1635:61:1635:98 | Address | &:r1635_5 | +| ir.cpp:1635:61:1635:98 | Address | &:r1635_7 | +| ir.cpp:1635:61:1635:98 | Address | &:r1635_7 | +| ir.cpp:1635:61:1635:98 | Address | &:r1635_10 | +| ir.cpp:1635:61:1635:98 | ChiPartial | partial:m1635_3 | +| ir.cpp:1635:61:1635:98 | ChiTotal | total:m1635_2 | +| ir.cpp:1635:61:1635:98 | Load | m1635_6 | +| ir.cpp:1635:61:1635:98 | Load | m1636_6 | +| ir.cpp:1635:61:1635:98 | SideEffect | m1635_3 | +| ir.cpp:1635:61:1635:98 | SideEffect | m1635_8 | +| ir.cpp:1636:5:1636:13 | Address | &:r1636_1 | +| ir.cpp:1636:12:1636:12 | Address | &:r1636_2 | +| ir.cpp:1636:12:1636:12 | Address | &:r1636_4 | +| ir.cpp:1636:12:1636:12 | Load | m1635_6 | +| ir.cpp:1636:12:1636:12 | Load | ~m1635_8 | +| ir.cpp:1636:12:1636:12 | StoreValue | r1636_5 | +| ir.cpp:1636:12:1636:12 | Unary | r1636_3 | +| ir.cpp:1639:61:1639:98 | Address | &:r1639_5 | +| ir.cpp:1639:61:1639:98 | Address | &:r1639_5 | +| ir.cpp:1639:61:1639:98 | Address | &:r1639_7 | +| ir.cpp:1639:61:1639:98 | Address | &:r1639_7 | +| ir.cpp:1639:61:1639:98 | Address | &:r1639_10 | +| ir.cpp:1639:61:1639:98 | ChiPartial | partial:m1639_3 | +| ir.cpp:1639:61:1639:98 | ChiTotal | total:m1639_2 | +| ir.cpp:1639:61:1639:98 | Load | m1639_6 | +| ir.cpp:1639:61:1639:98 | Load | m1640_8 | +| ir.cpp:1639:61:1639:98 | SideEffect | m1639_3 | +| ir.cpp:1639:61:1639:98 | SideEffect | m1639_8 | +| ir.cpp:1640:5:1640:13 | Address | &:r1640_1 | +| ir.cpp:1640:12:1640:12 | Address | &:r1640_2 | +| ir.cpp:1640:12:1640:12 | Address | &:r1640_4 | +| ir.cpp:1640:12:1640:12 | Load | m1639_6 | +| ir.cpp:1640:12:1640:12 | Load | ~m1639_8 | +| ir.cpp:1640:12:1640:12 | StoreValue | r1640_7 | +| ir.cpp:1640:12:1640:12 | Unary | r1640_3 | +| ir.cpp:1640:12:1640:12 | Unary | r1640_5 | +| ir.cpp:1640:12:1640:12 | Unary | r1640_6 | +| ir.cpp:1643:61:1643:98 | Address | &:r1643_5 | +| ir.cpp:1643:61:1643:98 | Address | &:r1643_5 | +| ir.cpp:1643:61:1643:98 | Address | &:r1643_7 | +| ir.cpp:1643:61:1643:98 | Address | &:r1643_7 | +| ir.cpp:1643:61:1643:98 | Address | &:r1643_10 | +| ir.cpp:1643:61:1643:98 | ChiPartial | partial:m1643_3 | +| ir.cpp:1643:61:1643:98 | ChiTotal | total:m1643_2 | +| ir.cpp:1643:61:1643:98 | Load | m1643_6 | +| ir.cpp:1643:61:1643:98 | Load | m1644_6 | +| ir.cpp:1643:61:1643:98 | SideEffect | m1643_3 | +| ir.cpp:1643:61:1643:98 | SideEffect | m1643_8 | +| ir.cpp:1644:5:1644:13 | Address | &:r1644_1 | +| ir.cpp:1644:12:1644:12 | Address | &:r1644_2 | +| ir.cpp:1644:12:1644:12 | StoreValue | r1644_3 | +| ir.cpp:1644:12:1644:12 | StoreValue | r1644_5 | +| ir.cpp:1644:12:1644:12 | Unary | r1644_2 | +| ir.cpp:1647:6:1647:40 | ChiPartial | partial:m1647_3 | +| ir.cpp:1647:6:1647:40 | ChiTotal | total:m1647_2 | +| ir.cpp:1647:6:1647:40 | SideEffect | ~m1668_6 | +| ir.cpp:1648:36:1648:36 | Address | &:r1648_1 | +| ir.cpp:1648:36:1648:36 | Address | &:r1648_1 | +| ir.cpp:1648:36:1648:36 | Arg(this) | this:r1648_1 | +| ir.cpp:1648:36:1648:36 | CallTarget | func:r1648_3 | +| ir.cpp:1648:36:1648:36 | ChiPartial | partial:m1648_5 | +| ir.cpp:1648:36:1648:36 | ChiPartial | partial:m1648_7 | +| ir.cpp:1648:36:1648:36 | ChiTotal | total:m1647_4 | +| ir.cpp:1648:36:1648:36 | ChiTotal | total:m1648_2 | +| ir.cpp:1648:36:1648:36 | SideEffect | ~m1647_4 | +| ir.cpp:1651:16:1651:16 | Address | &:r1651_1 | +| ir.cpp:1651:16:1651:16 | Address | &:r1651_7 | +| ir.cpp:1651:16:1651:16 | Address | &:r1651_21 | +| ir.cpp:1651:16:1651:16 | Address | &:r1651_35 | +| ir.cpp:1651:16:1651:16 | CallTarget | func:r1651_10 | +| ir.cpp:1651:16:1651:16 | CallTarget | func:r1651_24 | +| ir.cpp:1651:16:1651:16 | CallTarget | func:r1651_38 | +| ir.cpp:1651:16:1651:16 | ChiPartial | partial:m1651_12 | +| ir.cpp:1651:16:1651:16 | ChiPartial | partial:m1651_26 | +| ir.cpp:1651:16:1651:16 | ChiPartial | partial:m1651_40 | +| ir.cpp:1651:16:1651:16 | ChiTotal | total:m1648_6 | +| ir.cpp:1651:16:1651:16 | ChiTotal | total:m1651_13 | +| ir.cpp:1651:16:1651:16 | ChiTotal | total:m1651_27 | +| ir.cpp:1651:16:1651:16 | Load | m1651_4 | +| ir.cpp:1651:16:1651:16 | Load | m1651_4 | +| ir.cpp:1651:16:1651:16 | Load | m1651_4 | +| ir.cpp:1651:16:1651:16 | SideEffect | ~m1648_6 | +| ir.cpp:1651:16:1651:16 | SideEffect | ~m1651_13 | +| ir.cpp:1651:16:1651:16 | SideEffect | ~m1651_27 | +| ir.cpp:1651:16:1651:16 | StoreValue | r1651_11 | +| ir.cpp:1651:16:1651:16 | Unary | r1651_8 | +| ir.cpp:1651:16:1651:16 | Unary | r1651_22 | +| ir.cpp:1651:16:1651:16 | Unary | r1651_25 | +| ir.cpp:1651:16:1651:16 | Unary | r1651_36 | +| ir.cpp:1651:16:1651:16 | Unary | r1651_39 | +| ir.cpp:1651:16:1651:30 | Address | &:r1651_6 | +| ir.cpp:1651:16:1651:30 | StoreValue | r1651_18 | +| ir.cpp:1651:16:1651:30 | StoreValue | r1651_32 | +| ir.cpp:1651:16:1651:30 | StoreValue | r1651_46 | +| ir.cpp:1651:16:1651:30 | Unary | r1651_6 | +| ir.cpp:1651:16:1651:30 | Unary | r1651_31 | +| ir.cpp:1651:16:1651:30 | Unary | r1651_45 | +| ir.cpp:1651:17:1651:17 | Address | &:r1651_5 | +| ir.cpp:1651:20:1651:20 | Address | &:r1651_20 | +| ir.cpp:1651:23:1651:23 | Address | &:r1651_34 | +| ir.cpp:1651:29:1651:29 | StoreValue | r1651_3 | +| ir.cpp:1651:29:1651:29 | Unary | r1651_2 | +| ir.cpp:1651:30:1651:30 | Address | &:r1651_9 | +| ir.cpp:1651:30:1651:30 | Address | &:r1651_9 | +| ir.cpp:1651:30:1651:30 | Address | &:r1651_23 | +| ir.cpp:1651:30:1651:30 | Address | &:r1651_23 | +| ir.cpp:1651:30:1651:30 | Address | &:r1651_37 | +| ir.cpp:1651:30:1651:30 | Address | &:r1651_37 | +| ir.cpp:1651:30:1651:30 | Arg(this) | this:r1651_9 | +| ir.cpp:1651:30:1651:30 | Arg(this) | this:r1651_23 | +| ir.cpp:1651:30:1651:30 | Arg(this) | this:r1651_37 | +| ir.cpp:1651:30:1651:30 | ChiPartial | partial:m1651_15 | +| ir.cpp:1651:30:1651:30 | ChiPartial | partial:m1651_29 | +| ir.cpp:1651:30:1651:30 | ChiPartial | partial:m1651_43 | +| ir.cpp:1651:30:1651:30 | ChiTotal | total:m1648_8 | +| ir.cpp:1651:30:1651:30 | ChiTotal | total:m1651_16 | +| ir.cpp:1651:30:1651:30 | ChiTotal | total:m1651_30 | +| ir.cpp:1651:30:1651:30 | SideEffect | m1648_8 | +| ir.cpp:1651:30:1651:30 | SideEffect | m1651_16 | +| ir.cpp:1651:30:1651:30 | SideEffect | m1651_30 | +| ir.cpp:1652:9:1652:9 | Address | &:r1652_2 | +| ir.cpp:1652:9:1652:9 | Address | &:r1652_4 | +| ir.cpp:1652:9:1652:9 | Load | m1651_19 | +| ir.cpp:1652:9:1652:9 | Unary | r1652_3 | +| ir.cpp:1652:13:1652:13 | StoreValue | r1652_1 | +| ir.cpp:1653:14:1653:15 | Address | &:r1653_1 | +| ir.cpp:1653:19:1653:19 | Address | &:r1653_2 | +| ir.cpp:1653:19:1653:19 | Load | m1651_19 | +| ir.cpp:1653:19:1653:19 | StoreValue | r1653_5 | +| ir.cpp:1653:19:1653:19 | Unary | r1653_3 | +| ir.cpp:1653:19:1653:19 | Unary | r1653_4 | +| ir.cpp:1654:13:1654:13 | Address | &:r1654_1 | +| ir.cpp:1654:17:1654:17 | Address | &:r1654_2 | +| ir.cpp:1654:17:1654:17 | Address | &:r1654_3 | +| ir.cpp:1654:17:1654:17 | Load | m1651_19 | +| ir.cpp:1654:17:1654:17 | Load | m1652_5 | +| ir.cpp:1654:17:1654:17 | StoreValue | r1654_4 | +| ir.cpp:1655:9:1655:9 | Address | &:r1655_2 | +| ir.cpp:1655:9:1655:9 | Address | &:r1655_4 | +| ir.cpp:1655:9:1655:9 | Load | m1651_33 | +| ir.cpp:1655:9:1655:9 | Unary | r1655_3 | +| ir.cpp:1655:9:1655:13 | ChiPartial | partial:m1655_5 | +| ir.cpp:1655:9:1655:13 | ChiTotal | total:m1651_41 | +| ir.cpp:1655:13:1655:13 | StoreValue | r1655_1 | +| ir.cpp:1656:14:1656:15 | Address | &:r1656_1 | +| ir.cpp:1656:19:1656:19 | Address | &:r1656_2 | +| ir.cpp:1656:19:1656:19 | Load | m1651_33 | +| ir.cpp:1656:19:1656:19 | StoreValue | r1656_5 | +| ir.cpp:1656:19:1656:19 | Unary | r1656_3 | +| ir.cpp:1656:19:1656:19 | Unary | r1656_4 | +| ir.cpp:1657:13:1657:13 | Address | &:r1657_1 | +| ir.cpp:1657:17:1657:17 | Address | &:r1657_2 | +| ir.cpp:1657:17:1657:17 | Address | &:r1657_3 | +| ir.cpp:1657:17:1657:17 | Load | m1651_33 | +| ir.cpp:1657:17:1657:17 | Load | ~m1655_6 | +| ir.cpp:1657:17:1657:17 | StoreValue | r1657_4 | +| ir.cpp:1661:16:1661:37 | Address | &:r1661_1 | +| ir.cpp:1661:41:1661:41 | StoreValue | r1661_3 | +| ir.cpp:1661:41:1661:41 | Unary | r1661_2 | +| ir.cpp:1662:16:1662:16 | Address | &:r1662_1 | +| ir.cpp:1662:20:1662:41 | Address | &:r1662_3 | +| ir.cpp:1662:20:1662:41 | Address | &:r1662_5 | +| ir.cpp:1662:20:1662:41 | Address | &:r1662_5 | +| ir.cpp:1662:20:1662:41 | Arg(this) | this:r1662_5 | +| ir.cpp:1662:20:1662:41 | ChiPartial | partial:m1662_11 | +| ir.cpp:1662:20:1662:41 | ChiTotal | total:m1651_44 | +| ir.cpp:1662:20:1662:41 | Load | m1661_4 | +| ir.cpp:1662:20:1662:41 | SideEffect | m1651_44 | +| ir.cpp:1662:20:1662:41 | Unary | r1662_4 | +| ir.cpp:1662:20:1662:50 | Address | &:r1662_2 | +| ir.cpp:1662:20:1662:50 | StoreValue | r1662_14 | +| ir.cpp:1662:20:1662:50 | Unary | r1662_2 | +| ir.cpp:1662:43:1662:48 | CallTarget | func:r1662_6 | +| ir.cpp:1662:43:1662:48 | ChiPartial | partial:m1662_8 | +| ir.cpp:1662:43:1662:48 | ChiTotal | total:m1655_6 | +| ir.cpp:1662:43:1662:48 | SideEffect | ~m1655_6 | +| ir.cpp:1662:43:1662:48 | StoreValue | r1662_7 | +| ir.cpp:1663:15:1663:15 | Address | &:r1663_1 | +| ir.cpp:1663:19:1663:40 | Address | &:r1663_2 | +| ir.cpp:1663:19:1663:40 | Address | &:r1663_4 | +| ir.cpp:1663:19:1663:40 | Address | &:r1663_4 | +| ir.cpp:1663:19:1663:40 | Arg(this) | this:r1663_4 | +| ir.cpp:1663:19:1663:40 | ChiPartial | partial:m1663_10 | +| ir.cpp:1663:19:1663:40 | ChiTotal | total:m1662_12 | +| ir.cpp:1663:19:1663:40 | Load | m1661_4 | +| ir.cpp:1663:19:1663:40 | SideEffect | m1662_12 | +| ir.cpp:1663:19:1663:40 | Unary | r1663_3 | +| ir.cpp:1663:42:1663:47 | CallTarget | func:r1663_5 | +| ir.cpp:1663:42:1663:47 | ChiPartial | partial:m1663_7 | +| ir.cpp:1663:42:1663:47 | ChiTotal | total:m1662_9 | +| ir.cpp:1663:42:1663:47 | SideEffect | ~m1662_9 | +| ir.cpp:1663:42:1663:47 | Unary | r1663_6 | +| ir.cpp:1663:48:1663:50 | StoreValue | r1663_13 | +| ir.cpp:1663:48:1663:50 | Unary | r1663_12 | +| ir.cpp:1664:16:1664:17 | Address | &:r1664_1 | +| ir.cpp:1664:21:1664:42 | Address | &:r1664_2 | +| ir.cpp:1664:21:1664:42 | Address | &:r1664_4 | +| ir.cpp:1664:21:1664:42 | Address | &:r1664_4 | +| ir.cpp:1664:21:1664:42 | Arg(this) | this:r1664_4 | +| ir.cpp:1664:21:1664:42 | ChiPartial | partial:m1664_10 | +| ir.cpp:1664:21:1664:42 | ChiTotal | total:m1663_11 | +| ir.cpp:1664:21:1664:42 | Load | m1661_4 | +| ir.cpp:1664:21:1664:42 | SideEffect | m1663_11 | +| ir.cpp:1664:21:1664:42 | Unary | r1664_3 | +| ir.cpp:1664:44:1664:49 | CallTarget | func:r1664_5 | +| ir.cpp:1664:44:1664:49 | ChiPartial | partial:m1664_7 | +| ir.cpp:1664:44:1664:49 | ChiTotal | total:m1663_8 | +| ir.cpp:1664:44:1664:49 | SideEffect | ~m1663_8 | +| ir.cpp:1664:44:1664:49 | Unary | r1664_6 | +| ir.cpp:1664:50:1664:52 | StoreValue | r1664_13 | +| ir.cpp:1664:50:1664:52 | Unary | r1664_12 | +| ir.cpp:1665:9:1665:9 | Address | &:r1665_2 | +| ir.cpp:1665:9:1665:9 | Address | &:r1665_4 | +| ir.cpp:1665:9:1665:9 | Load | m1662_15 | +| ir.cpp:1665:9:1665:9 | Unary | r1665_3 | +| ir.cpp:1665:13:1665:13 | StoreValue | r1665_1 | +| ir.cpp:1666:14:1666:15 | Address | &:r1666_1 | +| ir.cpp:1666:19:1666:19 | Address | &:r1666_2 | +| ir.cpp:1666:19:1666:19 | Load | m1662_15 | +| ir.cpp:1666:19:1666:19 | StoreValue | r1666_5 | +| ir.cpp:1666:19:1666:19 | Unary | r1666_3 | +| ir.cpp:1666:19:1666:19 | Unary | r1666_4 | +| ir.cpp:1667:13:1667:13 | Address | &:r1667_1 | +| ir.cpp:1667:17:1667:17 | Address | &:r1667_2 | +| ir.cpp:1667:17:1667:17 | Address | &:r1667_3 | +| ir.cpp:1667:17:1667:17 | Load | m1662_15 | +| ir.cpp:1667:17:1667:17 | Load | m1665_5 | +| ir.cpp:1667:17:1667:17 | StoreValue | r1667_4 | +| ir.cpp:1668:9:1668:9 | Address | &:r1668_2 | +| ir.cpp:1668:9:1668:9 | Address | &:r1668_4 | +| ir.cpp:1668:9:1668:9 | Load | m1663_14 | +| ir.cpp:1668:9:1668:9 | Unary | r1668_3 | +| ir.cpp:1668:9:1668:13 | ChiPartial | partial:m1668_5 | +| ir.cpp:1668:9:1668:13 | ChiTotal | total:m1664_8 | +| ir.cpp:1668:13:1668:13 | StoreValue | r1668_1 | +| ir.cpp:1669:14:1669:15 | Address | &:r1669_1 | +| ir.cpp:1669:19:1669:19 | Address | &:r1669_2 | +| ir.cpp:1669:19:1669:19 | Load | m1663_14 | +| ir.cpp:1669:19:1669:19 | StoreValue | r1669_5 | +| ir.cpp:1669:19:1669:19 | Unary | r1669_3 | +| ir.cpp:1669:19:1669:19 | Unary | r1669_4 | +| ir.cpp:1670:13:1670:13 | Address | &:r1670_1 | +| ir.cpp:1670:17:1670:17 | Address | &:r1670_2 | +| ir.cpp:1670:17:1670:17 | Address | &:r1670_3 | +| ir.cpp:1670:17:1670:17 | Load | m1663_14 | +| ir.cpp:1670:17:1670:17 | Load | ~m1668_6 | +| ir.cpp:1670:17:1670:17 | StoreValue | r1670_4 | +| ir.cpp:1674:6:1674:42 | ChiPartial | partial:m1674_3 | +| ir.cpp:1674:6:1674:42 | ChiTotal | total:m1674_2 | +| ir.cpp:1674:6:1674:42 | SideEffect | m1674_3 | +| ir.cpp:1675:9:1675:10 | Address | &:r1675_1 | +| ir.cpp:1675:9:1675:10 | Left | r1675_1 | +| ir.cpp:1675:9:1675:10 | Left | r1675_1 | +| ir.cpp:1675:16:1675:22 | Address | &:r1675_4 | +| ir.cpp:1675:16:1675:22 | Address | &:r1675_9 | +| ir.cpp:1675:16:1675:22 | Right | r1675_3 | +| ir.cpp:1675:16:1675:22 | Right | r1675_8 | +| ir.cpp:1675:18:1675:18 | ChiPartial | partial:m1675_6 | +| ir.cpp:1675:18:1675:18 | ChiTotal | total:m1675_2 | +| ir.cpp:1675:18:1675:18 | StoreValue | r1675_5 | +| ir.cpp:1675:21:1675:21 | ChiPartial | partial:m1675_11 | +| ir.cpp:1675:21:1675:21 | ChiTotal | total:m1675_7 | +| ir.cpp:1675:21:1675:21 | StoreValue | r1675_10 | +| ir.cpp:1676:10:1676:10 | Address | &:r1676_1 | +| ir.cpp:1676:11:1676:11 | Address | &:r1676_5 | +| ir.cpp:1676:15:1676:15 | Address | &:r1676_6 | +| ir.cpp:1676:21:1676:22 | Address | &:r1676_2 | +| ir.cpp:1676:21:1676:22 | Load | m1675_12 | +| ir.cpp:1676:21:1676:22 | StoreValue | r1676_3 | +| ir.cpp:1682:5:1682:23 | Address | &:r1682_5 | +| ir.cpp:1682:5:1682:23 | Address | &:r1682_5 | +| ir.cpp:1682:5:1682:23 | Address | &:r1682_7 | +| ir.cpp:1682:5:1682:23 | Address | &:r1682_7 | +| ir.cpp:1682:5:1682:23 | ChiPartial | partial:m1682_3 | +| ir.cpp:1682:5:1682:23 | ChiTotal | total:m1682_2 | +| ir.cpp:1682:5:1682:23 | Load | m1682_6 | +| ir.cpp:1682:5:1682:23 | SideEffect | m1682_3 | +| ir.cpp:1682:5:1682:23 | SideEffect | m1682_8 | +| ir.cpp:1685:6:1685:20 | ChiPartial | partial:m1685_3 | +| ir.cpp:1685:6:1685:20 | ChiTotal | total:m1685_2 | +| ir.cpp:1685:6:1685:20 | SideEffect | ~m1688_6 | +| ir.cpp:1685:26:1685:26 | Address | &:r1685_5 | +| ir.cpp:1685:34:1685:34 | Address | &:r1685_7 | +| ir.cpp:1685:34:1685:34 | Address | &:r1685_7 | +| ir.cpp:1685:34:1685:34 | Address | &:r1685_9 | +| ir.cpp:1685:34:1685:34 | Address | &:r1685_9 | +| ir.cpp:1685:34:1685:34 | Load | m1685_8 | +| ir.cpp:1685:34:1685:34 | SideEffect | m1685_10 | +| ir.cpp:1685:43:1685:43 | Address | &:r1685_11 | +| ir.cpp:1685:43:1685:43 | Address | &:r1685_11 | +| ir.cpp:1685:43:1685:43 | Address | &:r1685_13 | +| ir.cpp:1685:43:1685:43 | Address | &:r1685_13 | +| ir.cpp:1685:43:1685:43 | Load | m1685_12 | +| ir.cpp:1685:43:1685:43 | SideEffect | m1685_14 | +| ir.cpp:1687:17:1687:20 | Address | &:r1687_1 | +| ir.cpp:1687:24:1687:44 | Address | &:r1687_2 | +| ir.cpp:1687:24:1687:44 | Address | &:r1687_2 | +| ir.cpp:1687:24:1687:44 | Arg(this) | this:r1687_2 | +| ir.cpp:1687:24:1687:44 | CallTarget | func:r1687_4 | +| ir.cpp:1687:24:1687:44 | ChiPartial | partial:m1687_6 | +| ir.cpp:1687:24:1687:44 | ChiPartial | partial:m1687_8 | +| ir.cpp:1687:24:1687:44 | ChiTotal | total:m1685_4 | +| ir.cpp:1687:24:1687:44 | ChiTotal | total:m1687_3 | +| ir.cpp:1687:24:1687:44 | SideEffect | ~m1685_4 | +| ir.cpp:1687:24:1687:44 | StoreValue | r1687_11 | +| ir.cpp:1687:24:1687:44 | Unary | r1687_2 | +| ir.cpp:1687:24:1687:44 | Unary | r1687_10 | +| ir.cpp:1688:10:1688:13 | Address | &:r1688_1 | +| ir.cpp:1688:10:1688:13 | Address | &:r1688_1 | +| ir.cpp:1688:10:1688:13 | Arg(this) | this:r1688_1 | +| ir.cpp:1688:16:1688:37 | CallTarget | func:r1688_3 | +| ir.cpp:1688:16:1688:37 | ChiPartial | partial:m1688_5 | +| ir.cpp:1688:16:1688:37 | ChiPartial | partial:m1688_7 | +| ir.cpp:1688:16:1688:37 | ChiTotal | total:m1687_7 | +| ir.cpp:1688:16:1688:37 | ChiTotal | total:m1688_2 | +| ir.cpp:1688:16:1688:37 | SideEffect | ~m1687_7 | +| ir.cpp:1690:10:1690:21 | Address | &:r1690_1 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_2 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_2 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_4 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_5 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_6 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_7 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_8 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_12 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_17 | +| ir.cpp:1690:24:1692:5 | Address | &:r1690_20 | +| ir.cpp:1690:24:1692:5 | ChiPartial | partial:m1690_10 | +| ir.cpp:1690:24:1692:5 | ChiTotal | total:m0_3 | +| ir.cpp:1690:24:1692:5 | Load | m1687_12 | +| ir.cpp:1690:24:1692:5 | Load | m1688_8 | +| ir.cpp:1690:24:1692:5 | Load | m1692_6 | +| ir.cpp:1690:24:1692:5 | StoreValue | r1690_9 | +| ir.cpp:1690:24:1692:5 | StoreValue | r1690_23 | +| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | +| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | +| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | +| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | +| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | +| ir.cpp:1690:38:1690:38 | Address | &:r1690_13 | +| ir.cpp:1690:38:1690:38 | ChiPartial | partial:m1690_15 | +| ir.cpp:1690:38:1690:38 | ChiTotal | total:m1690_11 | +| ir.cpp:1690:38:1690:38 | Load | m1685_6 | +| ir.cpp:1690:38:1690:38 | StoreValue | r1690_14 | +| ir.cpp:1690:41:1690:41 | Address | &:r1690_18 | +| ir.cpp:1690:41:1690:41 | Address | &:r1690_19 | +| ir.cpp:1690:41:1690:41 | Load | m1685_8 | +| ir.cpp:1690:44:1690:44 | Address | &:r1690_21 | +| ir.cpp:1690:44:1690:44 | Address | &:r1690_22 | +| ir.cpp:1690:44:1690:44 | Load | m1685_12 | +| ir.cpp:1690:46:1690:46 | Address | &:r1690_5 | +| ir.cpp:1690:46:1690:46 | Address | &:r1690_5 | +| ir.cpp:1690:46:1690:46 | Address | &:r1690_7 | +| ir.cpp:1690:46:1690:46 | Address | &:r1690_7 | +| ir.cpp:1690:46:1690:46 | ChiPartial | partial:m1690_3 | +| ir.cpp:1690:46:1690:46 | ChiTotal | total:m1690_2 | +| ir.cpp:1690:46:1690:46 | Load | m1690_6 | +| ir.cpp:1690:46:1690:46 | SideEffect | m1690_3 | +| ir.cpp:1690:46:1690:46 | SideEffect | m1690_8 | +| ir.cpp:1691:14:1691:25 | Address | &:r1691_1 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_2 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_2 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_4 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_5 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_7 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_11 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_12 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_14 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_18 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_19 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_21 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_25 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_26 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_28 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_32 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_33 | +| ir.cpp:1691:28:1691:54 | Address | &:r1691_35 | +| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_9 | +| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_16 | +| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_23 | +| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_30 | +| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_37 | +| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_3 | +| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_10 | +| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_17 | +| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_24 | +| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_31 | +| ir.cpp:1691:28:1691:54 | Load | m1690_6 | +| ir.cpp:1691:28:1691:54 | Load | m1690_6 | +| ir.cpp:1691:28:1691:54 | Load | m1690_6 | +| ir.cpp:1691:28:1691:54 | Load | m1690_6 | +| ir.cpp:1691:28:1691:54 | Load | m1690_6 | +| ir.cpp:1691:28:1691:54 | Load | m1691_38 | +| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | +| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | +| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | +| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | +| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | +| ir.cpp:1691:28:1691:54 | StoreValue | r1691_8 | +| ir.cpp:1691:28:1691:54 | StoreValue | r1691_15 | +| ir.cpp:1691:28:1691:54 | StoreValue | r1691_22 | +| ir.cpp:1691:28:1691:54 | StoreValue | r1691_29 | +| ir.cpp:1691:28:1691:54 | StoreValue | r1691_36 | +| ir.cpp:1691:28:1691:54 | StoreValue | r1691_39 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_6 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_13 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_20 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_27 | +| ir.cpp:1691:28:1691:54 | Unary | r1691_34 | +| ir.cpp:1691:50:1691:50 | Address | &:r1691_5 | +| ir.cpp:1691:50:1691:50 | Address | &:r1691_5 | +| ir.cpp:1691:50:1691:50 | Address | &:r1691_7 | +| ir.cpp:1691:50:1691:50 | Address | &:r1691_7 | +| ir.cpp:1691:50:1691:50 | ChiPartial | partial:m1691_3 | +| ir.cpp:1691:50:1691:50 | ChiTotal | total:m1691_2 | +| ir.cpp:1691:50:1691:50 | Load | m1691_6 | +| ir.cpp:1691:50:1691:50 | SideEffect | m1691_3 | +| ir.cpp:1691:50:1691:50 | SideEffect | m1691_8 | +| ir.cpp:1692:6:1692:6 | ChiPartial | partial:m1692_2 | +| ir.cpp:1692:6:1692:6 | ChiPartial | partial:m1692_5 | +| ir.cpp:1692:6:1692:6 | ChiTotal | total:m1690_16 | +| ir.cpp:1692:6:1692:6 | ChiTotal | total:m1692_3 | +| ir.cpp:1692:6:1692:6 | Load | ~m1685_10 | +| ir.cpp:1692:6:1692:6 | Load | ~m1685_14 | +| ir.cpp:1692:6:1692:6 | StoreValue | r1692_1 | +| ir.cpp:1692:6:1692:6 | StoreValue | r1692_4 | +| ir.cpp:1695:5:1695:21 | Address | &:r1695_5 | +| ir.cpp:1695:5:1695:21 | ChiPartial | partial:m1695_3 | +| ir.cpp:1695:5:1695:21 | ChiTotal | total:m1695_2 | +| ir.cpp:1695:5:1695:21 | Load | m1698_4 | +| ir.cpp:1695:5:1695:21 | SideEffect | m1695_3 | +| ir.cpp:1696:7:1696:7 | Address | &:r1696_1 | +| ir.cpp:1696:10:1696:12 | StoreValue | r1696_2 | +| ir.cpp:1698:3:1698:11 | Address | &:r1698_1 | +| ir.cpp:1698:10:1698:10 | Address | &:r1698_2 | +| ir.cpp:1698:10:1698:10 | Load | m1696_3 | +| ir.cpp:1698:10:1698:10 | StoreValue | r1698_3 | +| ir.cpp:1703:10:1703:10 | Address | &:r1703_5 | +| ir.cpp:1703:10:1703:10 | Address | &:r1703_5 | +| ir.cpp:1703:10:1703:10 | Address | &:r1703_7 | +| ir.cpp:1703:10:1703:10 | Address | &:r1703_7 | +| ir.cpp:1703:10:1703:10 | ChiPartial | partial:m1703_3 | +| ir.cpp:1703:10:1703:10 | ChiTotal | total:m1703_2 | +| ir.cpp:1703:10:1703:10 | Load | m1703_6 | +| ir.cpp:1703:10:1703:10 | SideEffect | m1703_3 | +| ir.cpp:1703:10:1703:10 | SideEffect | m1703_8 | +| ir.cpp:1704:14:1704:22 | Address | &:r1704_1 | +| ir.cpp:1704:25:1710:9 | Address | &:r1704_2 | +| ir.cpp:1704:25:1710:9 | Address | &:r1704_2 | +| ir.cpp:1704:25:1710:9 | Address | &:r1704_4 | +| ir.cpp:1704:25:1710:9 | Address | &:r1704_5 | +| ir.cpp:1704:25:1710:9 | Address | &:r1704_6 | +| ir.cpp:1704:25:1710:9 | Load | m1703_6 | +| ir.cpp:1704:25:1710:9 | Load | ~m1703_8 | +| ir.cpp:1704:25:1710:9 | Load | ~m1704_8 | +| ir.cpp:1704:25:1710:9 | StoreValue | r1704_7 | +| ir.cpp:1704:25:1710:9 | StoreValue | r1704_9 | +| ir.cpp:1704:25:1710:9 | Unary | r1704_2 | +| ir.cpp:1704:34:1704:34 | Address | &:r1704_5 | +| ir.cpp:1704:34:1704:34 | Address | &:r1704_5 | +| ir.cpp:1704:34:1704:34 | Address | &:r1704_7 | +| ir.cpp:1704:34:1704:34 | Address | &:r1704_7 | +| ir.cpp:1704:34:1704:34 | ChiPartial | partial:m1704_3 | +| ir.cpp:1704:34:1704:34 | ChiTotal | total:m1704_2 | +| ir.cpp:1704:34:1704:34 | Load | m1704_6 | +| ir.cpp:1704:34:1704:34 | SideEffect | m1704_8 | +| ir.cpp:1704:34:1704:34 | SideEffect | ~m1705_8 | +| ir.cpp:1705:13:1705:13 | Address | &:r1705_1 | +| ir.cpp:1705:13:1705:13 | Address | &:r1705_4 | +| ir.cpp:1705:13:1705:13 | Arg(this) | this:r1705_4 | +| ir.cpp:1705:13:1705:13 | CallTarget | func:r1705_5 | +| ir.cpp:1705:13:1705:13 | ChiPartial | partial:m1705_7 | +| ir.cpp:1705:13:1705:13 | ChiTotal | total:m1704_4 | +| ir.cpp:1705:13:1705:13 | Load | m1704_6 | +| ir.cpp:1705:13:1705:13 | SideEffect | ~m1704_4 | +| ir.cpp:1705:13:1705:13 | SideEffect | ~m1704_8 | +| ir.cpp:1705:13:1705:13 | Unary | r1705_2 | +| ir.cpp:1705:13:1705:13 | Unary | r1705_3 | +| ir.cpp:1707:18:1707:26 | Address | &:r1707_1 | +| ir.cpp:1707:29:1709:13 | Address | &:r1707_2 | +| ir.cpp:1707:29:1709:13 | Address | &:r1707_2 | +| ir.cpp:1707:29:1709:13 | Address | &:r1707_4 | +| ir.cpp:1707:29:1709:13 | Address | &:r1707_5 | +| ir.cpp:1707:29:1709:13 | Address | &:r1707_7 | +| ir.cpp:1707:29:1709:13 | Load | m1704_6 | +| ir.cpp:1707:29:1709:13 | Load | ~m1704_8 | +| ir.cpp:1707:29:1709:13 | Load | ~m1707_9 | +| ir.cpp:1707:29:1709:13 | StoreValue | r1707_8 | +| ir.cpp:1707:29:1709:13 | StoreValue | r1707_10 | +| ir.cpp:1707:29:1709:13 | Unary | r1707_2 | +| ir.cpp:1707:29:1709:13 | Unary | r1707_6 | +| ir.cpp:1707:38:1707:38 | Address | &:r1707_5 | +| ir.cpp:1707:38:1707:38 | Address | &:r1707_5 | +| ir.cpp:1707:38:1707:38 | Address | &:r1707_7 | +| ir.cpp:1707:38:1707:38 | Address | &:r1707_7 | +| ir.cpp:1707:38:1707:38 | ChiPartial | partial:m1707_3 | +| ir.cpp:1707:38:1707:38 | ChiTotal | total:m1707_2 | +| ir.cpp:1707:38:1707:38 | Load | m1707_6 | +| ir.cpp:1707:38:1707:38 | SideEffect | m1707_8 | +| ir.cpp:1707:38:1707:38 | SideEffect | ~m1708_8 | +| ir.cpp:1708:17:1708:17 | Address | &:r1708_1 | +| ir.cpp:1708:17:1708:17 | Address | &:r1708_4 | +| ir.cpp:1708:17:1708:17 | Arg(this) | this:r1708_4 | +| ir.cpp:1708:17:1708:17 | CallTarget | func:r1708_5 | +| ir.cpp:1708:17:1708:17 | ChiPartial | partial:m1708_7 | +| ir.cpp:1708:17:1708:17 | ChiTotal | total:m1707_4 | +| ir.cpp:1708:17:1708:17 | Load | m1707_6 | +| ir.cpp:1708:17:1708:17 | SideEffect | ~m1707_4 | +| ir.cpp:1708:17:1708:17 | SideEffect | ~m1707_8 | +| ir.cpp:1708:17:1708:17 | Unary | r1708_2 | +| ir.cpp:1708:17:1708:17 | Unary | r1708_3 | +| ir.cpp:1714:6:1714:21 | ChiPartial | partial:m1714_3 | +| ir.cpp:1714:6:1714:21 | ChiTotal | total:m1714_2 | +| ir.cpp:1714:6:1714:21 | SideEffect | m1714_3 | +| ir.cpp:1714:42:1714:43 | Address | &:r1714_5 | +| ir.cpp:1714:66:1714:67 | Address | &:r1714_7 | +| ir.cpp:1714:66:1714:67 | Address | &:r1714_7 | +| ir.cpp:1714:66:1714:67 | Address | &:r1714_9 | +| ir.cpp:1714:66:1714:67 | Address | &:r1714_9 | +| ir.cpp:1714:66:1714:67 | Load | m1714_8 | +| ir.cpp:1714:66:1714:67 | SideEffect | m1714_10 | +| ir.cpp:1714:91:1714:92 | Address | &:r1714_11 | +| ir.cpp:1714:91:1714:92 | Address | &:r1714_11 | +| ir.cpp:1714:91:1714:92 | Address | &:r1714_13 | +| ir.cpp:1714:91:1714:92 | Address | &:r1714_13 | +| ir.cpp:1714:91:1714:92 | Load | m1714_12 | +| ir.cpp:1714:91:1714:92 | SideEffect | m1714_14 | +| ir.cpp:1715:30:1715:31 | Address | &:r1715_1 | +| ir.cpp:1716:31:1716:32 | Address | &:r1716_1 | +| ir.cpp:1716:36:1716:55 | Address | &:r1716_2 | +| ir.cpp:1716:36:1716:55 | StoreValue | r1716_3 | +| ir.cpp:1716:36:1716:55 | StoreValue | r1716_6 | +| ir.cpp:1716:36:1716:55 | Unary | r1716_2 | +| ir.cpp:1716:36:1716:55 | Unary | r1716_5 | +| ir.cpp:1718:10:1718:17 | Address | &:r1718_1 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_2 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_2 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_4 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_5 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_9 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_10 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_11 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_12 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_13 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_14 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_15 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_16 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_20 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_21 | +| ir.cpp:1718:20:1720:5 | Address | &:r1718_22 | +| ir.cpp:1718:20:1720:5 | ChiPartial | partial:m1718_7 | +| ir.cpp:1718:20:1720:5 | ChiPartial | partial:m1718_18 | +| ir.cpp:1718:20:1720:5 | ChiTotal | total:m0_6 | +| ir.cpp:1718:20:1720:5 | ChiTotal | total:m1718_3 | +| ir.cpp:1718:20:1720:5 | Load | m0_9 | +| ir.cpp:1718:20:1720:5 | Load | m1714_6 | +| ir.cpp:1718:20:1720:5 | Load | m1714_8 | +| ir.cpp:1718:20:1720:5 | Load | m1714_12 | +| ir.cpp:1718:20:1720:5 | Load | m1715_2 | +| ir.cpp:1718:20:1720:5 | Load | m1716_7 | +| ir.cpp:1718:20:1720:5 | StoreValue | r1718_6 | +| ir.cpp:1718:20:1720:5 | StoreValue | r1718_17 | +| ir.cpp:1718:20:1720:5 | StoreValue | r1718_23 | +| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | +| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | +| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | +| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | +| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | +| ir.cpp:1718:42:1718:42 | Address | &:r1718_5 | +| ir.cpp:1718:42:1718:42 | Address | &:r1718_5 | +| ir.cpp:1718:42:1718:42 | Address | &:r1718_7 | +| ir.cpp:1718:42:1718:42 | Address | &:r1718_7 | +| ir.cpp:1718:42:1718:42 | ChiPartial | partial:m1718_3 | +| ir.cpp:1718:42:1718:42 | ChiTotal | total:m1718_2 | +| ir.cpp:1718:42:1718:42 | Load | m1718_6 | +| ir.cpp:1718:42:1718:42 | SideEffect | m1718_3 | +| ir.cpp:1718:42:1718:42 | SideEffect | m1718_8 | +| ir.cpp:1719:14:1719:21 | Address | &:r1719_1 | +| ir.cpp:1719:24:1719:31 | Address | &:r1719_2 | +| ir.cpp:1719:24:1719:31 | Address | &:r1719_2 | +| ir.cpp:1719:24:1719:31 | Address | &:r1719_4 | +| ir.cpp:1719:24:1719:31 | Address | &:r1719_5 | +| ir.cpp:1719:24:1719:31 | Address | &:r1719_7 | +| ir.cpp:1719:24:1719:31 | Load | m1718_6 | +| ir.cpp:1719:24:1719:31 | Load | ~m1718_8 | +| ir.cpp:1719:24:1719:31 | Load | ~m1719_9 | +| ir.cpp:1719:24:1719:31 | StoreValue | r1719_8 | +| ir.cpp:1719:24:1719:31 | StoreValue | r1719_10 | +| ir.cpp:1719:24:1719:31 | Unary | r1719_2 | +| ir.cpp:1719:24:1719:31 | Unary | r1719_6 | +| ir.cpp:1719:30:1719:30 | Address | &:r1719_5 | +| ir.cpp:1719:30:1719:30 | Address | &:r1719_5 | +| ir.cpp:1719:30:1719:30 | Address | &:r1719_7 | +| ir.cpp:1719:30:1719:30 | Address | &:r1719_7 | +| ir.cpp:1719:30:1719:30 | ChiPartial | partial:m1719_3 | +| ir.cpp:1719:30:1719:30 | ChiTotal | total:m1719_2 | +| ir.cpp:1719:30:1719:30 | Load | m1719_6 | +| ir.cpp:1719:30:1719:30 | SideEffect | m1719_3 | +| ir.cpp:1719:30:1719:30 | SideEffect | m1719_8 | +| ir.cpp:1726:5:1726:44 | Address | &:r1726_5 | +| ir.cpp:1726:5:1726:44 | Address | &:r1726_5 | +| ir.cpp:1726:5:1726:44 | Address | &:r1726_7 | +| ir.cpp:1726:5:1726:44 | Address | &:r1726_7 | +| ir.cpp:1726:5:1726:44 | ChiPartial | partial:m1726_3 | +| ir.cpp:1726:5:1726:44 | ChiTotal | total:m1726_2 | +| ir.cpp:1726:5:1726:44 | Load | m1726_6 | +| ir.cpp:1726:5:1726:44 | SideEffect | m1726_3 | +| ir.cpp:1726:5:1726:44 | SideEffect | m1726_8 | +| ir.cpp:1727:5:1727:44 | Address | &:r1727_5 | +| ir.cpp:1727:5:1727:44 | Address | &:r1727_5 | +| ir.cpp:1727:5:1727:44 | Address | &:r1727_7 | +| ir.cpp:1727:5:1727:44 | Address | &:r1727_7 | +| ir.cpp:1727:5:1727:44 | ChiPartial | partial:m1727_3 | +| ir.cpp:1727:5:1727:44 | ChiTotal | total:m1727_2 | +| ir.cpp:1727:5:1727:44 | Load | m1727_6 | +| ir.cpp:1727:5:1727:44 | SideEffect | m1727_3 | +| ir.cpp:1727:5:1727:44 | SideEffect | m1728_10 | +| ir.cpp:1727:94:1727:94 | Address | &:r1727_9 | +| ir.cpp:1727:94:1727:94 | Address | &:r1727_9 | +| ir.cpp:1727:94:1727:94 | Address | &:r1727_11 | +| ir.cpp:1727:94:1727:94 | Address | &:r1727_11 | +| ir.cpp:1727:94:1727:94 | Load | m1727_10 | +| ir.cpp:1727:94:1727:94 | SideEffect | m1727_12 | +| ir.cpp:1728:9:1728:9 | Address | &:r1728_6 | +| ir.cpp:1728:9:1728:9 | Address | &:r1728_8 | +| ir.cpp:1728:9:1728:9 | Load | m1727_6 | +| ir.cpp:1728:9:1728:9 | Unary | r1728_7 | +| ir.cpp:1728:9:1728:15 | ChiPartial | partial:m1728_9 | +| ir.cpp:1728:9:1728:15 | ChiTotal | total:m1727_8 | +| ir.cpp:1728:13:1728:13 | Address | &:r1728_1 | +| ir.cpp:1728:13:1728:13 | Load | m1727_10 | +| ir.cpp:1728:13:1728:13 | Unary | r1728_2 | +| ir.cpp:1728:13:1728:13 | Unary | r1728_3 | +| ir.cpp:1728:15:1728:15 | Address | &:r1728_4 | +| ir.cpp:1728:15:1728:15 | Load | ~m1727_12 | +| ir.cpp:1728:15:1728:15 | StoreValue | r1728_5 | +| ir.cpp:1735:5:1735:39 | Address | &:r1735_5 | +| ir.cpp:1735:5:1735:39 | Address | &:r1735_5 | +| ir.cpp:1735:5:1735:39 | Address | &:r1735_7 | +| ir.cpp:1735:5:1735:39 | Address | &:r1735_7 | +| ir.cpp:1735:5:1735:39 | ChiPartial | partial:m1735_3 | +| ir.cpp:1735:5:1735:39 | ChiTotal | total:m1735_2 | +| ir.cpp:1735:5:1735:39 | Load | m1735_6 | +| ir.cpp:1735:5:1735:39 | SideEffect | m1735_3 | +| ir.cpp:1735:5:1735:39 | SideEffect | m1735_8 | +| ir.cpp:1738:7:1738:7 | Address | &:r1738_5 | +| ir.cpp:1738:7:1738:7 | Address | &:r1738_5 | +| ir.cpp:1738:7:1738:7 | Address | &:r1738_7 | +| ir.cpp:1738:7:1738:7 | Address | &:r1738_7 | +| ir.cpp:1738:7:1738:7 | Address | &:r1738_9 | +| ir.cpp:1738:7:1738:7 | Address | &:r1738_11 | +| ir.cpp:1738:7:1738:7 | Address | &:r1738_15 | +| ir.cpp:1738:7:1738:7 | Arg(0) | 0:r1738_15 | +| ir.cpp:1738:7:1738:7 | Arg(this) | this:r1738_9 | +| ir.cpp:1738:7:1738:7 | CallTarget | func:r1738_10 | +| ir.cpp:1738:7:1738:7 | ChiPartial | partial:m1738_3 | +| ir.cpp:1738:7:1738:7 | ChiPartial | partial:m1738_17 | +| ir.cpp:1738:7:1738:7 | ChiPartial | partial:m1738_20 | +| ir.cpp:1738:7:1738:7 | ChiTotal | total:m1738_2 | +| ir.cpp:1738:7:1738:7 | ChiTotal | total:m1738_4 | +| ir.cpp:1738:7:1738:7 | ChiTotal | total:m1738_8 | +| ir.cpp:1738:7:1738:7 | Load | m0_2 | +| ir.cpp:1738:7:1738:7 | Load | m1738_6 | +| ir.cpp:1738:7:1738:7 | SideEffect | m1738_21 | +| ir.cpp:1738:7:1738:7 | SideEffect | ~m0_4 | +| ir.cpp:1738:7:1738:7 | SideEffect | ~m1738_4 | +| ir.cpp:1738:7:1738:7 | SideEffect | ~m1738_18 | +| ir.cpp:1738:7:1738:7 | Unary | m1738_6 | +| ir.cpp:1738:7:1738:7 | Unary | r1738_12 | +| ir.cpp:1738:7:1738:7 | Unary | r1738_13 | +| ir.cpp:1738:7:1738:7 | Unary | r1738_14 | +| ir.cpp:1742:5:1742:38 | Address | &:r1742_5 | +| ir.cpp:1742:5:1742:38 | Address | &:r1742_5 | +| ir.cpp:1742:5:1742:38 | Address | &:r1742_7 | +| ir.cpp:1742:5:1742:38 | Address | &:r1742_7 | +| ir.cpp:1742:5:1742:38 | ChiPartial | partial:m1742_3 | +| ir.cpp:1742:5:1742:38 | ChiTotal | total:m1742_2 | +| ir.cpp:1742:5:1742:38 | Load | m1742_6 | +| ir.cpp:1742:5:1742:38 | SideEffect | m1742_22 | +| ir.cpp:1742:5:1742:38 | SideEffect | ~m1742_20 | +| ir.cpp:1742:5:1742:38 | Unary | m1742_6 | +| ir.cpp:1742:5:1742:38 | Unary | m1742_6 | +| ir.cpp:1742:42:1742:42 | Address | &:r1742_9 | +| ir.cpp:1742:42:1742:42 | Address | &:r1742_16 | +| ir.cpp:1742:42:1742:42 | Arg(this) | this:r1742_9 | +| ir.cpp:1742:42:1742:42 | Arg(this) | this:r1742_16 | +| ir.cpp:1742:42:1742:42 | CallTarget | func:r1742_10 | +| ir.cpp:1742:42:1742:42 | CallTarget | func:r1742_17 | +| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_12 | +| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_14 | +| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_19 | +| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_21 | +| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_4 | +| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_8 | +| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_13 | +| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_15 | +| ir.cpp:1742:42:1742:42 | SideEffect | ~m1742_4 | +| ir.cpp:1742:42:1742:42 | SideEffect | ~m1742_13 | +| ir.cpp:1745:7:1745:7 | Address | &:r1745_5 | +| ir.cpp:1745:7:1745:7 | Address | &:r1745_5 | +| ir.cpp:1745:7:1745:7 | Address | &:r1745_7 | +| ir.cpp:1745:7:1745:7 | Address | &:r1745_7 | +| ir.cpp:1745:7:1745:7 | Address | &:r1745_9 | +| ir.cpp:1745:7:1745:7 | Address | &:r1745_11 | +| ir.cpp:1745:7:1745:7 | Address | &:r1745_15 | +| ir.cpp:1745:7:1745:7 | Arg(0) | 0:r1745_15 | +| ir.cpp:1745:7:1745:7 | Arg(this) | this:r1745_9 | +| ir.cpp:1745:7:1745:7 | CallTarget | func:r1745_10 | +| ir.cpp:1745:7:1745:7 | ChiPartial | partial:m1745_3 | +| ir.cpp:1745:7:1745:7 | ChiPartial | partial:m1745_17 | +| ir.cpp:1745:7:1745:7 | ChiPartial | partial:m1745_20 | +| ir.cpp:1745:7:1745:7 | ChiTotal | total:m1745_2 | +| ir.cpp:1745:7:1745:7 | ChiTotal | total:m1745_4 | +| ir.cpp:1745:7:1745:7 | ChiTotal | total:m1745_18 | +| ir.cpp:1745:7:1745:7 | Load | m0_2 | +| ir.cpp:1745:7:1745:7 | Load | m1745_6 | +| ir.cpp:1745:7:1745:7 | SideEffect | m1745_8 | +| ir.cpp:1745:7:1745:7 | SideEffect | ~m0_4 | +| ir.cpp:1745:7:1745:7 | SideEffect | ~m1745_4 | +| ir.cpp:1745:7:1745:7 | SideEffect | ~m1745_21 | +| ir.cpp:1745:7:1745:7 | Unary | m1745_6 | +| ir.cpp:1745:7:1745:7 | Unary | r1745_12 | +| ir.cpp:1745:7:1745:7 | Unary | r1745_13 | +| ir.cpp:1745:7:1745:7 | Unary | r1745_14 | +| ir.cpp:1749:5:1749:35 | Address | &:r1749_5 | +| ir.cpp:1749:5:1749:35 | Address | &:r1749_5 | +| ir.cpp:1749:5:1749:35 | Address | &:r1749_7 | +| ir.cpp:1749:5:1749:35 | Address | &:r1749_7 | +| ir.cpp:1749:5:1749:35 | ChiPartial | partial:m1749_3 | +| ir.cpp:1749:5:1749:35 | ChiTotal | total:m1749_2 | +| ir.cpp:1749:5:1749:35 | Load | m1749_6 | +| ir.cpp:1749:5:1749:35 | SideEffect | m1749_8 | +| ir.cpp:1749:5:1749:35 | SideEffect | ~m1749_22 | +| ir.cpp:1749:5:1749:35 | Unary | m1749_6 | +| ir.cpp:1749:5:1749:35 | Unary | m1749_6 | +| ir.cpp:1749:39:1749:39 | Address | &:r1749_9 | +| ir.cpp:1749:39:1749:39 | Address | &:r1749_16 | +| ir.cpp:1749:39:1749:39 | Arg(this) | this:r1749_9 | +| ir.cpp:1749:39:1749:39 | Arg(this) | this:r1749_16 | +| ir.cpp:1749:39:1749:39 | CallTarget | func:r1749_10 | +| ir.cpp:1749:39:1749:39 | CallTarget | func:r1749_17 | +| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_12 | +| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_14 | +| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_19 | +| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_21 | +| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_4 | +| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_13 | +| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_15 | +| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_20 | +| ir.cpp:1749:39:1749:39 | SideEffect | ~m1749_4 | +| ir.cpp:1749:39:1749:39 | SideEffect | ~m1749_15 | +| ir.cpp:1752:5:1752:34 | Address | &:r1752_5 | +| ir.cpp:1752:5:1752:34 | ChiPartial | partial:m1752_3 | +| ir.cpp:1752:5:1752:34 | ChiTotal | total:m1752_2 | +| ir.cpp:1752:5:1752:34 | Load | m1757_2 | +| ir.cpp:1752:5:1752:34 | SideEffect | ~m1756_10 | +| ir.cpp:1753:51:1753:51 | Address | &:r1753_1 | +| ir.cpp:1753:51:1753:51 | Address | &:r1753_1 | +| ir.cpp:1753:51:1753:51 | Address | &:r1753_3 | +| ir.cpp:1753:51:1753:51 | Address | &:r1753_3 | +| ir.cpp:1753:51:1753:51 | Load | m1753_2 | +| ir.cpp:1753:51:1753:51 | SideEffect | m1753_4 | +| ir.cpp:1754:48:1754:48 | Address | &:r1754_1 | +| ir.cpp:1754:48:1754:48 | Address | &:r1754_1 | +| ir.cpp:1754:48:1754:48 | Address | &:r1754_3 | +| ir.cpp:1754:48:1754:48 | Address | &:r1754_3 | +| ir.cpp:1754:48:1754:48 | Load | m1754_2 | +| ir.cpp:1754:48:1754:48 | SideEffect | m1754_4 | +| ir.cpp:1755:40:1755:41 | Address | &:r1755_1 | +| ir.cpp:1755:40:1755:41 | Address | &:r1755_1 | +| ir.cpp:1755:40:1755:41 | Arg(this) | this:r1755_1 | +| ir.cpp:1755:44:1755:45 | CallTarget | func:r1755_3 | +| ir.cpp:1755:44:1755:45 | ChiPartial | partial:m1755_9 | +| ir.cpp:1755:44:1755:45 | ChiPartial | partial:m1755_12 | +| ir.cpp:1755:44:1755:45 | ChiTotal | total:m1752_4 | +| ir.cpp:1755:44:1755:45 | ChiTotal | total:m1755_2 | +| ir.cpp:1755:44:1755:45 | SideEffect | ~m1752_4 | +| ir.cpp:1755:45:1755:45 | Address | &:r1755_4 | +| ir.cpp:1755:45:1755:45 | Address | &:r1755_7 | +| ir.cpp:1755:45:1755:45 | Arg(0) | 0:r1755_7 | +| ir.cpp:1755:45:1755:45 | Load | m1753_2 | +| ir.cpp:1755:45:1755:45 | SideEffect | ~m1753_4 | +| ir.cpp:1755:45:1755:45 | Unary | r1755_5 | +| ir.cpp:1755:45:1755:45 | Unary | r1755_6 | +| ir.cpp:1756:37:1756:38 | Address | &:r1756_1 | +| ir.cpp:1756:37:1756:38 | Address | &:r1756_1 | +| ir.cpp:1756:37:1756:38 | Arg(this) | this:r1756_1 | +| ir.cpp:1756:41:1756:42 | CallTarget | func:r1756_3 | +| ir.cpp:1756:41:1756:42 | ChiPartial | partial:m1756_9 | +| ir.cpp:1756:41:1756:42 | ChiPartial | partial:m1756_12 | +| ir.cpp:1756:41:1756:42 | ChiTotal | total:m1755_10 | +| ir.cpp:1756:41:1756:42 | ChiTotal | total:m1756_2 | +| ir.cpp:1756:41:1756:42 | SideEffect | ~m1755_10 | +| ir.cpp:1756:42:1756:42 | Address | &:r1756_4 | +| ir.cpp:1756:42:1756:42 | Address | &:r1756_7 | +| ir.cpp:1756:42:1756:42 | Arg(0) | 0:r1756_7 | +| ir.cpp:1756:42:1756:42 | Load | m1754_2 | +| ir.cpp:1756:42:1756:42 | SideEffect | ~m1754_4 | +| ir.cpp:1756:42:1756:42 | Unary | r1756_5 | +| ir.cpp:1756:42:1756:42 | Unary | r1756_6 | +| ir.cpp:1757:1:1757:1 | Address | &:r1757_1 | +| ir.cpp:1759:6:1759:22 | ChiPartial | partial:m1759_3 | +| ir.cpp:1759:6:1759:22 | ChiTotal | total:m1759_2 | +| ir.cpp:1759:6:1759:22 | SideEffect | m1759_3 | +| ir.cpp:1759:28:1759:28 | Address | &:r1759_5 | +| ir.cpp:1760:13:1760:13 | Address | &:r1760_1 | +| ir.cpp:1760:17:1760:17 | Address | &:r1760_2 | +| ir.cpp:1760:17:1760:17 | Load | m1759_6 | +| ir.cpp:1760:17:1760:17 | StoreValue | r1760_3 | +| ir.cpp:1760:20:1760:20 | Address | &:r1760_5 | +| ir.cpp:1760:20:1760:20 | Left | r1760_6 | +| ir.cpp:1760:20:1760:20 | Load | m1759_6 | +| ir.cpp:1760:20:1760:24 | Condition | r1760_10 | +| ir.cpp:1760:20:1760:24 | Left | r1760_8 | +| ir.cpp:1760:20:1760:24 | Right | r1760_9 | +| ir.cpp:1760:24:1760:24 | Right | r1760_7 | +| ir.cpp:1761:9:1761:9 | Address | &:r1761_6 | +| ir.cpp:1761:13:1761:13 | Address | &:r1761_1 | +| ir.cpp:1761:13:1761:13 | Left | r1761_2 | +| ir.cpp:1761:13:1761:13 | Load | m1759_6 | +| ir.cpp:1761:13:1761:17 | StoreValue | r1761_5 | +| ir.cpp:1761:17:1761:17 | Address | &:r1761_3 | +| ir.cpp:1761:17:1761:17 | Load | m1760_4 | +| ir.cpp:1761:17:1761:17 | Right | r1761_4 | +| ir.cpp:1764:9:1764:9 | Address | &:r1764_2 | +| ir.cpp:1764:9:1764:9 | Phi | from 0:m1759_6 | +| ir.cpp:1764:9:1764:9 | Phi | from 1:m1761_7 | +| ir.cpp:1765:9:1765:9 | Address | &:r1765_3 | +| ir.cpp:1765:13:1765:13 | Address | &:r1765_1 | +| ir.cpp:1765:13:1765:13 | Load | m1764_1 | +| ir.cpp:1765:13:1765:13 | StoreValue | r1765_2 | +| ir.cpp:1765:16:1765:16 | Address | &:r1765_5 | +| ir.cpp:1765:16:1765:16 | Left | r1765_6 | +| ir.cpp:1765:16:1765:16 | Load | m1764_1 | +| ir.cpp:1765:16:1765:20 | Condition | r1765_10 | +| ir.cpp:1765:16:1765:20 | Left | r1765_8 | +| ir.cpp:1765:16:1765:20 | Right | r1765_9 | +| ir.cpp:1765:20:1765:20 | Right | r1765_7 | +| ir.cpp:1766:9:1766:9 | Address | &:r1766_6 | +| ir.cpp:1766:13:1766:13 | Address | &:r1766_1 | +| ir.cpp:1766:13:1766:13 | Left | r1766_2 | +| ir.cpp:1766:13:1766:13 | Load | m1764_1 | +| ir.cpp:1766:13:1766:17 | StoreValue | r1766_5 | +| ir.cpp:1766:17:1766:17 | Address | &:r1766_3 | +| ir.cpp:1766:17:1766:17 | Load | m1765_4 | +| ir.cpp:1766:17:1766:17 | Right | r1766_4 | +| ir.cpp:1769:9:1769:9 | Address | &:r1769_4 | +| ir.cpp:1769:13:1769:13 | Address | &:r1769_2 | +| ir.cpp:1769:13:1769:13 | Load | m1769_1 | +| ir.cpp:1769:13:1769:13 | Phi | from 2:m1764_1 | +| ir.cpp:1769:13:1769:13 | Phi | from 3:m1766_7 | +| ir.cpp:1769:13:1769:13 | StoreValue | r1769_3 | +| ir.cpp:1769:14:1769:25 | Address | &:r1769_6 | +| ir.cpp:1769:14:1769:25 | Condition | r1769_14 | +| ir.cpp:1769:20:1769:21 | Address | &:r1769_10 | +| ir.cpp:1769:20:1769:21 | Left | r1769_11 | +| ir.cpp:1769:20:1769:21 | Load | m1769_9 | +| ir.cpp:1769:20:1769:21 | Right | r1769_12 | +| ir.cpp:1769:20:1769:21 | Unary | r1769_13 | +| ir.cpp:1769:25:1769:25 | Address | &:r1769_7 | +| ir.cpp:1769:25:1769:25 | Load | m1769_5 | +| ir.cpp:1769:25:1769:25 | StoreValue | r1769_8 | +| ir.cpp:1770:9:1770:9 | Address | &:r1770_6 | +| ir.cpp:1770:13:1770:13 | Address | &:r1770_1 | +| ir.cpp:1770:13:1770:13 | Left | r1770_2 | +| ir.cpp:1770:13:1770:13 | Load | m1769_1 | +| ir.cpp:1770:13:1770:17 | StoreValue | r1770_5 | +| ir.cpp:1770:17:1770:17 | Address | &:r1770_3 | +| ir.cpp:1770:17:1770:17 | Load | m1769_5 | +| ir.cpp:1770:17:1770:17 | Right | r1770_4 | +| ir.cpp:1773:9:1773:29 | Address | &:r1773_6 | +| ir.cpp:1773:9:1773:29 | Condition | r1773_14 | +| ir.cpp:1773:13:1773:13 | Address | &:r1773_2 | +| ir.cpp:1773:13:1773:13 | Phi | from 4:m1769_1 | +| ir.cpp:1773:13:1773:13 | Phi | from 5:m1770_7 | +| ir.cpp:1773:17:1773:17 | Address | &:r1773_3 | +| ir.cpp:1773:17:1773:17 | Load | m1773_1 | +| ir.cpp:1773:17:1773:17 | StoreValue | r1773_4 | +| ir.cpp:1773:24:1773:25 | Address | &:r1773_10 | +| ir.cpp:1773:24:1773:25 | Left | r1773_11 | +| ir.cpp:1773:24:1773:25 | Load | m1773_9 | +| ir.cpp:1773:24:1773:25 | Right | r1773_12 | +| ir.cpp:1773:24:1773:25 | Unary | r1773_13 | +| ir.cpp:1773:29:1773:29 | Address | &:r1773_7 | +| ir.cpp:1773:29:1773:29 | Load | m1773_5 | +| ir.cpp:1773:29:1773:29 | StoreValue | r1773_8 | +| ir.cpp:1774:9:1774:9 | Address | &:r1774_6 | +| ir.cpp:1774:13:1774:13 | Address | &:r1774_1 | +| ir.cpp:1774:13:1774:13 | Left | r1774_2 | +| ir.cpp:1774:13:1774:13 | Load | m1773_1 | +| ir.cpp:1774:13:1774:17 | StoreValue | r1774_5 | +| ir.cpp:1774:17:1774:17 | Address | &:r1774_3 | +| ir.cpp:1774:17:1774:17 | Load | m1773_5 | +| ir.cpp:1774:17:1774:17 | Right | r1774_4 | +| ir.cpp:1777:9:1777:9 | Address | &:r1777_2 | +| ir.cpp:1777:9:1777:9 | Phi | from 6:m1773_1 | +| ir.cpp:1777:9:1777:9 | Phi | from 7:m1774_7 | +| ir.cpp:1777:13:1777:13 | Address | &:r1777_3 | +| ir.cpp:1777:13:1777:13 | Load | m1777_1 | +| ir.cpp:1777:13:1777:13 | StoreValue | r1777_4 | +| ir.cpp:1778:9:1778:9 | Address | &:r1778_1 | +| ir.cpp:1778:9:1778:9 | Condition | r1778_4 | +| ir.cpp:1778:9:1778:9 | Left | r1778_2 | +| ir.cpp:1778:9:1778:9 | Load | m1777_5 | +| ir.cpp:1778:9:1778:9 | Right | r1778_3 | +| ir.cpp:1779:9:1779:9 | Address | &:r1779_6 | +| ir.cpp:1779:13:1779:13 | Address | &:r1779_1 | +| ir.cpp:1779:13:1779:13 | Left | r1779_2 | +| ir.cpp:1779:13:1779:13 | Load | m1777_1 | +| ir.cpp:1779:13:1779:17 | StoreValue | r1779_5 | +| ir.cpp:1779:17:1779:17 | Address | &:r1779_3 | +| ir.cpp:1779:17:1779:17 | Load | m1777_5 | +| ir.cpp:1779:17:1779:17 | Right | r1779_4 | +| ir.cpp:1782:9:1782:18 | Address | &:r1782_2 | +| ir.cpp:1782:9:1782:18 | Condition | r1782_10 | +| ir.cpp:1782:9:1782:18 | Phi | from 8:m1777_1 | +| ir.cpp:1782:9:1782:18 | Phi | from 9:m1779_7 | +| ir.cpp:1782:13:1782:14 | Address | &:r1782_6 | +| ir.cpp:1782:13:1782:14 | Left | r1782_7 | +| ir.cpp:1782:13:1782:14 | Load | m1782_5 | +| ir.cpp:1782:13:1782:14 | Right | r1782_8 | +| ir.cpp:1782:13:1782:14 | Unary | r1782_9 | +| ir.cpp:1782:18:1782:18 | Address | &:r1782_3 | +| ir.cpp:1782:18:1782:18 | Load | m1777_5 | +| ir.cpp:1782:18:1782:18 | StoreValue | r1782_4 | +| ir.cpp:1783:9:1783:9 | Address | &:r1783_3 | +| ir.cpp:1783:9:1783:9 | Address | &:r1783_3 | +| ir.cpp:1783:9:1783:9 | Left | r1783_4 | +| ir.cpp:1783:9:1783:9 | Load | m1782_1 | +| ir.cpp:1783:9:1783:15 | StoreValue | r1783_5 | +| ir.cpp:1783:14:1783:15 | Address | &:r1783_1 | +| ir.cpp:1783:14:1783:15 | Load | m1782_5 | +| ir.cpp:1783:14:1783:15 | Right | r1783_2 | +| ir.cpp:1787:6:1787:26 | ChiPartial | partial:m1787_3 | +| ir.cpp:1787:6:1787:26 | ChiTotal | total:m1787_2 | +| ir.cpp:1787:6:1787:26 | SideEffect | m1787_3 | +| ir.cpp:1787:32:1787:32 | Address | &:r1787_5 | +| ir.cpp:1788:17:1788:17 | Address | &:r1788_1 | +| ir.cpp:1788:21:1788:21 | Address | &:r1788_2 | +| ir.cpp:1788:21:1788:21 | Load | m1787_6 | +| ir.cpp:1788:21:1788:21 | StoreValue | r1788_3 | +| ir.cpp:1788:24:1788:24 | Address | &:r1788_5 | +| ir.cpp:1788:24:1788:24 | Left | r1788_6 | +| ir.cpp:1788:24:1788:24 | Load | m1787_6 | +| ir.cpp:1788:24:1788:28 | Condition | r1788_8 | +| ir.cpp:1788:28:1788:28 | Right | r1788_7 | +| ir.cpp:1790:9:1790:9 | Address | &:r1790_6 | +| ir.cpp:1790:13:1790:13 | Address | &:r1790_1 | +| ir.cpp:1790:13:1790:13 | Left | r1790_2 | +| ir.cpp:1790:13:1790:13 | Load | m1787_6 | +| ir.cpp:1790:13:1790:17 | StoreValue | r1790_5 | +| ir.cpp:1790:17:1790:17 | Address | &:r1790_3 | +| ir.cpp:1790:17:1790:17 | Load | m1788_4 | +| ir.cpp:1790:17:1790:17 | Right | r1790_4 | +| ir.cpp:1793:9:1793:9 | Address | &:r1793_1 | +| ir.cpp:1794:13:1794:13 | Address | &:r1794_3 | +| ir.cpp:1794:17:1794:17 | Address | &:r1794_1 | +| ir.cpp:1794:17:1794:17 | Load | m1790_7 | +| ir.cpp:1794:17:1794:17 | StoreValue | r1794_2 | +| ir.cpp:1794:20:1794:20 | Address | &:r1794_5 | +| ir.cpp:1794:20:1794:20 | Left | r1794_6 | +| ir.cpp:1794:20:1794:20 | Load | m1790_7 | +| ir.cpp:1794:20:1794:24 | Condition | r1794_8 | +| ir.cpp:1794:24:1794:24 | Right | r1794_7 | +| ir.cpp:1796:9:1796:9 | Address | &:r1796_6 | +| ir.cpp:1796:13:1796:13 | Address | &:r1796_1 | +| ir.cpp:1796:13:1796:13 | Left | r1796_2 | +| ir.cpp:1796:13:1796:13 | Load | m1790_7 | +| ir.cpp:1796:13:1796:17 | StoreValue | r1796_5 | +| ir.cpp:1796:17:1796:17 | Address | &:r1796_3 | +| ir.cpp:1796:17:1796:17 | Load | m1794_4 | +| ir.cpp:1796:17:1796:17 | Right | r1796_4 | +| ir.cpp:1799:13:1799:13 | Address | &:r1799_3 | +| ir.cpp:1799:17:1799:17 | Address | &:r1799_1 | +| ir.cpp:1799:17:1799:17 | Load | m1796_7 | +| ir.cpp:1799:17:1799:17 | StoreValue | r1799_2 | +| ir.cpp:1799:18:1799:29 | Address | &:r1799_5 | +| ir.cpp:1799:18:1799:29 | Condition | r1799_11 | +| ir.cpp:1799:24:1799:25 | Address | &:r1799_9 | +| ir.cpp:1799:24:1799:25 | Load | m1799_8 | +| ir.cpp:1799:24:1799:25 | Unary | r1799_10 | +| ir.cpp:1799:29:1799:29 | Address | &:r1799_6 | +| ir.cpp:1799:29:1799:29 | Load | m1799_4 | +| ir.cpp:1799:29:1799:29 | StoreValue | r1799_7 | +| ir.cpp:1801:9:1801:9 | Address | &:r1801_6 | +| ir.cpp:1801:13:1801:13 | Address | &:r1801_1 | +| ir.cpp:1801:13:1801:13 | Left | r1801_2 | +| ir.cpp:1801:13:1801:13 | Load | m1796_7 | +| ir.cpp:1801:13:1801:17 | StoreValue | r1801_5 | +| ir.cpp:1801:17:1801:17 | Address | &:r1801_3 | +| ir.cpp:1801:17:1801:17 | Load | m1799_4 | +| ir.cpp:1801:17:1801:17 | Right | r1801_4 | +| ir.cpp:1804:13:1804:33 | Address | &:r1804_5 | +| ir.cpp:1804:13:1804:33 | Condition | r1804_11 | +| ir.cpp:1804:17:1804:17 | Address | &:r1804_1 | +| ir.cpp:1804:21:1804:21 | Address | &:r1804_2 | +| ir.cpp:1804:21:1804:21 | Load | m1801_7 | +| ir.cpp:1804:21:1804:21 | StoreValue | r1804_3 | +| ir.cpp:1804:28:1804:29 | Address | &:r1804_9 | +| ir.cpp:1804:28:1804:29 | Load | m1804_8 | +| ir.cpp:1804:28:1804:29 | Unary | r1804_10 | +| ir.cpp:1804:33:1804:33 | Address | &:r1804_6 | +| ir.cpp:1804:33:1804:33 | Load | m1804_4 | +| ir.cpp:1804:33:1804:33 | StoreValue | r1804_7 | +| ir.cpp:1806:9:1806:9 | Address | &:r1806_6 | +| ir.cpp:1806:13:1806:13 | Address | &:r1806_1 | +| ir.cpp:1806:13:1806:13 | Left | r1806_2 | +| ir.cpp:1806:13:1806:13 | Load | m1801_7 | +| ir.cpp:1806:13:1806:17 | StoreValue | r1806_5 | +| ir.cpp:1806:17:1806:17 | Address | &:r1806_3 | +| ir.cpp:1806:17:1806:17 | Load | m1804_4 | +| ir.cpp:1806:17:1806:17 | Right | r1806_4 | +| ir.cpp:1809:9:1809:9 | Address | &:r1809_1 | +| ir.cpp:1809:13:1809:13 | Address | &:r1809_2 | +| ir.cpp:1809:13:1809:13 | Load | m1806_7 | +| ir.cpp:1809:13:1809:13 | StoreValue | r1809_3 | | ir.cpp:1810:13:1810:13 | Address | &:r1810_1 | -| ir.cpp:1810:13:1810:13 | Left | r1810_2 | -| ir.cpp:1810:13:1810:13 | Load | m1804_7 | -| ir.cpp:1810:13:1810:17 | StoreValue | r1810_5 | -| ir.cpp:1810:17:1810:17 | Address | &:r1810_3 | -| ir.cpp:1810:17:1810:17 | Load | m1807_4 | -| ir.cpp:1810:17:1810:17 | Right | r1810_4 | -| ir.cpp:1813:13:1813:22 | Address | &:r1813_1 | -| ir.cpp:1813:13:1813:22 | Condition | r1813_7 | -| ir.cpp:1813:17:1813:18 | Address | &:r1813_5 | -| ir.cpp:1813:17:1813:18 | Load | m1813_4 | -| ir.cpp:1813:17:1813:18 | Unary | r1813_6 | -| ir.cpp:1813:22:1813:22 | Address | &:r1813_2 | -| ir.cpp:1813:22:1813:22 | Load | m1807_4 | -| ir.cpp:1813:22:1813:22 | StoreValue | r1813_3 | -| ir.cpp:1815:9:1815:9 | Address | &:r1815_3 | -| ir.cpp:1815:9:1815:9 | Address | &:r1815_3 | -| ir.cpp:1815:9:1815:9 | Left | r1815_4 | -| ir.cpp:1815:9:1815:9 | Load | m1810_7 | -| ir.cpp:1815:9:1815:15 | StoreValue | r1815_5 | -| ir.cpp:1815:14:1815:15 | Address | &:r1815_1 | -| ir.cpp:1815:14:1815:15 | Load | m1813_4 | -| ir.cpp:1815:14:1815:15 | Right | r1815_2 | -| ir.cpp:1821:5:1821:12 | Address | &:r1821_3 | -| ir.cpp:1821:5:1821:12 | SideEffect | ~m1821_6 | -| ir.cpp:1821:16:1821:16 | ChiPartial | partial:m1821_5 | -| ir.cpp:1821:16:1821:16 | ChiTotal | total:m1821_2 | -| ir.cpp:1821:16:1821:16 | StoreValue | r1821_4 | -| ir.cpp:1825:18:1825:25 | Address | &:r1825_3 | -| ir.cpp:1825:18:1825:25 | Arg(this) | this:r1825_3 | -| ir.cpp:1825:18:1825:25 | SideEffect | ~m1825_10 | -| ir.cpp:1825:27:1825:27 | Arg(0) | 0:r1825_5 | -| ir.cpp:1825:27:1825:28 | CallTarget | func:r1825_4 | -| ir.cpp:1825:27:1825:28 | ChiPartial | partial:m1825_7 | -| ir.cpp:1825:27:1825:28 | ChiPartial | partial:m1825_9 | -| ir.cpp:1825:27:1825:28 | ChiTotal | total:m1825_2 | -| ir.cpp:1825:27:1825:28 | ChiTotal | total:m1825_8 | -| ir.cpp:1825:27:1825:28 | SideEffect | ~m1825_2 | +| ir.cpp:1810:13:1810:13 | Condition | r1810_2 | +| ir.cpp:1810:13:1810:13 | Load | m1809_4 | +| ir.cpp:1812:9:1812:9 | Address | &:r1812_6 | +| ir.cpp:1812:13:1812:13 | Address | &:r1812_1 | +| ir.cpp:1812:13:1812:13 | Left | r1812_2 | +| ir.cpp:1812:13:1812:13 | Load | m1806_7 | +| ir.cpp:1812:13:1812:17 | StoreValue | r1812_5 | +| ir.cpp:1812:17:1812:17 | Address | &:r1812_3 | +| ir.cpp:1812:17:1812:17 | Load | m1809_4 | +| ir.cpp:1812:17:1812:17 | Right | r1812_4 | +| ir.cpp:1815:13:1815:22 | Address | &:r1815_1 | +| ir.cpp:1815:13:1815:22 | Condition | r1815_7 | +| ir.cpp:1815:17:1815:18 | Address | &:r1815_5 | +| ir.cpp:1815:17:1815:18 | Load | m1815_4 | +| ir.cpp:1815:17:1815:18 | Unary | r1815_6 | +| ir.cpp:1815:22:1815:22 | Address | &:r1815_2 | +| ir.cpp:1815:22:1815:22 | Load | m1809_4 | +| ir.cpp:1815:22:1815:22 | StoreValue | r1815_3 | +| ir.cpp:1817:9:1817:9 | Address | &:r1817_3 | +| ir.cpp:1817:9:1817:9 | Address | &:r1817_3 | +| ir.cpp:1817:9:1817:9 | Left | r1817_4 | +| ir.cpp:1817:9:1817:9 | Load | m1812_7 | +| ir.cpp:1817:9:1817:15 | StoreValue | r1817_5 | +| ir.cpp:1817:14:1817:15 | Address | &:r1817_1 | +| ir.cpp:1817:14:1817:15 | Load | m1815_4 | +| ir.cpp:1817:14:1817:15 | Right | r1817_2 | +| ir.cpp:1823:5:1823:12 | Address | &:r1823_3 | +| ir.cpp:1823:5:1823:12 | SideEffect | ~m1823_6 | +| ir.cpp:1823:16:1823:16 | ChiPartial | partial:m1823_5 | +| ir.cpp:1823:16:1823:16 | ChiTotal | total:m1823_2 | +| ir.cpp:1823:16:1823:16 | StoreValue | r1823_4 | | ir.cpp:1827:18:1827:25 | Address | &:r1827_3 | | ir.cpp:1827:18:1827:25 | Arg(this) | this:r1827_3 | | ir.cpp:1827:18:1827:25 | SideEffect | ~m1827_10 | -| ir.cpp:1827:28:1827:47 | CallTarget | func:r1827_4 | -| ir.cpp:1827:28:1827:47 | ChiPartial | partial:m1827_7 | -| ir.cpp:1827:28:1827:47 | ChiPartial | partial:m1827_9 | -| ir.cpp:1827:28:1827:47 | ChiTotal | total:m1827_2 | -| ir.cpp:1827:28:1827:47 | ChiTotal | total:m1827_8 | -| ir.cpp:1827:28:1827:47 | SideEffect | ~m1827_2 | -| ir.cpp:1827:46:1827:46 | Arg(0) | 0:r1827_5 | -| ir.cpp:1829:7:1829:19 | Address | &:r1829_3 | -| ir.cpp:1829:7:1829:19 | SideEffect | ~m1829_8 | -| ir.cpp:1829:23:1829:37 | ChiPartial | partial:m1829_7 | -| ir.cpp:1829:23:1829:37 | ChiTotal | total:m1829_2 | -| ir.cpp:1829:23:1829:37 | StoreValue | r1829_6 | -| ir.cpp:1829:23:1829:37 | Unary | r1829_4 | -| ir.cpp:1829:23:1829:37 | Unary | r1829_5 | -| ir.cpp:1831:5:1831:12 | Address | &:r1831_3 | -| ir.cpp:1831:5:1831:12 | SideEffect | ~m1831_7 | -| ir.cpp:1831:16:1831:23 | Address | &:r1831_4 | -| ir.cpp:1831:16:1831:23 | ChiPartial | partial:m1831_6 | -| ir.cpp:1831:16:1831:23 | ChiTotal | total:m1831_2 | -| ir.cpp:1831:16:1831:23 | Load | ~m1831_2 | -| ir.cpp:1831:16:1831:23 | StoreValue | r1831_5 | -| ir.cpp:1834:11:1834:11 | Address | &:r1834_5 | -| ir.cpp:1834:11:1834:11 | Address | &:r1834_5 | -| ir.cpp:1834:11:1834:11 | Address | &:r1834_7 | -| ir.cpp:1834:11:1834:11 | Address | &:r1834_7 | -| ir.cpp:1834:11:1834:11 | Address | &:r1834_10 | -| ir.cpp:1834:11:1834:11 | ChiPartial | partial:m1834_3 | -| ir.cpp:1834:11:1834:11 | ChiTotal | total:m1834_2 | -| ir.cpp:1834:11:1834:11 | Load | m0_20 | -| ir.cpp:1834:11:1834:11 | Load | m1834_6 | -| ir.cpp:1834:11:1834:11 | SideEffect | m0_14 | -| ir.cpp:1834:11:1834:11 | SideEffect | m1834_3 | -| ir.cpp:1839:12:1839:12 | Address | &:r1839_5 | -| ir.cpp:1839:12:1839:12 | Address | &:r1839_5 | -| ir.cpp:1839:12:1839:12 | Address | &:r1839_7 | -| ir.cpp:1839:12:1839:12 | Address | &:r1839_7 | -| ir.cpp:1839:12:1839:12 | Address | &:r1839_9 | -| ir.cpp:1839:12:1839:12 | Address | &:r1839_12 | -| ir.cpp:1839:12:1839:12 | Address | &:r1839_20 | -| ir.cpp:1839:12:1839:12 | Arg(this) | this:r0_5 | -| ir.cpp:1839:12:1839:12 | CallTarget | func:r1839_11 | -| ir.cpp:1839:12:1839:12 | ChiPartial | partial:m1839_3 | -| ir.cpp:1839:12:1839:12 | ChiPartial | partial:m1839_17 | -| ir.cpp:1839:12:1839:12 | ChiTotal | total:m1839_2 | -| ir.cpp:1839:12:1839:12 | ChiTotal | total:m1839_4 | -| ir.cpp:1839:12:1839:12 | Load | m0_2 | -| ir.cpp:1839:12:1839:12 | Load | m0_21 | -| ir.cpp:1839:12:1839:12 | Load | m1839_6 | -| ir.cpp:1839:12:1839:12 | Load | m1839_6 | -| ir.cpp:1839:12:1839:12 | SideEffect | m0_12 | -| ir.cpp:1839:12:1839:12 | SideEffect | ~m1839_4 | -| ir.cpp:1839:12:1839:12 | SideEffect | ~m1839_18 | -| ir.cpp:1839:12:1839:12 | Unary | r1839_10 | -| ir.cpp:1839:12:1839:12 | Unary | r1839_13 | -| ir.cpp:1839:12:1839:12 | Unary | r1839_14 | -| ir.cpp:1839:12:1839:12 | Unary | r1839_15 | -| ir.cpp:1839:12:1839:12 | Unary | r1839_16 | -| ir.cpp:1843:10:1843:12 | ChiPartial | partial:m1843_3 | -| ir.cpp:1843:10:1843:12 | ChiTotal | total:m1843_2 | -| ir.cpp:1843:10:1843:12 | SideEffect | ~m1845_18 | -| ir.cpp:1844:11:1844:11 | Address | &:r1844_1 | -| ir.cpp:1844:11:1844:11 | Address | &:r1844_1 | -| ir.cpp:1844:11:1844:11 | Arg(this) | this:r1844_1 | -| ir.cpp:1844:13:1844:13 | Address | &:r1844_4 | -| ir.cpp:1844:13:1844:13 | Address | &:r1844_4 | -| ir.cpp:1844:13:1844:13 | Arg(0) | 0:r1844_4 | -| ir.cpp:1844:13:1844:13 | ChiPartial | partial:m1844_11 | -| ir.cpp:1844:13:1844:13 | ChiTotal | total:m1844_7 | -| ir.cpp:1844:13:1844:13 | SideEffect | ~m1844_7 | -| ir.cpp:1844:13:1844:14 | CallTarget | func:r1844_3 | -| ir.cpp:1844:13:1844:14 | ChiPartial | partial:m1844_6 | -| ir.cpp:1844:13:1844:14 | ChiPartial | partial:m1844_9 | -| ir.cpp:1844:13:1844:14 | ChiTotal | total:m1843_4 | -| ir.cpp:1844:13:1844:14 | ChiTotal | total:m1844_2 | -| ir.cpp:1844:13:1844:14 | SideEffect | ~m1843_4 | -| ir.cpp:1845:9:1845:9 | Address | &:r1845_1 | -| ir.cpp:1845:9:1845:9 | Address | &:r1845_1 | -| ir.cpp:1845:9:1845:9 | Arg(this) | this:r1845_1 | -| ir.cpp:1845:9:1845:9 | ChiPartial | partial:m1845_21 | -| ir.cpp:1845:9:1845:9 | ChiTotal | total:m1844_10 | -| ir.cpp:1845:9:1845:9 | SideEffect | m1844_10 | -| ir.cpp:1845:11:1845:11 | CallTarget | func:r1845_2 | -| ir.cpp:1845:11:1845:11 | ChiPartial | partial:m1845_17 | -| ir.cpp:1845:11:1845:11 | ChiTotal | total:m1845_14 | -| ir.cpp:1845:11:1845:11 | SideEffect | ~m1845_14 | -| ir.cpp:1845:11:1845:11 | Unary | r1845_16 | -| ir.cpp:1845:13:1845:13 | Address | &:r1845_3 | -| ir.cpp:1845:13:1845:13 | Address | &:r1845_3 | -| ir.cpp:1845:13:1845:13 | Address | &:r1845_6 | -| ir.cpp:1845:13:1845:13 | Address | &:r1845_6 | -| ir.cpp:1845:13:1845:13 | Address | &:r1845_15 | -| ir.cpp:1845:13:1845:13 | Address | &:r1845_15 | -| ir.cpp:1845:13:1845:13 | Arg(0) | 0:r1845_6 | -| ir.cpp:1845:13:1845:13 | Arg(0) | 0:r1845_15 | -| ir.cpp:1845:13:1845:13 | Arg(this) | this:r1845_3 | -| ir.cpp:1845:13:1845:13 | CallTarget | func:r1845_5 | -| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_8 | -| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_11 | -| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_13 | -| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_23 | -| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1844_12 | -| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1845_4 | -| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1845_9 | -| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1845_12 | -| ir.cpp:1845:13:1845:13 | SideEffect | ~m1844_12 | -| ir.cpp:1845:13:1845:13 | SideEffect | ~m1845_9 | -| ir.cpp:1845:13:1845:13 | SideEffect | ~m1845_12 | -| ir.cpp:1845:13:1845:13 | Unary | r1845_3 | -| ir.cpp:1849:6:1849:14 | ChiPartial | partial:m1849_3 | -| ir.cpp:1849:6:1849:14 | ChiTotal | total:m1849_2 | -| ir.cpp:1849:6:1849:14 | SideEffect | m1849_3 | -| ir.cpp:1850:17:1850:18 | Address | &:r1850_1 | -| ir.cpp:1850:22:1850:40 | StoreValue | r1850_3 | -| ir.cpp:1850:22:1850:40 | Unary | r1850_2 | -| ir.cpp:1851:17:1851:23 | Address | &:r1851_1 | -| ir.cpp:1851:27:1851:34 | StoreValue | r1851_3 | -| ir.cpp:1851:27:1851:34 | Unary | r1851_2 | -| ir.cpp:1862:15:1862:15 | Address | &:r1862_5 | -| ir.cpp:1862:15:1862:15 | Address | &:r1862_5 | -| ir.cpp:1862:15:1862:15 | Address | &:r1862_7 | -| ir.cpp:1862:15:1862:15 | Address | &:r1862_7 | -| ir.cpp:1862:15:1862:15 | Address | &:r1862_15 | -| ir.cpp:1862:15:1862:15 | ChiPartial | partial:m1862_3 | -| ir.cpp:1862:15:1862:15 | ChiTotal | total:m1862_2 | -| ir.cpp:1862:15:1862:15 | Load | m1862_6 | -| ir.cpp:1862:15:1862:15 | Load | m1864_5 | -| ir.cpp:1862:15:1862:15 | SideEffect | m1862_3 | -| ir.cpp:1862:15:1862:15 | SideEffect | m1862_8 | -| ir.cpp:1862:47:1862:47 | Address | &:r1862_9 | -| ir.cpp:1862:47:1862:47 | Address | &:r1862_9 | -| ir.cpp:1862:47:1862:47 | Address | &:r1862_11 | -| ir.cpp:1862:47:1862:47 | Address | &:r1862_11 | -| ir.cpp:1862:47:1862:47 | Load | m1862_10 | -| ir.cpp:1862:47:1862:47 | SideEffect | m1862_12 | -| ir.cpp:1864:13:1864:21 | Address | &:r1864_1 | -| ir.cpp:1864:20:1864:20 | Address | &:r1864_2 | -| ir.cpp:1864:20:1864:20 | Load | m1862_10 | -| ir.cpp:1864:20:1864:20 | StoreValue | r1864_4 | -| ir.cpp:1864:20:1864:20 | Unary | r1864_3 | -| ir.cpp:1868:10:1868:14 | ChiPartial | partial:m1868_3 | -| ir.cpp:1868:10:1868:14 | ChiTotal | total:m1868_2 | -| ir.cpp:1868:10:1868:14 | SideEffect | ~m1870_12 | -| ir.cpp:1869:19:1869:19 | Address | &:r1869_1 | -| ir.cpp:1870:9:1870:9 | Address | &:r1870_1 | -| ir.cpp:1870:9:1870:9 | Address | &:r1870_1 | -| ir.cpp:1870:9:1870:9 | Arg(this) | this:r1870_1 | -| ir.cpp:1870:9:1870:9 | ChiPartial | partial:m1870_9 | -| ir.cpp:1870:9:1870:9 | ChiTotal | total:m1869_2 | -| ir.cpp:1870:9:1870:9 | SideEffect | m1869_2 | -| ir.cpp:1870:11:1870:33 | CallTarget | func:r1870_2 | -| ir.cpp:1870:11:1870:33 | ChiPartial | partial:m1870_5 | -| ir.cpp:1870:11:1870:33 | ChiTotal | total:m1868_4 | -| ir.cpp:1870:11:1870:33 | SideEffect | ~m1868_4 | -| ir.cpp:1870:35:1870:41 | Address | &:r1870_3 | -| ir.cpp:1870:35:1870:41 | Address | &:r1870_3 | -| ir.cpp:1870:35:1870:41 | Arg(0) | 0:r1870_3 | -| ir.cpp:1870:35:1870:41 | ChiPartial | partial:m1870_11 | -| ir.cpp:1870:35:1870:41 | ChiTotal | total:m1870_6 | -| ir.cpp:1870:35:1870:41 | SideEffect | ~m1870_6 | -| ir.cpp:1875:13:1875:13 | Address | &:r1875_5 | -| ir.cpp:1875:13:1875:13 | Address | &:r1875_5 | -| ir.cpp:1875:13:1875:13 | Address | &:r1875_7 | -| ir.cpp:1875:13:1875:13 | Address | &:r1875_7 | -| ir.cpp:1875:13:1875:13 | Address | &:r1875_10 | -| ir.cpp:1875:13:1875:13 | ChiPartial | partial:m1875_3 | -| ir.cpp:1875:13:1875:13 | ChiTotal | total:m1875_2 | -| ir.cpp:1875:13:1875:13 | Load | m1875_6 | -| ir.cpp:1875:13:1875:13 | Load | m1879_9 | -| ir.cpp:1875:13:1875:13 | SideEffect | m1875_3 | -| ir.cpp:1875:13:1875:13 | SideEffect | m1875_8 | -| ir.cpp:1876:13:1876:29 | Address | &:r1876_1 | -| ir.cpp:1876:13:1876:29 | Address | &:r1876_3 | -| ir.cpp:1877:13:1877:14 | Address | &:r1877_4 | -| ir.cpp:1877:13:1877:19 | ChiPartial | partial:m1877_5 | -| ir.cpp:1877:13:1877:19 | ChiTotal | total:m1876_2 | -| ir.cpp:1877:14:1877:14 | Unary | r1877_2 | -| ir.cpp:1877:14:1877:14 | Unary | r1877_3 | -| ir.cpp:1877:18:1877:19 | StoreValue | r1877_1 | -| ir.cpp:1878:13:1878:14 | Address | &:r1878_4 | -| ir.cpp:1878:13:1878:19 | ChiPartial | partial:m1878_5 | -| ir.cpp:1878:13:1878:19 | ChiTotal | total:m1876_4 | -| ir.cpp:1878:14:1878:14 | Unary | r1878_2 | -| ir.cpp:1878:14:1878:14 | Unary | r1878_3 | -| ir.cpp:1878:18:1878:19 | StoreValue | r1878_1 | -| ir.cpp:1879:13:1879:27 | Address | &:r1879_1 | -| ir.cpp:1879:20:1879:21 | Left | r1879_4 | -| ir.cpp:1879:20:1879:21 | Load | m1877_5 | -| ir.cpp:1879:20:1879:26 | StoreValue | r1879_8 | -| ir.cpp:1879:21:1879:21 | Address | &:r1879_3 | -| ir.cpp:1879:21:1879:21 | Unary | r1879_2 | -| ir.cpp:1879:25:1879:26 | Load | m1878_5 | -| ir.cpp:1879:25:1879:26 | Right | r1879_7 | -| ir.cpp:1879:26:1879:26 | Address | &:r1879_6 | -| ir.cpp:1879:26:1879:26 | Unary | r1879_5 | -| ir.cpp:1883:10:1883:14 | ChiPartial | partial:m1883_3 | -| ir.cpp:1883:10:1883:14 | ChiTotal | total:m1883_2 | -| ir.cpp:1883:10:1883:14 | SideEffect | ~m1885_5 | -| ir.cpp:1884:19:1884:19 | Address | &:r1884_1 | -| ir.cpp:1885:9:1885:9 | Address | &:r1885_1 | -| ir.cpp:1885:9:1885:9 | Address | &:r1885_1 | -| ir.cpp:1885:9:1885:9 | Arg(this) | this:r1885_1 | -| ir.cpp:1885:9:1885:9 | ChiPartial | partial:m1885_7 | -| ir.cpp:1885:9:1885:9 | ChiTotal | total:m1884_2 | -| ir.cpp:1885:9:1885:9 | SideEffect | m1884_2 | -| ir.cpp:1885:11:1885:50 | CallTarget | func:r1885_2 | -| ir.cpp:1885:11:1885:50 | ChiPartial | partial:m1885_4 | -| ir.cpp:1885:11:1885:50 | ChiTotal | total:m1883_4 | -| ir.cpp:1885:11:1885:50 | SideEffect | ~m1883_4 | -| ir.cpp:1889:24:1889:24 | Address | &:r1889_3 | -| ir.cpp:1889:24:1889:24 | Address | &:r1889_3 | -| ir.cpp:1889:24:1889:24 | SideEffect | ~m1889_6 | -| ir.cpp:1889:24:1889:24 | SideEffect | ~m1889_6 | -| ir.cpp:1889:42:1889:43 | ChiPartial | partial:m1889_5 | -| ir.cpp:1889:42:1889:43 | ChiPartial | partial:m1889_5 | -| ir.cpp:1889:42:1889:43 | ChiTotal | total:m1889_2 | -| ir.cpp:1889:42:1889:43 | ChiTotal | total:m1889_2 | -| ir.cpp:1889:42:1889:43 | StoreValue | r1889_4 | -| ir.cpp:1889:42:1889:43 | StoreValue | r1889_4 | -| ir.cpp:1891:5:1891:28 | Address | &:r1891_5 | -| ir.cpp:1891:5:1891:28 | ChiPartial | partial:m1891_3 | -| ir.cpp:1891:5:1891:28 | ChiTotal | total:m1891_2 | -| ir.cpp:1891:5:1891:28 | Load | m1894_8 | -| ir.cpp:1891:5:1891:28 | SideEffect | m1891_3 | -| ir.cpp:1892:9:1892:17 | Address | &:r1892_1 | -| ir.cpp:1892:21:1892:40 | Address | &:r1892_2 | -| ir.cpp:1892:21:1892:40 | Load | ~m1891_3 | -| ir.cpp:1892:21:1892:40 | StoreValue | r1892_3 | -| ir.cpp:1893:10:1893:19 | Address | &:r1893_1 | -| ir.cpp:1893:23:1893:43 | Address | &:r1893_2 | -| ir.cpp:1893:23:1893:43 | Load | ~m1891_3 | -| ir.cpp:1893:23:1893:43 | StoreValue | r1893_3 | -| ir.cpp:1894:5:1894:39 | Address | &:r1894_1 | -| ir.cpp:1894:12:1894:20 | Address | &:r1894_2 | -| ir.cpp:1894:12:1894:20 | Left | r1894_3 | -| ir.cpp:1894:12:1894:20 | Load | m1892_4 | -| ir.cpp:1894:12:1894:38 | StoreValue | r1894_7 | -| ir.cpp:1894:24:1894:38 | Right | r1894_6 | -| ir.cpp:1894:29:1894:38 | Address | &:r1894_4 | -| ir.cpp:1894:29:1894:38 | Load | m1893_4 | -| ir.cpp:1894:29:1894:38 | Unary | r1894_5 | -| ir.cpp:1899:5:1899:16 | Address | &:r1899_7 | -| ir.cpp:1899:5:1899:16 | ChiPartial | partial:m1899_3 | -| ir.cpp:1899:5:1899:16 | ChiTotal | total:m1899_2 | -| ir.cpp:1899:5:1899:16 | Load | m1901_4 | -| ir.cpp:1899:5:1899:16 | SideEffect | m1899_3 | -| ir.cpp:1899:22:1899:22 | Address | &:r1899_5 | -| ir.cpp:1900:9:1900:9 | Address | &:r1900_1 | -| ir.cpp:1900:9:1900:9 | Left | r1900_2 | -| ir.cpp:1900:9:1900:9 | Load | m1899_6 | -| ir.cpp:1900:9:1900:14 | Condition | r1900_4 | -| ir.cpp:1900:13:1900:14 | Right | r1900_3 | -| ir.cpp:1901:9:1901:17 | Address | &:r1901_1 | -| ir.cpp:1901:16:1901:16 | Address | &:r1901_2 | -| ir.cpp:1901:16:1901:16 | Load | m1899_6 | -| ir.cpp:1901:16:1901:16 | StoreValue | r1901_3 | -| ir.cpp:1903:9:1903:20 | CallTarget | func:r1903_1 | -| ir.cpp:1903:9:1903:20 | ChiPartial | partial:m1903_3 | -| ir.cpp:1903:9:1903:20 | ChiTotal | total:m1899_4 | -| ir.cpp:1903:9:1903:20 | SideEffect | ~m1899_4 | -| ir.cpp:1907:5:1907:17 | Address | &:r1907_8 | -| ir.cpp:1907:5:1907:17 | ChiPartial | partial:m1907_3 | -| ir.cpp:1907:5:1907:17 | ChiTotal | total:m1907_2 | -| ir.cpp:1907:5:1907:17 | Load | m1911_4 | -| ir.cpp:1907:5:1907:17 | SideEffect | m1907_3 | -| ir.cpp:1907:23:1907:23 | Address | &:r1907_5 | -| ir.cpp:1908:9:1908:9 | Address | &:r1908_1 | -| ir.cpp:1908:9:1908:9 | Left | r1908_2 | -| ir.cpp:1908:9:1908:9 | Load | m1907_6 | -| ir.cpp:1908:9:1908:14 | Condition | r1908_4 | -| ir.cpp:1908:13:1908:14 | Right | r1908_3 | -| ir.cpp:1909:9:1909:20 | CallTarget | func:r1909_1 | -| ir.cpp:1909:9:1909:20 | ChiPartial | partial:m1909_3 | -| ir.cpp:1909:9:1909:20 | ChiTotal | total:m1907_4 | -| ir.cpp:1909:9:1909:20 | SideEffect | ~m1907_4 | -| ir.cpp:1911:5:1911:13 | Address | &:r1911_1 | -| ir.cpp:1911:12:1911:12 | Address | &:r1911_2 | -| ir.cpp:1911:12:1911:12 | Load | m1907_6 | -| ir.cpp:1911:12:1911:12 | StoreValue | r1911_3 | -| ir.cpp:1914:5:1914:19 | Address | &:r1914_7 | -| ir.cpp:1914:5:1914:19 | ChiPartial | partial:m1914_3 | -| ir.cpp:1914:5:1914:19 | ChiTotal | total:m1914_2 | -| ir.cpp:1914:5:1914:19 | Load | m1915_4 | -| ir.cpp:1914:5:1914:19 | SideEffect | m1914_3 | -| ir.cpp:1914:25:1914:25 | Address | &:r1914_5 | -| ir.cpp:1915:5:1915:13 | Address | &:r1915_1 | -| ir.cpp:1915:12:1915:12 | Address | &:r1915_2 | -| ir.cpp:1915:12:1915:12 | Load | m1914_6 | -| ir.cpp:1915:12:1915:12 | StoreValue | r1915_3 | -| ir.cpp:1918:6:1918:43 | ChiPartial | partial:m1918_3 | -| ir.cpp:1918:6:1918:43 | ChiTotal | total:m1918_2 | -| ir.cpp:1918:6:1918:43 | SideEffect | ~m1925_5 | -| ir.cpp:1919:7:1919:7 | Address | &:r1919_1 | -| ir.cpp:1919:7:1919:7 | Address | &:r1919_1 | -| ir.cpp:1919:7:1919:7 | Arg(this) | this:r1919_1 | -| ir.cpp:1919:7:1919:7 | CallTarget | func:r1919_3 | -| ir.cpp:1919:7:1919:7 | ChiPartial | partial:m1919_5 | -| ir.cpp:1919:7:1919:7 | ChiPartial | partial:m1919_7 | -| ir.cpp:1919:7:1919:7 | ChiTotal | total:m1918_4 | -| ir.cpp:1919:7:1919:7 | ChiTotal | total:m1919_2 | -| ir.cpp:1919:7:1919:7 | SideEffect | ~m1918_4 | -| ir.cpp:1920:9:1920:9 | Address | &:r1920_1 | -| ir.cpp:1921:5:1921:5 | Address | &:r1921_7 | -| ir.cpp:1921:11:1921:30 | CallTarget | func:r1921_2 | -| ir.cpp:1921:11:1921:30 | ChiPartial | partial:m1921_5 | -| ir.cpp:1921:11:1921:30 | ChiTotal | total:m1919_6 | -| ir.cpp:1921:11:1921:30 | SideEffect | ~m1919_6 | -| ir.cpp:1921:11:1921:30 | StoreValue | r1921_4 | -| ir.cpp:1921:32:1921:33 | Arg(0) | 0:r1921_3 | +| ir.cpp:1827:27:1827:27 | Arg(0) | 0:r1827_5 | +| ir.cpp:1827:27:1827:28 | CallTarget | func:r1827_4 | +| ir.cpp:1827:27:1827:28 | ChiPartial | partial:m1827_7 | +| ir.cpp:1827:27:1827:28 | ChiPartial | partial:m1827_9 | +| ir.cpp:1827:27:1827:28 | ChiTotal | total:m1827_2 | +| ir.cpp:1827:27:1827:28 | ChiTotal | total:m1827_8 | +| ir.cpp:1827:27:1827:28 | SideEffect | ~m1827_2 | +| ir.cpp:1829:18:1829:25 | Address | &:r1829_3 | +| ir.cpp:1829:18:1829:25 | Arg(this) | this:r1829_3 | +| ir.cpp:1829:18:1829:25 | SideEffect | ~m1829_10 | +| ir.cpp:1829:28:1829:47 | CallTarget | func:r1829_4 | +| ir.cpp:1829:28:1829:47 | ChiPartial | partial:m1829_7 | +| ir.cpp:1829:28:1829:47 | ChiPartial | partial:m1829_9 | +| ir.cpp:1829:28:1829:47 | ChiTotal | total:m1829_2 | +| ir.cpp:1829:28:1829:47 | ChiTotal | total:m1829_8 | +| ir.cpp:1829:28:1829:47 | SideEffect | ~m1829_2 | +| ir.cpp:1829:46:1829:46 | Arg(0) | 0:r1829_5 | +| ir.cpp:1831:7:1831:19 | Address | &:r1831_3 | +| ir.cpp:1831:7:1831:19 | SideEffect | ~m1831_8 | +| ir.cpp:1831:23:1831:37 | ChiPartial | partial:m1831_7 | +| ir.cpp:1831:23:1831:37 | ChiTotal | total:m1831_2 | +| ir.cpp:1831:23:1831:37 | StoreValue | r1831_6 | +| ir.cpp:1831:23:1831:37 | Unary | r1831_4 | +| ir.cpp:1831:23:1831:37 | Unary | r1831_5 | +| ir.cpp:1833:5:1833:12 | Address | &:r1833_3 | +| ir.cpp:1833:5:1833:12 | SideEffect | ~m1833_7 | +| ir.cpp:1833:16:1833:23 | Address | &:r1833_4 | +| ir.cpp:1833:16:1833:23 | ChiPartial | partial:m1833_6 | +| ir.cpp:1833:16:1833:23 | ChiTotal | total:m1833_2 | +| ir.cpp:1833:16:1833:23 | Load | ~m1833_2 | +| ir.cpp:1833:16:1833:23 | StoreValue | r1833_5 | +| ir.cpp:1836:11:1836:11 | Address | &:r1836_5 | +| ir.cpp:1836:11:1836:11 | Address | &:r1836_5 | +| ir.cpp:1836:11:1836:11 | Address | &:r1836_7 | +| ir.cpp:1836:11:1836:11 | Address | &:r1836_7 | +| ir.cpp:1836:11:1836:11 | Address | &:r1836_10 | +| ir.cpp:1836:11:1836:11 | ChiPartial | partial:m1836_3 | +| ir.cpp:1836:11:1836:11 | ChiTotal | total:m1836_2 | +| ir.cpp:1836:11:1836:11 | Load | m0_20 | +| ir.cpp:1836:11:1836:11 | Load | m1836_6 | +| ir.cpp:1836:11:1836:11 | SideEffect | m0_14 | +| ir.cpp:1836:11:1836:11 | SideEffect | m1836_3 | +| ir.cpp:1841:12:1841:12 | Address | &:r1841_5 | +| ir.cpp:1841:12:1841:12 | Address | &:r1841_5 | +| ir.cpp:1841:12:1841:12 | Address | &:r1841_7 | +| ir.cpp:1841:12:1841:12 | Address | &:r1841_7 | +| ir.cpp:1841:12:1841:12 | Address | &:r1841_9 | +| ir.cpp:1841:12:1841:12 | Address | &:r1841_12 | +| ir.cpp:1841:12:1841:12 | Address | &:r1841_20 | +| ir.cpp:1841:12:1841:12 | Arg(this) | this:r0_5 | +| ir.cpp:1841:12:1841:12 | CallTarget | func:r1841_11 | +| ir.cpp:1841:12:1841:12 | ChiPartial | partial:m1841_3 | +| ir.cpp:1841:12:1841:12 | ChiPartial | partial:m1841_17 | +| ir.cpp:1841:12:1841:12 | ChiTotal | total:m1841_2 | +| ir.cpp:1841:12:1841:12 | ChiTotal | total:m1841_4 | +| ir.cpp:1841:12:1841:12 | Load | m0_2 | +| ir.cpp:1841:12:1841:12 | Load | m0_21 | +| ir.cpp:1841:12:1841:12 | Load | m1841_6 | +| ir.cpp:1841:12:1841:12 | Load | m1841_6 | +| ir.cpp:1841:12:1841:12 | SideEffect | m0_12 | +| ir.cpp:1841:12:1841:12 | SideEffect | ~m1841_4 | +| ir.cpp:1841:12:1841:12 | SideEffect | ~m1841_18 | +| ir.cpp:1841:12:1841:12 | Unary | r1841_10 | +| ir.cpp:1841:12:1841:12 | Unary | r1841_13 | +| ir.cpp:1841:12:1841:12 | Unary | r1841_14 | +| ir.cpp:1841:12:1841:12 | Unary | r1841_15 | +| ir.cpp:1841:12:1841:12 | Unary | r1841_16 | +| ir.cpp:1845:10:1845:12 | ChiPartial | partial:m1845_3 | +| ir.cpp:1845:10:1845:12 | ChiTotal | total:m1845_2 | +| ir.cpp:1845:10:1845:12 | SideEffect | ~m1847_18 | +| ir.cpp:1846:11:1846:11 | Address | &:r1846_1 | +| ir.cpp:1846:11:1846:11 | Address | &:r1846_1 | +| ir.cpp:1846:11:1846:11 | Arg(this) | this:r1846_1 | +| ir.cpp:1846:13:1846:13 | Address | &:r1846_4 | +| ir.cpp:1846:13:1846:13 | Address | &:r1846_4 | +| ir.cpp:1846:13:1846:13 | Arg(0) | 0:r1846_4 | +| ir.cpp:1846:13:1846:13 | ChiPartial | partial:m1846_11 | +| ir.cpp:1846:13:1846:13 | ChiTotal | total:m1846_7 | +| ir.cpp:1846:13:1846:13 | SideEffect | ~m1846_7 | +| ir.cpp:1846:13:1846:14 | CallTarget | func:r1846_3 | +| ir.cpp:1846:13:1846:14 | ChiPartial | partial:m1846_6 | +| ir.cpp:1846:13:1846:14 | ChiPartial | partial:m1846_9 | +| ir.cpp:1846:13:1846:14 | ChiTotal | total:m1845_4 | +| ir.cpp:1846:13:1846:14 | ChiTotal | total:m1846_2 | +| ir.cpp:1846:13:1846:14 | SideEffect | ~m1845_4 | +| ir.cpp:1847:9:1847:9 | Address | &:r1847_1 | +| ir.cpp:1847:9:1847:9 | Address | &:r1847_1 | +| ir.cpp:1847:9:1847:9 | Arg(this) | this:r1847_1 | +| ir.cpp:1847:9:1847:9 | ChiPartial | partial:m1847_21 | +| ir.cpp:1847:9:1847:9 | ChiTotal | total:m1846_10 | +| ir.cpp:1847:9:1847:9 | SideEffect | m1846_10 | +| ir.cpp:1847:11:1847:11 | CallTarget | func:r1847_2 | +| ir.cpp:1847:11:1847:11 | ChiPartial | partial:m1847_17 | +| ir.cpp:1847:11:1847:11 | ChiTotal | total:m1847_14 | +| ir.cpp:1847:11:1847:11 | SideEffect | ~m1847_14 | +| ir.cpp:1847:11:1847:11 | Unary | r1847_16 | +| ir.cpp:1847:13:1847:13 | Address | &:r1847_3 | +| ir.cpp:1847:13:1847:13 | Address | &:r1847_3 | +| ir.cpp:1847:13:1847:13 | Address | &:r1847_6 | +| ir.cpp:1847:13:1847:13 | Address | &:r1847_6 | +| ir.cpp:1847:13:1847:13 | Address | &:r1847_15 | +| ir.cpp:1847:13:1847:13 | Address | &:r1847_15 | +| ir.cpp:1847:13:1847:13 | Arg(0) | 0:r1847_6 | +| ir.cpp:1847:13:1847:13 | Arg(0) | 0:r1847_15 | +| ir.cpp:1847:13:1847:13 | Arg(this) | this:r1847_3 | +| ir.cpp:1847:13:1847:13 | CallTarget | func:r1847_5 | +| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_8 | +| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_11 | +| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_13 | +| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_23 | +| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1846_12 | +| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1847_4 | +| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1847_9 | +| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1847_12 | +| ir.cpp:1847:13:1847:13 | SideEffect | ~m1846_12 | +| ir.cpp:1847:13:1847:13 | SideEffect | ~m1847_9 | +| ir.cpp:1847:13:1847:13 | SideEffect | ~m1847_12 | +| ir.cpp:1847:13:1847:13 | Unary | r1847_3 | +| ir.cpp:1851:6:1851:14 | ChiPartial | partial:m1851_3 | +| ir.cpp:1851:6:1851:14 | ChiTotal | total:m1851_2 | +| ir.cpp:1851:6:1851:14 | SideEffect | m1851_3 | +| ir.cpp:1852:17:1852:18 | Address | &:r1852_1 | +| ir.cpp:1852:22:1852:40 | StoreValue | r1852_3 | +| ir.cpp:1852:22:1852:40 | Unary | r1852_2 | +| ir.cpp:1853:17:1853:23 | Address | &:r1853_1 | +| ir.cpp:1853:27:1853:34 | StoreValue | r1853_3 | +| ir.cpp:1853:27:1853:34 | Unary | r1853_2 | +| ir.cpp:1864:15:1864:15 | Address | &:r1864_5 | +| ir.cpp:1864:15:1864:15 | Address | &:r1864_5 | +| ir.cpp:1864:15:1864:15 | Address | &:r1864_7 | +| ir.cpp:1864:15:1864:15 | Address | &:r1864_7 | +| ir.cpp:1864:15:1864:15 | Address | &:r1864_15 | +| ir.cpp:1864:15:1864:15 | ChiPartial | partial:m1864_3 | +| ir.cpp:1864:15:1864:15 | ChiTotal | total:m1864_2 | +| ir.cpp:1864:15:1864:15 | Load | m1864_6 | +| ir.cpp:1864:15:1864:15 | Load | m1866_5 | +| ir.cpp:1864:15:1864:15 | SideEffect | m1864_3 | +| ir.cpp:1864:15:1864:15 | SideEffect | m1864_8 | +| ir.cpp:1864:47:1864:47 | Address | &:r1864_9 | +| ir.cpp:1864:47:1864:47 | Address | &:r1864_9 | +| ir.cpp:1864:47:1864:47 | Address | &:r1864_11 | +| ir.cpp:1864:47:1864:47 | Address | &:r1864_11 | +| ir.cpp:1864:47:1864:47 | Load | m1864_10 | +| ir.cpp:1864:47:1864:47 | SideEffect | m1864_12 | +| ir.cpp:1866:13:1866:21 | Address | &:r1866_1 | +| ir.cpp:1866:20:1866:20 | Address | &:r1866_2 | +| ir.cpp:1866:20:1866:20 | Load | m1864_10 | +| ir.cpp:1866:20:1866:20 | StoreValue | r1866_4 | +| ir.cpp:1866:20:1866:20 | Unary | r1866_3 | +| ir.cpp:1870:10:1870:14 | ChiPartial | partial:m1870_3 | +| ir.cpp:1870:10:1870:14 | ChiTotal | total:m1870_2 | +| ir.cpp:1870:10:1870:14 | SideEffect | ~m1872_12 | +| ir.cpp:1871:19:1871:19 | Address | &:r1871_1 | +| ir.cpp:1872:9:1872:9 | Address | &:r1872_1 | +| ir.cpp:1872:9:1872:9 | Address | &:r1872_1 | +| ir.cpp:1872:9:1872:9 | Arg(this) | this:r1872_1 | +| ir.cpp:1872:9:1872:9 | ChiPartial | partial:m1872_9 | +| ir.cpp:1872:9:1872:9 | ChiTotal | total:m1871_2 | +| ir.cpp:1872:9:1872:9 | SideEffect | m1871_2 | +| ir.cpp:1872:11:1872:33 | CallTarget | func:r1872_2 | +| ir.cpp:1872:11:1872:33 | ChiPartial | partial:m1872_5 | +| ir.cpp:1872:11:1872:33 | ChiTotal | total:m1870_4 | +| ir.cpp:1872:11:1872:33 | SideEffect | ~m1870_4 | +| ir.cpp:1872:35:1872:41 | Address | &:r1872_3 | +| ir.cpp:1872:35:1872:41 | Address | &:r1872_3 | +| ir.cpp:1872:35:1872:41 | Arg(0) | 0:r1872_3 | +| ir.cpp:1872:35:1872:41 | ChiPartial | partial:m1872_11 | +| ir.cpp:1872:35:1872:41 | ChiTotal | total:m1872_6 | +| ir.cpp:1872:35:1872:41 | SideEffect | ~m1872_6 | +| ir.cpp:1877:13:1877:13 | Address | &:r1877_5 | +| ir.cpp:1877:13:1877:13 | Address | &:r1877_5 | +| ir.cpp:1877:13:1877:13 | Address | &:r1877_7 | +| ir.cpp:1877:13:1877:13 | Address | &:r1877_7 | +| ir.cpp:1877:13:1877:13 | Address | &:r1877_10 | +| ir.cpp:1877:13:1877:13 | ChiPartial | partial:m1877_3 | +| ir.cpp:1877:13:1877:13 | ChiTotal | total:m1877_2 | +| ir.cpp:1877:13:1877:13 | Load | m1877_6 | +| ir.cpp:1877:13:1877:13 | Load | m1881_9 | +| ir.cpp:1877:13:1877:13 | SideEffect | m1877_3 | +| ir.cpp:1877:13:1877:13 | SideEffect | m1877_8 | +| ir.cpp:1878:13:1878:29 | Address | &:r1878_1 | +| ir.cpp:1878:13:1878:29 | Address | &:r1878_3 | +| ir.cpp:1879:13:1879:14 | Address | &:r1879_4 | +| ir.cpp:1879:13:1879:19 | ChiPartial | partial:m1879_5 | +| ir.cpp:1879:13:1879:19 | ChiTotal | total:m1878_2 | +| ir.cpp:1879:14:1879:14 | Unary | r1879_2 | +| ir.cpp:1879:14:1879:14 | Unary | r1879_3 | +| ir.cpp:1879:18:1879:19 | StoreValue | r1879_1 | +| ir.cpp:1880:13:1880:14 | Address | &:r1880_4 | +| ir.cpp:1880:13:1880:19 | ChiPartial | partial:m1880_5 | +| ir.cpp:1880:13:1880:19 | ChiTotal | total:m1878_4 | +| ir.cpp:1880:14:1880:14 | Unary | r1880_2 | +| ir.cpp:1880:14:1880:14 | Unary | r1880_3 | +| ir.cpp:1880:18:1880:19 | StoreValue | r1880_1 | +| ir.cpp:1881:13:1881:27 | Address | &:r1881_1 | +| ir.cpp:1881:20:1881:21 | Left | r1881_4 | +| ir.cpp:1881:20:1881:21 | Load | m1879_5 | +| ir.cpp:1881:20:1881:26 | StoreValue | r1881_8 | +| ir.cpp:1881:21:1881:21 | Address | &:r1881_3 | +| ir.cpp:1881:21:1881:21 | Unary | r1881_2 | +| ir.cpp:1881:25:1881:26 | Load | m1880_5 | +| ir.cpp:1881:25:1881:26 | Right | r1881_7 | +| ir.cpp:1881:26:1881:26 | Address | &:r1881_6 | +| ir.cpp:1881:26:1881:26 | Unary | r1881_5 | +| ir.cpp:1885:10:1885:14 | ChiPartial | partial:m1885_3 | +| ir.cpp:1885:10:1885:14 | ChiTotal | total:m1885_2 | +| ir.cpp:1885:10:1885:14 | SideEffect | ~m1887_5 | +| ir.cpp:1886:19:1886:19 | Address | &:r1886_1 | +| ir.cpp:1887:9:1887:9 | Address | &:r1887_1 | +| ir.cpp:1887:9:1887:9 | Address | &:r1887_1 | +| ir.cpp:1887:9:1887:9 | Arg(this) | this:r1887_1 | +| ir.cpp:1887:9:1887:9 | ChiPartial | partial:m1887_7 | +| ir.cpp:1887:9:1887:9 | ChiTotal | total:m1886_2 | +| ir.cpp:1887:9:1887:9 | SideEffect | m1886_2 | +| ir.cpp:1887:11:1887:50 | CallTarget | func:r1887_2 | +| ir.cpp:1887:11:1887:50 | ChiPartial | partial:m1887_4 | +| ir.cpp:1887:11:1887:50 | ChiTotal | total:m1885_4 | +| ir.cpp:1887:11:1887:50 | SideEffect | ~m1885_4 | +| ir.cpp:1891:24:1891:24 | Address | &:r1891_3 | +| ir.cpp:1891:24:1891:24 | Address | &:r1891_3 | +| ir.cpp:1891:24:1891:24 | SideEffect | ~m1891_6 | +| ir.cpp:1891:24:1891:24 | SideEffect | ~m1891_6 | +| ir.cpp:1891:42:1891:43 | ChiPartial | partial:m1891_5 | +| ir.cpp:1891:42:1891:43 | ChiPartial | partial:m1891_5 | +| ir.cpp:1891:42:1891:43 | ChiTotal | total:m1891_2 | +| ir.cpp:1891:42:1891:43 | ChiTotal | total:m1891_2 | +| ir.cpp:1891:42:1891:43 | StoreValue | r1891_4 | +| ir.cpp:1891:42:1891:43 | StoreValue | r1891_4 | +| ir.cpp:1893:5:1893:28 | Address | &:r1893_5 | +| ir.cpp:1893:5:1893:28 | ChiPartial | partial:m1893_3 | +| ir.cpp:1893:5:1893:28 | ChiTotal | total:m1893_2 | +| ir.cpp:1893:5:1893:28 | Load | m1896_8 | +| ir.cpp:1893:5:1893:28 | SideEffect | m1893_3 | +| ir.cpp:1894:9:1894:17 | Address | &:r1894_1 | +| ir.cpp:1894:21:1894:40 | Address | &:r1894_2 | +| ir.cpp:1894:21:1894:40 | Load | ~m1893_3 | +| ir.cpp:1894:21:1894:40 | StoreValue | r1894_3 | +| ir.cpp:1895:10:1895:19 | Address | &:r1895_1 | +| ir.cpp:1895:23:1895:43 | Address | &:r1895_2 | +| ir.cpp:1895:23:1895:43 | Load | ~m1893_3 | +| ir.cpp:1895:23:1895:43 | StoreValue | r1895_3 | +| ir.cpp:1896:5:1896:39 | Address | &:r1896_1 | +| ir.cpp:1896:12:1896:20 | Address | &:r1896_2 | +| ir.cpp:1896:12:1896:20 | Left | r1896_3 | +| ir.cpp:1896:12:1896:20 | Load | m1894_4 | +| ir.cpp:1896:12:1896:38 | StoreValue | r1896_7 | +| ir.cpp:1896:24:1896:38 | Right | r1896_6 | +| ir.cpp:1896:29:1896:38 | Address | &:r1896_4 | +| ir.cpp:1896:29:1896:38 | Load | m1895_4 | +| ir.cpp:1896:29:1896:38 | Unary | r1896_5 | +| ir.cpp:1901:5:1901:16 | Address | &:r1901_7 | +| ir.cpp:1901:5:1901:16 | ChiPartial | partial:m1901_3 | +| ir.cpp:1901:5:1901:16 | ChiTotal | total:m1901_2 | +| ir.cpp:1901:5:1901:16 | Load | m1903_4 | +| ir.cpp:1901:5:1901:16 | SideEffect | m1901_3 | +| ir.cpp:1901:22:1901:22 | Address | &:r1901_5 | +| ir.cpp:1902:9:1902:9 | Address | &:r1902_1 | +| ir.cpp:1902:9:1902:9 | Left | r1902_2 | +| ir.cpp:1902:9:1902:9 | Load | m1901_6 | +| ir.cpp:1902:9:1902:14 | Condition | r1902_4 | +| ir.cpp:1902:13:1902:14 | Right | r1902_3 | +| ir.cpp:1903:9:1903:17 | Address | &:r1903_1 | +| ir.cpp:1903:16:1903:16 | Address | &:r1903_2 | +| ir.cpp:1903:16:1903:16 | Load | m1901_6 | +| ir.cpp:1903:16:1903:16 | StoreValue | r1903_3 | +| ir.cpp:1905:9:1905:20 | CallTarget | func:r1905_1 | +| ir.cpp:1905:9:1905:20 | ChiPartial | partial:m1905_3 | +| ir.cpp:1905:9:1905:20 | ChiTotal | total:m1901_4 | +| ir.cpp:1905:9:1905:20 | SideEffect | ~m1901_4 | +| ir.cpp:1909:5:1909:17 | Address | &:r1909_8 | +| ir.cpp:1909:5:1909:17 | ChiPartial | partial:m1909_3 | +| ir.cpp:1909:5:1909:17 | ChiTotal | total:m1909_2 | +| ir.cpp:1909:5:1909:17 | Load | m1913_4 | +| ir.cpp:1909:5:1909:17 | SideEffect | m1909_3 | +| ir.cpp:1909:23:1909:23 | Address | &:r1909_5 | +| ir.cpp:1910:9:1910:9 | Address | &:r1910_1 | +| ir.cpp:1910:9:1910:9 | Left | r1910_2 | +| ir.cpp:1910:9:1910:9 | Load | m1909_6 | +| ir.cpp:1910:9:1910:14 | Condition | r1910_4 | +| ir.cpp:1910:13:1910:14 | Right | r1910_3 | +| ir.cpp:1911:9:1911:20 | CallTarget | func:r1911_1 | +| ir.cpp:1911:9:1911:20 | ChiPartial | partial:m1911_3 | +| ir.cpp:1911:9:1911:20 | ChiTotal | total:m1909_4 | +| ir.cpp:1911:9:1911:20 | SideEffect | ~m1909_4 | +| ir.cpp:1913:5:1913:13 | Address | &:r1913_1 | +| ir.cpp:1913:12:1913:12 | Address | &:r1913_2 | +| ir.cpp:1913:12:1913:12 | Load | m1909_6 | +| ir.cpp:1913:12:1913:12 | StoreValue | r1913_3 | +| ir.cpp:1916:5:1916:19 | Address | &:r1916_7 | +| ir.cpp:1916:5:1916:19 | ChiPartial | partial:m1916_3 | +| ir.cpp:1916:5:1916:19 | ChiTotal | total:m1916_2 | +| ir.cpp:1916:5:1916:19 | Load | m1917_4 | +| ir.cpp:1916:5:1916:19 | SideEffect | m1916_3 | +| ir.cpp:1916:25:1916:25 | Address | &:r1916_5 | +| ir.cpp:1917:5:1917:13 | Address | &:r1917_1 | +| ir.cpp:1917:12:1917:12 | Address | &:r1917_2 | +| ir.cpp:1917:12:1917:12 | Load | m1916_6 | +| ir.cpp:1917:12:1917:12 | StoreValue | r1917_3 | +| ir.cpp:1920:6:1920:43 | ChiPartial | partial:m1920_3 | +| ir.cpp:1920:6:1920:43 | ChiTotal | total:m1920_2 | +| ir.cpp:1920:6:1920:43 | SideEffect | ~m1927_5 | +| ir.cpp:1921:7:1921:7 | Address | &:r1921_1 | +| ir.cpp:1921:7:1921:7 | Address | &:r1921_1 | +| ir.cpp:1921:7:1921:7 | Arg(this) | this:r1921_1 | +| ir.cpp:1921:7:1921:7 | CallTarget | func:r1921_3 | +| ir.cpp:1921:7:1921:7 | ChiPartial | partial:m1921_5 | +| ir.cpp:1921:7:1921:7 | ChiPartial | partial:m1921_7 | +| ir.cpp:1921:7:1921:7 | ChiTotal | total:m1920_4 | +| ir.cpp:1921:7:1921:7 | ChiTotal | total:m1921_2 | +| ir.cpp:1921:7:1921:7 | SideEffect | ~m1920_4 | | ir.cpp:1922:9:1922:9 | Address | &:r1922_1 | -| ir.cpp:1923:5:1923:5 | Address | &:r1923_6 | -| ir.cpp:1923:9:1923:31 | CallTarget | func:r1923_1 | -| ir.cpp:1923:9:1923:31 | ChiPartial | partial:m1923_4 | -| ir.cpp:1923:9:1923:31 | ChiTotal | total:m1921_6 | -| ir.cpp:1923:9:1923:31 | SideEffect | ~m1921_6 | -| ir.cpp:1923:9:1923:31 | StoreValue | r1923_3 | -| ir.cpp:1923:33:1923:34 | Arg(0) | 0:r1923_2 | +| ir.cpp:1923:5:1923:5 | Address | &:r1923_7 | +| ir.cpp:1923:11:1923:30 | CallTarget | func:r1923_2 | +| ir.cpp:1923:11:1923:30 | ChiPartial | partial:m1923_5 | +| ir.cpp:1923:11:1923:30 | ChiTotal | total:m1921_6 | +| ir.cpp:1923:11:1923:30 | SideEffect | ~m1921_6 | +| ir.cpp:1923:11:1923:30 | StoreValue | r1923_4 | +| ir.cpp:1923:32:1923:33 | Arg(0) | 0:r1923_3 | | ir.cpp:1924:9:1924:9 | Address | &:r1924_1 | | ir.cpp:1925:5:1925:5 | Address | &:r1925_6 | -| ir.cpp:1925:9:1925:23 | CallTarget | func:r1925_1 | -| ir.cpp:1925:9:1925:23 | ChiPartial | partial:m1925_4 | -| ir.cpp:1925:9:1925:23 | ChiTotal | total:m1923_5 | -| ir.cpp:1925:9:1925:23 | SideEffect | ~m1923_5 | -| ir.cpp:1925:9:1925:23 | StoreValue | r1925_3 | -| ir.cpp:1925:25:1925:26 | Arg(0) | 0:r1925_2 | -| ir.cpp:1928:6:1928:23 | ChiPartial | partial:m1928_3 | -| ir.cpp:1928:6:1928:23 | ChiTotal | total:m1928_2 | -| ir.cpp:1928:6:1928:23 | SideEffect | m1928_3 | -| ir.cpp:1929:7:1929:7 | Address | &:r1929_1 | -| ir.cpp:1929:10:1929:10 | Address | &:r1929_3 | -| ir.cpp:1930:3:1930:3 | Address | &:r1930_5 | -| ir.cpp:1930:7:1930:7 | Address | &:r1930_2 | -| ir.cpp:1930:7:1930:7 | Address | &:r1930_2 | -| ir.cpp:1930:7:1930:12 | Load | m1930_3 | -| ir.cpp:1930:7:1930:12 | StoreValue | r1930_4 | -| ir.cpp:1930:11:1930:12 | StoreValue | r1930_1 | -| ir.cpp:1933:6:1933:38 | ChiPartial | partial:m1933_3 | -| ir.cpp:1933:6:1933:38 | ChiTotal | total:m1933_2 | -| ir.cpp:1933:6:1933:38 | SideEffect | m1933_3 | -| ir.cpp:1934:7:1934:7 | Address | &:r1934_1 | -| ir.cpp:1934:10:1934:10 | Address | &:r1934_3 | -| ir.cpp:1934:13:1934:14 | StoreValue | r1934_4 | -| ir.cpp:1935:3:1935:3 | Address | &:r1935_7 | -| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | -| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | -| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | -| ir.cpp:1935:8:1935:8 | Left | r1935_3 | -| ir.cpp:1935:8:1935:8 | Load | m1934_5 | -| ir.cpp:1935:8:1935:14 | Load | m1935_5 | -| ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 | -| ir.cpp:1935:8:1935:14 | StoreValue | r1935_6 | -| ir.cpp:1935:13:1935:14 | Right | r1935_1 | -| ir.cpp:1942:15:1942:43 | Address | &:r1942_5 | -| ir.cpp:1942:15:1942:43 | ChiPartial | partial:m1942_3 | -| ir.cpp:1942:15:1942:43 | ChiTotal | total:m1942_2 | -| ir.cpp:1942:15:1942:43 | Load | m1943_4 | -| ir.cpp:1942:15:1942:43 | SideEffect | m1942_3 | -| ir.cpp:1943:9:1943:17 | Address | &:r1943_1 | -| ir.cpp:1943:16:1943:16 | StoreValue | r1943_3 | -| ir.cpp:1943:16:1943:16 | Unary | r1943_2 | -| ir.cpp:1945:14:1945:39 | Address | &:r1945_5 | -| ir.cpp:1945:14:1945:39 | ChiPartial | partial:m1945_3 | -| ir.cpp:1945:14:1945:39 | ChiTotal | total:m1945_2 | -| ir.cpp:1945:14:1945:39 | Load | m1946_4 | -| ir.cpp:1945:14:1945:39 | SideEffect | m1945_3 | -| ir.cpp:1946:9:1946:17 | Address | &:r1946_1 | -| ir.cpp:1946:16:1946:16 | Address | &:r1946_2 | -| ir.cpp:1946:16:1946:16 | Load | ~m1945_3 | -| ir.cpp:1946:16:1946:16 | StoreValue | r1946_3 | -| ir.cpp:1950:6:1950:55 | ChiPartial | partial:m1950_3 | -| ir.cpp:1950:6:1950:55 | ChiTotal | total:m1950_2 | -| ir.cpp:1950:6:1950:55 | SideEffect | ~m1965_4 | -| ir.cpp:1951:7:1951:7 | Address | &:r1951_1 | -| ir.cpp:1953:7:1953:35 | CallTarget | func:r1953_2 | -| ir.cpp:1953:7:1953:35 | ChiPartial | partial:m1953_4 | -| ir.cpp:1953:7:1953:35 | ChiTotal | total:m1950_4 | -| ir.cpp:1953:7:1953:35 | SideEffect | ~m1950_4 | -| ir.cpp:1953:7:1953:35 | Unary | r1953_3 | -| ir.cpp:1954:5:1954:36 | CallTarget | func:r1954_1 | -| ir.cpp:1954:5:1954:36 | ChiPartial | partial:m1954_3 | -| ir.cpp:1954:5:1954:36 | ChiTotal | total:m1953_5 | -| ir.cpp:1954:5:1954:36 | SideEffect | ~m1953_5 | -| ir.cpp:1954:5:1954:36 | Unary | r1954_2 | -| ir.cpp:1955:7:1955:32 | CallTarget | func:r1955_2 | -| ir.cpp:1955:7:1955:32 | ChiPartial | partial:m1955_4 | -| ir.cpp:1955:7:1955:32 | ChiTotal | total:m1954_4 | -| ir.cpp:1955:7:1955:32 | SideEffect | ~m1954_4 | -| ir.cpp:1956:5:1956:33 | CallTarget | func:r1956_1 | -| ir.cpp:1956:5:1956:33 | ChiPartial | partial:m1956_3 | -| ir.cpp:1956:5:1956:33 | ChiTotal | total:m1955_5 | -| ir.cpp:1956:5:1956:33 | SideEffect | ~m1955_5 | -| ir.cpp:1958:7:1958:7 | Address | &:r1958_1 | -| ir.cpp:1959:5:1959:5 | Address | &:r1959_7 | -| ir.cpp:1959:11:1959:39 | Address | &:r1959_3 | -| ir.cpp:1959:11:1959:39 | CallTarget | func:r1959_2 | -| ir.cpp:1959:11:1959:39 | ChiPartial | partial:m1959_4 | -| ir.cpp:1959:11:1959:39 | ChiTotal | total:m1956_4 | -| ir.cpp:1959:11:1959:39 | SideEffect | ~m1956_4 | -| ir.cpp:1959:40:1959:42 | Load | ~m1959_5 | -| ir.cpp:1959:40:1959:42 | StoreValue | r1959_6 | +| ir.cpp:1925:9:1925:31 | CallTarget | func:r1925_1 | +| ir.cpp:1925:9:1925:31 | ChiPartial | partial:m1925_4 | +| ir.cpp:1925:9:1925:31 | ChiTotal | total:m1923_6 | +| ir.cpp:1925:9:1925:31 | SideEffect | ~m1923_6 | +| ir.cpp:1925:9:1925:31 | StoreValue | r1925_3 | +| ir.cpp:1925:33:1925:34 | Arg(0) | 0:r1925_2 | +| ir.cpp:1926:9:1926:9 | Address | &:r1926_1 | +| ir.cpp:1927:5:1927:5 | Address | &:r1927_6 | +| ir.cpp:1927:9:1927:23 | CallTarget | func:r1927_1 | +| ir.cpp:1927:9:1927:23 | ChiPartial | partial:m1927_4 | +| ir.cpp:1927:9:1927:23 | ChiTotal | total:m1925_5 | +| ir.cpp:1927:9:1927:23 | SideEffect | ~m1925_5 | +| ir.cpp:1927:9:1927:23 | StoreValue | r1927_3 | +| ir.cpp:1927:25:1927:26 | Arg(0) | 0:r1927_2 | +| ir.cpp:1930:6:1930:23 | ChiPartial | partial:m1930_3 | +| ir.cpp:1930:6:1930:23 | ChiTotal | total:m1930_2 | +| ir.cpp:1930:6:1930:23 | SideEffect | m1930_3 | +| ir.cpp:1931:7:1931:7 | Address | &:r1931_1 | +| ir.cpp:1931:10:1931:10 | Address | &:r1931_3 | +| ir.cpp:1932:3:1932:3 | Address | &:r1932_5 | +| ir.cpp:1932:7:1932:7 | Address | &:r1932_2 | +| ir.cpp:1932:7:1932:7 | Address | &:r1932_2 | +| ir.cpp:1932:7:1932:12 | Load | m1932_3 | +| ir.cpp:1932:7:1932:12 | StoreValue | r1932_4 | +| ir.cpp:1932:11:1932:12 | StoreValue | r1932_1 | +| ir.cpp:1935:6:1935:38 | ChiPartial | partial:m1935_3 | +| ir.cpp:1935:6:1935:38 | ChiTotal | total:m1935_2 | +| ir.cpp:1935:6:1935:38 | SideEffect | m1935_3 | +| ir.cpp:1936:7:1936:7 | Address | &:r1936_1 | +| ir.cpp:1936:10:1936:10 | Address | &:r1936_3 | +| ir.cpp:1936:13:1936:14 | StoreValue | r1936_4 | +| ir.cpp:1937:3:1937:3 | Address | &:r1937_7 | +| ir.cpp:1937:8:1937:8 | Address | &:r1937_2 | +| ir.cpp:1937:8:1937:8 | Address | &:r1937_2 | +| ir.cpp:1937:8:1937:8 | Address | &:r1937_2 | +| ir.cpp:1937:8:1937:8 | Left | r1937_3 | +| ir.cpp:1937:8:1937:8 | Load | m1936_5 | +| ir.cpp:1937:8:1937:14 | Load | m1937_5 | +| ir.cpp:1937:8:1937:14 | StoreValue | r1937_4 | +| ir.cpp:1937:8:1937:14 | StoreValue | r1937_6 | +| ir.cpp:1937:13:1937:14 | Right | r1937_1 | +| ir.cpp:1944:15:1944:43 | Address | &:r1944_5 | +| ir.cpp:1944:15:1944:43 | ChiPartial | partial:m1944_3 | +| ir.cpp:1944:15:1944:43 | ChiTotal | total:m1944_2 | +| ir.cpp:1944:15:1944:43 | Load | m1945_4 | +| ir.cpp:1944:15:1944:43 | SideEffect | m1944_3 | +| ir.cpp:1945:9:1945:17 | Address | &:r1945_1 | +| ir.cpp:1945:16:1945:16 | StoreValue | r1945_3 | +| ir.cpp:1945:16:1945:16 | Unary | r1945_2 | +| ir.cpp:1947:14:1947:39 | Address | &:r1947_5 | +| ir.cpp:1947:14:1947:39 | ChiPartial | partial:m1947_3 | +| ir.cpp:1947:14:1947:39 | ChiTotal | total:m1947_2 | +| ir.cpp:1947:14:1947:39 | Load | m1948_4 | +| ir.cpp:1947:14:1947:39 | SideEffect | m1947_3 | +| ir.cpp:1948:9:1948:17 | Address | &:r1948_1 | +| ir.cpp:1948:16:1948:16 | Address | &:r1948_2 | +| ir.cpp:1948:16:1948:16 | Load | ~m1947_3 | +| ir.cpp:1948:16:1948:16 | StoreValue | r1948_3 | +| ir.cpp:1952:6:1952:55 | ChiPartial | partial:m1952_3 | +| ir.cpp:1952:6:1952:55 | ChiTotal | total:m1952_2 | +| ir.cpp:1952:6:1952:55 | SideEffect | ~m1967_4 | +| ir.cpp:1953:7:1953:7 | Address | &:r1953_1 | +| ir.cpp:1955:7:1955:35 | CallTarget | func:r1955_2 | +| ir.cpp:1955:7:1955:35 | ChiPartial | partial:m1955_4 | +| ir.cpp:1955:7:1955:35 | ChiTotal | total:m1952_4 | +| ir.cpp:1955:7:1955:35 | SideEffect | ~m1952_4 | +| ir.cpp:1955:7:1955:35 | Unary | r1955_3 | +| ir.cpp:1956:5:1956:36 | CallTarget | func:r1956_1 | +| ir.cpp:1956:5:1956:36 | ChiPartial | partial:m1956_3 | +| ir.cpp:1956:5:1956:36 | ChiTotal | total:m1955_5 | +| ir.cpp:1956:5:1956:36 | SideEffect | ~m1955_5 | +| ir.cpp:1956:5:1956:36 | Unary | r1956_2 | +| ir.cpp:1957:7:1957:32 | CallTarget | func:r1957_2 | +| ir.cpp:1957:7:1957:32 | ChiPartial | partial:m1957_4 | +| ir.cpp:1957:7:1957:32 | ChiTotal | total:m1956_4 | +| ir.cpp:1957:7:1957:32 | SideEffect | ~m1956_4 | +| ir.cpp:1958:5:1958:33 | CallTarget | func:r1958_1 | +| ir.cpp:1958:5:1958:33 | ChiPartial | partial:m1958_3 | +| ir.cpp:1958:5:1958:33 | ChiTotal | total:m1957_5 | +| ir.cpp:1958:5:1958:33 | SideEffect | ~m1957_5 | | ir.cpp:1960:7:1960:7 | Address | &:r1960_1 | -| ir.cpp:1961:5:1961:5 | Address | &:r1961_6 | -| ir.cpp:1961:9:1961:40 | Address | &:r1961_2 | -| ir.cpp:1961:9:1961:40 | CallTarget | func:r1961_1 | -| ir.cpp:1961:9:1961:40 | ChiPartial | partial:m1961_3 | -| ir.cpp:1961:9:1961:40 | ChiTotal | total:m1959_5 | -| ir.cpp:1961:9:1961:40 | SideEffect | ~m1959_5 | -| ir.cpp:1961:41:1961:43 | Load | ~m1961_4 | -| ir.cpp:1961:41:1961:43 | StoreValue | r1961_5 | +| ir.cpp:1961:5:1961:5 | Address | &:r1961_7 | +| ir.cpp:1961:11:1961:39 | Address | &:r1961_3 | +| ir.cpp:1961:11:1961:39 | CallTarget | func:r1961_2 | +| ir.cpp:1961:11:1961:39 | ChiPartial | partial:m1961_4 | +| ir.cpp:1961:11:1961:39 | ChiTotal | total:m1958_4 | +| ir.cpp:1961:11:1961:39 | SideEffect | ~m1958_4 | +| ir.cpp:1961:40:1961:42 | Load | ~m1961_5 | +| ir.cpp:1961:40:1961:42 | StoreValue | r1961_6 | | ir.cpp:1962:7:1962:7 | Address | &:r1962_1 | | ir.cpp:1963:5:1963:5 | Address | &:r1963_6 | -| ir.cpp:1963:11:1963:36 | CallTarget | func:r1963_2 | -| ir.cpp:1963:11:1963:36 | ChiPartial | partial:m1963_4 | -| ir.cpp:1963:11:1963:36 | ChiTotal | total:m1961_4 | -| ir.cpp:1963:11:1963:36 | SideEffect | ~m1961_4 | -| ir.cpp:1963:11:1963:36 | StoreValue | r1963_3 | +| ir.cpp:1963:9:1963:40 | Address | &:r1963_2 | +| ir.cpp:1963:9:1963:40 | CallTarget | func:r1963_1 | +| ir.cpp:1963:9:1963:40 | ChiPartial | partial:m1963_3 | +| ir.cpp:1963:9:1963:40 | ChiTotal | total:m1961_5 | +| ir.cpp:1963:9:1963:40 | SideEffect | ~m1961_5 | +| ir.cpp:1963:41:1963:43 | Load | ~m1963_4 | +| ir.cpp:1963:41:1963:43 | StoreValue | r1963_5 | | ir.cpp:1964:7:1964:7 | Address | &:r1964_1 | -| ir.cpp:1965:5:1965:5 | Address | &:r1965_5 | -| ir.cpp:1965:9:1965:37 | CallTarget | func:r1965_1 | -| ir.cpp:1965:9:1965:37 | ChiPartial | partial:m1965_3 | -| ir.cpp:1965:9:1965:37 | ChiTotal | total:m1963_5 | -| ir.cpp:1965:9:1965:37 | SideEffect | ~m1963_5 | -| ir.cpp:1965:9:1965:37 | StoreValue | r1965_2 | -| ir.cpp:1968:6:1968:18 | ChiPartial | partial:m1968_3 | -| ir.cpp:1968:6:1968:18 | ChiTotal | total:m1968_2 | -| ir.cpp:1968:6:1968:18 | SideEffect | m1968_3 | -| ir.cpp:1969:18:1969:18 | Address | &:r1969_1 | -| ir.cpp:1970:5:1970:5 | Address | &:r1970_1 | -| ir.cpp:1970:5:1970:5 | Load | m1969_2 | -| ir.cpp:1979:6:1979:24 | ChiPartial | partial:m1979_3 | -| ir.cpp:1979:6:1979:24 | ChiTotal | total:m1979_2 | -| ir.cpp:1979:6:1979:24 | SideEffect | ~m1987_5 | -| ir.cpp:1980:12:1980:12 | Address | &:r1980_1 | -| ir.cpp:1982:5:1982:19 | ChiPartial | partial:m1982_7 | -| ir.cpp:1982:5:1982:19 | ChiTotal | total:m1982_5 | -| ir.cpp:1982:7:1982:12 | CallTarget | func:r1982_2 | -| ir.cpp:1982:7:1982:12 | ChiPartial | partial:m1982_4 | -| ir.cpp:1982:7:1982:12 | ChiTotal | total:m1979_4 | -| ir.cpp:1982:7:1982:12 | SideEffect | ~m1979_4 | -| ir.cpp:1982:7:1982:12 | Unary | r1982_3 | -| ir.cpp:1982:13:1982:16 | Address | &:r1982_6 | -| ir.cpp:1983:5:1983:19 | ChiPartial | partial:m1983_7 | -| ir.cpp:1983:5:1983:19 | ChiTotal | total:m1983_5 | -| ir.cpp:1983:7:1983:12 | CallTarget | func:r1983_2 | -| ir.cpp:1983:7:1983:12 | ChiPartial | partial:m1983_4 | -| ir.cpp:1983:7:1983:12 | ChiTotal | total:m1982_8 | -| ir.cpp:1983:7:1983:12 | SideEffect | ~m1982_8 | -| ir.cpp:1983:7:1983:12 | Unary | r1983_3 | -| ir.cpp:1983:13:1983:16 | Address | &:r1983_6 | -| ir.cpp:1984:5:1984:15 | Address | &:r1984_1 | -| ir.cpp:1984:5:1984:15 | Address | &:r1984_1 | -| ir.cpp:1984:7:1984:13 | CallTarget | func:r1984_3 | -| ir.cpp:1984:7:1984:13 | ChiPartial | partial:m1984_5 | -| ir.cpp:1984:7:1984:13 | ChiTotal | total:m1983_8 | -| ir.cpp:1984:7:1984:13 | SideEffect | ~m1983_8 | -| ir.cpp:1984:7:1984:13 | StoreValue | r1984_4 | -| ir.cpp:1985:5:1985:18 | CallTarget | func:r1985_1 | -| ir.cpp:1985:5:1985:18 | ChiPartial | partial:m1985_3 | -| ir.cpp:1985:5:1985:18 | ChiTotal | total:m1984_6 | -| ir.cpp:1985:5:1985:18 | SideEffect | ~m1984_6 | -| ir.cpp:1985:5:1985:18 | Unary | r1985_2 | -| ir.cpp:1985:5:1985:25 | ChiPartial | partial:m1985_6 | -| ir.cpp:1985:5:1985:25 | ChiTotal | total:m1985_4 | -| ir.cpp:1985:19:1985:22 | Address | &:r1985_5 | -| ir.cpp:1986:5:1986:18 | CallTarget | func:r1986_1 | -| ir.cpp:1986:5:1986:18 | ChiPartial | partial:m1986_3 | -| ir.cpp:1986:5:1986:18 | ChiTotal | total:m1985_7 | -| ir.cpp:1986:5:1986:18 | SideEffect | ~m1985_7 | -| ir.cpp:1986:5:1986:18 | Unary | r1986_2 | -| ir.cpp:1986:5:1986:25 | ChiPartial | partial:m1986_6 | -| ir.cpp:1986:5:1986:25 | ChiTotal | total:m1986_4 | -| ir.cpp:1986:19:1986:22 | Address | &:r1986_5 | -| ir.cpp:1987:5:1987:19 | CallTarget | func:r1987_2 | -| ir.cpp:1987:5:1987:19 | ChiPartial | partial:m1987_4 | -| ir.cpp:1987:5:1987:19 | ChiTotal | total:m1986_7 | -| ir.cpp:1987:5:1987:19 | SideEffect | ~m1986_7 | -| ir.cpp:1987:5:1987:19 | StoreValue | r1987_3 | -| ir.cpp:1987:5:1987:21 | Address | &:r1987_1 | -| ir.cpp:1987:5:1987:21 | Address | &:r1987_1 | -| ir.cpp:1990:6:1990:21 | ChiPartial | partial:m1990_3 | -| ir.cpp:1990:6:1990:21 | ChiTotal | total:m1990_2 | -| ir.cpp:1990:6:1990:21 | SideEffect | ~m1991_6 | -| ir.cpp:1991:7:1991:7 | Address | &:r1991_1 | -| ir.cpp:1991:7:1991:7 | Address | &:r1991_1 | -| ir.cpp:1991:7:1991:7 | Arg(this) | this:r1991_1 | -| ir.cpp:1991:7:1991:7 | CallTarget | func:r1991_3 | -| ir.cpp:1991:7:1991:7 | ChiPartial | partial:m1991_5 | -| ir.cpp:1991:7:1991:7 | ChiPartial | partial:m1991_7 | -| ir.cpp:1991:7:1991:7 | ChiTotal | total:m1990_4 | -| ir.cpp:1991:7:1991:7 | ChiTotal | total:m1991_2 | -| ir.cpp:1991:7:1991:7 | SideEffect | ~m1990_4 | -| ir.cpp:1992:11:1992:13 | Address | &:r1992_1 | -| ir.cpp:1992:23:1992:45 | StoreValue | r1992_2 | -| ir.cpp:1993:5:1993:7 | Address | &:r1993_3 | -| ir.cpp:1993:13:1993:32 | StoreValue | r1993_2 | -| ir.cpp:1996:6:1996:19 | ChiPartial | partial:m1996_3 | -| ir.cpp:1996:6:1996:19 | ChiTotal | total:m1996_2 | -| ir.cpp:1996:6:1996:19 | SideEffect | ~m2000_9 | -| ir.cpp:1996:26:1996:26 | Address | &:r1996_5 | -| ir.cpp:1996:33:1996:33 | Address | &:r1996_7 | -| ir.cpp:1996:40:1996:40 | Address | &:r1996_9 | -| ir.cpp:1996:47:1996:47 | Address | &:r1996_11 | -| ir.cpp:1997:5:1997:5 | Address | &:r1997_7 | -| ir.cpp:1997:9:1997:9 | Address | &:r1997_1 | -| ir.cpp:1997:9:1997:9 | Condition | r1997_2 | -| ir.cpp:1997:9:1997:9 | Load | m1996_6 | -| ir.cpp:1997:9:1997:17 | Address | &:r1997_5 | -| ir.cpp:1997:9:1997:17 | Address | &:r1997_11 | -| ir.cpp:1997:9:1997:17 | Address | &:r1997_15 | -| ir.cpp:1997:9:1997:17 | Load | m1997_4 | -| ir.cpp:1997:9:1997:17 | Phi | from 2:m1997_12 | -| ir.cpp:1997:9:1997:17 | Phi | from 3:m1997_16 | -| ir.cpp:1997:9:1997:17 | StoreValue | r1997_6 | -| ir.cpp:1997:13:1997:13 | Address | &:r1997_9 | -| ir.cpp:1997:13:1997:13 | Load | m1996_8 | -| ir.cpp:1997:13:1997:13 | StoreValue | r1997_10 | -| ir.cpp:1997:17:1997:17 | Address | &:r1997_13 | -| ir.cpp:1997:17:1997:17 | Load | m1996_10 | -| ir.cpp:1997:17:1997:17 | StoreValue | r1997_14 | -| ir.cpp:1998:5:1998:5 | Address | &:r1998_7 | -| ir.cpp:1998:9:1998:9 | Address | &:r1998_1 | -| ir.cpp:1998:9:1998:9 | Condition | r1998_2 | -| ir.cpp:1998:9:1998:9 | Load | m1996_6 | -| ir.cpp:1998:9:1998:17 | Address | &:r1998_5 | -| ir.cpp:1998:9:1998:17 | Address | &:r1998_11 | -| ir.cpp:1998:9:1998:17 | Address | &:r1998_14 | -| ir.cpp:1998:9:1998:17 | Load | m1998_4 | -| ir.cpp:1998:9:1998:17 | Phi | from 5:m1998_12 | -| ir.cpp:1998:9:1998:17 | Phi | from 6:m1998_15 | -| ir.cpp:1998:9:1998:17 | StoreValue | r1998_6 | -| ir.cpp:1998:13:1998:13 | Address | &:r1998_9 | -| ir.cpp:1998:13:1998:13 | Load | m1996_8 | -| ir.cpp:1998:13:1998:13 | StoreValue | r1998_10 | -| ir.cpp:1998:17:1998:17 | StoreValue | r1998_13 | +| ir.cpp:1965:5:1965:5 | Address | &:r1965_6 | +| ir.cpp:1965:11:1965:36 | CallTarget | func:r1965_2 | +| ir.cpp:1965:11:1965:36 | ChiPartial | partial:m1965_4 | +| ir.cpp:1965:11:1965:36 | ChiTotal | total:m1963_4 | +| ir.cpp:1965:11:1965:36 | SideEffect | ~m1963_4 | +| ir.cpp:1965:11:1965:36 | StoreValue | r1965_3 | +| ir.cpp:1966:7:1966:7 | Address | &:r1966_1 | +| ir.cpp:1967:5:1967:5 | Address | &:r1967_5 | +| ir.cpp:1967:9:1967:37 | CallTarget | func:r1967_1 | +| ir.cpp:1967:9:1967:37 | ChiPartial | partial:m1967_3 | +| ir.cpp:1967:9:1967:37 | ChiTotal | total:m1965_5 | +| ir.cpp:1967:9:1967:37 | SideEffect | ~m1965_5 | +| ir.cpp:1967:9:1967:37 | StoreValue | r1967_2 | +| ir.cpp:1970:6:1970:18 | ChiPartial | partial:m1970_3 | +| ir.cpp:1970:6:1970:18 | ChiTotal | total:m1970_2 | +| ir.cpp:1970:6:1970:18 | SideEffect | m1970_3 | +| ir.cpp:1971:18:1971:18 | Address | &:r1971_1 | +| ir.cpp:1972:5:1972:5 | Address | &:r1972_1 | +| ir.cpp:1972:5:1972:5 | Load | m1971_2 | +| ir.cpp:1981:6:1981:24 | ChiPartial | partial:m1981_3 | +| ir.cpp:1981:6:1981:24 | ChiTotal | total:m1981_2 | +| ir.cpp:1981:6:1981:24 | SideEffect | ~m1989_5 | +| ir.cpp:1982:12:1982:12 | Address | &:r1982_1 | +| ir.cpp:1984:5:1984:19 | ChiPartial | partial:m1984_7 | +| ir.cpp:1984:5:1984:19 | ChiTotal | total:m1984_5 | +| ir.cpp:1984:7:1984:12 | CallTarget | func:r1984_2 | +| ir.cpp:1984:7:1984:12 | ChiPartial | partial:m1984_4 | +| ir.cpp:1984:7:1984:12 | ChiTotal | total:m1981_4 | +| ir.cpp:1984:7:1984:12 | SideEffect | ~m1981_4 | +| ir.cpp:1984:7:1984:12 | Unary | r1984_3 | +| ir.cpp:1984:13:1984:16 | Address | &:r1984_6 | +| ir.cpp:1985:5:1985:19 | ChiPartial | partial:m1985_7 | +| ir.cpp:1985:5:1985:19 | ChiTotal | total:m1985_5 | +| ir.cpp:1985:7:1985:12 | CallTarget | func:r1985_2 | +| ir.cpp:1985:7:1985:12 | ChiPartial | partial:m1985_4 | +| ir.cpp:1985:7:1985:12 | ChiTotal | total:m1984_8 | +| ir.cpp:1985:7:1985:12 | SideEffect | ~m1984_8 | +| ir.cpp:1985:7:1985:12 | Unary | r1985_3 | +| ir.cpp:1985:13:1985:16 | Address | &:r1985_6 | +| ir.cpp:1986:5:1986:15 | Address | &:r1986_1 | +| ir.cpp:1986:5:1986:15 | Address | &:r1986_1 | +| ir.cpp:1986:7:1986:13 | CallTarget | func:r1986_3 | +| ir.cpp:1986:7:1986:13 | ChiPartial | partial:m1986_5 | +| ir.cpp:1986:7:1986:13 | ChiTotal | total:m1985_8 | +| ir.cpp:1986:7:1986:13 | SideEffect | ~m1985_8 | +| ir.cpp:1986:7:1986:13 | StoreValue | r1986_4 | +| ir.cpp:1987:5:1987:18 | CallTarget | func:r1987_1 | +| ir.cpp:1987:5:1987:18 | ChiPartial | partial:m1987_3 | +| ir.cpp:1987:5:1987:18 | ChiTotal | total:m1986_6 | +| ir.cpp:1987:5:1987:18 | SideEffect | ~m1986_6 | +| ir.cpp:1987:5:1987:18 | Unary | r1987_2 | +| ir.cpp:1987:5:1987:25 | ChiPartial | partial:m1987_6 | +| ir.cpp:1987:5:1987:25 | ChiTotal | total:m1987_4 | +| ir.cpp:1987:19:1987:22 | Address | &:r1987_5 | +| ir.cpp:1988:5:1988:18 | CallTarget | func:r1988_1 | +| ir.cpp:1988:5:1988:18 | ChiPartial | partial:m1988_3 | +| ir.cpp:1988:5:1988:18 | ChiTotal | total:m1987_7 | +| ir.cpp:1988:5:1988:18 | SideEffect | ~m1987_7 | +| ir.cpp:1988:5:1988:18 | Unary | r1988_2 | +| ir.cpp:1988:5:1988:25 | ChiPartial | partial:m1988_6 | +| ir.cpp:1988:5:1988:25 | ChiTotal | total:m1988_4 | +| ir.cpp:1988:19:1988:22 | Address | &:r1988_5 | +| ir.cpp:1989:5:1989:19 | CallTarget | func:r1989_2 | +| ir.cpp:1989:5:1989:19 | ChiPartial | partial:m1989_4 | +| ir.cpp:1989:5:1989:19 | ChiTotal | total:m1988_7 | +| ir.cpp:1989:5:1989:19 | SideEffect | ~m1988_7 | +| ir.cpp:1989:5:1989:19 | StoreValue | r1989_3 | +| ir.cpp:1989:5:1989:21 | Address | &:r1989_1 | +| ir.cpp:1989:5:1989:21 | Address | &:r1989_1 | +| ir.cpp:1992:6:1992:21 | ChiPartial | partial:m1992_3 | +| ir.cpp:1992:6:1992:21 | ChiTotal | total:m1992_2 | +| ir.cpp:1992:6:1992:21 | SideEffect | ~m1993_6 | +| ir.cpp:1993:7:1993:7 | Address | &:r1993_1 | +| ir.cpp:1993:7:1993:7 | Address | &:r1993_1 | +| ir.cpp:1993:7:1993:7 | Arg(this) | this:r1993_1 | +| ir.cpp:1993:7:1993:7 | CallTarget | func:r1993_3 | +| ir.cpp:1993:7:1993:7 | ChiPartial | partial:m1993_5 | +| ir.cpp:1993:7:1993:7 | ChiPartial | partial:m1993_7 | +| ir.cpp:1993:7:1993:7 | ChiTotal | total:m1992_4 | +| ir.cpp:1993:7:1993:7 | ChiTotal | total:m1993_2 | +| ir.cpp:1993:7:1993:7 | SideEffect | ~m1992_4 | +| ir.cpp:1994:11:1994:13 | Address | &:r1994_1 | +| ir.cpp:1994:23:1994:45 | StoreValue | r1994_2 | +| ir.cpp:1995:5:1995:7 | Address | &:r1995_3 | +| ir.cpp:1995:13:1995:32 | StoreValue | r1995_2 | +| ir.cpp:1998:6:1998:19 | ChiPartial | partial:m1998_3 | +| ir.cpp:1998:6:1998:19 | ChiTotal | total:m1998_2 | +| ir.cpp:1998:6:1998:19 | SideEffect | ~m2002_9 | +| ir.cpp:1998:26:1998:26 | Address | &:r1998_5 | +| ir.cpp:1998:33:1998:33 | Address | &:r1998_7 | +| ir.cpp:1998:40:1998:40 | Address | &:r1998_9 | +| ir.cpp:1998:47:1998:47 | Address | &:r1998_11 | | ir.cpp:1999:5:1999:5 | Address | &:r1999_7 | | ir.cpp:1999:9:1999:9 | Address | &:r1999_1 | | ir.cpp:1999:9:1999:9 | Condition | r1999_2 | -| ir.cpp:1999:9:1999:9 | Load | m1996_6 | +| ir.cpp:1999:9:1999:9 | Load | m1998_6 | | ir.cpp:1999:9:1999:17 | Address | &:r1999_5 | -| ir.cpp:1999:9:1999:17 | Address | &:r1999_10 | -| ir.cpp:1999:9:1999:17 | Address | &:r1999_13 | +| ir.cpp:1999:9:1999:17 | Address | &:r1999_11 | +| ir.cpp:1999:9:1999:17 | Address | &:r1999_15 | | ir.cpp:1999:9:1999:17 | Load | m1999_4 | -| ir.cpp:1999:9:1999:17 | Phi | from 8:m1999_11 | -| ir.cpp:1999:9:1999:17 | Phi | from 9:m1999_14 | +| ir.cpp:1999:9:1999:17 | Phi | from 2:m1999_12 | +| ir.cpp:1999:9:1999:17 | Phi | from 3:m1999_16 | | ir.cpp:1999:9:1999:17 | StoreValue | r1999_6 | -| ir.cpp:1999:13:1999:13 | StoreValue | r1999_9 | -| ir.cpp:1999:17:1999:17 | StoreValue | r1999_12 | -| ir.cpp:2000:5:2000:19 | ChiPartial | partial:m2000_8 | -| ir.cpp:2000:5:2000:19 | ChiTotal | total:m1996_4 | -| ir.cpp:2000:6:2000:6 | Address | &:r2000_2 | -| ir.cpp:2000:6:2000:6 | Condition | r2000_3 | -| ir.cpp:2000:6:2000:6 | Load | m1996_6 | -| ir.cpp:2000:6:2000:14 | Address | &:r2000_6 | -| ir.cpp:2000:6:2000:14 | Address | &:r2000_7 | -| ir.cpp:2000:6:2000:14 | Address | &:r2000_11 | -| ir.cpp:2000:6:2000:14 | Address | &:r2000_14 | -| ir.cpp:2000:6:2000:14 | Load | m2000_5 | -| ir.cpp:2000:6:2000:14 | Phi | from 11:m2000_12 | -| ir.cpp:2000:6:2000:14 | Phi | from 12:m2000_15 | -| ir.cpp:2000:10:2000:10 | StoreValue | r2000_10 | -| ir.cpp:2000:14:2000:14 | StoreValue | r2000_13 | -| ir.cpp:2000:19:2000:19 | StoreValue | r2000_1 | -| ir.cpp:2006:6:2006:22 | ChiPartial | partial:m2006_3 | -| ir.cpp:2006:6:2006:22 | ChiTotal | total:m2006_2 | -| ir.cpp:2006:6:2006:22 | SideEffect | m2006_3 | -| ir.cpp:2006:29:2006:29 | Address | &:r2006_5 | -| ir.cpp:2006:46:2006:46 | Address | &:r2006_7 | -| ir.cpp:2006:63:2006:63 | Address | &:r2006_9 | -| ir.cpp:2006:80:2006:80 | Address | &:r2006_11 | -| ir.cpp:2007:5:2007:5 | Address | &:r2007_7 | -| ir.cpp:2007:9:2007:9 | Address | &:r2007_1 | -| ir.cpp:2007:9:2007:9 | Condition | r2007_2 | -| ir.cpp:2007:9:2007:9 | Load | m2006_6 | -| ir.cpp:2007:9:2007:17 | Address | &:r2007_5 | -| ir.cpp:2007:9:2007:17 | Address | &:r2007_11 | -| ir.cpp:2007:9:2007:17 | Address | &:r2007_15 | -| ir.cpp:2007:9:2007:17 | Load | m2007_4 | -| ir.cpp:2007:9:2007:17 | Phi | from 2:m2007_12 | -| ir.cpp:2007:9:2007:17 | Phi | from 3:m2007_16 | -| ir.cpp:2007:9:2007:17 | StoreValue | r2007_6 | -| ir.cpp:2007:13:2007:13 | Address | &:r2007_9 | -| ir.cpp:2007:13:2007:13 | Load | m2006_8 | -| ir.cpp:2007:13:2007:13 | StoreValue | r2007_10 | -| ir.cpp:2007:17:2007:17 | Address | &:r2007_13 | -| ir.cpp:2007:17:2007:17 | Load | m2006_10 | -| ir.cpp:2007:17:2007:17 | StoreValue | r2007_14 | -| ir.cpp:2008:5:2008:5 | Address | &:r2008_10 | -| ir.cpp:2008:9:2008:9 | Address | &:r2008_2 | -| ir.cpp:2008:9:2008:9 | Address | &:r2008_6 | -| ir.cpp:2008:9:2008:9 | Address | &:r2008_17 | -| ir.cpp:2008:9:2008:9 | Address | &:r2008_23 | -| ir.cpp:2008:9:2008:9 | Condition | r2008_3 | -| ir.cpp:2008:9:2008:9 | Load | m2006_6 | -| ir.cpp:2008:9:2008:9 | Load | m2008_5 | -| ir.cpp:2008:9:2008:9 | Phi | from 5:m2008_18 | -| ir.cpp:2008:9:2008:9 | Phi | from 6:m2008_24 | -| ir.cpp:2008:9:2008:9 | StoreValue | r2008_7 | -| ir.cpp:2008:9:2008:31 | Address | &:r2008_1 | -| ir.cpp:2008:9:2008:31 | Address | &:r2008_1 | -| ir.cpp:2008:9:2008:31 | Load | m2008_8 | -| ir.cpp:2008:9:2008:31 | StoreValue | r2008_9 | -| ir.cpp:2008:13:2008:13 | Address | &:r2008_12 | -| ir.cpp:2008:13:2008:13 | Address | &:r2008_12 | -| ir.cpp:2008:13:2008:13 | Address | &:r2008_13 | -| ir.cpp:2008:13:2008:13 | Load | m2006_8 | -| ir.cpp:2008:13:2008:13 | Load | m2008_15 | -| ir.cpp:2008:13:2008:13 | StoreValue | r2008_14 | -| ir.cpp:2008:13:2008:13 | StoreValue | r2008_16 | -| ir.cpp:2008:17:2008:31 | Address | &:r2008_19 | -| ir.cpp:2008:17:2008:31 | Address | &:r2008_19 | -| ir.cpp:2008:17:2008:31 | Load | m2008_21 | -| ir.cpp:2008:17:2008:31 | StoreValue | r2008_20 | -| ir.cpp:2008:17:2008:31 | StoreValue | r2008_22 | -| ir.cpp:2009:5:2009:5 | Address | &:r2009_10 | -| ir.cpp:2009:9:2009:9 | Address | &:r2009_2 | -| ir.cpp:2009:9:2009:9 | Address | &:r2009_6 | -| ir.cpp:2009:9:2009:9 | Address | &:r2009_16 | -| ir.cpp:2009:9:2009:9 | Address | &:r2009_22 | -| ir.cpp:2009:9:2009:9 | Condition | r2009_3 | -| ir.cpp:2009:9:2009:9 | Load | m2006_6 | -| ir.cpp:2009:9:2009:9 | Load | m2009_5 | -| ir.cpp:2009:9:2009:9 | Phi | from 8:m2009_17 | -| ir.cpp:2009:9:2009:9 | Phi | from 9:m2009_23 | -| ir.cpp:2009:9:2009:9 | StoreValue | r2009_7 | -| ir.cpp:2009:9:2009:45 | Address | &:r2009_1 | -| ir.cpp:2009:9:2009:45 | Address | &:r2009_1 | -| ir.cpp:2009:9:2009:45 | Load | m2009_8 | -| ir.cpp:2009:9:2009:45 | StoreValue | r2009_9 | -| ir.cpp:2009:13:2009:27 | Address | &:r2009_12 | -| ir.cpp:2009:13:2009:27 | Address | &:r2009_12 | -| ir.cpp:2009:13:2009:27 | Load | m2009_14 | -| ir.cpp:2009:13:2009:27 | StoreValue | r2009_13 | -| ir.cpp:2009:13:2009:27 | StoreValue | r2009_15 | -| ir.cpp:2009:31:2009:45 | Address | &:r2009_18 | -| ir.cpp:2009:31:2009:45 | Address | &:r2009_18 | -| ir.cpp:2009:31:2009:45 | Load | m2009_20 | -| ir.cpp:2009:31:2009:45 | StoreValue | r2009_19 | -| ir.cpp:2009:31:2009:45 | StoreValue | r2009_21 | -| ir.cpp:2010:6:2010:6 | Address | &:r2010_11 | -| ir.cpp:2010:6:2010:6 | Unary | r2010_11 | -| ir.cpp:2010:6:2010:18 | Address | &:r2010_13 | -| ir.cpp:2010:10:2010:10 | Address | &:r2010_5 | -| ir.cpp:2010:10:2010:10 | Condition | r2010_6 | -| ir.cpp:2010:10:2010:10 | Load | m2006_6 | -| ir.cpp:2010:10:2010:18 | Address | &:r2010_9 | -| ir.cpp:2010:10:2010:18 | Address | &:r2010_17 | -| ir.cpp:2010:10:2010:18 | Address | &:r2010_21 | -| ir.cpp:2010:10:2010:18 | Load | m2010_8 | -| ir.cpp:2010:10:2010:18 | Phi | from 11:m2010_18 | -| ir.cpp:2010:10:2010:18 | Phi | from 12:m2010_22 | -| ir.cpp:2010:10:2010:18 | StoreValue | r2010_10 | -| ir.cpp:2010:14:2010:14 | Address | &:r2010_15 | -| ir.cpp:2010:14:2010:14 | Load | m2006_8 | -| ir.cpp:2010:14:2010:14 | StoreValue | r2010_16 | -| ir.cpp:2010:18:2010:18 | Address | &:r2010_19 | -| ir.cpp:2010:18:2010:18 | Load | m2006_10 | -| ir.cpp:2010:18:2010:18 | StoreValue | r2010_20 | -| ir.cpp:2010:23:2010:37 | Address | &:r2010_1 | -| ir.cpp:2010:23:2010:37 | Address | &:r2010_1 | -| ir.cpp:2010:23:2010:37 | Load | m2010_3 | -| ir.cpp:2010:23:2010:37 | StoreValue | r2010_2 | -| ir.cpp:2010:23:2010:37 | StoreValue | r2010_4 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_5 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_5 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_5 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_5 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_5 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_5 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_7 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_7 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_7 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_7 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_7 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_7 | -| ir.cpp:2013:8:2013:8 | Address | &:r2013_10 | -| ir.cpp:2013:8:2013:8 | ChiPartial | partial:m2013_3 | -| ir.cpp:2013:8:2013:8 | ChiPartial | partial:m2013_3 | -| ir.cpp:2013:8:2013:8 | ChiPartial | partial:m2013_3 | -| ir.cpp:2013:8:2013:8 | ChiTotal | total:m2013_2 | -| ir.cpp:2013:8:2013:8 | ChiTotal | total:m2013_2 | -| ir.cpp:2013:8:2013:8 | ChiTotal | total:m2013_2 | -| ir.cpp:2013:8:2013:8 | Load | m0_10 | -| ir.cpp:2013:8:2013:8 | Load | m2013_6 | -| ir.cpp:2013:8:2013:8 | Load | m2013_6 | -| ir.cpp:2013:8:2013:8 | Load | m2013_6 | -| ir.cpp:2013:8:2013:8 | SideEffect | m2013_3 | -| ir.cpp:2013:8:2013:8 | SideEffect | m2013_3 | -| ir.cpp:2013:8:2013:8 | SideEffect | m2013_3 | -| ir.cpp:2013:8:2013:8 | SideEffect | m2013_8 | -| ir.cpp:2013:8:2013:8 | SideEffect | m2013_8 | -| ir.cpp:2013:8:2013:8 | SideEffect | m2013_8 | -| ir.cpp:2014:13:2014:29 | Address | &:r2014_5 | -| ir.cpp:2014:13:2014:29 | Address | &:r2014_5 | -| ir.cpp:2014:13:2014:29 | Address | &:r2014_7 | -| ir.cpp:2014:13:2014:29 | Address | &:r2014_7 | -| ir.cpp:2014:13:2014:29 | ChiPartial | partial:m2014_3 | -| ir.cpp:2014:13:2014:29 | ChiTotal | total:m2014_2 | -| ir.cpp:2014:13:2014:29 | Load | m2014_6 | -| ir.cpp:2014:13:2014:29 | SideEffect | m2014_3 | -| ir.cpp:2014:13:2014:29 | SideEffect | m2014_8 | -| ir.cpp:2017:6:2017:25 | ChiPartial | partial:m2017_3 | -| ir.cpp:2017:6:2017:25 | ChiTotal | total:m2017_2 | -| ir.cpp:2017:6:2017:25 | SideEffect | ~m2021_32 | -| ir.cpp:2017:32:2017:32 | Address | &:r2017_5 | -| ir.cpp:2017:52:2017:52 | Address | &:r2017_7 | -| ir.cpp:2017:72:2017:72 | Address | &:r2017_9 | -| ir.cpp:2017:92:2017:92 | Address | &:r2017_11 | -| ir.cpp:2018:5:2018:5 | Address | &:r2018_1 | -| ir.cpp:2018:5:2018:5 | Address | &:r2018_1 | -| ir.cpp:2018:5:2018:5 | Arg(this) | this:r2018_1 | -| ir.cpp:2018:5:2018:5 | ChiPartial | partial:m2018_16 | -| ir.cpp:2018:5:2018:5 | ChiTotal | total:m2017_12 | -| ir.cpp:2018:5:2018:5 | SideEffect | m2017_12 | -| ir.cpp:2018:7:2018:7 | CallTarget | func:r2018_2 | -| ir.cpp:2018:7:2018:7 | ChiPartial | partial:m2018_12 | -| ir.cpp:2018:7:2018:7 | ChiTotal | total:m2017_4 | -| ir.cpp:2018:7:2018:7 | SideEffect | ~m2017_4 | -| ir.cpp:2018:7:2018:7 | Unary | r2018_11 | -| ir.cpp:2018:9:2018:9 | Address | &:r2018_3 | -| ir.cpp:2018:9:2018:9 | Condition | r2018_4 | -| ir.cpp:2018:9:2018:9 | Load | m2017_6 | -| ir.cpp:2018:9:2018:17 | Address | &:r2018_7 | -| ir.cpp:2018:9:2018:17 | Address | &:r2018_10 | -| ir.cpp:2018:9:2018:17 | Address | &:r2018_20 | -| ir.cpp:2018:9:2018:17 | Address | &:r2018_23 | -| ir.cpp:2018:9:2018:17 | Arg(0) | 0:r2018_10 | -| ir.cpp:2018:9:2018:17 | Load | m2018_6 | -| ir.cpp:2018:9:2018:17 | Phi | from 2:m2018_21 | -| ir.cpp:2018:9:2018:17 | Phi | from 3:m2018_24 | -| ir.cpp:2018:9:2018:17 | SideEffect | ~m2018_13 | -| ir.cpp:2018:9:2018:17 | Unary | r2018_8 | -| ir.cpp:2018:9:2018:17 | Unary | r2018_9 | -| ir.cpp:2018:13:2018:13 | StoreValue | r2018_19 | -| ir.cpp:2018:17:2018:17 | StoreValue | r2018_22 | -| ir.cpp:2019:5:2019:5 | Address | &:r2019_1 | -| ir.cpp:2019:5:2019:5 | Address | &:r2019_1 | -| ir.cpp:2019:5:2019:5 | Arg(this) | this:r2019_1 | -| ir.cpp:2019:5:2019:5 | ChiPartial | partial:m2019_19 | -| ir.cpp:2019:5:2019:5 | ChiTotal | total:m2018_17 | -| ir.cpp:2019:5:2019:5 | SideEffect | m2018_17 | -| ir.cpp:2019:7:2019:7 | CallTarget | func:r2019_2 | -| ir.cpp:2019:7:2019:7 | ChiPartial | partial:m2019_15 | -| ir.cpp:2019:7:2019:7 | ChiTotal | total:m2019_7 | -| ir.cpp:2019:7:2019:7 | SideEffect | ~m2019_7 | -| ir.cpp:2019:7:2019:7 | Unary | r2019_14 | -| ir.cpp:2019:9:2019:9 | Address | &:r2019_4 | -| ir.cpp:2019:9:2019:9 | Address | &:r2019_9 | -| ir.cpp:2019:9:2019:9 | Address | &:r2019_35 | -| ir.cpp:2019:9:2019:9 | Address | &:r2019_46 | -| ir.cpp:2019:9:2019:9 | Condition | r2019_5 | -| ir.cpp:2019:9:2019:9 | Load | m2017_6 | -| ir.cpp:2019:9:2019:9 | Load | m2019_8 | -| ir.cpp:2019:9:2019:9 | Phi | from 5:m2019_36 | -| ir.cpp:2019:9:2019:9 | Phi | from 5:~m2019_30 | -| ir.cpp:2019:9:2019:9 | Phi | from 6:m2019_47 | -| ir.cpp:2019:9:2019:9 | Phi | from 6:~m2019_42 | -| ir.cpp:2019:9:2019:9 | StoreValue | r2019_10 | -| ir.cpp:2019:9:2019:34 | Address | &:r2019_3 | -| ir.cpp:2019:9:2019:34 | Address | &:r2019_13 | -| ir.cpp:2019:9:2019:34 | Arg(0) | 0:r2019_13 | -| ir.cpp:2019:9:2019:34 | SideEffect | ~m2019_11 | -| ir.cpp:2019:9:2019:34 | Unary | r2019_3 | -| ir.cpp:2019:9:2019:34 | Unary | r2019_12 | -| ir.cpp:2019:13:2019:13 | Address | &:r2019_22 | -| ir.cpp:2019:13:2019:13 | Address | &:r2019_22 | -| ir.cpp:2019:13:2019:13 | Address | &:r2019_22 | -| ir.cpp:2019:13:2019:13 | Address | &:r2019_27 | -| ir.cpp:2019:13:2019:13 | Arg(0) | 0:r2019_27 | -| ir.cpp:2019:13:2019:13 | Arg(this) | this:r2019_22 | -| ir.cpp:2019:13:2019:13 | CallTarget | func:r2019_24 | -| ir.cpp:2019:13:2019:13 | ChiPartial | partial:m2019_29 | -| ir.cpp:2019:13:2019:13 | ChiPartial | partial:m2019_32 | -| ir.cpp:2019:13:2019:13 | ChiTotal | total:m2018_13 | -| ir.cpp:2019:13:2019:13 | ChiTotal | total:m2019_23 | -| ir.cpp:2019:13:2019:13 | Load | m2019_33 | -| ir.cpp:2019:13:2019:13 | SideEffect | ~m2017_8 | -| ir.cpp:2019:13:2019:13 | SideEffect | ~m2018_13 | -| ir.cpp:2019:13:2019:13 | StoreValue | r2019_34 | -| ir.cpp:2019:13:2019:13 | Unary | r2019_25 | -| ir.cpp:2019:13:2019:13 | Unary | r2019_26 | -| ir.cpp:2019:17:2019:34 | Address | &:r2019_37 | -| ir.cpp:2019:17:2019:34 | Address | &:r2019_37 | -| ir.cpp:2019:17:2019:34 | Address | &:r2019_37 | -| ir.cpp:2019:17:2019:34 | Arg(this) | this:r2019_37 | -| ir.cpp:2019:17:2019:34 | CallTarget | func:r2019_39 | -| ir.cpp:2019:17:2019:34 | ChiPartial | partial:m2019_41 | -| ir.cpp:2019:17:2019:34 | ChiPartial | partial:m2019_43 | -| ir.cpp:2019:17:2019:34 | ChiTotal | total:m2018_13 | -| ir.cpp:2019:17:2019:34 | ChiTotal | total:m2019_38 | -| ir.cpp:2019:17:2019:34 | Load | m2019_44 | -| ir.cpp:2019:17:2019:34 | SideEffect | ~m2018_13 | -| ir.cpp:2019:17:2019:34 | StoreValue | r2019_45 | +| ir.cpp:1999:13:1999:13 | Address | &:r1999_9 | +| ir.cpp:1999:13:1999:13 | Load | m1998_8 | +| ir.cpp:1999:13:1999:13 | StoreValue | r1999_10 | +| ir.cpp:1999:17:1999:17 | Address | &:r1999_13 | +| ir.cpp:1999:17:1999:17 | Load | m1998_10 | +| ir.cpp:1999:17:1999:17 | StoreValue | r1999_14 | +| ir.cpp:2000:5:2000:5 | Address | &:r2000_7 | +| ir.cpp:2000:9:2000:9 | Address | &:r2000_1 | +| ir.cpp:2000:9:2000:9 | Condition | r2000_2 | +| ir.cpp:2000:9:2000:9 | Load | m1998_6 | +| ir.cpp:2000:9:2000:17 | Address | &:r2000_5 | +| ir.cpp:2000:9:2000:17 | Address | &:r2000_11 | +| ir.cpp:2000:9:2000:17 | Address | &:r2000_14 | +| ir.cpp:2000:9:2000:17 | Load | m2000_4 | +| ir.cpp:2000:9:2000:17 | Phi | from 5:m2000_12 | +| ir.cpp:2000:9:2000:17 | Phi | from 6:m2000_15 | +| ir.cpp:2000:9:2000:17 | StoreValue | r2000_6 | +| ir.cpp:2000:13:2000:13 | Address | &:r2000_9 | +| ir.cpp:2000:13:2000:13 | Load | m1998_8 | +| ir.cpp:2000:13:2000:13 | StoreValue | r2000_10 | +| ir.cpp:2000:17:2000:17 | StoreValue | r2000_13 | +| ir.cpp:2001:5:2001:5 | Address | &:r2001_7 | +| ir.cpp:2001:9:2001:9 | Address | &:r2001_1 | +| ir.cpp:2001:9:2001:9 | Condition | r2001_2 | +| ir.cpp:2001:9:2001:9 | Load | m1998_6 | +| ir.cpp:2001:9:2001:17 | Address | &:r2001_5 | +| ir.cpp:2001:9:2001:17 | Address | &:r2001_10 | +| ir.cpp:2001:9:2001:17 | Address | &:r2001_13 | +| ir.cpp:2001:9:2001:17 | Load | m2001_4 | +| ir.cpp:2001:9:2001:17 | Phi | from 8:m2001_11 | +| ir.cpp:2001:9:2001:17 | Phi | from 9:m2001_14 | +| ir.cpp:2001:9:2001:17 | StoreValue | r2001_6 | +| ir.cpp:2001:13:2001:13 | StoreValue | r2001_9 | +| ir.cpp:2001:17:2001:17 | StoreValue | r2001_12 | +| ir.cpp:2002:5:2002:19 | ChiPartial | partial:m2002_8 | +| ir.cpp:2002:5:2002:19 | ChiTotal | total:m1998_4 | +| ir.cpp:2002:6:2002:6 | Address | &:r2002_2 | +| ir.cpp:2002:6:2002:6 | Condition | r2002_3 | +| ir.cpp:2002:6:2002:6 | Load | m1998_6 | +| ir.cpp:2002:6:2002:14 | Address | &:r2002_6 | +| ir.cpp:2002:6:2002:14 | Address | &:r2002_7 | +| ir.cpp:2002:6:2002:14 | Address | &:r2002_11 | +| ir.cpp:2002:6:2002:14 | Address | &:r2002_14 | +| ir.cpp:2002:6:2002:14 | Load | m2002_5 | +| ir.cpp:2002:6:2002:14 | Phi | from 11:m2002_12 | +| ir.cpp:2002:6:2002:14 | Phi | from 12:m2002_15 | +| ir.cpp:2002:10:2002:10 | StoreValue | r2002_10 | +| ir.cpp:2002:14:2002:14 | StoreValue | r2002_13 | +| ir.cpp:2002:19:2002:19 | StoreValue | r2002_1 | +| ir.cpp:2008:6:2008:22 | ChiPartial | partial:m2008_3 | +| ir.cpp:2008:6:2008:22 | ChiTotal | total:m2008_2 | +| ir.cpp:2008:6:2008:22 | SideEffect | m2008_3 | +| ir.cpp:2008:29:2008:29 | Address | &:r2008_5 | +| ir.cpp:2008:46:2008:46 | Address | &:r2008_7 | +| ir.cpp:2008:63:2008:63 | Address | &:r2008_9 | +| ir.cpp:2008:80:2008:80 | Address | &:r2008_11 | +| ir.cpp:2009:5:2009:5 | Address | &:r2009_7 | +| ir.cpp:2009:9:2009:9 | Address | &:r2009_1 | +| ir.cpp:2009:9:2009:9 | Condition | r2009_2 | +| ir.cpp:2009:9:2009:9 | Load | m2008_6 | +| ir.cpp:2009:9:2009:17 | Address | &:r2009_5 | +| ir.cpp:2009:9:2009:17 | Address | &:r2009_11 | +| ir.cpp:2009:9:2009:17 | Address | &:r2009_15 | +| ir.cpp:2009:9:2009:17 | Load | m2009_4 | +| ir.cpp:2009:9:2009:17 | Phi | from 2:m2009_12 | +| ir.cpp:2009:9:2009:17 | Phi | from 3:m2009_16 | +| ir.cpp:2009:9:2009:17 | StoreValue | r2009_6 | +| ir.cpp:2009:13:2009:13 | Address | &:r2009_9 | +| ir.cpp:2009:13:2009:13 | Load | m2008_8 | +| ir.cpp:2009:13:2009:13 | StoreValue | r2009_10 | +| ir.cpp:2009:17:2009:17 | Address | &:r2009_13 | +| ir.cpp:2009:17:2009:17 | Load | m2008_10 | +| ir.cpp:2009:17:2009:17 | StoreValue | r2009_14 | +| ir.cpp:2010:5:2010:5 | Address | &:r2010_10 | +| ir.cpp:2010:9:2010:9 | Address | &:r2010_2 | +| ir.cpp:2010:9:2010:9 | Address | &:r2010_6 | +| ir.cpp:2010:9:2010:9 | Address | &:r2010_17 | +| ir.cpp:2010:9:2010:9 | Address | &:r2010_23 | +| ir.cpp:2010:9:2010:9 | Condition | r2010_3 | +| ir.cpp:2010:9:2010:9 | Load | m2008_6 | +| ir.cpp:2010:9:2010:9 | Load | m2010_5 | +| ir.cpp:2010:9:2010:9 | Phi | from 5:m2010_18 | +| ir.cpp:2010:9:2010:9 | Phi | from 6:m2010_24 | +| ir.cpp:2010:9:2010:9 | StoreValue | r2010_7 | +| ir.cpp:2010:9:2010:31 | Address | &:r2010_1 | +| ir.cpp:2010:9:2010:31 | Address | &:r2010_1 | +| ir.cpp:2010:9:2010:31 | Load | m2010_8 | +| ir.cpp:2010:9:2010:31 | StoreValue | r2010_9 | +| ir.cpp:2010:13:2010:13 | Address | &:r2010_12 | +| ir.cpp:2010:13:2010:13 | Address | &:r2010_12 | +| ir.cpp:2010:13:2010:13 | Address | &:r2010_13 | +| ir.cpp:2010:13:2010:13 | Load | m2008_8 | +| ir.cpp:2010:13:2010:13 | Load | m2010_15 | +| ir.cpp:2010:13:2010:13 | StoreValue | r2010_14 | +| ir.cpp:2010:13:2010:13 | StoreValue | r2010_16 | +| ir.cpp:2010:17:2010:31 | Address | &:r2010_19 | +| ir.cpp:2010:17:2010:31 | Address | &:r2010_19 | +| ir.cpp:2010:17:2010:31 | Load | m2010_21 | +| ir.cpp:2010:17:2010:31 | StoreValue | r2010_20 | +| ir.cpp:2010:17:2010:31 | StoreValue | r2010_22 | +| ir.cpp:2011:5:2011:5 | Address | &:r2011_10 | +| ir.cpp:2011:9:2011:9 | Address | &:r2011_2 | +| ir.cpp:2011:9:2011:9 | Address | &:r2011_6 | +| ir.cpp:2011:9:2011:9 | Address | &:r2011_16 | +| ir.cpp:2011:9:2011:9 | Address | &:r2011_22 | +| ir.cpp:2011:9:2011:9 | Condition | r2011_3 | +| ir.cpp:2011:9:2011:9 | Load | m2008_6 | +| ir.cpp:2011:9:2011:9 | Load | m2011_5 | +| ir.cpp:2011:9:2011:9 | Phi | from 8:m2011_17 | +| ir.cpp:2011:9:2011:9 | Phi | from 9:m2011_23 | +| ir.cpp:2011:9:2011:9 | StoreValue | r2011_7 | +| ir.cpp:2011:9:2011:45 | Address | &:r2011_1 | +| ir.cpp:2011:9:2011:45 | Address | &:r2011_1 | +| ir.cpp:2011:9:2011:45 | Load | m2011_8 | +| ir.cpp:2011:9:2011:45 | StoreValue | r2011_9 | +| ir.cpp:2011:13:2011:27 | Address | &:r2011_12 | +| ir.cpp:2011:13:2011:27 | Address | &:r2011_12 | +| ir.cpp:2011:13:2011:27 | Load | m2011_14 | +| ir.cpp:2011:13:2011:27 | StoreValue | r2011_13 | +| ir.cpp:2011:13:2011:27 | StoreValue | r2011_15 | +| ir.cpp:2011:31:2011:45 | Address | &:r2011_18 | +| ir.cpp:2011:31:2011:45 | Address | &:r2011_18 | +| ir.cpp:2011:31:2011:45 | Load | m2011_20 | +| ir.cpp:2011:31:2011:45 | StoreValue | r2011_19 | +| ir.cpp:2011:31:2011:45 | StoreValue | r2011_21 | +| ir.cpp:2012:6:2012:6 | Address | &:r2012_11 | +| ir.cpp:2012:6:2012:6 | Unary | r2012_11 | +| ir.cpp:2012:6:2012:18 | Address | &:r2012_13 | +| ir.cpp:2012:10:2012:10 | Address | &:r2012_5 | +| ir.cpp:2012:10:2012:10 | Condition | r2012_6 | +| ir.cpp:2012:10:2012:10 | Load | m2008_6 | +| ir.cpp:2012:10:2012:18 | Address | &:r2012_9 | +| ir.cpp:2012:10:2012:18 | Address | &:r2012_17 | +| ir.cpp:2012:10:2012:18 | Address | &:r2012_21 | +| ir.cpp:2012:10:2012:18 | Load | m2012_8 | +| ir.cpp:2012:10:2012:18 | Phi | from 11:m2012_18 | +| ir.cpp:2012:10:2012:18 | Phi | from 12:m2012_22 | +| ir.cpp:2012:10:2012:18 | StoreValue | r2012_10 | +| ir.cpp:2012:14:2012:14 | Address | &:r2012_15 | +| ir.cpp:2012:14:2012:14 | Load | m2008_8 | +| ir.cpp:2012:14:2012:14 | StoreValue | r2012_16 | +| ir.cpp:2012:18:2012:18 | Address | &:r2012_19 | +| ir.cpp:2012:18:2012:18 | Load | m2008_10 | +| ir.cpp:2012:18:2012:18 | StoreValue | r2012_20 | +| ir.cpp:2012:23:2012:37 | Address | &:r2012_1 | +| ir.cpp:2012:23:2012:37 | Address | &:r2012_1 | +| ir.cpp:2012:23:2012:37 | Load | m2012_3 | +| ir.cpp:2012:23:2012:37 | StoreValue | r2012_2 | +| ir.cpp:2012:23:2012:37 | StoreValue | r2012_4 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | +| ir.cpp:2015:8:2015:8 | Address | &:r2015_10 | +| ir.cpp:2015:8:2015:8 | ChiPartial | partial:m2015_3 | +| ir.cpp:2015:8:2015:8 | ChiPartial | partial:m2015_3 | +| ir.cpp:2015:8:2015:8 | ChiPartial | partial:m2015_3 | +| ir.cpp:2015:8:2015:8 | ChiTotal | total:m2015_2 | +| ir.cpp:2015:8:2015:8 | ChiTotal | total:m2015_2 | +| ir.cpp:2015:8:2015:8 | ChiTotal | total:m2015_2 | +| ir.cpp:2015:8:2015:8 | Load | m0_10 | +| ir.cpp:2015:8:2015:8 | Load | m2015_6 | +| ir.cpp:2015:8:2015:8 | Load | m2015_6 | +| ir.cpp:2015:8:2015:8 | Load | m2015_6 | +| ir.cpp:2015:8:2015:8 | SideEffect | m2015_3 | +| ir.cpp:2015:8:2015:8 | SideEffect | m2015_3 | +| ir.cpp:2015:8:2015:8 | SideEffect | m2015_3 | +| ir.cpp:2015:8:2015:8 | SideEffect | m2015_8 | +| ir.cpp:2015:8:2015:8 | SideEffect | m2015_8 | +| ir.cpp:2015:8:2015:8 | SideEffect | m2015_8 | +| ir.cpp:2016:13:2016:29 | Address | &:r2016_5 | +| ir.cpp:2016:13:2016:29 | Address | &:r2016_5 | +| ir.cpp:2016:13:2016:29 | Address | &:r2016_7 | +| ir.cpp:2016:13:2016:29 | Address | &:r2016_7 | +| ir.cpp:2016:13:2016:29 | ChiPartial | partial:m2016_3 | +| ir.cpp:2016:13:2016:29 | ChiTotal | total:m2016_2 | +| ir.cpp:2016:13:2016:29 | Load | m2016_6 | +| ir.cpp:2016:13:2016:29 | SideEffect | m2016_3 | +| ir.cpp:2016:13:2016:29 | SideEffect | m2016_8 | +| ir.cpp:2019:6:2019:25 | ChiPartial | partial:m2019_3 | +| ir.cpp:2019:6:2019:25 | ChiTotal | total:m2019_2 | +| ir.cpp:2019:6:2019:25 | SideEffect | ~m2023_32 | +| ir.cpp:2019:32:2019:32 | Address | &:r2019_5 | +| ir.cpp:2019:52:2019:52 | Address | &:r2019_7 | +| ir.cpp:2019:72:2019:72 | Address | &:r2019_9 | +| ir.cpp:2019:92:2019:92 | Address | &:r2019_11 | | ir.cpp:2020:5:2020:5 | Address | &:r2020_1 | | ir.cpp:2020:5:2020:5 | Address | &:r2020_1 | | ir.cpp:2020:5:2020:5 | Arg(this) | this:r2020_1 | -| ir.cpp:2020:5:2020:5 | ChiPartial | partial:m2020_19 | -| ir.cpp:2020:5:2020:5 | ChiTotal | total:m2019_20 | -| ir.cpp:2020:5:2020:5 | SideEffect | m2019_20 | +| ir.cpp:2020:5:2020:5 | ChiPartial | partial:m2020_16 | +| ir.cpp:2020:5:2020:5 | ChiTotal | total:m2019_12 | +| ir.cpp:2020:5:2020:5 | SideEffect | m2019_12 | | ir.cpp:2020:7:2020:7 | CallTarget | func:r2020_2 | -| ir.cpp:2020:7:2020:7 | ChiPartial | partial:m2020_15 | -| ir.cpp:2020:7:2020:7 | ChiTotal | total:m2020_7 | -| ir.cpp:2020:7:2020:7 | SideEffect | ~m2020_7 | -| ir.cpp:2020:7:2020:7 | Unary | r2020_14 | -| ir.cpp:2020:9:2020:9 | Address | &:r2020_4 | -| ir.cpp:2020:9:2020:9 | Address | &:r2020_9 | -| ir.cpp:2020:9:2020:9 | Address | &:r2020_31 | -| ir.cpp:2020:9:2020:9 | Address | &:r2020_42 | -| ir.cpp:2020:9:2020:9 | Condition | r2020_5 | -| ir.cpp:2020:9:2020:9 | Load | m2017_6 | -| ir.cpp:2020:9:2020:9 | Load | m2020_8 | -| ir.cpp:2020:9:2020:9 | Phi | from 8:m2020_32 | -| ir.cpp:2020:9:2020:9 | Phi | from 8:~m2020_27 | -| ir.cpp:2020:9:2020:9 | Phi | from 9:m2020_43 | -| ir.cpp:2020:9:2020:9 | Phi | from 9:~m2020_38 | -| ir.cpp:2020:9:2020:9 | StoreValue | r2020_10 | -| ir.cpp:2020:9:2020:51 | Address | &:r2020_3 | -| ir.cpp:2020:9:2020:51 | Address | &:r2020_13 | -| ir.cpp:2020:9:2020:51 | Arg(0) | 0:r2020_13 | -| ir.cpp:2020:9:2020:51 | SideEffect | ~m2020_11 | -| ir.cpp:2020:9:2020:51 | Unary | r2020_3 | -| ir.cpp:2020:9:2020:51 | Unary | r2020_12 | -| ir.cpp:2020:13:2020:30 | Address | &:r2020_22 | -| ir.cpp:2020:13:2020:30 | Address | &:r2020_22 | -| ir.cpp:2020:13:2020:30 | Address | &:r2020_22 | -| ir.cpp:2020:13:2020:30 | Arg(this) | this:r2020_22 | -| ir.cpp:2020:13:2020:30 | CallTarget | func:r2020_24 | -| ir.cpp:2020:13:2020:30 | ChiPartial | partial:m2020_26 | -| ir.cpp:2020:13:2020:30 | ChiPartial | partial:m2020_28 | -| ir.cpp:2020:13:2020:30 | ChiTotal | total:m2019_16 | -| ir.cpp:2020:13:2020:30 | ChiTotal | total:m2020_23 | -| ir.cpp:2020:13:2020:30 | Load | m2020_29 | -| ir.cpp:2020:13:2020:30 | SideEffect | ~m2019_16 | -| ir.cpp:2020:13:2020:30 | StoreValue | r2020_30 | -| ir.cpp:2020:34:2020:51 | Address | &:r2020_33 | -| ir.cpp:2020:34:2020:51 | Address | &:r2020_33 | -| ir.cpp:2020:34:2020:51 | Address | &:r2020_33 | -| ir.cpp:2020:34:2020:51 | Arg(this) | this:r2020_33 | -| ir.cpp:2020:34:2020:51 | CallTarget | func:r2020_35 | -| ir.cpp:2020:34:2020:51 | ChiPartial | partial:m2020_37 | -| ir.cpp:2020:34:2020:51 | ChiPartial | partial:m2020_39 | -| ir.cpp:2020:34:2020:51 | ChiTotal | total:m2019_16 | -| ir.cpp:2020:34:2020:51 | ChiTotal | total:m2020_34 | -| ir.cpp:2020:34:2020:51 | Load | m2020_40 | -| ir.cpp:2020:34:2020:51 | SideEffect | ~m2019_16 | -| ir.cpp:2020:34:2020:51 | StoreValue | r2020_41 | -| ir.cpp:2021:5:2021:19 | ChiPartial | partial:m2021_35 | -| ir.cpp:2021:5:2021:19 | ChiTotal | total:m2021_17 | -| ir.cpp:2021:5:2021:19 | SideEffect | m2021_17 | -| ir.cpp:2021:6:2021:6 | Address | &:r2021_1 | -| ir.cpp:2021:6:2021:6 | Address | &:r2021_1 | -| ir.cpp:2021:6:2021:6 | Arg(this) | this:r2021_1 | -| ir.cpp:2021:6:2021:6 | ChiPartial | partial:m2021_16 | -| ir.cpp:2021:6:2021:6 | ChiTotal | total:m2020_20 | -| ir.cpp:2021:6:2021:6 | SideEffect | m2020_20 | -| ir.cpp:2021:8:2021:8 | CallTarget | func:r2021_2 | -| ir.cpp:2021:8:2021:8 | ChiPartial | partial:m2021_12 | -| ir.cpp:2021:8:2021:8 | ChiTotal | total:m2020_16 | -| ir.cpp:2021:8:2021:8 | SideEffect | ~m2020_16 | -| ir.cpp:2021:8:2021:8 | Unary | r2021_11 | -| ir.cpp:2021:8:2021:19 | Address | &:r2021_18 | -| ir.cpp:2021:8:2021:19 | Address | &:r2021_18 | -| ir.cpp:2021:8:2021:19 | Arg(this) | this:r2021_18 | -| ir.cpp:2021:10:2021:10 | Address | &:r2021_3 | -| ir.cpp:2021:10:2021:10 | Condition | r2021_4 | -| ir.cpp:2021:10:2021:10 | Load | m2017_6 | -| ir.cpp:2021:10:2021:18 | Address | &:r2021_7 | -| ir.cpp:2021:10:2021:18 | Address | &:r2021_10 | -| ir.cpp:2021:10:2021:18 | Address | &:r2021_39 | -| ir.cpp:2021:10:2021:18 | Address | &:r2021_42 | -| ir.cpp:2021:10:2021:18 | Arg(0) | 0:r2021_10 | -| ir.cpp:2021:10:2021:18 | Load | m2021_6 | -| ir.cpp:2021:10:2021:18 | Phi | from 11:m2021_40 | -| ir.cpp:2021:10:2021:18 | Phi | from 12:m2021_43 | -| ir.cpp:2021:10:2021:18 | SideEffect | ~m2021_13 | -| ir.cpp:2021:10:2021:18 | Unary | r2021_8 | -| ir.cpp:2021:10:2021:18 | Unary | r2021_9 | -| ir.cpp:2021:14:2021:14 | StoreValue | r2021_38 | -| ir.cpp:2021:18:2021:18 | StoreValue | r2021_41 | -| ir.cpp:2021:21:2021:21 | CallTarget | func:r2021_19 | -| ir.cpp:2021:21:2021:21 | ChiPartial | partial:m2021_31 | -| ir.cpp:2021:21:2021:21 | ChiTotal | total:m2021_25 | -| ir.cpp:2021:21:2021:21 | SideEffect | ~m2021_25 | -| ir.cpp:2021:21:2021:21 | Unary | r2021_30 | -| ir.cpp:2021:23:2021:40 | Address | &:r2021_20 | -| ir.cpp:2021:23:2021:40 | Address | &:r2021_20 | -| ir.cpp:2021:23:2021:40 | Address | &:r2021_29 | -| ir.cpp:2021:23:2021:40 | Arg(0) | 0:r2021_29 | -| ir.cpp:2021:23:2021:40 | Arg(this) | this:r2021_20 | -| ir.cpp:2021:23:2021:40 | CallTarget | func:r2021_22 | -| ir.cpp:2021:23:2021:40 | ChiPartial | partial:m2021_24 | -| ir.cpp:2021:23:2021:40 | ChiPartial | partial:m2021_26 | -| ir.cpp:2021:23:2021:40 | ChiTotal | total:m2021_13 | -| ir.cpp:2021:23:2021:40 | ChiTotal | total:m2021_21 | -| ir.cpp:2021:23:2021:40 | SideEffect | ~m2021_13 | -| ir.cpp:2021:23:2021:40 | SideEffect | ~m2021_27 | -| ir.cpp:2021:23:2021:40 | Unary | r2021_20 | -| ir.cpp:2021:23:2021:40 | Unary | r2021_28 | -| ir.cpp:2026:14:2026:22 | Address | &:r2026_7 | -| ir.cpp:2026:14:2026:22 | ChiPartial | partial:m2026_3 | -| ir.cpp:2026:14:2026:22 | ChiTotal | total:m2026_2 | -| ir.cpp:2026:14:2026:22 | Load | m2031_2 | -| ir.cpp:2026:14:2026:22 | SideEffect | ~m2028_6 | -| ir.cpp:2026:37:2026:37 | Address | &:r2026_5 | -| ir.cpp:2027:16:2027:16 | Address | &:r2027_1 | -| ir.cpp:2028:3:2028:3 | Address | &:r2028_10 | -| ir.cpp:2028:7:2028:7 | Address | &:r2028_1 | -| ir.cpp:2028:7:2028:7 | Left | r2028_2 | -| ir.cpp:2028:7:2028:7 | Load | m2026_6 | -| ir.cpp:2028:7:2028:13 | Condition | r2028_4 | -| ir.cpp:2028:7:2030:28 | Address | &:r2028_8 | -| ir.cpp:2028:7:2030:28 | Address | &:r2028_12 | -| ir.cpp:2028:7:2030:28 | Address | &:r2028_14 | -| ir.cpp:2028:7:2030:28 | Load | m2028_7 | -| ir.cpp:2028:7:2030:28 | Phi | from 2:m2028_13 | -| ir.cpp:2028:7:2030:28 | Phi | from 2:~m2029_6 | -| ir.cpp:2028:7:2030:28 | Phi | from 3:m2028_15 | -| ir.cpp:2028:7:2030:28 | Phi | from 3:~m2030_6 | -| ir.cpp:2028:7:2030:28 | StoreValue | r2028_9 | -| ir.cpp:2028:11:2028:13 | Right | r2028_3 | -| ir.cpp:2029:6:2029:20 | CallTarget | func:r2029_1 | -| ir.cpp:2029:6:2029:20 | ChiPartial | partial:m2029_5 | -| ir.cpp:2029:6:2029:20 | ChiTotal | total:m2026_4 | -| ir.cpp:2029:6:2029:20 | SideEffect | ~m2026_4 | -| ir.cpp:2029:6:2029:26 | StoreValue | r2029_9 | -| ir.cpp:2029:22:2029:22 | Address | &:r2029_2 | -| ir.cpp:2029:22:2029:22 | Arg(0) | 0:r2029_3 | -| ir.cpp:2029:22:2029:22 | Load | m2026_6 | -| ir.cpp:2029:26:2029:26 | Address | &:r2029_7 | -| ir.cpp:2029:26:2029:26 | Load | m2026_6 | -| ir.cpp:2029:26:2029:26 | Unary | r2029_8 | -| ir.cpp:2030:5:2030:28 | StoreValue | r2030_9 | -| ir.cpp:2030:6:2030:20 | CallTarget | func:r2030_1 | -| ir.cpp:2030:6:2030:20 | ChiPartial | partial:m2030_5 | -| ir.cpp:2030:6:2030:20 | ChiTotal | total:m2026_4 | -| ir.cpp:2030:6:2030:20 | SideEffect | ~m2026_4 | -| ir.cpp:2030:6:2030:27 | Unary | r2030_8 | -| ir.cpp:2030:22:2030:22 | Address | &:r2030_2 | -| ir.cpp:2030:22:2030:22 | Arg(0) | 0:r2030_3 | -| ir.cpp:2030:22:2030:22 | Load | m2026_6 | -| ir.cpp:2030:26:2030:27 | Unary | r2030_7 | -| ir.cpp:2031:1:2031:1 | Address | &:r2031_1 | -| ir.cpp:2033:6:2033:17 | ChiPartial | partial:m2033_3 | -| ir.cpp:2033:6:2033:17 | ChiTotal | total:m2033_2 | -| ir.cpp:2033:6:2033:17 | SideEffect | ~m2036_6 | -| ir.cpp:2034:8:2034:8 | Address | &:r2034_1 | -| ir.cpp:2034:12:2034:18 | Address | &:r2034_4 | -| ir.cpp:2034:12:2034:18 | Arg(0) | 0:r2034_3 | -| ir.cpp:2034:12:2034:18 | CallTarget | func:r2034_2 | -| ir.cpp:2034:12:2034:18 | ChiPartial | partial:m2034_5 | -| ir.cpp:2034:12:2034:18 | ChiTotal | total:m2033_4 | -| ir.cpp:2034:12:2034:18 | SideEffect | ~m2033_4 | -| ir.cpp:2034:12:2034:18 | StoreValue | r2034_8 | -| ir.cpp:2034:12:2034:18 | Unary | r2034_4 | -| ir.cpp:2035:3:2035:4 | Address | &:r2035_4 | -| ir.cpp:2035:3:2035:8 | ChiPartial | partial:m2035_5 | -| ir.cpp:2035:3:2035:8 | ChiTotal | total:m2034_7 | -| ir.cpp:2035:4:2035:4 | Address | &:r2035_2 | -| ir.cpp:2035:4:2035:4 | Load | m2034_9 | -| ir.cpp:2035:4:2035:4 | Unary | r2035_3 | -| ir.cpp:2035:8:2035:8 | StoreValue | r2035_1 | -| ir.cpp:2036:3:2036:10 | CallTarget | func:r2036_1 | -| ir.cpp:2036:3:2036:10 | ChiPartial | partial:m2036_5 | -| ir.cpp:2036:3:2036:10 | ChiTotal | total:m2034_6 | -| ir.cpp:2036:3:2036:10 | SideEffect | ~m2034_6 | -| ir.cpp:2036:10:2036:10 | Address | &:r2036_2 | -| ir.cpp:2036:10:2036:10 | Arg(0) | 0:r2036_3 | -| ir.cpp:2036:10:2036:10 | Load | m2034_9 | -| ir.cpp:2039:7:2039:7 | Address | &:r2039_5 | -| ir.cpp:2039:7:2039:7 | Address | &:r2039_5 | -| ir.cpp:2039:7:2039:7 | Address | &:r2039_7 | -| ir.cpp:2039:7:2039:7 | Address | &:r2039_7 | -| ir.cpp:2039:7:2039:7 | ChiPartial | partial:m2039_3 | -| ir.cpp:2039:7:2039:7 | ChiTotal | total:m2039_2 | -| ir.cpp:2039:7:2039:7 | Load | m2039_6 | -| ir.cpp:2039:7:2039:7 | SideEffect | m2039_3 | -| ir.cpp:2039:7:2039:7 | SideEffect | m2039_8 | -| ir.cpp:2041:10:2041:24 | ChiPartial | partial:m2041_3 | -| ir.cpp:2041:10:2041:24 | ChiTotal | total:m2041_2 | -| ir.cpp:2041:10:2041:24 | SideEffect | m2041_3 | -| ir.cpp:2041:32:2041:32 | Address | &:r2041_5 | -| ir.cpp:2041:32:2041:32 | Address | &:r2041_5 | -| ir.cpp:2041:32:2041:32 | Address | &:r2041_7 | -| ir.cpp:2041:32:2041:32 | Address | &:r2041_7 | -| ir.cpp:2041:32:2041:32 | Load | m2041_6 | -| ir.cpp:2041:32:2041:32 | SideEffect | m2041_8 | -| ir.cpp:2043:13:2043:18 | Address | &:r2043_5 | -| ir.cpp:2043:13:2043:18 | Address | &:r2043_5 | -| ir.cpp:2043:13:2043:18 | Address | &:r2043_7 | -| ir.cpp:2043:13:2043:18 | Address | &:r2043_7 | -| ir.cpp:2043:13:2043:18 | ChiPartial | partial:m2043_3 | -| ir.cpp:2043:13:2043:18 | ChiTotal | total:m2043_2 | -| ir.cpp:2043:13:2043:18 | Load | m2043_6 | -| ir.cpp:2043:13:2043:18 | SideEffect | m2043_3 | -| ir.cpp:2043:13:2043:18 | SideEffect | m2043_8 | -| ir.cpp:2046:7:2046:7 | Address | &:r2046_5 | -| ir.cpp:2046:7:2046:7 | Address | &:r2046_5 | -| ir.cpp:2046:7:2046:7 | Address | &:r2046_7 | -| ir.cpp:2046:7:2046:7 | Address | &:r2046_7 | -| ir.cpp:2046:7:2046:7 | Address | &:r2046_9 | -| ir.cpp:2046:7:2046:7 | Arg(this) | this:r2046_9 | -| ir.cpp:2046:7:2046:7 | CallTarget | func:r2046_10 | -| ir.cpp:2046:7:2046:7 | ChiPartial | partial:m2046_3 | -| ir.cpp:2046:7:2046:7 | ChiPartial | partial:m2046_12 | -| ir.cpp:2046:7:2046:7 | ChiPartial | partial:m2046_14 | -| ir.cpp:2046:7:2046:7 | ChiTotal | total:m2046_2 | -| ir.cpp:2046:7:2046:7 | ChiTotal | total:m2046_4 | -| ir.cpp:2046:7:2046:7 | ChiTotal | total:m2046_8 | -| ir.cpp:2046:7:2046:7 | Load | m2046_6 | -| ir.cpp:2046:7:2046:7 | SideEffect | m2046_15 | -| ir.cpp:2046:7:2046:7 | SideEffect | ~m2046_4 | -| ir.cpp:2046:7:2046:7 | SideEffect | ~m2046_13 | -| ir.cpp:2046:7:2046:7 | Unary | m2046_6 | -| ir.cpp:2049:5:2049:13 | Address | &:r2049_5 | -| ir.cpp:2049:5:2049:13 | Address | &:r2049_5 | -| ir.cpp:2049:5:2049:13 | Address | &:r2049_7 | -| ir.cpp:2049:5:2049:13 | Address | &:r2049_7 | -| ir.cpp:2049:5:2049:13 | ChiPartial | partial:m2049_3 | -| ir.cpp:2049:5:2049:13 | ChiTotal | total:m2049_2 | -| ir.cpp:2049:5:2049:13 | Load | m2049_6 | -| ir.cpp:2049:5:2049:13 | SideEffect | m2049_8 | -| ir.cpp:2049:5:2049:13 | SideEffect | ~m2049_14 | -| ir.cpp:2049:5:2049:13 | Unary | m2049_6 | -| ir.cpp:2049:18:2049:18 | Arg(this) | this:r2049_10 | -| ir.cpp:2049:18:2049:18 | CallTarget | func:r2049_11 | -| ir.cpp:2049:18:2049:18 | ChiPartial | partial:m2049_13 | -| ir.cpp:2049:18:2049:18 | ChiTotal | total:m2049_4 | -| ir.cpp:2049:18:2049:18 | SideEffect | ~m2049_4 | -| ir.cpp:2051:10:2051:24 | ChiPartial | partial:m2051_3 | -| ir.cpp:2051:10:2051:24 | ChiTotal | total:m2051_2 | -| ir.cpp:2051:10:2051:24 | SideEffect | m2051_3 | -| ir.cpp:2051:32:2051:32 | Address | &:r2051_5 | -| ir.cpp:2051:32:2051:32 | Address | &:r2051_5 | -| ir.cpp:2051:32:2051:32 | Address | &:r2051_7 | -| ir.cpp:2051:32:2051:32 | Address | &:r2051_7 | -| ir.cpp:2051:32:2051:32 | Load | m2051_6 | -| ir.cpp:2051:32:2051:32 | SideEffect | m2051_8 | -| ir.cpp:2056:5:2056:18 | Address | &:r2056_5 | -| ir.cpp:2056:5:2056:18 | ChiPartial | partial:m2056_3 | -| ir.cpp:2056:5:2056:18 | ChiTotal | total:m2056_2 | -| ir.cpp:2056:5:2056:18 | Load | m2066_2 | -| ir.cpp:2056:5:2056:18 | SideEffect | ~m2065_6 | -| ir.cpp:2058:12:2058:13 | Address | &:r2058_1 | -| ir.cpp:2058:17:2058:27 | Address | &:r2058_4 | -| ir.cpp:2058:17:2058:27 | Address | &:r2058_8 | -| ir.cpp:2058:17:2058:27 | Arg(0) | 0:r2058_3 | -| ir.cpp:2058:17:2058:27 | Arg(this) | this:r2058_8 | -| ir.cpp:2058:17:2058:27 | CallTarget | func:r2058_2 | -| ir.cpp:2058:17:2058:27 | CallTarget | func:r2058_9 | -| ir.cpp:2058:17:2058:27 | ChiPartial | partial:m2058_5 | -| ir.cpp:2058:17:2058:27 | ChiPartial | partial:m2058_11 | -| ir.cpp:2058:17:2058:27 | ChiPartial | partial:m2058_13 | -| ir.cpp:2058:17:2058:27 | ChiTotal | total:m2056_4 | -| ir.cpp:2058:17:2058:27 | ChiTotal | total:m2058_6 | -| ir.cpp:2058:17:2058:27 | ChiTotal | total:m2058_7 | -| ir.cpp:2058:17:2058:27 | SideEffect | ~m2056_4 | -| ir.cpp:2058:17:2058:27 | SideEffect | ~m2058_6 | -| ir.cpp:2058:17:2058:27 | StoreValue | r2058_8 | -| ir.cpp:2058:17:2058:27 | Unary | r2058_4 | -| ir.cpp:2059:5:2059:13 | CallTarget | func:r2059_1 | -| ir.cpp:2059:5:2059:13 | ChiPartial | partial:m2059_5 | -| ir.cpp:2059:5:2059:13 | ChiTotal | total:m2058_12 | -| ir.cpp:2059:5:2059:13 | SideEffect | ~m2058_12 | -| ir.cpp:2059:12:2059:13 | Address | &:r2059_2 | -| ir.cpp:2059:12:2059:13 | Arg(0) | 0:r2059_3 | -| ir.cpp:2059:12:2059:13 | Load | m2058_15 | -| ir.cpp:2061:12:2061:13 | Address | &:r2061_1 | -| ir.cpp:2061:17:2061:30 | Address | &:r2061_4 | -| ir.cpp:2061:17:2061:30 | Address | &:r2061_8 | -| ir.cpp:2061:17:2061:30 | Arg(0) | 0:r2061_3 | -| ir.cpp:2061:17:2061:30 | Arg(this) | this:r2061_8 | -| ir.cpp:2061:17:2061:30 | CallTarget | func:r2061_2 | -| ir.cpp:2061:17:2061:30 | CallTarget | func:r2061_9 | -| ir.cpp:2061:17:2061:30 | ChiPartial | partial:m2061_5 | -| ir.cpp:2061:17:2061:30 | ChiPartial | partial:m2061_11 | -| ir.cpp:2061:17:2061:30 | ChiPartial | partial:m2061_13 | -| ir.cpp:2061:17:2061:30 | ChiTotal | total:m2059_6 | -| ir.cpp:2061:17:2061:30 | ChiTotal | total:m2061_6 | -| ir.cpp:2061:17:2061:30 | ChiTotal | total:m2061_7 | -| ir.cpp:2061:17:2061:30 | SideEffect | ~m2059_6 | -| ir.cpp:2061:17:2061:30 | SideEffect | ~m2061_6 | -| ir.cpp:2061:17:2061:30 | StoreValue | r2061_15 | -| ir.cpp:2061:17:2061:30 | Unary | r2061_4 | -| ir.cpp:2061:17:2061:30 | Unary | r2061_8 | -| ir.cpp:2062:5:2062:13 | CallTarget | func:r2062_1 | -| ir.cpp:2062:5:2062:13 | ChiPartial | partial:m2062_5 | -| ir.cpp:2062:5:2062:13 | ChiTotal | total:m2061_12 | -| ir.cpp:2062:5:2062:13 | SideEffect | ~m2061_12 | -| ir.cpp:2062:12:2062:13 | Address | &:r2062_2 | -| ir.cpp:2062:12:2062:13 | Arg(0) | 0:r2062_3 | -| ir.cpp:2062:12:2062:13 | Load | m2061_16 | -| ir.cpp:2064:15:2064:15 | Address | &:r2064_1 | -| ir.cpp:2064:19:2064:32 | Address | &:r2064_4 | -| ir.cpp:2064:19:2064:32 | Address | &:r2064_8 | -| ir.cpp:2064:19:2064:32 | Arg(0) | 0:r2064_3 | -| ir.cpp:2064:19:2064:32 | Arg(this) | this:r2064_8 | -| ir.cpp:2064:19:2064:32 | CallTarget | func:r2064_2 | -| ir.cpp:2064:19:2064:32 | CallTarget | func:r2064_9 | -| ir.cpp:2064:19:2064:32 | ChiPartial | partial:m2064_5 | -| ir.cpp:2064:19:2064:32 | ChiPartial | partial:m2064_11 | -| ir.cpp:2064:19:2064:32 | ChiPartial | partial:m2064_13 | -| ir.cpp:2064:19:2064:32 | ChiTotal | total:m2062_6 | -| ir.cpp:2064:19:2064:32 | ChiTotal | total:m2064_6 | -| ir.cpp:2064:19:2064:32 | ChiTotal | total:m2064_7 | -| ir.cpp:2064:19:2064:32 | SideEffect | ~m2062_6 | -| ir.cpp:2064:19:2064:32 | SideEffect | ~m2064_6 | -| ir.cpp:2064:19:2064:32 | StoreValue | r2064_8 | -| ir.cpp:2064:19:2064:32 | Unary | r2064_4 | -| ir.cpp:2065:5:2065:12 | CallTarget | func:r2065_1 | -| ir.cpp:2065:5:2065:12 | ChiPartial | partial:m2065_5 | -| ir.cpp:2065:5:2065:12 | ChiTotal | total:m2064_12 | -| ir.cpp:2065:5:2065:12 | SideEffect | ~m2064_12 | -| ir.cpp:2065:12:2065:12 | Address | &:r2065_2 | -| ir.cpp:2065:12:2065:12 | Arg(0) | 0:r2065_3 | -| ir.cpp:2065:12:2065:12 | Load | m2064_15 | -| ir.cpp:2066:1:2066:1 | Address | &:r2066_1 | -| ir.cpp:2070:6:2070:26 | ChiPartial | partial:m2070_3 | -| ir.cpp:2070:6:2070:26 | ChiTotal | total:m2070_2 | -| ir.cpp:2070:6:2070:26 | SideEffect | ~m2072_5 | -| ir.cpp:2071:13:2071:13 | Address | &:r2071_1 | -| ir.cpp:2071:16:2071:19 | StoreValue | r2071_2 | -| ir.cpp:2072:3:2072:27 | CallTarget | func:r2072_1 | -| ir.cpp:2072:3:2072:27 | ChiPartial | partial:m2072_4 | -| ir.cpp:2072:3:2072:27 | ChiTotal | total:m2070_4 | -| ir.cpp:2072:3:2072:27 | SideEffect | ~m2070_4 | -| ir.cpp:2072:29:2072:29 | Arg(0) | 0:r2072_2 | -| ir.cpp:2077:5:2077:11 | Address | &:r2077_6 | -| ir.cpp:2077:5:2077:11 | ChiPartial | partial:m2077_3 | -| ir.cpp:2077:5:2077:11 | ChiTotal | total:m2077_2 | -| ir.cpp:2077:5:2077:11 | Load | m2082_4 | -| ir.cpp:2077:5:2077:11 | SideEffect | ~m2081_4 | -| ir.cpp:2078:9:2078:9 | Address | &:r2078_1 | -| ir.cpp:2078:13:2078:15 | CallTarget | func:r2078_2 | -| ir.cpp:2078:13:2078:15 | ChiPartial | partial:m2078_6 | -| ir.cpp:2078:13:2078:15 | ChiTotal | total:m2077_4 | -| ir.cpp:2078:13:2078:15 | SideEffect | ~m2077_4 | -| ir.cpp:2078:13:2078:15 | StoreValue | r2078_5 | -| ir.cpp:2078:17:2078:17 | Arg(0) | 0:r2078_3 | -| ir.cpp:2078:19:2078:19 | Arg(1) | 1:r2078_4 | -| ir.cpp:2079:9:2079:9 | Address | &:r2079_1 | -| ir.cpp:2079:9:2079:9 | Left | r2079_2 | -| ir.cpp:2079:9:2079:9 | Load | m2078_8 | -| ir.cpp:2079:9:2079:14 | Condition | r2079_4 | -| ir.cpp:2079:14:2079:14 | Right | r2079_3 | -| ir.cpp:2080:9:2080:12 | CallTarget | func:r2080_1 | -| ir.cpp:2080:9:2080:12 | ChiPartial | partial:m2080_4 | -| ir.cpp:2080:9:2080:12 | ChiTotal | total:m2078_7 | -| ir.cpp:2080:9:2080:12 | SideEffect | ~m2078_7 | -| ir.cpp:2080:14:2080:14 | Arg(0) | 0:r2080_2 | -| ir.cpp:2081:5:2081:12 | CallTarget | func:r2081_1 | -| ir.cpp:2081:5:2081:12 | ChiPartial | partial:m2081_3 | -| ir.cpp:2081:5:2081:12 | ChiTotal | total:m2078_7 | -| ir.cpp:2081:5:2081:12 | SideEffect | ~m2078_7 | -| ir.cpp:2082:5:2082:13 | Address | &:r2082_1 | -| ir.cpp:2082:12:2082:12 | Address | &:r2082_2 | -| ir.cpp:2082:12:2082:12 | Load | m2078_8 | -| ir.cpp:2082:12:2082:12 | StoreValue | r2082_3 | -| ir.cpp:2085:6:2085:17 | ChiPartial | partial:m2085_3 | -| ir.cpp:2085:6:2085:17 | ChiTotal | total:m2085_2 | -| ir.cpp:2086:5:2086:12 | CallTarget | func:r2086_1 | -| ir.cpp:2086:5:2086:12 | ChiPartial | partial:m2086_3 | -| ir.cpp:2086:5:2086:12 | ChiTotal | total:m2085_4 | -| ir.cpp:2086:5:2086:12 | SideEffect | ~m2085_4 | -| ir.cpp:2087:5:2087:8 | CallTarget | func:r2087_1 | -| ir.cpp:2087:5:2087:8 | ChiPartial | partial:m2087_4 | -| ir.cpp:2087:5:2087:8 | ChiTotal | total:m2086_4 | -| ir.cpp:2087:5:2087:8 | SideEffect | ~m2086_4 | -| ir.cpp:2087:10:2087:10 | Arg(0) | 0:r2087_2 | -| ir.cpp:2090:5:2090:16 | Address | &:r2090_6 | -| ir.cpp:2090:5:2090:16 | ChiPartial | partial:m2090_3 | -| ir.cpp:2090:5:2090:16 | ChiTotal | total:m2090_2 | -| ir.cpp:2090:5:2090:16 | Load | m2095_4 | -| ir.cpp:2090:5:2090:16 | SideEffect | ~m2094_4 | -| ir.cpp:2091:9:2091:9 | Address | &:r2091_1 | -| ir.cpp:2091:13:2091:15 | CallTarget | func:r2091_2 | -| ir.cpp:2091:13:2091:15 | ChiPartial | partial:m2091_6 | -| ir.cpp:2091:13:2091:15 | ChiTotal | total:m2090_4 | -| ir.cpp:2091:13:2091:15 | SideEffect | ~m2090_4 | -| ir.cpp:2091:13:2091:15 | StoreValue | r2091_5 | -| ir.cpp:2091:17:2091:17 | Arg(0) | 0:r2091_3 | -| ir.cpp:2091:19:2091:19 | Arg(1) | 1:r2091_4 | -| ir.cpp:2092:9:2092:9 | Address | &:r2092_1 | -| ir.cpp:2092:9:2092:9 | Left | r2092_2 | -| ir.cpp:2092:9:2092:9 | Load | m2091_8 | -| ir.cpp:2092:9:2092:14 | Condition | r2092_4 | -| ir.cpp:2092:14:2092:14 | Right | r2092_3 | -| ir.cpp:2093:9:2093:20 | CallTarget | func:r2093_1 | -| ir.cpp:2094:5:2094:12 | CallTarget | func:r2094_1 | -| ir.cpp:2094:5:2094:12 | ChiPartial | partial:m2094_3 | -| ir.cpp:2094:5:2094:12 | ChiTotal | total:m2091_7 | -| ir.cpp:2094:5:2094:12 | SideEffect | ~m2091_7 | -| ir.cpp:2095:5:2095:13 | Address | &:r2095_1 | -| ir.cpp:2095:12:2095:12 | Address | &:r2095_2 | -| ir.cpp:2095:12:2095:12 | Load | m2091_8 | -| ir.cpp:2095:12:2095:12 | StoreValue | r2095_3 | -| ir.cpp:2098:6:2098:24 | ChiPartial | partial:m2098_3 | -| ir.cpp:2098:6:2098:24 | ChiTotal | total:m2098_2 | -| ir.cpp:2098:6:2098:24 | SideEffect | ~m2104_8 | -| ir.cpp:2098:33:2098:33 | Address | &:r2098_5 | -| ir.cpp:2099:3:2099:12 | Address | &:r2099_6 | -| ir.cpp:2099:3:2099:12 | Arg(0) | 0:r2099_5 | -| ir.cpp:2099:3:2099:12 | CallTarget | func:r2099_1 | -| ir.cpp:2099:3:2099:12 | ChiPartial | partial:m2099_7 | -| ir.cpp:2099:3:2099:12 | ChiTotal | total:m2098_4 | -| ir.cpp:2099:3:2099:12 | Right | r2099_4 | -| ir.cpp:2099:3:2099:12 | SideEffect | ~m2098_4 | -| ir.cpp:2099:3:2099:12 | Unary | r2099_6 | -| ir.cpp:2099:11:2099:11 | Address | &:r2099_2 | -| ir.cpp:2099:11:2099:11 | Left | r2099_3 | -| ir.cpp:2099:11:2099:11 | Load | m2098_6 | -| ir.cpp:2100:3:2100:18 | Address | &:r2100_7 | -| ir.cpp:2100:3:2100:18 | Arg(0) | 0:r2100_5 | -| ir.cpp:2100:3:2100:18 | CallTarget | func:r2100_1 | -| ir.cpp:2100:3:2100:18 | ChiPartial | partial:m2100_8 | -| ir.cpp:2100:3:2100:18 | ChiTotal | total:m2099_8 | -| ir.cpp:2100:3:2100:18 | Right | r2100_4 | -| ir.cpp:2100:3:2100:18 | SideEffect | ~m2099_8 | -| ir.cpp:2100:3:2100:18 | Unary | r2100_7 | -| ir.cpp:2100:7:2100:10 | Arg(1) | 1:r2100_6 | -| ir.cpp:2100:17:2100:17 | Address | &:r2100_2 | -| ir.cpp:2100:17:2100:17 | Left | r2100_3 | -| ir.cpp:2100:17:2100:17 | Load | m2098_6 | -| ir.cpp:2101:3:2101:15 | Address | &:r2101_6 | -| ir.cpp:2101:3:2101:15 | Arg(0) | 0:r2101_5 | -| ir.cpp:2101:3:2101:15 | CallTarget | func:r2101_1 | -| ir.cpp:2101:3:2101:15 | ChiPartial | partial:m2101_7 | -| ir.cpp:2101:3:2101:15 | ChiTotal | total:m2100_9 | -| ir.cpp:2101:3:2101:15 | Right | r2101_4 | -| ir.cpp:2101:3:2101:15 | SideEffect | ~m2100_9 | -| ir.cpp:2101:3:2101:15 | Unary | r2101_6 | -| ir.cpp:2101:14:2101:14 | Address | &:r2101_2 | -| ir.cpp:2101:14:2101:14 | Left | r2101_3 | -| ir.cpp:2101:14:2101:14 | Load | m2098_6 | -| ir.cpp:2102:3:2102:20 | Address | &:r2102_7 | -| ir.cpp:2102:3:2102:20 | Arg(0) | 0:r2102_5 | -| ir.cpp:2102:3:2102:20 | CallTarget | func:r2102_1 | -| ir.cpp:2102:3:2102:20 | ChiPartial | partial:m2102_8 | -| ir.cpp:2102:3:2102:20 | ChiTotal | total:m2101_8 | -| ir.cpp:2102:3:2102:20 | Right | r2102_4 | -| ir.cpp:2102:3:2102:20 | SideEffect | ~m2101_8 | -| ir.cpp:2102:3:2102:20 | Unary | r2102_7 | -| ir.cpp:2102:19:2102:19 | Address | &:r2102_2 | -| ir.cpp:2102:19:2102:19 | Left | r2102_3 | -| ir.cpp:2102:19:2102:19 | Load | m2098_6 | -| ir.cpp:2102:21:2102:21 | Arg(1) | 1:r2102_6 | -| ir.cpp:2103:3:2103:36 | Address | &:r2103_6 | -| ir.cpp:2103:3:2103:36 | Arg(0) | 0:r2103_5 | -| ir.cpp:2103:3:2103:36 | CallTarget | func:r2103_1 | -| ir.cpp:2103:3:2103:36 | ChiPartial | partial:m2103_7 | -| ir.cpp:2103:3:2103:36 | ChiTotal | total:m2102_9 | -| ir.cpp:2103:3:2103:36 | Right | r2103_4 | -| ir.cpp:2103:3:2103:36 | SideEffect | ~m2102_9 | -| ir.cpp:2103:3:2103:36 | Unary | r2103_6 | -| ir.cpp:2103:35:2103:35 | Address | &:r2103_2 | -| ir.cpp:2103:35:2103:35 | Left | r2103_3 | -| ir.cpp:2103:35:2103:35 | Load | m2098_6 | -| ir.cpp:2104:3:2104:24 | Address | &:r2104_6 | -| ir.cpp:2104:3:2104:24 | Arg(0) | 0:r2104_5 | -| ir.cpp:2104:3:2104:24 | CallTarget | func:r2104_1 | -| ir.cpp:2104:3:2104:24 | ChiPartial | partial:m2104_7 | -| ir.cpp:2104:3:2104:24 | ChiTotal | total:m2103_8 | -| ir.cpp:2104:3:2104:24 | Right | r2104_4 | -| ir.cpp:2104:3:2104:24 | SideEffect | ~m2103_8 | -| ir.cpp:2104:3:2104:24 | Unary | r2104_6 | -| ir.cpp:2104:11:2104:11 | Address | &:r2104_2 | -| ir.cpp:2104:11:2104:11 | Left | r2104_3 | -| ir.cpp:2104:11:2104:11 | Load | m2098_6 | -| ir.cpp:2109:7:2109:17 | Address | &:r2109_10 | -| ir.cpp:2109:7:2109:17 | ChiPartial | partial:m2109_3 | -| ir.cpp:2109:7:2109:17 | ChiTotal | total:m2109_2 | -| ir.cpp:2109:7:2109:17 | Load | m2112_4 | -| ir.cpp:2109:7:2109:17 | SideEffect | m2109_3 | -| ir.cpp:2109:25:2109:25 | Address | &:r2109_5 | -| ir.cpp:2109:25:2109:25 | Address | &:r2109_5 | -| ir.cpp:2109:25:2109:25 | Address | &:r2109_7 | -| ir.cpp:2109:25:2109:25 | Address | &:r2109_7 | -| ir.cpp:2109:25:2109:25 | Load | m2109_6 | -| ir.cpp:2109:25:2109:25 | SideEffect | m2109_8 | -| ir.cpp:2110:9:2110:11 | Address | &:r2110_1 | -| ir.cpp:2111:10:2111:10 | Address | &:r2111_1 | -| ir.cpp:2111:14:2111:19 | CallTarget | func:r2111_2 | -| ir.cpp:2111:14:2111:19 | StoreValue | r2111_8 | -| ir.cpp:2111:21:2111:21 | Address | &:r2111_3 | -| ir.cpp:2111:21:2111:21 | Address | &:r2111_5 | -| ir.cpp:2111:21:2111:21 | Arg(0) | 0:r2111_5 | -| ir.cpp:2111:21:2111:21 | Load | m2109_6 | -| ir.cpp:2111:21:2111:21 | SideEffect | ~m2109_8 | -| ir.cpp:2111:21:2111:21 | Unary | r2111_4 | -| ir.cpp:2111:24:2111:27 | Address | &:r2111_7 | -| ir.cpp:2111:24:2111:27 | Arg(1) | 1:r2111_7 | -| ir.cpp:2111:24:2111:27 | ChiPartial | partial:m2111_10 | -| ir.cpp:2111:24:2111:27 | ChiTotal | total:m2110_2 | -| ir.cpp:2111:25:2111:27 | Unary | r2111_6 | -| ir.cpp:2112:3:2112:13 | Address | &:r2112_1 | -| ir.cpp:2112:10:2112:12 | Address | &:r2112_2 | -| ir.cpp:2112:10:2112:12 | Load | m2111_11 | -| ir.cpp:2112:10:2112:12 | StoreValue | r2112_3 | -| ir.cpp:2119:6:2119:39 | ChiPartial | partial:m2119_3 | -| ir.cpp:2119:6:2119:39 | ChiTotal | total:m2119_2 | -| ir.cpp:2119:6:2119:39 | SideEffect | ~m2120_8 | -| ir.cpp:2120:6:2120:42 | Address | &:r2120_1 | -| ir.cpp:2120:6:2120:42 | Condition | r2120_12 | -| ir.cpp:2120:22:2120:22 | Address | &:r2120_4 | -| ir.cpp:2120:22:2120:22 | Address | &:r2120_4 | -| ir.cpp:2120:22:2120:22 | Arg(this) | this:r2120_4 | -| ir.cpp:2120:22:2120:22 | CallTarget | func:r2120_5 | -| ir.cpp:2120:22:2120:22 | ChiPartial | partial:m2120_7 | -| ir.cpp:2120:22:2120:22 | ChiPartial | partial:m2120_10 | -| ir.cpp:2120:22:2120:22 | ChiTotal | total:m2119_4 | -| ir.cpp:2120:22:2120:22 | ChiTotal | total:m2120_3 | -| ir.cpp:2120:22:2120:22 | SideEffect | m2120_3 | -| ir.cpp:2120:22:2120:22 | SideEffect | ~m2119_4 | -| ir.cpp:2120:22:2120:22 | Unary | r2120_6 | -| ir.cpp:2120:25:2120:42 | StoreValue | r2120_2 | +| ir.cpp:2020:7:2020:7 | ChiPartial | partial:m2020_12 | +| ir.cpp:2020:7:2020:7 | ChiTotal | total:m2019_4 | +| ir.cpp:2020:7:2020:7 | SideEffect | ~m2019_4 | +| ir.cpp:2020:7:2020:7 | Unary | r2020_11 | +| ir.cpp:2020:9:2020:9 | Address | &:r2020_3 | +| ir.cpp:2020:9:2020:9 | Condition | r2020_4 | +| ir.cpp:2020:9:2020:9 | Load | m2019_6 | +| ir.cpp:2020:9:2020:17 | Address | &:r2020_7 | +| ir.cpp:2020:9:2020:17 | Address | &:r2020_10 | +| ir.cpp:2020:9:2020:17 | Address | &:r2020_20 | +| ir.cpp:2020:9:2020:17 | Address | &:r2020_23 | +| ir.cpp:2020:9:2020:17 | Arg(0) | 0:r2020_10 | +| ir.cpp:2020:9:2020:17 | Load | m2020_6 | +| ir.cpp:2020:9:2020:17 | Phi | from 2:m2020_21 | +| ir.cpp:2020:9:2020:17 | Phi | from 3:m2020_24 | +| ir.cpp:2020:9:2020:17 | SideEffect | ~m2020_13 | +| ir.cpp:2020:9:2020:17 | Unary | r2020_8 | +| ir.cpp:2020:9:2020:17 | Unary | r2020_9 | +| ir.cpp:2020:13:2020:13 | StoreValue | r2020_19 | +| ir.cpp:2020:17:2020:17 | StoreValue | r2020_22 | +| ir.cpp:2021:5:2021:5 | Address | &:r2021_1 | +| ir.cpp:2021:5:2021:5 | Address | &:r2021_1 | +| ir.cpp:2021:5:2021:5 | Arg(this) | this:r2021_1 | +| ir.cpp:2021:5:2021:5 | ChiPartial | partial:m2021_19 | +| ir.cpp:2021:5:2021:5 | ChiTotal | total:m2020_17 | +| ir.cpp:2021:5:2021:5 | SideEffect | m2020_17 | +| ir.cpp:2021:7:2021:7 | CallTarget | func:r2021_2 | +| ir.cpp:2021:7:2021:7 | ChiPartial | partial:m2021_15 | +| ir.cpp:2021:7:2021:7 | ChiTotal | total:m2021_7 | +| ir.cpp:2021:7:2021:7 | SideEffect | ~m2021_7 | +| ir.cpp:2021:7:2021:7 | Unary | r2021_14 | +| ir.cpp:2021:9:2021:9 | Address | &:r2021_4 | +| ir.cpp:2021:9:2021:9 | Address | &:r2021_9 | +| ir.cpp:2021:9:2021:9 | Address | &:r2021_35 | +| ir.cpp:2021:9:2021:9 | Address | &:r2021_46 | +| ir.cpp:2021:9:2021:9 | Condition | r2021_5 | +| ir.cpp:2021:9:2021:9 | Load | m2019_6 | +| ir.cpp:2021:9:2021:9 | Load | m2021_8 | +| ir.cpp:2021:9:2021:9 | Phi | from 5:m2021_36 | +| ir.cpp:2021:9:2021:9 | Phi | from 5:~m2021_30 | +| ir.cpp:2021:9:2021:9 | Phi | from 6:m2021_47 | +| ir.cpp:2021:9:2021:9 | Phi | from 6:~m2021_42 | +| ir.cpp:2021:9:2021:9 | StoreValue | r2021_10 | +| ir.cpp:2021:9:2021:34 | Address | &:r2021_3 | +| ir.cpp:2021:9:2021:34 | Address | &:r2021_13 | +| ir.cpp:2021:9:2021:34 | Arg(0) | 0:r2021_13 | +| ir.cpp:2021:9:2021:34 | SideEffect | ~m2021_11 | +| ir.cpp:2021:9:2021:34 | Unary | r2021_3 | +| ir.cpp:2021:9:2021:34 | Unary | r2021_12 | +| ir.cpp:2021:13:2021:13 | Address | &:r2021_22 | +| ir.cpp:2021:13:2021:13 | Address | &:r2021_22 | +| ir.cpp:2021:13:2021:13 | Address | &:r2021_22 | +| ir.cpp:2021:13:2021:13 | Address | &:r2021_27 | +| ir.cpp:2021:13:2021:13 | Arg(0) | 0:r2021_27 | +| ir.cpp:2021:13:2021:13 | Arg(this) | this:r2021_22 | +| ir.cpp:2021:13:2021:13 | CallTarget | func:r2021_24 | +| ir.cpp:2021:13:2021:13 | ChiPartial | partial:m2021_29 | +| ir.cpp:2021:13:2021:13 | ChiPartial | partial:m2021_32 | +| ir.cpp:2021:13:2021:13 | ChiTotal | total:m2020_13 | +| ir.cpp:2021:13:2021:13 | ChiTotal | total:m2021_23 | +| ir.cpp:2021:13:2021:13 | Load | m2021_33 | +| ir.cpp:2021:13:2021:13 | SideEffect | ~m2019_8 | +| ir.cpp:2021:13:2021:13 | SideEffect | ~m2020_13 | +| ir.cpp:2021:13:2021:13 | StoreValue | r2021_34 | +| ir.cpp:2021:13:2021:13 | Unary | r2021_25 | +| ir.cpp:2021:13:2021:13 | Unary | r2021_26 | +| ir.cpp:2021:17:2021:34 | Address | &:r2021_37 | +| ir.cpp:2021:17:2021:34 | Address | &:r2021_37 | +| ir.cpp:2021:17:2021:34 | Address | &:r2021_37 | +| ir.cpp:2021:17:2021:34 | Arg(this) | this:r2021_37 | +| ir.cpp:2021:17:2021:34 | CallTarget | func:r2021_39 | +| ir.cpp:2021:17:2021:34 | ChiPartial | partial:m2021_41 | +| ir.cpp:2021:17:2021:34 | ChiPartial | partial:m2021_43 | +| ir.cpp:2021:17:2021:34 | ChiTotal | total:m2020_13 | +| ir.cpp:2021:17:2021:34 | ChiTotal | total:m2021_38 | +| ir.cpp:2021:17:2021:34 | Load | m2021_44 | +| ir.cpp:2021:17:2021:34 | SideEffect | ~m2020_13 | +| ir.cpp:2021:17:2021:34 | StoreValue | r2021_45 | +| ir.cpp:2022:5:2022:5 | Address | &:r2022_1 | +| ir.cpp:2022:5:2022:5 | Address | &:r2022_1 | +| ir.cpp:2022:5:2022:5 | Arg(this) | this:r2022_1 | +| ir.cpp:2022:5:2022:5 | ChiPartial | partial:m2022_19 | +| ir.cpp:2022:5:2022:5 | ChiTotal | total:m2021_20 | +| ir.cpp:2022:5:2022:5 | SideEffect | m2021_20 | +| ir.cpp:2022:7:2022:7 | CallTarget | func:r2022_2 | +| ir.cpp:2022:7:2022:7 | ChiPartial | partial:m2022_15 | +| ir.cpp:2022:7:2022:7 | ChiTotal | total:m2022_7 | +| ir.cpp:2022:7:2022:7 | SideEffect | ~m2022_7 | +| ir.cpp:2022:7:2022:7 | Unary | r2022_14 | +| ir.cpp:2022:9:2022:9 | Address | &:r2022_4 | +| ir.cpp:2022:9:2022:9 | Address | &:r2022_9 | +| ir.cpp:2022:9:2022:9 | Address | &:r2022_31 | +| ir.cpp:2022:9:2022:9 | Address | &:r2022_42 | +| ir.cpp:2022:9:2022:9 | Condition | r2022_5 | +| ir.cpp:2022:9:2022:9 | Load | m2019_6 | +| ir.cpp:2022:9:2022:9 | Load | m2022_8 | +| ir.cpp:2022:9:2022:9 | Phi | from 8:m2022_32 | +| ir.cpp:2022:9:2022:9 | Phi | from 8:~m2022_27 | +| ir.cpp:2022:9:2022:9 | Phi | from 9:m2022_43 | +| ir.cpp:2022:9:2022:9 | Phi | from 9:~m2022_38 | +| ir.cpp:2022:9:2022:9 | StoreValue | r2022_10 | +| ir.cpp:2022:9:2022:51 | Address | &:r2022_3 | +| ir.cpp:2022:9:2022:51 | Address | &:r2022_13 | +| ir.cpp:2022:9:2022:51 | Arg(0) | 0:r2022_13 | +| ir.cpp:2022:9:2022:51 | SideEffect | ~m2022_11 | +| ir.cpp:2022:9:2022:51 | Unary | r2022_3 | +| ir.cpp:2022:9:2022:51 | Unary | r2022_12 | +| ir.cpp:2022:13:2022:30 | Address | &:r2022_22 | +| ir.cpp:2022:13:2022:30 | Address | &:r2022_22 | +| ir.cpp:2022:13:2022:30 | Address | &:r2022_22 | +| ir.cpp:2022:13:2022:30 | Arg(this) | this:r2022_22 | +| ir.cpp:2022:13:2022:30 | CallTarget | func:r2022_24 | +| ir.cpp:2022:13:2022:30 | ChiPartial | partial:m2022_26 | +| ir.cpp:2022:13:2022:30 | ChiPartial | partial:m2022_28 | +| ir.cpp:2022:13:2022:30 | ChiTotal | total:m2021_16 | +| ir.cpp:2022:13:2022:30 | ChiTotal | total:m2022_23 | +| ir.cpp:2022:13:2022:30 | Load | m2022_29 | +| ir.cpp:2022:13:2022:30 | SideEffect | ~m2021_16 | +| ir.cpp:2022:13:2022:30 | StoreValue | r2022_30 | +| ir.cpp:2022:34:2022:51 | Address | &:r2022_33 | +| ir.cpp:2022:34:2022:51 | Address | &:r2022_33 | +| ir.cpp:2022:34:2022:51 | Address | &:r2022_33 | +| ir.cpp:2022:34:2022:51 | Arg(this) | this:r2022_33 | +| ir.cpp:2022:34:2022:51 | CallTarget | func:r2022_35 | +| ir.cpp:2022:34:2022:51 | ChiPartial | partial:m2022_37 | +| ir.cpp:2022:34:2022:51 | ChiPartial | partial:m2022_39 | +| ir.cpp:2022:34:2022:51 | ChiTotal | total:m2021_16 | +| ir.cpp:2022:34:2022:51 | ChiTotal | total:m2022_34 | +| ir.cpp:2022:34:2022:51 | Load | m2022_40 | +| ir.cpp:2022:34:2022:51 | SideEffect | ~m2021_16 | +| ir.cpp:2022:34:2022:51 | StoreValue | r2022_41 | +| ir.cpp:2023:5:2023:19 | ChiPartial | partial:m2023_35 | +| ir.cpp:2023:5:2023:19 | ChiTotal | total:m2023_17 | +| ir.cpp:2023:5:2023:19 | SideEffect | m2023_17 | +| ir.cpp:2023:6:2023:6 | Address | &:r2023_1 | +| ir.cpp:2023:6:2023:6 | Address | &:r2023_1 | +| ir.cpp:2023:6:2023:6 | Arg(this) | this:r2023_1 | +| ir.cpp:2023:6:2023:6 | ChiPartial | partial:m2023_16 | +| ir.cpp:2023:6:2023:6 | ChiTotal | total:m2022_20 | +| ir.cpp:2023:6:2023:6 | SideEffect | m2022_20 | +| ir.cpp:2023:8:2023:8 | CallTarget | func:r2023_2 | +| ir.cpp:2023:8:2023:8 | ChiPartial | partial:m2023_12 | +| ir.cpp:2023:8:2023:8 | ChiTotal | total:m2022_16 | +| ir.cpp:2023:8:2023:8 | SideEffect | ~m2022_16 | +| ir.cpp:2023:8:2023:8 | Unary | r2023_11 | +| ir.cpp:2023:8:2023:19 | Address | &:r2023_18 | +| ir.cpp:2023:8:2023:19 | Address | &:r2023_18 | +| ir.cpp:2023:8:2023:19 | Arg(this) | this:r2023_18 | +| ir.cpp:2023:10:2023:10 | Address | &:r2023_3 | +| ir.cpp:2023:10:2023:10 | Condition | r2023_4 | +| ir.cpp:2023:10:2023:10 | Load | m2019_6 | +| ir.cpp:2023:10:2023:18 | Address | &:r2023_7 | +| ir.cpp:2023:10:2023:18 | Address | &:r2023_10 | +| ir.cpp:2023:10:2023:18 | Address | &:r2023_39 | +| ir.cpp:2023:10:2023:18 | Address | &:r2023_42 | +| ir.cpp:2023:10:2023:18 | Arg(0) | 0:r2023_10 | +| ir.cpp:2023:10:2023:18 | Load | m2023_6 | +| ir.cpp:2023:10:2023:18 | Phi | from 11:m2023_40 | +| ir.cpp:2023:10:2023:18 | Phi | from 12:m2023_43 | +| ir.cpp:2023:10:2023:18 | SideEffect | ~m2023_13 | +| ir.cpp:2023:10:2023:18 | Unary | r2023_8 | +| ir.cpp:2023:10:2023:18 | Unary | r2023_9 | +| ir.cpp:2023:14:2023:14 | StoreValue | r2023_38 | +| ir.cpp:2023:18:2023:18 | StoreValue | r2023_41 | +| ir.cpp:2023:21:2023:21 | CallTarget | func:r2023_19 | +| ir.cpp:2023:21:2023:21 | ChiPartial | partial:m2023_31 | +| ir.cpp:2023:21:2023:21 | ChiTotal | total:m2023_25 | +| ir.cpp:2023:21:2023:21 | SideEffect | ~m2023_25 | +| ir.cpp:2023:21:2023:21 | Unary | r2023_30 | +| ir.cpp:2023:23:2023:40 | Address | &:r2023_20 | +| ir.cpp:2023:23:2023:40 | Address | &:r2023_20 | +| ir.cpp:2023:23:2023:40 | Address | &:r2023_29 | +| ir.cpp:2023:23:2023:40 | Arg(0) | 0:r2023_29 | +| ir.cpp:2023:23:2023:40 | Arg(this) | this:r2023_20 | +| ir.cpp:2023:23:2023:40 | CallTarget | func:r2023_22 | +| ir.cpp:2023:23:2023:40 | ChiPartial | partial:m2023_24 | +| ir.cpp:2023:23:2023:40 | ChiPartial | partial:m2023_26 | +| ir.cpp:2023:23:2023:40 | ChiTotal | total:m2023_13 | +| ir.cpp:2023:23:2023:40 | ChiTotal | total:m2023_21 | +| ir.cpp:2023:23:2023:40 | SideEffect | ~m2023_13 | +| ir.cpp:2023:23:2023:40 | SideEffect | ~m2023_27 | +| ir.cpp:2023:23:2023:40 | Unary | r2023_20 | +| ir.cpp:2023:23:2023:40 | Unary | r2023_28 | +| ir.cpp:2028:14:2028:22 | Address | &:r2028_7 | +| ir.cpp:2028:14:2028:22 | ChiPartial | partial:m2028_3 | +| ir.cpp:2028:14:2028:22 | ChiTotal | total:m2028_2 | +| ir.cpp:2028:14:2028:22 | Load | m2033_2 | +| ir.cpp:2028:14:2028:22 | SideEffect | ~m2030_6 | +| ir.cpp:2028:37:2028:37 | Address | &:r2028_5 | +| ir.cpp:2029:16:2029:16 | Address | &:r2029_1 | +| ir.cpp:2030:3:2030:3 | Address | &:r2030_10 | +| ir.cpp:2030:7:2030:7 | Address | &:r2030_1 | +| ir.cpp:2030:7:2030:7 | Left | r2030_2 | +| ir.cpp:2030:7:2030:7 | Load | m2028_6 | +| ir.cpp:2030:7:2030:13 | Condition | r2030_4 | +| ir.cpp:2030:7:2032:28 | Address | &:r2030_8 | +| ir.cpp:2030:7:2032:28 | Address | &:r2030_12 | +| ir.cpp:2030:7:2032:28 | Address | &:r2030_14 | +| ir.cpp:2030:7:2032:28 | Load | m2030_7 | +| ir.cpp:2030:7:2032:28 | Phi | from 2:m2030_13 | +| ir.cpp:2030:7:2032:28 | Phi | from 2:~m2031_6 | +| ir.cpp:2030:7:2032:28 | Phi | from 3:m2030_15 | +| ir.cpp:2030:7:2032:28 | Phi | from 3:~m2032_6 | +| ir.cpp:2030:7:2032:28 | StoreValue | r2030_9 | +| ir.cpp:2030:11:2030:13 | Right | r2030_3 | +| ir.cpp:2031:6:2031:20 | CallTarget | func:r2031_1 | +| ir.cpp:2031:6:2031:20 | ChiPartial | partial:m2031_5 | +| ir.cpp:2031:6:2031:20 | ChiTotal | total:m2028_4 | +| ir.cpp:2031:6:2031:20 | SideEffect | ~m2028_4 | +| ir.cpp:2031:6:2031:26 | StoreValue | r2031_9 | +| ir.cpp:2031:22:2031:22 | Address | &:r2031_2 | +| ir.cpp:2031:22:2031:22 | Arg(0) | 0:r2031_3 | +| ir.cpp:2031:22:2031:22 | Load | m2028_6 | +| ir.cpp:2031:26:2031:26 | Address | &:r2031_7 | +| ir.cpp:2031:26:2031:26 | Load | m2028_6 | +| ir.cpp:2031:26:2031:26 | Unary | r2031_8 | +| ir.cpp:2032:5:2032:28 | StoreValue | r2032_9 | +| ir.cpp:2032:6:2032:20 | CallTarget | func:r2032_1 | +| ir.cpp:2032:6:2032:20 | ChiPartial | partial:m2032_5 | +| ir.cpp:2032:6:2032:20 | ChiTotal | total:m2028_4 | +| ir.cpp:2032:6:2032:20 | SideEffect | ~m2028_4 | +| ir.cpp:2032:6:2032:27 | Unary | r2032_8 | +| ir.cpp:2032:22:2032:22 | Address | &:r2032_2 | +| ir.cpp:2032:22:2032:22 | Arg(0) | 0:r2032_3 | +| ir.cpp:2032:22:2032:22 | Load | m2028_6 | +| ir.cpp:2032:26:2032:27 | Unary | r2032_7 | +| ir.cpp:2033:1:2033:1 | Address | &:r2033_1 | +| ir.cpp:2035:6:2035:17 | ChiPartial | partial:m2035_3 | +| ir.cpp:2035:6:2035:17 | ChiTotal | total:m2035_2 | +| ir.cpp:2035:6:2035:17 | SideEffect | ~m2038_6 | +| ir.cpp:2036:8:2036:8 | Address | &:r2036_1 | +| ir.cpp:2036:12:2036:18 | Address | &:r2036_4 | +| ir.cpp:2036:12:2036:18 | Arg(0) | 0:r2036_3 | +| ir.cpp:2036:12:2036:18 | CallTarget | func:r2036_2 | +| ir.cpp:2036:12:2036:18 | ChiPartial | partial:m2036_5 | +| ir.cpp:2036:12:2036:18 | ChiTotal | total:m2035_4 | +| ir.cpp:2036:12:2036:18 | SideEffect | ~m2035_4 | +| ir.cpp:2036:12:2036:18 | StoreValue | r2036_8 | +| ir.cpp:2036:12:2036:18 | Unary | r2036_4 | +| ir.cpp:2037:3:2037:4 | Address | &:r2037_4 | +| ir.cpp:2037:3:2037:8 | ChiPartial | partial:m2037_5 | +| ir.cpp:2037:3:2037:8 | ChiTotal | total:m2036_7 | +| ir.cpp:2037:4:2037:4 | Address | &:r2037_2 | +| ir.cpp:2037:4:2037:4 | Load | m2036_9 | +| ir.cpp:2037:4:2037:4 | Unary | r2037_3 | +| ir.cpp:2037:8:2037:8 | StoreValue | r2037_1 | +| ir.cpp:2038:3:2038:10 | CallTarget | func:r2038_1 | +| ir.cpp:2038:3:2038:10 | ChiPartial | partial:m2038_5 | +| ir.cpp:2038:3:2038:10 | ChiTotal | total:m2036_6 | +| ir.cpp:2038:3:2038:10 | SideEffect | ~m2036_6 | +| ir.cpp:2038:10:2038:10 | Address | &:r2038_2 | +| ir.cpp:2038:10:2038:10 | Arg(0) | 0:r2038_3 | +| ir.cpp:2038:10:2038:10 | Load | m2036_9 | +| ir.cpp:2041:7:2041:7 | Address | &:r2041_5 | +| ir.cpp:2041:7:2041:7 | Address | &:r2041_5 | +| ir.cpp:2041:7:2041:7 | Address | &:r2041_7 | +| ir.cpp:2041:7:2041:7 | Address | &:r2041_7 | +| ir.cpp:2041:7:2041:7 | ChiPartial | partial:m2041_3 | +| ir.cpp:2041:7:2041:7 | ChiTotal | total:m2041_2 | +| ir.cpp:2041:7:2041:7 | Load | m2041_6 | +| ir.cpp:2041:7:2041:7 | SideEffect | m2041_3 | +| ir.cpp:2041:7:2041:7 | SideEffect | m2041_8 | +| ir.cpp:2043:10:2043:24 | ChiPartial | partial:m2043_3 | +| ir.cpp:2043:10:2043:24 | ChiTotal | total:m2043_2 | +| ir.cpp:2043:10:2043:24 | SideEffect | m2043_3 | +| ir.cpp:2043:32:2043:32 | Address | &:r2043_5 | +| ir.cpp:2043:32:2043:32 | Address | &:r2043_5 | +| ir.cpp:2043:32:2043:32 | Address | &:r2043_7 | +| ir.cpp:2043:32:2043:32 | Address | &:r2043_7 | +| ir.cpp:2043:32:2043:32 | Load | m2043_6 | +| ir.cpp:2043:32:2043:32 | SideEffect | m2043_8 | +| ir.cpp:2045:13:2045:18 | Address | &:r2045_5 | +| ir.cpp:2045:13:2045:18 | Address | &:r2045_5 | +| ir.cpp:2045:13:2045:18 | Address | &:r2045_7 | +| ir.cpp:2045:13:2045:18 | Address | &:r2045_7 | +| ir.cpp:2045:13:2045:18 | ChiPartial | partial:m2045_3 | +| ir.cpp:2045:13:2045:18 | ChiTotal | total:m2045_2 | +| ir.cpp:2045:13:2045:18 | Load | m2045_6 | +| ir.cpp:2045:13:2045:18 | SideEffect | m2045_3 | +| ir.cpp:2045:13:2045:18 | SideEffect | m2045_8 | +| ir.cpp:2048:7:2048:7 | Address | &:r2048_5 | +| ir.cpp:2048:7:2048:7 | Address | &:r2048_5 | +| ir.cpp:2048:7:2048:7 | Address | &:r2048_7 | +| ir.cpp:2048:7:2048:7 | Address | &:r2048_7 | +| ir.cpp:2048:7:2048:7 | Address | &:r2048_9 | +| ir.cpp:2048:7:2048:7 | Arg(this) | this:r2048_9 | +| ir.cpp:2048:7:2048:7 | CallTarget | func:r2048_10 | +| ir.cpp:2048:7:2048:7 | ChiPartial | partial:m2048_3 | +| ir.cpp:2048:7:2048:7 | ChiPartial | partial:m2048_12 | +| ir.cpp:2048:7:2048:7 | ChiPartial | partial:m2048_14 | +| ir.cpp:2048:7:2048:7 | ChiTotal | total:m2048_2 | +| ir.cpp:2048:7:2048:7 | ChiTotal | total:m2048_4 | +| ir.cpp:2048:7:2048:7 | ChiTotal | total:m2048_8 | +| ir.cpp:2048:7:2048:7 | Load | m2048_6 | +| ir.cpp:2048:7:2048:7 | SideEffect | m2048_15 | +| ir.cpp:2048:7:2048:7 | SideEffect | ~m2048_4 | +| ir.cpp:2048:7:2048:7 | SideEffect | ~m2048_13 | +| ir.cpp:2048:7:2048:7 | Unary | m2048_6 | +| ir.cpp:2051:5:2051:13 | Address | &:r2051_5 | +| ir.cpp:2051:5:2051:13 | Address | &:r2051_5 | +| ir.cpp:2051:5:2051:13 | Address | &:r2051_7 | +| ir.cpp:2051:5:2051:13 | Address | &:r2051_7 | +| ir.cpp:2051:5:2051:13 | ChiPartial | partial:m2051_3 | +| ir.cpp:2051:5:2051:13 | ChiTotal | total:m2051_2 | +| ir.cpp:2051:5:2051:13 | Load | m2051_6 | +| ir.cpp:2051:5:2051:13 | SideEffect | m2051_8 | +| ir.cpp:2051:5:2051:13 | SideEffect | ~m2051_14 | +| ir.cpp:2051:5:2051:13 | Unary | m2051_6 | +| ir.cpp:2051:18:2051:18 | Arg(this) | this:r2051_10 | +| ir.cpp:2051:18:2051:18 | CallTarget | func:r2051_11 | +| ir.cpp:2051:18:2051:18 | ChiPartial | partial:m2051_13 | +| ir.cpp:2051:18:2051:18 | ChiTotal | total:m2051_4 | +| ir.cpp:2051:18:2051:18 | SideEffect | ~m2051_4 | +| ir.cpp:2053:10:2053:24 | ChiPartial | partial:m2053_3 | +| ir.cpp:2053:10:2053:24 | ChiTotal | total:m2053_2 | +| ir.cpp:2053:10:2053:24 | SideEffect | m2053_3 | +| ir.cpp:2053:32:2053:32 | Address | &:r2053_5 | +| ir.cpp:2053:32:2053:32 | Address | &:r2053_5 | +| ir.cpp:2053:32:2053:32 | Address | &:r2053_7 | +| ir.cpp:2053:32:2053:32 | Address | &:r2053_7 | +| ir.cpp:2053:32:2053:32 | Load | m2053_6 | +| ir.cpp:2053:32:2053:32 | SideEffect | m2053_8 | +| ir.cpp:2058:5:2058:18 | Address | &:r2058_5 | +| ir.cpp:2058:5:2058:18 | ChiPartial | partial:m2058_3 | +| ir.cpp:2058:5:2058:18 | ChiTotal | total:m2058_2 | +| ir.cpp:2058:5:2058:18 | Load | m2068_2 | +| ir.cpp:2058:5:2058:18 | SideEffect | ~m2067_6 | +| ir.cpp:2060:12:2060:13 | Address | &:r2060_1 | +| ir.cpp:2060:17:2060:27 | Address | &:r2060_4 | +| ir.cpp:2060:17:2060:27 | Address | &:r2060_8 | +| ir.cpp:2060:17:2060:27 | Arg(0) | 0:r2060_3 | +| ir.cpp:2060:17:2060:27 | Arg(this) | this:r2060_8 | +| ir.cpp:2060:17:2060:27 | CallTarget | func:r2060_2 | +| ir.cpp:2060:17:2060:27 | CallTarget | func:r2060_9 | +| ir.cpp:2060:17:2060:27 | ChiPartial | partial:m2060_5 | +| ir.cpp:2060:17:2060:27 | ChiPartial | partial:m2060_11 | +| ir.cpp:2060:17:2060:27 | ChiPartial | partial:m2060_13 | +| ir.cpp:2060:17:2060:27 | ChiTotal | total:m2058_4 | +| ir.cpp:2060:17:2060:27 | ChiTotal | total:m2060_6 | +| ir.cpp:2060:17:2060:27 | ChiTotal | total:m2060_7 | +| ir.cpp:2060:17:2060:27 | SideEffect | ~m2058_4 | +| ir.cpp:2060:17:2060:27 | SideEffect | ~m2060_6 | +| ir.cpp:2060:17:2060:27 | StoreValue | r2060_8 | +| ir.cpp:2060:17:2060:27 | Unary | r2060_4 | +| ir.cpp:2061:5:2061:13 | CallTarget | func:r2061_1 | +| ir.cpp:2061:5:2061:13 | ChiPartial | partial:m2061_5 | +| ir.cpp:2061:5:2061:13 | ChiTotal | total:m2060_12 | +| ir.cpp:2061:5:2061:13 | SideEffect | ~m2060_12 | +| ir.cpp:2061:12:2061:13 | Address | &:r2061_2 | +| ir.cpp:2061:12:2061:13 | Arg(0) | 0:r2061_3 | +| ir.cpp:2061:12:2061:13 | Load | m2060_15 | +| ir.cpp:2063:12:2063:13 | Address | &:r2063_1 | +| ir.cpp:2063:17:2063:30 | Address | &:r2063_4 | +| ir.cpp:2063:17:2063:30 | Address | &:r2063_8 | +| ir.cpp:2063:17:2063:30 | Arg(0) | 0:r2063_3 | +| ir.cpp:2063:17:2063:30 | Arg(this) | this:r2063_8 | +| ir.cpp:2063:17:2063:30 | CallTarget | func:r2063_2 | +| ir.cpp:2063:17:2063:30 | CallTarget | func:r2063_9 | +| ir.cpp:2063:17:2063:30 | ChiPartial | partial:m2063_5 | +| ir.cpp:2063:17:2063:30 | ChiPartial | partial:m2063_11 | +| ir.cpp:2063:17:2063:30 | ChiPartial | partial:m2063_13 | +| ir.cpp:2063:17:2063:30 | ChiTotal | total:m2061_6 | +| ir.cpp:2063:17:2063:30 | ChiTotal | total:m2063_6 | +| ir.cpp:2063:17:2063:30 | ChiTotal | total:m2063_7 | +| ir.cpp:2063:17:2063:30 | SideEffect | ~m2061_6 | +| ir.cpp:2063:17:2063:30 | SideEffect | ~m2063_6 | +| ir.cpp:2063:17:2063:30 | StoreValue | r2063_15 | +| ir.cpp:2063:17:2063:30 | Unary | r2063_4 | +| ir.cpp:2063:17:2063:30 | Unary | r2063_8 | +| ir.cpp:2064:5:2064:13 | CallTarget | func:r2064_1 | +| ir.cpp:2064:5:2064:13 | ChiPartial | partial:m2064_5 | +| ir.cpp:2064:5:2064:13 | ChiTotal | total:m2063_12 | +| ir.cpp:2064:5:2064:13 | SideEffect | ~m2063_12 | +| ir.cpp:2064:12:2064:13 | Address | &:r2064_2 | +| ir.cpp:2064:12:2064:13 | Arg(0) | 0:r2064_3 | +| ir.cpp:2064:12:2064:13 | Load | m2063_16 | +| ir.cpp:2066:15:2066:15 | Address | &:r2066_1 | +| ir.cpp:2066:19:2066:32 | Address | &:r2066_4 | +| ir.cpp:2066:19:2066:32 | Address | &:r2066_8 | +| ir.cpp:2066:19:2066:32 | Arg(0) | 0:r2066_3 | +| ir.cpp:2066:19:2066:32 | Arg(this) | this:r2066_8 | +| ir.cpp:2066:19:2066:32 | CallTarget | func:r2066_2 | +| ir.cpp:2066:19:2066:32 | CallTarget | func:r2066_9 | +| ir.cpp:2066:19:2066:32 | ChiPartial | partial:m2066_5 | +| ir.cpp:2066:19:2066:32 | ChiPartial | partial:m2066_11 | +| ir.cpp:2066:19:2066:32 | ChiPartial | partial:m2066_13 | +| ir.cpp:2066:19:2066:32 | ChiTotal | total:m2064_6 | +| ir.cpp:2066:19:2066:32 | ChiTotal | total:m2066_6 | +| ir.cpp:2066:19:2066:32 | ChiTotal | total:m2066_7 | +| ir.cpp:2066:19:2066:32 | SideEffect | ~m2064_6 | +| ir.cpp:2066:19:2066:32 | SideEffect | ~m2066_6 | +| ir.cpp:2066:19:2066:32 | StoreValue | r2066_8 | +| ir.cpp:2066:19:2066:32 | Unary | r2066_4 | +| ir.cpp:2067:5:2067:12 | CallTarget | func:r2067_1 | +| ir.cpp:2067:5:2067:12 | ChiPartial | partial:m2067_5 | +| ir.cpp:2067:5:2067:12 | ChiTotal | total:m2066_12 | +| ir.cpp:2067:5:2067:12 | SideEffect | ~m2066_12 | +| ir.cpp:2067:12:2067:12 | Address | &:r2067_2 | +| ir.cpp:2067:12:2067:12 | Arg(0) | 0:r2067_3 | +| ir.cpp:2067:12:2067:12 | Load | m2066_15 | +| ir.cpp:2068:1:2068:1 | Address | &:r2068_1 | +| ir.cpp:2072:6:2072:26 | ChiPartial | partial:m2072_3 | +| ir.cpp:2072:6:2072:26 | ChiTotal | total:m2072_2 | +| ir.cpp:2072:6:2072:26 | SideEffect | ~m2074_5 | +| ir.cpp:2073:13:2073:13 | Address | &:r2073_1 | +| ir.cpp:2073:16:2073:19 | StoreValue | r2073_2 | +| ir.cpp:2074:3:2074:27 | CallTarget | func:r2074_1 | +| ir.cpp:2074:3:2074:27 | ChiPartial | partial:m2074_4 | +| ir.cpp:2074:3:2074:27 | ChiTotal | total:m2072_4 | +| ir.cpp:2074:3:2074:27 | SideEffect | ~m2072_4 | +| ir.cpp:2074:29:2074:29 | Arg(0) | 0:r2074_2 | +| ir.cpp:2079:5:2079:11 | Address | &:r2079_6 | +| ir.cpp:2079:5:2079:11 | ChiPartial | partial:m2079_3 | +| ir.cpp:2079:5:2079:11 | ChiTotal | total:m2079_2 | +| ir.cpp:2079:5:2079:11 | Load | m2084_4 | +| ir.cpp:2079:5:2079:11 | SideEffect | ~m2083_4 | +| ir.cpp:2080:9:2080:9 | Address | &:r2080_1 | +| ir.cpp:2080:13:2080:15 | CallTarget | func:r2080_2 | +| ir.cpp:2080:13:2080:15 | ChiPartial | partial:m2080_6 | +| ir.cpp:2080:13:2080:15 | ChiTotal | total:m2079_4 | +| ir.cpp:2080:13:2080:15 | SideEffect | ~m2079_4 | +| ir.cpp:2080:13:2080:15 | StoreValue | r2080_5 | +| ir.cpp:2080:17:2080:17 | Arg(0) | 0:r2080_3 | +| ir.cpp:2080:19:2080:19 | Arg(1) | 1:r2080_4 | +| ir.cpp:2081:9:2081:9 | Address | &:r2081_1 | +| ir.cpp:2081:9:2081:9 | Left | r2081_2 | +| ir.cpp:2081:9:2081:9 | Load | m2080_8 | +| ir.cpp:2081:9:2081:14 | Condition | r2081_4 | +| ir.cpp:2081:14:2081:14 | Right | r2081_3 | +| ir.cpp:2082:9:2082:12 | CallTarget | func:r2082_1 | +| ir.cpp:2082:9:2082:12 | ChiPartial | partial:m2082_4 | +| ir.cpp:2082:9:2082:12 | ChiTotal | total:m2080_7 | +| ir.cpp:2082:9:2082:12 | SideEffect | ~m2080_7 | +| ir.cpp:2082:14:2082:14 | Arg(0) | 0:r2082_2 | +| ir.cpp:2083:5:2083:12 | CallTarget | func:r2083_1 | +| ir.cpp:2083:5:2083:12 | ChiPartial | partial:m2083_3 | +| ir.cpp:2083:5:2083:12 | ChiTotal | total:m2080_7 | +| ir.cpp:2083:5:2083:12 | SideEffect | ~m2080_7 | +| ir.cpp:2084:5:2084:13 | Address | &:r2084_1 | +| ir.cpp:2084:12:2084:12 | Address | &:r2084_2 | +| ir.cpp:2084:12:2084:12 | Load | m2080_8 | +| ir.cpp:2084:12:2084:12 | StoreValue | r2084_3 | +| ir.cpp:2087:6:2087:17 | ChiPartial | partial:m2087_3 | +| ir.cpp:2087:6:2087:17 | ChiTotal | total:m2087_2 | +| ir.cpp:2088:5:2088:12 | CallTarget | func:r2088_1 | +| ir.cpp:2088:5:2088:12 | ChiPartial | partial:m2088_3 | +| ir.cpp:2088:5:2088:12 | ChiTotal | total:m2087_4 | +| ir.cpp:2088:5:2088:12 | SideEffect | ~m2087_4 | +| ir.cpp:2089:5:2089:8 | CallTarget | func:r2089_1 | +| ir.cpp:2089:5:2089:8 | ChiPartial | partial:m2089_4 | +| ir.cpp:2089:5:2089:8 | ChiTotal | total:m2088_4 | +| ir.cpp:2089:5:2089:8 | SideEffect | ~m2088_4 | +| ir.cpp:2089:10:2089:10 | Arg(0) | 0:r2089_2 | +| ir.cpp:2092:5:2092:16 | Address | &:r2092_6 | +| ir.cpp:2092:5:2092:16 | ChiPartial | partial:m2092_3 | +| ir.cpp:2092:5:2092:16 | ChiTotal | total:m2092_2 | +| ir.cpp:2092:5:2092:16 | Load | m2097_4 | +| ir.cpp:2092:5:2092:16 | SideEffect | ~m2096_4 | +| ir.cpp:2093:9:2093:9 | Address | &:r2093_1 | +| ir.cpp:2093:13:2093:15 | CallTarget | func:r2093_2 | +| ir.cpp:2093:13:2093:15 | ChiPartial | partial:m2093_6 | +| ir.cpp:2093:13:2093:15 | ChiTotal | total:m2092_4 | +| ir.cpp:2093:13:2093:15 | SideEffect | ~m2092_4 | +| ir.cpp:2093:13:2093:15 | StoreValue | r2093_5 | +| ir.cpp:2093:17:2093:17 | Arg(0) | 0:r2093_3 | +| ir.cpp:2093:19:2093:19 | Arg(1) | 1:r2093_4 | +| ir.cpp:2094:9:2094:9 | Address | &:r2094_1 | +| ir.cpp:2094:9:2094:9 | Left | r2094_2 | +| ir.cpp:2094:9:2094:9 | Load | m2093_8 | +| ir.cpp:2094:9:2094:14 | Condition | r2094_4 | +| ir.cpp:2094:14:2094:14 | Right | r2094_3 | +| ir.cpp:2095:9:2095:20 | CallTarget | func:r2095_1 | +| ir.cpp:2096:5:2096:12 | CallTarget | func:r2096_1 | +| ir.cpp:2096:5:2096:12 | ChiPartial | partial:m2096_3 | +| ir.cpp:2096:5:2096:12 | ChiTotal | total:m2093_7 | +| ir.cpp:2096:5:2096:12 | SideEffect | ~m2093_7 | +| ir.cpp:2097:5:2097:13 | Address | &:r2097_1 | +| ir.cpp:2097:12:2097:12 | Address | &:r2097_2 | +| ir.cpp:2097:12:2097:12 | Load | m2093_8 | +| ir.cpp:2097:12:2097:12 | StoreValue | r2097_3 | +| ir.cpp:2100:6:2100:24 | ChiPartial | partial:m2100_3 | +| ir.cpp:2100:6:2100:24 | ChiTotal | total:m2100_2 | +| ir.cpp:2100:6:2100:24 | SideEffect | ~m2106_8 | +| ir.cpp:2100:33:2100:33 | Address | &:r2100_5 | +| ir.cpp:2101:3:2101:12 | Address | &:r2101_6 | +| ir.cpp:2101:3:2101:12 | Arg(0) | 0:r2101_5 | +| ir.cpp:2101:3:2101:12 | CallTarget | func:r2101_1 | +| ir.cpp:2101:3:2101:12 | ChiPartial | partial:m2101_7 | +| ir.cpp:2101:3:2101:12 | ChiTotal | total:m2100_4 | +| ir.cpp:2101:3:2101:12 | Right | r2101_4 | +| ir.cpp:2101:3:2101:12 | SideEffect | ~m2100_4 | +| ir.cpp:2101:3:2101:12 | Unary | r2101_6 | +| ir.cpp:2101:11:2101:11 | Address | &:r2101_2 | +| ir.cpp:2101:11:2101:11 | Left | r2101_3 | +| ir.cpp:2101:11:2101:11 | Load | m2100_6 | +| ir.cpp:2102:3:2102:18 | Address | &:r2102_7 | +| ir.cpp:2102:3:2102:18 | Arg(0) | 0:r2102_5 | +| ir.cpp:2102:3:2102:18 | CallTarget | func:r2102_1 | +| ir.cpp:2102:3:2102:18 | ChiPartial | partial:m2102_8 | +| ir.cpp:2102:3:2102:18 | ChiTotal | total:m2101_8 | +| ir.cpp:2102:3:2102:18 | Right | r2102_4 | +| ir.cpp:2102:3:2102:18 | SideEffect | ~m2101_8 | +| ir.cpp:2102:3:2102:18 | Unary | r2102_7 | +| ir.cpp:2102:7:2102:10 | Arg(1) | 1:r2102_6 | +| ir.cpp:2102:17:2102:17 | Address | &:r2102_2 | +| ir.cpp:2102:17:2102:17 | Left | r2102_3 | +| ir.cpp:2102:17:2102:17 | Load | m2100_6 | +| ir.cpp:2103:3:2103:15 | Address | &:r2103_6 | +| ir.cpp:2103:3:2103:15 | Arg(0) | 0:r2103_5 | +| ir.cpp:2103:3:2103:15 | CallTarget | func:r2103_1 | +| ir.cpp:2103:3:2103:15 | ChiPartial | partial:m2103_7 | +| ir.cpp:2103:3:2103:15 | ChiTotal | total:m2102_9 | +| ir.cpp:2103:3:2103:15 | Right | r2103_4 | +| ir.cpp:2103:3:2103:15 | SideEffect | ~m2102_9 | +| ir.cpp:2103:3:2103:15 | Unary | r2103_6 | +| ir.cpp:2103:14:2103:14 | Address | &:r2103_2 | +| ir.cpp:2103:14:2103:14 | Left | r2103_3 | +| ir.cpp:2103:14:2103:14 | Load | m2100_6 | +| ir.cpp:2104:3:2104:20 | Address | &:r2104_7 | +| ir.cpp:2104:3:2104:20 | Arg(0) | 0:r2104_5 | +| ir.cpp:2104:3:2104:20 | CallTarget | func:r2104_1 | +| ir.cpp:2104:3:2104:20 | ChiPartial | partial:m2104_8 | +| ir.cpp:2104:3:2104:20 | ChiTotal | total:m2103_8 | +| ir.cpp:2104:3:2104:20 | Right | r2104_4 | +| ir.cpp:2104:3:2104:20 | SideEffect | ~m2103_8 | +| ir.cpp:2104:3:2104:20 | Unary | r2104_7 | +| ir.cpp:2104:19:2104:19 | Address | &:r2104_2 | +| ir.cpp:2104:19:2104:19 | Left | r2104_3 | +| ir.cpp:2104:19:2104:19 | Load | m2100_6 | +| ir.cpp:2104:21:2104:21 | Arg(1) | 1:r2104_6 | +| ir.cpp:2105:3:2105:36 | Address | &:r2105_6 | +| ir.cpp:2105:3:2105:36 | Arg(0) | 0:r2105_5 | +| ir.cpp:2105:3:2105:36 | CallTarget | func:r2105_1 | +| ir.cpp:2105:3:2105:36 | ChiPartial | partial:m2105_7 | +| ir.cpp:2105:3:2105:36 | ChiTotal | total:m2104_9 | +| ir.cpp:2105:3:2105:36 | Right | r2105_4 | +| ir.cpp:2105:3:2105:36 | SideEffect | ~m2104_9 | +| ir.cpp:2105:3:2105:36 | Unary | r2105_6 | +| ir.cpp:2105:35:2105:35 | Address | &:r2105_2 | +| ir.cpp:2105:35:2105:35 | Left | r2105_3 | +| ir.cpp:2105:35:2105:35 | Load | m2100_6 | +| ir.cpp:2106:3:2106:24 | Address | &:r2106_6 | +| ir.cpp:2106:3:2106:24 | Arg(0) | 0:r2106_5 | +| ir.cpp:2106:3:2106:24 | CallTarget | func:r2106_1 | +| ir.cpp:2106:3:2106:24 | ChiPartial | partial:m2106_7 | +| ir.cpp:2106:3:2106:24 | ChiTotal | total:m2105_8 | +| ir.cpp:2106:3:2106:24 | Right | r2106_4 | +| ir.cpp:2106:3:2106:24 | SideEffect | ~m2105_8 | +| ir.cpp:2106:3:2106:24 | Unary | r2106_6 | +| ir.cpp:2106:11:2106:11 | Address | &:r2106_2 | +| ir.cpp:2106:11:2106:11 | Left | r2106_3 | +| ir.cpp:2106:11:2106:11 | Load | m2100_6 | +| ir.cpp:2111:7:2111:17 | Address | &:r2111_10 | +| ir.cpp:2111:7:2111:17 | ChiPartial | partial:m2111_3 | +| ir.cpp:2111:7:2111:17 | ChiTotal | total:m2111_2 | +| ir.cpp:2111:7:2111:17 | Load | m2114_4 | +| ir.cpp:2111:7:2111:17 | SideEffect | m2111_3 | +| ir.cpp:2111:25:2111:25 | Address | &:r2111_5 | +| ir.cpp:2111:25:2111:25 | Address | &:r2111_5 | +| ir.cpp:2111:25:2111:25 | Address | &:r2111_7 | +| ir.cpp:2111:25:2111:25 | Address | &:r2111_7 | +| ir.cpp:2111:25:2111:25 | Load | m2111_6 | +| ir.cpp:2111:25:2111:25 | SideEffect | m2111_8 | +| ir.cpp:2112:9:2112:11 | Address | &:r2112_1 | +| ir.cpp:2113:10:2113:10 | Address | &:r2113_1 | +| ir.cpp:2113:14:2113:19 | CallTarget | func:r2113_2 | +| ir.cpp:2113:14:2113:19 | StoreValue | r2113_8 | +| ir.cpp:2113:21:2113:21 | Address | &:r2113_3 | +| ir.cpp:2113:21:2113:21 | Address | &:r2113_5 | +| ir.cpp:2113:21:2113:21 | Arg(0) | 0:r2113_5 | +| ir.cpp:2113:21:2113:21 | Load | m2111_6 | +| ir.cpp:2113:21:2113:21 | SideEffect | ~m2111_8 | +| ir.cpp:2113:21:2113:21 | Unary | r2113_4 | +| ir.cpp:2113:24:2113:27 | Address | &:r2113_7 | +| ir.cpp:2113:24:2113:27 | Arg(1) | 1:r2113_7 | +| ir.cpp:2113:24:2113:27 | ChiPartial | partial:m2113_10 | +| ir.cpp:2113:24:2113:27 | ChiTotal | total:m2112_2 | +| ir.cpp:2113:25:2113:27 | Unary | r2113_6 | +| ir.cpp:2114:3:2114:13 | Address | &:r2114_1 | +| ir.cpp:2114:10:2114:12 | Address | &:r2114_2 | +| ir.cpp:2114:10:2114:12 | Load | m2113_11 | +| ir.cpp:2114:10:2114:12 | StoreValue | r2114_3 | +| ir.cpp:2121:6:2121:39 | ChiPartial | partial:m2121_3 | +| ir.cpp:2121:6:2121:39 | ChiTotal | total:m2121_2 | +| ir.cpp:2121:6:2121:39 | SideEffect | ~m2122_8 | +| ir.cpp:2122:6:2122:42 | Address | &:r2122_1 | +| ir.cpp:2122:6:2122:42 | Condition | r2122_12 | +| ir.cpp:2122:22:2122:22 | Address | &:r2122_4 | +| ir.cpp:2122:22:2122:22 | Address | &:r2122_4 | +| ir.cpp:2122:22:2122:22 | Arg(this) | this:r2122_4 | +| ir.cpp:2122:22:2122:22 | CallTarget | func:r2122_5 | +| ir.cpp:2122:22:2122:22 | ChiPartial | partial:m2122_7 | +| ir.cpp:2122:22:2122:22 | ChiPartial | partial:m2122_10 | +| ir.cpp:2122:22:2122:22 | ChiTotal | total:m2121_4 | +| ir.cpp:2122:22:2122:22 | ChiTotal | total:m2122_3 | +| ir.cpp:2122:22:2122:22 | SideEffect | m2122_3 | +| ir.cpp:2122:22:2122:22 | SideEffect | ~m2121_4 | +| ir.cpp:2122:22:2122:22 | Unary | r2122_6 | +| ir.cpp:2122:25:2122:42 | StoreValue | r2122_2 | +| ir.cpp:2125:7:2125:7 | Address | &:r2125_5 | +| ir.cpp:2125:7:2125:7 | Address | &:r2125_5 | +| ir.cpp:2125:7:2125:7 | Address | &:r2125_7 | +| ir.cpp:2125:7:2125:7 | Address | &:r2125_7 | +| ir.cpp:2125:7:2125:7 | Address | &:r2125_9 | +| ir.cpp:2125:7:2125:7 | Address | &:r2125_10 | +| ir.cpp:2125:7:2125:7 | Address | &:r2125_13 | +| ir.cpp:2125:7:2125:7 | ChiPartial | partial:m2125_3 | +| ir.cpp:2125:7:2125:7 | ChiPartial | partial:m2125_15 | +| ir.cpp:2125:7:2125:7 | ChiTotal | total:m2125_2 | +| ir.cpp:2125:7:2125:7 | ChiTotal | total:m2125_8 | +| ir.cpp:2125:7:2125:7 | Load | m0_2 | +| ir.cpp:2125:7:2125:7 | Load | m2125_6 | +| ir.cpp:2125:7:2125:7 | Load | ~m0_4 | +| ir.cpp:2125:7:2125:7 | SideEffect | m2125_3 | +| ir.cpp:2125:7:2125:7 | SideEffect | m2125_16 | +| ir.cpp:2125:7:2125:7 | StoreValue | r2125_14 | +| ir.cpp:2125:7:2125:7 | Unary | m2125_6 | +| ir.cpp:2125:7:2125:7 | Unary | r2125_11 | +| ir.cpp:2125:7:2125:7 | Unary | r2125_12 | +| ir.cpp:2128:5:2128:23 | Address | &:r2128_5 | +| ir.cpp:2128:5:2128:23 | Address | &:r2128_5 | +| ir.cpp:2128:5:2128:23 | Address | &:r2128_7 | +| ir.cpp:2128:5:2128:23 | Address | &:r2128_7 | +| ir.cpp:2128:5:2128:23 | ChiPartial | partial:m2128_3 | +| ir.cpp:2128:5:2128:23 | ChiTotal | total:m2128_2 | +| ir.cpp:2128:5:2128:23 | Load | m2128_6 | +| ir.cpp:2128:5:2128:23 | SideEffect | m2128_20 | +| ir.cpp:2128:5:2128:23 | SideEffect | ~m2128_13 | +| ir.cpp:2128:29:2128:29 | Address | &:r2128_16 | +| ir.cpp:2128:29:2128:29 | Address | &:r2128_18 | +| ir.cpp:2128:29:2128:29 | Load | m2128_6 | +| ir.cpp:2128:29:2128:29 | Unary | r2128_17 | +| ir.cpp:2128:29:2128:40 | ChiPartial | partial:m2128_19 | +| ir.cpp:2128:29:2128:40 | ChiTotal | total:m2128_8 | +| ir.cpp:2128:33:2128:40 | Address | &:r2128_11 | +| ir.cpp:2128:33:2128:40 | Arg(0) | 0:r2128_10 | +| ir.cpp:2128:33:2128:40 | CallTarget | func:r2128_9 | +| ir.cpp:2128:33:2128:40 | ChiPartial | partial:m2128_12 | +| ir.cpp:2128:33:2128:40 | ChiTotal | total:m2128_4 | +| ir.cpp:2128:33:2128:40 | SideEffect | ~m2128_4 | +| ir.cpp:2128:33:2128:40 | StoreValue | r2128_15 | +| ir.cpp:2128:33:2128:40 | Unary | r2128_11 | +| ir.cpp:2129:5:2129:24 | Address | &:r2129_5 | +| ir.cpp:2129:5:2129:24 | Address | &:r2129_5 | +| ir.cpp:2129:5:2129:24 | Address | &:r2129_7 | +| ir.cpp:2129:5:2129:24 | Address | &:r2129_7 | +| ir.cpp:2129:5:2129:24 | ChiPartial | partial:m2129_3 | +| ir.cpp:2129:5:2129:24 | ChiTotal | total:m2129_2 | +| ir.cpp:2129:5:2129:24 | Load | m2129_6 | +| ir.cpp:2129:5:2129:24 | SideEffect | m2129_8 | +| ir.cpp:2129:5:2129:24 | SideEffect | ~m2129_16 | +| ir.cpp:2129:30:2129:37 | CallTarget | func:r2129_9 | +| ir.cpp:2129:30:2129:37 | ChiPartial | partial:m2129_15 | +| ir.cpp:2129:30:2129:37 | ChiTotal | total:m2129_4 | +| ir.cpp:2129:30:2129:37 | SideEffect | ~m2129_4 | +| ir.cpp:2129:37:2129:37 | Address | &:r2129_10 | +| ir.cpp:2129:37:2129:37 | Address | &:r2129_12 | +| ir.cpp:2129:37:2129:37 | Arg(0) | 0:r2129_13 | +| ir.cpp:2129:37:2129:37 | Load | m2129_6 | +| ir.cpp:2129:37:2129:37 | Load | ~m2129_8 | +| ir.cpp:2129:37:2129:37 | Unary | r2129_11 | +| ir.cpp:2131:10:2131:14 | Address | &:r2131_5 | +| ir.cpp:2131:10:2131:14 | Address | &:r2131_5 | +| ir.cpp:2131:10:2131:14 | Address | &:r2131_7 | +| ir.cpp:2131:10:2131:14 | Address | &:r2131_7 | +| ir.cpp:2131:10:2131:14 | ChiPartial | partial:m2131_3 | +| ir.cpp:2131:10:2131:14 | ChiTotal | total:m2131_2 | +| ir.cpp:2131:10:2131:14 | Load | m2131_6 | +| ir.cpp:2131:10:2131:14 | SideEffect | m2131_8 | +| ir.cpp:2131:10:2131:14 | SideEffect | ~m2131_19 | +| ir.cpp:2131:21:2131:21 | Address | &:r2131_9 | +| ir.cpp:2131:26:2131:27 | Address | &:r2131_17 | +| ir.cpp:2131:26:2131:31 | ChiPartial | partial:m2131_18 | +| ir.cpp:2131:26:2131:31 | ChiTotal | total:m2131_4 | +| ir.cpp:2131:27:2131:27 | Address | &:r2131_13 | +| ir.cpp:2131:27:2131:27 | Address | &:r2131_15 | +| ir.cpp:2131:27:2131:27 | Load | m2131_6 | +| ir.cpp:2131:27:2131:27 | Load | ~m2131_8 | +| ir.cpp:2131:27:2131:27 | Unary | r2131_14 | +| ir.cpp:2131:27:2131:27 | Unary | r2131_16 | +| ir.cpp:2131:31:2131:31 | Address | &:r2131_11 | +| ir.cpp:2131:31:2131:31 | Load | m2131_10 | +| ir.cpp:2131:31:2131:31 | StoreValue | r2131_12 | +| ir.cpp:2134:16:2134:50 | Address | &:r2134_3 | +| ir.cpp:2134:16:2134:50 | SideEffect | ~m2134_6 | +| ir.cpp:2134:54:2134:57 | ChiPartial | partial:m2134_5 | +| ir.cpp:2134:54:2134:57 | ChiTotal | total:m2134_2 | +| ir.cpp:2134:54:2134:57 | StoreValue | r2134_4 | +| ir.cpp:2136:6:2136:35 | ChiPartial | partial:m2136_3 | +| ir.cpp:2136:6:2136:35 | ChiTotal | total:m2136_2 | +| ir.cpp:2136:42:2136:42 | Address | &:r2136_5 | +| ir.cpp:2136:50:2136:50 | Address | &:r2136_7 | +| ir.cpp:2137:29:2137:29 | Address | &:r2137_1 | +| ir.cpp:2137:29:2137:29 | Address | &:r2137_1 | +| ir.cpp:2137:29:2137:29 | Arg(this) | this:r2137_1 | +| ir.cpp:2137:29:2137:29 | CallTarget | func:r2137_3 | +| ir.cpp:2137:29:2137:29 | ChiPartial | partial:m2137_5 | +| ir.cpp:2137:29:2137:29 | ChiPartial | partial:m2137_7 | +| ir.cpp:2137:29:2137:29 | ChiTotal | total:m2136_4 | +| ir.cpp:2137:29:2137:29 | ChiTotal | total:m2137_2 | +| ir.cpp:2137:29:2137:29 | SideEffect | ~m2136_4 | +| ir.cpp:2137:32:2137:32 | Address | &:r2137_9 | +| ir.cpp:2137:32:2137:32 | Condition | r2137_10 | +| ir.cpp:2137:32:2137:32 | Load | m2136_6 | +| ir.cpp:2138:9:2138:9 | Address | &:r2138_1 | +| ir.cpp:2138:9:2138:9 | Address | &:r2138_1 | +| ir.cpp:2138:9:2138:9 | Arg(this) | this:r2138_1 | +| ir.cpp:2138:9:2138:9 | ChiPartial | partial:m2138_8 | +| ir.cpp:2138:9:2138:9 | ChiTotal | total:m2137_8 | +| ir.cpp:2138:9:2138:9 | SideEffect | m2137_8 | +| ir.cpp:2138:11:2138:15 | CallTarget | func:r2138_2 | +| ir.cpp:2138:11:2138:15 | ChiPartial | partial:m2138_5 | +| ir.cpp:2138:11:2138:15 | ChiTotal | total:m2137_6 | +| ir.cpp:2138:11:2138:15 | SideEffect | ~m2137_6 | +| ir.cpp:2138:17:2138:19 | Arg(0) | 0:r2138_3 | | perf-regression.cpp:6:3:6:5 | Address | &:r6_5 | | perf-regression.cpp:6:3:6:5 | Address | &:r6_5 | | perf-regression.cpp:6:3:6:5 | Address | &:r6_7 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index d2a11541fd12..c7c7ad6f53a0 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -6,6 +6,10 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:2138:9:2138:9 | IndirectMayWriteSideEffect: x | Instruction 'IndirectMayWriteSideEffect: x' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | +| ir.cpp:2140:39:2140:39 | IndirectMayWriteSideEffect: call to ClassWithDestructor | Instruction 'IndirectMayWriteSideEffect: call to ClassWithDestructor' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | +| ir.cpp:2140:42:2140:76 | Constant: initialization_with_destructor_bool | Instruction 'Constant: initialization_with_destructor_bool' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | +| ir.cpp:2141:9:2141:9 | IndirectMayWriteSideEffect: x | Instruction 'IndirectMayWriteSideEffect: x' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction @@ -20,7 +24,7 @@ multipleIRTypes lostReachability backEdgeCountMismatch useNotDominatedByDefinition -| ir.cpp:1486:8:1486:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1486:8:1486:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | +| ir.cpp:1488:8:1488:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1488:8:1488:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | | try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() | | try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() | | try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) | @@ -37,4 +41,5 @@ nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer nonUniqueIRVariable +| ir.cpp:2153:68:2153:69 | VariableAddress: ys | Variable address instruction 'VariableAddress: ys' has no associated variable, in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 53361dd907ae..6ef4a69e0db4 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -6345,1445 +6345,1417 @@ ir.cpp: # 1054| v1054_41(void) = AliasedUse : ~m? # 1054| v1054_42(void) = ExitFunction : -# 1077| void RangeBasedFor(vector const&) -# 1077| Block 0 -# 1077| v1077_1(void) = EnterFunction : -# 1077| mu1077_2(unknown) = AliasedDefinition : -# 1077| mu1077_3(unknown) = InitializeNonLocal : -# 1077| r1077_4(glval &>) = VariableAddress[v] : -# 1077| mu1077_5(vector &) = InitializeParameter[v] : &:r1077_4 -# 1077| r1077_6(vector &) = Load[v] : &:r1077_4, ~m? -# 1077| mu1077_7(unknown) = InitializeIndirection[v] : &:r1077_6 -# 1078| r1078_1(glval &>) = VariableAddress[(__range)] : -# 1078| r1078_2(glval &>) = VariableAddress[v] : -# 1078| r1078_3(vector &) = Load[v] : &:r1078_2, ~m? -# 1078| r1078_4(glval>) = CopyValue : r1078_3 -# 1078| r1078_5(vector &) = CopyValue : r1078_4 -# 1078| mu1078_6(vector &) = Store[(__range)] : &:r1078_1, r1078_5 -# 1078| r1078_7(glval) = VariableAddress[(__begin)] : -# 1078| r1078_8(glval &>) = VariableAddress[(__range)] : -# 1078| r1078_9(vector &) = Load[(__range)] : &:r1078_8, ~m? -#-----| r0_1(glval>) = CopyValue : r1078_9 -# 1078| r1078_10(glval) = FunctionAddress[begin] : -# 1078| r1078_11(iterator) = Call[begin] : func:r1078_10, this:r0_1 -# 1078| mu1078_12(unknown) = ^CallSideEffect : ~m? +# 1079| void RangeBasedFor(vector const&) +# 1079| Block 0 +# 1079| v1079_1(void) = EnterFunction : +# 1079| mu1079_2(unknown) = AliasedDefinition : +# 1079| mu1079_3(unknown) = InitializeNonLocal : +# 1079| r1079_4(glval &>) = VariableAddress[v] : +# 1079| mu1079_5(vector &) = InitializeParameter[v] : &:r1079_4 +# 1079| r1079_6(vector &) = Load[v] : &:r1079_4, ~m? +# 1079| mu1079_7(unknown) = InitializeIndirection[v] : &:r1079_6 +# 1080| r1080_1(glval &>) = VariableAddress[(__range)] : +# 1080| r1080_2(glval &>) = VariableAddress[v] : +# 1080| r1080_3(vector &) = Load[v] : &:r1080_2, ~m? +# 1080| r1080_4(glval>) = CopyValue : r1080_3 +# 1080| r1080_5(vector &) = CopyValue : r1080_4 +# 1080| mu1080_6(vector &) = Store[(__range)] : &:r1080_1, r1080_5 +# 1080| r1080_7(glval) = VariableAddress[(__begin)] : +# 1080| r1080_8(glval &>) = VariableAddress[(__range)] : +# 1080| r1080_9(vector &) = Load[(__range)] : &:r1080_8, ~m? +#-----| r0_1(glval>) = CopyValue : r1080_9 +# 1080| r1080_10(glval) = FunctionAddress[begin] : +# 1080| r1080_11(iterator) = Call[begin] : func:r1080_10, this:r0_1 +# 1080| mu1080_12(unknown) = ^CallSideEffect : ~m? #-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m? -# 1078| mu1078_13(iterator) = Store[(__begin)] : &:r1078_7, r1078_11 -# 1078| r1078_14(glval) = VariableAddress[(__end)] : -# 1078| r1078_15(glval &>) = VariableAddress[(__range)] : -# 1078| r1078_16(vector &) = Load[(__range)] : &:r1078_15, ~m? -#-----| r0_3(glval>) = CopyValue : r1078_16 -# 1078| r1078_17(glval) = FunctionAddress[end] : -# 1078| r1078_18(iterator) = Call[end] : func:r1078_17, this:r0_3 -# 1078| mu1078_19(unknown) = ^CallSideEffect : ~m? +# 1080| mu1080_13(iterator) = Store[(__begin)] : &:r1080_7, r1080_11 +# 1080| r1080_14(glval) = VariableAddress[(__end)] : +# 1080| r1080_15(glval &>) = VariableAddress[(__range)] : +# 1080| r1080_16(vector &) = Load[(__range)] : &:r1080_15, ~m? +#-----| r0_3(glval>) = CopyValue : r1080_16 +# 1080| r1080_17(glval) = FunctionAddress[end] : +# 1080| r1080_18(iterator) = Call[end] : func:r1080_17, this:r0_3 +# 1080| mu1080_19(unknown) = ^CallSideEffect : ~m? #-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m? -# 1078| mu1078_20(iterator) = Store[(__end)] : &:r1078_14, r1078_18 +# 1080| mu1080_20(iterator) = Store[(__end)] : &:r1080_14, r1080_18 #-----| Goto -> Block 1 -# 1078| Block 1 -# 1078| r1078_21(glval) = VariableAddress[(__begin)] : -#-----| r0_5(glval) = Convert : r1078_21 -# 1078| r1078_22(glval) = FunctionAddress[operator!=] : -# 1078| r1078_23(glval) = VariableAddress[(__end)] : -# 1078| r1078_24(iterator) = Load[(__end)] : &:r1078_23, ~m? -# 1078| r1078_25(bool) = Call[operator!=] : func:r1078_22, this:r0_5, 0:r1078_24 -# 1078| mu1078_26(unknown) = ^CallSideEffect : ~m? +# 1080| Block 1 +# 1080| r1080_21(glval) = VariableAddress[(__begin)] : +#-----| r0_5(glval) = Convert : r1080_21 +# 1080| r1080_22(glval) = FunctionAddress[operator!=] : +# 1080| r1080_23(glval) = VariableAddress[(__end)] : +# 1080| r1080_24(iterator) = Load[(__end)] : &:r1080_23, ~m? +# 1080| r1080_25(bool) = Call[operator!=] : func:r1080_22, this:r0_5, 0:r1080_24 +# 1080| mu1080_26(unknown) = ^CallSideEffect : ~m? #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 1078| v1078_27(void) = ConditionalBranch : r1078_25 +# 1080| v1080_27(void) = ConditionalBranch : r1080_25 #-----| False -> Block 5 #-----| True -> Block 2 -# 1078| Block 2 -# 1078| r1078_28(glval) = VariableAddress[e] : -# 1078| r1078_29(glval) = VariableAddress[(__begin)] : -#-----| r0_7(glval) = Convert : r1078_29 -# 1078| r1078_30(glval) = FunctionAddress[operator*] : -# 1078| r1078_31(int &) = Call[operator*] : func:r1078_30, this:r0_7 -# 1078| mu1078_32(unknown) = ^CallSideEffect : ~m? +# 1080| Block 2 +# 1080| r1080_28(glval) = VariableAddress[e] : +# 1080| r1080_29(glval) = VariableAddress[(__begin)] : +#-----| r0_7(glval) = Convert : r1080_29 +# 1080| r1080_30(glval) = FunctionAddress[operator*] : +# 1080| r1080_31(int &) = Call[operator*] : func:r1080_30, this:r0_7 +# 1080| mu1080_32(unknown) = ^CallSideEffect : ~m? #-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 1078| r1078_33(int) = Load[?] : &:r1078_31, ~m? -# 1078| mu1078_34(int) = Store[e] : &:r1078_28, r1078_33 -# 1079| r1079_1(glval) = VariableAddress[e] : -# 1079| r1079_2(int) = Load[e] : &:r1079_1, ~m? -# 1079| r1079_3(int) = Constant[0] : -# 1079| r1079_4(bool) = CompareGT : r1079_2, r1079_3 -# 1079| v1079_5(void) = ConditionalBranch : r1079_4 +# 1080| r1080_33(int) = Load[?] : &:r1080_31, ~m? +# 1080| mu1080_34(int) = Store[e] : &:r1080_28, r1080_33 +# 1081| r1081_1(glval) = VariableAddress[e] : +# 1081| r1081_2(int) = Load[e] : &:r1081_1, ~m? +# 1081| r1081_3(int) = Constant[0] : +# 1081| r1081_4(bool) = CompareGT : r1081_2, r1081_3 +# 1081| v1081_5(void) = ConditionalBranch : r1081_4 #-----| False -> Block 4 #-----| True -> Block 3 -# 1080| Block 3 -# 1080| v1080_1(void) = NoOp : +# 1082| Block 3 +# 1082| v1082_1(void) = NoOp : #-----| Goto -> Block 4 -# 1078| Block 4 -# 1078| v1078_35(void) = NoOp : -# 1078| r1078_36(glval) = VariableAddress[(__begin)] : -# 1078| r1078_37(glval) = FunctionAddress[operator++] : -# 1078| r1078_38(iterator &) = Call[operator++] : func:r1078_37, this:r1078_36 -# 1078| mu1078_39(unknown) = ^CallSideEffect : ~m? -# 1078| v1078_40(void) = ^IndirectReadSideEffect[-1] : &:r1078_36, ~m? -# 1078| mu1078_41(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1078_36 -# 1078| r1078_42(glval) = CopyValue : r1078_38 +# 1080| Block 4 +# 1080| v1080_35(void) = NoOp : +# 1080| r1080_36(glval) = VariableAddress[(__begin)] : +# 1080| r1080_37(glval) = FunctionAddress[operator++] : +# 1080| r1080_38(iterator &) = Call[operator++] : func:r1080_37, this:r1080_36 +# 1080| mu1080_39(unknown) = ^CallSideEffect : ~m? +# 1080| v1080_40(void) = ^IndirectReadSideEffect[-1] : &:r1080_36, ~m? +# 1080| mu1080_41(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1080_36 +# 1080| r1080_42(glval) = CopyValue : r1080_38 #-----| Goto (back edge) -> Block 1 -# 1084| Block 5 -# 1084| r1084_1(glval &>) = VariableAddress[(__range)] : -# 1084| r1084_2(glval &>) = VariableAddress[v] : -# 1084| r1084_3(vector &) = Load[v] : &:r1084_2, ~m? -# 1084| r1084_4(glval>) = CopyValue : r1084_3 -# 1084| r1084_5(vector &) = CopyValue : r1084_4 -# 1084| mu1084_6(vector &) = Store[(__range)] : &:r1084_1, r1084_5 -# 1084| r1084_7(glval) = VariableAddress[(__begin)] : -# 1084| r1084_8(glval &>) = VariableAddress[(__range)] : -# 1084| r1084_9(vector &) = Load[(__range)] : &:r1084_8, ~m? -#-----| r0_9(glval>) = CopyValue : r1084_9 -# 1084| r1084_10(glval) = FunctionAddress[begin] : -# 1084| r1084_11(iterator) = Call[begin] : func:r1084_10, this:r0_9 -# 1084| mu1084_12(unknown) = ^CallSideEffect : ~m? +# 1086| Block 5 +# 1086| r1086_1(glval &>) = VariableAddress[(__range)] : +# 1086| r1086_2(glval &>) = VariableAddress[v] : +# 1086| r1086_3(vector &) = Load[v] : &:r1086_2, ~m? +# 1086| r1086_4(glval>) = CopyValue : r1086_3 +# 1086| r1086_5(vector &) = CopyValue : r1086_4 +# 1086| mu1086_6(vector &) = Store[(__range)] : &:r1086_1, r1086_5 +# 1086| r1086_7(glval) = VariableAddress[(__begin)] : +# 1086| r1086_8(glval &>) = VariableAddress[(__range)] : +# 1086| r1086_9(vector &) = Load[(__range)] : &:r1086_8, ~m? +#-----| r0_9(glval>) = CopyValue : r1086_9 +# 1086| r1086_10(glval) = FunctionAddress[begin] : +# 1086| r1086_11(iterator) = Call[begin] : func:r1086_10, this:r0_9 +# 1086| mu1086_12(unknown) = ^CallSideEffect : ~m? #-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m? -# 1084| mu1084_13(iterator) = Store[(__begin)] : &:r1084_7, r1084_11 -# 1084| r1084_14(glval) = VariableAddress[(__end)] : -# 1084| r1084_15(glval &>) = VariableAddress[(__range)] : -# 1084| r1084_16(vector &) = Load[(__range)] : &:r1084_15, ~m? -#-----| r0_11(glval>) = CopyValue : r1084_16 -# 1084| r1084_17(glval) = FunctionAddress[end] : -# 1084| r1084_18(iterator) = Call[end] : func:r1084_17, this:r0_11 -# 1084| mu1084_19(unknown) = ^CallSideEffect : ~m? +# 1086| mu1086_13(iterator) = Store[(__begin)] : &:r1086_7, r1086_11 +# 1086| r1086_14(glval) = VariableAddress[(__end)] : +# 1086| r1086_15(glval &>) = VariableAddress[(__range)] : +# 1086| r1086_16(vector &) = Load[(__range)] : &:r1086_15, ~m? +#-----| r0_11(glval>) = CopyValue : r1086_16 +# 1086| r1086_17(glval) = FunctionAddress[end] : +# 1086| r1086_18(iterator) = Call[end] : func:r1086_17, this:r0_11 +# 1086| mu1086_19(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -# 1084| mu1084_20(iterator) = Store[(__end)] : &:r1084_14, r1084_18 +# 1086| mu1086_20(iterator) = Store[(__end)] : &:r1086_14, r1086_18 #-----| Goto -> Block 6 -# 1084| Block 6 -# 1084| r1084_21(glval) = VariableAddress[(__begin)] : -#-----| r0_13(glval) = Convert : r1084_21 -# 1084| r1084_22(glval) = FunctionAddress[operator!=] : -# 1084| r1084_23(glval) = VariableAddress[(__end)] : -# 1084| r1084_24(iterator) = Load[(__end)] : &:r1084_23, ~m? -# 1084| r1084_25(bool) = Call[operator!=] : func:r1084_22, this:r0_13, 0:r1084_24 -# 1084| mu1084_26(unknown) = ^CallSideEffect : ~m? +# 1086| Block 6 +# 1086| r1086_21(glval) = VariableAddress[(__begin)] : +#-----| r0_13(glval) = Convert : r1086_21 +# 1086| r1086_22(glval) = FunctionAddress[operator!=] : +# 1086| r1086_23(glval) = VariableAddress[(__end)] : +# 1086| r1086_24(iterator) = Load[(__end)] : &:r1086_23, ~m? +# 1086| r1086_25(bool) = Call[operator!=] : func:r1086_22, this:r0_13, 0:r1086_24 +# 1086| mu1086_26(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m? -# 1084| v1084_27(void) = ConditionalBranch : r1084_25 +# 1086| v1086_27(void) = ConditionalBranch : r1086_25 #-----| False -> Block 10 #-----| True -> Block 8 -# 1084| Block 7 -# 1084| r1084_28(glval) = VariableAddress[(__begin)] : -# 1084| r1084_29(glval) = FunctionAddress[operator++] : -# 1084| r1084_30(iterator &) = Call[operator++] : func:r1084_29, this:r1084_28 -# 1084| mu1084_31(unknown) = ^CallSideEffect : ~m? -# 1084| v1084_32(void) = ^IndirectReadSideEffect[-1] : &:r1084_28, ~m? -# 1084| mu1084_33(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1084_28 -# 1084| r1084_34(glval) = CopyValue : r1084_30 +# 1086| Block 7 +# 1086| r1086_28(glval) = VariableAddress[(__begin)] : +# 1086| r1086_29(glval) = FunctionAddress[operator++] : +# 1086| r1086_30(iterator &) = Call[operator++] : func:r1086_29, this:r1086_28 +# 1086| mu1086_31(unknown) = ^CallSideEffect : ~m? +# 1086| v1086_32(void) = ^IndirectReadSideEffect[-1] : &:r1086_28, ~m? +# 1086| mu1086_33(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1086_28 +# 1086| r1086_34(glval) = CopyValue : r1086_30 #-----| Goto (back edge) -> Block 6 -# 1084| Block 8 -# 1084| r1084_35(glval) = VariableAddress[e] : -# 1084| r1084_36(glval) = VariableAddress[(__begin)] : -#-----| r0_15(glval) = Convert : r1084_36 -# 1084| r1084_37(glval) = FunctionAddress[operator*] : -# 1084| r1084_38(int &) = Call[operator*] : func:r1084_37, this:r0_15 -# 1084| mu1084_39(unknown) = ^CallSideEffect : ~m? +# 1086| Block 8 +# 1086| r1086_35(glval) = VariableAddress[e] : +# 1086| r1086_36(glval) = VariableAddress[(__begin)] : +#-----| r0_15(glval) = Convert : r1086_36 +# 1086| r1086_37(glval) = FunctionAddress[operator*] : +# 1086| r1086_38(int &) = Call[operator*] : func:r1086_37, this:r0_15 +# 1086| mu1086_39(unknown) = ^CallSideEffect : ~m? #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 1084| r1084_40(glval) = CopyValue : r1084_38 -# 1084| r1084_41(glval) = Convert : r1084_40 -# 1084| r1084_42(int &) = CopyValue : r1084_41 -# 1084| mu1084_43(int &) = Store[e] : &:r1084_35, r1084_42 -# 1085| r1085_1(glval) = VariableAddress[e] : -# 1085| r1085_2(int &) = Load[e] : &:r1085_1, ~m? -# 1085| r1085_3(int) = Load[?] : &:r1085_2, ~m? -# 1085| r1085_4(int) = Constant[5] : -# 1085| r1085_5(bool) = CompareLT : r1085_3, r1085_4 -# 1085| v1085_6(void) = ConditionalBranch : r1085_5 +# 1086| r1086_40(glval) = CopyValue : r1086_38 +# 1086| r1086_41(glval) = Convert : r1086_40 +# 1086| r1086_42(int &) = CopyValue : r1086_41 +# 1086| mu1086_43(int &) = Store[e] : &:r1086_35, r1086_42 +# 1087| r1087_1(glval) = VariableAddress[e] : +# 1087| r1087_2(int &) = Load[e] : &:r1087_1, ~m? +# 1087| r1087_3(int) = Load[?] : &:r1087_2, ~m? +# 1087| r1087_4(int) = Constant[5] : +# 1087| r1087_5(bool) = CompareLT : r1087_3, r1087_4 +# 1087| v1087_6(void) = ConditionalBranch : r1087_5 #-----| False -> Block 7 #-----| True -> Block 9 -# 1086| Block 9 -# 1086| v1086_1(void) = NoOp : +# 1088| Block 9 +# 1088| v1088_1(void) = NoOp : #-----| Goto -> Block 10 -# 1088| Block 10 -# 1088| v1088_1(void) = NoOp : -# 1089| v1089_1(void) = NoOp : -# 1077| v1077_8(void) = ReturnIndirection[v] : &:r1077_6, ~m? -# 1077| v1077_9(void) = ReturnVoid : -# 1077| v1077_10(void) = AliasedUse : ~m? -# 1077| v1077_11(void) = ExitFunction : - -# 1108| int AsmStmt(int) -# 1108| Block 0 -# 1108| v1108_1(void) = EnterFunction : -# 1108| mu1108_2(unknown) = AliasedDefinition : -# 1108| mu1108_3(unknown) = InitializeNonLocal : -# 1108| r1108_4(glval) = VariableAddress[x] : -# 1108| mu1108_5(int) = InitializeParameter[x] : &:r1108_4 -# 1109| mu1109_1(unknown) = InlineAsm : ~m? -# 1110| r1110_1(glval) = VariableAddress[#return] : -# 1110| r1110_2(glval) = VariableAddress[x] : -# 1110| r1110_3(int) = Load[x] : &:r1110_2, ~m? -# 1110| mu1110_4(int) = Store[#return] : &:r1110_1, r1110_3 -# 1108| r1108_6(glval) = VariableAddress[#return] : -# 1108| v1108_7(void) = ReturnValue : &:r1108_6, ~m? -# 1108| v1108_8(void) = AliasedUse : ~m? -# 1108| v1108_9(void) = ExitFunction : - -# 1113| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) -# 1113| Block 0 -# 1113| v1113_1(void) = EnterFunction : -# 1113| mu1113_2(unknown) = AliasedDefinition : -# 1113| mu1113_3(unknown) = InitializeNonLocal : -# 1113| r1113_4(glval) = VariableAddress[a] : -# 1113| mu1113_5(unsigned int &) = InitializeParameter[a] : &:r1113_4 -# 1113| r1113_6(unsigned int &) = Load[a] : &:r1113_4, ~m? -# 1113| mu1113_7(unknown) = InitializeIndirection[a] : &:r1113_6 -# 1113| r1113_8(glval) = VariableAddress[b] : -# 1113| mu1113_9(unsigned int) = InitializeParameter[b] : &:r1113_8 -# 1113| r1113_10(glval) = VariableAddress[c] : -# 1113| mu1113_11(unsigned int &) = InitializeParameter[c] : &:r1113_10 -# 1113| r1113_12(unsigned int &) = Load[c] : &:r1113_10, ~m? -# 1113| mu1113_13(unknown) = InitializeIndirection[c] : &:r1113_12 -# 1113| r1113_14(glval) = VariableAddress[d] : -# 1113| mu1113_15(unsigned int) = InitializeParameter[d] : &:r1113_14 -# 1118| r1118_1(glval) = VariableAddress[a] : -# 1118| r1118_2(unsigned int &) = Load[a] : &:r1118_1, ~m? -# 1118| r1118_3(glval) = CopyValue : r1118_2 -# 1118| r1118_4(glval) = VariableAddress[b] : -# 1118| r1118_5(glval) = VariableAddress[c] : -# 1118| r1118_6(unsigned int &) = Load[c] : &:r1118_5, ~m? -# 1118| r1118_7(unsigned int) = Load[?] : &:r1118_6, ~m? -# 1118| r1118_8(glval) = VariableAddress[d] : -# 1118| r1118_9(unsigned int) = Load[d] : &:r1118_8, ~m? -# 1115| mu1115_1(unknown) = InlineAsm : ~m?, 0:r1118_3, 1:r1118_4, 2:r1118_7, 3:r1118_9 -# 1120| v1120_1(void) = NoOp : -# 1113| v1113_16(void) = ReturnIndirection[a] : &:r1113_6, ~m? -# 1113| v1113_17(void) = ReturnIndirection[c] : &:r1113_12, ~m? -# 1113| v1113_18(void) = ReturnVoid : -# 1113| v1113_19(void) = AliasedUse : ~m? -# 1113| v1113_20(void) = ExitFunction : - -# 1122| void ExternDeclarations() -# 1122| Block 0 -# 1122| v1122_1(void) = EnterFunction : -# 1122| mu1122_2(unknown) = AliasedDefinition : -# 1122| mu1122_3(unknown) = InitializeNonLocal : -# 1125| r1125_1(glval) = VariableAddress[x] : -# 1125| mu1125_2(int) = Uninitialized[x] : &:r1125_1 -# 1126| r1126_1(glval) = VariableAddress[y] : -# 1126| mu1126_2(int) = Uninitialized[y] : &:r1126_1 -# 1127| r1127_1(glval) = VariableAddress[h] : -# 1127| mu1127_2(int) = Uninitialized[h] : &:r1127_1 -# 1129| v1129_1(void) = NoOp : -# 1122| v1122_4(void) = ReturnVoid : -# 1122| v1122_5(void) = AliasedUse : ~m? -# 1122| v1122_6(void) = ExitFunction : - -# 1137| void ExternDeclarationsInMacro() -# 1137| Block 0 -# 1137| v1137_1(void) = EnterFunction : -# 1137| mu1137_2(unknown) = AliasedDefinition : -# 1137| mu1137_3(unknown) = InitializeNonLocal : -# 1139| r1139_1(glval) = VariableAddress[i] : -# 1139| r1139_2(int) = Constant[0] : -# 1139| mu1139_3(int) = Store[i] : &:r1139_1, r1139_2 +# 1090| Block 10 +# 1090| v1090_1(void) = NoOp : +# 1091| v1091_1(void) = NoOp : +# 1079| v1079_8(void) = ReturnIndirection[v] : &:r1079_6, ~m? +# 1079| v1079_9(void) = ReturnVoid : +# 1079| v1079_10(void) = AliasedUse : ~m? +# 1079| v1079_11(void) = ExitFunction : + +# 1110| int AsmStmt(int) +# 1110| Block 0 +# 1110| v1110_1(void) = EnterFunction : +# 1110| mu1110_2(unknown) = AliasedDefinition : +# 1110| mu1110_3(unknown) = InitializeNonLocal : +# 1110| r1110_4(glval) = VariableAddress[x] : +# 1110| mu1110_5(int) = InitializeParameter[x] : &:r1110_4 +# 1111| mu1111_1(unknown) = InlineAsm : ~m? +# 1112| r1112_1(glval) = VariableAddress[#return] : +# 1112| r1112_2(glval) = VariableAddress[x] : +# 1112| r1112_3(int) = Load[x] : &:r1112_2, ~m? +# 1112| mu1112_4(int) = Store[#return] : &:r1112_1, r1112_3 +# 1110| r1110_6(glval) = VariableAddress[#return] : +# 1110| v1110_7(void) = ReturnValue : &:r1110_6, ~m? +# 1110| v1110_8(void) = AliasedUse : ~m? +# 1110| v1110_9(void) = ExitFunction : + +# 1115| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) +# 1115| Block 0 +# 1115| v1115_1(void) = EnterFunction : +# 1115| mu1115_2(unknown) = AliasedDefinition : +# 1115| mu1115_3(unknown) = InitializeNonLocal : +# 1115| r1115_4(glval) = VariableAddress[a] : +# 1115| mu1115_5(unsigned int &) = InitializeParameter[a] : &:r1115_4 +# 1115| r1115_6(unsigned int &) = Load[a] : &:r1115_4, ~m? +# 1115| mu1115_7(unknown) = InitializeIndirection[a] : &:r1115_6 +# 1115| r1115_8(glval) = VariableAddress[b] : +# 1115| mu1115_9(unsigned int) = InitializeParameter[b] : &:r1115_8 +# 1115| r1115_10(glval) = VariableAddress[c] : +# 1115| mu1115_11(unsigned int &) = InitializeParameter[c] : &:r1115_10 +# 1115| r1115_12(unsigned int &) = Load[c] : &:r1115_10, ~m? +# 1115| mu1115_13(unknown) = InitializeIndirection[c] : &:r1115_12 +# 1115| r1115_14(glval) = VariableAddress[d] : +# 1115| mu1115_15(unsigned int) = InitializeParameter[d] : &:r1115_14 +# 1120| r1120_1(glval) = VariableAddress[a] : +# 1120| r1120_2(unsigned int &) = Load[a] : &:r1120_1, ~m? +# 1120| r1120_3(glval) = CopyValue : r1120_2 +# 1120| r1120_4(glval) = VariableAddress[b] : +# 1120| r1120_5(glval) = VariableAddress[c] : +# 1120| r1120_6(unsigned int &) = Load[c] : &:r1120_5, ~m? +# 1120| r1120_7(unsigned int) = Load[?] : &:r1120_6, ~m? +# 1120| r1120_8(glval) = VariableAddress[d] : +# 1120| r1120_9(unsigned int) = Load[d] : &:r1120_8, ~m? +# 1117| mu1117_1(unknown) = InlineAsm : ~m?, 0:r1120_3, 1:r1120_4, 2:r1120_7, 3:r1120_9 +# 1122| v1122_1(void) = NoOp : +# 1115| v1115_16(void) = ReturnIndirection[a] : &:r1115_6, ~m? +# 1115| v1115_17(void) = ReturnIndirection[c] : &:r1115_12, ~m? +# 1115| v1115_18(void) = ReturnVoid : +# 1115| v1115_19(void) = AliasedUse : ~m? +# 1115| v1115_20(void) = ExitFunction : + +# 1124| void ExternDeclarations() +# 1124| Block 0 +# 1124| v1124_1(void) = EnterFunction : +# 1124| mu1124_2(unknown) = AliasedDefinition : +# 1124| mu1124_3(unknown) = InitializeNonLocal : +# 1127| r1127_1(glval) = VariableAddress[x] : +# 1127| mu1127_2(int) = Uninitialized[x] : &:r1127_1 +# 1128| r1128_1(glval) = VariableAddress[y] : +# 1128| mu1128_2(int) = Uninitialized[y] : &:r1128_1 +# 1129| r1129_1(glval) = VariableAddress[h] : +# 1129| mu1129_2(int) = Uninitialized[h] : &:r1129_1 +# 1131| v1131_1(void) = NoOp : +# 1124| v1124_4(void) = ReturnVoid : +# 1124| v1124_5(void) = AliasedUse : ~m? +# 1124| v1124_6(void) = ExitFunction : + +# 1139| void ExternDeclarationsInMacro() +# 1139| Block 0 +# 1139| v1139_1(void) = EnterFunction : +# 1139| mu1139_2(unknown) = AliasedDefinition : +# 1139| mu1139_3(unknown) = InitializeNonLocal : +# 1141| r1141_1(glval) = VariableAddress[i] : +# 1141| r1141_2(int) = Constant[0] : +# 1141| mu1141_3(int) = Store[i] : &:r1141_1, r1141_2 #-----| Goto -> Block 1 -# 1139| Block 1 -# 1139| r1139_4(glval) = VariableAddress[i] : -# 1139| r1139_5(int) = Load[i] : &:r1139_4, ~m? -# 1139| r1139_6(int) = Constant[10] : -# 1139| r1139_7(bool) = CompareLT : r1139_5, r1139_6 -# 1139| v1139_8(void) = ConditionalBranch : r1139_7 +# 1141| Block 1 +# 1141| r1141_4(glval) = VariableAddress[i] : +# 1141| r1141_5(int) = Load[i] : &:r1141_4, ~m? +# 1141| r1141_6(int) = Constant[10] : +# 1141| r1141_7(bool) = CompareLT : r1141_5, r1141_6 +# 1141| v1141_8(void) = ConditionalBranch : r1141_7 #-----| False -> Block 3 #-----| True -> Block 2 -# 1139| Block 2 -# 1139| r1139_9(glval) = VariableAddress[i] : -# 1139| r1139_10(int) = Load[i] : &:r1139_9, ~m? -# 1139| r1139_11(int) = Constant[1] : -# 1139| r1139_12(int) = Add : r1139_10, r1139_11 -# 1139| mu1139_13(int) = Store[i] : &:r1139_9, r1139_12 +# 1141| Block 2 +# 1141| r1141_9(glval) = VariableAddress[i] : +# 1141| r1141_10(int) = Load[i] : &:r1141_9, ~m? +# 1141| r1141_11(int) = Constant[1] : +# 1141| r1141_12(int) = Add : r1141_10, r1141_11 +# 1141| mu1141_13(int) = Store[i] : &:r1141_9, r1141_12 #-----| Goto (back edge) -> Block 1 -# 1139| Block 3 -# 1139| v1139_14(void) = NoOp : -# 1140| v1140_1(void) = NoOp : -# 1137| v1137_4(void) = ReturnVoid : -# 1137| v1137_5(void) = AliasedUse : ~m? -# 1137| v1137_6(void) = ExitFunction : - -# 1142| void TryCatchNoCatchAny(bool) -# 1142| Block 0 -# 1142| v1142_1(void) = EnterFunction : -# 1142| mu1142_2(unknown) = AliasedDefinition : -# 1142| mu1142_3(unknown) = InitializeNonLocal : -# 1142| r1142_4(glval) = VariableAddress[b] : -# 1142| mu1142_5(bool) = InitializeParameter[b] : &:r1142_4 -# 1144| r1144_1(glval) = VariableAddress[x] : -# 1144| r1144_2(int) = Constant[5] : -# 1144| mu1144_3(int) = Store[x] : &:r1144_1, r1144_2 -# 1145| r1145_1(glval) = VariableAddress[b] : -# 1145| r1145_2(bool) = Load[b] : &:r1145_1, ~m? -# 1145| v1145_3(void) = ConditionalBranch : r1145_2 +# 1141| Block 3 +# 1141| v1141_14(void) = NoOp : +# 1142| v1142_1(void) = NoOp : +# 1139| v1139_4(void) = ReturnVoid : +# 1139| v1139_5(void) = AliasedUse : ~m? +# 1139| v1139_6(void) = ExitFunction : + +# 1144| void TryCatchNoCatchAny(bool) +# 1144| Block 0 +# 1144| v1144_1(void) = EnterFunction : +# 1144| mu1144_2(unknown) = AliasedDefinition : +# 1144| mu1144_3(unknown) = InitializeNonLocal : +# 1144| r1144_4(glval) = VariableAddress[b] : +# 1144| mu1144_5(bool) = InitializeParameter[b] : &:r1144_4 +# 1146| r1146_1(glval) = VariableAddress[x] : +# 1146| r1146_2(int) = Constant[5] : +# 1146| mu1146_3(int) = Store[x] : &:r1146_1, r1146_2 +# 1147| r1147_1(glval) = VariableAddress[b] : +# 1147| r1147_2(bool) = Load[b] : &:r1147_1, ~m? +# 1147| v1147_3(void) = ConditionalBranch : r1147_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 1142| Block 1 -# 1142| v1142_6(void) = AliasedUse : ~m? -# 1142| v1142_7(void) = ExitFunction : +# 1144| Block 1 +# 1144| v1144_6(void) = AliasedUse : ~m? +# 1144| v1144_7(void) = ExitFunction : -# 1142| Block 2 -# 1142| v1142_8(void) = Unwind : +# 1144| Block 2 +# 1144| v1144_8(void) = Unwind : #-----| Goto -> Block 1 -# 1146| Block 3 -# 1146| r1146_1(glval) = VariableAddress[#throw1146:7] : -# 1146| r1146_2(glval) = StringConstant["string literal"] : -# 1146| r1146_3(char *) = Convert : r1146_2 -# 1146| mu1146_4(char *) = Store[#throw1146:7] : &:r1146_1, r1146_3 -# 1146| v1146_5(void) = ThrowValue : &:r1146_1, ~m? +# 1148| Block 3 +# 1148| r1148_1(glval) = VariableAddress[#throw1148:7] : +# 1148| r1148_2(glval) = StringConstant["string literal"] : +# 1148| r1148_3(char *) = Convert : r1148_2 +# 1148| mu1148_4(char *) = Store[#throw1148:7] : &:r1148_1, r1148_3 +# 1148| v1148_5(void) = ThrowValue : &:r1148_1, ~m? #-----| Exception -> Block 9 -# 1148| Block 4 -# 1148| r1148_1(glval) = VariableAddress[x] : -# 1148| r1148_2(int) = Load[x] : &:r1148_1, ~m? -# 1148| r1148_3(int) = Constant[2] : -# 1148| r1148_4(bool) = CompareLT : r1148_2, r1148_3 -# 1148| v1148_5(void) = ConditionalBranch : r1148_4 +# 1150| Block 4 +# 1150| r1150_1(glval) = VariableAddress[x] : +# 1150| r1150_2(int) = Load[x] : &:r1150_1, ~m? +# 1150| r1150_3(int) = Constant[2] : +# 1150| r1150_4(bool) = CompareLT : r1150_2, r1150_3 +# 1150| v1150_5(void) = ConditionalBranch : r1150_4 #-----| False -> Block 8 #-----| True -> Block 5 -# 1149| Block 5 -# 1149| r1149_1(glval) = VariableAddress[b] : -# 1149| r1149_2(bool) = Load[b] : &:r1149_1, ~m? -# 1149| v1149_3(void) = ConditionalBranch : r1149_2 +# 1151| Block 5 +# 1151| r1151_1(glval) = VariableAddress[b] : +# 1151| r1151_2(bool) = Load[b] : &:r1151_1, ~m? +# 1151| v1151_3(void) = ConditionalBranch : r1151_2 #-----| False -> Block 7 #-----| True -> Block 6 -# 1149| Block 6 -# 1149| r1149_4(int) = Constant[7] : -# 1149| r1149_5(glval) = VariableAddress[#temp1149:11] : -# 1149| mu1149_6(int) = Store[#temp1149:11] : &:r1149_5, r1149_4 -# 1149| r1149_7(glval) = VariableAddress[#temp1149:11] : -# 1149| r1149_8(int) = Load[#temp1149:11] : &:r1149_7, ~m? -# 1149| r1149_9(glval) = VariableAddress[x] : -# 1149| mu1149_10(int) = Store[x] : &:r1149_9, r1149_8 +# 1151| Block 6 +# 1151| r1151_4(int) = Constant[7] : +# 1151| r1151_5(glval) = VariableAddress[#temp1151:11] : +# 1151| mu1151_6(int) = Store[#temp1151:11] : &:r1151_5, r1151_4 +# 1151| r1151_7(glval) = VariableAddress[#temp1151:11] : +# 1151| r1151_8(int) = Load[#temp1151:11] : &:r1151_7, ~m? +# 1151| r1151_9(glval) = VariableAddress[x] : +# 1151| mu1151_10(int) = Store[x] : &:r1151_9, r1151_8 #-----| Goto -> Block 8 -# 1149| Block 7 -# 1149| r1149_11(glval) = VariableAddress[#throw1149:19] : -# 1149| mu1149_12(String) = Uninitialized[#throw1149:19] : &:r1149_11 -# 1149| r1149_13(glval) = FunctionAddress[String] : -# 1149| r1149_14(glval) = StringConstant["String object"] : -# 1149| r1149_15(char *) = Convert : r1149_14 -# 1149| v1149_16(void) = Call[String] : func:r1149_13, this:r1149_11, 0:r1149_15 -# 1149| mu1149_17(unknown) = ^CallSideEffect : ~m? -# 1149| v1149_18(void) = ^BufferReadSideEffect[0] : &:r1149_15, ~m? -# 1149| mu1149_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1149_11 -# 1149| v1149_20(void) = ThrowValue : &:r1149_11, ~m? +# 1151| Block 7 +# 1151| r1151_11(glval) = VariableAddress[#throw1151:19] : +# 1151| mu1151_12(String) = Uninitialized[#throw1151:19] : &:r1151_11 +# 1151| r1151_13(glval) = FunctionAddress[String] : +# 1151| r1151_14(glval) = StringConstant["String object"] : +# 1151| r1151_15(char *) = Convert : r1151_14 +# 1151| v1151_16(void) = Call[String] : func:r1151_13, this:r1151_11, 0:r1151_15 +# 1151| mu1151_17(unknown) = ^CallSideEffect : ~m? +# 1151| v1151_18(void) = ^BufferReadSideEffect[0] : &:r1151_15, ~m? +# 1151| mu1151_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1151_11 +# 1151| v1151_20(void) = ThrowValue : &:r1151_11, ~m? #-----| Exception -> Block 9 -# 1151| Block 8 -# 1151| r1151_1(int) = Constant[7] : -# 1151| r1151_2(glval) = VariableAddress[x] : -# 1151| mu1151_3(int) = Store[x] : &:r1151_2, r1151_1 +# 1153| Block 8 +# 1153| r1153_1(int) = Constant[7] : +# 1153| r1153_2(glval) = VariableAddress[x] : +# 1153| mu1153_3(int) = Store[x] : &:r1153_2, r1153_1 #-----| Goto -> Block 13 -# 1153| Block 9 -# 1153| v1153_1(void) = CatchByType[const char *] : +# 1155| Block 9 +# 1155| v1155_1(void) = CatchByType[const char *] : #-----| Exception -> Block 11 #-----| Goto -> Block 10 -# 1153| Block 10 -# 1153| r1153_2(glval) = VariableAddress[s] : -# 1153| mu1153_3(char *) = InitializeParameter[s] : &:r1153_2 -# 1153| r1153_4(char *) = Load[s] : &:r1153_2, ~m? -# 1153| mu1153_5(unknown) = InitializeIndirection[s] : &:r1153_4 -# 1154| r1154_1(glval) = VariableAddress[#throw1154:5] : -# 1154| mu1154_2(String) = Uninitialized[#throw1154:5] : &:r1154_1 -# 1154| r1154_3(glval) = FunctionAddress[String] : -# 1154| r1154_4(glval) = VariableAddress[s] : -# 1154| r1154_5(char *) = Load[s] : &:r1154_4, ~m? -# 1154| v1154_6(void) = Call[String] : func:r1154_3, this:r1154_1, 0:r1154_5 -# 1154| mu1154_7(unknown) = ^CallSideEffect : ~m? -# 1154| v1154_8(void) = ^BufferReadSideEffect[0] : &:r1154_5, ~m? -# 1154| mu1154_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1154_1 -# 1154| v1154_10(void) = ThrowValue : &:r1154_1, ~m? +# 1155| Block 10 +# 1155| r1155_2(glval) = VariableAddress[s] : +# 1155| mu1155_3(char *) = InitializeParameter[s] : &:r1155_2 +# 1155| r1155_4(char *) = Load[s] : &:r1155_2, ~m? +# 1155| mu1155_5(unknown) = InitializeIndirection[s] : &:r1155_4 +# 1156| r1156_1(glval) = VariableAddress[#throw1156:5] : +# 1156| mu1156_2(String) = Uninitialized[#throw1156:5] : &:r1156_1 +# 1156| r1156_3(glval) = FunctionAddress[String] : +# 1156| r1156_4(glval) = VariableAddress[s] : +# 1156| r1156_5(char *) = Load[s] : &:r1156_4, ~m? +# 1156| v1156_6(void) = Call[String] : func:r1156_3, this:r1156_1, 0:r1156_5 +# 1156| mu1156_7(unknown) = ^CallSideEffect : ~m? +# 1156| v1156_8(void) = ^BufferReadSideEffect[0] : &:r1156_5, ~m? +# 1156| mu1156_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1156_1 +# 1156| v1156_10(void) = ThrowValue : &:r1156_1, ~m? #-----| Exception -> Block 2 -# 1156| Block 11 -# 1156| v1156_1(void) = CatchByType[const String &] : +# 1158| Block 11 +# 1158| v1158_1(void) = CatchByType[const String &] : #-----| Exception -> Block 2 #-----| Goto -> Block 12 -# 1156| Block 12 -# 1156| r1156_2(glval) = VariableAddress[e] : -# 1156| mu1156_3(String &) = InitializeParameter[e] : &:r1156_2 -# 1156| r1156_4(String &) = Load[e] : &:r1156_2, ~m? -# 1156| mu1156_5(unknown) = InitializeIndirection[e] : &:r1156_4 -# 1156| v1156_6(void) = NoOp : +# 1158| Block 12 +# 1158| r1158_2(glval) = VariableAddress[e] : +# 1158| mu1158_3(String &) = InitializeParameter[e] : &:r1158_2 +# 1158| r1158_4(String &) = Load[e] : &:r1158_2, ~m? +# 1158| mu1158_5(unknown) = InitializeIndirection[e] : &:r1158_4 +# 1158| v1158_6(void) = NoOp : #-----| Goto -> Block 13 -# 1158| Block 13 -# 1158| v1158_1(void) = NoOp : -# 1142| v1142_9(void) = ReturnVoid : +# 1160| Block 13 +# 1160| v1160_1(void) = NoOp : +# 1144| v1144_9(void) = ReturnVoid : #-----| Goto -> Block 1 -# 1162| void VectorTypes(int) -# 1162| Block 0 -# 1162| v1162_1(void) = EnterFunction : -# 1162| mu1162_2(unknown) = AliasedDefinition : -# 1162| mu1162_3(unknown) = InitializeNonLocal : -# 1162| r1162_4(glval) = VariableAddress[i] : -# 1162| mu1162_5(int) = InitializeParameter[i] : &:r1162_4 -# 1163| r1163_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1163| mu1163_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1163_1 -# 1163| r1163_3(int) = Constant[0] : -# 1163| r1163_4(glval) = PointerAdd[4] : r1163_1, r1163_3 -# 1163| r1163_5(int) = Constant[0] : -# 1163| mu1163_6(int) = Store[?] : &:r1163_4, r1163_5 -# 1163| r1163_7(int) = Constant[1] : -# 1163| r1163_8(glval) = PointerAdd[4] : r1163_1, r1163_7 -# 1163| r1163_9(int) = Constant[1] : -# 1163| mu1163_10(int) = Store[?] : &:r1163_8, r1163_9 -# 1163| r1163_11(int) = Constant[2] : -# 1163| r1163_12(glval) = PointerAdd[4] : r1163_1, r1163_11 -# 1163| r1163_13(int) = Constant[2] : -# 1163| mu1163_14(int) = Store[?] : &:r1163_12, r1163_13 -# 1163| r1163_15(int) = Constant[3] : -# 1163| r1163_16(glval) = PointerAdd[4] : r1163_1, r1163_15 -# 1163| r1163_17(int) = Constant[3] : -# 1163| mu1163_18(int) = Store[?] : &:r1163_16, r1163_17 -# 1164| r1164_1(glval) = VariableAddress[x] : -# 1164| r1164_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1164| r1164_3(glval) = VariableAddress[i] : -# 1164| r1164_4(int) = Load[i] : &:r1164_3, ~m? -# 1164| r1164_5(glval) = PointerAdd[4] : r1164_2, r1164_4 -# 1164| r1164_6(int) = Load[?] : &:r1164_5, ~m? -# 1164| mu1164_7(int) = Store[x] : &:r1164_1, r1164_6 -# 1165| r1165_1(glval) = VariableAddress[x] : -# 1165| r1165_2(int) = Load[x] : &:r1165_1, ~m? -# 1165| r1165_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1165| r1165_4(glval) = VariableAddress[i] : -# 1165| r1165_5(int) = Load[i] : &:r1165_4, ~m? -# 1165| r1165_6(glval) = PointerAdd[4] : r1165_3, r1165_5 -# 1165| mu1165_7(int) = Store[?] : &:r1165_6, r1165_2 -# 1166| r1166_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1164| void VectorTypes(int) +# 1164| Block 0 +# 1164| v1164_1(void) = EnterFunction : +# 1164| mu1164_2(unknown) = AliasedDefinition : +# 1164| mu1164_3(unknown) = InitializeNonLocal : +# 1164| r1164_4(glval) = VariableAddress[i] : +# 1164| mu1164_5(int) = InitializeParameter[i] : &:r1164_4 +# 1165| r1165_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1165| mu1165_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1165_1 +# 1165| r1165_3(int) = Constant[0] : +# 1165| r1165_4(glval) = PointerAdd[4] : r1165_1, r1165_3 +# 1165| r1165_5(int) = Constant[0] : +# 1165| mu1165_6(int) = Store[?] : &:r1165_4, r1165_5 +# 1165| r1165_7(int) = Constant[1] : +# 1165| r1165_8(glval) = PointerAdd[4] : r1165_1, r1165_7 +# 1165| r1165_9(int) = Constant[1] : +# 1165| mu1165_10(int) = Store[?] : &:r1165_8, r1165_9 +# 1165| r1165_11(int) = Constant[2] : +# 1165| r1165_12(glval) = PointerAdd[4] : r1165_1, r1165_11 +# 1165| r1165_13(int) = Constant[2] : +# 1165| mu1165_14(int) = Store[?] : &:r1165_12, r1165_13 +# 1165| r1165_15(int) = Constant[3] : +# 1165| r1165_16(glval) = PointerAdd[4] : r1165_1, r1165_15 +# 1165| r1165_17(int) = Constant[3] : +# 1165| mu1165_18(int) = Store[?] : &:r1165_16, r1165_17 +# 1166| r1166_1(glval) = VariableAddress[x] : # 1166| r1166_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1166| r1166_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1166_2, ~m? -# 1166| r1166_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1166| r1166_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1166_4, ~m? -# 1166| r1166_6(int) = Constant[3] : -# 1166| r1166_7(int) = Constant[2] : -# 1166| r1166_8(int) = Constant[1] : -# 1166| r1166_9(int) = Constant[0] : -# 1166| r1166_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1166_3, 1:r1166_5, 2:r1166_6, 3:r1166_7, 4:r1166_8, 5:r1166_9 -# 1166| mu1166_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1166_1, r1166_10 -# 1167| r1167_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1167| r1167_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1167_1, ~m? -# 1167| r1167_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1167| r1167_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1167_3, ~m? -# 1167| r1167_5(__attribute((vector_size(16UL))) int) = Add : r1167_2, r1167_4 -# 1167| r1167_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1167| mu1167_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1167_6, r1167_5 -# 1168| v1168_1(void) = NoOp : -# 1162| v1162_6(void) = ReturnVoid : -# 1162| v1162_7(void) = AliasedUse : ~m? -# 1162| v1162_8(void) = ExitFunction : - -# 1172| int ModeledCallTarget(int) -# 1172| Block 0 -# 1172| v1172_1(void) = EnterFunction : -# 1172| mu1172_2(unknown) = AliasedDefinition : -# 1172| mu1172_3(unknown) = InitializeNonLocal : -# 1172| r1172_4(glval) = VariableAddress[x] : -# 1172| mu1172_5(int) = InitializeParameter[x] : &:r1172_4 -# 1173| r1173_1(glval) = VariableAddress[y] : -# 1173| mu1173_2(int) = Uninitialized[y] : &:r1173_1 -# 1174| r1174_1(glval) = FunctionAddress[memcpy] : -# 1174| r1174_2(glval) = VariableAddress[y] : -# 1174| r1174_3(int *) = CopyValue : r1174_2 -# 1174| r1174_4(void *) = Convert : r1174_3 -# 1174| r1174_5(glval) = VariableAddress[x] : -# 1174| r1174_6(int *) = CopyValue : r1174_5 -# 1174| r1174_7(void *) = Convert : r1174_6 -# 1174| r1174_8(int) = Constant[4] : -# 1174| r1174_9(void *) = Call[memcpy] : func:r1174_1, 0:r1174_4, 1:r1174_7, 2:r1174_8 -# 1174| v1174_10(void) = ^SizedBufferReadSideEffect[1] : &:r1174_7, r1174_8, ~m? -# 1174| mu1174_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1174_4, r1174_8 -# 1175| r1175_1(glval) = VariableAddress[#return] : -# 1175| r1175_2(glval) = VariableAddress[y] : -# 1175| r1175_3(int) = Load[y] : &:r1175_2, ~m? -# 1175| mu1175_4(int) = Store[#return] : &:r1175_1, r1175_3 -# 1172| r1172_6(glval) = VariableAddress[#return] : -# 1172| v1172_7(void) = ReturnValue : &:r1172_6, ~m? -# 1172| v1172_8(void) = AliasedUse : ~m? -# 1172| v1172_9(void) = ExitFunction : - -# 1178| String ReturnObjectImpl() -# 1178| Block 0 -# 1178| v1178_1(void) = EnterFunction : -# 1178| mu1178_2(unknown) = AliasedDefinition : -# 1178| mu1178_3(unknown) = InitializeNonLocal : -# 1179| r1179_1(glval) = VariableAddress[#return] : -# 1179| mu1179_2(String) = Uninitialized[#return] : &:r1179_1 -# 1179| r1179_3(glval) = FunctionAddress[String] : -# 1179| r1179_4(glval) = StringConstant["foo"] : -# 1179| r1179_5(char *) = Convert : r1179_4 -# 1179| v1179_6(void) = Call[String] : func:r1179_3, this:r1179_1, 0:r1179_5 -# 1179| mu1179_7(unknown) = ^CallSideEffect : ~m? -# 1179| v1179_8(void) = ^BufferReadSideEffect[0] : &:r1179_5, ~m? -# 1179| mu1179_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1179_1 -# 1178| r1178_4(glval) = VariableAddress[#return] : -# 1178| v1178_5(void) = ReturnValue : &:r1178_4, ~m? -# 1178| v1178_6(void) = AliasedUse : ~m? -# 1178| v1178_7(void) = ExitFunction : - -# 1182| void switch1Case(int) -# 1182| Block 0 -# 1182| v1182_1(void) = EnterFunction : -# 1182| mu1182_2(unknown) = AliasedDefinition : -# 1182| mu1182_3(unknown) = InitializeNonLocal : -# 1182| r1182_4(glval) = VariableAddress[x] : -# 1182| mu1182_5(int) = InitializeParameter[x] : &:r1182_4 -# 1183| r1183_1(glval) = VariableAddress[y] : -# 1183| r1183_2(int) = Constant[0] : -# 1183| mu1183_3(int) = Store[y] : &:r1183_1, r1183_2 -# 1184| r1184_1(glval) = VariableAddress[x] : -# 1184| r1184_2(int) = Load[x] : &:r1184_1, ~m? -# 1184| v1184_3(void) = Switch : r1184_2 +# 1166| r1166_3(glval) = VariableAddress[i] : +# 1166| r1166_4(int) = Load[i] : &:r1166_3, ~m? +# 1166| r1166_5(glval) = PointerAdd[4] : r1166_2, r1166_4 +# 1166| r1166_6(int) = Load[?] : &:r1166_5, ~m? +# 1166| mu1166_7(int) = Store[x] : &:r1166_1, r1166_6 +# 1167| r1167_1(glval) = VariableAddress[x] : +# 1167| r1167_2(int) = Load[x] : &:r1167_1, ~m? +# 1167| r1167_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1167| r1167_4(glval) = VariableAddress[i] : +# 1167| r1167_5(int) = Load[i] : &:r1167_4, ~m? +# 1167| r1167_6(glval) = PointerAdd[4] : r1167_3, r1167_5 +# 1167| mu1167_7(int) = Store[?] : &:r1167_6, r1167_2 +# 1168| r1168_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1168| r1168_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1168| r1168_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_2, ~m? +# 1168| r1168_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1168| r1168_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_4, ~m? +# 1168| r1168_6(int) = Constant[3] : +# 1168| r1168_7(int) = Constant[2] : +# 1168| r1168_8(int) = Constant[1] : +# 1168| r1168_9(int) = Constant[0] : +# 1168| r1168_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1168_3, 1:r1168_5, 2:r1168_6, 3:r1168_7, 4:r1168_8, 5:r1168_9 +# 1168| mu1168_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1168_1, r1168_10 +# 1169| r1169_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1169| r1169_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1169_1, ~m? +# 1169| r1169_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1169| r1169_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1169_3, ~m? +# 1169| r1169_5(__attribute((vector_size(16UL))) int) = Add : r1169_2, r1169_4 +# 1169| r1169_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1169| mu1169_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1169_6, r1169_5 +# 1170| v1170_1(void) = NoOp : +# 1164| v1164_6(void) = ReturnVoid : +# 1164| v1164_7(void) = AliasedUse : ~m? +# 1164| v1164_8(void) = ExitFunction : + +# 1174| int ModeledCallTarget(int) +# 1174| Block 0 +# 1174| v1174_1(void) = EnterFunction : +# 1174| mu1174_2(unknown) = AliasedDefinition : +# 1174| mu1174_3(unknown) = InitializeNonLocal : +# 1174| r1174_4(glval) = VariableAddress[x] : +# 1174| mu1174_5(int) = InitializeParameter[x] : &:r1174_4 +# 1175| r1175_1(glval) = VariableAddress[y] : +# 1175| mu1175_2(int) = Uninitialized[y] : &:r1175_1 +# 1176| r1176_1(glval) = FunctionAddress[memcpy] : +# 1176| r1176_2(glval) = VariableAddress[y] : +# 1176| r1176_3(int *) = CopyValue : r1176_2 +# 1176| r1176_4(void *) = Convert : r1176_3 +# 1176| r1176_5(glval) = VariableAddress[x] : +# 1176| r1176_6(int *) = CopyValue : r1176_5 +# 1176| r1176_7(void *) = Convert : r1176_6 +# 1176| r1176_8(int) = Constant[4] : +# 1176| r1176_9(void *) = Call[memcpy] : func:r1176_1, 0:r1176_4, 1:r1176_7, 2:r1176_8 +# 1176| v1176_10(void) = ^SizedBufferReadSideEffect[1] : &:r1176_7, r1176_8, ~m? +# 1176| mu1176_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1176_4, r1176_8 +# 1177| r1177_1(glval) = VariableAddress[#return] : +# 1177| r1177_2(glval) = VariableAddress[y] : +# 1177| r1177_3(int) = Load[y] : &:r1177_2, ~m? +# 1177| mu1177_4(int) = Store[#return] : &:r1177_1, r1177_3 +# 1174| r1174_6(glval) = VariableAddress[#return] : +# 1174| v1174_7(void) = ReturnValue : &:r1174_6, ~m? +# 1174| v1174_8(void) = AliasedUse : ~m? +# 1174| v1174_9(void) = ExitFunction : + +# 1180| String ReturnObjectImpl() +# 1180| Block 0 +# 1180| v1180_1(void) = EnterFunction : +# 1180| mu1180_2(unknown) = AliasedDefinition : +# 1180| mu1180_3(unknown) = InitializeNonLocal : +# 1181| r1181_1(glval) = VariableAddress[#return] : +# 1181| mu1181_2(String) = Uninitialized[#return] : &:r1181_1 +# 1181| r1181_3(glval) = FunctionAddress[String] : +# 1181| r1181_4(glval) = StringConstant["foo"] : +# 1181| r1181_5(char *) = Convert : r1181_4 +# 1181| v1181_6(void) = Call[String] : func:r1181_3, this:r1181_1, 0:r1181_5 +# 1181| mu1181_7(unknown) = ^CallSideEffect : ~m? +# 1181| v1181_8(void) = ^BufferReadSideEffect[0] : &:r1181_5, ~m? +# 1181| mu1181_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1181_1 +# 1180| r1180_4(glval) = VariableAddress[#return] : +# 1180| v1180_5(void) = ReturnValue : &:r1180_4, ~m? +# 1180| v1180_6(void) = AliasedUse : ~m? +# 1180| v1180_7(void) = ExitFunction : + +# 1184| void switch1Case(int) +# 1184| Block 0 +# 1184| v1184_1(void) = EnterFunction : +# 1184| mu1184_2(unknown) = AliasedDefinition : +# 1184| mu1184_3(unknown) = InitializeNonLocal : +# 1184| r1184_4(glval) = VariableAddress[x] : +# 1184| mu1184_5(int) = InitializeParameter[x] : &:r1184_4 +# 1185| r1185_1(glval) = VariableAddress[y] : +# 1185| r1185_2(int) = Constant[0] : +# 1185| mu1185_3(int) = Store[y] : &:r1185_1, r1185_2 +# 1186| r1186_1(glval) = VariableAddress[x] : +# 1186| r1186_2(int) = Load[x] : &:r1186_1, ~m? +# 1186| v1186_3(void) = Switch : r1186_2 #-----| Case[1] -> Block 1 #-----| Default -> Block 2 -# 1185| Block 1 -# 1185| v1185_1(void) = NoOp : -# 1186| r1186_1(int) = Constant[2] : -# 1186| r1186_2(glval) = VariableAddress[y] : -# 1186| mu1186_3(int) = Store[y] : &:r1186_2, r1186_1 +# 1187| Block 1 +# 1187| v1187_1(void) = NoOp : +# 1188| r1188_1(int) = Constant[2] : +# 1188| r1188_2(glval) = VariableAddress[y] : +# 1188| mu1188_3(int) = Store[y] : &:r1188_2, r1188_1 #-----| Goto -> Block 2 -# 1188| Block 2 -# 1188| r1188_1(glval) = VariableAddress[z] : -# 1188| r1188_2(glval) = VariableAddress[y] : -# 1188| r1188_3(int) = Load[y] : &:r1188_2, ~m? -# 1188| mu1188_4(int) = Store[z] : &:r1188_1, r1188_3 -# 1189| v1189_1(void) = NoOp : -# 1182| v1182_6(void) = ReturnVoid : -# 1182| v1182_7(void) = AliasedUse : ~m? -# 1182| v1182_8(void) = ExitFunction : - -# 1191| void switch2Case_fallthrough(int) -# 1191| Block 0 -# 1191| v1191_1(void) = EnterFunction : -# 1191| mu1191_2(unknown) = AliasedDefinition : -# 1191| mu1191_3(unknown) = InitializeNonLocal : -# 1191| r1191_4(glval) = VariableAddress[x] : -# 1191| mu1191_5(int) = InitializeParameter[x] : &:r1191_4 -# 1192| r1192_1(glval) = VariableAddress[y] : -# 1192| r1192_2(int) = Constant[0] : -# 1192| mu1192_3(int) = Store[y] : &:r1192_1, r1192_2 -# 1193| r1193_1(glval) = VariableAddress[x] : -# 1193| r1193_2(int) = Load[x] : &:r1193_1, ~m? -# 1193| v1193_3(void) = Switch : r1193_2 +# 1190| Block 2 +# 1190| r1190_1(glval) = VariableAddress[z] : +# 1190| r1190_2(glval) = VariableAddress[y] : +# 1190| r1190_3(int) = Load[y] : &:r1190_2, ~m? +# 1190| mu1190_4(int) = Store[z] : &:r1190_1, r1190_3 +# 1191| v1191_1(void) = NoOp : +# 1184| v1184_6(void) = ReturnVoid : +# 1184| v1184_7(void) = AliasedUse : ~m? +# 1184| v1184_8(void) = ExitFunction : + +# 1193| void switch2Case_fallthrough(int) +# 1193| Block 0 +# 1193| v1193_1(void) = EnterFunction : +# 1193| mu1193_2(unknown) = AliasedDefinition : +# 1193| mu1193_3(unknown) = InitializeNonLocal : +# 1193| r1193_4(glval) = VariableAddress[x] : +# 1193| mu1193_5(int) = InitializeParameter[x] : &:r1193_4 +# 1194| r1194_1(glval) = VariableAddress[y] : +# 1194| r1194_2(int) = Constant[0] : +# 1194| mu1194_3(int) = Store[y] : &:r1194_1, r1194_2 +# 1195| r1195_1(glval) = VariableAddress[x] : +# 1195| r1195_2(int) = Load[x] : &:r1195_1, ~m? +# 1195| v1195_3(void) = Switch : r1195_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1194| Block 1 -# 1194| v1194_1(void) = NoOp : -# 1195| r1195_1(int) = Constant[2] : -# 1195| r1195_2(glval) = VariableAddress[y] : -# 1195| mu1195_3(int) = Store[y] : &:r1195_2, r1195_1 -#-----| Goto -> Block 2 - -# 1196| Block 2 +# 1196| Block 1 # 1196| v1196_1(void) = NoOp : -# 1197| r1197_1(int) = Constant[3] : +# 1197| r1197_1(int) = Constant[2] : # 1197| r1197_2(glval) = VariableAddress[y] : # 1197| mu1197_3(int) = Store[y] : &:r1197_2, r1197_1 -#-----| Goto -> Block 3 +#-----| Goto -> Block 2 -# 1199| Block 3 -# 1199| r1199_1(glval) = VariableAddress[z] : +# 1198| Block 2 +# 1198| v1198_1(void) = NoOp : +# 1199| r1199_1(int) = Constant[3] : # 1199| r1199_2(glval) = VariableAddress[y] : -# 1199| r1199_3(int) = Load[y] : &:r1199_2, ~m? -# 1199| mu1199_4(int) = Store[z] : &:r1199_1, r1199_3 -# 1200| v1200_1(void) = NoOp : -# 1191| v1191_6(void) = ReturnVoid : -# 1191| v1191_7(void) = AliasedUse : ~m? -# 1191| v1191_8(void) = ExitFunction : - -# 1202| void switch2Case(int) -# 1202| Block 0 -# 1202| v1202_1(void) = EnterFunction : -# 1202| mu1202_2(unknown) = AliasedDefinition : -# 1202| mu1202_3(unknown) = InitializeNonLocal : -# 1202| r1202_4(glval) = VariableAddress[x] : -# 1202| mu1202_5(int) = InitializeParameter[x] : &:r1202_4 -# 1203| r1203_1(glval) = VariableAddress[y] : -# 1203| r1203_2(int) = Constant[0] : -# 1203| mu1203_3(int) = Store[y] : &:r1203_1, r1203_2 -# 1204| r1204_1(glval) = VariableAddress[x] : -# 1204| r1204_2(int) = Load[x] : &:r1204_1, ~m? -# 1204| v1204_3(void) = Switch : r1204_2 +# 1199| mu1199_3(int) = Store[y] : &:r1199_2, r1199_1 +#-----| Goto -> Block 3 + +# 1201| Block 3 +# 1201| r1201_1(glval) = VariableAddress[z] : +# 1201| r1201_2(glval) = VariableAddress[y] : +# 1201| r1201_3(int) = Load[y] : &:r1201_2, ~m? +# 1201| mu1201_4(int) = Store[z] : &:r1201_1, r1201_3 +# 1202| v1202_1(void) = NoOp : +# 1193| v1193_6(void) = ReturnVoid : +# 1193| v1193_7(void) = AliasedUse : ~m? +# 1193| v1193_8(void) = ExitFunction : + +# 1204| void switch2Case(int) +# 1204| Block 0 +# 1204| v1204_1(void) = EnterFunction : +# 1204| mu1204_2(unknown) = AliasedDefinition : +# 1204| mu1204_3(unknown) = InitializeNonLocal : +# 1204| r1204_4(glval) = VariableAddress[x] : +# 1204| mu1204_5(int) = InitializeParameter[x] : &:r1204_4 +# 1205| r1205_1(glval) = VariableAddress[y] : +# 1205| r1205_2(int) = Constant[0] : +# 1205| mu1205_3(int) = Store[y] : &:r1205_1, r1205_2 +# 1206| r1206_1(glval) = VariableAddress[x] : +# 1206| r1206_2(int) = Load[x] : &:r1206_1, ~m? +# 1206| v1206_3(void) = Switch : r1206_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1205| Block 1 -# 1205| v1205_1(void) = NoOp : -# 1206| r1206_1(int) = Constant[2] : -# 1206| r1206_2(glval) = VariableAddress[y] : -# 1206| mu1206_3(int) = Store[y] : &:r1206_2, r1206_1 +# 1207| Block 1 # 1207| v1207_1(void) = NoOp : +# 1208| r1208_1(int) = Constant[2] : +# 1208| r1208_2(glval) = VariableAddress[y] : +# 1208| mu1208_3(int) = Store[y] : &:r1208_2, r1208_1 +# 1209| v1209_1(void) = NoOp : #-----| Goto -> Block 3 -# 1208| Block 2 -# 1208| v1208_1(void) = NoOp : -# 1209| r1209_1(int) = Constant[3] : -# 1209| r1209_2(glval) = VariableAddress[y] : -# 1209| mu1209_3(int) = Store[y] : &:r1209_2, r1209_1 -#-----| Goto -> Block 3 - -# 1210| Block 3 +# 1210| Block 2 # 1210| v1210_1(void) = NoOp : -# 1211| r1211_1(glval) = VariableAddress[z] : +# 1211| r1211_1(int) = Constant[3] : # 1211| r1211_2(glval) = VariableAddress[y] : -# 1211| r1211_3(int) = Load[y] : &:r1211_2, ~m? -# 1211| mu1211_4(int) = Store[z] : &:r1211_1, r1211_3 +# 1211| mu1211_3(int) = Store[y] : &:r1211_2, r1211_1 +#-----| Goto -> Block 3 + +# 1212| Block 3 # 1212| v1212_1(void) = NoOp : -# 1202| v1202_6(void) = ReturnVoid : -# 1202| v1202_7(void) = AliasedUse : ~m? -# 1202| v1202_8(void) = ExitFunction : - -# 1214| void switch2Case_default(int) -# 1214| Block 0 -# 1214| v1214_1(void) = EnterFunction : -# 1214| mu1214_2(unknown) = AliasedDefinition : -# 1214| mu1214_3(unknown) = InitializeNonLocal : -# 1214| r1214_4(glval) = VariableAddress[x] : -# 1214| mu1214_5(int) = InitializeParameter[x] : &:r1214_4 -# 1215| r1215_1(glval) = VariableAddress[y] : -# 1215| r1215_2(int) = Constant[0] : -# 1215| mu1215_3(int) = Store[y] : &:r1215_1, r1215_2 -# 1216| r1216_1(glval) = VariableAddress[x] : -# 1216| r1216_2(int) = Load[x] : &:r1216_1, ~m? -# 1216| v1216_3(void) = Switch : r1216_2 +# 1213| r1213_1(glval) = VariableAddress[z] : +# 1213| r1213_2(glval) = VariableAddress[y] : +# 1213| r1213_3(int) = Load[y] : &:r1213_2, ~m? +# 1213| mu1213_4(int) = Store[z] : &:r1213_1, r1213_3 +# 1214| v1214_1(void) = NoOp : +# 1204| v1204_6(void) = ReturnVoid : +# 1204| v1204_7(void) = AliasedUse : ~m? +# 1204| v1204_8(void) = ExitFunction : + +# 1216| void switch2Case_default(int) +# 1216| Block 0 +# 1216| v1216_1(void) = EnterFunction : +# 1216| mu1216_2(unknown) = AliasedDefinition : +# 1216| mu1216_3(unknown) = InitializeNonLocal : +# 1216| r1216_4(glval) = VariableAddress[x] : +# 1216| mu1216_5(int) = InitializeParameter[x] : &:r1216_4 +# 1217| r1217_1(glval) = VariableAddress[y] : +# 1217| r1217_2(int) = Constant[0] : +# 1217| mu1217_3(int) = Store[y] : &:r1217_1, r1217_2 +# 1218| r1218_1(glval) = VariableAddress[x] : +# 1218| r1218_2(int) = Load[x] : &:r1218_1, ~m? +# 1218| v1218_3(void) = Switch : r1218_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1217| Block 1 -# 1217| v1217_1(void) = NoOp : -# 1218| r1218_1(int) = Constant[2] : -# 1218| r1218_2(glval) = VariableAddress[y] : -# 1218| mu1218_3(int) = Store[y] : &:r1218_2, r1218_1 +# 1219| Block 1 # 1219| v1219_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1221| Block 2 +# 1220| r1220_1(int) = Constant[2] : +# 1220| r1220_2(glval) = VariableAddress[y] : +# 1220| mu1220_3(int) = Store[y] : &:r1220_2, r1220_1 # 1221| v1221_1(void) = NoOp : -# 1222| r1222_1(int) = Constant[3] : -# 1222| r1222_2(glval) = VariableAddress[y] : -# 1222| mu1222_3(int) = Store[y] : &:r1222_2, r1222_1 -# 1223| v1223_1(void) = NoOp : #-----| Goto -> Block 4 -# 1225| Block 3 +# 1223| Block 2 +# 1223| v1223_1(void) = NoOp : +# 1224| r1224_1(int) = Constant[3] : +# 1224| r1224_2(glval) = VariableAddress[y] : +# 1224| mu1224_3(int) = Store[y] : &:r1224_2, r1224_1 # 1225| v1225_1(void) = NoOp : -# 1226| r1226_1(int) = Constant[4] : -# 1226| r1226_2(glval) = VariableAddress[y] : -# 1226| mu1226_3(int) = Store[y] : &:r1226_2, r1226_1 #-----| Goto -> Block 4 -# 1227| Block 4 +# 1227| Block 3 # 1227| v1227_1(void) = NoOp : -# 1228| r1228_1(glval) = VariableAddress[z] : +# 1228| r1228_1(int) = Constant[4] : # 1228| r1228_2(glval) = VariableAddress[y] : -# 1228| r1228_3(int) = Load[y] : &:r1228_2, ~m? -# 1228| mu1228_4(int) = Store[z] : &:r1228_1, r1228_3 +# 1228| mu1228_3(int) = Store[y] : &:r1228_2, r1228_1 +#-----| Goto -> Block 4 + +# 1229| Block 4 # 1229| v1229_1(void) = NoOp : -# 1214| v1214_6(void) = ReturnVoid : -# 1214| v1214_7(void) = AliasedUse : ~m? -# 1214| v1214_8(void) = ExitFunction : - -# 1231| int staticLocalInit(int) -# 1231| Block 0 -# 1231| v1231_1(void) = EnterFunction : -# 1231| mu1231_2(unknown) = AliasedDefinition : -# 1231| mu1231_3(unknown) = InitializeNonLocal : -# 1231| r1231_4(glval) = VariableAddress[x] : -# 1231| mu1231_5(int) = InitializeParameter[x] : &:r1231_4 -# 1234| r1234_1(glval) = VariableAddress[c#init] : -# 1234| r1234_2(bool) = Load[c#init] : &:r1234_1, ~m? -# 1234| v1234_3(void) = ConditionalBranch : r1234_2 +# 1230| r1230_1(glval) = VariableAddress[z] : +# 1230| r1230_2(glval) = VariableAddress[y] : +# 1230| r1230_3(int) = Load[y] : &:r1230_2, ~m? +# 1230| mu1230_4(int) = Store[z] : &:r1230_1, r1230_3 +# 1231| v1231_1(void) = NoOp : +# 1216| v1216_6(void) = ReturnVoid : +# 1216| v1216_7(void) = AliasedUse : ~m? +# 1216| v1216_8(void) = ExitFunction : + +# 1233| int staticLocalInit(int) +# 1233| Block 0 +# 1233| v1233_1(void) = EnterFunction : +# 1233| mu1233_2(unknown) = AliasedDefinition : +# 1233| mu1233_3(unknown) = InitializeNonLocal : +# 1233| r1233_4(glval) = VariableAddress[x] : +# 1233| mu1233_5(int) = InitializeParameter[x] : &:r1233_4 +# 1236| r1236_1(glval) = VariableAddress[c#init] : +# 1236| r1236_2(bool) = Load[c#init] : &:r1236_1, ~m? +# 1236| v1236_3(void) = ConditionalBranch : r1236_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1234| Block 1 -# 1234| r1234_4(glval) = VariableAddress[c] : -# 1234| r1234_5(glval) = VariableAddress[x] : -# 1234| r1234_6(int) = Load[x] : &:r1234_5, ~m? -# 1234| mu1234_7(int) = Store[c] : &:r1234_4, r1234_6 -# 1234| r1234_8(bool) = Constant[1] : -# 1234| mu1234_9(bool) = Store[c#init] : &:r1234_1, r1234_8 +# 1236| Block 1 +# 1236| r1236_4(glval) = VariableAddress[c] : +# 1236| r1236_5(glval) = VariableAddress[x] : +# 1236| r1236_6(int) = Load[x] : &:r1236_5, ~m? +# 1236| mu1236_7(int) = Store[c] : &:r1236_4, r1236_6 +# 1236| r1236_8(bool) = Constant[1] : +# 1236| mu1236_9(bool) = Store[c#init] : &:r1236_1, r1236_8 #-----| Goto -> Block 2 -# 1237| Block 2 -# 1237| r1237_1(glval) = VariableAddress[#return] : -# 1237| r1237_2(glval) = VariableAddress[a] : -# 1237| r1237_3(int) = Load[a] : &:r1237_2, ~m? -# 1237| r1237_4(glval) = VariableAddress[b] : -# 1237| r1237_5(int) = Load[b] : &:r1237_4, ~m? -# 1237| r1237_6(int) = Add : r1237_3, r1237_5 -# 1237| r1237_7(glval) = VariableAddress[c] : -# 1237| r1237_8(int) = Load[c] : &:r1237_7, ~m? -# 1237| r1237_9(int) = Add : r1237_6, r1237_8 -# 1237| r1237_10(glval) = VariableAddress[d] : -# 1237| r1237_11(int) = Load[d] : &:r1237_10, ~m? -# 1237| r1237_12(int) = Add : r1237_9, r1237_11 -# 1237| mu1237_13(int) = Store[#return] : &:r1237_1, r1237_12 -# 1231| r1231_6(glval) = VariableAddress[#return] : -# 1231| v1231_7(void) = ReturnValue : &:r1231_6, ~m? -# 1231| v1231_8(void) = AliasedUse : ~m? -# 1231| v1231_9(void) = ExitFunction : - -# 1232| int a -# 1232| Block 0 -# 1232| v1232_1(void) = EnterFunction : -# 1232| mu1232_2(unknown) = AliasedDefinition : -# 1232| r1232_3(glval) = VariableAddress[a] : -# 1232| r1232_4(int) = Constant[0] : -# 1232| mu1232_5(int) = Store[a] : &:r1232_3, r1232_4 -# 1232| v1232_6(void) = ReturnVoid : -# 1232| v1232_7(void) = AliasedUse : ~m? -# 1232| v1232_8(void) = ExitFunction : - -# 1233| int b -# 1233| Block 0 -# 1233| v1233_1(void) = EnterFunction : -# 1233| mu1233_2(unknown) = AliasedDefinition : -# 1233| r1233_3(glval) = VariableAddress[b] : -# 1233| r1233_4(int) = Constant[4] : -# 1233| mu1233_5(int) = Store[b] : &:r1233_3, r1233_4 -# 1233| v1233_6(void) = ReturnVoid : -# 1233| v1233_7(void) = AliasedUse : ~m? -# 1233| v1233_8(void) = ExitFunction : - -# 1240| void staticLocalWithConstructor(char const*) -# 1240| Block 0 -# 1240| v1240_1(void) = EnterFunction : -# 1240| mu1240_2(unknown) = AliasedDefinition : -# 1240| mu1240_3(unknown) = InitializeNonLocal : -# 1240| r1240_4(glval) = VariableAddress[dynamic] : -# 1240| mu1240_5(char *) = InitializeParameter[dynamic] : &:r1240_4 -# 1240| r1240_6(char *) = Load[dynamic] : &:r1240_4, ~m? -# 1240| mu1240_7(unknown) = InitializeIndirection[dynamic] : &:r1240_6 -# 1241| r1241_1(glval) = VariableAddress[a#init] : -# 1241| r1241_2(bool) = Load[a#init] : &:r1241_1, ~m? -# 1241| v1241_3(void) = ConditionalBranch : r1241_2 +# 1239| Block 2 +# 1239| r1239_1(glval) = VariableAddress[#return] : +# 1239| r1239_2(glval) = VariableAddress[a] : +# 1239| r1239_3(int) = Load[a] : &:r1239_2, ~m? +# 1239| r1239_4(glval) = VariableAddress[b] : +# 1239| r1239_5(int) = Load[b] : &:r1239_4, ~m? +# 1239| r1239_6(int) = Add : r1239_3, r1239_5 +# 1239| r1239_7(glval) = VariableAddress[c] : +# 1239| r1239_8(int) = Load[c] : &:r1239_7, ~m? +# 1239| r1239_9(int) = Add : r1239_6, r1239_8 +# 1239| r1239_10(glval) = VariableAddress[d] : +# 1239| r1239_11(int) = Load[d] : &:r1239_10, ~m? +# 1239| r1239_12(int) = Add : r1239_9, r1239_11 +# 1239| mu1239_13(int) = Store[#return] : &:r1239_1, r1239_12 +# 1233| r1233_6(glval) = VariableAddress[#return] : +# 1233| v1233_7(void) = ReturnValue : &:r1233_6, ~m? +# 1233| v1233_8(void) = AliasedUse : ~m? +# 1233| v1233_9(void) = ExitFunction : + +# 1234| int a +# 1234| Block 0 +# 1234| v1234_1(void) = EnterFunction : +# 1234| mu1234_2(unknown) = AliasedDefinition : +# 1234| r1234_3(glval) = VariableAddress[a] : +# 1234| r1234_4(int) = Constant[0] : +# 1234| mu1234_5(int) = Store[a] : &:r1234_3, r1234_4 +# 1234| v1234_6(void) = ReturnVoid : +# 1234| v1234_7(void) = AliasedUse : ~m? +# 1234| v1234_8(void) = ExitFunction : + +# 1235| int b +# 1235| Block 0 +# 1235| v1235_1(void) = EnterFunction : +# 1235| mu1235_2(unknown) = AliasedDefinition : +# 1235| r1235_3(glval) = VariableAddress[b] : +# 1235| r1235_4(int) = Constant[4] : +# 1235| mu1235_5(int) = Store[b] : &:r1235_3, r1235_4 +# 1235| v1235_6(void) = ReturnVoid : +# 1235| v1235_7(void) = AliasedUse : ~m? +# 1235| v1235_8(void) = ExitFunction : + +# 1242| void staticLocalWithConstructor(char const*) +# 1242| Block 0 +# 1242| v1242_1(void) = EnterFunction : +# 1242| mu1242_2(unknown) = AliasedDefinition : +# 1242| mu1242_3(unknown) = InitializeNonLocal : +# 1242| r1242_4(glval) = VariableAddress[dynamic] : +# 1242| mu1242_5(char *) = InitializeParameter[dynamic] : &:r1242_4 +# 1242| r1242_6(char *) = Load[dynamic] : &:r1242_4, ~m? +# 1242| mu1242_7(unknown) = InitializeIndirection[dynamic] : &:r1242_6 +# 1243| r1243_1(glval) = VariableAddress[a#init] : +# 1243| r1243_2(bool) = Load[a#init] : &:r1243_1, ~m? +# 1243| v1243_3(void) = ConditionalBranch : r1243_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1241| Block 1 -# 1241| r1241_4(glval) = VariableAddress[a] : +# 1243| Block 1 +# 1243| r1243_4(glval) = VariableAddress[a] : #-----| r0_1(glval) = FunctionAddress[String] : -#-----| v0_2(void) = Call[String] : func:r0_1, this:r1241_4 +#-----| v0_2(void) = Call[String] : func:r0_1, this:r1243_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(String) = ^IndirectMayWriteSideEffect[-1] : &:r1241_4 -# 1241| r1241_5(bool) = Constant[1] : -# 1241| mu1241_6(bool) = Store[a#init] : &:r1241_1, r1241_5 +#-----| mu0_4(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_4 +# 1243| r1243_5(bool) = Constant[1] : +# 1243| mu1243_6(bool) = Store[a#init] : &:r1243_1, r1243_5 #-----| Goto -> Block 2 -# 1242| Block 2 -# 1242| r1242_1(glval) = VariableAddress[b#init] : -# 1242| r1242_2(bool) = Load[b#init] : &:r1242_1, ~m? -# 1242| v1242_3(void) = ConditionalBranch : r1242_2 +# 1244| Block 2 +# 1244| r1244_1(glval) = VariableAddress[b#init] : +# 1244| r1244_2(bool) = Load[b#init] : &:r1244_1, ~m? +# 1244| v1244_3(void) = ConditionalBranch : r1244_2 #-----| False -> Block 3 #-----| True -> Block 4 -# 1242| Block 3 -# 1242| r1242_4(glval) = VariableAddress[b] : -# 1242| r1242_5(glval) = FunctionAddress[String] : -# 1242| r1242_6(glval) = StringConstant["static"] : -# 1242| r1242_7(char *) = Convert : r1242_6 -# 1242| v1242_8(void) = Call[String] : func:r1242_5, this:r1242_4, 0:r1242_7 -# 1242| mu1242_9(unknown) = ^CallSideEffect : ~m? -# 1242| v1242_10(void) = ^BufferReadSideEffect[0] : &:r1242_7, ~m? -# 1242| mu1242_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1242_4 -# 1242| r1242_12(bool) = Constant[1] : -# 1242| mu1242_13(bool) = Store[b#init] : &:r1242_1, r1242_12 +# 1244| Block 3 +# 1244| r1244_4(glval) = VariableAddress[b] : +# 1244| r1244_5(glval) = FunctionAddress[String] : +# 1244| r1244_6(glval) = StringConstant["static"] : +# 1244| r1244_7(char *) = Convert : r1244_6 +# 1244| v1244_8(void) = Call[String] : func:r1244_5, this:r1244_4, 0:r1244_7 +# 1244| mu1244_9(unknown) = ^CallSideEffect : ~m? +# 1244| v1244_10(void) = ^BufferReadSideEffect[0] : &:r1244_7, ~m? +# 1244| mu1244_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1244_4 +# 1244| r1244_12(bool) = Constant[1] : +# 1244| mu1244_13(bool) = Store[b#init] : &:r1244_1, r1244_12 #-----| Goto -> Block 4 -# 1243| Block 4 -# 1243| r1243_1(glval) = VariableAddress[c#init] : -# 1243| r1243_2(bool) = Load[c#init] : &:r1243_1, ~m? -# 1243| v1243_3(void) = ConditionalBranch : r1243_2 +# 1245| Block 4 +# 1245| r1245_1(glval) = VariableAddress[c#init] : +# 1245| r1245_2(bool) = Load[c#init] : &:r1245_1, ~m? +# 1245| v1245_3(void) = ConditionalBranch : r1245_2 #-----| False -> Block 5 #-----| True -> Block 6 -# 1243| Block 5 -# 1243| r1243_4(glval) = VariableAddress[c] : -# 1243| r1243_5(glval) = FunctionAddress[String] : -# 1243| r1243_6(glval) = VariableAddress[dynamic] : -# 1243| r1243_7(char *) = Load[dynamic] : &:r1243_6, ~m? -# 1243| v1243_8(void) = Call[String] : func:r1243_5, this:r1243_4, 0:r1243_7 -# 1243| mu1243_9(unknown) = ^CallSideEffect : ~m? -# 1243| v1243_10(void) = ^BufferReadSideEffect[0] : &:r1243_7, ~m? -# 1243| mu1243_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_4 -# 1243| r1243_12(bool) = Constant[1] : -# 1243| mu1243_13(bool) = Store[c#init] : &:r1243_1, r1243_12 +# 1245| Block 5 +# 1245| r1245_4(glval) = VariableAddress[c] : +# 1245| r1245_5(glval) = FunctionAddress[String] : +# 1245| r1245_6(glval) = VariableAddress[dynamic] : +# 1245| r1245_7(char *) = Load[dynamic] : &:r1245_6, ~m? +# 1245| v1245_8(void) = Call[String] : func:r1245_5, this:r1245_4, 0:r1245_7 +# 1245| mu1245_9(unknown) = ^CallSideEffect : ~m? +# 1245| v1245_10(void) = ^BufferReadSideEffect[0] : &:r1245_7, ~m? +# 1245| mu1245_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1245_4 +# 1245| r1245_12(bool) = Constant[1] : +# 1245| mu1245_13(bool) = Store[c#init] : &:r1245_1, r1245_12 #-----| Goto -> Block 6 -# 1244| Block 6 -# 1244| v1244_1(void) = NoOp : -# 1240| v1240_8(void) = ReturnIndirection[dynamic] : &:r1240_6, ~m? -# 1240| v1240_9(void) = ReturnVoid : -# 1240| v1240_10(void) = AliasedUse : ~m? -# 1240| v1240_11(void) = ExitFunction : - -# 1251| void test_strings(char*, char*) -# 1251| Block 0 -# 1251| v1251_1(void) = EnterFunction : -# 1251| mu1251_2(unknown) = AliasedDefinition : -# 1251| mu1251_3(unknown) = InitializeNonLocal : -# 1251| r1251_4(glval) = VariableAddress[s1] : -# 1251| mu1251_5(char *) = InitializeParameter[s1] : &:r1251_4 -# 1251| r1251_6(char *) = Load[s1] : &:r1251_4, ~m? -# 1251| mu1251_7(unknown) = InitializeIndirection[s1] : &:r1251_6 -# 1251| r1251_8(glval) = VariableAddress[s2] : -# 1251| mu1251_9(char *) = InitializeParameter[s2] : &:r1251_8 -# 1251| r1251_10(char *) = Load[s2] : &:r1251_8, ~m? -# 1251| mu1251_11(unknown) = InitializeIndirection[s2] : &:r1251_10 -# 1252| r1252_1(glval) = VariableAddress[buffer] : -# 1252| mu1252_2(char[1024]) = Uninitialized[buffer] : &:r1252_1 -# 1252| r1252_3(int) = Constant[0] : -# 1252| r1252_4(glval) = PointerAdd[1] : r1252_1, r1252_3 -# 1252| r1252_5(char) = Constant[0] : -# 1252| mu1252_6(char) = Store[?] : &:r1252_4, r1252_5 -# 1252| r1252_7(int) = Constant[1] : -# 1252| r1252_8(glval) = PointerAdd[1] : r1252_1, r1252_7 -# 1252| r1252_9(unknown[1023]) = Constant[0] : -# 1252| mu1252_10(unknown[1023]) = Store[?] : &:r1252_8, r1252_9 -# 1254| r1254_1(glval) = FunctionAddress[strcpy] : -# 1254| r1254_2(glval) = VariableAddress[buffer] : -# 1254| r1254_3(char *) = Convert : r1254_2 -# 1254| r1254_4(glval) = VariableAddress[s1] : -# 1254| r1254_5(char *) = Load[s1] : &:r1254_4, ~m? -# 1254| r1254_6(char *) = Convert : r1254_5 -# 1254| r1254_7(char *) = Call[strcpy] : func:r1254_1, 0:r1254_3, 1:r1254_6 -# 1254| v1254_8(void) = ^BufferReadSideEffect[1] : &:r1254_6, ~m? -# 1254| mu1254_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1254_3 -# 1255| r1255_1(glval) = FunctionAddress[strcat] : -# 1255| r1255_2(glval) = VariableAddress[buffer] : -# 1255| r1255_3(char *) = Convert : r1255_2 -# 1255| r1255_4(glval) = VariableAddress[s2] : -# 1255| r1255_5(char *) = Load[s2] : &:r1255_4, ~m? -# 1255| r1255_6(char *) = Convert : r1255_5 -# 1255| r1255_7(char *) = Call[strcat] : func:r1255_1, 0:r1255_3, 1:r1255_6 -# 1255| v1255_8(void) = ^BufferReadSideEffect[0] : &:r1255_3, ~m? -# 1255| v1255_9(void) = ^BufferReadSideEffect[1] : &:r1255_6, ~m? -# 1255| mu1255_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1255_3 -# 1256| v1256_1(void) = NoOp : -# 1251| v1251_12(void) = ReturnIndirection[s1] : &:r1251_6, ~m? -# 1251| v1251_13(void) = ReturnIndirection[s2] : &:r1251_10, ~m? -# 1251| v1251_14(void) = ReturnVoid : -# 1251| v1251_15(void) = AliasedUse : ~m? -# 1251| v1251_16(void) = ExitFunction : - -# 1261| void A::static_member(A*, int) -# 1261| Block 0 -# 1261| v1261_1(void) = EnterFunction : -# 1261| mu1261_2(unknown) = AliasedDefinition : -# 1261| mu1261_3(unknown) = InitializeNonLocal : -# 1261| r1261_4(glval) = VariableAddress[a] : -# 1261| mu1261_5(A *) = InitializeParameter[a] : &:r1261_4 -# 1261| r1261_6(A *) = Load[a] : &:r1261_4, ~m? -# 1261| mu1261_7(unknown) = InitializeIndirection[a] : &:r1261_6 -# 1261| r1261_8(glval) = VariableAddress[x] : -# 1261| mu1261_9(int) = InitializeParameter[x] : &:r1261_8 -# 1262| r1262_1(glval) = VariableAddress[x] : -# 1262| r1262_2(int) = Load[x] : &:r1262_1, ~m? -# 1262| r1262_3(glval) = VariableAddress[a] : -# 1262| r1262_4(A *) = Load[a] : &:r1262_3, ~m? -# 1262| r1262_5(glval) = FieldAddress[member] : r1262_4 -# 1262| mu1262_6(int) = Store[?] : &:r1262_5, r1262_2 -# 1263| v1263_1(void) = NoOp : -# 1261| v1261_10(void) = ReturnIndirection[a] : &:r1261_6, ~m? -# 1261| v1261_11(void) = ReturnVoid : -# 1261| v1261_12(void) = AliasedUse : ~m? -# 1261| v1261_13(void) = ExitFunction : - -# 1270| void test_static_member_functions(int, A*) -# 1270| Block 0 -# 1270| v1270_1(void) = EnterFunction : -# 1270| mu1270_2(unknown) = AliasedDefinition : -# 1270| mu1270_3(unknown) = InitializeNonLocal : -# 1270| r1270_4(glval) = VariableAddress[int_arg] : -# 1270| mu1270_5(int) = InitializeParameter[int_arg] : &:r1270_4 -# 1270| r1270_6(glval) = VariableAddress[a_arg] : -# 1270| mu1270_7(A *) = InitializeParameter[a_arg] : &:r1270_6 -# 1270| r1270_8(A *) = Load[a_arg] : &:r1270_6, ~m? -# 1270| mu1270_9(unknown) = InitializeIndirection[a_arg] : &:r1270_8 -# 1271| r1271_1(glval) = VariableAddress[c] : -# 1271| mu1271_2(C) = Uninitialized[c] : &:r1271_1 -# 1271| r1271_3(glval) = FunctionAddress[C] : -# 1271| v1271_4(void) = Call[C] : func:r1271_3, this:r1271_1 -# 1271| mu1271_5(unknown) = ^CallSideEffect : ~m? -# 1271| mu1271_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1271_1 -# 1272| r1272_1(glval) = VariableAddress[c] : -# 1272| r1272_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1272| r1272_3(int) = Constant[10] : -# 1272| r1272_4(int) = Call[StaticMemberFunction] : func:r1272_2, 0:r1272_3 -# 1272| mu1272_5(unknown) = ^CallSideEffect : ~m? -# 1273| r1273_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1273| r1273_2(int) = Constant[10] : -# 1273| r1273_3(int) = Call[StaticMemberFunction] : func:r1273_1, 0:r1273_2 -# 1273| mu1273_4(unknown) = ^CallSideEffect : ~m? -# 1275| r1275_1(glval) = VariableAddress[a] : -# 1275| mu1275_2(A) = Uninitialized[a] : &:r1275_1 -# 1276| r1276_1(glval) = VariableAddress[a] : -# 1276| r1276_2(glval) = FunctionAddress[static_member] : -# 1276| r1276_3(glval) = VariableAddress[a] : -# 1276| r1276_4(A *) = CopyValue : r1276_3 -# 1276| r1276_5(glval) = VariableAddress[int_arg] : -# 1276| r1276_6(int) = Load[int_arg] : &:r1276_5, ~m? -# 1276| v1276_7(void) = Call[static_member] : func:r1276_2, 0:r1276_4, 1:r1276_6 -# 1276| mu1276_8(unknown) = ^CallSideEffect : ~m? -# 1276| v1276_9(void) = ^BufferReadSideEffect[0] : &:r1276_4, ~m? -# 1276| mu1276_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1276_4 -# 1277| r1277_1(glval) = FunctionAddress[static_member] : -# 1277| r1277_2(glval) = VariableAddress[a] : -# 1277| r1277_3(A *) = CopyValue : r1277_2 -# 1277| r1277_4(glval) = VariableAddress[int_arg] : -# 1277| r1277_5(int) = Load[int_arg] : &:r1277_4, ~m? -# 1277| v1277_6(void) = Call[static_member] : func:r1277_1, 0:r1277_3, 1:r1277_5 -# 1277| mu1277_7(unknown) = ^CallSideEffect : ~m? -# 1277| v1277_8(void) = ^BufferReadSideEffect[0] : &:r1277_3, ~m? -# 1277| mu1277_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1277_3 -# 1279| r1279_1(glval) = VariableAddress[a] : -# 1279| r1279_2(A *) = CopyValue : r1279_1 -# 1279| r1279_3(glval) = FunctionAddress[static_member] : -# 1279| r1279_4(glval) = VariableAddress[a_arg] : -# 1279| r1279_5(A *) = Load[a_arg] : &:r1279_4, ~m? -# 1279| r1279_6(glval) = VariableAddress[int_arg] : -# 1279| r1279_7(int) = Load[int_arg] : &:r1279_6, ~m? -# 1279| r1279_8(int) = Constant[2] : -# 1279| r1279_9(int) = Add : r1279_7, r1279_8 -# 1279| v1279_10(void) = Call[static_member] : func:r1279_3, 0:r1279_5, 1:r1279_9 -# 1279| mu1279_11(unknown) = ^CallSideEffect : ~m? -# 1279| v1279_12(void) = ^BufferReadSideEffect[0] : &:r1279_5, ~m? -# 1279| mu1279_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1279_5 -# 1280| r1280_1(glval) = VariableAddress[a_arg] : -# 1280| r1280_2(A *) = Load[a_arg] : &:r1280_1, ~m? -# 1280| r1280_3(glval) = CopyValue : r1280_2 -# 1280| r1280_4(glval) = FunctionAddress[static_member] : -# 1280| r1280_5(glval) = VariableAddress[a] : -# 1280| r1280_6(A *) = CopyValue : r1280_5 -# 1280| r1280_7(int) = Constant[99] : -# 1280| v1280_8(void) = Call[static_member] : func:r1280_4, 0:r1280_6, 1:r1280_7 -# 1280| mu1280_9(unknown) = ^CallSideEffect : ~m? -# 1280| v1280_10(void) = ^BufferReadSideEffect[0] : &:r1280_6, ~m? -# 1280| mu1280_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1280_6 -# 1281| r1281_1(glval) = VariableAddress[a_arg] : -# 1281| r1281_2(A *) = Load[a_arg] : &:r1281_1, ~m? +# 1246| Block 6 +# 1246| v1246_1(void) = NoOp : +# 1242| v1242_8(void) = ReturnIndirection[dynamic] : &:r1242_6, ~m? +# 1242| v1242_9(void) = ReturnVoid : +# 1242| v1242_10(void) = AliasedUse : ~m? +# 1242| v1242_11(void) = ExitFunction : + +# 1253| void test_strings(char*, char*) +# 1253| Block 0 +# 1253| v1253_1(void) = EnterFunction : +# 1253| mu1253_2(unknown) = AliasedDefinition : +# 1253| mu1253_3(unknown) = InitializeNonLocal : +# 1253| r1253_4(glval) = VariableAddress[s1] : +# 1253| mu1253_5(char *) = InitializeParameter[s1] : &:r1253_4 +# 1253| r1253_6(char *) = Load[s1] : &:r1253_4, ~m? +# 1253| mu1253_7(unknown) = InitializeIndirection[s1] : &:r1253_6 +# 1253| r1253_8(glval) = VariableAddress[s2] : +# 1253| mu1253_9(char *) = InitializeParameter[s2] : &:r1253_8 +# 1253| r1253_10(char *) = Load[s2] : &:r1253_8, ~m? +# 1253| mu1253_11(unknown) = InitializeIndirection[s2] : &:r1253_10 +# 1254| r1254_1(glval) = VariableAddress[buffer] : +# 1254| mu1254_2(char[1024]) = Uninitialized[buffer] : &:r1254_1 +# 1254| r1254_3(int) = Constant[0] : +# 1254| r1254_4(glval) = PointerAdd[1] : r1254_1, r1254_3 +# 1254| r1254_5(char) = Constant[0] : +# 1254| mu1254_6(char) = Store[?] : &:r1254_4, r1254_5 +# 1254| r1254_7(int) = Constant[1] : +# 1254| r1254_8(glval) = PointerAdd[1] : r1254_1, r1254_7 +# 1254| r1254_9(unknown[1023]) = Constant[0] : +# 1254| mu1254_10(unknown[1023]) = Store[?] : &:r1254_8, r1254_9 +# 1256| r1256_1(glval) = FunctionAddress[strcpy] : +# 1256| r1256_2(glval) = VariableAddress[buffer] : +# 1256| r1256_3(char *) = Convert : r1256_2 +# 1256| r1256_4(glval) = VariableAddress[s1] : +# 1256| r1256_5(char *) = Load[s1] : &:r1256_4, ~m? +# 1256| r1256_6(char *) = Convert : r1256_5 +# 1256| r1256_7(char *) = Call[strcpy] : func:r1256_1, 0:r1256_3, 1:r1256_6 +# 1256| v1256_8(void) = ^BufferReadSideEffect[1] : &:r1256_6, ~m? +# 1256| mu1256_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1256_3 +# 1257| r1257_1(glval) = FunctionAddress[strcat] : +# 1257| r1257_2(glval) = VariableAddress[buffer] : +# 1257| r1257_3(char *) = Convert : r1257_2 +# 1257| r1257_4(glval) = VariableAddress[s2] : +# 1257| r1257_5(char *) = Load[s2] : &:r1257_4, ~m? +# 1257| r1257_6(char *) = Convert : r1257_5 +# 1257| r1257_7(char *) = Call[strcat] : func:r1257_1, 0:r1257_3, 1:r1257_6 +# 1257| v1257_8(void) = ^BufferReadSideEffect[0] : &:r1257_3, ~m? +# 1257| v1257_9(void) = ^BufferReadSideEffect[1] : &:r1257_6, ~m? +# 1257| mu1257_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1257_3 +# 1258| v1258_1(void) = NoOp : +# 1253| v1253_12(void) = ReturnIndirection[s1] : &:r1253_6, ~m? +# 1253| v1253_13(void) = ReturnIndirection[s2] : &:r1253_10, ~m? +# 1253| v1253_14(void) = ReturnVoid : +# 1253| v1253_15(void) = AliasedUse : ~m? +# 1253| v1253_16(void) = ExitFunction : + +# 1263| void A::static_member(A*, int) +# 1263| Block 0 +# 1263| v1263_1(void) = EnterFunction : +# 1263| mu1263_2(unknown) = AliasedDefinition : +# 1263| mu1263_3(unknown) = InitializeNonLocal : +# 1263| r1263_4(glval) = VariableAddress[a] : +# 1263| mu1263_5(A *) = InitializeParameter[a] : &:r1263_4 +# 1263| r1263_6(A *) = Load[a] : &:r1263_4, ~m? +# 1263| mu1263_7(unknown) = InitializeIndirection[a] : &:r1263_6 +# 1263| r1263_8(glval) = VariableAddress[x] : +# 1263| mu1263_9(int) = InitializeParameter[x] : &:r1263_8 +# 1264| r1264_1(glval) = VariableAddress[x] : +# 1264| r1264_2(int) = Load[x] : &:r1264_1, ~m? +# 1264| r1264_3(glval) = VariableAddress[a] : +# 1264| r1264_4(A *) = Load[a] : &:r1264_3, ~m? +# 1264| r1264_5(glval) = FieldAddress[member] : r1264_4 +# 1264| mu1264_6(int) = Store[?] : &:r1264_5, r1264_2 +# 1265| v1265_1(void) = NoOp : +# 1263| v1263_10(void) = ReturnIndirection[a] : &:r1263_6, ~m? +# 1263| v1263_11(void) = ReturnVoid : +# 1263| v1263_12(void) = AliasedUse : ~m? +# 1263| v1263_13(void) = ExitFunction : + +# 1272| void test_static_member_functions(int, A*) +# 1272| Block 0 +# 1272| v1272_1(void) = EnterFunction : +# 1272| mu1272_2(unknown) = AliasedDefinition : +# 1272| mu1272_3(unknown) = InitializeNonLocal : +# 1272| r1272_4(glval) = VariableAddress[int_arg] : +# 1272| mu1272_5(int) = InitializeParameter[int_arg] : &:r1272_4 +# 1272| r1272_6(glval) = VariableAddress[a_arg] : +# 1272| mu1272_7(A *) = InitializeParameter[a_arg] : &:r1272_6 +# 1272| r1272_8(A *) = Load[a_arg] : &:r1272_6, ~m? +# 1272| mu1272_9(unknown) = InitializeIndirection[a_arg] : &:r1272_8 +# 1273| r1273_1(glval) = VariableAddress[c] : +# 1273| mu1273_2(C) = Uninitialized[c] : &:r1273_1 +# 1273| r1273_3(glval) = FunctionAddress[C] : +# 1273| v1273_4(void) = Call[C] : func:r1273_3, this:r1273_1 +# 1273| mu1273_5(unknown) = ^CallSideEffect : ~m? +# 1273| mu1273_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1273_1 +# 1274| r1274_1(glval) = VariableAddress[c] : +# 1274| r1274_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1274| r1274_3(int) = Constant[10] : +# 1274| r1274_4(int) = Call[StaticMemberFunction] : func:r1274_2, 0:r1274_3 +# 1274| mu1274_5(unknown) = ^CallSideEffect : ~m? +# 1275| r1275_1(glval) = FunctionAddress[StaticMemberFunction] : +# 1275| r1275_2(int) = Constant[10] : +# 1275| r1275_3(int) = Call[StaticMemberFunction] : func:r1275_1, 0:r1275_2 +# 1275| mu1275_4(unknown) = ^CallSideEffect : ~m? +# 1277| r1277_1(glval) = VariableAddress[a] : +# 1277| mu1277_2(A) = Uninitialized[a] : &:r1277_1 +# 1278| r1278_1(glval) = VariableAddress[a] : +# 1278| r1278_2(glval) = FunctionAddress[static_member] : +# 1278| r1278_3(glval) = VariableAddress[a] : +# 1278| r1278_4(A *) = CopyValue : r1278_3 +# 1278| r1278_5(glval) = VariableAddress[int_arg] : +# 1278| r1278_6(int) = Load[int_arg] : &:r1278_5, ~m? +# 1278| v1278_7(void) = Call[static_member] : func:r1278_2, 0:r1278_4, 1:r1278_6 +# 1278| mu1278_8(unknown) = ^CallSideEffect : ~m? +# 1278| v1278_9(void) = ^BufferReadSideEffect[0] : &:r1278_4, ~m? +# 1278| mu1278_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1278_4 +# 1279| r1279_1(glval) = FunctionAddress[static_member] : +# 1279| r1279_2(glval) = VariableAddress[a] : +# 1279| r1279_3(A *) = CopyValue : r1279_2 +# 1279| r1279_4(glval) = VariableAddress[int_arg] : +# 1279| r1279_5(int) = Load[int_arg] : &:r1279_4, ~m? +# 1279| v1279_6(void) = Call[static_member] : func:r1279_1, 0:r1279_3, 1:r1279_5 +# 1279| mu1279_7(unknown) = ^CallSideEffect : ~m? +# 1279| v1279_8(void) = ^BufferReadSideEffect[0] : &:r1279_3, ~m? +# 1279| mu1279_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1279_3 +# 1281| r1281_1(glval) = VariableAddress[a] : +# 1281| r1281_2(A *) = CopyValue : r1281_1 # 1281| r1281_3(glval) = FunctionAddress[static_member] : # 1281| r1281_4(glval) = VariableAddress[a_arg] : # 1281| r1281_5(A *) = Load[a_arg] : &:r1281_4, ~m? -# 1281| r1281_6(int) = Constant[-1] : -# 1281| v1281_7(void) = Call[static_member] : func:r1281_3, 0:r1281_5, 1:r1281_6 -# 1281| mu1281_8(unknown) = ^CallSideEffect : ~m? -# 1281| v1281_9(void) = ^BufferReadSideEffect[0] : &:r1281_5, ~m? -# 1281| mu1281_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1281_5 -# 1283| r1283_1(glval) = VariableAddress[a] : -# 1283| r1283_2(glval) = FunctionAddress[static_member_without_def] : -# 1283| v1283_3(void) = Call[static_member_without_def] : func:r1283_2 -# 1283| mu1283_4(unknown) = ^CallSideEffect : ~m? -# 1284| r1284_1(glval) = FunctionAddress[static_member_without_def] : -# 1284| v1284_2(void) = Call[static_member_without_def] : func:r1284_1 -# 1284| mu1284_3(unknown) = ^CallSideEffect : ~m? -# 1286| r1286_1(glval) = FunctionAddress[getAnInstanceOfA] : -# 1286| r1286_2(A *) = Call[getAnInstanceOfA] : func:r1286_1 +# 1281| r1281_6(glval) = VariableAddress[int_arg] : +# 1281| r1281_7(int) = Load[int_arg] : &:r1281_6, ~m? +# 1281| r1281_8(int) = Constant[2] : +# 1281| r1281_9(int) = Add : r1281_7, r1281_8 +# 1281| v1281_10(void) = Call[static_member] : func:r1281_3, 0:r1281_5, 1:r1281_9 +# 1281| mu1281_11(unknown) = ^CallSideEffect : ~m? +# 1281| v1281_12(void) = ^BufferReadSideEffect[0] : &:r1281_5, ~m? +# 1281| mu1281_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1281_5 +# 1282| r1282_1(glval) = VariableAddress[a_arg] : +# 1282| r1282_2(A *) = Load[a_arg] : &:r1282_1, ~m? +# 1282| r1282_3(glval) = CopyValue : r1282_2 +# 1282| r1282_4(glval) = FunctionAddress[static_member] : +# 1282| r1282_5(glval) = VariableAddress[a] : +# 1282| r1282_6(A *) = CopyValue : r1282_5 +# 1282| r1282_7(int) = Constant[99] : +# 1282| v1282_8(void) = Call[static_member] : func:r1282_4, 0:r1282_6, 1:r1282_7 +# 1282| mu1282_9(unknown) = ^CallSideEffect : ~m? +# 1282| v1282_10(void) = ^BufferReadSideEffect[0] : &:r1282_6, ~m? +# 1282| mu1282_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1282_6 +# 1283| r1283_1(glval) = VariableAddress[a_arg] : +# 1283| r1283_2(A *) = Load[a_arg] : &:r1283_1, ~m? +# 1283| r1283_3(glval) = FunctionAddress[static_member] : +# 1283| r1283_4(glval) = VariableAddress[a_arg] : +# 1283| r1283_5(A *) = Load[a_arg] : &:r1283_4, ~m? +# 1283| r1283_6(int) = Constant[-1] : +# 1283| v1283_7(void) = Call[static_member] : func:r1283_3, 0:r1283_5, 1:r1283_6 +# 1283| mu1283_8(unknown) = ^CallSideEffect : ~m? +# 1283| v1283_9(void) = ^BufferReadSideEffect[0] : &:r1283_5, ~m? +# 1283| mu1283_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1283_5 +# 1285| r1285_1(glval) = VariableAddress[a] : +# 1285| r1285_2(glval) = FunctionAddress[static_member_without_def] : +# 1285| v1285_3(void) = Call[static_member_without_def] : func:r1285_2 +# 1285| mu1285_4(unknown) = ^CallSideEffect : ~m? +# 1286| r1286_1(glval) = FunctionAddress[static_member_without_def] : +# 1286| v1286_2(void) = Call[static_member_without_def] : func:r1286_1 # 1286| mu1286_3(unknown) = ^CallSideEffect : ~m? -# 1286| r1286_4(glval) = FunctionAddress[static_member_without_def] : -# 1286| v1286_5(void) = Call[static_member_without_def] : func:r1286_4 -# 1286| mu1286_6(unknown) = ^CallSideEffect : ~m? -# 1287| v1287_1(void) = NoOp : -# 1270| v1270_10(void) = ReturnIndirection[a_arg] : &:r1270_8, ~m? -# 1270| v1270_11(void) = ReturnVoid : -# 1270| v1270_12(void) = AliasedUse : ~m? -# 1270| v1270_13(void) = ExitFunction : - -# 1289| int missingReturnValue(bool, int) -# 1289| Block 0 -# 1289| v1289_1(void) = EnterFunction : -# 1289| mu1289_2(unknown) = AliasedDefinition : -# 1289| mu1289_3(unknown) = InitializeNonLocal : -# 1289| r1289_4(glval) = VariableAddress[b] : -# 1289| mu1289_5(bool) = InitializeParameter[b] : &:r1289_4 -# 1289| r1289_6(glval) = VariableAddress[x] : -# 1289| mu1289_7(int) = InitializeParameter[x] : &:r1289_6 -# 1290| r1290_1(glval) = VariableAddress[b] : -# 1290| r1290_2(bool) = Load[b] : &:r1290_1, ~m? -# 1290| v1290_3(void) = ConditionalBranch : r1290_2 +# 1288| r1288_1(glval) = FunctionAddress[getAnInstanceOfA] : +# 1288| r1288_2(A *) = Call[getAnInstanceOfA] : func:r1288_1 +# 1288| mu1288_3(unknown) = ^CallSideEffect : ~m? +# 1288| r1288_4(glval) = FunctionAddress[static_member_without_def] : +# 1288| v1288_5(void) = Call[static_member_without_def] : func:r1288_4 +# 1288| mu1288_6(unknown) = ^CallSideEffect : ~m? +# 1289| v1289_1(void) = NoOp : +# 1272| v1272_10(void) = ReturnIndirection[a_arg] : &:r1272_8, ~m? +# 1272| v1272_11(void) = ReturnVoid : +# 1272| v1272_12(void) = AliasedUse : ~m? +# 1272| v1272_13(void) = ExitFunction : + +# 1291| int missingReturnValue(bool, int) +# 1291| Block 0 +# 1291| v1291_1(void) = EnterFunction : +# 1291| mu1291_2(unknown) = AliasedDefinition : +# 1291| mu1291_3(unknown) = InitializeNonLocal : +# 1291| r1291_4(glval) = VariableAddress[b] : +# 1291| mu1291_5(bool) = InitializeParameter[b] : &:r1291_4 +# 1291| r1291_6(glval) = VariableAddress[x] : +# 1291| mu1291_7(int) = InitializeParameter[x] : &:r1291_6 +# 1292| r1292_1(glval) = VariableAddress[b] : +# 1292| r1292_2(bool) = Load[b] : &:r1292_1, ~m? +# 1292| v1292_3(void) = ConditionalBranch : r1292_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1289| Block 1 -# 1289| r1289_8(glval) = VariableAddress[#return] : -# 1289| v1289_9(void) = ReturnValue : &:r1289_8, ~m? -# 1289| v1289_10(void) = AliasedUse : ~m? -# 1289| v1289_11(void) = ExitFunction : - -# 1291| Block 2 -# 1291| r1291_1(glval) = VariableAddress[#return] : -# 1291| r1291_2(glval) = VariableAddress[x] : -# 1291| r1291_3(int) = Load[x] : &:r1291_2, ~m? -# 1291| mu1291_4(int) = Store[#return] : &:r1291_1, r1291_3 -#-----| Goto -> Block 1 +# 1291| Block 1 +# 1291| r1291_8(glval) = VariableAddress[#return] : +# 1291| v1291_9(void) = ReturnValue : &:r1291_8, ~m? +# 1291| v1291_10(void) = AliasedUse : ~m? +# 1291| v1291_11(void) = ExitFunction : -# 1293| Block 3 +# 1293| Block 2 # 1293| r1293_1(glval) = VariableAddress[#return] : -# 1293| mu1293_2(int) = Uninitialized[#return] : &:r1293_1 +# 1293| r1293_2(glval) = VariableAddress[x] : +# 1293| r1293_3(int) = Load[x] : &:r1293_2, ~m? +# 1293| mu1293_4(int) = Store[#return] : &:r1293_1, r1293_3 #-----| Goto -> Block 1 -# 1295| void returnVoid(int, int) -# 1295| Block 0 -# 1295| v1295_1(void) = EnterFunction : -# 1295| mu1295_2(unknown) = AliasedDefinition : -# 1295| mu1295_3(unknown) = InitializeNonLocal : -# 1295| r1295_4(glval) = VariableAddress[x] : -# 1295| mu1295_5(int) = InitializeParameter[x] : &:r1295_4 -# 1295| r1295_6(glval) = VariableAddress[y] : -# 1295| mu1295_7(int) = InitializeParameter[y] : &:r1295_6 -# 1296| r1296_1(glval) = FunctionAddress[IntegerOps] : -# 1296| r1296_2(glval) = VariableAddress[x] : -# 1296| r1296_3(int) = Load[x] : &:r1296_2, ~m? -# 1296| r1296_4(glval) = VariableAddress[y] : -# 1296| r1296_5(int) = Load[y] : &:r1296_4, ~m? -# 1296| v1296_6(void) = Call[IntegerOps] : func:r1296_1, 0:r1296_3, 1:r1296_5 -# 1296| mu1296_7(unknown) = ^CallSideEffect : ~m? -# 1296| v1296_8(void) = NoOp : -# 1295| v1295_8(void) = ReturnVoid : -# 1295| v1295_9(void) = AliasedUse : ~m? -# 1295| v1295_10(void) = ExitFunction : - -# 1299| void gccBinaryConditional(bool, int, long) -# 1299| Block 0 -# 1299| v1299_1(void) = EnterFunction : -# 1299| mu1299_2(unknown) = AliasedDefinition : -# 1299| mu1299_3(unknown) = InitializeNonLocal : -# 1299| r1299_4(glval) = VariableAddress[b] : -# 1299| mu1299_5(bool) = InitializeParameter[b] : &:r1299_4 -# 1299| r1299_6(glval) = VariableAddress[x] : -# 1299| mu1299_7(int) = InitializeParameter[x] : &:r1299_6 -# 1299| r1299_8(glval) = VariableAddress[y] : -# 1299| mu1299_9(long) = InitializeParameter[y] : &:r1299_8 -# 1300| r1300_1(glval) = VariableAddress[z] : -# 1300| r1300_2(glval) = VariableAddress[x] : -# 1300| r1300_3(int) = Load[x] : &:r1300_2, ~m? -# 1300| mu1300_4(int) = Store[z] : &:r1300_1, r1300_3 -# 1301| r1301_1(glval) = VariableAddress[b] : -# 1301| r1301_2(bool) = Load[b] : &:r1301_1, ~m? -# 1301| v1301_3(void) = ConditionalBranch : r1301_2 +# 1295| Block 3 +# 1295| r1295_1(glval) = VariableAddress[#return] : +# 1295| mu1295_2(int) = Uninitialized[#return] : &:r1295_1 +#-----| Goto -> Block 1 + +# 1297| void returnVoid(int, int) +# 1297| Block 0 +# 1297| v1297_1(void) = EnterFunction : +# 1297| mu1297_2(unknown) = AliasedDefinition : +# 1297| mu1297_3(unknown) = InitializeNonLocal : +# 1297| r1297_4(glval) = VariableAddress[x] : +# 1297| mu1297_5(int) = InitializeParameter[x] : &:r1297_4 +# 1297| r1297_6(glval) = VariableAddress[y] : +# 1297| mu1297_7(int) = InitializeParameter[y] : &:r1297_6 +# 1298| r1298_1(glval) = FunctionAddress[IntegerOps] : +# 1298| r1298_2(glval) = VariableAddress[x] : +# 1298| r1298_3(int) = Load[x] : &:r1298_2, ~m? +# 1298| r1298_4(glval) = VariableAddress[y] : +# 1298| r1298_5(int) = Load[y] : &:r1298_4, ~m? +# 1298| v1298_6(void) = Call[IntegerOps] : func:r1298_1, 0:r1298_3, 1:r1298_5 +# 1298| mu1298_7(unknown) = ^CallSideEffect : ~m? +# 1298| v1298_8(void) = NoOp : +# 1297| v1297_8(void) = ReturnVoid : +# 1297| v1297_9(void) = AliasedUse : ~m? +# 1297| v1297_10(void) = ExitFunction : + +# 1301| void gccBinaryConditional(bool, int, long) +# 1301| Block 0 +# 1301| v1301_1(void) = EnterFunction : +# 1301| mu1301_2(unknown) = AliasedDefinition : +# 1301| mu1301_3(unknown) = InitializeNonLocal : +# 1301| r1301_4(glval) = VariableAddress[b] : +# 1301| mu1301_5(bool) = InitializeParameter[b] : &:r1301_4 +# 1301| r1301_6(glval) = VariableAddress[x] : +# 1301| mu1301_7(int) = InitializeParameter[x] : &:r1301_6 +# 1301| r1301_8(glval) = VariableAddress[y] : +# 1301| mu1301_9(long) = InitializeParameter[y] : &:r1301_8 +# 1302| r1302_1(glval) = VariableAddress[z] : +# 1302| r1302_2(glval) = VariableAddress[x] : +# 1302| r1302_3(int) = Load[x] : &:r1302_2, ~m? +# 1302| mu1302_4(int) = Store[z] : &:r1302_1, r1302_3 +# 1303| r1303_1(glval) = VariableAddress[b] : +# 1303| r1303_2(bool) = Load[b] : &:r1303_1, ~m? +# 1303| v1303_3(void) = ConditionalBranch : r1303_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1301| Block 1 -# 1301| r1301_4(glval) = VariableAddress[#temp1301:9] : -# 1301| r1301_5(int) = Load[#temp1301:9] : &:r1301_4, ~m? -# 1301| r1301_6(glval) = VariableAddress[z] : -# 1301| mu1301_7(int) = Store[z] : &:r1301_6, r1301_5 -# 1302| r1302_1(glval) = VariableAddress[b] : -# 1302| r1302_2(bool) = Load[b] : &:r1302_1, ~m? -# 1302| v1302_3(void) = ConditionalBranch : r1302_2 +# 1303| Block 1 +# 1303| r1303_4(glval) = VariableAddress[#temp1303:9] : +# 1303| r1303_5(int) = Load[#temp1303:9] : &:r1303_4, ~m? +# 1303| r1303_6(glval) = VariableAddress[z] : +# 1303| mu1303_7(int) = Store[z] : &:r1303_6, r1303_5 +# 1304| r1304_1(glval) = VariableAddress[b] : +# 1304| r1304_2(bool) = Load[b] : &:r1304_1, ~m? +# 1304| v1304_3(void) = ConditionalBranch : r1304_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1301| Block 2 -# 1301| r1301_8(glval) = VariableAddress[#temp1301:9] : -# 1301| mu1301_9(int) = Store[#temp1301:9] : &:r1301_8, r1301_2 +# 1303| Block 2 +# 1303| r1303_8(glval) = VariableAddress[#temp1303:9] : +# 1303| mu1303_9(int) = Store[#temp1303:9] : &:r1303_8, r1303_2 #-----| Goto -> Block 1 -# 1301| Block 3 -# 1301| r1301_10(glval) = VariableAddress[x] : -# 1301| r1301_11(int) = Load[x] : &:r1301_10, ~m? -# 1301| r1301_12(glval) = VariableAddress[#temp1301:9] : -# 1301| mu1301_13(int) = Store[#temp1301:9] : &:r1301_12, r1301_11 +# 1303| Block 3 +# 1303| r1303_10(glval) = VariableAddress[x] : +# 1303| r1303_11(int) = Load[x] : &:r1303_10, ~m? +# 1303| r1303_12(glval) = VariableAddress[#temp1303:9] : +# 1303| mu1303_13(int) = Store[#temp1303:9] : &:r1303_12, r1303_11 #-----| Goto -> Block 1 -# 1302| Block 4 -# 1302| r1302_4(glval) = VariableAddress[#temp1302:9] : -# 1302| r1302_5(long) = Load[#temp1302:9] : &:r1302_4, ~m? -# 1302| r1302_6(int) = Convert : r1302_5 -# 1302| r1302_7(glval) = VariableAddress[z] : -# 1302| mu1302_8(int) = Store[z] : &:r1302_7, r1302_6 -# 1303| r1303_1(glval) = VariableAddress[x] : -# 1303| r1303_2(int) = Load[x] : &:r1303_1, ~m? -# 1303| r1303_3(int) = Constant[0] : -# 1303| r1303_4(bool) = CompareNE : r1303_2, r1303_3 -# 1303| v1303_5(void) = ConditionalBranch : r1303_4 +# 1304| Block 4 +# 1304| r1304_4(glval) = VariableAddress[#temp1304:9] : +# 1304| r1304_5(long) = Load[#temp1304:9] : &:r1304_4, ~m? +# 1304| r1304_6(int) = Convert : r1304_5 +# 1304| r1304_7(glval) = VariableAddress[z] : +# 1304| mu1304_8(int) = Store[z] : &:r1304_7, r1304_6 +# 1305| r1305_1(glval) = VariableAddress[x] : +# 1305| r1305_2(int) = Load[x] : &:r1305_1, ~m? +# 1305| r1305_3(int) = Constant[0] : +# 1305| r1305_4(bool) = CompareNE : r1305_2, r1305_3 +# 1305| v1305_5(void) = ConditionalBranch : r1305_4 #-----| False -> Block 9 #-----| True -> Block 8 -# 1302| Block 5 -# 1302| r1302_9(glval) = VariableAddress[#temp1302:9] : -# 1302| mu1302_10(long) = Store[#temp1302:9] : &:r1302_9, r1302_2 +# 1304| Block 5 +# 1304| r1304_9(glval) = VariableAddress[#temp1304:9] : +# 1304| mu1304_10(long) = Store[#temp1304:9] : &:r1304_9, r1304_2 #-----| Goto -> Block 4 -# 1302| Block 6 -# 1302| r1302_11(glval) = VariableAddress[y] : -# 1302| r1302_12(long) = Load[y] : &:r1302_11, ~m? -# 1302| r1302_13(glval) = VariableAddress[#temp1302:9] : -# 1302| mu1302_14(long) = Store[#temp1302:9] : &:r1302_13, r1302_12 +# 1304| Block 6 +# 1304| r1304_11(glval) = VariableAddress[y] : +# 1304| r1304_12(long) = Load[y] : &:r1304_11, ~m? +# 1304| r1304_13(glval) = VariableAddress[#temp1304:9] : +# 1304| mu1304_14(long) = Store[#temp1304:9] : &:r1304_13, r1304_12 #-----| Goto -> Block 4 -# 1303| Block 7 -# 1303| r1303_6(glval) = VariableAddress[#temp1303:9] : -# 1303| r1303_7(int) = Load[#temp1303:9] : &:r1303_6, ~m? -# 1303| r1303_8(glval) = VariableAddress[z] : -# 1303| mu1303_9(int) = Store[z] : &:r1303_8, r1303_7 -# 1304| r1304_1(glval) = VariableAddress[x] : -# 1304| r1304_2(int) = Load[x] : &:r1304_1, ~m? -# 1304| r1304_3(int) = Constant[0] : -# 1304| r1304_4(bool) = CompareNE : r1304_2, r1304_3 -# 1304| v1304_5(void) = ConditionalBranch : r1304_4 +# 1305| Block 7 +# 1305| r1305_6(glval) = VariableAddress[#temp1305:9] : +# 1305| r1305_7(int) = Load[#temp1305:9] : &:r1305_6, ~m? +# 1305| r1305_8(glval) = VariableAddress[z] : +# 1305| mu1305_9(int) = Store[z] : &:r1305_8, r1305_7 +# 1306| r1306_1(glval) = VariableAddress[x] : +# 1306| r1306_2(int) = Load[x] : &:r1306_1, ~m? +# 1306| r1306_3(int) = Constant[0] : +# 1306| r1306_4(bool) = CompareNE : r1306_2, r1306_3 +# 1306| v1306_5(void) = ConditionalBranch : r1306_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 1303| Block 8 -# 1303| r1303_10(glval) = VariableAddress[#temp1303:9] : -# 1303| mu1303_11(int) = Store[#temp1303:9] : &:r1303_10, r1303_2 +# 1305| Block 8 +# 1305| r1305_10(glval) = VariableAddress[#temp1305:9] : +# 1305| mu1305_11(int) = Store[#temp1305:9] : &:r1305_10, r1305_2 #-----| Goto -> Block 7 -# 1303| Block 9 -# 1303| r1303_12(glval) = VariableAddress[x] : -# 1303| r1303_13(int) = Load[x] : &:r1303_12, ~m? -# 1303| r1303_14(glval) = VariableAddress[#temp1303:9] : -# 1303| mu1303_15(int) = Store[#temp1303:9] : &:r1303_14, r1303_13 +# 1305| Block 9 +# 1305| r1305_12(glval) = VariableAddress[x] : +# 1305| r1305_13(int) = Load[x] : &:r1305_12, ~m? +# 1305| r1305_14(glval) = VariableAddress[#temp1305:9] : +# 1305| mu1305_15(int) = Store[#temp1305:9] : &:r1305_14, r1305_13 #-----| Goto -> Block 7 -# 1304| Block 10 -# 1304| r1304_6(glval) = VariableAddress[#temp1304:9] : -# 1304| r1304_7(long) = Load[#temp1304:9] : &:r1304_6, ~m? -# 1304| r1304_8(int) = Convert : r1304_7 -# 1304| r1304_9(glval) = VariableAddress[z] : -# 1304| mu1304_10(int) = Store[z] : &:r1304_9, r1304_8 -# 1305| r1305_1(glval) = VariableAddress[y] : -# 1305| r1305_2(long) = Load[y] : &:r1305_1, ~m? -# 1305| r1305_3(long) = Constant[0] : -# 1305| r1305_4(bool) = CompareNE : r1305_2, r1305_3 -# 1305| v1305_5(void) = ConditionalBranch : r1305_4 +# 1306| Block 10 +# 1306| r1306_6(glval) = VariableAddress[#temp1306:9] : +# 1306| r1306_7(long) = Load[#temp1306:9] : &:r1306_6, ~m? +# 1306| r1306_8(int) = Convert : r1306_7 +# 1306| r1306_9(glval) = VariableAddress[z] : +# 1306| mu1306_10(int) = Store[z] : &:r1306_9, r1306_8 +# 1307| r1307_1(glval) = VariableAddress[y] : +# 1307| r1307_2(long) = Load[y] : &:r1307_1, ~m? +# 1307| r1307_3(long) = Constant[0] : +# 1307| r1307_4(bool) = CompareNE : r1307_2, r1307_3 +# 1307| v1307_5(void) = ConditionalBranch : r1307_4 #-----| False -> Block 15 #-----| True -> Block 14 -# 1304| Block 11 -# 1304| r1304_11(glval) = VariableAddress[#temp1304:9] : -# 1304| mu1304_12(long) = Store[#temp1304:9] : &:r1304_11, r1304_2 +# 1306| Block 11 +# 1306| r1306_11(glval) = VariableAddress[#temp1306:9] : +# 1306| mu1306_12(long) = Store[#temp1306:9] : &:r1306_11, r1306_2 #-----| Goto -> Block 10 -# 1304| Block 12 -# 1304| r1304_13(glval) = VariableAddress[y] : -# 1304| r1304_14(long) = Load[y] : &:r1304_13, ~m? -# 1304| r1304_15(glval) = VariableAddress[#temp1304:9] : -# 1304| mu1304_16(long) = Store[#temp1304:9] : &:r1304_15, r1304_14 +# 1306| Block 12 +# 1306| r1306_13(glval) = VariableAddress[y] : +# 1306| r1306_14(long) = Load[y] : &:r1306_13, ~m? +# 1306| r1306_15(glval) = VariableAddress[#temp1306:9] : +# 1306| mu1306_16(long) = Store[#temp1306:9] : &:r1306_15, r1306_14 #-----| Goto -> Block 10 -# 1305| Block 13 -# 1305| r1305_6(glval) = VariableAddress[#temp1305:9] : -# 1305| r1305_7(long) = Load[#temp1305:9] : &:r1305_6, ~m? -# 1305| r1305_8(int) = Convert : r1305_7 -# 1305| r1305_9(glval) = VariableAddress[z] : -# 1305| mu1305_10(int) = Store[z] : &:r1305_9, r1305_8 -# 1306| r1306_1(glval) = VariableAddress[y] : -# 1306| r1306_2(long) = Load[y] : &:r1306_1, ~m? -# 1306| r1306_3(long) = Constant[0] : -# 1306| r1306_4(bool) = CompareNE : r1306_2, r1306_3 -# 1306| v1306_5(void) = ConditionalBranch : r1306_4 +# 1307| Block 13 +# 1307| r1307_6(glval) = VariableAddress[#temp1307:9] : +# 1307| r1307_7(long) = Load[#temp1307:9] : &:r1307_6, ~m? +# 1307| r1307_8(int) = Convert : r1307_7 +# 1307| r1307_9(glval) = VariableAddress[z] : +# 1307| mu1307_10(int) = Store[z] : &:r1307_9, r1307_8 +# 1308| r1308_1(glval) = VariableAddress[y] : +# 1308| r1308_2(long) = Load[y] : &:r1308_1, ~m? +# 1308| r1308_3(long) = Constant[0] : +# 1308| r1308_4(bool) = CompareNE : r1308_2, r1308_3 +# 1308| v1308_5(void) = ConditionalBranch : r1308_4 #-----| False -> Block 18 #-----| True -> Block 17 -# 1305| Block 14 -# 1305| r1305_11(glval) = VariableAddress[#temp1305:9] : -# 1305| mu1305_12(long) = Store[#temp1305:9] : &:r1305_11, r1305_2 +# 1307| Block 14 +# 1307| r1307_11(glval) = VariableAddress[#temp1307:9] : +# 1307| mu1307_12(long) = Store[#temp1307:9] : &:r1307_11, r1307_2 #-----| Goto -> Block 13 -# 1305| Block 15 -# 1305| r1305_13(glval) = VariableAddress[x] : -# 1305| r1305_14(int) = Load[x] : &:r1305_13, ~m? -# 1305| r1305_15(long) = Convert : r1305_14 -# 1305| r1305_16(glval) = VariableAddress[#temp1305:9] : -# 1305| mu1305_17(long) = Store[#temp1305:9] : &:r1305_16, r1305_15 +# 1307| Block 15 +# 1307| r1307_13(glval) = VariableAddress[x] : +# 1307| r1307_14(int) = Load[x] : &:r1307_13, ~m? +# 1307| r1307_15(long) = Convert : r1307_14 +# 1307| r1307_16(glval) = VariableAddress[#temp1307:9] : +# 1307| mu1307_17(long) = Store[#temp1307:9] : &:r1307_16, r1307_15 #-----| Goto -> Block 13 -# 1306| Block 16 -# 1306| r1306_6(glval) = VariableAddress[#temp1306:9] : -# 1306| r1306_7(long) = Load[#temp1306:9] : &:r1306_6, ~m? -# 1306| r1306_8(int) = Convert : r1306_7 -# 1306| r1306_9(glval) = VariableAddress[z] : -# 1306| mu1306_10(int) = Store[z] : &:r1306_9, r1306_8 -# 1308| r1308_1(glval) = VariableAddress[x] : -# 1308| r1308_2(int) = Load[x] : &:r1308_1, ~m? -# 1308| r1308_3(int) = Constant[0] : -# 1308| r1308_4(bool) = CompareNE : r1308_2, r1308_3 -# 1308| v1308_5(void) = ConditionalBranch : r1308_4 +# 1308| Block 16 +# 1308| r1308_6(glval) = VariableAddress[#temp1308:9] : +# 1308| r1308_7(long) = Load[#temp1308:9] : &:r1308_6, ~m? +# 1308| r1308_8(int) = Convert : r1308_7 +# 1308| r1308_9(glval) = VariableAddress[z] : +# 1308| mu1308_10(int) = Store[z] : &:r1308_9, r1308_8 +# 1310| r1310_1(glval) = VariableAddress[x] : +# 1310| r1310_2(int) = Load[x] : &:r1310_1, ~m? +# 1310| r1310_3(int) = Constant[0] : +# 1310| r1310_4(bool) = CompareNE : r1310_2, r1310_3 +# 1310| v1310_5(void) = ConditionalBranch : r1310_4 #-----| False -> Block 25 #-----| True -> Block 24 -# 1306| Block 17 -# 1306| r1306_11(glval) = VariableAddress[#temp1306:9] : -# 1306| mu1306_12(long) = Store[#temp1306:9] : &:r1306_11, r1306_2 +# 1308| Block 17 +# 1308| r1308_11(glval) = VariableAddress[#temp1308:9] : +# 1308| mu1308_12(long) = Store[#temp1308:9] : &:r1308_11, r1308_2 #-----| Goto -> Block 16 -# 1306| Block 18 -# 1306| r1306_13(glval) = VariableAddress[y] : -# 1306| r1306_14(long) = Load[y] : &:r1306_13, ~m? -# 1306| r1306_15(glval) = VariableAddress[#temp1306:9] : -# 1306| mu1306_16(long) = Store[#temp1306:9] : &:r1306_15, r1306_14 +# 1308| Block 18 +# 1308| r1308_13(glval) = VariableAddress[y] : +# 1308| r1308_14(long) = Load[y] : &:r1308_13, ~m? +# 1308| r1308_15(glval) = VariableAddress[#temp1308:9] : +# 1308| mu1308_16(long) = Store[#temp1308:9] : &:r1308_15, r1308_14 #-----| Goto -> Block 16 -# 1308| Block 19 -# 1308| r1308_6(glval) = VariableAddress[#temp1308:9] : -# 1308| r1308_7(int) = Load[#temp1308:9] : &:r1308_6, ~m? -# 1308| r1308_8(glval) = VariableAddress[z] : -# 1308| mu1308_9(int) = Store[z] : &:r1308_8, r1308_7 -# 1309| v1309_1(void) = NoOp : -# 1299| v1299_10(void) = ReturnVoid : -# 1299| v1299_11(void) = AliasedUse : ~m? -# 1299| v1299_12(void) = ExitFunction : - -# 1308| Block 20 -# 1308| r1308_10(glval) = VariableAddress[#temp1308:9] : -# 1308| mu1308_11(int) = Store[#temp1308:9] : &:r1308_10, r1308_16 +# 1310| Block 19 +# 1310| r1310_6(glval) = VariableAddress[#temp1310:9] : +# 1310| r1310_7(int) = Load[#temp1310:9] : &:r1310_6, ~m? +# 1310| r1310_8(glval) = VariableAddress[z] : +# 1310| mu1310_9(int) = Store[z] : &:r1310_8, r1310_7 +# 1311| v1311_1(void) = NoOp : +# 1301| v1301_10(void) = ReturnVoid : +# 1301| v1301_11(void) = AliasedUse : ~m? +# 1301| v1301_12(void) = ExitFunction : + +# 1310| Block 20 +# 1310| r1310_10(glval) = VariableAddress[#temp1310:9] : +# 1310| mu1310_11(int) = Store[#temp1310:9] : &:r1310_10, r1310_16 #-----| Goto -> Block 19 -# 1308| Block 21 -# 1308| r1308_12(glval) = VariableAddress[#temp1308:10] : -# 1308| r1308_13(bool) = Constant[0] : -# 1308| mu1308_14(bool) = Store[#temp1308:10] : &:r1308_12, r1308_13 +# 1310| Block 21 +# 1310| r1310_12(glval) = VariableAddress[#temp1310:10] : +# 1310| r1310_13(bool) = Constant[0] : +# 1310| mu1310_14(bool) = Store[#temp1310:10] : &:r1310_12, r1310_13 #-----| Goto -> Block 22 -# 1308| Block 22 -# 1308| r1308_15(glval) = VariableAddress[#temp1308:10] : -# 1308| r1308_16(bool) = Load[#temp1308:10] : &:r1308_15, ~m? -# 1308| v1308_17(void) = ConditionalBranch : r1308_16 +# 1310| Block 22 +# 1310| r1310_15(glval) = VariableAddress[#temp1310:10] : +# 1310| r1310_16(bool) = Load[#temp1310:10] : &:r1310_15, ~m? +# 1310| v1310_17(void) = ConditionalBranch : r1310_16 #-----| False -> Block 26 #-----| True -> Block 20 -# 1308| Block 23 -# 1308| r1308_18(glval) = VariableAddress[#temp1308:10] : -# 1308| r1308_19(bool) = Constant[1] : -# 1308| mu1308_20(bool) = Store[#temp1308:10] : &:r1308_18, r1308_19 +# 1310| Block 23 +# 1310| r1310_18(glval) = VariableAddress[#temp1310:10] : +# 1310| r1310_19(bool) = Constant[1] : +# 1310| mu1310_20(bool) = Store[#temp1310:10] : &:r1310_18, r1310_19 #-----| Goto -> Block 22 -# 1308| Block 24 -# 1308| r1308_21(glval) = VariableAddress[b] : -# 1308| r1308_22(bool) = Load[b] : &:r1308_21, ~m? -# 1308| v1308_23(void) = ConditionalBranch : r1308_22 +# 1310| Block 24 +# 1310| r1310_21(glval) = VariableAddress[b] : +# 1310| r1310_22(bool) = Load[b] : &:r1310_21, ~m? +# 1310| v1310_23(void) = ConditionalBranch : r1310_22 #-----| False -> Block 25 #-----| True -> Block 23 -# 1308| Block 25 -# 1308| r1308_24(glval) = VariableAddress[y] : -# 1308| r1308_25(long) = Load[y] : &:r1308_24, ~m? -# 1308| r1308_26(long) = Constant[0] : -# 1308| r1308_27(bool) = CompareNE : r1308_25, r1308_26 -# 1308| v1308_28(void) = ConditionalBranch : r1308_27 +# 1310| Block 25 +# 1310| r1310_24(glval) = VariableAddress[y] : +# 1310| r1310_25(long) = Load[y] : &:r1310_24, ~m? +# 1310| r1310_26(long) = Constant[0] : +# 1310| r1310_27(bool) = CompareNE : r1310_25, r1310_26 +# 1310| v1310_28(void) = ConditionalBranch : r1310_27 #-----| False -> Block 21 #-----| True -> Block 23 -# 1308| Block 26 -# 1308| r1308_29(glval) = VariableAddress[x] : -# 1308| r1308_30(int) = Load[x] : &:r1308_29, ~m? -# 1308| r1308_31(glval) = VariableAddress[#temp1308:9] : -# 1308| mu1308_32(int) = Store[#temp1308:9] : &:r1308_31, r1308_30 +# 1310| Block 26 +# 1310| r1310_29(glval) = VariableAddress[x] : +# 1310| r1310_30(int) = Load[x] : &:r1310_29, ~m? +# 1310| r1310_31(glval) = VariableAddress[#temp1310:9] : +# 1310| mu1310_32(int) = Store[#temp1310:9] : &:r1310_31, r1310_30 #-----| Goto -> Block 19 -# 1314| int shortCircuitConditional(int, int) -# 1314| Block 0 -# 1314| v1314_1(void) = EnterFunction : -# 1314| mu1314_2(unknown) = AliasedDefinition : -# 1314| mu1314_3(unknown) = InitializeNonLocal : -# 1314| r1314_4(glval) = VariableAddress[x] : -# 1314| mu1314_5(int) = InitializeParameter[x] : &:r1314_4 -# 1314| r1314_6(glval) = VariableAddress[y] : -# 1314| mu1314_7(int) = InitializeParameter[y] : &:r1314_6 -# 1315| r1315_1(glval) = VariableAddress[#return] : -# 1315| r1315_2(glval) = FunctionAddress[predicateA] : -# 1315| r1315_3(bool) = Call[predicateA] : func:r1315_2 -# 1315| mu1315_4(unknown) = ^CallSideEffect : ~m? -# 1315| v1315_5(void) = ConditionalBranch : r1315_3 +# 1316| int shortCircuitConditional(int, int) +# 1316| Block 0 +# 1316| v1316_1(void) = EnterFunction : +# 1316| mu1316_2(unknown) = AliasedDefinition : +# 1316| mu1316_3(unknown) = InitializeNonLocal : +# 1316| r1316_4(glval) = VariableAddress[x] : +# 1316| mu1316_5(int) = InitializeParameter[x] : &:r1316_4 +# 1316| r1316_6(glval) = VariableAddress[y] : +# 1316| mu1316_7(int) = InitializeParameter[y] : &:r1316_6 +# 1317| r1317_1(glval) = VariableAddress[#return] : +# 1317| r1317_2(glval) = FunctionAddress[predicateA] : +# 1317| r1317_3(bool) = Call[predicateA] : func:r1317_2 +# 1317| mu1317_4(unknown) = ^CallSideEffect : ~m? +# 1317| v1317_5(void) = ConditionalBranch : r1317_3 #-----| False -> Block 4 #-----| True -> Block 2 -# 1315| Block 1 -# 1315| r1315_6(glval) = VariableAddress[#temp1315:12] : -# 1315| r1315_7(int) = Load[#temp1315:12] : &:r1315_6, ~m? -# 1315| mu1315_8(int) = Store[#return] : &:r1315_1, r1315_7 -# 1314| r1314_8(glval) = VariableAddress[#return] : -# 1314| v1314_9(void) = ReturnValue : &:r1314_8, ~m? -# 1314| v1314_10(void) = AliasedUse : ~m? -# 1314| v1314_11(void) = ExitFunction : - -# 1315| Block 2 -# 1315| r1315_9(glval) = FunctionAddress[predicateB] : -# 1315| r1315_10(bool) = Call[predicateB] : func:r1315_9 -# 1315| mu1315_11(unknown) = ^CallSideEffect : ~m? -# 1315| v1315_12(void) = ConditionalBranch : r1315_10 +# 1317| Block 1 +# 1317| r1317_6(glval) = VariableAddress[#temp1317:12] : +# 1317| r1317_7(int) = Load[#temp1317:12] : &:r1317_6, ~m? +# 1317| mu1317_8(int) = Store[#return] : &:r1317_1, r1317_7 +# 1316| r1316_8(glval) = VariableAddress[#return] : +# 1316| v1316_9(void) = ReturnValue : &:r1316_8, ~m? +# 1316| v1316_10(void) = AliasedUse : ~m? +# 1316| v1316_11(void) = ExitFunction : + +# 1317| Block 2 +# 1317| r1317_9(glval) = FunctionAddress[predicateB] : +# 1317| r1317_10(bool) = Call[predicateB] : func:r1317_9 +# 1317| mu1317_11(unknown) = ^CallSideEffect : ~m? +# 1317| v1317_12(void) = ConditionalBranch : r1317_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1315| Block 3 -# 1315| r1315_13(glval) = VariableAddress[x] : -# 1315| r1315_14(int) = Load[x] : &:r1315_13, ~m? -# 1315| r1315_15(glval) = VariableAddress[#temp1315:12] : -# 1315| mu1315_16(int) = Store[#temp1315:12] : &:r1315_15, r1315_14 +# 1317| Block 3 +# 1317| r1317_13(glval) = VariableAddress[x] : +# 1317| r1317_14(int) = Load[x] : &:r1317_13, ~m? +# 1317| r1317_15(glval) = VariableAddress[#temp1317:12] : +# 1317| mu1317_16(int) = Store[#temp1317:12] : &:r1317_15, r1317_14 #-----| Goto -> Block 1 -# 1315| Block 4 -# 1315| r1315_17(glval) = VariableAddress[y] : -# 1315| r1315_18(int) = Load[y] : &:r1315_17, ~m? -# 1315| r1315_19(glval) = VariableAddress[#temp1315:12] : -# 1315| mu1315_20(int) = Store[#temp1315:12] : &:r1315_19, r1315_18 +# 1317| Block 4 +# 1317| r1317_17(glval) = VariableAddress[y] : +# 1317| r1317_18(int) = Load[y] : &:r1317_17, ~m? +# 1317| r1317_19(glval) = VariableAddress[#temp1317:12] : +# 1317| mu1317_20(int) = Store[#temp1317:12] : &:r1317_19, r1317_18 #-----| Goto -> Block 1 -# 1320| void f(int*) -# 1320| Block 0 -# 1320| v1320_1(void) = EnterFunction : -# 1320| mu1320_2(unknown) = AliasedDefinition : -# 1320| mu1320_3(unknown) = InitializeNonLocal : -# 1320| r1320_4(glval) = VariableAddress[p] : -# 1320| mu1320_5(int *) = InitializeParameter[p] : &:r1320_4 -# 1320| r1320_6(int *) = Load[p] : &:r1320_4, ~m? -# 1320| mu1320_7(unknown) = InitializeIndirection[p] : &:r1320_6 -# 1322| r1322_1(glval) = FunctionAddress[operator new] : -# 1322| r1322_2(unsigned long) = Constant[4] : -# 1322| r1322_3(glval) = VariableAddress[p] : -# 1322| r1322_4(int *) = Load[p] : &:r1322_3, ~m? -# 1322| r1322_5(void *) = Convert : r1322_4 -# 1322| r1322_6(void *) = Call[operator new] : func:r1322_1, 0:r1322_2, 1:r1322_5 -# 1322| mu1322_7(unknown) = ^CallSideEffect : ~m? -# 1322| mu1322_8(unknown) = ^InitializeDynamicAllocation : &:r1322_6 -# 1322| r1322_9(int *) = Convert : r1322_6 -# 1323| v1323_1(void) = NoOp : -# 1320| v1320_8(void) = ReturnIndirection[p] : &:r1320_6, ~m? -# 1320| v1320_9(void) = ReturnVoid : -# 1320| v1320_10(void) = AliasedUse : ~m? -# 1320| v1320_11(void) = ExitFunction : - -# 1326| Point defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| mu1326_2(unknown) = AliasedDefinition : -# 1326| mu1326_3(unknown) = InitializeNonLocal : -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| r1327_2(Point) = Constant[0] : -# 1327| mu1327_3(Point) = Store[#return] : &:r1327_1, r1327_2 -# 1326| r1326_4(glval) = VariableAddress[#return] : -# 1326| v1326_5(void) = ReturnValue : &:r1326_4, ~m? -# 1326| v1326_6(void) = AliasedUse : ~m? -# 1326| v1326_7(void) = ExitFunction : - -# 1326| String defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| mu1326_2(unknown) = AliasedDefinition : -# 1326| mu1326_3(unknown) = InitializeNonLocal : -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| mu1327_2(String) = Uninitialized[#return] : &:r1327_1 -# 1327| r1327_3(glval) = FunctionAddress[String] : -# 1327| v1327_4(void) = Call[String] : func:r1327_3, this:r1327_1 -# 1327| mu1327_5(unknown) = ^CallSideEffect : ~m? -# 1327| mu1327_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1327_1 -# 1326| r1326_4(glval) = VariableAddress[#return] : -# 1326| v1326_5(void) = ReturnValue : &:r1326_4, ~m? -# 1326| v1326_6(void) = AliasedUse : ~m? -# 1326| v1326_7(void) = ExitFunction : - -# 1326| copy_constructor defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| mu1326_2(unknown) = AliasedDefinition : -# 1326| mu1326_3(unknown) = InitializeNonLocal : -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| mu1327_2(copy_constructor) = Uninitialized[#return] : &:r1327_1 -# 1327| r1327_3(glval) = FunctionAddress[copy_constructor] : -# 1327| v1327_4(void) = Call[copy_constructor] : func:r1327_3, this:r1327_1 -# 1327| mu1327_5(unknown) = ^CallSideEffect : ~m? -# 1327| mu1327_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1327_1 -# 1326| r1326_4(glval) = VariableAddress[#return] : -# 1326| v1326_5(void) = ReturnValue : &:r1326_4, ~m? -# 1326| v1326_6(void) = AliasedUse : ~m? -# 1326| v1326_7(void) = ExitFunction : - -# 1326| destructor_only defaultConstruct() -# 1326| Block 0 -# 1326| v1326_1(void) = EnterFunction : -# 1326| mu1326_2(unknown) = AliasedDefinition : -# 1326| mu1326_3(unknown) = InitializeNonLocal : -# 1327| r1327_1(glval) = VariableAddress[#return] : -# 1327| r1327_2(destructor_only) = Constant[0] : -# 1327| mu1327_3(destructor_only) = Store[#return] : &:r1327_1, r1327_2 -# 1326| r1326_4(glval) = VariableAddress[#return] : -# 1326| v1326_5(void) = ReturnValue : &:r1326_4, ~m? -# 1326| v1326_6(void) = AliasedUse : ~m? -# 1326| v1326_7(void) = ExitFunction : - -# 1365| void temporary_string() -# 1365| Block 0 -# 1365| v1365_1(void) = EnterFunction : -# 1365| mu1365_2(unknown) = AliasedDefinition : -# 1365| mu1365_3(unknown) = InitializeNonLocal : -# 1366| r1366_1(glval) = VariableAddress[s] : -# 1366| r1366_2(glval) = FunctionAddress[returnValue] : -# 1366| r1366_3(String) = Call[returnValue] : func:r1366_2 -# 1366| mu1366_4(unknown) = ^CallSideEffect : ~m? -# 1366| mu1366_5(String) = Store[s] : &:r1366_1, r1366_3 -# 1367| r1367_1(glval) = VariableAddress[rs] : -# 1367| r1367_2(glval) = VariableAddress[#temp1367:24] : -# 1367| r1367_3(glval) = FunctionAddress[returnValue] : -# 1367| r1367_4(String) = Call[returnValue] : func:r1367_3 -# 1367| mu1367_5(unknown) = ^CallSideEffect : ~m? -# 1367| mu1367_6(String) = Store[#temp1367:24] : &:r1367_2, r1367_4 -# 1367| r1367_7(glval) = Convert : r1367_2 -# 1367| r1367_8(String &) = CopyValue : r1367_7 -# 1367| mu1367_9(String &) = Store[rs] : &:r1367_1, r1367_8 -# 1369| r1369_1(glval) = FunctionAddress[acceptRef] : -# 1369| r1369_2(glval) = VariableAddress[s] : -# 1369| r1369_3(glval) = Convert : r1369_2 -# 1369| r1369_4(String &) = CopyValue : r1369_3 -# 1369| v1369_5(void) = Call[acceptRef] : func:r1369_1, 0:r1369_4 -# 1369| mu1369_6(unknown) = ^CallSideEffect : ~m? -# 1369| v1369_7(void) = ^BufferReadSideEffect[0] : &:r1369_4, ~m? -# 1370| r1370_1(glval) = FunctionAddress[acceptRef] : -# 1370| r1370_2(glval) = VariableAddress[#temp1370:23] : -# 1370| mu1370_3(String) = Uninitialized[#temp1370:23] : &:r1370_2 -# 1370| r1370_4(glval) = FunctionAddress[String] : -# 1370| r1370_5(glval) = StringConstant["foo"] : -# 1370| r1370_6(char *) = Convert : r1370_5 -# 1370| v1370_7(void) = Call[String] : func:r1370_4, this:r1370_2, 0:r1370_6 -# 1370| mu1370_8(unknown) = ^CallSideEffect : ~m? -# 1370| v1370_9(void) = ^BufferReadSideEffect[0] : &:r1370_6, ~m? -# 1370| mu1370_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1370_2 -# 1370| r1370_11(String &) = CopyValue : r1370_2 -# 1370| v1370_12(void) = Call[acceptRef] : func:r1370_1, 0:r1370_11 -# 1370| mu1370_13(unknown) = ^CallSideEffect : ~m? -# 1370| v1370_14(void) = ^BufferReadSideEffect[0] : &:r1370_11, ~m? -# 1371| r1371_1(glval) = FunctionAddress[acceptValue] : -# 1371| r1371_2(glval) = VariableAddress[#temp1371:17] : -# 1371| mu1371_3(String) = Uninitialized[#temp1371:17] : &:r1371_2 -# 1371| r1371_4(glval) = FunctionAddress[String] : -# 1371| r1371_5(glval) = VariableAddress[s] : -# 1371| r1371_6(glval) = Convert : r1371_5 -# 1371| r1371_7(String &) = CopyValue : r1371_6 -# 1371| v1371_8(void) = Call[String] : func:r1371_4, this:r1371_2, 0:r1371_7 -# 1371| mu1371_9(unknown) = ^CallSideEffect : ~m? -# 1371| v1371_10(void) = ^BufferReadSideEffect[0] : &:r1371_7, ~m? -# 1371| mu1371_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1371_2 -# 1371| r1371_12(String) = Load[#temp1371:17] : &:r1371_2, ~m? -# 1371| v1371_13(void) = Call[acceptValue] : func:r1371_1, 0:r1371_12 -# 1371| mu1371_14(unknown) = ^CallSideEffect : ~m? -# 1372| r1372_1(glval) = FunctionAddress[acceptValue] : -# 1372| r1372_2(glval) = VariableAddress[#temp1372:25] : -# 1372| mu1372_3(String) = Uninitialized[#temp1372:25] : &:r1372_2 +# 1322| void f(int*) +# 1322| Block 0 +# 1322| v1322_1(void) = EnterFunction : +# 1322| mu1322_2(unknown) = AliasedDefinition : +# 1322| mu1322_3(unknown) = InitializeNonLocal : +# 1322| r1322_4(glval) = VariableAddress[p] : +# 1322| mu1322_5(int *) = InitializeParameter[p] : &:r1322_4 +# 1322| r1322_6(int *) = Load[p] : &:r1322_4, ~m? +# 1322| mu1322_7(unknown) = InitializeIndirection[p] : &:r1322_6 +# 1324| r1324_1(glval) = FunctionAddress[operator new] : +# 1324| r1324_2(unsigned long) = Constant[4] : +# 1324| r1324_3(glval) = VariableAddress[p] : +# 1324| r1324_4(int *) = Load[p] : &:r1324_3, ~m? +# 1324| r1324_5(void *) = Convert : r1324_4 +# 1324| r1324_6(void *) = Call[operator new] : func:r1324_1, 0:r1324_2, 1:r1324_5 +# 1324| mu1324_7(unknown) = ^CallSideEffect : ~m? +# 1324| mu1324_8(unknown) = ^InitializeDynamicAllocation : &:r1324_6 +# 1324| r1324_9(int *) = Convert : r1324_6 +# 1325| v1325_1(void) = NoOp : +# 1322| v1322_8(void) = ReturnIndirection[p] : &:r1322_6, ~m? +# 1322| v1322_9(void) = ReturnVoid : +# 1322| v1322_10(void) = AliasedUse : ~m? +# 1322| v1322_11(void) = ExitFunction : + +# 1328| Point defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| mu1328_2(unknown) = AliasedDefinition : +# 1328| mu1328_3(unknown) = InitializeNonLocal : +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| r1329_2(Point) = Constant[0] : +# 1329| mu1329_3(Point) = Store[#return] : &:r1329_1, r1329_2 +# 1328| r1328_4(glval) = VariableAddress[#return] : +# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? +# 1328| v1328_6(void) = AliasedUse : ~m? +# 1328| v1328_7(void) = ExitFunction : + +# 1328| String defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| mu1328_2(unknown) = AliasedDefinition : +# 1328| mu1328_3(unknown) = InitializeNonLocal : +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| mu1329_2(String) = Uninitialized[#return] : &:r1329_1 +# 1329| r1329_3(glval) = FunctionAddress[String] : +# 1329| v1329_4(void) = Call[String] : func:r1329_3, this:r1329_1 +# 1329| mu1329_5(unknown) = ^CallSideEffect : ~m? +# 1329| mu1329_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 +# 1328| r1328_4(glval) = VariableAddress[#return] : +# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? +# 1328| v1328_6(void) = AliasedUse : ~m? +# 1328| v1328_7(void) = ExitFunction : + +# 1328| copy_constructor defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| mu1328_2(unknown) = AliasedDefinition : +# 1328| mu1328_3(unknown) = InitializeNonLocal : +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| mu1329_2(copy_constructor) = Uninitialized[#return] : &:r1329_1 +# 1329| r1329_3(glval) = FunctionAddress[copy_constructor] : +# 1329| v1329_4(void) = Call[copy_constructor] : func:r1329_3, this:r1329_1 +# 1329| mu1329_5(unknown) = ^CallSideEffect : ~m? +# 1329| mu1329_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 +# 1328| r1328_4(glval) = VariableAddress[#return] : +# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? +# 1328| v1328_6(void) = AliasedUse : ~m? +# 1328| v1328_7(void) = ExitFunction : + +# 1328| destructor_only defaultConstruct() +# 1328| Block 0 +# 1328| v1328_1(void) = EnterFunction : +# 1328| mu1328_2(unknown) = AliasedDefinition : +# 1328| mu1328_3(unknown) = InitializeNonLocal : +# 1329| r1329_1(glval) = VariableAddress[#return] : +# 1329| r1329_2(destructor_only) = Constant[0] : +# 1329| mu1329_3(destructor_only) = Store[#return] : &:r1329_1, r1329_2 +# 1328| r1328_4(glval) = VariableAddress[#return] : +# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? +# 1328| v1328_6(void) = AliasedUse : ~m? +# 1328| v1328_7(void) = ExitFunction : + +# 1367| void temporary_string() +# 1367| Block 0 +# 1367| v1367_1(void) = EnterFunction : +# 1367| mu1367_2(unknown) = AliasedDefinition : +# 1367| mu1367_3(unknown) = InitializeNonLocal : +# 1368| r1368_1(glval) = VariableAddress[s] : +# 1368| r1368_2(glval) = FunctionAddress[returnValue] : +# 1368| r1368_3(String) = Call[returnValue] : func:r1368_2 +# 1368| mu1368_4(unknown) = ^CallSideEffect : ~m? +# 1368| mu1368_5(String) = Store[s] : &:r1368_1, r1368_3 +# 1369| r1369_1(glval) = VariableAddress[rs] : +# 1369| r1369_2(glval) = VariableAddress[#temp1369:24] : +# 1369| r1369_3(glval) = FunctionAddress[returnValue] : +# 1369| r1369_4(String) = Call[returnValue] : func:r1369_3 +# 1369| mu1369_5(unknown) = ^CallSideEffect : ~m? +# 1369| mu1369_6(String) = Store[#temp1369:24] : &:r1369_2, r1369_4 +# 1369| r1369_7(glval) = Convert : r1369_2 +# 1369| r1369_8(String &) = CopyValue : r1369_7 +# 1369| mu1369_9(String &) = Store[rs] : &:r1369_1, r1369_8 +# 1371| r1371_1(glval) = FunctionAddress[acceptRef] : +# 1371| r1371_2(glval) = VariableAddress[s] : +# 1371| r1371_3(glval) = Convert : r1371_2 +# 1371| r1371_4(String &) = CopyValue : r1371_3 +# 1371| v1371_5(void) = Call[acceptRef] : func:r1371_1, 0:r1371_4 +# 1371| mu1371_6(unknown) = ^CallSideEffect : ~m? +# 1371| v1371_7(void) = ^BufferReadSideEffect[0] : &:r1371_4, ~m? +# 1372| r1372_1(glval) = FunctionAddress[acceptRef] : +# 1372| r1372_2(glval) = VariableAddress[#temp1372:23] : +# 1372| mu1372_3(String) = Uninitialized[#temp1372:23] : &:r1372_2 # 1372| r1372_4(glval) = FunctionAddress[String] : # 1372| r1372_5(glval) = StringConstant["foo"] : # 1372| r1372_6(char *) = Convert : r1372_5 @@ -7791,985 +7763,993 @@ ir.cpp: # 1372| mu1372_8(unknown) = ^CallSideEffect : ~m? # 1372| v1372_9(void) = ^BufferReadSideEffect[0] : &:r1372_6, ~m? # 1372| mu1372_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1372_2 -# 1372| r1372_11(String) = Load[#temp1372:25] : &:r1372_2, ~m? -# 1372| v1372_12(void) = Call[acceptValue] : func:r1372_1, 0:r1372_11 +# 1372| r1372_11(String &) = CopyValue : r1372_2 +# 1372| v1372_12(void) = Call[acceptRef] : func:r1372_1, 0:r1372_11 # 1372| mu1372_13(unknown) = ^CallSideEffect : ~m? -# 1373| r1373_1(glval) = VariableAddress[#temp1373:5] : -# 1373| mu1373_2(String) = Uninitialized[#temp1373:5] : &:r1373_1 -# 1373| r1373_3(glval) = FunctionAddress[String] : -# 1373| v1373_4(void) = Call[String] : func:r1373_3, this:r1373_1 -# 1373| mu1373_5(unknown) = ^CallSideEffect : ~m? -# 1373| mu1373_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_1 -# 1373| r1373_7(glval) = Convert : r1373_1 -# 1373| r1373_8(glval) = FunctionAddress[c_str] : -# 1373| r1373_9(char *) = Call[c_str] : func:r1373_8, this:r1373_7 -# 1373| mu1373_10(unknown) = ^CallSideEffect : ~m? -# 1373| v1373_11(void) = ^IndirectReadSideEffect[-1] : &:r1373_7, ~m? -# 1374| r1374_1(glval) = VariableAddress[#temp1374:5] : -# 1374| r1374_2(glval) = FunctionAddress[returnValue] : -# 1374| r1374_3(String) = Call[returnValue] : func:r1374_2 -# 1374| mu1374_4(unknown) = ^CallSideEffect : ~m? -# 1374| mu1374_5(String) = Store[#temp1374:5] : &:r1374_1, r1374_3 -# 1374| r1374_6(glval) = Convert : r1374_1 -# 1374| r1374_7(glval) = FunctionAddress[c_str] : -# 1374| r1374_8(char *) = Call[c_str] : func:r1374_7, this:r1374_6 -# 1374| mu1374_9(unknown) = ^CallSideEffect : ~m? -# 1374| v1374_10(void) = ^IndirectReadSideEffect[-1] : &:r1374_6, ~m? +# 1372| v1372_14(void) = ^BufferReadSideEffect[0] : &:r1372_11, ~m? +# 1373| r1373_1(glval) = FunctionAddress[acceptValue] : +# 1373| r1373_2(glval) = VariableAddress[#temp1373:17] : +# 1373| mu1373_3(String) = Uninitialized[#temp1373:17] : &:r1373_2 +# 1373| r1373_4(glval) = FunctionAddress[String] : +# 1373| r1373_5(glval) = VariableAddress[s] : +# 1373| r1373_6(glval) = Convert : r1373_5 +# 1373| r1373_7(String &) = CopyValue : r1373_6 +# 1373| v1373_8(void) = Call[String] : func:r1373_4, this:r1373_2, 0:r1373_7 +# 1373| mu1373_9(unknown) = ^CallSideEffect : ~m? +# 1373| v1373_10(void) = ^BufferReadSideEffect[0] : &:r1373_7, ~m? +# 1373| mu1373_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_2 +# 1373| r1373_12(String) = Load[#temp1373:17] : &:r1373_2, ~m? +# 1373| v1373_13(void) = Call[acceptValue] : func:r1373_1, 0:r1373_12 +# 1373| mu1373_14(unknown) = ^CallSideEffect : ~m? +# 1374| r1374_1(glval) = FunctionAddress[acceptValue] : +# 1374| r1374_2(glval) = VariableAddress[#temp1374:25] : +# 1374| mu1374_3(String) = Uninitialized[#temp1374:25] : &:r1374_2 +# 1374| r1374_4(glval) = FunctionAddress[String] : +# 1374| r1374_5(glval) = StringConstant["foo"] : +# 1374| r1374_6(char *) = Convert : r1374_5 +# 1374| v1374_7(void) = Call[String] : func:r1374_4, this:r1374_2, 0:r1374_6 +# 1374| mu1374_8(unknown) = ^CallSideEffect : ~m? +# 1374| v1374_9(void) = ^BufferReadSideEffect[0] : &:r1374_6, ~m? +# 1374| mu1374_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1374_2 +# 1374| r1374_11(String) = Load[#temp1374:25] : &:r1374_2, ~m? +# 1374| v1374_12(void) = Call[acceptValue] : func:r1374_1, 0:r1374_11 +# 1374| mu1374_13(unknown) = ^CallSideEffect : ~m? +# 1375| r1375_1(glval) = VariableAddress[#temp1375:5] : +# 1375| mu1375_2(String) = Uninitialized[#temp1375:5] : &:r1375_1 +# 1375| r1375_3(glval) = FunctionAddress[String] : +# 1375| v1375_4(void) = Call[String] : func:r1375_3, this:r1375_1 +# 1375| mu1375_5(unknown) = ^CallSideEffect : ~m? +# 1375| mu1375_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1375_1 +# 1375| r1375_7(glval) = Convert : r1375_1 +# 1375| r1375_8(glval) = FunctionAddress[c_str] : +# 1375| r1375_9(char *) = Call[c_str] : func:r1375_8, this:r1375_7 +# 1375| mu1375_10(unknown) = ^CallSideEffect : ~m? +# 1375| v1375_11(void) = ^IndirectReadSideEffect[-1] : &:r1375_7, ~m? # 1376| r1376_1(glval) = VariableAddress[#temp1376:5] : -# 1376| r1376_2(glval) = FunctionAddress[defaultConstruct] : -# 1376| r1376_3(String) = Call[defaultConstruct] : func:r1376_2 +# 1376| r1376_2(glval) = FunctionAddress[returnValue] : +# 1376| r1376_3(String) = Call[returnValue] : func:r1376_2 # 1376| mu1376_4(unknown) = ^CallSideEffect : ~m? # 1376| mu1376_5(String) = Store[#temp1376:5] : &:r1376_1, r1376_3 -# 1377| v1377_1(void) = NoOp : -# 1365| v1365_4(void) = ReturnVoid : -# 1365| v1365_5(void) = AliasedUse : ~m? -# 1365| v1365_6(void) = ExitFunction : - -# 1379| void temporary_destructor_only() -# 1379| Block 0 -# 1379| v1379_1(void) = EnterFunction : -# 1379| mu1379_2(unknown) = AliasedDefinition : -# 1379| mu1379_3(unknown) = InitializeNonLocal : -# 1380| r1380_1(glval) = VariableAddress[d] : -# 1380| r1380_2(glval) = FunctionAddress[returnValue] : -# 1380| r1380_3(destructor_only) = Call[returnValue] : func:r1380_2 -# 1380| mu1380_4(unknown) = ^CallSideEffect : ~m? -# 1380| mu1380_5(destructor_only) = Store[d] : &:r1380_1, r1380_3 -# 1381| r1381_1(glval) = VariableAddress[rd] : -# 1381| r1381_2(glval) = VariableAddress[#temp1381:33] : -# 1381| r1381_3(glval) = FunctionAddress[returnValue] : -# 1381| r1381_4(destructor_only) = Call[returnValue] : func:r1381_3 -# 1381| mu1381_5(unknown) = ^CallSideEffect : ~m? -# 1381| mu1381_6(destructor_only) = Store[#temp1381:33] : &:r1381_2, r1381_4 -# 1381| r1381_7(glval) = Convert : r1381_2 -# 1381| r1381_8(destructor_only &) = CopyValue : r1381_7 -# 1381| mu1381_9(destructor_only &) = Store[rd] : &:r1381_1, r1381_8 -# 1382| r1382_1(glval) = VariableAddress[d2] : -# 1382| mu1382_2(destructor_only) = Uninitialized[d2] : &:r1382_1 -# 1383| r1383_1(glval) = FunctionAddress[acceptRef] : -# 1383| r1383_2(glval) = VariableAddress[d] : -# 1383| r1383_3(glval) = Convert : r1383_2 -# 1383| r1383_4(destructor_only &) = CopyValue : r1383_3 -# 1383| v1383_5(void) = Call[acceptRef] : func:r1383_1, 0:r1383_4 -# 1383| mu1383_6(unknown) = ^CallSideEffect : ~m? -# 1383| v1383_7(void) = ^BufferReadSideEffect[0] : &:r1383_4, ~m? -# 1384| r1384_1(glval) = FunctionAddress[acceptValue] : -# 1384| r1384_2(glval) = VariableAddress[#temp1384:17] : -# 1384| r1384_3(glval) = VariableAddress[d] : -# 1384| r1384_4(destructor_only) = Load[d] : &:r1384_3, ~m? -# 1384| mu1384_5(destructor_only) = Store[#temp1384:17] : &:r1384_2, r1384_4 -# 1384| r1384_6(destructor_only) = Load[#temp1384:17] : &:r1384_2, ~m? -# 1384| v1384_7(void) = Call[acceptValue] : func:r1384_1, 0:r1384_6 -# 1384| mu1384_8(unknown) = ^CallSideEffect : ~m? -# 1385| r1385_1(glval) = VariableAddress[#temp1385:5] : -# 1385| r1385_2(destructor_only) = Constant[0] : -# 1385| mu1385_3(destructor_only) = Store[#temp1385:5] : &:r1385_1, r1385_2 -# 1385| r1385_4(glval) = FunctionAddress[method] : -# 1385| v1385_5(void) = Call[method] : func:r1385_4, this:r1385_1 +# 1376| r1376_6(glval) = Convert : r1376_1 +# 1376| r1376_7(glval) = FunctionAddress[c_str] : +# 1376| r1376_8(char *) = Call[c_str] : func:r1376_7, this:r1376_6 +# 1376| mu1376_9(unknown) = ^CallSideEffect : ~m? +# 1376| v1376_10(void) = ^IndirectReadSideEffect[-1] : &:r1376_6, ~m? +# 1378| r1378_1(glval) = VariableAddress[#temp1378:5] : +# 1378| r1378_2(glval) = FunctionAddress[defaultConstruct] : +# 1378| r1378_3(String) = Call[defaultConstruct] : func:r1378_2 +# 1378| mu1378_4(unknown) = ^CallSideEffect : ~m? +# 1378| mu1378_5(String) = Store[#temp1378:5] : &:r1378_1, r1378_3 +# 1379| v1379_1(void) = NoOp : +# 1367| v1367_4(void) = ReturnVoid : +# 1367| v1367_5(void) = AliasedUse : ~m? +# 1367| v1367_6(void) = ExitFunction : + +# 1381| void temporary_destructor_only() +# 1381| Block 0 +# 1381| v1381_1(void) = EnterFunction : +# 1381| mu1381_2(unknown) = AliasedDefinition : +# 1381| mu1381_3(unknown) = InitializeNonLocal : +# 1382| r1382_1(glval) = VariableAddress[d] : +# 1382| r1382_2(glval) = FunctionAddress[returnValue] : +# 1382| r1382_3(destructor_only) = Call[returnValue] : func:r1382_2 +# 1382| mu1382_4(unknown) = ^CallSideEffect : ~m? +# 1382| mu1382_5(destructor_only) = Store[d] : &:r1382_1, r1382_3 +# 1383| r1383_1(glval) = VariableAddress[rd] : +# 1383| r1383_2(glval) = VariableAddress[#temp1383:33] : +# 1383| r1383_3(glval) = FunctionAddress[returnValue] : +# 1383| r1383_4(destructor_only) = Call[returnValue] : func:r1383_3 +# 1383| mu1383_5(unknown) = ^CallSideEffect : ~m? +# 1383| mu1383_6(destructor_only) = Store[#temp1383:33] : &:r1383_2, r1383_4 +# 1383| r1383_7(glval) = Convert : r1383_2 +# 1383| r1383_8(destructor_only &) = CopyValue : r1383_7 +# 1383| mu1383_9(destructor_only &) = Store[rd] : &:r1383_1, r1383_8 +# 1384| r1384_1(glval) = VariableAddress[d2] : +# 1384| mu1384_2(destructor_only) = Uninitialized[d2] : &:r1384_1 +# 1385| r1385_1(glval) = FunctionAddress[acceptRef] : +# 1385| r1385_2(glval) = VariableAddress[d] : +# 1385| r1385_3(glval) = Convert : r1385_2 +# 1385| r1385_4(destructor_only &) = CopyValue : r1385_3 +# 1385| v1385_5(void) = Call[acceptRef] : func:r1385_1, 0:r1385_4 # 1385| mu1385_6(unknown) = ^CallSideEffect : ~m? -# 1385| v1385_7(void) = ^IndirectReadSideEffect[-1] : &:r1385_1, ~m? -# 1385| mu1385_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1385_1 -# 1386| r1386_1(glval) = VariableAddress[#temp1386:5] : -# 1386| r1386_2(glval) = FunctionAddress[returnValue] : -# 1386| r1386_3(destructor_only) = Call[returnValue] : func:r1386_2 -# 1386| mu1386_4(unknown) = ^CallSideEffect : ~m? -# 1386| mu1386_5(destructor_only) = Store[#temp1386:5] : &:r1386_1, r1386_3 -# 1386| r1386_6(glval) = FunctionAddress[method] : -# 1386| v1386_7(void) = Call[method] : func:r1386_6, this:r1386_1 +# 1385| v1385_7(void) = ^BufferReadSideEffect[0] : &:r1385_4, ~m? +# 1386| r1386_1(glval) = FunctionAddress[acceptValue] : +# 1386| r1386_2(glval) = VariableAddress[#temp1386:17] : +# 1386| r1386_3(glval) = VariableAddress[d] : +# 1386| r1386_4(destructor_only) = Load[d] : &:r1386_3, ~m? +# 1386| mu1386_5(destructor_only) = Store[#temp1386:17] : &:r1386_2, r1386_4 +# 1386| r1386_6(destructor_only) = Load[#temp1386:17] : &:r1386_2, ~m? +# 1386| v1386_7(void) = Call[acceptValue] : func:r1386_1, 0:r1386_6 # 1386| mu1386_8(unknown) = ^CallSideEffect : ~m? -# 1386| v1386_9(void) = ^IndirectReadSideEffect[-1] : &:r1386_1, ~m? -# 1386| mu1386_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1386_1 +# 1387| r1387_1(glval) = VariableAddress[#temp1387:5] : +# 1387| r1387_2(destructor_only) = Constant[0] : +# 1387| mu1387_3(destructor_only) = Store[#temp1387:5] : &:r1387_1, r1387_2 +# 1387| r1387_4(glval) = FunctionAddress[method] : +# 1387| v1387_5(void) = Call[method] : func:r1387_4, this:r1387_1 +# 1387| mu1387_6(unknown) = ^CallSideEffect : ~m? +# 1387| v1387_7(void) = ^IndirectReadSideEffect[-1] : &:r1387_1, ~m? +# 1387| mu1387_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1387_1 # 1388| r1388_1(glval) = VariableAddress[#temp1388:5] : -# 1388| r1388_2(glval) = FunctionAddress[defaultConstruct] : -# 1388| r1388_3(destructor_only) = Call[defaultConstruct] : func:r1388_2 +# 1388| r1388_2(glval) = FunctionAddress[returnValue] : +# 1388| r1388_3(destructor_only) = Call[returnValue] : func:r1388_2 # 1388| mu1388_4(unknown) = ^CallSideEffect : ~m? # 1388| mu1388_5(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3 -# 1389| v1389_1(void) = NoOp : -# 1379| v1379_4(void) = ReturnVoid : -# 1379| v1379_5(void) = AliasedUse : ~m? -# 1379| v1379_6(void) = ExitFunction : - -# 1391| void temporary_copy_constructor() -# 1391| Block 0 -# 1391| v1391_1(void) = EnterFunction : -# 1391| mu1391_2(unknown) = AliasedDefinition : -# 1391| mu1391_3(unknown) = InitializeNonLocal : -# 1392| r1392_1(glval) = VariableAddress[d] : -# 1392| r1392_2(glval) = FunctionAddress[returnValue] : -# 1392| r1392_3(copy_constructor) = Call[returnValue] : func:r1392_2 -# 1392| mu1392_4(unknown) = ^CallSideEffect : ~m? -# 1392| mu1392_5(copy_constructor) = Store[d] : &:r1392_1, r1392_3 -# 1393| r1393_1(glval) = VariableAddress[rd] : -# 1393| r1393_2(glval) = VariableAddress[#temp1393:34] : -# 1393| r1393_3(glval) = FunctionAddress[returnValue] : -# 1393| r1393_4(copy_constructor) = Call[returnValue] : func:r1393_3 -# 1393| mu1393_5(unknown) = ^CallSideEffect : ~m? -# 1393| mu1393_6(copy_constructor) = Store[#temp1393:34] : &:r1393_2, r1393_4 -# 1393| r1393_7(glval) = Convert : r1393_2 -# 1393| r1393_8(copy_constructor &) = CopyValue : r1393_7 -# 1393| mu1393_9(copy_constructor &) = Store[rd] : &:r1393_1, r1393_8 -# 1394| r1394_1(glval) = VariableAddress[d2] : -# 1394| mu1394_2(copy_constructor) = Uninitialized[d2] : &:r1394_1 -# 1394| r1394_3(glval) = FunctionAddress[copy_constructor] : -# 1394| v1394_4(void) = Call[copy_constructor] : func:r1394_3, this:r1394_1 -# 1394| mu1394_5(unknown) = ^CallSideEffect : ~m? -# 1394| mu1394_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1394_1 -# 1395| r1395_1(glval) = FunctionAddress[acceptRef] : -# 1395| r1395_2(glval) = VariableAddress[d] : -# 1395| r1395_3(glval) = Convert : r1395_2 -# 1395| r1395_4(copy_constructor &) = CopyValue : r1395_3 -# 1395| v1395_5(void) = Call[acceptRef] : func:r1395_1, 0:r1395_4 -# 1395| mu1395_6(unknown) = ^CallSideEffect : ~m? -# 1395| v1395_7(void) = ^BufferReadSideEffect[0] : &:r1395_4, ~m? -# 1396| r1396_1(glval) = FunctionAddress[acceptValue] : -# 1396| r1396_2(glval) = VariableAddress[#temp1396:17] : -# 1396| mu1396_3(copy_constructor) = Uninitialized[#temp1396:17] : &:r1396_2 -# 1396| r1396_4(glval) = FunctionAddress[copy_constructor] : -# 1396| r1396_5(glval) = VariableAddress[d] : -# 1396| r1396_6(glval) = Convert : r1396_5 -# 1396| r1396_7(copy_constructor &) = CopyValue : r1396_6 -# 1396| v1396_8(void) = Call[copy_constructor] : func:r1396_4, this:r1396_2, 0:r1396_7 -# 1396| mu1396_9(unknown) = ^CallSideEffect : ~m? -# 1396| v1396_10(void) = ^BufferReadSideEffect[0] : &:r1396_7, ~m? -# 1396| mu1396_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1396_2 -# 1396| r1396_12(copy_constructor) = Load[#temp1396:17] : &:r1396_2, ~m? -# 1396| v1396_13(void) = Call[acceptValue] : func:r1396_1, 0:r1396_12 -# 1396| mu1396_14(unknown) = ^CallSideEffect : ~m? -# 1397| r1397_1(glval) = VariableAddress[#temp1397:5] : -# 1397| mu1397_2(copy_constructor) = Uninitialized[#temp1397:5] : &:r1397_1 -# 1397| r1397_3(glval) = FunctionAddress[copy_constructor] : -# 1397| v1397_4(void) = Call[copy_constructor] : func:r1397_3, this:r1397_1 -# 1397| mu1397_5(unknown) = ^CallSideEffect : ~m? -# 1397| mu1397_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1397_1 -# 1397| r1397_7(glval) = FunctionAddress[method] : -# 1397| v1397_8(void) = Call[method] : func:r1397_7, this:r1397_1 -# 1397| mu1397_9(unknown) = ^CallSideEffect : ~m? -# 1397| v1397_10(void) = ^IndirectReadSideEffect[-1] : &:r1397_1, ~m? -# 1397| mu1397_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1397_1 -# 1398| r1398_1(glval) = VariableAddress[#temp1398:5] : -# 1398| r1398_2(glval) = FunctionAddress[returnValue] : -# 1398| r1398_3(copy_constructor) = Call[returnValue] : func:r1398_2 -# 1398| mu1398_4(unknown) = ^CallSideEffect : ~m? -# 1398| mu1398_5(copy_constructor) = Store[#temp1398:5] : &:r1398_1, r1398_3 -# 1398| r1398_6(glval) = FunctionAddress[method] : -# 1398| v1398_7(void) = Call[method] : func:r1398_6, this:r1398_1 -# 1398| mu1398_8(unknown) = ^CallSideEffect : ~m? -# 1398| v1398_9(void) = ^IndirectReadSideEffect[-1] : &:r1398_1, ~m? -# 1398| mu1398_10(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1398_1 +# 1388| r1388_6(glval) = FunctionAddress[method] : +# 1388| v1388_7(void) = Call[method] : func:r1388_6, this:r1388_1 +# 1388| mu1388_8(unknown) = ^CallSideEffect : ~m? +# 1388| v1388_9(void) = ^IndirectReadSideEffect[-1] : &:r1388_1, ~m? +# 1388| mu1388_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1388_1 +# 1390| r1390_1(glval) = VariableAddress[#temp1390:5] : +# 1390| r1390_2(glval) = FunctionAddress[defaultConstruct] : +# 1390| r1390_3(destructor_only) = Call[defaultConstruct] : func:r1390_2 +# 1390| mu1390_4(unknown) = ^CallSideEffect : ~m? +# 1390| mu1390_5(destructor_only) = Store[#temp1390:5] : &:r1390_1, r1390_3 +# 1391| v1391_1(void) = NoOp : +# 1381| v1381_4(void) = ReturnVoid : +# 1381| v1381_5(void) = AliasedUse : ~m? +# 1381| v1381_6(void) = ExitFunction : + +# 1393| void temporary_copy_constructor() +# 1393| Block 0 +# 1393| v1393_1(void) = EnterFunction : +# 1393| mu1393_2(unknown) = AliasedDefinition : +# 1393| mu1393_3(unknown) = InitializeNonLocal : +# 1394| r1394_1(glval) = VariableAddress[d] : +# 1394| r1394_2(glval) = FunctionAddress[returnValue] : +# 1394| r1394_3(copy_constructor) = Call[returnValue] : func:r1394_2 +# 1394| mu1394_4(unknown) = ^CallSideEffect : ~m? +# 1394| mu1394_5(copy_constructor) = Store[d] : &:r1394_1, r1394_3 +# 1395| r1395_1(glval) = VariableAddress[rd] : +# 1395| r1395_2(glval) = VariableAddress[#temp1395:34] : +# 1395| r1395_3(glval) = FunctionAddress[returnValue] : +# 1395| r1395_4(copy_constructor) = Call[returnValue] : func:r1395_3 +# 1395| mu1395_5(unknown) = ^CallSideEffect : ~m? +# 1395| mu1395_6(copy_constructor) = Store[#temp1395:34] : &:r1395_2, r1395_4 +# 1395| r1395_7(glval) = Convert : r1395_2 +# 1395| r1395_8(copy_constructor &) = CopyValue : r1395_7 +# 1395| mu1395_9(copy_constructor &) = Store[rd] : &:r1395_1, r1395_8 +# 1396| r1396_1(glval) = VariableAddress[d2] : +# 1396| mu1396_2(copy_constructor) = Uninitialized[d2] : &:r1396_1 +# 1396| r1396_3(glval) = FunctionAddress[copy_constructor] : +# 1396| v1396_4(void) = Call[copy_constructor] : func:r1396_3, this:r1396_1 +# 1396| mu1396_5(unknown) = ^CallSideEffect : ~m? +# 1396| mu1396_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1396_1 +# 1397| r1397_1(glval) = FunctionAddress[acceptRef] : +# 1397| r1397_2(glval) = VariableAddress[d] : +# 1397| r1397_3(glval) = Convert : r1397_2 +# 1397| r1397_4(copy_constructor &) = CopyValue : r1397_3 +# 1397| v1397_5(void) = Call[acceptRef] : func:r1397_1, 0:r1397_4 +# 1397| mu1397_6(unknown) = ^CallSideEffect : ~m? +# 1397| v1397_7(void) = ^BufferReadSideEffect[0] : &:r1397_4, ~m? +# 1398| r1398_1(glval) = FunctionAddress[acceptValue] : +# 1398| r1398_2(glval) = VariableAddress[#temp1398:17] : +# 1398| mu1398_3(copy_constructor) = Uninitialized[#temp1398:17] : &:r1398_2 +# 1398| r1398_4(glval) = FunctionAddress[copy_constructor] : +# 1398| r1398_5(glval) = VariableAddress[d] : +# 1398| r1398_6(glval) = Convert : r1398_5 +# 1398| r1398_7(copy_constructor &) = CopyValue : r1398_6 +# 1398| v1398_8(void) = Call[copy_constructor] : func:r1398_4, this:r1398_2, 0:r1398_7 +# 1398| mu1398_9(unknown) = ^CallSideEffect : ~m? +# 1398| v1398_10(void) = ^BufferReadSideEffect[0] : &:r1398_7, ~m? +# 1398| mu1398_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1398_2 +# 1398| r1398_12(copy_constructor) = Load[#temp1398:17] : &:r1398_2, ~m? +# 1398| v1398_13(void) = Call[acceptValue] : func:r1398_1, 0:r1398_12 +# 1398| mu1398_14(unknown) = ^CallSideEffect : ~m? # 1399| r1399_1(glval) = VariableAddress[#temp1399:5] : -# 1399| r1399_2(glval) = FunctionAddress[defaultConstruct] : -# 1399| r1399_3(copy_constructor) = Call[defaultConstruct] : func:r1399_2 -# 1399| mu1399_4(unknown) = ^CallSideEffect : ~m? -# 1399| mu1399_5(copy_constructor) = Store[#temp1399:5] : &:r1399_1, r1399_3 -# 1401| r1401_1(glval) = VariableAddress[y] : -# 1401| r1401_2(glval) = VariableAddress[#temp1401:13] : -# 1401| r1401_3(glval) = FunctionAddress[returnValue] : -# 1401| r1401_4(copy_constructor) = Call[returnValue] : func:r1401_3 -# 1401| mu1401_5(unknown) = ^CallSideEffect : ~m? -# 1401| mu1401_6(copy_constructor) = Store[#temp1401:13] : &:r1401_2, r1401_4 -# 1401| r1401_7(glval) = FieldAddress[y] : r1401_2 -# 1401| r1401_8(int) = Load[?] : &:r1401_7, ~m? -# 1401| mu1401_9(int) = Store[y] : &:r1401_1, r1401_8 -# 1402| v1402_1(void) = NoOp : -# 1391| v1391_4(void) = ReturnVoid : -# 1391| v1391_5(void) = AliasedUse : ~m? -# 1391| v1391_6(void) = ExitFunction : - -# 1404| void temporary_point() -# 1404| Block 0 -# 1404| v1404_1(void) = EnterFunction : -# 1404| mu1404_2(unknown) = AliasedDefinition : -# 1404| mu1404_3(unknown) = InitializeNonLocal : -# 1405| r1405_1(glval) = VariableAddress[p] : -# 1405| r1405_2(glval) = FunctionAddress[returnValue] : -# 1405| r1405_3(Point) = Call[returnValue] : func:r1405_2 -# 1405| mu1405_4(unknown) = ^CallSideEffect : ~m? -# 1405| mu1405_5(Point) = Store[p] : &:r1405_1, r1405_3 -# 1406| r1406_1(glval) = VariableAddress[rp] : -# 1406| r1406_2(glval) = VariableAddress[#temp1406:23] : -# 1406| r1406_3(glval) = FunctionAddress[returnValue] : -# 1406| r1406_4(Point) = Call[returnValue] : func:r1406_3 -# 1406| mu1406_5(unknown) = ^CallSideEffect : ~m? -# 1406| mu1406_6(Point) = Store[#temp1406:23] : &:r1406_2, r1406_4 -# 1406| r1406_7(glval) = Convert : r1406_2 -# 1406| r1406_8(Point &) = CopyValue : r1406_7 -# 1406| mu1406_9(Point &) = Store[rp] : &:r1406_1, r1406_8 -# 1408| r1408_1(glval) = FunctionAddress[acceptRef] : -# 1408| r1408_2(glval) = VariableAddress[p] : -# 1408| r1408_3(glval) = Convert : r1408_2 -# 1408| r1408_4(Point &) = CopyValue : r1408_3 -# 1408| v1408_5(void) = Call[acceptRef] : func:r1408_1, 0:r1408_4 -# 1408| mu1408_6(unknown) = ^CallSideEffect : ~m? -# 1408| v1408_7(void) = ^BufferReadSideEffect[0] : &:r1408_4, ~m? -# 1409| r1409_1(glval) = FunctionAddress[acceptValue] : -# 1409| r1409_2(glval) = VariableAddress[p] : -# 1409| r1409_3(Point) = Load[p] : &:r1409_2, ~m? -# 1409| v1409_4(void) = Call[acceptValue] : func:r1409_1, 0:r1409_3 -# 1409| mu1409_5(unknown) = ^CallSideEffect : ~m? -# 1410| r1410_1(int) = Constant[0] : -# 1411| r1411_1(glval) = VariableAddress[y] : -# 1411| r1411_2(glval) = FunctionAddress[returnValue] : -# 1411| r1411_3(Point) = Call[returnValue] : func:r1411_2 -# 1411| mu1411_4(unknown) = ^CallSideEffect : ~m? -# 1411| r1411_5(glval) = VariableAddress[#temp1411:13] : -# 1411| mu1411_6(Point) = Store[#temp1411:13] : &:r1411_5, r1411_3 -# 1411| r1411_7(glval) = FieldAddress[y] : r1411_5 -# 1411| r1411_8(int) = Load[?] : &:r1411_7, ~m? -# 1411| mu1411_9(int) = Store[y] : &:r1411_1, r1411_8 -# 1413| r1413_1(glval) = FunctionAddress[defaultConstruct] : -# 1413| r1413_2(Point) = Call[defaultConstruct] : func:r1413_1 -# 1413| mu1413_3(unknown) = ^CallSideEffect : ~m? -# 1414| v1414_1(void) = NoOp : -# 1404| v1404_4(void) = ReturnVoid : -# 1404| v1404_5(void) = AliasedUse : ~m? -# 1404| v1404_6(void) = ExitFunction : - -# 1421| void temporary_unusual_fields() -# 1421| Block 0 -# 1421| v1421_1(void) = EnterFunction : -# 1421| mu1421_2(unknown) = AliasedDefinition : -# 1421| mu1421_3(unknown) = InitializeNonLocal : -# 1422| r1422_1(glval) = VariableAddress[rx] : -# 1422| r1422_2(glval) = FunctionAddress[returnValue] : -# 1422| r1422_3(UnusualFields) = Call[returnValue] : func:r1422_2 -# 1422| mu1422_4(unknown) = ^CallSideEffect : ~m? -# 1422| r1422_5(glval) = VariableAddress[#temp1422:21] : -# 1422| mu1422_6(UnusualFields) = Store[#temp1422:21] : &:r1422_5, r1422_3 -# 1422| r1422_7(glval) = FieldAddress[r] : r1422_5 -# 1422| r1422_8(int &) = Load[?] : &:r1422_7, ~m? -# 1422| r1422_9(glval) = CopyValue : r1422_8 -# 1422| r1422_10(glval) = Convert : r1422_9 -# 1422| r1422_11(int &) = CopyValue : r1422_10 -# 1422| mu1422_12(int &) = Store[rx] : &:r1422_1, r1422_11 -# 1423| r1423_1(glval) = VariableAddress[x] : -# 1423| r1423_2(glval) = FunctionAddress[returnValue] : -# 1423| r1423_3(UnusualFields) = Call[returnValue] : func:r1423_2 -# 1423| mu1423_4(unknown) = ^CallSideEffect : ~m? -# 1423| r1423_5(glval) = VariableAddress[#temp1423:13] : -# 1423| mu1423_6(UnusualFields) = Store[#temp1423:13] : &:r1423_5, r1423_3 -# 1423| r1423_7(glval) = FieldAddress[r] : r1423_5 -# 1423| r1423_8(int &) = Load[?] : &:r1423_7, ~m? -# 1423| r1423_9(int) = Load[?] : &:r1423_8, ~m? -# 1423| mu1423_10(int) = Store[x] : &:r1423_1, r1423_9 -# 1425| r1425_1(glval) = VariableAddress[rf] : +# 1399| mu1399_2(copy_constructor) = Uninitialized[#temp1399:5] : &:r1399_1 +# 1399| r1399_3(glval) = FunctionAddress[copy_constructor] : +# 1399| v1399_4(void) = Call[copy_constructor] : func:r1399_3, this:r1399_1 +# 1399| mu1399_5(unknown) = ^CallSideEffect : ~m? +# 1399| mu1399_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 +# 1399| r1399_7(glval) = FunctionAddress[method] : +# 1399| v1399_8(void) = Call[method] : func:r1399_7, this:r1399_1 +# 1399| mu1399_9(unknown) = ^CallSideEffect : ~m? +# 1399| v1399_10(void) = ^IndirectReadSideEffect[-1] : &:r1399_1, ~m? +# 1399| mu1399_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 +# 1400| r1400_1(glval) = VariableAddress[#temp1400:5] : +# 1400| r1400_2(glval) = FunctionAddress[returnValue] : +# 1400| r1400_3(copy_constructor) = Call[returnValue] : func:r1400_2 +# 1400| mu1400_4(unknown) = ^CallSideEffect : ~m? +# 1400| mu1400_5(copy_constructor) = Store[#temp1400:5] : &:r1400_1, r1400_3 +# 1400| r1400_6(glval) = FunctionAddress[method] : +# 1400| v1400_7(void) = Call[method] : func:r1400_6, this:r1400_1 +# 1400| mu1400_8(unknown) = ^CallSideEffect : ~m? +# 1400| v1400_9(void) = ^IndirectReadSideEffect[-1] : &:r1400_1, ~m? +# 1400| mu1400_10(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1400_1 +# 1401| r1401_1(glval) = VariableAddress[#temp1401:5] : +# 1401| r1401_2(glval) = FunctionAddress[defaultConstruct] : +# 1401| r1401_3(copy_constructor) = Call[defaultConstruct] : func:r1401_2 +# 1401| mu1401_4(unknown) = ^CallSideEffect : ~m? +# 1401| mu1401_5(copy_constructor) = Store[#temp1401:5] : &:r1401_1, r1401_3 +# 1403| r1403_1(glval) = VariableAddress[y] : +# 1403| r1403_2(glval) = VariableAddress[#temp1403:13] : +# 1403| r1403_3(glval) = FunctionAddress[returnValue] : +# 1403| r1403_4(copy_constructor) = Call[returnValue] : func:r1403_3 +# 1403| mu1403_5(unknown) = ^CallSideEffect : ~m? +# 1403| mu1403_6(copy_constructor) = Store[#temp1403:13] : &:r1403_2, r1403_4 +# 1403| r1403_7(glval) = FieldAddress[y] : r1403_2 +# 1403| r1403_8(int) = Load[?] : &:r1403_7, ~m? +# 1403| mu1403_9(int) = Store[y] : &:r1403_1, r1403_8 +# 1404| v1404_1(void) = NoOp : +# 1393| v1393_4(void) = ReturnVoid : +# 1393| v1393_5(void) = AliasedUse : ~m? +# 1393| v1393_6(void) = ExitFunction : + +# 1406| void temporary_point() +# 1406| Block 0 +# 1406| v1406_1(void) = EnterFunction : +# 1406| mu1406_2(unknown) = AliasedDefinition : +# 1406| mu1406_3(unknown) = InitializeNonLocal : +# 1407| r1407_1(glval) = VariableAddress[p] : +# 1407| r1407_2(glval) = FunctionAddress[returnValue] : +# 1407| r1407_3(Point) = Call[returnValue] : func:r1407_2 +# 1407| mu1407_4(unknown) = ^CallSideEffect : ~m? +# 1407| mu1407_5(Point) = Store[p] : &:r1407_1, r1407_3 +# 1408| r1408_1(glval) = VariableAddress[rp] : +# 1408| r1408_2(glval) = VariableAddress[#temp1408:23] : +# 1408| r1408_3(glval) = FunctionAddress[returnValue] : +# 1408| r1408_4(Point) = Call[returnValue] : func:r1408_3 +# 1408| mu1408_5(unknown) = ^CallSideEffect : ~m? +# 1408| mu1408_6(Point) = Store[#temp1408:23] : &:r1408_2, r1408_4 +# 1408| r1408_7(glval) = Convert : r1408_2 +# 1408| r1408_8(Point &) = CopyValue : r1408_7 +# 1408| mu1408_9(Point &) = Store[rp] : &:r1408_1, r1408_8 +# 1410| r1410_1(glval) = FunctionAddress[acceptRef] : +# 1410| r1410_2(glval) = VariableAddress[p] : +# 1410| r1410_3(glval) = Convert : r1410_2 +# 1410| r1410_4(Point &) = CopyValue : r1410_3 +# 1410| v1410_5(void) = Call[acceptRef] : func:r1410_1, 0:r1410_4 +# 1410| mu1410_6(unknown) = ^CallSideEffect : ~m? +# 1410| v1410_7(void) = ^BufferReadSideEffect[0] : &:r1410_4, ~m? +# 1411| r1411_1(glval) = FunctionAddress[acceptValue] : +# 1411| r1411_2(glval) = VariableAddress[p] : +# 1411| r1411_3(Point) = Load[p] : &:r1411_2, ~m? +# 1411| v1411_4(void) = Call[acceptValue] : func:r1411_1, 0:r1411_3 +# 1411| mu1411_5(unknown) = ^CallSideEffect : ~m? +# 1412| r1412_1(int) = Constant[0] : +# 1413| r1413_1(glval) = VariableAddress[y] : +# 1413| r1413_2(glval) = FunctionAddress[returnValue] : +# 1413| r1413_3(Point) = Call[returnValue] : func:r1413_2 +# 1413| mu1413_4(unknown) = ^CallSideEffect : ~m? +# 1413| r1413_5(glval) = VariableAddress[#temp1413:13] : +# 1413| mu1413_6(Point) = Store[#temp1413:13] : &:r1413_5, r1413_3 +# 1413| r1413_7(glval) = FieldAddress[y] : r1413_5 +# 1413| r1413_8(int) = Load[?] : &:r1413_7, ~m? +# 1413| mu1413_9(int) = Store[y] : &:r1413_1, r1413_8 +# 1415| r1415_1(glval) = FunctionAddress[defaultConstruct] : +# 1415| r1415_2(Point) = Call[defaultConstruct] : func:r1415_1 +# 1415| mu1415_3(unknown) = ^CallSideEffect : ~m? +# 1416| v1416_1(void) = NoOp : +# 1406| v1406_4(void) = ReturnVoid : +# 1406| v1406_5(void) = AliasedUse : ~m? +# 1406| v1406_6(void) = ExitFunction : + +# 1423| void temporary_unusual_fields() +# 1423| Block 0 +# 1423| v1423_1(void) = EnterFunction : +# 1423| mu1423_2(unknown) = AliasedDefinition : +# 1423| mu1423_3(unknown) = InitializeNonLocal : +# 1424| r1424_1(glval) = VariableAddress[rx] : +# 1424| r1424_2(glval) = FunctionAddress[returnValue] : +# 1424| r1424_3(UnusualFields) = Call[returnValue] : func:r1424_2 +# 1424| mu1424_4(unknown) = ^CallSideEffect : ~m? +# 1424| r1424_5(glval) = VariableAddress[#temp1424:21] : +# 1424| mu1424_6(UnusualFields) = Store[#temp1424:21] : &:r1424_5, r1424_3 +# 1424| r1424_7(glval) = FieldAddress[r] : r1424_5 +# 1424| r1424_8(int &) = Load[?] : &:r1424_7, ~m? +# 1424| r1424_9(glval) = CopyValue : r1424_8 +# 1424| r1424_10(glval) = Convert : r1424_9 +# 1424| r1424_11(int &) = CopyValue : r1424_10 +# 1424| mu1424_12(int &) = Store[rx] : &:r1424_1, r1424_11 +# 1425| r1425_1(glval) = VariableAddress[x] : # 1425| r1425_2(glval) = FunctionAddress[returnValue] : # 1425| r1425_3(UnusualFields) = Call[returnValue] : func:r1425_2 # 1425| mu1425_4(unknown) = ^CallSideEffect : ~m? -# 1425| r1425_5(glval) = VariableAddress[#temp1425:23] : -# 1425| mu1425_6(UnusualFields) = Store[#temp1425:23] : &:r1425_5, r1425_3 -# 1425| r1425_7(glval) = FieldAddress[a] : r1425_5 -# 1425| r1425_8(float *) = Convert : r1425_7 -# 1425| r1425_9(int) = Constant[3] : -# 1425| r1425_10(glval) = PointerAdd[4] : r1425_8, r1425_9 -# 1425| r1425_11(glval) = Convert : r1425_10 -# 1425| r1425_12(float &) = CopyValue : r1425_11 -# 1425| mu1425_13(float &) = Store[rf] : &:r1425_1, r1425_12 -# 1426| r1426_1(glval) = VariableAddress[f] : -# 1426| r1426_2(glval) = FunctionAddress[returnValue] : -# 1426| r1426_3(UnusualFields) = Call[returnValue] : func:r1426_2 -# 1426| mu1426_4(unknown) = ^CallSideEffect : ~m? -# 1426| r1426_5(glval) = VariableAddress[#temp1426:15] : -# 1426| mu1426_6(UnusualFields) = Store[#temp1426:15] : &:r1426_5, r1426_3 -# 1426| r1426_7(glval) = FieldAddress[a] : r1426_5 -# 1426| r1426_8(float *) = Convert : r1426_7 -# 1426| r1426_9(int) = Constant[5] : -# 1426| r1426_10(glval) = PointerAdd[4] : r1426_8, r1426_9 -# 1426| r1426_11(float) = Load[?] : &:r1426_10, ~m? -# 1426| mu1426_12(float) = Store[f] : &:r1426_1, r1426_11 -# 1427| v1427_1(void) = NoOp : -# 1421| v1421_4(void) = ReturnVoid : -# 1421| v1421_5(void) = AliasedUse : ~m? -# 1421| v1421_6(void) = ExitFunction : - -# 1443| void temporary_hierarchy() -# 1443| Block 0 -# 1443| v1443_1(void) = EnterFunction : -# 1443| mu1443_2(unknown) = AliasedDefinition : -# 1443| mu1443_3(unknown) = InitializeNonLocal : -# 1444| r1444_1(glval) = VariableAddress[b] : +# 1425| r1425_5(glval) = VariableAddress[#temp1425:13] : +# 1425| mu1425_6(UnusualFields) = Store[#temp1425:13] : &:r1425_5, r1425_3 +# 1425| r1425_7(glval) = FieldAddress[r] : r1425_5 +# 1425| r1425_8(int &) = Load[?] : &:r1425_7, ~m? +# 1425| r1425_9(int) = Load[?] : &:r1425_8, ~m? +# 1425| mu1425_10(int) = Store[x] : &:r1425_1, r1425_9 +# 1427| r1427_1(glval) = VariableAddress[rf] : +# 1427| r1427_2(glval) = FunctionAddress[returnValue] : +# 1427| r1427_3(UnusualFields) = Call[returnValue] : func:r1427_2 +# 1427| mu1427_4(unknown) = ^CallSideEffect : ~m? +# 1427| r1427_5(glval) = VariableAddress[#temp1427:23] : +# 1427| mu1427_6(UnusualFields) = Store[#temp1427:23] : &:r1427_5, r1427_3 +# 1427| r1427_7(glval) = FieldAddress[a] : r1427_5 +# 1427| r1427_8(float *) = Convert : r1427_7 +# 1427| r1427_9(int) = Constant[3] : +# 1427| r1427_10(glval) = PointerAdd[4] : r1427_8, r1427_9 +# 1427| r1427_11(glval) = Convert : r1427_10 +# 1427| r1427_12(float &) = CopyValue : r1427_11 +# 1427| mu1427_13(float &) = Store[rf] : &:r1427_1, r1427_12 +# 1428| r1428_1(glval) = VariableAddress[f] : +# 1428| r1428_2(glval) = FunctionAddress[returnValue] : +# 1428| r1428_3(UnusualFields) = Call[returnValue] : func:r1428_2 +# 1428| mu1428_4(unknown) = ^CallSideEffect : ~m? +# 1428| r1428_5(glval) = VariableAddress[#temp1428:15] : +# 1428| mu1428_6(UnusualFields) = Store[#temp1428:15] : &:r1428_5, r1428_3 +# 1428| r1428_7(glval) = FieldAddress[a] : r1428_5 +# 1428| r1428_8(float *) = Convert : r1428_7 +# 1428| r1428_9(int) = Constant[5] : +# 1428| r1428_10(glval) = PointerAdd[4] : r1428_8, r1428_9 +# 1428| r1428_11(float) = Load[?] : &:r1428_10, ~m? +# 1428| mu1428_12(float) = Store[f] : &:r1428_1, r1428_11 +# 1429| v1429_1(void) = NoOp : +# 1423| v1423_4(void) = ReturnVoid : +# 1423| v1423_5(void) = AliasedUse : ~m? +# 1423| v1423_6(void) = ExitFunction : + +# 1445| void temporary_hierarchy() +# 1445| Block 0 +# 1445| v1445_1(void) = EnterFunction : +# 1445| mu1445_2(unknown) = AliasedDefinition : +# 1445| mu1445_3(unknown) = InitializeNonLocal : +# 1446| r1446_1(glval) = VariableAddress[b] : #-----| r0_1(glval) = VariableAddress[#temp0:0] : -# 1444| r1444_2(glval) = FunctionAddress[returnValue] : -# 1444| r1444_3(POD_Middle) = Call[returnValue] : func:r1444_2 -# 1444| mu1444_4(unknown) = ^CallSideEffect : ~m? -# 1444| mu1444_5(POD_Middle) = Store[#temp0:0] : &:r0_1, r1444_3 +# 1446| r1446_2(glval) = FunctionAddress[returnValue] : +# 1446| r1446_3(POD_Middle) = Call[returnValue] : func:r1446_2 +# 1446| mu1446_4(unknown) = ^CallSideEffect : ~m? +# 1446| mu1446_5(POD_Middle) = Store[#temp0:0] : &:r0_1, r1446_3 #-----| r0_2(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 #-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m? -#-----| mu0_4(POD_Base) = Store[b] : &:r1444_1, r0_3 -# 1445| r1445_1(glval) = VariableAddress[#temp1445:9] : -# 1445| r1445_2(glval) = FunctionAddress[returnValue] : -# 1445| r1445_3(POD_Derived) = Call[returnValue] : func:r1445_2 -# 1445| mu1445_4(unknown) = ^CallSideEffect : ~m? -# 1445| mu1445_5(POD_Derived) = Store[#temp1445:9] : &:r1445_1, r1445_3 -# 1445| r1445_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1445_1 -# 1445| r1445_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1445_6 -# 1445| r1445_8(POD_Base) = Load[?] : &:r1445_7, ~m? -# 1445| r1445_9(glval) = VariableAddress[b] : -# 1445| mu1445_10(POD_Base) = Store[b] : &:r1445_9, r1445_8 -# 1446| r1446_1(glval) = VariableAddress[x] : +#-----| mu0_4(POD_Base) = Store[b] : &:r1446_1, r0_3 +# 1447| r1447_1(glval) = VariableAddress[#temp1447:9] : +# 1447| r1447_2(glval) = FunctionAddress[returnValue] : +# 1447| r1447_3(POD_Derived) = Call[returnValue] : func:r1447_2 +# 1447| mu1447_4(unknown) = ^CallSideEffect : ~m? +# 1447| mu1447_5(POD_Derived) = Store[#temp1447:9] : &:r1447_1, r1447_3 +# 1447| r1447_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1447_1 +# 1447| r1447_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1447_6 +# 1447| r1447_8(POD_Base) = Load[?] : &:r1447_7, ~m? +# 1447| r1447_9(glval) = VariableAddress[b] : +# 1447| mu1447_10(POD_Base) = Store[b] : &:r1447_9, r1447_8 +# 1448| r1448_1(glval) = VariableAddress[x] : #-----| r0_5(glval) = VariableAddress[#temp0:0] : -# 1446| r1446_2(glval) = FunctionAddress[returnValue] : -# 1446| r1446_3(POD_Derived) = Call[returnValue] : func:r1446_2 -# 1446| mu1446_4(unknown) = ^CallSideEffect : ~m? -# 1446| mu1446_5(POD_Derived) = Store[#temp0:0] : &:r0_5, r1446_3 +# 1448| r1448_2(glval) = FunctionAddress[returnValue] : +# 1448| r1448_3(POD_Derived) = Call[returnValue] : func:r1448_2 +# 1448| mu1448_4(unknown) = ^CallSideEffect : ~m? +# 1448| mu1448_5(POD_Derived) = Store[#temp0:0] : &:r0_5, r1448_3 #-----| r0_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 #-----| r0_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 -# 1446| r1446_6(glval) = FieldAddress[x] : r0_7 -# 1446| r1446_7(int) = Load[?] : &:r1446_6, ~m? -# 1446| mu1446_8(int) = Store[x] : &:r1446_1, r1446_7 -# 1447| r1447_1(glval) = VariableAddress[f] : +# 1448| r1448_6(glval) = FieldAddress[x] : r0_7 +# 1448| r1448_7(int) = Load[?] : &:r1448_6, ~m? +# 1448| mu1448_8(int) = Store[x] : &:r1448_1, r1448_7 +# 1449| r1449_1(glval) = VariableAddress[f] : #-----| r0_8(glval) = VariableAddress[#temp0:0] : -# 1447| r1447_2(glval) = FunctionAddress[returnValue] : -# 1447| r1447_3(POD_Derived) = Call[returnValue] : func:r1447_2 -# 1447| mu1447_4(unknown) = ^CallSideEffect : ~m? -# 1447| mu1447_5(POD_Derived) = Store[#temp0:0] : &:r0_8, r1447_3 +# 1449| r1449_2(glval) = FunctionAddress[returnValue] : +# 1449| r1449_3(POD_Derived) = Call[returnValue] : func:r1449_2 +# 1449| mu1449_4(unknown) = ^CallSideEffect : ~m? +# 1449| mu1449_5(POD_Derived) = Store[#temp0:0] : &:r0_8, r1449_3 #-----| r0_9(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_8 #-----| r0_10(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_9 #-----| r0_11(glval) = Convert : r0_10 -# 1447| r1447_6(glval) = FunctionAddress[f] : -# 1447| r1447_7(float) = Call[f] : func:r1447_6, this:r0_11 -# 1447| mu1447_8(unknown) = ^CallSideEffect : ~m? +# 1449| r1449_6(glval) = FunctionAddress[f] : +# 1449| r1449_7(float) = Call[f] : func:r1449_6, this:r0_11 +# 1449| mu1449_8(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -# 1447| mu1447_9(float) = Store[f] : &:r1447_1, r1447_7 -# 1448| v1448_1(void) = NoOp : -# 1443| v1443_4(void) = ReturnVoid : -# 1443| v1443_5(void) = AliasedUse : ~m? -# 1443| v1443_6(void) = ExitFunction : - -# 1451| void Inheritance_Test_B::~Inheritance_Test_B() -# 1451| Block 0 -# 1451| v1451_1(void) = EnterFunction : -# 1451| mu1451_2(unknown) = AliasedDefinition : -# 1451| mu1451_3(unknown) = InitializeNonLocal : -# 1451| r1451_4(glval) = VariableAddress[#this] : -# 1451| mu1451_5(glval) = InitializeParameter[#this] : &:r1451_4 -# 1451| r1451_6(glval) = Load[#this] : &:r1451_4, ~m? -# 1451| mu1451_7(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1451_6 -# 1451| v1451_8(void) = NoOp : -# 1451| v1451_9(void) = ReturnIndirection[#this] : &:r1451_6, ~m? -# 1451| v1451_10(void) = ReturnVoid : -# 1451| v1451_11(void) = AliasedUse : ~m? -# 1451| v1451_12(void) = ExitFunction : - -# 1457| void Inheritance_Test_A::Inheritance_Test_A() -# 1457| Block 0 -# 1457| v1457_1(void) = EnterFunction : -# 1457| mu1457_2(unknown) = AliasedDefinition : -# 1457| mu1457_3(unknown) = InitializeNonLocal : -# 1457| r1457_4(glval) = VariableAddress[#this] : -# 1457| mu1457_5(glval) = InitializeParameter[#this] : &:r1457_4 -# 1457| r1457_6(glval) = Load[#this] : &:r1457_4, ~m? -# 1457| mu1457_7(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1457_6 -# 1457| r1457_8(glval) = FieldAddress[x] : mu1457_5 -# 1457| r1457_9(int) = Constant[42] : -# 1457| mu1457_10(int) = Store[?] : &:r1457_8, r1457_9 -# 1458| r1458_1(int) = Constant[3] : -# 1458| r1458_2(glval) = VariableAddress[#this] : -# 1458| r1458_3(Inheritance_Test_A *) = Load[#this] : &:r1458_2, ~m? -# 1458| r1458_4(glval) = FieldAddress[y] : r1458_3 -# 1458| mu1458_5(int) = Store[?] : &:r1458_4, r1458_1 -# 1459| v1459_1(void) = NoOp : -# 1457| v1457_11(void) = ReturnIndirection[#this] : &:r1457_6, ~m? -# 1457| v1457_12(void) = ReturnVoid : -# 1457| v1457_13(void) = AliasedUse : ~m? -# 1457| v1457_14(void) = ExitFunction : - -# 1462| void array_structured_binding() -# 1462| Block 0 -# 1462| v1462_1(void) = EnterFunction : -# 1462| mu1462_2(unknown) = AliasedDefinition : -# 1462| mu1462_3(unknown) = InitializeNonLocal : -# 1463| r1463_1(glval) = VariableAddress[xs] : -# 1463| mu1463_2(int[2]) = Uninitialized[xs] : &:r1463_1 -# 1463| r1463_3(int) = Constant[0] : -# 1463| r1463_4(glval) = PointerAdd[4] : r1463_1, r1463_3 -# 1463| r1463_5(int) = Constant[1] : -# 1463| mu1463_6(int) = Store[?] : &:r1463_4, r1463_5 -# 1463| r1463_7(int) = Constant[1] : -# 1463| r1463_8(glval) = PointerAdd[4] : r1463_1, r1463_7 -# 1463| r1463_9(int) = Constant[2] : -# 1463| mu1463_10(int) = Store[?] : &:r1463_8, r1463_9 -# 1466| r1466_1(glval) = VariableAddress[(unnamed local variable)] : -# 1466| r1466_2(glval) = VariableAddress[xs] : -# 1466| r1466_3(int(&)[2]) = CopyValue : r1466_2 -# 1466| mu1466_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1466_1, r1466_3 -# 1466| r1466_5(glval) = VariableAddress[x0] : +# 1449| mu1449_9(float) = Store[f] : &:r1449_1, r1449_7 +# 1450| v1450_1(void) = NoOp : +# 1445| v1445_4(void) = ReturnVoid : +# 1445| v1445_5(void) = AliasedUse : ~m? +# 1445| v1445_6(void) = ExitFunction : + +# 1453| void Inheritance_Test_B::~Inheritance_Test_B() +# 1453| Block 0 +# 1453| v1453_1(void) = EnterFunction : +# 1453| mu1453_2(unknown) = AliasedDefinition : +# 1453| mu1453_3(unknown) = InitializeNonLocal : +# 1453| r1453_4(glval) = VariableAddress[#this] : +# 1453| mu1453_5(glval) = InitializeParameter[#this] : &:r1453_4 +# 1453| r1453_6(glval) = Load[#this] : &:r1453_4, ~m? +# 1453| mu1453_7(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1453_6 +# 1453| v1453_8(void) = NoOp : +# 1453| v1453_9(void) = ReturnIndirection[#this] : &:r1453_6, ~m? +# 1453| v1453_10(void) = ReturnVoid : +# 1453| v1453_11(void) = AliasedUse : ~m? +# 1453| v1453_12(void) = ExitFunction : + +# 1459| void Inheritance_Test_A::Inheritance_Test_A() +# 1459| Block 0 +# 1459| v1459_1(void) = EnterFunction : +# 1459| mu1459_2(unknown) = AliasedDefinition : +# 1459| mu1459_3(unknown) = InitializeNonLocal : +# 1459| r1459_4(glval) = VariableAddress[#this] : +# 1459| mu1459_5(glval) = InitializeParameter[#this] : &:r1459_4 +# 1459| r1459_6(glval) = Load[#this] : &:r1459_4, ~m? +# 1459| mu1459_7(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1459_6 +# 1459| r1459_8(glval) = FieldAddress[x] : mu1459_5 +# 1459| r1459_9(int) = Constant[42] : +# 1459| mu1459_10(int) = Store[?] : &:r1459_8, r1459_9 +# 1460| r1460_1(int) = Constant[3] : +# 1460| r1460_2(glval) = VariableAddress[#this] : +# 1460| r1460_3(Inheritance_Test_A *) = Load[#this] : &:r1460_2, ~m? +# 1460| r1460_4(glval) = FieldAddress[y] : r1460_3 +# 1460| mu1460_5(int) = Store[?] : &:r1460_4, r1460_1 +# 1461| v1461_1(void) = NoOp : +# 1459| v1459_11(void) = ReturnIndirection[#this] : &:r1459_6, ~m? +# 1459| v1459_12(void) = ReturnVoid : +# 1459| v1459_13(void) = AliasedUse : ~m? +# 1459| v1459_14(void) = ExitFunction : + +# 1464| void array_structured_binding() +# 1464| Block 0 +# 1464| v1464_1(void) = EnterFunction : +# 1464| mu1464_2(unknown) = AliasedDefinition : +# 1464| mu1464_3(unknown) = InitializeNonLocal : +# 1465| r1465_1(glval) = VariableAddress[xs] : +# 1465| mu1465_2(int[2]) = Uninitialized[xs] : &:r1465_1 +# 1465| r1465_3(int) = Constant[0] : +# 1465| r1465_4(glval) = PointerAdd[4] : r1465_1, r1465_3 +# 1465| r1465_5(int) = Constant[1] : +# 1465| mu1465_6(int) = Store[?] : &:r1465_4, r1465_5 +# 1465| r1465_7(int) = Constant[1] : +# 1465| r1465_8(glval) = PointerAdd[4] : r1465_1, r1465_7 +# 1465| r1465_9(int) = Constant[2] : +# 1465| mu1465_10(int) = Store[?] : &:r1465_8, r1465_9 +# 1468| r1468_1(glval) = VariableAddress[(unnamed local variable)] : +# 1468| r1468_2(glval) = VariableAddress[xs] : +# 1468| r1468_3(int(&)[2]) = CopyValue : r1468_2 +# 1468| mu1468_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1468_1, r1468_3 +# 1468| r1468_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, ~m? #-----| r0_3(glval) = CopyValue : r0_2 #-----| r0_4(int *) = Convert : r0_3 #-----| r0_5(unsigned long) = Constant[0] : #-----| r0_6(glval) = PointerAdd[4] : r0_4, r0_5 -#-----| mu0_7(int &) = Store[x0] : &:r1466_5, r0_6 -# 1466| r1466_6(glval) = VariableAddress[x1] : +#-----| mu0_7(int &) = Store[x0] : &:r1468_5, r0_6 +# 1468| r1468_6(glval) = VariableAddress[x1] : #-----| r0_8(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, ~m? #-----| r0_10(glval) = CopyValue : r0_9 #-----| r0_11(int *) = Convert : r0_10 #-----| r0_12(unsigned long) = Constant[1] : #-----| r0_13(glval) = PointerAdd[4] : r0_11, r0_12 -#-----| mu0_14(int &) = Store[x1] : &:r1466_6, r0_13 -# 1467| r1467_1(int) = Constant[3] : -# 1467| r1467_2(glval) = VariableAddress[x1] : -# 1467| r1467_3(int &) = Load[x1] : &:r1467_2, ~m? -# 1467| mu1467_4(int) = Store[?] : &:r1467_3, r1467_1 -# 1468| r1468_1(glval) = VariableAddress[rx1] : -# 1468| r1468_2(glval) = VariableAddress[x1] : -# 1468| r1468_3(int &) = Load[x1] : &:r1468_2, ~m? -# 1468| r1468_4(int &) = CopyValue : r1468_3 -# 1468| mu1468_5(int &) = Store[rx1] : &:r1468_1, r1468_4 -# 1469| r1469_1(glval) = VariableAddress[x] : +#-----| mu0_14(int &) = Store[x1] : &:r1468_6, r0_13 +# 1469| r1469_1(int) = Constant[3] : # 1469| r1469_2(glval) = VariableAddress[x1] : # 1469| r1469_3(int &) = Load[x1] : &:r1469_2, ~m? -# 1469| r1469_4(int) = Load[?] : &:r1469_3, ~m? -# 1469| mu1469_5(int) = Store[x] : &:r1469_1, r1469_4 -# 1473| r1473_1(glval) = VariableAddress[unnamed_local_variable] : -# 1473| r1473_2(glval) = VariableAddress[xs] : -# 1473| r1473_3(int(&)[2]) = CopyValue : r1473_2 -# 1473| mu1473_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1473_1, r1473_3 -# 1474| r1474_1(glval) = VariableAddress[x0] : -# 1474| r1474_2(glval) = VariableAddress[unnamed_local_variable] : -# 1474| r1474_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1474_2, ~m? -# 1474| r1474_4(glval) = CopyValue : r1474_3 -# 1474| r1474_5(int *) = Convert : r1474_4 -# 1474| r1474_6(int) = Constant[0] : -# 1474| r1474_7(glval) = PointerAdd[4] : r1474_5, r1474_6 -# 1474| r1474_8(int &) = CopyValue : r1474_7 -# 1474| mu1474_9(int &) = Store[x0] : &:r1474_1, r1474_8 -# 1475| r1475_1(glval) = VariableAddress[x1] : -# 1475| r1475_2(glval) = VariableAddress[unnamed_local_variable] : -# 1475| r1475_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1475_2, ~m? -# 1475| r1475_4(glval) = CopyValue : r1475_3 -# 1475| r1475_5(int *) = Convert : r1475_4 -# 1475| r1475_6(int) = Constant[1] : -# 1475| r1475_7(glval) = PointerAdd[4] : r1475_5, r1475_6 -# 1475| r1475_8(int &) = CopyValue : r1475_7 -# 1475| mu1475_9(int &) = Store[x1] : &:r1475_1, r1475_8 -# 1476| r1476_1(int) = Constant[3] : -# 1476| r1476_2(glval) = VariableAddress[x1] : -# 1476| r1476_3(int &) = Load[x1] : &:r1476_2, ~m? -# 1476| r1476_4(glval) = CopyValue : r1476_3 -# 1476| mu1476_5(int) = Store[?] : &:r1476_4, r1476_1 -# 1477| r1477_1(glval) = VariableAddress[rx1] : -# 1477| r1477_2(glval) = VariableAddress[x1] : -# 1477| r1477_3(int &) = Load[x1] : &:r1477_2, ~m? -# 1477| r1477_4(glval) = CopyValue : r1477_3 -# 1477| r1477_5(int &) = CopyValue : r1477_4 -# 1477| mu1477_6(int &) = Store[rx1] : &:r1477_1, r1477_5 -# 1478| r1478_1(glval) = VariableAddress[x] : +# 1469| mu1469_4(int) = Store[?] : &:r1469_3, r1469_1 +# 1470| r1470_1(glval) = VariableAddress[rx1] : +# 1470| r1470_2(glval) = VariableAddress[x1] : +# 1470| r1470_3(int &) = Load[x1] : &:r1470_2, ~m? +# 1470| r1470_4(int &) = CopyValue : r1470_3 +# 1470| mu1470_5(int &) = Store[rx1] : &:r1470_1, r1470_4 +# 1471| r1471_1(glval) = VariableAddress[x] : +# 1471| r1471_2(glval) = VariableAddress[x1] : +# 1471| r1471_3(int &) = Load[x1] : &:r1471_2, ~m? +# 1471| r1471_4(int) = Load[?] : &:r1471_3, ~m? +# 1471| mu1471_5(int) = Store[x] : &:r1471_1, r1471_4 +# 1475| r1475_1(glval) = VariableAddress[unnamed_local_variable] : +# 1475| r1475_2(glval) = VariableAddress[xs] : +# 1475| r1475_3(int(&)[2]) = CopyValue : r1475_2 +# 1475| mu1475_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1475_1, r1475_3 +# 1476| r1476_1(glval) = VariableAddress[x0] : +# 1476| r1476_2(glval) = VariableAddress[unnamed_local_variable] : +# 1476| r1476_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1476_2, ~m? +# 1476| r1476_4(glval) = CopyValue : r1476_3 +# 1476| r1476_5(int *) = Convert : r1476_4 +# 1476| r1476_6(int) = Constant[0] : +# 1476| r1476_7(glval) = PointerAdd[4] : r1476_5, r1476_6 +# 1476| r1476_8(int &) = CopyValue : r1476_7 +# 1476| mu1476_9(int &) = Store[x0] : &:r1476_1, r1476_8 +# 1477| r1477_1(glval) = VariableAddress[x1] : +# 1477| r1477_2(glval) = VariableAddress[unnamed_local_variable] : +# 1477| r1477_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1477_2, ~m? +# 1477| r1477_4(glval) = CopyValue : r1477_3 +# 1477| r1477_5(int *) = Convert : r1477_4 +# 1477| r1477_6(int) = Constant[1] : +# 1477| r1477_7(glval) = PointerAdd[4] : r1477_5, r1477_6 +# 1477| r1477_8(int &) = CopyValue : r1477_7 +# 1477| mu1477_9(int &) = Store[x1] : &:r1477_1, r1477_8 +# 1478| r1478_1(int) = Constant[3] : # 1478| r1478_2(glval) = VariableAddress[x1] : # 1478| r1478_3(int &) = Load[x1] : &:r1478_2, ~m? -# 1478| r1478_4(int) = Load[?] : &:r1478_3, ~m? -# 1478| mu1478_5(int) = Store[x] : &:r1478_1, r1478_4 -# 1480| v1480_1(void) = NoOp : -# 1462| v1462_4(void) = ReturnVoid : -# 1462| v1462_5(void) = AliasedUse : ~m? -# 1462| v1462_6(void) = ExitFunction : - -# 1482| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1482| Block 0 -# 1482| v1482_1(void) = EnterFunction : -# 1482| mu1482_2(unknown) = AliasedDefinition : -# 1482| mu1482_3(unknown) = InitializeNonLocal : -# 1482| r1482_4(glval) = VariableAddress[#this] : -# 1482| mu1482_5(glval) = InitializeParameter[#this] : &:r1482_4 -# 1482| r1482_6(glval) = Load[#this] : &:r1482_4, ~m? -# 1482| mu1482_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1482_6 -# 1482| v1482_8(void) = NoOp : -# 1482| v1482_9(void) = ReturnIndirection[#this] : &:r1482_6, ~m? -# 1482| v1482_10(void) = ReturnVoid : -# 1482| v1482_11(void) = AliasedUse : ~m? -# 1482| v1482_12(void) = ExitFunction : - -# 1486| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1486| Block 0 -# 1486| v1486_1(void) = EnterFunction : -# 1486| mu1486_2(unknown) = AliasedDefinition : -# 1486| mu1486_3(unknown) = InitializeNonLocal : -# 1486| r1486_4(glval) = VariableAddress[#this] : -# 1486| mu1486_5(glval) = InitializeParameter[#this] : &:r1486_4 -# 1486| r1486_6(glval) = Load[#this] : &:r1486_4, ~m? -# 1486| mu1486_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1486_6 +# 1478| r1478_4(glval) = CopyValue : r1478_3 +# 1478| mu1478_5(int) = Store[?] : &:r1478_4, r1478_1 +# 1479| r1479_1(glval) = VariableAddress[rx1] : +# 1479| r1479_2(glval) = VariableAddress[x1] : +# 1479| r1479_3(int &) = Load[x1] : &:r1479_2, ~m? +# 1479| r1479_4(glval) = CopyValue : r1479_3 +# 1479| r1479_5(int &) = CopyValue : r1479_4 +# 1479| mu1479_6(int &) = Store[rx1] : &:r1479_1, r1479_5 +# 1480| r1480_1(glval) = VariableAddress[x] : +# 1480| r1480_2(glval) = VariableAddress[x1] : +# 1480| r1480_3(int &) = Load[x1] : &:r1480_2, ~m? +# 1480| r1480_4(int) = Load[?] : &:r1480_3, ~m? +# 1480| mu1480_5(int) = Store[x] : &:r1480_1, r1480_4 +# 1482| v1482_1(void) = NoOp : +# 1464| v1464_4(void) = ReturnVoid : +# 1464| v1464_5(void) = AliasedUse : ~m? +# 1464| v1464_6(void) = ExitFunction : + +# 1484| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1484| Block 0 +# 1484| v1484_1(void) = EnterFunction : +# 1484| mu1484_2(unknown) = AliasedDefinition : +# 1484| mu1484_3(unknown) = InitializeNonLocal : +# 1484| r1484_4(glval) = VariableAddress[#this] : +# 1484| mu1484_5(glval) = InitializeParameter[#this] : &:r1484_4 +# 1484| r1484_6(glval) = Load[#this] : &:r1484_4, ~m? +# 1484| mu1484_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1484_6 +# 1484| v1484_8(void) = NoOp : +# 1484| v1484_9(void) = ReturnIndirection[#this] : &:r1484_6, ~m? +# 1484| v1484_10(void) = ReturnVoid : +# 1484| v1484_11(void) = AliasedUse : ~m? +# 1484| v1484_12(void) = ExitFunction : + +# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1488| Block 0 +# 1488| v1488_1(void) = EnterFunction : +# 1488| mu1488_2(unknown) = AliasedDefinition : +# 1488| mu1488_3(unknown) = InitializeNonLocal : +# 1488| r1488_4(glval) = VariableAddress[#this] : +# 1488| mu1488_5(glval) = InitializeParameter[#this] : &:r1488_4 +# 1488| r1488_6(glval) = Load[#this] : &:r1488_4, ~m? +# 1488| mu1488_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_6 #-----| Goto -> Block 2 -# 1486| Block 1 -# 1486| r1486_8(glval) = FieldAddress[m] : mu1486_5 -# 1486| r1486_9(glval) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : -# 1486| v1486_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1486_9, this:r1486_8 -# 1486| mu1486_11(unknown) = ^CallSideEffect : ~m? -# 1486| mu1486_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1486_8 +# 1488| Block 1 +# 1488| r1488_8(glval) = FieldAddress[m] : mu1488_5 +# 1488| r1488_9(glval) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : +# 1488| v1488_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1488_9, this:r1488_8 +# 1488| mu1488_11(unknown) = ^CallSideEffect : ~m? +# 1488| mu1488_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1488_8 #-----| Goto -> Block 2 -# 1486| Block 2 -# 1486| v1486_13(void) = NoOp : -# 1486| v1486_14(void) = ReturnIndirection[#this] : &:r1486_6, ~m? -# 1486| v1486_15(void) = ReturnVoid : -# 1486| v1486_16(void) = AliasedUse : ~m? -# 1486| v1486_17(void) = ExitFunction : - -# 1486| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1486| Block 0 -# 1486| v1486_1(void) = EnterFunction : -# 1486| mu1486_2(unknown) = AliasedDefinition : -# 1486| mu1486_3(unknown) = InitializeNonLocal : -# 1486| r1486_4(glval) = VariableAddress[#this] : -# 1486| mu1486_5(glval) = InitializeParameter[#this] : &:r1486_4 -# 1486| r1486_6(glval) = Load[#this] : &:r1486_4, ~m? -# 1486| mu1486_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1486_6 +# 1488| Block 2 +# 1488| v1488_13(void) = NoOp : +# 1488| v1488_14(void) = ReturnIndirection[#this] : &:r1488_6, ~m? +# 1488| v1488_15(void) = ReturnVoid : +# 1488| v1488_16(void) = AliasedUse : ~m? +# 1488| v1488_17(void) = ExitFunction : + +# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1488| Block 0 +# 1488| v1488_1(void) = EnterFunction : +# 1488| mu1488_2(unknown) = AliasedDefinition : +# 1488| mu1488_3(unknown) = InitializeNonLocal : +# 1488| r1488_4(glval) = VariableAddress[#this] : +# 1488| mu1488_5(glval) = InitializeParameter[#this] : &:r1488_4 +# 1488| r1488_6(glval) = Load[#this] : &:r1488_4, ~m? +# 1488| mu1488_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(StructuredBindingDataMemberStruct &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1486| r1486_8(glval) = FieldAddress[i] : mu1486_5 -# 1486| r1486_9(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_10(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_9, ~m? -# 1486| r1486_11(glval) = CopyValue : r1486_10 -# 1486| r1486_12(glval) = FieldAddress[i] : r1486_11 -# 1486| r1486_13(int) = Load[?] : &:r1486_12, ~m? -# 1486| mu1486_14(int) = Store[?] : &:r1486_8, r1486_13 -# 1486| r1486_15(glval) = FieldAddress[d] : mu1486_5 -# 1486| r1486_16(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_17(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_16, ~m? -# 1486| r1486_18(glval) = CopyValue : r1486_17 -# 1486| r1486_19(glval) = FieldAddress[d] : r1486_18 -# 1486| r1486_20(double) = Load[?] : &:r1486_19, ~m? -# 1486| mu1486_21(double) = Store[?] : &:r1486_15, r1486_20 -# 1486| r1486_22(glval) = FieldAddress[b] : mu1486_5 -# 1486| r1486_23(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_24(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_23, ~m? -# 1486| r1486_25(glval) = CopyValue : r1486_24 -# 1486| r1486_26(glval) = FieldAddress[b] : r1486_25 -# 1486| r1486_27(unsigned int) = Load[?] : &:r1486_26, ~m? -# 1486| mu1486_28(unsigned int) = Store[?] : &:r1486_22, r1486_27 -# 1486| r1486_29(glval) = FieldAddress[r] : mu1486_5 -# 1486| r1486_30(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_31(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_30, ~m? -# 1486| r1486_32(glval) = CopyValue : r1486_31 -# 1486| r1486_33(glval) = FieldAddress[r] : r1486_32 -# 1486| r1486_34(int &) = Load[?] : &:r1486_33, ~m? -# 1486| mu1486_35(int &) = Store[?] : &:r1486_29, r1486_34 -# 1486| r1486_36(glval) = FieldAddress[p] : mu1486_5 -# 1486| r1486_37(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_38(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_37, ~m? -# 1486| r1486_39(glval) = CopyValue : r1486_38 -# 1486| r1486_40(glval) = FieldAddress[p] : r1486_39 -# 1486| r1486_41(int *) = Load[?] : &:r1486_40, ~m? -# 1486| mu1486_42(int *) = Store[?] : &:r1486_36, r1486_41 -# 1486| r1486_43(glval) = FieldAddress[xs] : mu1486_5 -# 1486| r1486_44(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_45(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_44, ~m? -# 1486| r1486_46(glval) = CopyValue : r1486_45 -# 1486| r1486_47(glval) = FieldAddress[xs] : r1486_46 -# 1486| r1486_48(int[2]) = Load[?] : &:r1486_47, ~m? -# 1486| mu1486_49(int[2]) = Store[?] : &:r1486_43, r1486_48 -# 1486| r1486_50(glval) = FieldAddress[r_alt] : mu1486_5 -# 1486| r1486_51(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_52(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_51, ~m? -# 1486| r1486_53(glval) = CopyValue : r1486_52 -# 1486| r1486_54(glval) = FieldAddress[r_alt] : r1486_53 -# 1486| r1486_55(int &) = Load[?] : &:r1486_54, ~m? -# 1486| mu1486_56(int &) = Store[?] : &:r1486_50, r1486_55 -# 1486| r1486_57(glval) = FieldAddress[m] : mu1486_5 -# 1486| r1486_58(glval) = VariableAddress[(unnamed parameter 0)] : -# 1486| r1486_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1486_58, ~m? -# 1486| r1486_60(glval) = CopyValue : r1486_59 -# 1486| r1486_61(glval) = FieldAddress[m] : r1486_60 -# 1486| r1486_62(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1486_61, ~m? -# 1486| mu1486_63(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1486_57, r1486_62 -# 1486| v1486_64(void) = NoOp : -# 1486| v1486_65(void) = ReturnIndirection[#this] : &:r1486_6, ~m? +# 1488| r1488_8(glval) = FieldAddress[i] : mu1488_5 +# 1488| r1488_9(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_10(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_9, ~m? +# 1488| r1488_11(glval) = CopyValue : r1488_10 +# 1488| r1488_12(glval) = FieldAddress[i] : r1488_11 +# 1488| r1488_13(int) = Load[?] : &:r1488_12, ~m? +# 1488| mu1488_14(int) = Store[?] : &:r1488_8, r1488_13 +# 1488| r1488_15(glval) = FieldAddress[d] : mu1488_5 +# 1488| r1488_16(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_17(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_16, ~m? +# 1488| r1488_18(glval) = CopyValue : r1488_17 +# 1488| r1488_19(glval) = FieldAddress[d] : r1488_18 +# 1488| r1488_20(double) = Load[?] : &:r1488_19, ~m? +# 1488| mu1488_21(double) = Store[?] : &:r1488_15, r1488_20 +# 1488| r1488_22(glval) = FieldAddress[b] : mu1488_5 +# 1488| r1488_23(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_24(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_23, ~m? +# 1488| r1488_25(glval) = CopyValue : r1488_24 +# 1488| r1488_26(glval) = FieldAddress[b] : r1488_25 +# 1488| r1488_27(unsigned int) = Load[?] : &:r1488_26, ~m? +# 1488| mu1488_28(unsigned int) = Store[?] : &:r1488_22, r1488_27 +# 1488| r1488_29(glval) = FieldAddress[r] : mu1488_5 +# 1488| r1488_30(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_31(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_30, ~m? +# 1488| r1488_32(glval) = CopyValue : r1488_31 +# 1488| r1488_33(glval) = FieldAddress[r] : r1488_32 +# 1488| r1488_34(int &) = Load[?] : &:r1488_33, ~m? +# 1488| mu1488_35(int &) = Store[?] : &:r1488_29, r1488_34 +# 1488| r1488_36(glval) = FieldAddress[p] : mu1488_5 +# 1488| r1488_37(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_38(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_37, ~m? +# 1488| r1488_39(glval) = CopyValue : r1488_38 +# 1488| r1488_40(glval) = FieldAddress[p] : r1488_39 +# 1488| r1488_41(int *) = Load[?] : &:r1488_40, ~m? +# 1488| mu1488_42(int *) = Store[?] : &:r1488_36, r1488_41 +# 1488| r1488_43(glval) = FieldAddress[xs] : mu1488_5 +# 1488| r1488_44(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_45(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_44, ~m? +# 1488| r1488_46(glval) = CopyValue : r1488_45 +# 1488| r1488_47(glval) = FieldAddress[xs] : r1488_46 +# 1488| r1488_48(int[2]) = Load[?] : &:r1488_47, ~m? +# 1488| mu1488_49(int[2]) = Store[?] : &:r1488_43, r1488_48 +# 1488| r1488_50(glval) = FieldAddress[r_alt] : mu1488_5 +# 1488| r1488_51(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_52(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_51, ~m? +# 1488| r1488_53(glval) = CopyValue : r1488_52 +# 1488| r1488_54(glval) = FieldAddress[r_alt] : r1488_53 +# 1488| r1488_55(int &) = Load[?] : &:r1488_54, ~m? +# 1488| mu1488_56(int &) = Store[?] : &:r1488_50, r1488_55 +# 1488| r1488_57(glval) = FieldAddress[m] : mu1488_5 +# 1488| r1488_58(glval) = VariableAddress[(unnamed parameter 0)] : +# 1488| r1488_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_58, ~m? +# 1488| r1488_60(glval) = CopyValue : r1488_59 +# 1488| r1488_61(glval) = FieldAddress[m] : r1488_60 +# 1488| r1488_62(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1488_61, ~m? +# 1488| mu1488_63(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1488_57, r1488_62 +# 1488| v1488_64(void) = NoOp : +# 1488| v1488_65(void) = ReturnIndirection[#this] : &:r1488_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1486| v1486_66(void) = ReturnVoid : -# 1486| v1486_67(void) = AliasedUse : ~m? -# 1486| v1486_68(void) = ExitFunction : - -# 1499| void data_member_structured_binding() -# 1499| Block 0 -# 1499| v1499_1(void) = EnterFunction : -# 1499| mu1499_2(unknown) = AliasedDefinition : -# 1499| mu1499_3(unknown) = InitializeNonLocal : -# 1500| r1500_1(glval) = VariableAddress[s] : -# 1500| mu1500_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1500_1 -# 1500| r1500_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : -# 1500| v1500_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1500_3, this:r1500_1 -# 1500| mu1500_5(unknown) = ^CallSideEffect : ~m? -# 1500| mu1500_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1500_1 -# 1503| r1503_1(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_2(glval) = VariableAddress[s] : -# 1503| r1503_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1503_2, ~m? -# 1503| mu1503_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1503_1, r1503_3 -# 1503| r1503_5(glval) = VariableAddress[i] : -# 1503| r1503_6(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_7(glval) = FieldAddress[i] : r1503_6 -# 1503| mu1503_8(int &) = Store[i] : &:r1503_5, r1503_7 -# 1503| r1503_9(glval) = VariableAddress[d] : -# 1503| r1503_10(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_11(glval) = FieldAddress[d] : r1503_10 -# 1503| mu1503_12(double &) = Store[d] : &:r1503_9, r1503_11 -# 1503| r1503_13(glval) = VariableAddress[b] : -# 1503| r1503_14(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_15(glval) = FieldAddress[b] : r1503_14 -# 1503| mu1503_16(unsigned int &) = Store[b] : &:r1503_13, r1503_15 -# 1503| r1503_17(glval) = VariableAddress[r] : -# 1503| r1503_18(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_19(glval) = FieldAddress[r] : r1503_18 -# 1503| r1503_20(int &) = Load[?] : &:r1503_19, ~m? -# 1503| r1503_21(glval) = CopyValue : r1503_20 -# 1503| mu1503_22(int &) = Store[r] : &:r1503_17, r1503_21 -# 1503| r1503_23(glval) = VariableAddress[p] : -# 1503| r1503_24(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_25(glval) = FieldAddress[p] : r1503_24 -# 1503| mu1503_26(int *&) = Store[p] : &:r1503_23, r1503_25 -# 1503| r1503_27(glval) = VariableAddress[xs] : -# 1503| r1503_28(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_29(glval) = FieldAddress[xs] : r1503_28 -# 1503| mu1503_30(int(&)[2]) = Store[xs] : &:r1503_27, r1503_29 -# 1503| r1503_31(glval) = VariableAddress[r_alt] : -# 1503| r1503_32(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_33(glval) = FieldAddress[r_alt] : r1503_32 -# 1503| r1503_34(int &) = Load[?] : &:r1503_33, ~m? -# 1503| r1503_35(glval) = CopyValue : r1503_34 -# 1503| mu1503_36(int &) = Store[r_alt] : &:r1503_31, r1503_35 -# 1503| r1503_37(glval) = VariableAddress[m] : -# 1503| r1503_38(glval) = VariableAddress[(unnamed local variable)] : -# 1503| r1503_39(glval) = FieldAddress[m] : r1503_38 -# 1503| mu1503_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1503_37, r1503_39 -# 1504| r1504_1(double) = Constant[4.0] : -# 1504| r1504_2(glval) = VariableAddress[d] : -# 1504| r1504_3(double &) = Load[d] : &:r1504_2, ~m? -# 1504| mu1504_4(double) = Store[?] : &:r1504_3, r1504_1 -# 1505| r1505_1(glval) = VariableAddress[rd] : -# 1505| r1505_2(glval) = VariableAddress[d] : -# 1505| r1505_3(double &) = Load[d] : &:r1505_2, ~m? -# 1505| r1505_4(double &) = CopyValue : r1505_3 -# 1505| mu1505_5(double &) = Store[rd] : &:r1505_1, r1505_4 -# 1506| r1506_1(glval) = VariableAddress[v] : -# 1506| r1506_2(glval) = VariableAddress[i] : -# 1506| r1506_3(int &) = Load[i] : &:r1506_2, ~m? -# 1506| r1506_4(int) = Load[?] : &:r1506_3, ~m? -# 1506| mu1506_5(int) = Store[v] : &:r1506_1, r1506_4 -# 1507| r1507_1(int) = Constant[5] : -# 1507| r1507_2(glval) = VariableAddress[r] : -# 1507| r1507_3(int &) = Load[r] : &:r1507_2, ~m? -# 1507| mu1507_4(int) = Store[?] : &:r1507_3, r1507_1 -# 1508| r1508_1(int) = Constant[6] : -# 1508| r1508_2(glval) = VariableAddress[p] : -# 1508| r1508_3(int *&) = Load[p] : &:r1508_2, ~m? -# 1508| r1508_4(int *) = Load[?] : &:r1508_3, ~m? -# 1508| r1508_5(glval) = CopyValue : r1508_4 -# 1508| mu1508_6(int) = Store[?] : &:r1508_5, r1508_1 -# 1509| r1509_1(glval) = VariableAddress[rr] : +# 1488| v1488_66(void) = ReturnVoid : +# 1488| v1488_67(void) = AliasedUse : ~m? +# 1488| v1488_68(void) = ExitFunction : + +# 1501| void data_member_structured_binding() +# 1501| Block 0 +# 1501| v1501_1(void) = EnterFunction : +# 1501| mu1501_2(unknown) = AliasedDefinition : +# 1501| mu1501_3(unknown) = InitializeNonLocal : +# 1502| r1502_1(glval) = VariableAddress[s] : +# 1502| mu1502_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1502_1 +# 1502| r1502_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : +# 1502| v1502_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1502_3, this:r1502_1 +# 1502| mu1502_5(unknown) = ^CallSideEffect : ~m? +# 1502| mu1502_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1502_1 +# 1505| r1505_1(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_2(glval) = VariableAddress[s] : +# 1505| r1505_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1505_2, ~m? +# 1505| mu1505_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1505_1, r1505_3 +# 1505| r1505_5(glval) = VariableAddress[i] : +# 1505| r1505_6(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_7(glval) = FieldAddress[i] : r1505_6 +# 1505| mu1505_8(int &) = Store[i] : &:r1505_5, r1505_7 +# 1505| r1505_9(glval) = VariableAddress[d] : +# 1505| r1505_10(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_11(glval) = FieldAddress[d] : r1505_10 +# 1505| mu1505_12(double &) = Store[d] : &:r1505_9, r1505_11 +# 1505| r1505_13(glval) = VariableAddress[b] : +# 1505| r1505_14(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_15(glval) = FieldAddress[b] : r1505_14 +# 1505| mu1505_16(unsigned int &) = Store[b] : &:r1505_13, r1505_15 +# 1505| r1505_17(glval) = VariableAddress[r] : +# 1505| r1505_18(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_19(glval) = FieldAddress[r] : r1505_18 +# 1505| r1505_20(int &) = Load[?] : &:r1505_19, ~m? +# 1505| r1505_21(glval) = CopyValue : r1505_20 +# 1505| mu1505_22(int &) = Store[r] : &:r1505_17, r1505_21 +# 1505| r1505_23(glval) = VariableAddress[p] : +# 1505| r1505_24(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_25(glval) = FieldAddress[p] : r1505_24 +# 1505| mu1505_26(int *&) = Store[p] : &:r1505_23, r1505_25 +# 1505| r1505_27(glval) = VariableAddress[xs] : +# 1505| r1505_28(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_29(glval) = FieldAddress[xs] : r1505_28 +# 1505| mu1505_30(int(&)[2]) = Store[xs] : &:r1505_27, r1505_29 +# 1505| r1505_31(glval) = VariableAddress[r_alt] : +# 1505| r1505_32(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_33(glval) = FieldAddress[r_alt] : r1505_32 +# 1505| r1505_34(int &) = Load[?] : &:r1505_33, ~m? +# 1505| r1505_35(glval) = CopyValue : r1505_34 +# 1505| mu1505_36(int &) = Store[r_alt] : &:r1505_31, r1505_35 +# 1505| r1505_37(glval) = VariableAddress[m] : +# 1505| r1505_38(glval) = VariableAddress[(unnamed local variable)] : +# 1505| r1505_39(glval) = FieldAddress[m] : r1505_38 +# 1505| mu1505_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1505_37, r1505_39 +# 1506| r1506_1(double) = Constant[4.0] : +# 1506| r1506_2(glval) = VariableAddress[d] : +# 1506| r1506_3(double &) = Load[d] : &:r1506_2, ~m? +# 1506| mu1506_4(double) = Store[?] : &:r1506_3, r1506_1 +# 1507| r1507_1(glval) = VariableAddress[rd] : +# 1507| r1507_2(glval) = VariableAddress[d] : +# 1507| r1507_3(double &) = Load[d] : &:r1507_2, ~m? +# 1507| r1507_4(double &) = CopyValue : r1507_3 +# 1507| mu1507_5(double &) = Store[rd] : &:r1507_1, r1507_4 +# 1508| r1508_1(glval) = VariableAddress[v] : +# 1508| r1508_2(glval) = VariableAddress[i] : +# 1508| r1508_3(int &) = Load[i] : &:r1508_2, ~m? +# 1508| r1508_4(int) = Load[?] : &:r1508_3, ~m? +# 1508| mu1508_5(int) = Store[v] : &:r1508_1, r1508_4 +# 1509| r1509_1(int) = Constant[5] : # 1509| r1509_2(glval) = VariableAddress[r] : # 1509| r1509_3(int &) = Load[r] : &:r1509_2, ~m? -# 1509| r1509_4(int &) = CopyValue : r1509_3 -# 1509| mu1509_5(int &) = Store[rr] : &:r1509_1, r1509_4 -# 1510| r1510_1(glval) = VariableAddress[pr] : -# 1510| r1510_2(glval) = VariableAddress[r] : -# 1510| r1510_3(int &) = Load[r] : &:r1510_2, ~m? -# 1510| r1510_4(int *) = CopyValue : r1510_3 -# 1510| mu1510_5(int *) = Store[pr] : &:r1510_1, r1510_4 -# 1511| r1511_1(glval) = VariableAddress[w] : +# 1509| mu1509_4(int) = Store[?] : &:r1509_3, r1509_1 +# 1510| r1510_1(int) = Constant[6] : +# 1510| r1510_2(glval) = VariableAddress[p] : +# 1510| r1510_3(int *&) = Load[p] : &:r1510_2, ~m? +# 1510| r1510_4(int *) = Load[?] : &:r1510_3, ~m? +# 1510| r1510_5(glval) = CopyValue : r1510_4 +# 1510| mu1510_6(int) = Store[?] : &:r1510_5, r1510_1 +# 1511| r1511_1(glval) = VariableAddress[rr] : # 1511| r1511_2(glval) = VariableAddress[r] : # 1511| r1511_3(int &) = Load[r] : &:r1511_2, ~m? -# 1511| r1511_4(int) = Load[?] : &:r1511_3, ~m? -# 1511| mu1511_5(int) = Store[w] : &:r1511_1, r1511_4 -# 1515| r1515_1(glval) = VariableAddress[unnamed_local_variable] : -# 1515| r1515_2(glval) = VariableAddress[s] : -# 1515| r1515_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1515_2, ~m? -# 1515| mu1515_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1515_1, r1515_3 -# 1516| r1516_1(glval) = VariableAddress[i] : -# 1516| r1516_2(glval) = VariableAddress[unnamed_local_variable] : -# 1516| r1516_3(glval) = FieldAddress[i] : r1516_2 -# 1516| r1516_4(int &) = CopyValue : r1516_3 -# 1516| mu1516_5(int &) = Store[i] : &:r1516_1, r1516_4 -# 1517| r1517_1(glval) = VariableAddress[d] : -# 1517| r1517_2(glval) = VariableAddress[unnamed_local_variable] : -# 1517| r1517_3(glval) = FieldAddress[d] : r1517_2 -# 1517| r1517_4(double &) = CopyValue : r1517_3 -# 1517| mu1517_5(double &) = Store[d] : &:r1517_1, r1517_4 -# 1519| r1519_1(glval) = VariableAddress[r] : +# 1511| r1511_4(int &) = CopyValue : r1511_3 +# 1511| mu1511_5(int &) = Store[rr] : &:r1511_1, r1511_4 +# 1512| r1512_1(glval) = VariableAddress[pr] : +# 1512| r1512_2(glval) = VariableAddress[r] : +# 1512| r1512_3(int &) = Load[r] : &:r1512_2, ~m? +# 1512| r1512_4(int *) = CopyValue : r1512_3 +# 1512| mu1512_5(int *) = Store[pr] : &:r1512_1, r1512_4 +# 1513| r1513_1(glval) = VariableAddress[w] : +# 1513| r1513_2(glval) = VariableAddress[r] : +# 1513| r1513_3(int &) = Load[r] : &:r1513_2, ~m? +# 1513| r1513_4(int) = Load[?] : &:r1513_3, ~m? +# 1513| mu1513_5(int) = Store[w] : &:r1513_1, r1513_4 +# 1517| r1517_1(glval) = VariableAddress[unnamed_local_variable] : +# 1517| r1517_2(glval) = VariableAddress[s] : +# 1517| r1517_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1517_2, ~m? +# 1517| mu1517_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1517_1, r1517_3 +# 1518| r1518_1(glval) = VariableAddress[i] : +# 1518| r1518_2(glval) = VariableAddress[unnamed_local_variable] : +# 1518| r1518_3(glval) = FieldAddress[i] : r1518_2 +# 1518| r1518_4(int &) = CopyValue : r1518_3 +# 1518| mu1518_5(int &) = Store[i] : &:r1518_1, r1518_4 +# 1519| r1519_1(glval) = VariableAddress[d] : # 1519| r1519_2(glval) = VariableAddress[unnamed_local_variable] : -# 1519| r1519_3(glval) = FieldAddress[r] : r1519_2 -# 1519| r1519_4(int &) = Load[?] : &:r1519_3, ~m? -# 1519| r1519_5(glval) = CopyValue : r1519_4 -# 1519| r1519_6(int &) = CopyValue : r1519_5 -# 1519| mu1519_7(int &) = Store[r] : &:r1519_1, r1519_6 -# 1520| r1520_1(glval) = VariableAddress[p] : -# 1520| r1520_2(glval) = VariableAddress[unnamed_local_variable] : -# 1520| r1520_3(glval) = FieldAddress[p] : r1520_2 -# 1520| r1520_4(int *&) = CopyValue : r1520_3 -# 1520| mu1520_5(int *&) = Store[p] : &:r1520_1, r1520_4 -# 1521| r1521_1(double) = Constant[4.0] : -# 1521| r1521_2(glval) = VariableAddress[d] : -# 1521| r1521_3(double &) = Load[d] : &:r1521_2, ~m? -# 1521| r1521_4(glval) = CopyValue : r1521_3 -# 1521| mu1521_5(double) = Store[?] : &:r1521_4, r1521_1 -# 1522| r1522_1(glval) = VariableAddress[rd] : -# 1522| r1522_2(glval) = VariableAddress[d] : -# 1522| r1522_3(double &) = Load[d] : &:r1522_2, ~m? -# 1522| r1522_4(glval) = CopyValue : r1522_3 -# 1522| r1522_5(double &) = CopyValue : r1522_4 -# 1522| mu1522_6(double &) = Store[rd] : &:r1522_1, r1522_5 -# 1523| r1523_1(glval) = VariableAddress[v] : -# 1523| r1523_2(glval) = VariableAddress[i] : -# 1523| r1523_3(int &) = Load[i] : &:r1523_2, ~m? -# 1523| r1523_4(int) = Load[?] : &:r1523_3, ~m? -# 1523| mu1523_5(int) = Store[v] : &:r1523_1, r1523_4 -# 1524| r1524_1(int) = Constant[5] : -# 1524| r1524_2(glval) = VariableAddress[r] : -# 1524| r1524_3(int &) = Load[r] : &:r1524_2, ~m? -# 1524| r1524_4(glval) = CopyValue : r1524_3 -# 1524| mu1524_5(int) = Store[?] : &:r1524_4, r1524_1 -# 1525| r1525_1(int) = Constant[6] : -# 1525| r1525_2(glval) = VariableAddress[p] : -# 1525| r1525_3(int *&) = Load[p] : &:r1525_2, ~m? -# 1525| r1525_4(int *) = Load[?] : &:r1525_3, ~m? -# 1525| r1525_5(glval) = CopyValue : r1525_4 -# 1525| mu1525_6(int) = Store[?] : &:r1525_5, r1525_1 -# 1526| r1526_1(glval) = VariableAddress[rr] : +# 1519| r1519_3(glval) = FieldAddress[d] : r1519_2 +# 1519| r1519_4(double &) = CopyValue : r1519_3 +# 1519| mu1519_5(double &) = Store[d] : &:r1519_1, r1519_4 +# 1521| r1521_1(glval) = VariableAddress[r] : +# 1521| r1521_2(glval) = VariableAddress[unnamed_local_variable] : +# 1521| r1521_3(glval) = FieldAddress[r] : r1521_2 +# 1521| r1521_4(int &) = Load[?] : &:r1521_3, ~m? +# 1521| r1521_5(glval) = CopyValue : r1521_4 +# 1521| r1521_6(int &) = CopyValue : r1521_5 +# 1521| mu1521_7(int &) = Store[r] : &:r1521_1, r1521_6 +# 1522| r1522_1(glval) = VariableAddress[p] : +# 1522| r1522_2(glval) = VariableAddress[unnamed_local_variable] : +# 1522| r1522_3(glval) = FieldAddress[p] : r1522_2 +# 1522| r1522_4(int *&) = CopyValue : r1522_3 +# 1522| mu1522_5(int *&) = Store[p] : &:r1522_1, r1522_4 +# 1523| r1523_1(double) = Constant[4.0] : +# 1523| r1523_2(glval) = VariableAddress[d] : +# 1523| r1523_3(double &) = Load[d] : &:r1523_2, ~m? +# 1523| r1523_4(glval) = CopyValue : r1523_3 +# 1523| mu1523_5(double) = Store[?] : &:r1523_4, r1523_1 +# 1524| r1524_1(glval) = VariableAddress[rd] : +# 1524| r1524_2(glval) = VariableAddress[d] : +# 1524| r1524_3(double &) = Load[d] : &:r1524_2, ~m? +# 1524| r1524_4(glval) = CopyValue : r1524_3 +# 1524| r1524_5(double &) = CopyValue : r1524_4 +# 1524| mu1524_6(double &) = Store[rd] : &:r1524_1, r1524_5 +# 1525| r1525_1(glval) = VariableAddress[v] : +# 1525| r1525_2(glval) = VariableAddress[i] : +# 1525| r1525_3(int &) = Load[i] : &:r1525_2, ~m? +# 1525| r1525_4(int) = Load[?] : &:r1525_3, ~m? +# 1525| mu1525_5(int) = Store[v] : &:r1525_1, r1525_4 +# 1526| r1526_1(int) = Constant[5] : # 1526| r1526_2(glval) = VariableAddress[r] : # 1526| r1526_3(int &) = Load[r] : &:r1526_2, ~m? # 1526| r1526_4(glval) = CopyValue : r1526_3 -# 1526| r1526_5(int &) = CopyValue : r1526_4 -# 1526| mu1526_6(int &) = Store[rr] : &:r1526_1, r1526_5 -# 1527| r1527_1(glval) = VariableAddress[pr] : -# 1527| r1527_2(glval) = VariableAddress[r] : -# 1527| r1527_3(int &) = Load[r] : &:r1527_2, ~m? -# 1527| r1527_4(glval) = CopyValue : r1527_3 -# 1527| r1527_5(int *) = CopyValue : r1527_4 -# 1527| mu1527_6(int *) = Store[pr] : &:r1527_1, r1527_5 -# 1528| r1528_1(glval) = VariableAddress[w] : +# 1526| mu1526_5(int) = Store[?] : &:r1526_4, r1526_1 +# 1527| r1527_1(int) = Constant[6] : +# 1527| r1527_2(glval) = VariableAddress[p] : +# 1527| r1527_3(int *&) = Load[p] : &:r1527_2, ~m? +# 1527| r1527_4(int *) = Load[?] : &:r1527_3, ~m? +# 1527| r1527_5(glval) = CopyValue : r1527_4 +# 1527| mu1527_6(int) = Store[?] : &:r1527_5, r1527_1 +# 1528| r1528_1(glval) = VariableAddress[rr] : # 1528| r1528_2(glval) = VariableAddress[r] : # 1528| r1528_3(int &) = Load[r] : &:r1528_2, ~m? -# 1528| r1528_4(int) = Load[?] : &:r1528_3, ~m? -# 1528| mu1528_5(int) = Store[w] : &:r1528_1, r1528_4 -# 1530| v1530_1(void) = NoOp : -# 1499| v1499_4(void) = ReturnVoid : -# 1499| v1499_5(void) = AliasedUse : ~m? -# 1499| v1499_6(void) = ExitFunction : - -# 1539| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1539| Block 0 -# 1539| v1539_1(void) = EnterFunction : -# 1539| mu1539_2(unknown) = AliasedDefinition : -# 1539| mu1539_3(unknown) = InitializeNonLocal : -# 1539| r1539_4(glval) = VariableAddress[#this] : -# 1539| mu1539_5(glval) = InitializeParameter[#this] : &:r1539_4 -# 1539| r1539_6(glval) = Load[#this] : &:r1539_4, ~m? -# 1539| mu1539_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1539_6 -# 1539| v1539_8(void) = NoOp : -# 1539| v1539_9(void) = ReturnIndirection[#this] : &:r1539_6, ~m? -# 1539| v1539_10(void) = ReturnVoid : -# 1539| v1539_11(void) = AliasedUse : ~m? -# 1539| v1539_12(void) = ExitFunction : - -# 1539| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1539| Block 0 -# 1539| v1539_1(void) = EnterFunction : -# 1539| mu1539_2(unknown) = AliasedDefinition : -# 1539| mu1539_3(unknown) = InitializeNonLocal : -# 1539| r1539_4(glval) = VariableAddress[#this] : -# 1539| mu1539_5(glval) = InitializeParameter[#this] : &:r1539_4 -# 1539| r1539_6(glval) = Load[#this] : &:r1539_4, ~m? -# 1539| mu1539_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1539_6 +# 1528| r1528_4(glval) = CopyValue : r1528_3 +# 1528| r1528_5(int &) = CopyValue : r1528_4 +# 1528| mu1528_6(int &) = Store[rr] : &:r1528_1, r1528_5 +# 1529| r1529_1(glval) = VariableAddress[pr] : +# 1529| r1529_2(glval) = VariableAddress[r] : +# 1529| r1529_3(int &) = Load[r] : &:r1529_2, ~m? +# 1529| r1529_4(glval) = CopyValue : r1529_3 +# 1529| r1529_5(int *) = CopyValue : r1529_4 +# 1529| mu1529_6(int *) = Store[pr] : &:r1529_1, r1529_5 +# 1530| r1530_1(glval) = VariableAddress[w] : +# 1530| r1530_2(glval) = VariableAddress[r] : +# 1530| r1530_3(int &) = Load[r] : &:r1530_2, ~m? +# 1530| r1530_4(int) = Load[?] : &:r1530_3, ~m? +# 1530| mu1530_5(int) = Store[w] : &:r1530_1, r1530_4 +# 1532| v1532_1(void) = NoOp : +# 1501| v1501_4(void) = ReturnVoid : +# 1501| v1501_5(void) = AliasedUse : ~m? +# 1501| v1501_6(void) = ExitFunction : + +# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1541| Block 0 +# 1541| v1541_1(void) = EnterFunction : +# 1541| mu1541_2(unknown) = AliasedDefinition : +# 1541| mu1541_3(unknown) = InitializeNonLocal : +# 1541| r1541_4(glval) = VariableAddress[#this] : +# 1541| mu1541_5(glval) = InitializeParameter[#this] : &:r1541_4 +# 1541| r1541_6(glval) = Load[#this] : &:r1541_4, ~m? +# 1541| mu1541_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_6 +# 1541| v1541_8(void) = NoOp : +# 1541| v1541_9(void) = ReturnIndirection[#this] : &:r1541_6, ~m? +# 1541| v1541_10(void) = ReturnVoid : +# 1541| v1541_11(void) = AliasedUse : ~m? +# 1541| v1541_12(void) = ExitFunction : + +# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1541| Block 0 +# 1541| v1541_1(void) = EnterFunction : +# 1541| mu1541_2(unknown) = AliasedDefinition : +# 1541| mu1541_3(unknown) = InitializeNonLocal : +# 1541| r1541_4(glval) = VariableAddress[#this] : +# 1541| mu1541_5(glval) = InitializeParameter[#this] : &:r1541_4 +# 1541| r1541_6(glval) = Load[#this] : &:r1541_4, ~m? +# 1541| mu1541_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(StructuredBindingTupleRefGet &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1539| r1539_8(glval) = FieldAddress[i] : mu1539_5 -# 1539| r1539_9(glval) = VariableAddress[(unnamed parameter 0)] : -# 1539| r1539_10(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1539_9, ~m? -# 1539| r1539_11(glval) = CopyValue : r1539_10 -# 1539| r1539_12(glval) = FieldAddress[i] : r1539_11 -# 1539| r1539_13(int) = Load[?] : &:r1539_12, ~m? -# 1539| mu1539_14(int) = Store[?] : &:r1539_8, r1539_13 -# 1539| r1539_15(glval) = FieldAddress[d] : mu1539_5 -# 1539| r1539_16(glval) = VariableAddress[(unnamed parameter 0)] : -# 1539| r1539_17(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1539_16, ~m? -# 1539| r1539_18(glval) = CopyValue : r1539_17 -# 1539| r1539_19(glval) = FieldAddress[d] : r1539_18 -# 1539| r1539_20(double) = Load[?] : &:r1539_19, ~m? -# 1539| mu1539_21(double) = Store[?] : &:r1539_15, r1539_20 -# 1539| r1539_22(glval) = FieldAddress[r] : mu1539_5 -# 1539| r1539_23(glval) = VariableAddress[(unnamed parameter 0)] : -# 1539| r1539_24(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1539_23, ~m? -# 1539| r1539_25(glval) = CopyValue : r1539_24 -# 1539| r1539_26(glval) = FieldAddress[r] : r1539_25 -# 1539| r1539_27(int &) = Load[?] : &:r1539_26, ~m? -# 1539| mu1539_28(int &) = Store[?] : &:r1539_22, r1539_27 -# 1539| v1539_29(void) = NoOp : -# 1539| v1539_30(void) = ReturnIndirection[#this] : &:r1539_6, ~m? +# 1541| r1541_8(glval) = FieldAddress[i] : mu1541_5 +# 1541| r1541_9(glval) = VariableAddress[(unnamed parameter 0)] : +# 1541| r1541_10(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_9, ~m? +# 1541| r1541_11(glval) = CopyValue : r1541_10 +# 1541| r1541_12(glval) = FieldAddress[i] : r1541_11 +# 1541| r1541_13(int) = Load[?] : &:r1541_12, ~m? +# 1541| mu1541_14(int) = Store[?] : &:r1541_8, r1541_13 +# 1541| r1541_15(glval) = FieldAddress[d] : mu1541_5 +# 1541| r1541_16(glval) = VariableAddress[(unnamed parameter 0)] : +# 1541| r1541_17(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_16, ~m? +# 1541| r1541_18(glval) = CopyValue : r1541_17 +# 1541| r1541_19(glval) = FieldAddress[d] : r1541_18 +# 1541| r1541_20(double) = Load[?] : &:r1541_19, ~m? +# 1541| mu1541_21(double) = Store[?] : &:r1541_15, r1541_20 +# 1541| r1541_22(glval) = FieldAddress[r] : mu1541_5 +# 1541| r1541_23(glval) = VariableAddress[(unnamed parameter 0)] : +# 1541| r1541_24(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_23, ~m? +# 1541| r1541_25(glval) = CopyValue : r1541_24 +# 1541| r1541_26(glval) = FieldAddress[r] : r1541_25 +# 1541| r1541_27(int &) = Load[?] : &:r1541_26, ~m? +# 1541| mu1541_28(int &) = Store[?] : &:r1541_22, r1541_27 +# 1541| v1541_29(void) = NoOp : +# 1541| v1541_30(void) = ReturnIndirection[#this] : &:r1541_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1539| v1539_31(void) = ReturnVoid : -# 1539| v1539_32(void) = AliasedUse : ~m? -# 1539| v1539_33(void) = ExitFunction : - -# 1567| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1567| Block 0 -# 1567| v1567_1(void) = EnterFunction : -# 1567| mu1567_2(unknown) = AliasedDefinition : -# 1567| mu1567_3(unknown) = InitializeNonLocal : -# 1567| r1567_4(glval) = VariableAddress[#this] : -# 1567| mu1567_5(glval) = InitializeParameter[#this] : &:r1567_4 -# 1567| r1567_6(glval) = Load[#this] : &:r1567_4, ~m? -# 1567| mu1567_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1567_6 -# 1568| r1568_1(glval) = VariableAddress[#return] : -# 1568| r1568_2(glval) = VariableAddress[#this] : -# 1568| r1568_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1568_2, ~m? -# 1568| r1568_4(glval) = FieldAddress[i] : r1568_3 -#-----| r0_1(int &) = CopyValue : r1568_4 -#-----| mu0_2(int &) = Store[#return] : &:r1568_1, r0_1 -# 1567| v1567_8(void) = ReturnIndirection[#this] : &:r1567_6, ~m? -# 1567| r1567_9(glval) = VariableAddress[#return] : -# 1567| v1567_10(void) = ReturnValue : &:r1567_9, ~m? -# 1567| v1567_11(void) = AliasedUse : ~m? -# 1567| v1567_12(void) = ExitFunction : - -# 1571| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1571| Block 0 -# 1571| v1571_1(void) = EnterFunction : -# 1571| mu1571_2(unknown) = AliasedDefinition : -# 1571| mu1571_3(unknown) = InitializeNonLocal : -# 1571| r1571_4(glval) = VariableAddress[#this] : -# 1571| mu1571_5(glval) = InitializeParameter[#this] : &:r1571_4 -# 1571| r1571_6(glval) = Load[#this] : &:r1571_4, ~m? -# 1571| mu1571_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1571_6 -# 1572| r1572_1(glval) = VariableAddress[#return] : -# 1572| r1572_2(glval) = VariableAddress[#this] : -# 1572| r1572_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1572_2, ~m? -# 1572| r1572_4(glval) = FieldAddress[d] : r1572_3 -#-----| r0_1(double &) = CopyValue : r1572_4 -#-----| mu0_2(double &) = Store[#return] : &:r1572_1, r0_1 -# 1571| v1571_8(void) = ReturnIndirection[#this] : &:r1571_6, ~m? -# 1571| r1571_9(glval) = VariableAddress[#return] : -# 1571| v1571_10(void) = ReturnValue : &:r1571_9, ~m? -# 1571| v1571_11(void) = AliasedUse : ~m? -# 1571| v1571_12(void) = ExitFunction : - -# 1575| std::tuple_element::type StructuredBindingTupleRefGet::get() -# 1575| Block 0 -# 1575| v1575_1(void) = EnterFunction : -# 1575| mu1575_2(unknown) = AliasedDefinition : -# 1575| mu1575_3(unknown) = InitializeNonLocal : -# 1575| r1575_4(glval) = VariableAddress[#this] : -# 1575| mu1575_5(glval) = InitializeParameter[#this] : &:r1575_4 -# 1575| r1575_6(glval) = Load[#this] : &:r1575_4, ~m? -# 1575| mu1575_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1575_6 -# 1576| r1576_1(glval) = VariableAddress[#return] : -# 1576| r1576_2(glval) = VariableAddress[#this] : -# 1576| r1576_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1576_2, ~m? -# 1576| r1576_4(glval) = FieldAddress[r] : r1576_3 -# 1576| r1576_5(int &) = Load[?] : &:r1576_4, ~m? -# 1576| r1576_6(glval) = CopyValue : r1576_5 -# 1576| r1576_7(int &) = CopyValue : r1576_6 -# 1576| mu1576_8(int &) = Store[#return] : &:r1576_1, r1576_7 -# 1575| v1575_8(void) = ReturnIndirection[#this] : &:r1575_6, ~m? -# 1575| r1575_9(glval) = VariableAddress[#return] : -# 1575| v1575_10(void) = ReturnValue : &:r1575_9, ~m? -# 1575| v1575_11(void) = AliasedUse : ~m? -# 1575| v1575_12(void) = ExitFunction : - -# 1579| void tuple_structured_binding_ref_get() -# 1579| Block 0 -# 1579| v1579_1(void) = EnterFunction : -# 1579| mu1579_2(unknown) = AliasedDefinition : -# 1579| mu1579_3(unknown) = InitializeNonLocal : -# 1580| r1580_1(glval) = VariableAddress[t] : -# 1580| mu1580_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1580_1 -# 1580| r1580_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : -# 1580| v1580_4(void) = Call[StructuredBindingTupleRefGet] : func:r1580_3, this:r1580_1 -# 1580| mu1580_5(unknown) = ^CallSideEffect : ~m? -# 1580| mu1580_6(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1580_1 -# 1583| r1583_1(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_2(glval) = VariableAddress[t] : -# 1583| r1583_3(StructuredBindingTupleRefGet) = Load[t] : &:r1583_2, ~m? -# 1583| mu1583_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1583_1, r1583_3 -# 1583| r1583_5(glval) = VariableAddress[i] : -# 1583| r1583_6(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_7(glval) = FunctionAddress[get] : -# 1583| r1583_8(int &) = Call[get] : func:r1583_7, this:r1583_6 -# 1583| mu1583_9(unknown) = ^CallSideEffect : ~m? -# 1583| v1583_10(void) = ^IndirectReadSideEffect[-1] : &:r1583_6, ~m? -# 1583| mu1583_11(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1583_6 -# 1583| r1583_12(glval) = CopyValue : r1583_8 -# 1583| r1583_13(int &) = CopyValue : r1583_12 -# 1583| mu1583_14(int &) = Store[i] : &:r1583_5, r1583_13 -# 1583| r1583_15(glval) = VariableAddress[d] : -# 1583| r1583_16(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_17(glval) = FunctionAddress[get] : -# 1583| r1583_18(double &) = Call[get] : func:r1583_17, this:r1583_16 -# 1583| mu1583_19(unknown) = ^CallSideEffect : ~m? -# 1583| v1583_20(void) = ^IndirectReadSideEffect[-1] : &:r1583_16, ~m? -# 1583| mu1583_21(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1583_16 -# 1583| r1583_22(glval) = CopyValue : r1583_18 -# 1583| r1583_23(double &) = CopyValue : r1583_22 -# 1583| mu1583_24(double &) = Store[d] : &:r1583_15, r1583_23 -# 1583| r1583_25(glval) = VariableAddress[r] : -# 1583| r1583_26(glval) = VariableAddress[(unnamed local variable)] : -# 1583| r1583_27(glval) = FunctionAddress[get] : -# 1583| r1583_28(int &) = Call[get] : func:r1583_27, this:r1583_26 -# 1583| mu1583_29(unknown) = ^CallSideEffect : ~m? -# 1583| v1583_30(void) = ^IndirectReadSideEffect[-1] : &:r1583_26, ~m? -# 1583| mu1583_31(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1583_26 -# 1583| r1583_32(glval) = CopyValue : r1583_28 -# 1583| r1583_33(int &) = CopyValue : r1583_32 -# 1583| mu1583_34(int &) = Store[r] : &:r1583_25, r1583_33 -# 1584| r1584_1(double) = Constant[4.0] : -# 1584| r1584_2(glval) = VariableAddress[d] : -# 1584| r1584_3(double &) = Load[d] : &:r1584_2, ~m? -# 1584| r1584_4(glval) = CopyValue : r1584_3 -# 1584| mu1584_5(double) = Store[?] : &:r1584_4, r1584_1 -# 1585| r1585_1(glval) = VariableAddress[rd] : -# 1585| r1585_2(glval) = VariableAddress[d] : -# 1585| r1585_3(double &) = Load[d] : &:r1585_2, ~m? -# 1585| r1585_4(glval) = CopyValue : r1585_3 -# 1585| r1585_5(double &) = CopyValue : r1585_4 -# 1585| mu1585_6(double &) = Store[rd] : &:r1585_1, r1585_5 -# 1586| r1586_1(glval) = VariableAddress[v] : -# 1586| r1586_2(glval) = VariableAddress[i] : -# 1586| r1586_3(int &) = Load[i] : &:r1586_2, ~m? -# 1586| r1586_4(int) = Load[?] : &:r1586_3, ~m? -# 1586| mu1586_5(int) = Store[v] : &:r1586_1, r1586_4 -# 1587| r1587_1(int) = Constant[5] : -# 1587| r1587_2(glval) = VariableAddress[r] : -# 1587| r1587_3(int &) = Load[r] : &:r1587_2, ~m? -# 1587| r1587_4(glval) = CopyValue : r1587_3 -# 1587| mu1587_5(int) = Store[?] : &:r1587_4, r1587_1 -# 1588| r1588_1(glval) = VariableAddress[rr] : -# 1588| r1588_2(glval) = VariableAddress[r] : -# 1588| r1588_3(int &) = Load[r] : &:r1588_2, ~m? -# 1588| r1588_4(glval) = CopyValue : r1588_3 -# 1588| r1588_5(int &) = CopyValue : r1588_4 -# 1588| mu1588_6(int &) = Store[rr] : &:r1588_1, r1588_5 -# 1589| r1589_1(glval) = VariableAddress[w] : +# 1541| v1541_31(void) = ReturnVoid : +# 1541| v1541_32(void) = AliasedUse : ~m? +# 1541| v1541_33(void) = ExitFunction : + +# 1569| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1569| Block 0 +# 1569| v1569_1(void) = EnterFunction : +# 1569| mu1569_2(unknown) = AliasedDefinition : +# 1569| mu1569_3(unknown) = InitializeNonLocal : +# 1569| r1569_4(glval) = VariableAddress[#this] : +# 1569| mu1569_5(glval) = InitializeParameter[#this] : &:r1569_4 +# 1569| r1569_6(glval) = Load[#this] : &:r1569_4, ~m? +# 1569| mu1569_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1569_6 +# 1570| r1570_1(glval) = VariableAddress[#return] : +# 1570| r1570_2(glval) = VariableAddress[#this] : +# 1570| r1570_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1570_2, ~m? +# 1570| r1570_4(glval) = FieldAddress[i] : r1570_3 +#-----| r0_1(int &) = CopyValue : r1570_4 +#-----| mu0_2(int &) = Store[#return] : &:r1570_1, r0_1 +# 1569| v1569_8(void) = ReturnIndirection[#this] : &:r1569_6, ~m? +# 1569| r1569_9(glval) = VariableAddress[#return] : +# 1569| v1569_10(void) = ReturnValue : &:r1569_9, ~m? +# 1569| v1569_11(void) = AliasedUse : ~m? +# 1569| v1569_12(void) = ExitFunction : + +# 1573| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1573| Block 0 +# 1573| v1573_1(void) = EnterFunction : +# 1573| mu1573_2(unknown) = AliasedDefinition : +# 1573| mu1573_3(unknown) = InitializeNonLocal : +# 1573| r1573_4(glval) = VariableAddress[#this] : +# 1573| mu1573_5(glval) = InitializeParameter[#this] : &:r1573_4 +# 1573| r1573_6(glval) = Load[#this] : &:r1573_4, ~m? +# 1573| mu1573_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1573_6 +# 1574| r1574_1(glval) = VariableAddress[#return] : +# 1574| r1574_2(glval) = VariableAddress[#this] : +# 1574| r1574_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1574_2, ~m? +# 1574| r1574_4(glval) = FieldAddress[d] : r1574_3 +#-----| r0_1(double &) = CopyValue : r1574_4 +#-----| mu0_2(double &) = Store[#return] : &:r1574_1, r0_1 +# 1573| v1573_8(void) = ReturnIndirection[#this] : &:r1573_6, ~m? +# 1573| r1573_9(glval) = VariableAddress[#return] : +# 1573| v1573_10(void) = ReturnValue : &:r1573_9, ~m? +# 1573| v1573_11(void) = AliasedUse : ~m? +# 1573| v1573_12(void) = ExitFunction : + +# 1577| std::tuple_element::type StructuredBindingTupleRefGet::get() +# 1577| Block 0 +# 1577| v1577_1(void) = EnterFunction : +# 1577| mu1577_2(unknown) = AliasedDefinition : +# 1577| mu1577_3(unknown) = InitializeNonLocal : +# 1577| r1577_4(glval) = VariableAddress[#this] : +# 1577| mu1577_5(glval) = InitializeParameter[#this] : &:r1577_4 +# 1577| r1577_6(glval) = Load[#this] : &:r1577_4, ~m? +# 1577| mu1577_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1577_6 +# 1578| r1578_1(glval) = VariableAddress[#return] : +# 1578| r1578_2(glval) = VariableAddress[#this] : +# 1578| r1578_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1578_2, ~m? +# 1578| r1578_4(glval) = FieldAddress[r] : r1578_3 +# 1578| r1578_5(int &) = Load[?] : &:r1578_4, ~m? +# 1578| r1578_6(glval) = CopyValue : r1578_5 +# 1578| r1578_7(int &) = CopyValue : r1578_6 +# 1578| mu1578_8(int &) = Store[#return] : &:r1578_1, r1578_7 +# 1577| v1577_8(void) = ReturnIndirection[#this] : &:r1577_6, ~m? +# 1577| r1577_9(glval) = VariableAddress[#return] : +# 1577| v1577_10(void) = ReturnValue : &:r1577_9, ~m? +# 1577| v1577_11(void) = AliasedUse : ~m? +# 1577| v1577_12(void) = ExitFunction : + +# 1581| void tuple_structured_binding_ref_get() +# 1581| Block 0 +# 1581| v1581_1(void) = EnterFunction : +# 1581| mu1581_2(unknown) = AliasedDefinition : +# 1581| mu1581_3(unknown) = InitializeNonLocal : +# 1582| r1582_1(glval) = VariableAddress[t] : +# 1582| mu1582_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1582_1 +# 1582| r1582_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : +# 1582| v1582_4(void) = Call[StructuredBindingTupleRefGet] : func:r1582_3, this:r1582_1 +# 1582| mu1582_5(unknown) = ^CallSideEffect : ~m? +# 1582| mu1582_6(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1582_1 +# 1585| r1585_1(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_2(glval) = VariableAddress[t] : +# 1585| r1585_3(StructuredBindingTupleRefGet) = Load[t] : &:r1585_2, ~m? +# 1585| mu1585_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1585_1, r1585_3 +# 1585| r1585_5(glval) = VariableAddress[i] : +# 1585| r1585_6(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_7(glval) = FunctionAddress[get] : +# 1585| r1585_8(int &) = Call[get] : func:r1585_7, this:r1585_6 +# 1585| mu1585_9(unknown) = ^CallSideEffect : ~m? +# 1585| v1585_10(void) = ^IndirectReadSideEffect[-1] : &:r1585_6, ~m? +# 1585| mu1585_11(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_6 +# 1585| r1585_12(glval) = CopyValue : r1585_8 +# 1585| r1585_13(int &) = CopyValue : r1585_12 +# 1585| mu1585_14(int &) = Store[i] : &:r1585_5, r1585_13 +# 1585| r1585_15(glval) = VariableAddress[d] : +# 1585| r1585_16(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_17(glval) = FunctionAddress[get] : +# 1585| r1585_18(double &) = Call[get] : func:r1585_17, this:r1585_16 +# 1585| mu1585_19(unknown) = ^CallSideEffect : ~m? +# 1585| v1585_20(void) = ^IndirectReadSideEffect[-1] : &:r1585_16, ~m? +# 1585| mu1585_21(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_16 +# 1585| r1585_22(glval) = CopyValue : r1585_18 +# 1585| r1585_23(double &) = CopyValue : r1585_22 +# 1585| mu1585_24(double &) = Store[d] : &:r1585_15, r1585_23 +# 1585| r1585_25(glval) = VariableAddress[r] : +# 1585| r1585_26(glval) = VariableAddress[(unnamed local variable)] : +# 1585| r1585_27(glval) = FunctionAddress[get] : +# 1585| r1585_28(int &) = Call[get] : func:r1585_27, this:r1585_26 +# 1585| mu1585_29(unknown) = ^CallSideEffect : ~m? +# 1585| v1585_30(void) = ^IndirectReadSideEffect[-1] : &:r1585_26, ~m? +# 1585| mu1585_31(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_26 +# 1585| r1585_32(glval) = CopyValue : r1585_28 +# 1585| r1585_33(int &) = CopyValue : r1585_32 +# 1585| mu1585_34(int &) = Store[r] : &:r1585_25, r1585_33 +# 1586| r1586_1(double) = Constant[4.0] : +# 1586| r1586_2(glval) = VariableAddress[d] : +# 1586| r1586_3(double &) = Load[d] : &:r1586_2, ~m? +# 1586| r1586_4(glval) = CopyValue : r1586_3 +# 1586| mu1586_5(double) = Store[?] : &:r1586_4, r1586_1 +# 1587| r1587_1(glval) = VariableAddress[rd] : +# 1587| r1587_2(glval) = VariableAddress[d] : +# 1587| r1587_3(double &) = Load[d] : &:r1587_2, ~m? +# 1587| r1587_4(glval) = CopyValue : r1587_3 +# 1587| r1587_5(double &) = CopyValue : r1587_4 +# 1587| mu1587_6(double &) = Store[rd] : &:r1587_1, r1587_5 +# 1588| r1588_1(glval) = VariableAddress[v] : +# 1588| r1588_2(glval) = VariableAddress[i] : +# 1588| r1588_3(int &) = Load[i] : &:r1588_2, ~m? +# 1588| r1588_4(int) = Load[?] : &:r1588_3, ~m? +# 1588| mu1588_5(int) = Store[v] : &:r1588_1, r1588_4 +# 1589| r1589_1(int) = Constant[5] : # 1589| r1589_2(glval) = VariableAddress[r] : # 1589| r1589_3(int &) = Load[r] : &:r1589_2, ~m? -# 1589| r1589_4(int) = Load[?] : &:r1589_3, ~m? -# 1589| mu1589_5(int) = Store[w] : &:r1589_1, r1589_4 -# 1593| r1593_1(glval) = VariableAddress[unnamed_local_variable] : -# 1593| r1593_2(glval) = VariableAddress[t] : -# 1593| r1593_3(StructuredBindingTupleRefGet) = Load[t] : &:r1593_2, ~m? -# 1593| mu1593_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1593_1, r1593_3 -# 1594| r1594_1(glval) = VariableAddress[i] : -# 1594| r1594_2(glval) = VariableAddress[unnamed_local_variable] : -# 1594| r1594_3(glval) = FunctionAddress[get] : -# 1594| r1594_4(int &) = Call[get] : func:r1594_3, this:r1594_2 -# 1594| mu1594_5(unknown) = ^CallSideEffect : ~m? -# 1594| v1594_6(void) = ^IndirectReadSideEffect[-1] : &:r1594_2, ~m? -# 1594| mu1594_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1594_2 -# 1594| r1594_8(glval) = CopyValue : r1594_4 -# 1594| r1594_9(int &) = CopyValue : r1594_8 -# 1594| mu1594_10(int &) = Store[i] : &:r1594_1, r1594_9 -# 1595| r1595_1(glval) = VariableAddress[d] : -# 1595| r1595_2(glval) = VariableAddress[unnamed_local_variable] : -# 1595| r1595_3(glval) = FunctionAddress[get] : -# 1595| r1595_4(double &) = Call[get] : func:r1595_3, this:r1595_2 -# 1595| mu1595_5(unknown) = ^CallSideEffect : ~m? -# 1595| v1595_6(void) = ^IndirectReadSideEffect[-1] : &:r1595_2, ~m? -# 1595| mu1595_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1595_2 -# 1595| r1595_8(glval) = CopyValue : r1595_4 -# 1595| r1595_9(double &) = CopyValue : r1595_8 -# 1595| mu1595_10(double &) = Store[d] : &:r1595_1, r1595_9 -# 1596| r1596_1(glval) = VariableAddress[r] : +# 1589| r1589_4(glval) = CopyValue : r1589_3 +# 1589| mu1589_5(int) = Store[?] : &:r1589_4, r1589_1 +# 1590| r1590_1(glval) = VariableAddress[rr] : +# 1590| r1590_2(glval) = VariableAddress[r] : +# 1590| r1590_3(int &) = Load[r] : &:r1590_2, ~m? +# 1590| r1590_4(glval) = CopyValue : r1590_3 +# 1590| r1590_5(int &) = CopyValue : r1590_4 +# 1590| mu1590_6(int &) = Store[rr] : &:r1590_1, r1590_5 +# 1591| r1591_1(glval) = VariableAddress[w] : +# 1591| r1591_2(glval) = VariableAddress[r] : +# 1591| r1591_3(int &) = Load[r] : &:r1591_2, ~m? +# 1591| r1591_4(int) = Load[?] : &:r1591_3, ~m? +# 1591| mu1591_5(int) = Store[w] : &:r1591_1, r1591_4 +# 1595| r1595_1(glval) = VariableAddress[unnamed_local_variable] : +# 1595| r1595_2(glval) = VariableAddress[t] : +# 1595| r1595_3(StructuredBindingTupleRefGet) = Load[t] : &:r1595_2, ~m? +# 1595| mu1595_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1595_1, r1595_3 +# 1596| r1596_1(glval) = VariableAddress[i] : # 1596| r1596_2(glval) = VariableAddress[unnamed_local_variable] : # 1596| r1596_3(glval) = FunctionAddress[get] : # 1596| r1596_4(int &) = Call[get] : func:r1596_3, this:r1596_2 @@ -8778,1219 +8758,1225 @@ ir.cpp: # 1596| mu1596_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1596_2 # 1596| r1596_8(glval) = CopyValue : r1596_4 # 1596| r1596_9(int &) = CopyValue : r1596_8 -# 1596| mu1596_10(int &) = Store[r] : &:r1596_1, r1596_9 -# 1597| r1597_1(double) = Constant[4.0] : -# 1597| r1597_2(glval) = VariableAddress[d] : -# 1597| r1597_3(double &) = Load[d] : &:r1597_2, ~m? -# 1597| r1597_4(glval) = CopyValue : r1597_3 -# 1597| mu1597_5(double) = Store[?] : &:r1597_4, r1597_1 -# 1598| r1598_1(glval) = VariableAddress[rd] : -# 1598| r1598_2(glval) = VariableAddress[d] : -# 1598| r1598_3(double &) = Load[d] : &:r1598_2, ~m? -# 1598| r1598_4(glval) = CopyValue : r1598_3 -# 1598| r1598_5(double &) = CopyValue : r1598_4 -# 1598| mu1598_6(double &) = Store[rd] : &:r1598_1, r1598_5 -# 1599| r1599_1(glval) = VariableAddress[v] : -# 1599| r1599_2(glval) = VariableAddress[i] : -# 1599| r1599_3(int &) = Load[i] : &:r1599_2, ~m? -# 1599| r1599_4(int) = Load[?] : &:r1599_3, ~m? -# 1599| mu1599_5(int) = Store[v] : &:r1599_1, r1599_4 -# 1600| r1600_1(int) = Constant[5] : -# 1600| r1600_2(glval) = VariableAddress[r] : -# 1600| r1600_3(int &) = Load[r] : &:r1600_2, ~m? -# 1600| r1600_4(glval) = CopyValue : r1600_3 -# 1600| mu1600_5(int) = Store[?] : &:r1600_4, r1600_1 -# 1601| r1601_1(glval) = VariableAddress[rr] : -# 1601| r1601_2(glval) = VariableAddress[r] : -# 1601| r1601_3(int &) = Load[r] : &:r1601_2, ~m? -# 1601| r1601_4(glval) = CopyValue : r1601_3 -# 1601| r1601_5(int &) = CopyValue : r1601_4 -# 1601| mu1601_6(int &) = Store[rr] : &:r1601_1, r1601_5 -# 1602| r1602_1(glval) = VariableAddress[w] : +# 1596| mu1596_10(int &) = Store[i] : &:r1596_1, r1596_9 +# 1597| r1597_1(glval) = VariableAddress[d] : +# 1597| r1597_2(glval) = VariableAddress[unnamed_local_variable] : +# 1597| r1597_3(glval) = FunctionAddress[get] : +# 1597| r1597_4(double &) = Call[get] : func:r1597_3, this:r1597_2 +# 1597| mu1597_5(unknown) = ^CallSideEffect : ~m? +# 1597| v1597_6(void) = ^IndirectReadSideEffect[-1] : &:r1597_2, ~m? +# 1597| mu1597_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1597_2 +# 1597| r1597_8(glval) = CopyValue : r1597_4 +# 1597| r1597_9(double &) = CopyValue : r1597_8 +# 1597| mu1597_10(double &) = Store[d] : &:r1597_1, r1597_9 +# 1598| r1598_1(glval) = VariableAddress[r] : +# 1598| r1598_2(glval) = VariableAddress[unnamed_local_variable] : +# 1598| r1598_3(glval) = FunctionAddress[get] : +# 1598| r1598_4(int &) = Call[get] : func:r1598_3, this:r1598_2 +# 1598| mu1598_5(unknown) = ^CallSideEffect : ~m? +# 1598| v1598_6(void) = ^IndirectReadSideEffect[-1] : &:r1598_2, ~m? +# 1598| mu1598_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1598_2 +# 1598| r1598_8(glval) = CopyValue : r1598_4 +# 1598| r1598_9(int &) = CopyValue : r1598_8 +# 1598| mu1598_10(int &) = Store[r] : &:r1598_1, r1598_9 +# 1599| r1599_1(double) = Constant[4.0] : +# 1599| r1599_2(glval) = VariableAddress[d] : +# 1599| r1599_3(double &) = Load[d] : &:r1599_2, ~m? +# 1599| r1599_4(glval) = CopyValue : r1599_3 +# 1599| mu1599_5(double) = Store[?] : &:r1599_4, r1599_1 +# 1600| r1600_1(glval) = VariableAddress[rd] : +# 1600| r1600_2(glval) = VariableAddress[d] : +# 1600| r1600_3(double &) = Load[d] : &:r1600_2, ~m? +# 1600| r1600_4(glval) = CopyValue : r1600_3 +# 1600| r1600_5(double &) = CopyValue : r1600_4 +# 1600| mu1600_6(double &) = Store[rd] : &:r1600_1, r1600_5 +# 1601| r1601_1(glval) = VariableAddress[v] : +# 1601| r1601_2(glval) = VariableAddress[i] : +# 1601| r1601_3(int &) = Load[i] : &:r1601_2, ~m? +# 1601| r1601_4(int) = Load[?] : &:r1601_3, ~m? +# 1601| mu1601_5(int) = Store[v] : &:r1601_1, r1601_4 +# 1602| r1602_1(int) = Constant[5] : # 1602| r1602_2(glval) = VariableAddress[r] : # 1602| r1602_3(int &) = Load[r] : &:r1602_2, ~m? -# 1602| r1602_4(int) = Load[?] : &:r1602_3, ~m? -# 1602| mu1602_5(int) = Store[w] : &:r1602_1, r1602_4 -# 1604| v1604_1(void) = NoOp : -# 1579| v1579_4(void) = ReturnVoid : -# 1579| v1579_5(void) = AliasedUse : ~m? -# 1579| v1579_6(void) = ExitFunction : - -# 1606| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1606| Block 0 -# 1606| v1606_1(void) = EnterFunction : -# 1606| mu1606_2(unknown) = AliasedDefinition : -# 1606| mu1606_3(unknown) = InitializeNonLocal : -# 1606| r1606_4(glval) = VariableAddress[#this] : -# 1606| mu1606_5(glval) = InitializeParameter[#this] : &:r1606_4 -# 1606| r1606_6(glval) = Load[#this] : &:r1606_4, ~m? -# 1606| mu1606_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1606_6 -# 1606| v1606_8(void) = NoOp : -# 1606| v1606_9(void) = ReturnIndirection[#this] : &:r1606_6, ~m? -# 1606| v1606_10(void) = ReturnVoid : -# 1606| v1606_11(void) = AliasedUse : ~m? -# 1606| v1606_12(void) = ExitFunction : - -# 1633| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1633| Block 0 -# 1633| v1633_1(void) = EnterFunction : -# 1633| mu1633_2(unknown) = AliasedDefinition : -# 1633| mu1633_3(unknown) = InitializeNonLocal : -# 1633| r1633_4(glval) = VariableAddress[#this] : -# 1633| mu1633_5(glval) = InitializeParameter[#this] : &:r1633_4 -# 1633| r1633_6(glval) = Load[#this] : &:r1633_4, ~m? -# 1633| mu1633_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1633_6 -# 1634| r1634_1(glval) = VariableAddress[#return] : -# 1634| r1634_2(glval) = VariableAddress[#this] : -# 1634| r1634_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1634_2, ~m? -# 1634| r1634_4(glval) = FieldAddress[i] : r1634_3 -# 1634| r1634_5(int) = Load[?] : &:r1634_4, ~m? -# 1634| mu1634_6(int) = Store[#return] : &:r1634_1, r1634_5 -# 1633| v1633_8(void) = ReturnIndirection[#this] : &:r1633_6, ~m? -# 1633| r1633_9(glval) = VariableAddress[#return] : -# 1633| v1633_10(void) = ReturnValue : &:r1633_9, ~m? -# 1633| v1633_11(void) = AliasedUse : ~m? -# 1633| v1633_12(void) = ExitFunction : - -# 1637| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1637| Block 0 -# 1637| v1637_1(void) = EnterFunction : -# 1637| mu1637_2(unknown) = AliasedDefinition : -# 1637| mu1637_3(unknown) = InitializeNonLocal : -# 1637| r1637_4(glval) = VariableAddress[#this] : -# 1637| mu1637_5(glval) = InitializeParameter[#this] : &:r1637_4 -# 1637| r1637_6(glval) = Load[#this] : &:r1637_4, ~m? -# 1637| mu1637_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1637_6 -# 1638| r1638_1(glval) = VariableAddress[#return] : -# 1638| r1638_2(glval) = VariableAddress[#this] : -# 1638| r1638_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1638_2, ~m? -# 1638| r1638_4(glval) = FieldAddress[r] : r1638_3 -# 1638| r1638_5(int &) = Load[?] : &:r1638_4, ~m? -# 1638| r1638_6(glval) = CopyValue : r1638_5 -# 1638| r1638_7(int &) = CopyValue : r1638_6 -# 1638| mu1638_8(int &) = Store[#return] : &:r1638_1, r1638_7 -# 1637| v1637_8(void) = ReturnIndirection[#this] : &:r1637_6, ~m? -# 1637| r1637_9(glval) = VariableAddress[#return] : -# 1637| v1637_10(void) = ReturnValue : &:r1637_9, ~m? -# 1637| v1637_11(void) = AliasedUse : ~m? -# 1637| v1637_12(void) = ExitFunction : - -# 1641| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1641| Block 0 -# 1641| v1641_1(void) = EnterFunction : -# 1641| mu1641_2(unknown) = AliasedDefinition : -# 1641| mu1641_3(unknown) = InitializeNonLocal : -# 1641| r1641_4(glval) = VariableAddress[#this] : -# 1641| mu1641_5(glval) = InitializeParameter[#this] : &:r1641_4 -# 1641| r1641_6(glval) = Load[#this] : &:r1641_4, ~m? -# 1641| mu1641_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1641_6 -# 1642| r1642_1(glval) = VariableAddress[#return] : -# 1642| r1642_2(glval) = VariableAddress[#temp1642:12] : -# 1642| r1642_3(int) = Constant[5] : -# 1642| mu1642_4(int) = Store[#temp1642:12] : &:r1642_2, r1642_3 -# 1642| r1642_5(int &) = CopyValue : r1642_2 -# 1642| mu1642_6(int &&) = Store[#return] : &:r1642_1, r1642_5 -# 1641| v1641_8(void) = ReturnIndirection[#this] : &:r1641_6, ~m? -# 1641| r1641_9(glval) = VariableAddress[#return] : -# 1641| v1641_10(void) = ReturnValue : &:r1641_9, ~m? -# 1641| v1641_11(void) = AliasedUse : ~m? -# 1641| v1641_12(void) = ExitFunction : - -# 1645| void tuple_structured_binding_no_ref_get() -# 1645| Block 0 -# 1645| v1645_1(void) = EnterFunction : -# 1645| mu1645_2(unknown) = AliasedDefinition : -# 1645| mu1645_3(unknown) = InitializeNonLocal : -# 1646| r1646_1(glval) = VariableAddress[t] : -# 1646| mu1646_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1646_1 -# 1646| r1646_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : -# 1646| v1646_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1646_3, this:r1646_1 -# 1646| mu1646_5(unknown) = ^CallSideEffect : ~m? -# 1646| mu1646_6(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1646_1 -# 1649| r1649_1(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_2(glval) = VariableAddress[t] : -# 1649| r1649_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1649_2 -# 1649| mu1649_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1649_1, r1649_3 -# 1649| r1649_5(glval) = VariableAddress[i] : -# 1649| r1649_6(glval) = VariableAddress[#temp1649:16] : -# 1649| r1649_7(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_7, ~m? -# 1649| r1649_9(glval) = CopyValue : r1649_8 -# 1649| r1649_10(glval) = FunctionAddress[get] : -# 1649| r1649_11(int) = Call[get] : func:r1649_10, this:r1649_9 -# 1649| mu1649_12(unknown) = ^CallSideEffect : ~m? -# 1649| v1649_13(void) = ^IndirectReadSideEffect[-1] : &:r1649_9, ~m? -# 1649| mu1649_14(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_9 -# 1649| mu1649_15(int) = Store[#temp1649:16] : &:r1649_6, r1649_11 -# 1649| r1649_16(int &) = CopyValue : r1649_6 -# 1649| mu1649_17(int &&) = Store[i] : &:r1649_5, r1649_16 -# 1649| r1649_18(glval) = VariableAddress[r] : -# 1649| r1649_19(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_20(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_19, ~m? -# 1649| r1649_21(glval) = CopyValue : r1649_20 -# 1649| r1649_22(glval) = FunctionAddress[get] : -# 1649| r1649_23(int &) = Call[get] : func:r1649_22, this:r1649_21 -# 1649| mu1649_24(unknown) = ^CallSideEffect : ~m? -# 1649| v1649_25(void) = ^IndirectReadSideEffect[-1] : &:r1649_21, ~m? -# 1649| mu1649_26(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_21 -# 1649| r1649_27(glval) = CopyValue : r1649_23 -# 1649| r1649_28(int &) = CopyValue : r1649_27 -# 1649| mu1649_29(int &) = Store[r] : &:r1649_18, r1649_28 -# 1649| r1649_30(glval) = VariableAddress[rv] : -# 1649| r1649_31(glval) = VariableAddress[(unnamed local variable)] : -# 1649| r1649_32(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1649_31, ~m? -# 1649| r1649_33(glval) = CopyValue : r1649_32 -# 1649| r1649_34(glval) = FunctionAddress[get] : -# 1649| r1649_35(int &&) = Call[get] : func:r1649_34, this:r1649_33 -# 1649| mu1649_36(unknown) = ^CallSideEffect : ~m? -# 1649| v1649_37(void) = ^IndirectReadSideEffect[-1] : &:r1649_33, ~m? -# 1649| mu1649_38(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1649_33 -# 1649| r1649_39(glval) = CopyValue : r1649_35 -# 1649| r1649_40(int &) = CopyValue : r1649_39 -# 1649| mu1649_41(int &&) = Store[rv] : &:r1649_30, r1649_40 -# 1650| r1650_1(int) = Constant[4] : -# 1650| r1650_2(glval) = VariableAddress[i] : -# 1650| r1650_3(int &&) = Load[i] : &:r1650_2, ~m? -# 1650| r1650_4(glval) = CopyValue : r1650_3 -# 1650| mu1650_5(int) = Store[?] : &:r1650_4, r1650_1 -# 1651| r1651_1(glval) = VariableAddress[ri] : -# 1651| r1651_2(glval) = VariableAddress[i] : -# 1651| r1651_3(int &&) = Load[i] : &:r1651_2, ~m? -# 1651| r1651_4(glval) = CopyValue : r1651_3 -# 1651| r1651_5(int &) = CopyValue : r1651_4 -# 1651| mu1651_6(int &) = Store[ri] : &:r1651_1, r1651_5 -# 1652| r1652_1(glval) = VariableAddress[v] : +# 1602| r1602_4(glval) = CopyValue : r1602_3 +# 1602| mu1602_5(int) = Store[?] : &:r1602_4, r1602_1 +# 1603| r1603_1(glval) = VariableAddress[rr] : +# 1603| r1603_2(glval) = VariableAddress[r] : +# 1603| r1603_3(int &) = Load[r] : &:r1603_2, ~m? +# 1603| r1603_4(glval) = CopyValue : r1603_3 +# 1603| r1603_5(int &) = CopyValue : r1603_4 +# 1603| mu1603_6(int &) = Store[rr] : &:r1603_1, r1603_5 +# 1604| r1604_1(glval) = VariableAddress[w] : +# 1604| r1604_2(glval) = VariableAddress[r] : +# 1604| r1604_3(int &) = Load[r] : &:r1604_2, ~m? +# 1604| r1604_4(int) = Load[?] : &:r1604_3, ~m? +# 1604| mu1604_5(int) = Store[w] : &:r1604_1, r1604_4 +# 1606| v1606_1(void) = NoOp : +# 1581| v1581_4(void) = ReturnVoid : +# 1581| v1581_5(void) = AliasedUse : ~m? +# 1581| v1581_6(void) = ExitFunction : + +# 1608| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1608| Block 0 +# 1608| v1608_1(void) = EnterFunction : +# 1608| mu1608_2(unknown) = AliasedDefinition : +# 1608| mu1608_3(unknown) = InitializeNonLocal : +# 1608| r1608_4(glval) = VariableAddress[#this] : +# 1608| mu1608_5(glval) = InitializeParameter[#this] : &:r1608_4 +# 1608| r1608_6(glval) = Load[#this] : &:r1608_4, ~m? +# 1608| mu1608_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1608_6 +# 1608| v1608_8(void) = NoOp : +# 1608| v1608_9(void) = ReturnIndirection[#this] : &:r1608_6, ~m? +# 1608| v1608_10(void) = ReturnVoid : +# 1608| v1608_11(void) = AliasedUse : ~m? +# 1608| v1608_12(void) = ExitFunction : + +# 1635| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1635| Block 0 +# 1635| v1635_1(void) = EnterFunction : +# 1635| mu1635_2(unknown) = AliasedDefinition : +# 1635| mu1635_3(unknown) = InitializeNonLocal : +# 1635| r1635_4(glval) = VariableAddress[#this] : +# 1635| mu1635_5(glval) = InitializeParameter[#this] : &:r1635_4 +# 1635| r1635_6(glval) = Load[#this] : &:r1635_4, ~m? +# 1635| mu1635_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1635_6 +# 1636| r1636_1(glval) = VariableAddress[#return] : +# 1636| r1636_2(glval) = VariableAddress[#this] : +# 1636| r1636_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1636_2, ~m? +# 1636| r1636_4(glval) = FieldAddress[i] : r1636_3 +# 1636| r1636_5(int) = Load[?] : &:r1636_4, ~m? +# 1636| mu1636_6(int) = Store[#return] : &:r1636_1, r1636_5 +# 1635| v1635_8(void) = ReturnIndirection[#this] : &:r1635_6, ~m? +# 1635| r1635_9(glval) = VariableAddress[#return] : +# 1635| v1635_10(void) = ReturnValue : &:r1635_9, ~m? +# 1635| v1635_11(void) = AliasedUse : ~m? +# 1635| v1635_12(void) = ExitFunction : + +# 1639| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1639| Block 0 +# 1639| v1639_1(void) = EnterFunction : +# 1639| mu1639_2(unknown) = AliasedDefinition : +# 1639| mu1639_3(unknown) = InitializeNonLocal : +# 1639| r1639_4(glval) = VariableAddress[#this] : +# 1639| mu1639_5(glval) = InitializeParameter[#this] : &:r1639_4 +# 1639| r1639_6(glval) = Load[#this] : &:r1639_4, ~m? +# 1639| mu1639_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1639_6 +# 1640| r1640_1(glval) = VariableAddress[#return] : +# 1640| r1640_2(glval) = VariableAddress[#this] : +# 1640| r1640_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1640_2, ~m? +# 1640| r1640_4(glval) = FieldAddress[r] : r1640_3 +# 1640| r1640_5(int &) = Load[?] : &:r1640_4, ~m? +# 1640| r1640_6(glval) = CopyValue : r1640_5 +# 1640| r1640_7(int &) = CopyValue : r1640_6 +# 1640| mu1640_8(int &) = Store[#return] : &:r1640_1, r1640_7 +# 1639| v1639_8(void) = ReturnIndirection[#this] : &:r1639_6, ~m? +# 1639| r1639_9(glval) = VariableAddress[#return] : +# 1639| v1639_10(void) = ReturnValue : &:r1639_9, ~m? +# 1639| v1639_11(void) = AliasedUse : ~m? +# 1639| v1639_12(void) = ExitFunction : + +# 1643| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1643| Block 0 +# 1643| v1643_1(void) = EnterFunction : +# 1643| mu1643_2(unknown) = AliasedDefinition : +# 1643| mu1643_3(unknown) = InitializeNonLocal : +# 1643| r1643_4(glval) = VariableAddress[#this] : +# 1643| mu1643_5(glval) = InitializeParameter[#this] : &:r1643_4 +# 1643| r1643_6(glval) = Load[#this] : &:r1643_4, ~m? +# 1643| mu1643_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1643_6 +# 1644| r1644_1(glval) = VariableAddress[#return] : +# 1644| r1644_2(glval) = VariableAddress[#temp1644:12] : +# 1644| r1644_3(int) = Constant[5] : +# 1644| mu1644_4(int) = Store[#temp1644:12] : &:r1644_2, r1644_3 +# 1644| r1644_5(int &) = CopyValue : r1644_2 +# 1644| mu1644_6(int &&) = Store[#return] : &:r1644_1, r1644_5 +# 1643| v1643_8(void) = ReturnIndirection[#this] : &:r1643_6, ~m? +# 1643| r1643_9(glval) = VariableAddress[#return] : +# 1643| v1643_10(void) = ReturnValue : &:r1643_9, ~m? +# 1643| v1643_11(void) = AliasedUse : ~m? +# 1643| v1643_12(void) = ExitFunction : + +# 1647| void tuple_structured_binding_no_ref_get() +# 1647| Block 0 +# 1647| v1647_1(void) = EnterFunction : +# 1647| mu1647_2(unknown) = AliasedDefinition : +# 1647| mu1647_3(unknown) = InitializeNonLocal : +# 1648| r1648_1(glval) = VariableAddress[t] : +# 1648| mu1648_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1648_1 +# 1648| r1648_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : +# 1648| v1648_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1648_3, this:r1648_1 +# 1648| mu1648_5(unknown) = ^CallSideEffect : ~m? +# 1648| mu1648_6(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1648_1 +# 1651| r1651_1(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_2(glval) = VariableAddress[t] : +# 1651| r1651_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1651_2 +# 1651| mu1651_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1651_1, r1651_3 +# 1651| r1651_5(glval) = VariableAddress[i] : +# 1651| r1651_6(glval) = VariableAddress[#temp1651:16] : +# 1651| r1651_7(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_7, ~m? +# 1651| r1651_9(glval) = CopyValue : r1651_8 +# 1651| r1651_10(glval) = FunctionAddress[get] : +# 1651| r1651_11(int) = Call[get] : func:r1651_10, this:r1651_9 +# 1651| mu1651_12(unknown) = ^CallSideEffect : ~m? +# 1651| v1651_13(void) = ^IndirectReadSideEffect[-1] : &:r1651_9, ~m? +# 1651| mu1651_14(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_9 +# 1651| mu1651_15(int) = Store[#temp1651:16] : &:r1651_6, r1651_11 +# 1651| r1651_16(int &) = CopyValue : r1651_6 +# 1651| mu1651_17(int &&) = Store[i] : &:r1651_5, r1651_16 +# 1651| r1651_18(glval) = VariableAddress[r] : +# 1651| r1651_19(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_20(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_19, ~m? +# 1651| r1651_21(glval) = CopyValue : r1651_20 +# 1651| r1651_22(glval) = FunctionAddress[get] : +# 1651| r1651_23(int &) = Call[get] : func:r1651_22, this:r1651_21 +# 1651| mu1651_24(unknown) = ^CallSideEffect : ~m? +# 1651| v1651_25(void) = ^IndirectReadSideEffect[-1] : &:r1651_21, ~m? +# 1651| mu1651_26(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_21 +# 1651| r1651_27(glval) = CopyValue : r1651_23 +# 1651| r1651_28(int &) = CopyValue : r1651_27 +# 1651| mu1651_29(int &) = Store[r] : &:r1651_18, r1651_28 +# 1651| r1651_30(glval) = VariableAddress[rv] : +# 1651| r1651_31(glval) = VariableAddress[(unnamed local variable)] : +# 1651| r1651_32(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_31, ~m? +# 1651| r1651_33(glval) = CopyValue : r1651_32 +# 1651| r1651_34(glval) = FunctionAddress[get] : +# 1651| r1651_35(int &&) = Call[get] : func:r1651_34, this:r1651_33 +# 1651| mu1651_36(unknown) = ^CallSideEffect : ~m? +# 1651| v1651_37(void) = ^IndirectReadSideEffect[-1] : &:r1651_33, ~m? +# 1651| mu1651_38(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_33 +# 1651| r1651_39(glval) = CopyValue : r1651_35 +# 1651| r1651_40(int &) = CopyValue : r1651_39 +# 1651| mu1651_41(int &&) = Store[rv] : &:r1651_30, r1651_40 +# 1652| r1652_1(int) = Constant[4] : # 1652| r1652_2(glval) = VariableAddress[i] : # 1652| r1652_3(int &&) = Load[i] : &:r1652_2, ~m? -# 1652| r1652_4(int) = Load[?] : &:r1652_3, ~m? -# 1652| mu1652_5(int) = Store[v] : &:r1652_1, r1652_4 -# 1653| r1653_1(int) = Constant[5] : -# 1653| r1653_2(glval) = VariableAddress[r] : -# 1653| r1653_3(int &) = Load[r] : &:r1653_2, ~m? +# 1652| r1652_4(glval) = CopyValue : r1652_3 +# 1652| mu1652_5(int) = Store[?] : &:r1652_4, r1652_1 +# 1653| r1653_1(glval) = VariableAddress[ri] : +# 1653| r1653_2(glval) = VariableAddress[i] : +# 1653| r1653_3(int &&) = Load[i] : &:r1653_2, ~m? # 1653| r1653_4(glval) = CopyValue : r1653_3 -# 1653| mu1653_5(int) = Store[?] : &:r1653_4, r1653_1 -# 1654| r1654_1(glval) = VariableAddress[rr] : -# 1654| r1654_2(glval) = VariableAddress[r] : -# 1654| r1654_3(int &) = Load[r] : &:r1654_2, ~m? -# 1654| r1654_4(glval) = CopyValue : r1654_3 -# 1654| r1654_5(int &) = CopyValue : r1654_4 -# 1654| mu1654_6(int &) = Store[rr] : &:r1654_1, r1654_5 -# 1655| r1655_1(glval) = VariableAddress[w] : +# 1653| r1653_5(int &) = CopyValue : r1653_4 +# 1653| mu1653_6(int &) = Store[ri] : &:r1653_1, r1653_5 +# 1654| r1654_1(glval) = VariableAddress[v] : +# 1654| r1654_2(glval) = VariableAddress[i] : +# 1654| r1654_3(int &&) = Load[i] : &:r1654_2, ~m? +# 1654| r1654_4(int) = Load[?] : &:r1654_3, ~m? +# 1654| mu1654_5(int) = Store[v] : &:r1654_1, r1654_4 +# 1655| r1655_1(int) = Constant[5] : # 1655| r1655_2(glval) = VariableAddress[r] : # 1655| r1655_3(int &) = Load[r] : &:r1655_2, ~m? -# 1655| r1655_4(int) = Load[?] : &:r1655_3, ~m? -# 1655| mu1655_5(int) = Store[w] : &:r1655_1, r1655_4 -# 1659| r1659_1(glval) = VariableAddress[unnamed_local_variable] : -# 1659| r1659_2(glval) = VariableAddress[t] : -# 1659| r1659_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1659_2 -# 1659| mu1659_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1659_1, r1659_3 -# 1660| r1660_1(glval) = VariableAddress[i] : -# 1660| r1660_2(glval) = VariableAddress[#temp1660:20] : -# 1660| r1660_3(glval) = VariableAddress[unnamed_local_variable] : -# 1660| r1660_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1660_3, ~m? -# 1660| r1660_5(glval) = CopyValue : r1660_4 -# 1660| r1660_6(glval) = FunctionAddress[get] : -# 1660| r1660_7(int) = Call[get] : func:r1660_6, this:r1660_5 -# 1660| mu1660_8(unknown) = ^CallSideEffect : ~m? -# 1660| v1660_9(void) = ^IndirectReadSideEffect[-1] : &:r1660_5, ~m? -# 1660| mu1660_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1660_5 -# 1660| mu1660_11(int) = Store[#temp1660:20] : &:r1660_2, r1660_7 -# 1660| r1660_12(int &) = CopyValue : r1660_2 -# 1660| mu1660_13(int &&) = Store[i] : &:r1660_1, r1660_12 -# 1661| r1661_1(glval) = VariableAddress[r] : -# 1661| r1661_2(glval) = VariableAddress[unnamed_local_variable] : -# 1661| r1661_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1661_2, ~m? -# 1661| r1661_4(glval) = CopyValue : r1661_3 -# 1661| r1661_5(glval) = FunctionAddress[get] : -# 1661| r1661_6(int &) = Call[get] : func:r1661_5, this:r1661_4 -# 1661| mu1661_7(unknown) = ^CallSideEffect : ~m? -# 1661| v1661_8(void) = ^IndirectReadSideEffect[-1] : &:r1661_4, ~m? -# 1661| mu1661_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1661_4 -# 1661| r1661_10(glval) = CopyValue : r1661_6 -# 1661| r1661_11(int &) = CopyValue : r1661_10 -# 1661| mu1661_12(int &) = Store[r] : &:r1661_1, r1661_11 -# 1662| r1662_1(glval) = VariableAddress[rv] : -# 1662| r1662_2(glval) = VariableAddress[unnamed_local_variable] : -# 1662| r1662_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1662_2, ~m? -# 1662| r1662_4(glval) = CopyValue : r1662_3 -# 1662| r1662_5(glval) = FunctionAddress[get] : -# 1662| r1662_6(int &&) = Call[get] : func:r1662_5, this:r1662_4 -# 1662| mu1662_7(unknown) = ^CallSideEffect : ~m? -# 1662| v1662_8(void) = ^IndirectReadSideEffect[-1] : &:r1662_4, ~m? -# 1662| mu1662_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1662_4 -# 1662| r1662_10(glval) = CopyValue : r1662_6 -# 1662| r1662_11(int &) = CopyValue : r1662_10 -# 1662| mu1662_12(int &&) = Store[rv] : &:r1662_1, r1662_11 -# 1663| r1663_1(int) = Constant[4] : -# 1663| r1663_2(glval) = VariableAddress[i] : -# 1663| r1663_3(int &&) = Load[i] : &:r1663_2, ~m? -# 1663| r1663_4(glval) = CopyValue : r1663_3 -# 1663| mu1663_5(int) = Store[?] : &:r1663_4, r1663_1 -# 1664| r1664_1(glval) = VariableAddress[ri] : -# 1664| r1664_2(glval) = VariableAddress[i] : -# 1664| r1664_3(int &&) = Load[i] : &:r1664_2, ~m? -# 1664| r1664_4(glval) = CopyValue : r1664_3 -# 1664| r1664_5(int &) = CopyValue : r1664_4 -# 1664| mu1664_6(int &) = Store[ri] : &:r1664_1, r1664_5 -# 1665| r1665_1(glval) = VariableAddress[v] : +# 1655| r1655_4(glval) = CopyValue : r1655_3 +# 1655| mu1655_5(int) = Store[?] : &:r1655_4, r1655_1 +# 1656| r1656_1(glval) = VariableAddress[rr] : +# 1656| r1656_2(glval) = VariableAddress[r] : +# 1656| r1656_3(int &) = Load[r] : &:r1656_2, ~m? +# 1656| r1656_4(glval) = CopyValue : r1656_3 +# 1656| r1656_5(int &) = CopyValue : r1656_4 +# 1656| mu1656_6(int &) = Store[rr] : &:r1656_1, r1656_5 +# 1657| r1657_1(glval) = VariableAddress[w] : +# 1657| r1657_2(glval) = VariableAddress[r] : +# 1657| r1657_3(int &) = Load[r] : &:r1657_2, ~m? +# 1657| r1657_4(int) = Load[?] : &:r1657_3, ~m? +# 1657| mu1657_5(int) = Store[w] : &:r1657_1, r1657_4 +# 1661| r1661_1(glval) = VariableAddress[unnamed_local_variable] : +# 1661| r1661_2(glval) = VariableAddress[t] : +# 1661| r1661_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1661_2 +# 1661| mu1661_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1661_1, r1661_3 +# 1662| r1662_1(glval) = VariableAddress[i] : +# 1662| r1662_2(glval) = VariableAddress[#temp1662:20] : +# 1662| r1662_3(glval) = VariableAddress[unnamed_local_variable] : +# 1662| r1662_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1662_3, ~m? +# 1662| r1662_5(glval) = CopyValue : r1662_4 +# 1662| r1662_6(glval) = FunctionAddress[get] : +# 1662| r1662_7(int) = Call[get] : func:r1662_6, this:r1662_5 +# 1662| mu1662_8(unknown) = ^CallSideEffect : ~m? +# 1662| v1662_9(void) = ^IndirectReadSideEffect[-1] : &:r1662_5, ~m? +# 1662| mu1662_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1662_5 +# 1662| mu1662_11(int) = Store[#temp1662:20] : &:r1662_2, r1662_7 +# 1662| r1662_12(int &) = CopyValue : r1662_2 +# 1662| mu1662_13(int &&) = Store[i] : &:r1662_1, r1662_12 +# 1663| r1663_1(glval) = VariableAddress[r] : +# 1663| r1663_2(glval) = VariableAddress[unnamed_local_variable] : +# 1663| r1663_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1663_2, ~m? +# 1663| r1663_4(glval) = CopyValue : r1663_3 +# 1663| r1663_5(glval) = FunctionAddress[get] : +# 1663| r1663_6(int &) = Call[get] : func:r1663_5, this:r1663_4 +# 1663| mu1663_7(unknown) = ^CallSideEffect : ~m? +# 1663| v1663_8(void) = ^IndirectReadSideEffect[-1] : &:r1663_4, ~m? +# 1663| mu1663_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1663_4 +# 1663| r1663_10(glval) = CopyValue : r1663_6 +# 1663| r1663_11(int &) = CopyValue : r1663_10 +# 1663| mu1663_12(int &) = Store[r] : &:r1663_1, r1663_11 +# 1664| r1664_1(glval) = VariableAddress[rv] : +# 1664| r1664_2(glval) = VariableAddress[unnamed_local_variable] : +# 1664| r1664_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1664_2, ~m? +# 1664| r1664_4(glval) = CopyValue : r1664_3 +# 1664| r1664_5(glval) = FunctionAddress[get] : +# 1664| r1664_6(int &&) = Call[get] : func:r1664_5, this:r1664_4 +# 1664| mu1664_7(unknown) = ^CallSideEffect : ~m? +# 1664| v1664_8(void) = ^IndirectReadSideEffect[-1] : &:r1664_4, ~m? +# 1664| mu1664_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1664_4 +# 1664| r1664_10(glval) = CopyValue : r1664_6 +# 1664| r1664_11(int &) = CopyValue : r1664_10 +# 1664| mu1664_12(int &&) = Store[rv] : &:r1664_1, r1664_11 +# 1665| r1665_1(int) = Constant[4] : # 1665| r1665_2(glval) = VariableAddress[i] : # 1665| r1665_3(int &&) = Load[i] : &:r1665_2, ~m? -# 1665| r1665_4(int) = Load[?] : &:r1665_3, ~m? -# 1665| mu1665_5(int) = Store[v] : &:r1665_1, r1665_4 -# 1666| r1666_1(int) = Constant[5] : -# 1666| r1666_2(glval) = VariableAddress[r] : -# 1666| r1666_3(int &) = Load[r] : &:r1666_2, ~m? +# 1665| r1665_4(glval) = CopyValue : r1665_3 +# 1665| mu1665_5(int) = Store[?] : &:r1665_4, r1665_1 +# 1666| r1666_1(glval) = VariableAddress[ri] : +# 1666| r1666_2(glval) = VariableAddress[i] : +# 1666| r1666_3(int &&) = Load[i] : &:r1666_2, ~m? # 1666| r1666_4(glval) = CopyValue : r1666_3 -# 1666| mu1666_5(int) = Store[?] : &:r1666_4, r1666_1 -# 1667| r1667_1(glval) = VariableAddress[rr] : -# 1667| r1667_2(glval) = VariableAddress[r] : -# 1667| r1667_3(int &) = Load[r] : &:r1667_2, ~m? -# 1667| r1667_4(glval) = CopyValue : r1667_3 -# 1667| r1667_5(int &) = CopyValue : r1667_4 -# 1667| mu1667_6(int &) = Store[rr] : &:r1667_1, r1667_5 -# 1668| r1668_1(glval) = VariableAddress[w] : +# 1666| r1666_5(int &) = CopyValue : r1666_4 +# 1666| mu1666_6(int &) = Store[ri] : &:r1666_1, r1666_5 +# 1667| r1667_1(glval) = VariableAddress[v] : +# 1667| r1667_2(glval) = VariableAddress[i] : +# 1667| r1667_3(int &&) = Load[i] : &:r1667_2, ~m? +# 1667| r1667_4(int) = Load[?] : &:r1667_3, ~m? +# 1667| mu1667_5(int) = Store[v] : &:r1667_1, r1667_4 +# 1668| r1668_1(int) = Constant[5] : # 1668| r1668_2(glval) = VariableAddress[r] : # 1668| r1668_3(int &) = Load[r] : &:r1668_2, ~m? -# 1668| r1668_4(int) = Load[?] : &:r1668_3, ~m? -# 1668| mu1668_5(int) = Store[w] : &:r1668_1, r1668_4 -# 1670| v1670_1(void) = NoOp : -# 1645| v1645_4(void) = ReturnVoid : -# 1645| v1645_5(void) = AliasedUse : ~m? -# 1645| v1645_6(void) = ExitFunction : - -# 1672| void array_structured_binding_non_ref_init() -# 1672| Block 0 -# 1672| v1672_1(void) = EnterFunction : -# 1672| mu1672_2(unknown) = AliasedDefinition : -# 1672| mu1672_3(unknown) = InitializeNonLocal : -# 1673| r1673_1(glval) = VariableAddress[xs] : -# 1673| mu1673_2(int[2]) = Uninitialized[xs] : &:r1673_1 -# 1673| r1673_3(int) = Constant[0] : -# 1673| r1673_4(glval) = PointerAdd[4] : r1673_1, r1673_3 -# 1673| r1673_5(int) = Constant[1] : -# 1673| mu1673_6(int) = Store[?] : &:r1673_4, r1673_5 -# 1673| r1673_7(int) = Constant[1] : -# 1673| r1673_8(glval) = PointerAdd[4] : r1673_1, r1673_7 -# 1673| r1673_9(int) = Constant[2] : -# 1673| mu1673_10(int) = Store[?] : &:r1673_8, r1673_9 -# 1674| r1674_1(glval) = VariableAddress[(unnamed local variable)] : -# 1674| r1674_2(glval) = VariableAddress[xs] : -# 1674| r1674_3(int[2]) = Load[xs] : &:r1674_2, ~m? -# 1674| mu1674_4(int[2]) = Store[(unnamed local variable)] : &:r1674_1, r1674_3 -# 1674| r1674_5(glval) = VariableAddress[x0] : +# 1668| r1668_4(glval) = CopyValue : r1668_3 +# 1668| mu1668_5(int) = Store[?] : &:r1668_4, r1668_1 +# 1669| r1669_1(glval) = VariableAddress[rr] : +# 1669| r1669_2(glval) = VariableAddress[r] : +# 1669| r1669_3(int &) = Load[r] : &:r1669_2, ~m? +# 1669| r1669_4(glval) = CopyValue : r1669_3 +# 1669| r1669_5(int &) = CopyValue : r1669_4 +# 1669| mu1669_6(int &) = Store[rr] : &:r1669_1, r1669_5 +# 1670| r1670_1(glval) = VariableAddress[w] : +# 1670| r1670_2(glval) = VariableAddress[r] : +# 1670| r1670_3(int &) = Load[r] : &:r1670_2, ~m? +# 1670| r1670_4(int) = Load[?] : &:r1670_3, ~m? +# 1670| mu1670_5(int) = Store[w] : &:r1670_1, r1670_4 +# 1672| v1672_1(void) = NoOp : +# 1647| v1647_4(void) = ReturnVoid : +# 1647| v1647_5(void) = AliasedUse : ~m? +# 1647| v1647_6(void) = ExitFunction : + +# 1674| void array_structured_binding_non_ref_init() +# 1674| Block 0 +# 1674| v1674_1(void) = EnterFunction : +# 1674| mu1674_2(unknown) = AliasedDefinition : +# 1674| mu1674_3(unknown) = InitializeNonLocal : +# 1675| r1675_1(glval) = VariableAddress[xs] : +# 1675| mu1675_2(int[2]) = Uninitialized[xs] : &:r1675_1 +# 1675| r1675_3(int) = Constant[0] : +# 1675| r1675_4(glval) = PointerAdd[4] : r1675_1, r1675_3 +# 1675| r1675_5(int) = Constant[1] : +# 1675| mu1675_6(int) = Store[?] : &:r1675_4, r1675_5 +# 1675| r1675_7(int) = Constant[1] : +# 1675| r1675_8(glval) = PointerAdd[4] : r1675_1, r1675_7 +# 1675| r1675_9(int) = Constant[2] : +# 1675| mu1675_10(int) = Store[?] : &:r1675_8, r1675_9 +# 1676| r1676_1(glval) = VariableAddress[(unnamed local variable)] : +# 1676| r1676_2(glval) = VariableAddress[xs] : +# 1676| r1676_3(int[2]) = Load[xs] : &:r1676_2, ~m? +# 1676| mu1676_4(int[2]) = Store[(unnamed local variable)] : &:r1676_1, r1676_3 +# 1676| r1676_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int *) = Convert : r0_1 #-----| r0_3(unsigned long) = Constant[0] : #-----| r0_4(glval) = PointerAdd[4] : r0_2, r0_3 -#-----| mu0_5(int &) = Store[x0] : &:r1674_5, r0_4 -# 1674| r1674_6(glval) = VariableAddress[x1] : +#-----| mu0_5(int &) = Store[x0] : &:r1676_5, r0_4 +# 1676| r1676_6(glval) = VariableAddress[x1] : #-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_7(int *) = Convert : r0_6 #-----| r0_8(unsigned long) = Constant[1] : #-----| r0_9(glval) = PointerAdd[4] : r0_7, r0_8 -#-----| mu0_10(int &) = Store[x1] : &:r1674_6, r0_9 -# 1675| v1675_1(void) = NoOp : -# 1672| v1672_4(void) = ReturnVoid : -# 1672| v1672_5(void) = AliasedUse : ~m? -# 1672| v1672_6(void) = ExitFunction : - -# 1680| void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1680| Block 0 -# 1680| v1680_1(void) = EnterFunction : -# 1680| mu1680_2(unknown) = AliasedDefinition : -# 1680| mu1680_3(unknown) = InitializeNonLocal : -# 1680| r1680_4(glval) = VariableAddress[#this] : -# 1680| mu1680_5(glval) = InitializeParameter[#this] : &:r1680_4 -# 1680| r1680_6(glval) = Load[#this] : &:r1680_4, ~m? -# 1680| mu1680_7(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1680_6 -# 1680| v1680_8(void) = NoOp : -# 1680| v1680_9(void) = ReturnIndirection[#this] : &:r1680_6, ~m? -# 1680| v1680_10(void) = ReturnVoid : -# 1680| v1680_11(void) = AliasedUse : ~m? -# 1680| v1680_12(void) = ExitFunction : - -# 1683| void captured_lambda(int, int&, int&&) -# 1683| Block 0 -# 1683| v1683_1(void) = EnterFunction : -# 1683| mu1683_2(unknown) = AliasedDefinition : -# 1683| mu1683_3(unknown) = InitializeNonLocal : -# 1683| r1683_4(glval) = VariableAddress[x] : -# 1683| mu1683_5(int) = InitializeParameter[x] : &:r1683_4 -# 1683| r1683_6(glval) = VariableAddress[y] : -# 1683| mu1683_7(int &) = InitializeParameter[y] : &:r1683_6 -# 1683| r1683_8(int &) = Load[y] : &:r1683_6, ~m? -# 1683| mu1683_9(unknown) = InitializeIndirection[y] : &:r1683_8 -# 1683| r1683_10(glval) = VariableAddress[z] : -# 1683| mu1683_11(int &&) = InitializeParameter[z] : &:r1683_10 -# 1683| r1683_12(int &&) = Load[z] : &:r1683_10, ~m? -# 1683| mu1683_13(unknown) = InitializeIndirection[z] : &:r1683_12 -# 1685| r1685_1(glval) = VariableAddress[obj1] : -# 1685| r1685_2(glval) = VariableAddress[#temp1685:24] : -# 1685| mu1685_3(CapturedLambdaMyObj) = Uninitialized[#temp1685:24] : &:r1685_2 -# 1685| r1685_4(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1685| v1685_5(void) = Call[CapturedLambdaMyObj] : func:r1685_4, this:r1685_2 -# 1685| mu1685_6(unknown) = ^CallSideEffect : ~m? -# 1685| mu1685_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1685_2 -# 1685| r1685_8(glval) = Convert : r1685_2 -# 1685| r1685_9(CapturedLambdaMyObj &) = CopyValue : r1685_8 -# 1685| mu1685_10(CapturedLambdaMyObj &) = Store[obj1] : &:r1685_1, r1685_9 -# 1686| r1686_1(glval) = VariableAddress[obj2] : -# 1686| mu1686_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1686_1 -# 1686| r1686_3(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1686| v1686_4(void) = Call[CapturedLambdaMyObj] : func:r1686_3, this:r1686_1 -# 1686| mu1686_5(unknown) = ^CallSideEffect : ~m? -# 1686| mu1686_6(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1686_1 -# 1688| r1688_1(glval) = VariableAddress[lambda_outer] : -# 1688| r1688_2(glval) = VariableAddress[#temp1688:24] : -# 1688| mu1688_3(decltype([...](...){...})) = Uninitialized[#temp1688:24] : &:r1688_2 -# 1688| r1688_4(glval) = FieldAddress[obj1] : r1688_2 -# 1688| r1688_5(glval) = VariableAddress[obj1] : -# 1688| r1688_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1688_5, ~m? -#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1688_6, ~m? -#-----| mu0_2(CapturedLambdaMyObj) = Store[?] : &:r1688_4, r0_1 -# 1688| r1688_7(glval) = FieldAddress[obj2] : r1688_2 -# 1688| r1688_8(glval) = VariableAddress[obj2] : -# 1688| r1688_9(CapturedLambdaMyObj) = Load[obj2] : &:r1688_8, ~m? -# 1688| mu1688_10(CapturedLambdaMyObj) = Store[?] : &:r1688_7, r1688_9 -# 1688| r1688_11(glval) = FieldAddress[x] : r1688_2 -# 1688| r1688_12(glval) = VariableAddress[x] : -# 1688| r1688_13(int) = Load[x] : &:r1688_12, ~m? -# 1688| mu1688_14(int) = Store[?] : &:r1688_11, r1688_13 -# 1688| r1688_15(glval) = FieldAddress[y] : r1688_2 -# 1688| r1688_16(glval) = VariableAddress[y] : -# 1688| r1688_17(int &) = Load[y] : &:r1688_16, ~m? -# 1690| r1690_1(int) = Load[?] : &:r1688_17, ~m? -# 1690| mu1690_2(int) = Store[?] : &:r1688_15, r1690_1 -# 1688| r1688_18(glval) = FieldAddress[z] : r1688_2 -# 1688| r1688_19(glval) = VariableAddress[z] : -# 1688| r1688_20(int &&) = Load[z] : &:r1688_19, ~m? -# 1690| r1690_3(int) = Load[?] : &:r1688_20, ~m? -# 1690| mu1690_4(int) = Store[?] : &:r1688_18, r1690_3 -# 1688| r1688_21(decltype([...](...){...})) = Load[#temp1688:24] : &:r1688_2, ~m? -# 1688| mu1688_22(decltype([...](...){...})) = Store[lambda_outer] : &:r1688_1, r1688_21 -# 1691| v1691_1(void) = NoOp : -# 1683| v1683_14(void) = ReturnIndirection[y] : &:r1683_8, ~m? -# 1683| v1683_15(void) = ReturnIndirection[z] : &:r1683_12, ~m? -# 1683| v1683_16(void) = ReturnVoid : -# 1683| v1683_17(void) = AliasedUse : ~m? -# 1683| v1683_18(void) = ExitFunction : - -# 1688| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const -# 1688| Block 0 -# 1688| v1688_1(void) = EnterFunction : -# 1688| mu1688_2(unknown) = AliasedDefinition : -# 1688| mu1688_3(unknown) = InitializeNonLocal : -# 1688| r1688_4(glval) = VariableAddress[#this] : -# 1688| mu1688_5(glval) = InitializeParameter[#this] : &:r1688_4 -# 1688| r1688_6(glval) = Load[#this] : &:r1688_4, ~m? -# 1688| mu1688_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1688_6 -# 1689| r1689_1(glval) = VariableAddress[lambda_inner] : -# 1689| r1689_2(glval) = VariableAddress[#temp1689:28] : -# 1689| mu1689_3(decltype([...](...){...})) = Uninitialized[#temp1689:28] : &:r1689_2 -# 1689| r1689_4(glval) = FieldAddress[obj1] : r1689_2 -# 1689| r1689_5(glval) = VariableAddress[#this] : -# 1689| r1689_6(lambda [] type at line 1689, col. 29 *) = Load[#this] : &:r1689_5, ~m? -# 1689| r1689_7(glval) = FieldAddress[obj1] : r1689_6 -# 1689| r1689_8(CapturedLambdaMyObj) = Load[?] : &:r1689_7, ~m? -# 1689| mu1689_9(CapturedLambdaMyObj) = Store[?] : &:r1689_4, r1689_8 -# 1689| r1689_10(glval) = FieldAddress[obj2] : r1689_2 -# 1689| r1689_11(glval) = VariableAddress[#this] : -# 1689| r1689_12(lambda [] type at line 1689, col. 29 *) = Load[#this] : &:r1689_11, ~m? -# 1689| r1689_13(glval) = FieldAddress[obj2] : r1689_12 -# 1689| r1689_14(CapturedLambdaMyObj) = Load[?] : &:r1689_13, ~m? -# 1689| mu1689_15(CapturedLambdaMyObj) = Store[?] : &:r1689_10, r1689_14 -# 1689| r1689_16(glval) = FieldAddress[x] : r1689_2 -# 1689| r1689_17(glval) = VariableAddress[#this] : -# 1689| r1689_18(lambda [] type at line 1688, col. 25 *) = Load[#this] : &:r1689_17, ~m? -# 1689| r1689_19(glval) = FieldAddress[x] : r1689_18 -# 1689| r1689_20(int) = Load[?] : &:r1689_19, ~m? -# 1689| mu1689_21(int) = Store[?] : &:r1689_16, r1689_20 -# 1689| r1689_22(glval) = FieldAddress[y] : r1689_2 -# 1689| r1689_23(glval) = VariableAddress[#this] : -# 1689| r1689_24(lambda [] type at line 1688, col. 25 *) = Load[#this] : &:r1689_23, ~m? -# 1689| r1689_25(glval) = FieldAddress[y] : r1689_24 -# 1689| r1689_26(int) = Load[?] : &:r1689_25, ~m? -# 1689| mu1689_27(int) = Store[?] : &:r1689_22, r1689_26 -# 1689| r1689_28(glval) = FieldAddress[z] : r1689_2 -# 1689| r1689_29(glval) = VariableAddress[#this] : -# 1689| r1689_30(lambda [] type at line 1688, col. 25 *) = Load[#this] : &:r1689_29, ~m? -# 1689| r1689_31(glval) = FieldAddress[z] : r1689_30 -# 1689| r1689_32(int) = Load[?] : &:r1689_31, ~m? -# 1689| mu1689_33(int) = Store[?] : &:r1689_28, r1689_32 -# 1689| r1689_34(decltype([...](...){...})) = Load[#temp1689:28] : &:r1689_2, ~m? -# 1689| mu1689_35(decltype([...](...){...})) = Store[lambda_inner] : &:r1689_1, r1689_34 -# 1690| v1690_1(void) = NoOp : -# 1688| v1688_8(void) = ReturnIndirection[#this] : &:r1688_6, ~m? -# 1688| v1688_9(void) = ReturnVoid : -# 1688| v1688_10(void) = AliasedUse : ~m? -# 1688| v1688_11(void) = ExitFunction : - -# 1689| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1688, col. 25)::operator()() const)::(lambda [] type at line 1689, col. 29)::operator()() const -# 1689| Block 0 -# 1689| v1689_1(void) = EnterFunction : -# 1689| mu1689_2(unknown) = AliasedDefinition : -# 1689| mu1689_3(unknown) = InitializeNonLocal : -# 1689| r1689_4(glval) = VariableAddress[#this] : -# 1689| mu1689_5(glval) = InitializeParameter[#this] : &:r1689_4 -# 1689| r1689_6(glval) = Load[#this] : &:r1689_4, ~m? -# 1689| mu1689_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1689_6 -# 1689| v1689_8(void) = NoOp : -# 1689| v1689_9(void) = NoOp : -# 1689| v1689_10(void) = ReturnIndirection[#this] : &:r1689_6, ~m? -# 1689| v1689_11(void) = ReturnVoid : -# 1689| v1689_12(void) = AliasedUse : ~m? -# 1689| v1689_13(void) = ExitFunction : - -# 1693| int goto_on_same_line() -# 1693| Block 0 -# 1693| v1693_1(void) = EnterFunction : -# 1693| mu1693_2(unknown) = AliasedDefinition : -# 1693| mu1693_3(unknown) = InitializeNonLocal : -# 1694| r1694_1(glval) = VariableAddress[x] : -# 1694| r1694_2(int) = Constant[42] : -# 1694| mu1694_3(int) = Store[x] : &:r1694_1, r1694_2 -# 1695| v1695_1(void) = NoOp : -# 1695| v1695_2(void) = NoOp : -# 1696| r1696_1(glval) = VariableAddress[#return] : -# 1696| r1696_2(glval) = VariableAddress[x] : -# 1696| r1696_3(int) = Load[x] : &:r1696_2, ~m? -# 1696| mu1696_4(int) = Store[#return] : &:r1696_1, r1696_3 -# 1693| r1693_4(glval) = VariableAddress[#return] : -# 1693| v1693_5(void) = ReturnValue : &:r1693_4, ~m? -# 1693| v1693_6(void) = AliasedUse : ~m? -# 1693| v1693_7(void) = ExitFunction : - -# 1701| void TrivialLambdaClass::m() const -# 1701| Block 0 -# 1701| v1701_1(void) = EnterFunction : -# 1701| mu1701_2(unknown) = AliasedDefinition : -# 1701| mu1701_3(unknown) = InitializeNonLocal : -# 1701| r1701_4(glval) = VariableAddress[#this] : -# 1701| mu1701_5(glval) = InitializeParameter[#this] : &:r1701_4 -# 1701| r1701_6(glval) = Load[#this] : &:r1701_4, ~m? -# 1701| mu1701_7(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1701_6 -# 1702| r1702_1(glval) = VariableAddress[l_m_outer] : -# 1702| r1702_2(glval) = VariableAddress[#temp1702:25] : -# 1702| mu1702_3(decltype([...](...){...})) = Uninitialized[#temp1702:25] : &:r1702_2 -# 1702| r1702_4(glval) = FieldAddress[(captured this)] : r1702_2 -# 1702| r1702_5(glval) = VariableAddress[#this] : -# 1702| r1702_6(TrivialLambdaClass *) = Load[#this] : &:r1702_5, ~m? -# 1702| r1702_7(TrivialLambdaClass) = Load[?] : &:r1702_6, ~m? -# 1702| mu1702_8(TrivialLambdaClass) = Store[?] : &:r1702_4, r1702_7 -# 1702| r1702_9(decltype([...](...){...})) = Load[#temp1702:25] : &:r1702_2, ~m? -# 1702| mu1702_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1702_1, r1702_9 -# 1709| v1709_1(void) = NoOp : -# 1701| v1701_8(void) = ReturnIndirection[#this] : &:r1701_6, ~m? -# 1701| v1701_9(void) = ReturnVoid : -# 1701| v1701_10(void) = AliasedUse : ~m? -# 1701| v1701_11(void) = ExitFunction : - -# 1702| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const -# 1702| Block 0 -# 1702| v1702_1(void) = EnterFunction : -# 1702| mu1702_2(unknown) = AliasedDefinition : -# 1702| mu1702_3(unknown) = InitializeNonLocal : -# 1702| r1702_4(glval) = VariableAddress[#this] : -# 1702| mu1702_5(glval) = InitializeParameter[#this] : &:r1702_4 -# 1702| r1702_6(glval) = Load[#this] : &:r1702_4, ~m? -# 1702| mu1702_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1702_6 -# 1703| r1703_1(glval) = VariableAddress[#this] : -# 1703| r1703_2(lambda [] type at line 1702, col. 26 *) = Load[#this] : &:r1703_1, ~m? -# 1703| r1703_3(glval) = FieldAddress[(captured this)] : r1703_2 -# 1703| r1703_4(TrivialLambdaClass *) = CopyValue : r1703_3 -# 1703| r1703_5(glval) = FunctionAddress[m] : -# 1703| v1703_6(void) = Call[m] : func:r1703_5, this:r1703_4 -# 1703| mu1703_7(unknown) = ^CallSideEffect : ~m? -# 1703| v1703_8(void) = ^IndirectReadSideEffect[-1] : &:r1703_4, ~m? -# 1705| r1705_1(glval) = VariableAddress[l_m_inner] : -# 1705| r1705_2(glval) = VariableAddress[#temp1705:29] : -# 1705| mu1705_3(decltype([...](...){...})) = Uninitialized[#temp1705:29] : &:r1705_2 -# 1705| r1705_4(glval) = FieldAddress[(captured this)] : r1705_2 -# 1705| r1705_5(glval) = VariableAddress[#this] : -# 1705| r1705_6(lambda [] type at line 1705, col. 30 *) = Load[#this] : &:r1705_5, ~m? -# 1705| r1705_7(glval) = FieldAddress[(captured this)] : r1705_6 -# 1705| r1705_8(TrivialLambdaClass) = Load[?] : &:r1705_7, ~m? -# 1705| mu1705_9(TrivialLambdaClass) = Store[?] : &:r1705_4, r1705_8 -# 1705| r1705_10(decltype([...](...){...})) = Load[#temp1705:29] : &:r1705_2, ~m? -# 1705| mu1705_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1705_1, r1705_10 -# 1708| v1708_1(void) = NoOp : -# 1702| v1702_8(void) = ReturnIndirection[#this] : &:r1702_6, ~m? -# 1702| v1702_9(void) = ReturnVoid : -# 1702| v1702_10(void) = AliasedUse : ~m? -# 1702| v1702_11(void) = ExitFunction : - -# 1705| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1702, col. 26)::operator()() const)::(lambda [] type at line 1705, col. 30)::operator()() const -# 1705| Block 0 -# 1705| v1705_1(void) = EnterFunction : -# 1705| mu1705_2(unknown) = AliasedDefinition : -# 1705| mu1705_3(unknown) = InitializeNonLocal : -# 1705| r1705_4(glval) = VariableAddress[#this] : -# 1705| mu1705_5(glval) = InitializeParameter[#this] : &:r1705_4 -# 1705| r1705_6(glval) = Load[#this] : &:r1705_4, ~m? -# 1705| mu1705_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1705_6 -# 1706| r1706_1(glval) = VariableAddress[#this] : -# 1706| r1706_2(lambda [] type at line 1705, col. 30 *) = Load[#this] : &:r1706_1, ~m? -# 1706| r1706_3(glval) = FieldAddress[(captured this)] : r1706_2 -# 1706| r1706_4(TrivialLambdaClass *) = CopyValue : r1706_3 -# 1706| r1706_5(glval) = FunctionAddress[m] : -# 1706| v1706_6(void) = Call[m] : func:r1706_5, this:r1706_4 -# 1706| mu1706_7(unknown) = ^CallSideEffect : ~m? -# 1706| v1706_8(void) = ^IndirectReadSideEffect[-1] : &:r1706_4, ~m? -# 1707| v1707_1(void) = NoOp : -# 1705| v1705_8(void) = ReturnIndirection[#this] : &:r1705_6, ~m? -# 1705| v1705_9(void) = ReturnVoid : -# 1705| v1705_10(void) = AliasedUse : ~m? -# 1705| v1705_11(void) = ExitFunction : - -# 1712| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1712| Block 0 -# 1712| v1712_1(void) = EnterFunction : -# 1712| mu1712_2(unknown) = AliasedDefinition : -# 1712| mu1712_3(unknown) = InitializeNonLocal : -# 1712| r1712_4(glval) = VariableAddress[p1] : -# 1712| mu1712_5(TrivialLambdaClass) = InitializeParameter[p1] : &:r1712_4 -# 1712| r1712_6(glval) = VariableAddress[p2] : -# 1712| mu1712_7(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1712_6 -# 1712| r1712_8(TrivialLambdaClass &) = Load[p2] : &:r1712_6, ~m? -# 1712| mu1712_9(unknown) = InitializeIndirection[p2] : &:r1712_8 -# 1712| r1712_10(glval) = VariableAddress[p3] : -# 1712| mu1712_11(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1712_10 -# 1712| r1712_12(TrivialLambdaClass &&) = Load[p3] : &:r1712_10, ~m? -# 1712| mu1712_13(unknown) = InitializeIndirection[p3] : &:r1712_12 -# 1713| r1713_1(glval) = VariableAddress[l1] : -# 1713| mu1713_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1713_1 -# 1714| r1714_1(glval) = VariableAddress[l2] : -# 1714| r1714_2(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_3(TrivialLambdaClass) = Constant[0] : -# 1714| mu1714_4(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_3 -# 1714| r1714_5(glval) = Convert : r1714_2 -# 1714| r1714_6(TrivialLambdaClass &) = CopyValue : r1714_5 -# 1714| mu1714_7(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_6 -# 1716| r1716_1(glval) = VariableAddress[l_outer1] : -# 1716| r1716_2(glval) = VariableAddress[#temp1716:20] : -# 1716| mu1716_3(decltype([...](...){...})) = Uninitialized[#temp1716:20] : &:r1716_2 -# 1716| r1716_4(glval) = FieldAddress[p1] : r1716_2 -# 1716| r1716_5(glval) = VariableAddress[p1] : -# 1716| r1716_6(TrivialLambdaClass) = Load[p1] : &:r1716_5, ~m? -# 1716| mu1716_7(TrivialLambdaClass) = Store[?] : &:r1716_4, r1716_6 -# 1716| r1716_8(glval) = FieldAddress[p2] : r1716_2 -# 1716| r1716_9(glval) = VariableAddress[p2] : -# 1716| r1716_10(TrivialLambdaClass &) = Load[p2] : &:r1716_9, ~m? -#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1716_10, ~m? -#-----| mu0_2(TrivialLambdaClass) = Store[?] : &:r1716_8, r0_1 -# 1716| r1716_11(glval) = FieldAddress[p3] : r1716_2 -# 1716| r1716_12(glval) = VariableAddress[p3] : -# 1716| r1716_13(TrivialLambdaClass &&) = Load[p3] : &:r1716_12, ~m? -#-----| r0_3(TrivialLambdaClass) = Load[?] : &:r1716_13, ~m? -#-----| mu0_4(TrivialLambdaClass) = Store[?] : &:r1716_11, r0_3 -# 1716| r1716_14(glval) = FieldAddress[l1] : r1716_2 -# 1716| r1716_15(glval) = VariableAddress[l1] : -# 1716| r1716_16(TrivialLambdaClass) = Load[l1] : &:r1716_15, ~m? -# 1716| mu1716_17(TrivialLambdaClass) = Store[?] : &:r1716_14, r1716_16 -# 1716| r1716_18(glval) = FieldAddress[l2] : r1716_2 -# 1716| r1716_19(glval) = VariableAddress[l2] : -# 1716| r1716_20(TrivialLambdaClass &) = Load[l2] : &:r1716_19, ~m? -#-----| r0_5(TrivialLambdaClass) = Load[?] : &:r1716_20, ~m? -#-----| mu0_6(TrivialLambdaClass) = Store[?] : &:r1716_18, r0_5 -# 1716| r1716_21(decltype([...](...){...})) = Load[#temp1716:20] : &:r1716_2, ~m? -# 1716| mu1716_22(decltype([...](...){...})) = Store[l_outer1] : &:r1716_1, r1716_21 -# 1719| v1719_1(void) = NoOp : -# 1712| v1712_14(void) = ReturnIndirection[p2] : &:r1712_8, ~m? -# 1712| v1712_15(void) = ReturnIndirection[p3] : &:r1712_12, ~m? -# 1712| v1712_16(void) = ReturnVoid : -# 1712| v1712_17(void) = AliasedUse : ~m? -# 1712| v1712_18(void) = ExitFunction : - -# 1716| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const -# 1716| Block 0 -# 1716| v1716_1(void) = EnterFunction : -# 1716| mu1716_2(unknown) = AliasedDefinition : -# 1716| mu1716_3(unknown) = InitializeNonLocal : -# 1716| r1716_4(glval) = VariableAddress[#this] : -# 1716| mu1716_5(glval) = InitializeParameter[#this] : &:r1716_4 -# 1716| r1716_6(glval) = Load[#this] : &:r1716_4, ~m? -# 1716| mu1716_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1716_6 -# 1717| r1717_1(glval) = VariableAddress[l_inner1] : -# 1717| r1717_2(glval) = VariableAddress[#temp1717:24] : -# 1717| mu1717_3(decltype([...](...){...})) = Uninitialized[#temp1717:24] : &:r1717_2 -# 1717| r1717_4(glval) = FieldAddress[p1] : r1717_2 -# 1717| r1717_5(glval) = VariableAddress[#this] : -# 1717| r1717_6(lambda [] type at line 1717, col. 25 *) = Load[#this] : &:r1717_5, ~m? -# 1717| r1717_7(glval) = FieldAddress[p1] : r1717_6 -# 1717| r1717_8(TrivialLambdaClass) = Load[?] : &:r1717_7, ~m? -# 1717| mu1717_9(TrivialLambdaClass) = Store[?] : &:r1717_4, r1717_8 -# 1717| r1717_10(decltype([...](...){...})) = Load[#temp1717:24] : &:r1717_2, ~m? -# 1717| mu1717_11(decltype([...](...){...})) = Store[l_inner1] : &:r1717_1, r1717_10 -# 1718| v1718_1(void) = NoOp : -# 1716| v1716_8(void) = ReturnIndirection[#this] : &:r1716_6, ~m? -# 1716| v1716_9(void) = ReturnVoid : -# 1716| v1716_10(void) = AliasedUse : ~m? -# 1716| v1716_11(void) = ExitFunction : - -# 1717| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1716, col. 21)::operator()() const)::(lambda [] type at line 1717, col. 25)::operator()() const -# 1717| Block 0 -# 1717| v1717_1(void) = EnterFunction : -# 1717| mu1717_2(unknown) = AliasedDefinition : -# 1717| mu1717_3(unknown) = InitializeNonLocal : -# 1717| r1717_4(glval) = VariableAddress[#this] : -# 1717| mu1717_5(glval) = InitializeParameter[#this] : &:r1717_4 -# 1717| r1717_6(glval) = Load[#this] : &:r1717_4, ~m? -# 1717| mu1717_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1717_6 -# 1717| v1717_8(void) = NoOp : -# 1717| v1717_9(void) = ReturnIndirection[#this] : &:r1717_6, ~m? -# 1717| v1717_10(void) = ReturnVoid : -# 1717| v1717_11(void) = AliasedUse : ~m? -# 1717| v1717_12(void) = ExitFunction : - -# 1724| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1724| Block 0 -# 1724| v1724_1(void) = EnterFunction : -# 1724| mu1724_2(unknown) = AliasedDefinition : -# 1724| mu1724_3(unknown) = InitializeNonLocal : -# 1724| r1724_4(glval) = VariableAddress[#this] : -# 1724| mu1724_5(glval) = InitializeParameter[#this] : &:r1724_4 -# 1724| r1724_6(glval) = Load[#this] : &:r1724_4, ~m? -# 1724| mu1724_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1724_6 -# 1724| v1724_8(void) = NoOp : -# 1724| v1724_9(void) = ReturnIndirection[#this] : &:r1724_6, ~m? -# 1724| v1724_10(void) = ReturnVoid : -# 1724| v1724_11(void) = AliasedUse : ~m? -# 1724| v1724_12(void) = ExitFunction : - -# 1725| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1725| Block 0 -# 1725| v1725_1(void) = EnterFunction : -# 1725| mu1725_2(unknown) = AliasedDefinition : -# 1725| mu1725_3(unknown) = InitializeNonLocal : -# 1725| r1725_4(glval) = VariableAddress[#this] : -# 1725| mu1725_5(glval) = InitializeParameter[#this] : &:r1725_4 -# 1725| r1725_6(glval) = Load[#this] : &:r1725_4, ~m? -# 1725| mu1725_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1725_6 -# 1725| r1725_8(glval) = VariableAddress[c] : -# 1725| mu1725_9(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1725_8 -# 1725| r1725_10(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1725_8, ~m? -# 1725| mu1725_11(unknown) = InitializeIndirection[c] : &:r1725_10 -# 1726| r1726_1(glval) = VariableAddress[c] : -# 1726| r1726_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1726_1, ~m? -# 1726| r1726_3(glval) = CopyValue : r1726_2 -# 1726| r1726_4(glval) = FieldAddress[x] : r1726_3 -# 1726| r1726_5(int) = Load[?] : &:r1726_4, ~m? -# 1726| r1726_6(glval) = VariableAddress[#this] : -# 1726| r1726_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1726_6, ~m? -# 1726| r1726_8(glval) = FieldAddress[x] : r1726_7 -# 1726| mu1726_9(int) = Store[?] : &:r1726_8, r1726_5 -# 1727| v1727_1(void) = NoOp : -# 1725| v1725_12(void) = ReturnIndirection[#this] : &:r1725_6, ~m? -# 1725| v1725_13(void) = ReturnIndirection[c] : &:r1725_10, ~m? -# 1725| v1725_14(void) = ReturnVoid : -# 1725| v1725_15(void) = AliasedUse : ~m? -# 1725| v1725_16(void) = ExitFunction : - -# 1733| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1733| Block 0 -# 1733| v1733_1(void) = EnterFunction : -# 1733| mu1733_2(unknown) = AliasedDefinition : -# 1733| mu1733_3(unknown) = InitializeNonLocal : -# 1733| r1733_4(glval) = VariableAddress[#this] : -# 1733| mu1733_5(glval) = InitializeParameter[#this] : &:r1733_4 -# 1733| r1733_6(glval) = Load[#this] : &:r1733_4, ~m? -# 1733| mu1733_7(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1733_6 -# 1733| v1733_8(void) = NoOp : -# 1733| v1733_9(void) = ReturnIndirection[#this] : &:r1733_6, ~m? -# 1733| v1733_10(void) = ReturnVoid : -# 1733| v1733_11(void) = AliasedUse : ~m? -# 1733| v1733_12(void) = ExitFunction : - -# 1736| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) -# 1736| Block 0 -# 1736| v1736_1(void) = EnterFunction : -# 1736| mu1736_2(unknown) = AliasedDefinition : -# 1736| mu1736_3(unknown) = InitializeNonLocal : -# 1736| r1736_4(glval) = VariableAddress[#this] : -# 1736| mu1736_5(glval) = InitializeParameter[#this] : &:r1736_4 -# 1736| r1736_6(glval) = Load[#this] : &:r1736_4, ~m? -# 1736| mu1736_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1736_6 +#-----| mu0_10(int &) = Store[x1] : &:r1676_6, r0_9 +# 1677| v1677_1(void) = NoOp : +# 1674| v1674_4(void) = ReturnVoid : +# 1674| v1674_5(void) = AliasedUse : ~m? +# 1674| v1674_6(void) = ExitFunction : + +# 1682| void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1682| Block 0 +# 1682| v1682_1(void) = EnterFunction : +# 1682| mu1682_2(unknown) = AliasedDefinition : +# 1682| mu1682_3(unknown) = InitializeNonLocal : +# 1682| r1682_4(glval) = VariableAddress[#this] : +# 1682| mu1682_5(glval) = InitializeParameter[#this] : &:r1682_4 +# 1682| r1682_6(glval) = Load[#this] : &:r1682_4, ~m? +# 1682| mu1682_7(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1682_6 +# 1682| v1682_8(void) = NoOp : +# 1682| v1682_9(void) = ReturnIndirection[#this] : &:r1682_6, ~m? +# 1682| v1682_10(void) = ReturnVoid : +# 1682| v1682_11(void) = AliasedUse : ~m? +# 1682| v1682_12(void) = ExitFunction : + +# 1685| void captured_lambda(int, int&, int&&) +# 1685| Block 0 +# 1685| v1685_1(void) = EnterFunction : +# 1685| mu1685_2(unknown) = AliasedDefinition : +# 1685| mu1685_3(unknown) = InitializeNonLocal : +# 1685| r1685_4(glval) = VariableAddress[x] : +# 1685| mu1685_5(int) = InitializeParameter[x] : &:r1685_4 +# 1685| r1685_6(glval) = VariableAddress[y] : +# 1685| mu1685_7(int &) = InitializeParameter[y] : &:r1685_6 +# 1685| r1685_8(int &) = Load[y] : &:r1685_6, ~m? +# 1685| mu1685_9(unknown) = InitializeIndirection[y] : &:r1685_8 +# 1685| r1685_10(glval) = VariableAddress[z] : +# 1685| mu1685_11(int &&) = InitializeParameter[z] : &:r1685_10 +# 1685| r1685_12(int &&) = Load[z] : &:r1685_10, ~m? +# 1685| mu1685_13(unknown) = InitializeIndirection[z] : &:r1685_12 +# 1687| r1687_1(glval) = VariableAddress[obj1] : +# 1687| r1687_2(glval) = VariableAddress[#temp1687:24] : +# 1687| mu1687_3(CapturedLambdaMyObj) = Uninitialized[#temp1687:24] : &:r1687_2 +# 1687| r1687_4(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1687| v1687_5(void) = Call[CapturedLambdaMyObj] : func:r1687_4, this:r1687_2 +# 1687| mu1687_6(unknown) = ^CallSideEffect : ~m? +# 1687| mu1687_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1687_2 +# 1687| r1687_8(glval) = Convert : r1687_2 +# 1687| r1687_9(CapturedLambdaMyObj &) = CopyValue : r1687_8 +# 1687| mu1687_10(CapturedLambdaMyObj &) = Store[obj1] : &:r1687_1, r1687_9 +# 1688| r1688_1(glval) = VariableAddress[obj2] : +# 1688| mu1688_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1688_1 +# 1688| r1688_3(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1688| v1688_4(void) = Call[CapturedLambdaMyObj] : func:r1688_3, this:r1688_1 +# 1688| mu1688_5(unknown) = ^CallSideEffect : ~m? +# 1688| mu1688_6(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1688_1 +# 1690| r1690_1(glval) = VariableAddress[lambda_outer] : +# 1690| r1690_2(glval) = VariableAddress[#temp1690:24] : +# 1690| mu1690_3(decltype([...](...){...})) = Uninitialized[#temp1690:24] : &:r1690_2 +# 1690| r1690_4(glval) = FieldAddress[obj1] : r1690_2 +# 1690| r1690_5(glval) = VariableAddress[obj1] : +# 1690| r1690_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1690_5, ~m? +#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1690_6, ~m? +#-----| mu0_2(CapturedLambdaMyObj) = Store[?] : &:r1690_4, r0_1 +# 1690| r1690_7(glval) = FieldAddress[obj2] : r1690_2 +# 1690| r1690_8(glval) = VariableAddress[obj2] : +# 1690| r1690_9(CapturedLambdaMyObj) = Load[obj2] : &:r1690_8, ~m? +# 1690| mu1690_10(CapturedLambdaMyObj) = Store[?] : &:r1690_7, r1690_9 +# 1690| r1690_11(glval) = FieldAddress[x] : r1690_2 +# 1690| r1690_12(glval) = VariableAddress[x] : +# 1690| r1690_13(int) = Load[x] : &:r1690_12, ~m? +# 1690| mu1690_14(int) = Store[?] : &:r1690_11, r1690_13 +# 1690| r1690_15(glval) = FieldAddress[y] : r1690_2 +# 1690| r1690_16(glval) = VariableAddress[y] : +# 1690| r1690_17(int &) = Load[y] : &:r1690_16, ~m? +# 1692| r1692_1(int) = Load[?] : &:r1690_17, ~m? +# 1692| mu1692_2(int) = Store[?] : &:r1690_15, r1692_1 +# 1690| r1690_18(glval) = FieldAddress[z] : r1690_2 +# 1690| r1690_19(glval) = VariableAddress[z] : +# 1690| r1690_20(int &&) = Load[z] : &:r1690_19, ~m? +# 1692| r1692_3(int) = Load[?] : &:r1690_20, ~m? +# 1692| mu1692_4(int) = Store[?] : &:r1690_18, r1692_3 +# 1690| r1690_21(decltype([...](...){...})) = Load[#temp1690:24] : &:r1690_2, ~m? +# 1690| mu1690_22(decltype([...](...){...})) = Store[lambda_outer] : &:r1690_1, r1690_21 +# 1693| v1693_1(void) = NoOp : +# 1685| v1685_14(void) = ReturnIndirection[y] : &:r1685_8, ~m? +# 1685| v1685_15(void) = ReturnIndirection[z] : &:r1685_12, ~m? +# 1685| v1685_16(void) = ReturnVoid : +# 1685| v1685_17(void) = AliasedUse : ~m? +# 1685| v1685_18(void) = ExitFunction : + +# 1690| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const +# 1690| Block 0 +# 1690| v1690_1(void) = EnterFunction : +# 1690| mu1690_2(unknown) = AliasedDefinition : +# 1690| mu1690_3(unknown) = InitializeNonLocal : +# 1690| r1690_4(glval) = VariableAddress[#this] : +# 1690| mu1690_5(glval) = InitializeParameter[#this] : &:r1690_4 +# 1690| r1690_6(glval) = Load[#this] : &:r1690_4, ~m? +# 1690| mu1690_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1690_6 +# 1691| r1691_1(glval) = VariableAddress[lambda_inner] : +# 1691| r1691_2(glval) = VariableAddress[#temp1691:28] : +# 1691| mu1691_3(decltype([...](...){...})) = Uninitialized[#temp1691:28] : &:r1691_2 +# 1691| r1691_4(glval) = FieldAddress[obj1] : r1691_2 +# 1691| r1691_5(glval) = VariableAddress[#this] : +# 1691| r1691_6(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_5, ~m? +# 1691| r1691_7(glval) = FieldAddress[obj1] : r1691_6 +# 1691| r1691_8(CapturedLambdaMyObj) = Load[?] : &:r1691_7, ~m? +# 1691| mu1691_9(CapturedLambdaMyObj) = Store[?] : &:r1691_4, r1691_8 +# 1691| r1691_10(glval) = FieldAddress[obj2] : r1691_2 +# 1691| r1691_11(glval) = VariableAddress[#this] : +# 1691| r1691_12(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_11, ~m? +# 1691| r1691_13(glval) = FieldAddress[obj2] : r1691_12 +# 1691| r1691_14(CapturedLambdaMyObj) = Load[?] : &:r1691_13, ~m? +# 1691| mu1691_15(CapturedLambdaMyObj) = Store[?] : &:r1691_10, r1691_14 +# 1691| r1691_16(glval) = FieldAddress[x] : r1691_2 +# 1691| r1691_17(glval) = VariableAddress[#this] : +# 1691| r1691_18(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_17, ~m? +# 1691| r1691_19(glval) = FieldAddress[x] : r1691_18 +# 1691| r1691_20(int) = Load[?] : &:r1691_19, ~m? +# 1691| mu1691_21(int) = Store[?] : &:r1691_16, r1691_20 +# 1691| r1691_22(glval) = FieldAddress[y] : r1691_2 +# 1691| r1691_23(glval) = VariableAddress[#this] : +# 1691| r1691_24(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_23, ~m? +# 1691| r1691_25(glval) = FieldAddress[y] : r1691_24 +# 1691| r1691_26(int) = Load[?] : &:r1691_25, ~m? +# 1691| mu1691_27(int) = Store[?] : &:r1691_22, r1691_26 +# 1691| r1691_28(glval) = FieldAddress[z] : r1691_2 +# 1691| r1691_29(glval) = VariableAddress[#this] : +# 1691| r1691_30(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_29, ~m? +# 1691| r1691_31(glval) = FieldAddress[z] : r1691_30 +# 1691| r1691_32(int) = Load[?] : &:r1691_31, ~m? +# 1691| mu1691_33(int) = Store[?] : &:r1691_28, r1691_32 +# 1691| r1691_34(decltype([...](...){...})) = Load[#temp1691:28] : &:r1691_2, ~m? +# 1691| mu1691_35(decltype([...](...){...})) = Store[lambda_inner] : &:r1691_1, r1691_34 +# 1692| v1692_1(void) = NoOp : +# 1690| v1690_8(void) = ReturnIndirection[#this] : &:r1690_6, ~m? +# 1690| v1690_9(void) = ReturnVoid : +# 1690| v1690_10(void) = AliasedUse : ~m? +# 1690| v1690_11(void) = ExitFunction : + +# 1691| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator()() const +# 1691| Block 0 +# 1691| v1691_1(void) = EnterFunction : +# 1691| mu1691_2(unknown) = AliasedDefinition : +# 1691| mu1691_3(unknown) = InitializeNonLocal : +# 1691| r1691_4(glval) = VariableAddress[#this] : +# 1691| mu1691_5(glval) = InitializeParameter[#this] : &:r1691_4 +# 1691| r1691_6(glval) = Load[#this] : &:r1691_4, ~m? +# 1691| mu1691_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1691_6 +# 1691| v1691_8(void) = NoOp : +# 1691| v1691_9(void) = NoOp : +# 1691| v1691_10(void) = ReturnIndirection[#this] : &:r1691_6, ~m? +# 1691| v1691_11(void) = ReturnVoid : +# 1691| v1691_12(void) = AliasedUse : ~m? +# 1691| v1691_13(void) = ExitFunction : + +# 1695| int goto_on_same_line() +# 1695| Block 0 +# 1695| v1695_1(void) = EnterFunction : +# 1695| mu1695_2(unknown) = AliasedDefinition : +# 1695| mu1695_3(unknown) = InitializeNonLocal : +# 1696| r1696_1(glval) = VariableAddress[x] : +# 1696| r1696_2(int) = Constant[42] : +# 1696| mu1696_3(int) = Store[x] : &:r1696_1, r1696_2 +# 1697| v1697_1(void) = NoOp : +# 1697| v1697_2(void) = NoOp : +# 1698| r1698_1(glval) = VariableAddress[#return] : +# 1698| r1698_2(glval) = VariableAddress[x] : +# 1698| r1698_3(int) = Load[x] : &:r1698_2, ~m? +# 1698| mu1698_4(int) = Store[#return] : &:r1698_1, r1698_3 +# 1695| r1695_4(glval) = VariableAddress[#return] : +# 1695| v1695_5(void) = ReturnValue : &:r1695_4, ~m? +# 1695| v1695_6(void) = AliasedUse : ~m? +# 1695| v1695_7(void) = ExitFunction : + +# 1703| void TrivialLambdaClass::m() const +# 1703| Block 0 +# 1703| v1703_1(void) = EnterFunction : +# 1703| mu1703_2(unknown) = AliasedDefinition : +# 1703| mu1703_3(unknown) = InitializeNonLocal : +# 1703| r1703_4(glval) = VariableAddress[#this] : +# 1703| mu1703_5(glval) = InitializeParameter[#this] : &:r1703_4 +# 1703| r1703_6(glval) = Load[#this] : &:r1703_4, ~m? +# 1703| mu1703_7(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1703_6 +# 1704| r1704_1(glval) = VariableAddress[l_m_outer] : +# 1704| r1704_2(glval) = VariableAddress[#temp1704:25] : +# 1704| mu1704_3(decltype([...](...){...})) = Uninitialized[#temp1704:25] : &:r1704_2 +# 1704| r1704_4(glval) = FieldAddress[(captured this)] : r1704_2 +# 1704| r1704_5(glval) = VariableAddress[#this] : +# 1704| r1704_6(TrivialLambdaClass *) = Load[#this] : &:r1704_5, ~m? +# 1704| r1704_7(TrivialLambdaClass) = Load[?] : &:r1704_6, ~m? +# 1704| mu1704_8(TrivialLambdaClass) = Store[?] : &:r1704_4, r1704_7 +# 1704| r1704_9(decltype([...](...){...})) = Load[#temp1704:25] : &:r1704_2, ~m? +# 1704| mu1704_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1704_1, r1704_9 +# 1711| v1711_1(void) = NoOp : +# 1703| v1703_8(void) = ReturnIndirection[#this] : &:r1703_6, ~m? +# 1703| v1703_9(void) = ReturnVoid : +# 1703| v1703_10(void) = AliasedUse : ~m? +# 1703| v1703_11(void) = ExitFunction : + +# 1704| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const +# 1704| Block 0 +# 1704| v1704_1(void) = EnterFunction : +# 1704| mu1704_2(unknown) = AliasedDefinition : +# 1704| mu1704_3(unknown) = InitializeNonLocal : +# 1704| r1704_4(glval) = VariableAddress[#this] : +# 1704| mu1704_5(glval) = InitializeParameter[#this] : &:r1704_4 +# 1704| r1704_6(glval) = Load[#this] : &:r1704_4, ~m? +# 1704| mu1704_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1704_6 +# 1705| r1705_1(glval) = VariableAddress[#this] : +# 1705| r1705_2(lambda [] type at line 1704, col. 26 *) = Load[#this] : &:r1705_1, ~m? +# 1705| r1705_3(glval) = FieldAddress[(captured this)] : r1705_2 +# 1705| r1705_4(TrivialLambdaClass *) = CopyValue : r1705_3 +# 1705| r1705_5(glval) = FunctionAddress[m] : +# 1705| v1705_6(void) = Call[m] : func:r1705_5, this:r1705_4 +# 1705| mu1705_7(unknown) = ^CallSideEffect : ~m? +# 1705| v1705_8(void) = ^IndirectReadSideEffect[-1] : &:r1705_4, ~m? +# 1707| r1707_1(glval) = VariableAddress[l_m_inner] : +# 1707| r1707_2(glval) = VariableAddress[#temp1707:29] : +# 1707| mu1707_3(decltype([...](...){...})) = Uninitialized[#temp1707:29] : &:r1707_2 +# 1707| r1707_4(glval) = FieldAddress[(captured this)] : r1707_2 +# 1707| r1707_5(glval) = VariableAddress[#this] : +# 1707| r1707_6(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1707_5, ~m? +# 1707| r1707_7(glval) = FieldAddress[(captured this)] : r1707_6 +# 1707| r1707_8(TrivialLambdaClass) = Load[?] : &:r1707_7, ~m? +# 1707| mu1707_9(TrivialLambdaClass) = Store[?] : &:r1707_4, r1707_8 +# 1707| r1707_10(decltype([...](...){...})) = Load[#temp1707:29] : &:r1707_2, ~m? +# 1707| mu1707_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1707_1, r1707_10 +# 1710| v1710_1(void) = NoOp : +# 1704| v1704_8(void) = ReturnIndirection[#this] : &:r1704_6, ~m? +# 1704| v1704_9(void) = ReturnVoid : +# 1704| v1704_10(void) = AliasedUse : ~m? +# 1704| v1704_11(void) = ExitFunction : + +# 1707| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator()() const +# 1707| Block 0 +# 1707| v1707_1(void) = EnterFunction : +# 1707| mu1707_2(unknown) = AliasedDefinition : +# 1707| mu1707_3(unknown) = InitializeNonLocal : +# 1707| r1707_4(glval) = VariableAddress[#this] : +# 1707| mu1707_5(glval) = InitializeParameter[#this] : &:r1707_4 +# 1707| r1707_6(glval) = Load[#this] : &:r1707_4, ~m? +# 1707| mu1707_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1707_6 +# 1708| r1708_1(glval) = VariableAddress[#this] : +# 1708| r1708_2(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1708_1, ~m? +# 1708| r1708_3(glval) = FieldAddress[(captured this)] : r1708_2 +# 1708| r1708_4(TrivialLambdaClass *) = CopyValue : r1708_3 +# 1708| r1708_5(glval) = FunctionAddress[m] : +# 1708| v1708_6(void) = Call[m] : func:r1708_5, this:r1708_4 +# 1708| mu1708_7(unknown) = ^CallSideEffect : ~m? +# 1708| v1708_8(void) = ^IndirectReadSideEffect[-1] : &:r1708_4, ~m? +# 1709| v1709_1(void) = NoOp : +# 1707| v1707_8(void) = ReturnIndirection[#this] : &:r1707_6, ~m? +# 1707| v1707_9(void) = ReturnVoid : +# 1707| v1707_10(void) = AliasedUse : ~m? +# 1707| v1707_11(void) = ExitFunction : + +# 1714| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1714| Block 0 +# 1714| v1714_1(void) = EnterFunction : +# 1714| mu1714_2(unknown) = AliasedDefinition : +# 1714| mu1714_3(unknown) = InitializeNonLocal : +# 1714| r1714_4(glval) = VariableAddress[p1] : +# 1714| mu1714_5(TrivialLambdaClass) = InitializeParameter[p1] : &:r1714_4 +# 1714| r1714_6(glval) = VariableAddress[p2] : +# 1714| mu1714_7(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1714_6 +# 1714| r1714_8(TrivialLambdaClass &) = Load[p2] : &:r1714_6, ~m? +# 1714| mu1714_9(unknown) = InitializeIndirection[p2] : &:r1714_8 +# 1714| r1714_10(glval) = VariableAddress[p3] : +# 1714| mu1714_11(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1714_10 +# 1714| r1714_12(TrivialLambdaClass &&) = Load[p3] : &:r1714_10, ~m? +# 1714| mu1714_13(unknown) = InitializeIndirection[p3] : &:r1714_12 +# 1715| r1715_1(glval) = VariableAddress[l1] : +# 1715| mu1715_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1715_1 +# 1716| r1716_1(glval) = VariableAddress[l2] : +# 1716| r1716_2(glval) = VariableAddress[#temp1716:36] : +# 1716| r1716_3(TrivialLambdaClass) = Constant[0] : +# 1716| mu1716_4(TrivialLambdaClass) = Store[#temp1716:36] : &:r1716_2, r1716_3 +# 1716| r1716_5(glval) = Convert : r1716_2 +# 1716| r1716_6(TrivialLambdaClass &) = CopyValue : r1716_5 +# 1716| mu1716_7(TrivialLambdaClass &) = Store[l2] : &:r1716_1, r1716_6 +# 1718| r1718_1(glval) = VariableAddress[l_outer1] : +# 1718| r1718_2(glval) = VariableAddress[#temp1718:20] : +# 1718| mu1718_3(decltype([...](...){...})) = Uninitialized[#temp1718:20] : &:r1718_2 +# 1718| r1718_4(glval) = FieldAddress[p1] : r1718_2 +# 1718| r1718_5(glval) = VariableAddress[p1] : +# 1718| r1718_6(TrivialLambdaClass) = Load[p1] : &:r1718_5, ~m? +# 1718| mu1718_7(TrivialLambdaClass) = Store[?] : &:r1718_4, r1718_6 +# 1718| r1718_8(glval) = FieldAddress[p2] : r1718_2 +# 1718| r1718_9(glval) = VariableAddress[p2] : +# 1718| r1718_10(TrivialLambdaClass &) = Load[p2] : &:r1718_9, ~m? +#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1718_10, ~m? +#-----| mu0_2(TrivialLambdaClass) = Store[?] : &:r1718_8, r0_1 +# 1718| r1718_11(glval) = FieldAddress[p3] : r1718_2 +# 1718| r1718_12(glval) = VariableAddress[p3] : +# 1718| r1718_13(TrivialLambdaClass &&) = Load[p3] : &:r1718_12, ~m? +#-----| r0_3(TrivialLambdaClass) = Load[?] : &:r1718_13, ~m? +#-----| mu0_4(TrivialLambdaClass) = Store[?] : &:r1718_11, r0_3 +# 1718| r1718_14(glval) = FieldAddress[l1] : r1718_2 +# 1718| r1718_15(glval) = VariableAddress[l1] : +# 1718| r1718_16(TrivialLambdaClass) = Load[l1] : &:r1718_15, ~m? +# 1718| mu1718_17(TrivialLambdaClass) = Store[?] : &:r1718_14, r1718_16 +# 1718| r1718_18(glval) = FieldAddress[l2] : r1718_2 +# 1718| r1718_19(glval) = VariableAddress[l2] : +# 1718| r1718_20(TrivialLambdaClass &) = Load[l2] : &:r1718_19, ~m? +#-----| r0_5(TrivialLambdaClass) = Load[?] : &:r1718_20, ~m? +#-----| mu0_6(TrivialLambdaClass) = Store[?] : &:r1718_18, r0_5 +# 1718| r1718_21(decltype([...](...){...})) = Load[#temp1718:20] : &:r1718_2, ~m? +# 1718| mu1718_22(decltype([...](...){...})) = Store[l_outer1] : &:r1718_1, r1718_21 +# 1721| v1721_1(void) = NoOp : +# 1714| v1714_14(void) = ReturnIndirection[p2] : &:r1714_8, ~m? +# 1714| v1714_15(void) = ReturnIndirection[p3] : &:r1714_12, ~m? +# 1714| v1714_16(void) = ReturnVoid : +# 1714| v1714_17(void) = AliasedUse : ~m? +# 1714| v1714_18(void) = ExitFunction : + +# 1718| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const +# 1718| Block 0 +# 1718| v1718_1(void) = EnterFunction : +# 1718| mu1718_2(unknown) = AliasedDefinition : +# 1718| mu1718_3(unknown) = InitializeNonLocal : +# 1718| r1718_4(glval) = VariableAddress[#this] : +# 1718| mu1718_5(glval) = InitializeParameter[#this] : &:r1718_4 +# 1718| r1718_6(glval) = Load[#this] : &:r1718_4, ~m? +# 1718| mu1718_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1718_6 +# 1719| r1719_1(glval) = VariableAddress[l_inner1] : +# 1719| r1719_2(glval) = VariableAddress[#temp1719:24] : +# 1719| mu1719_3(decltype([...](...){...})) = Uninitialized[#temp1719:24] : &:r1719_2 +# 1719| r1719_4(glval) = FieldAddress[p1] : r1719_2 +# 1719| r1719_5(glval) = VariableAddress[#this] : +# 1719| r1719_6(lambda [] type at line 1719, col. 25 *) = Load[#this] : &:r1719_5, ~m? +# 1719| r1719_7(glval) = FieldAddress[p1] : r1719_6 +# 1719| r1719_8(TrivialLambdaClass) = Load[?] : &:r1719_7, ~m? +# 1719| mu1719_9(TrivialLambdaClass) = Store[?] : &:r1719_4, r1719_8 +# 1719| r1719_10(decltype([...](...){...})) = Load[#temp1719:24] : &:r1719_2, ~m? +# 1719| mu1719_11(decltype([...](...){...})) = Store[l_inner1] : &:r1719_1, r1719_10 +# 1720| v1720_1(void) = NoOp : +# 1718| v1718_8(void) = ReturnIndirection[#this] : &:r1718_6, ~m? +# 1718| v1718_9(void) = ReturnVoid : +# 1718| v1718_10(void) = AliasedUse : ~m? +# 1718| v1718_11(void) = ExitFunction : + +# 1719| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator()() const +# 1719| Block 0 +# 1719| v1719_1(void) = EnterFunction : +# 1719| mu1719_2(unknown) = AliasedDefinition : +# 1719| mu1719_3(unknown) = InitializeNonLocal : +# 1719| r1719_4(glval) = VariableAddress[#this] : +# 1719| mu1719_5(glval) = InitializeParameter[#this] : &:r1719_4 +# 1719| r1719_6(glval) = Load[#this] : &:r1719_4, ~m? +# 1719| mu1719_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1719_6 +# 1719| v1719_8(void) = NoOp : +# 1719| v1719_9(void) = ReturnIndirection[#this] : &:r1719_6, ~m? +# 1719| v1719_10(void) = ReturnVoid : +# 1719| v1719_11(void) = AliasedUse : ~m? +# 1719| v1719_12(void) = ExitFunction : + +# 1726| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1726| Block 0 +# 1726| v1726_1(void) = EnterFunction : +# 1726| mu1726_2(unknown) = AliasedDefinition : +# 1726| mu1726_3(unknown) = InitializeNonLocal : +# 1726| r1726_4(glval) = VariableAddress[#this] : +# 1726| mu1726_5(glval) = InitializeParameter[#this] : &:r1726_4 +# 1726| r1726_6(glval) = Load[#this] : &:r1726_4, ~m? +# 1726| mu1726_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1726_6 +# 1726| v1726_8(void) = NoOp : +# 1726| v1726_9(void) = ReturnIndirection[#this] : &:r1726_6, ~m? +# 1726| v1726_10(void) = ReturnVoid : +# 1726| v1726_11(void) = AliasedUse : ~m? +# 1726| v1726_12(void) = ExitFunction : + +# 1727| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1727| Block 0 +# 1727| v1727_1(void) = EnterFunction : +# 1727| mu1727_2(unknown) = AliasedDefinition : +# 1727| mu1727_3(unknown) = InitializeNonLocal : +# 1727| r1727_4(glval) = VariableAddress[#this] : +# 1727| mu1727_5(glval) = InitializeParameter[#this] : &:r1727_4 +# 1727| r1727_6(glval) = Load[#this] : &:r1727_4, ~m? +# 1727| mu1727_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1727_6 +# 1727| r1727_8(glval) = VariableAddress[c] : +# 1727| mu1727_9(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1727_8 +# 1727| r1727_10(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1727_8, ~m? +# 1727| mu1727_11(unknown) = InitializeIndirection[c] : &:r1727_10 +# 1728| r1728_1(glval) = VariableAddress[c] : +# 1728| r1728_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1728_1, ~m? +# 1728| r1728_3(glval) = CopyValue : r1728_2 +# 1728| r1728_4(glval) = FieldAddress[x] : r1728_3 +# 1728| r1728_5(int) = Load[?] : &:r1728_4, ~m? +# 1728| r1728_6(glval) = VariableAddress[#this] : +# 1728| r1728_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1728_6, ~m? +# 1728| r1728_8(glval) = FieldAddress[x] : r1728_7 +# 1728| mu1728_9(int) = Store[?] : &:r1728_8, r1728_5 +# 1729| v1729_1(void) = NoOp : +# 1727| v1727_12(void) = ReturnIndirection[#this] : &:r1727_6, ~m? +# 1727| v1727_13(void) = ReturnIndirection[c] : &:r1727_10, ~m? +# 1727| v1727_14(void) = ReturnVoid : +# 1727| v1727_15(void) = AliasedUse : ~m? +# 1727| v1727_16(void) = ExitFunction : + +# 1735| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1735| Block 0 +# 1735| v1735_1(void) = EnterFunction : +# 1735| mu1735_2(unknown) = AliasedDefinition : +# 1735| mu1735_3(unknown) = InitializeNonLocal : +# 1735| r1735_4(glval) = VariableAddress[#this] : +# 1735| mu1735_5(glval) = InitializeParameter[#this] : &:r1735_4 +# 1735| r1735_6(glval) = Load[#this] : &:r1735_4, ~m? +# 1735| mu1735_7(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1735_6 +# 1735| v1735_8(void) = NoOp : +# 1735| v1735_9(void) = ReturnIndirection[#this] : &:r1735_6, ~m? +# 1735| v1735_10(void) = ReturnVoid : +# 1735| v1735_11(void) = AliasedUse : ~m? +# 1735| v1735_12(void) = ExitFunction : + +# 1738| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1738| Block 0 +# 1738| v1738_1(void) = EnterFunction : +# 1738| mu1738_2(unknown) = AliasedDefinition : +# 1738| mu1738_3(unknown) = InitializeNonLocal : +# 1738| r1738_4(glval) = VariableAddress[#this] : +# 1738| mu1738_5(glval) = InitializeParameter[#this] : &:r1738_4 +# 1738| r1738_6(glval) = Load[#this] : &:r1738_4, ~m? +# 1738| mu1738_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1738_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1736| r1736_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1736_5 -# 1736| r1736_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1736| r1736_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1736| r1736_11(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1736_10, ~m? -# 1736| r1736_12(glval) = CopyValue : r1736_11 -# 1736| r1736_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1736_12 -# 1736| r1736_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1736_13 -# 1736| v1736_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1736_9, this:r1736_8, 0:r1736_14 -# 1736| mu1736_16(unknown) = ^CallSideEffect : ~m? -# 1736| v1736_17(void) = ^BufferReadSideEffect[0] : &:r1736_14, ~m? -# 1736| mu1736_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1736_8 -# 1736| v1736_19(void) = NoOp : -# 1736| v1736_20(void) = ReturnIndirection[#this] : &:r1736_6, ~m? +# 1738| r1738_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1738_5 +# 1738| r1738_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1738| r1738_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1738| r1738_11(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1738_10, ~m? +# 1738| r1738_12(glval) = CopyValue : r1738_11 +# 1738| r1738_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1738_12 +# 1738| r1738_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1738_13 +# 1738| v1738_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1738_9, this:r1738_8, 0:r1738_14 +# 1738| mu1738_16(unknown) = ^CallSideEffect : ~m? +# 1738| v1738_17(void) = ^BufferReadSideEffect[0] : &:r1738_14, ~m? +# 1738| mu1738_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1738_8 +# 1738| v1738_19(void) = NoOp : +# 1738| v1738_20(void) = ReturnIndirection[#this] : &:r1738_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1736| v1736_21(void) = ReturnVoid : -# 1736| v1736_22(void) = AliasedUse : ~m? -# 1736| v1736_23(void) = ExitFunction : - -# 1740| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1740| Block 0 -# 1740| v1740_1(void) = EnterFunction : -# 1740| mu1740_2(unknown) = AliasedDefinition : -# 1740| mu1740_3(unknown) = InitializeNonLocal : -# 1740| r1740_4(glval) = VariableAddress[#this] : -# 1740| mu1740_5(glval) = InitializeParameter[#this] : &:r1740_4 -# 1740| r1740_6(glval) = Load[#this] : &:r1740_4, ~m? -# 1740| mu1740_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1740_6 -# 1740| r1740_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1740_5 -# 1740| r1740_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1740| v1740_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1740_9, this:r1740_8 -# 1740| mu1740_11(unknown) = ^CallSideEffect : ~m? -# 1740| mu1740_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1740_8 -# 1740| r1740_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1740_5 -# 1740| r1740_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1740| v1740_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1740_14, this:r1740_13 -# 1740| mu1740_16(unknown) = ^CallSideEffect : ~m? -# 1740| mu1740_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1740_13 -# 1740| v1740_18(void) = NoOp : -# 1740| v1740_19(void) = ReturnIndirection[#this] : &:r1740_6, ~m? -# 1740| v1740_20(void) = ReturnVoid : -# 1740| v1740_21(void) = AliasedUse : ~m? -# 1740| v1740_22(void) = ExitFunction : - -# 1743| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1743| Block 0 -# 1743| v1743_1(void) = EnterFunction : -# 1743| mu1743_2(unknown) = AliasedDefinition : -# 1743| mu1743_3(unknown) = InitializeNonLocal : -# 1743| r1743_4(glval) = VariableAddress[#this] : -# 1743| mu1743_5(glval) = InitializeParameter[#this] : &:r1743_4 -# 1743| r1743_6(glval) = Load[#this] : &:r1743_4, ~m? -# 1743| mu1743_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1743_6 +# 1738| v1738_21(void) = ReturnVoid : +# 1738| v1738_22(void) = AliasedUse : ~m? +# 1738| v1738_23(void) = ExitFunction : + +# 1742| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1742| Block 0 +# 1742| v1742_1(void) = EnterFunction : +# 1742| mu1742_2(unknown) = AliasedDefinition : +# 1742| mu1742_3(unknown) = InitializeNonLocal : +# 1742| r1742_4(glval) = VariableAddress[#this] : +# 1742| mu1742_5(glval) = InitializeParameter[#this] : &:r1742_4 +# 1742| r1742_6(glval) = Load[#this] : &:r1742_4, ~m? +# 1742| mu1742_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1742_6 +# 1742| r1742_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1742_5 +# 1742| r1742_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1742| v1742_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1742_9, this:r1742_8 +# 1742| mu1742_11(unknown) = ^CallSideEffect : ~m? +# 1742| mu1742_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_8 +# 1742| r1742_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1742_5 +# 1742| r1742_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1742| v1742_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1742_14, this:r1742_13 +# 1742| mu1742_16(unknown) = ^CallSideEffect : ~m? +# 1742| mu1742_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_13 +# 1742| v1742_18(void) = NoOp : +# 1742| v1742_19(void) = ReturnIndirection[#this] : &:r1742_6, ~m? +# 1742| v1742_20(void) = ReturnVoid : +# 1742| v1742_21(void) = AliasedUse : ~m? +# 1742| v1742_22(void) = ExitFunction : + +# 1745| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1745| Block 0 +# 1745| v1745_1(void) = EnterFunction : +# 1745| mu1745_2(unknown) = AliasedDefinition : +# 1745| mu1745_3(unknown) = InitializeNonLocal : +# 1745| r1745_4(glval) = VariableAddress[#this] : +# 1745| mu1745_5(glval) = InitializeParameter[#this] : &:r1745_4 +# 1745| r1745_6(glval) = Load[#this] : &:r1745_4, ~m? +# 1745| mu1745_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1745_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(CopyConstructorTestVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1743| r1743_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1743_5 -# 1743| r1743_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1743| r1743_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1743| r1743_11(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1743_10, ~m? -# 1743| r1743_12(glval) = CopyValue : r1743_11 -# 1743| r1743_13(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1743_12 -# 1743| r1743_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1743_13 -# 1743| v1743_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1743_9, this:r1743_8, 0:r1743_14 -# 1743| mu1743_16(unknown) = ^CallSideEffect : ~m? -# 1743| v1743_17(void) = ^BufferReadSideEffect[0] : &:r1743_14, ~m? -# 1743| mu1743_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1743_8 -# 1743| v1743_19(void) = NoOp : -# 1743| v1743_20(void) = ReturnIndirection[#this] : &:r1743_6, ~m? +# 1745| r1745_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1745_5 +# 1745| r1745_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1745| r1745_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1745| r1745_11(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1745_10, ~m? +# 1745| r1745_12(glval) = CopyValue : r1745_11 +# 1745| r1745_13(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1745_12 +# 1745| r1745_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1745_13 +# 1745| v1745_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1745_9, this:r1745_8, 0:r1745_14 +# 1745| mu1745_16(unknown) = ^CallSideEffect : ~m? +# 1745| v1745_17(void) = ^BufferReadSideEffect[0] : &:r1745_14, ~m? +# 1745| mu1745_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1745_8 +# 1745| v1745_19(void) = NoOp : +# 1745| v1745_20(void) = ReturnIndirection[#this] : &:r1745_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1743| v1743_21(void) = ReturnVoid : -# 1743| v1743_22(void) = AliasedUse : ~m? -# 1743| v1743_23(void) = ExitFunction : - -# 1747| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1747| Block 0 -# 1747| v1747_1(void) = EnterFunction : -# 1747| mu1747_2(unknown) = AliasedDefinition : -# 1747| mu1747_3(unknown) = InitializeNonLocal : -# 1747| r1747_4(glval) = VariableAddress[#this] : -# 1747| mu1747_5(glval) = InitializeParameter[#this] : &:r1747_4 -# 1747| r1747_6(glval) = Load[#this] : &:r1747_4, ~m? -# 1747| mu1747_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1747_6 -# 1747| r1747_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1747_5 -# 1747| r1747_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1747| v1747_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1747_9, this:r1747_8 -# 1747| mu1747_11(unknown) = ^CallSideEffect : ~m? -# 1747| mu1747_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1747_8 -# 1747| r1747_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1747_5 -# 1747| r1747_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1747| v1747_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1747_14, this:r1747_13 -# 1747| mu1747_16(unknown) = ^CallSideEffect : ~m? -# 1747| mu1747_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1747_13 -# 1747| v1747_18(void) = NoOp : -# 1747| v1747_19(void) = ReturnIndirection[#this] : &:r1747_6, ~m? -# 1747| v1747_20(void) = ReturnVoid : -# 1747| v1747_21(void) = AliasedUse : ~m? -# 1747| v1747_22(void) = ExitFunction : - -# 1750| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1750| Block 0 -# 1750| v1750_1(void) = EnterFunction : -# 1750| mu1750_2(unknown) = AliasedDefinition : -# 1750| mu1750_3(unknown) = InitializeNonLocal : -# 1751| r1751_1(glval) = VariableAddress[x] : -# 1751| mu1751_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1751_1 -# 1751| r1751_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1751_1, ~m? -# 1751| mu1751_4(unknown) = InitializeIndirection[x] : &:r1751_3 -# 1752| r1752_1(glval) = VariableAddress[y] : -# 1752| mu1752_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1752_1 -# 1752| r1752_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1752_1, ~m? -# 1752| mu1752_4(unknown) = InitializeIndirection[y] : &:r1752_3 -# 1753| r1753_1(glval) = VariableAddress[cx] : -# 1753| mu1753_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1753_1 -# 1753| r1753_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : -# 1753| r1753_4(glval) = VariableAddress[x] : -# 1753| r1753_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1753_4, ~m? -# 1753| r1753_6(glval) = CopyValue : r1753_5 -# 1753| r1753_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1753_6 -# 1753| v1753_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1753_3, this:r1753_1, 0:r1753_7 -# 1753| mu1753_9(unknown) = ^CallSideEffect : ~m? -# 1753| v1753_10(void) = ^BufferReadSideEffect[0] : &:r1753_7, ~m? -# 1753| mu1753_11(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1753_1 -# 1754| r1754_1(glval) = VariableAddress[cy] : -# 1754| mu1754_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1754_1 -# 1754| r1754_3(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : -# 1754| r1754_4(glval) = VariableAddress[y] : -# 1754| r1754_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1754_4, ~m? -# 1754| r1754_6(glval) = CopyValue : r1754_5 -# 1754| r1754_7(CopyConstructorTestVirtualClass &) = CopyValue : r1754_6 -# 1754| v1754_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1754_3, this:r1754_1, 0:r1754_7 -# 1754| mu1754_9(unknown) = ^CallSideEffect : ~m? -# 1754| v1754_10(void) = ^BufferReadSideEffect[0] : &:r1754_7, ~m? -# 1754| mu1754_11(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1754_1 -# 1755| r1755_1(glval) = VariableAddress[#return] : -# 1755| mu1755_2(int) = Uninitialized[#return] : &:r1755_1 -# 1751| v1751_5(void) = ReturnIndirection[x] : &:r1751_3, ~m? -# 1752| v1752_5(void) = ReturnIndirection[y] : &:r1752_3, ~m? -# 1750| r1750_4(glval) = VariableAddress[#return] : -# 1750| v1750_5(void) = ReturnValue : &:r1750_4, ~m? -# 1750| v1750_6(void) = AliasedUse : ~m? -# 1750| v1750_7(void) = ExitFunction : - -# 1757| void if_initialization(int) -# 1757| Block 0 -# 1757| v1757_1(void) = EnterFunction : -# 1757| mu1757_2(unknown) = AliasedDefinition : -# 1757| mu1757_3(unknown) = InitializeNonLocal : -# 1757| r1757_4(glval) = VariableAddress[x] : -# 1757| mu1757_5(int) = InitializeParameter[x] : &:r1757_4 -# 1758| r1758_1(glval) = VariableAddress[y] : -# 1758| r1758_2(glval) = VariableAddress[x] : -# 1758| r1758_3(int) = Load[x] : &:r1758_2, ~m? -# 1758| mu1758_4(int) = Store[y] : &:r1758_1, r1758_3 -# 1758| r1758_5(glval) = VariableAddress[x] : -# 1758| r1758_6(int) = Load[x] : &:r1758_5, ~m? -# 1758| r1758_7(int) = Constant[1] : -# 1758| r1758_8(int) = Add : r1758_6, r1758_7 -# 1758| r1758_9(int) = Constant[0] : -# 1758| r1758_10(bool) = CompareNE : r1758_8, r1758_9 -# 1758| v1758_11(void) = ConditionalBranch : r1758_10 +# 1745| v1745_21(void) = ReturnVoid : +# 1745| v1745_22(void) = AliasedUse : ~m? +# 1745| v1745_23(void) = ExitFunction : + +# 1749| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1749| Block 0 +# 1749| v1749_1(void) = EnterFunction : +# 1749| mu1749_2(unknown) = AliasedDefinition : +# 1749| mu1749_3(unknown) = InitializeNonLocal : +# 1749| r1749_4(glval) = VariableAddress[#this] : +# 1749| mu1749_5(glval) = InitializeParameter[#this] : &:r1749_4 +# 1749| r1749_6(glval) = Load[#this] : &:r1749_4, ~m? +# 1749| mu1749_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1749_6 +# 1749| r1749_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1749_5 +# 1749| r1749_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1749| v1749_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1749_9, this:r1749_8 +# 1749| mu1749_11(unknown) = ^CallSideEffect : ~m? +# 1749| mu1749_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_8 +# 1749| r1749_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1749_5 +# 1749| r1749_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1749| v1749_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1749_14, this:r1749_13 +# 1749| mu1749_16(unknown) = ^CallSideEffect : ~m? +# 1749| mu1749_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_13 +# 1749| v1749_18(void) = NoOp : +# 1749| v1749_19(void) = ReturnIndirection[#this] : &:r1749_6, ~m? +# 1749| v1749_20(void) = ReturnVoid : +# 1749| v1749_21(void) = AliasedUse : ~m? +# 1749| v1749_22(void) = ExitFunction : + +# 1752| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1752| Block 0 +# 1752| v1752_1(void) = EnterFunction : +# 1752| mu1752_2(unknown) = AliasedDefinition : +# 1752| mu1752_3(unknown) = InitializeNonLocal : +# 1753| r1753_1(glval) = VariableAddress[x] : +# 1753| mu1753_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1753_1 +# 1753| r1753_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1753_1, ~m? +# 1753| mu1753_4(unknown) = InitializeIndirection[x] : &:r1753_3 +# 1754| r1754_1(glval) = VariableAddress[y] : +# 1754| mu1754_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1754_1 +# 1754| r1754_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1754_1, ~m? +# 1754| mu1754_4(unknown) = InitializeIndirection[y] : &:r1754_3 +# 1755| r1755_1(glval) = VariableAddress[cx] : +# 1755| mu1755_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1755_1 +# 1755| r1755_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : +# 1755| r1755_4(glval) = VariableAddress[x] : +# 1755| r1755_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1755_4, ~m? +# 1755| r1755_6(glval) = CopyValue : r1755_5 +# 1755| r1755_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1755_6 +# 1755| v1755_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1755_3, this:r1755_1, 0:r1755_7 +# 1755| mu1755_9(unknown) = ^CallSideEffect : ~m? +# 1755| v1755_10(void) = ^BufferReadSideEffect[0] : &:r1755_7, ~m? +# 1755| mu1755_11(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1755_1 +# 1756| r1756_1(glval) = VariableAddress[cy] : +# 1756| mu1756_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1756_1 +# 1756| r1756_3(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : +# 1756| r1756_4(glval) = VariableAddress[y] : +# 1756| r1756_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1756_4, ~m? +# 1756| r1756_6(glval) = CopyValue : r1756_5 +# 1756| r1756_7(CopyConstructorTestVirtualClass &) = CopyValue : r1756_6 +# 1756| v1756_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1756_3, this:r1756_1, 0:r1756_7 +# 1756| mu1756_9(unknown) = ^CallSideEffect : ~m? +# 1756| v1756_10(void) = ^BufferReadSideEffect[0] : &:r1756_7, ~m? +# 1756| mu1756_11(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1756_1 +# 1757| r1757_1(glval) = VariableAddress[#return] : +# 1757| mu1757_2(int) = Uninitialized[#return] : &:r1757_1 +# 1753| v1753_5(void) = ReturnIndirection[x] : &:r1753_3, ~m? +# 1754| v1754_5(void) = ReturnIndirection[y] : &:r1754_3, ~m? +# 1752| r1752_4(glval) = VariableAddress[#return] : +# 1752| v1752_5(void) = ReturnValue : &:r1752_4, ~m? +# 1752| v1752_6(void) = AliasedUse : ~m? +# 1752| v1752_7(void) = ExitFunction : + +# 1759| void if_initialization(int) +# 1759| Block 0 +# 1759| v1759_1(void) = EnterFunction : +# 1759| mu1759_2(unknown) = AliasedDefinition : +# 1759| mu1759_3(unknown) = InitializeNonLocal : +# 1759| r1759_4(glval) = VariableAddress[x] : +# 1759| mu1759_5(int) = InitializeParameter[x] : &:r1759_4 +# 1760| r1760_1(glval) = VariableAddress[y] : +# 1760| r1760_2(glval) = VariableAddress[x] : +# 1760| r1760_3(int) = Load[x] : &:r1760_2, ~m? +# 1760| mu1760_4(int) = Store[y] : &:r1760_1, r1760_3 +# 1760| r1760_5(glval) = VariableAddress[x] : +# 1760| r1760_6(int) = Load[x] : &:r1760_5, ~m? +# 1760| r1760_7(int) = Constant[1] : +# 1760| r1760_8(int) = Add : r1760_6, r1760_7 +# 1760| r1760_9(int) = Constant[0] : +# 1760| r1760_10(bool) = CompareNE : r1760_8, r1760_9 +# 1760| v1760_11(void) = ConditionalBranch : r1760_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 1759| Block 1 -# 1759| r1759_1(glval) = VariableAddress[x] : -# 1759| r1759_2(int) = Load[x] : &:r1759_1, ~m? -# 1759| r1759_3(glval) = VariableAddress[y] : -# 1759| r1759_4(int) = Load[y] : &:r1759_3, ~m? -# 1759| r1759_5(int) = Add : r1759_2, r1759_4 -# 1759| r1759_6(glval) = VariableAddress[x] : -# 1759| mu1759_7(int) = Store[x] : &:r1759_6, r1759_5 +# 1761| Block 1 +# 1761| r1761_1(glval) = VariableAddress[x] : +# 1761| r1761_2(int) = Load[x] : &:r1761_1, ~m? +# 1761| r1761_3(glval) = VariableAddress[y] : +# 1761| r1761_4(int) = Load[y] : &:r1761_3, ~m? +# 1761| r1761_5(int) = Add : r1761_2, r1761_4 +# 1761| r1761_6(glval) = VariableAddress[x] : +# 1761| mu1761_7(int) = Store[x] : &:r1761_6, r1761_5 #-----| Goto -> Block 2 -# 1762| Block 2 -# 1762| r1762_1(glval) = VariableAddress[w] : -# 1762| mu1762_2(int) = Uninitialized[w] : &:r1762_1 -# 1763| r1763_1(glval) = VariableAddress[x] : -# 1763| r1763_2(int) = Load[x] : &:r1763_1, ~m? -# 1763| r1763_3(glval) = VariableAddress[w] : -# 1763| mu1763_4(int) = Store[w] : &:r1763_3, r1763_2 -# 1763| r1763_5(glval) = VariableAddress[x] : -# 1763| r1763_6(int) = Load[x] : &:r1763_5, ~m? -# 1763| r1763_7(int) = Constant[1] : -# 1763| r1763_8(int) = Add : r1763_6, r1763_7 -# 1763| r1763_9(int) = Constant[0] : -# 1763| r1763_10(bool) = CompareNE : r1763_8, r1763_9 -# 1763| v1763_11(void) = ConditionalBranch : r1763_10 +# 1764| Block 2 +# 1764| r1764_1(glval) = VariableAddress[w] : +# 1764| mu1764_2(int) = Uninitialized[w] : &:r1764_1 +# 1765| r1765_1(glval) = VariableAddress[x] : +# 1765| r1765_2(int) = Load[x] : &:r1765_1, ~m? +# 1765| r1765_3(glval) = VariableAddress[w] : +# 1765| mu1765_4(int) = Store[w] : &:r1765_3, r1765_2 +# 1765| r1765_5(glval) = VariableAddress[x] : +# 1765| r1765_6(int) = Load[x] : &:r1765_5, ~m? +# 1765| r1765_7(int) = Constant[1] : +# 1765| r1765_8(int) = Add : r1765_6, r1765_7 +# 1765| r1765_9(int) = Constant[0] : +# 1765| r1765_10(bool) = CompareNE : r1765_8, r1765_9 +# 1765| v1765_11(void) = ConditionalBranch : r1765_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1764| Block 3 -# 1764| r1764_1(glval) = VariableAddress[x] : -# 1764| r1764_2(int) = Load[x] : &:r1764_1, ~m? -# 1764| r1764_3(glval) = VariableAddress[w] : -# 1764| r1764_4(int) = Load[w] : &:r1764_3, ~m? -# 1764| r1764_5(int) = Add : r1764_2, r1764_4 -# 1764| r1764_6(glval) = VariableAddress[x] : -# 1764| mu1764_7(int) = Store[x] : &:r1764_6, r1764_5 +# 1766| Block 3 +# 1766| r1766_1(glval) = VariableAddress[x] : +# 1766| r1766_2(int) = Load[x] : &:r1766_1, ~m? +# 1766| r1766_3(glval) = VariableAddress[w] : +# 1766| r1766_4(int) = Load[w] : &:r1766_3, ~m? +# 1766| r1766_5(int) = Add : r1766_2, r1766_4 +# 1766| r1766_6(glval) = VariableAddress[x] : +# 1766| mu1766_7(int) = Store[x] : &:r1766_6, r1766_5 #-----| Goto -> Block 4 -# 1767| Block 4 -# 1767| r1767_1(glval) = VariableAddress[x] : -# 1767| r1767_2(int) = Load[x] : &:r1767_1, ~m? -# 1767| r1767_3(glval) = VariableAddress[w] : -# 1767| mu1767_4(int) = Store[w] : &:r1767_3, r1767_2 -# 1767| r1767_5(glval) = VariableAddress[w2] : -# 1767| r1767_6(glval) = VariableAddress[w] : -# 1767| r1767_7(int) = Load[w] : &:r1767_6, ~m? -# 1767| mu1767_8(int) = Store[w2] : &:r1767_5, r1767_7 -# 1767| r1767_9(glval) = VariableAddress[w2] : -# 1767| r1767_10(int) = Load[w2] : &:r1767_9, ~m? -# 1767| r1767_11(int) = Constant[0] : -# 1767| r1767_12(bool) = CompareNE : r1767_10, r1767_11 -# 1767| r1767_13(bool) = CopyValue : r1767_12 -# 1767| v1767_14(void) = ConditionalBranch : r1767_13 +# 1769| Block 4 +# 1769| r1769_1(glval) = VariableAddress[x] : +# 1769| r1769_2(int) = Load[x] : &:r1769_1, ~m? +# 1769| r1769_3(glval) = VariableAddress[w] : +# 1769| mu1769_4(int) = Store[w] : &:r1769_3, r1769_2 +# 1769| r1769_5(glval) = VariableAddress[w2] : +# 1769| r1769_6(glval) = VariableAddress[w] : +# 1769| r1769_7(int) = Load[w] : &:r1769_6, ~m? +# 1769| mu1769_8(int) = Store[w2] : &:r1769_5, r1769_7 +# 1769| r1769_9(glval) = VariableAddress[w2] : +# 1769| r1769_10(int) = Load[w2] : &:r1769_9, ~m? +# 1769| r1769_11(int) = Constant[0] : +# 1769| r1769_12(bool) = CompareNE : r1769_10, r1769_11 +# 1769| r1769_13(bool) = CopyValue : r1769_12 +# 1769| v1769_14(void) = ConditionalBranch : r1769_13 #-----| False -> Block 6 #-----| True -> Block 5 -# 1768| Block 5 -# 1768| r1768_1(glval) = VariableAddress[x] : -# 1768| r1768_2(int) = Load[x] : &:r1768_1, ~m? -# 1768| r1768_3(glval) = VariableAddress[w] : -# 1768| r1768_4(int) = Load[w] : &:r1768_3, ~m? -# 1768| r1768_5(int) = Add : r1768_2, r1768_4 -# 1768| r1768_6(glval) = VariableAddress[x] : -# 1768| mu1768_7(int) = Store[x] : &:r1768_6, r1768_5 +# 1770| Block 5 +# 1770| r1770_1(glval) = VariableAddress[x] : +# 1770| r1770_2(int) = Load[x] : &:r1770_1, ~m? +# 1770| r1770_3(glval) = VariableAddress[w] : +# 1770| r1770_4(int) = Load[w] : &:r1770_3, ~m? +# 1770| r1770_5(int) = Add : r1770_2, r1770_4 +# 1770| r1770_6(glval) = VariableAddress[x] : +# 1770| mu1770_7(int) = Store[x] : &:r1770_6, r1770_5 #-----| Goto -> Block 6 -# 1771| Block 6 -# 1771| r1771_1(glval) = VariableAddress[v] : -# 1771| r1771_2(glval) = VariableAddress[x] : -# 1771| r1771_3(int) = Load[x] : &:r1771_2, ~m? -# 1771| mu1771_4(int) = Store[v] : &:r1771_1, r1771_3 -# 1771| r1771_5(glval) = VariableAddress[v2] : -# 1771| r1771_6(glval) = VariableAddress[v] : -# 1771| r1771_7(int) = Load[v] : &:r1771_6, ~m? -# 1771| mu1771_8(int) = Store[v2] : &:r1771_5, r1771_7 -# 1771| r1771_9(glval) = VariableAddress[v2] : -# 1771| r1771_10(int) = Load[v2] : &:r1771_9, ~m? -# 1771| r1771_11(int) = Constant[0] : -# 1771| r1771_12(bool) = CompareNE : r1771_10, r1771_11 -# 1771| r1771_13(bool) = CopyValue : r1771_12 -# 1771| v1771_14(void) = ConditionalBranch : r1771_13 +# 1773| Block 6 +# 1773| r1773_1(glval) = VariableAddress[v] : +# 1773| r1773_2(glval) = VariableAddress[x] : +# 1773| r1773_3(int) = Load[x] : &:r1773_2, ~m? +# 1773| mu1773_4(int) = Store[v] : &:r1773_1, r1773_3 +# 1773| r1773_5(glval) = VariableAddress[v2] : +# 1773| r1773_6(glval) = VariableAddress[v] : +# 1773| r1773_7(int) = Load[v] : &:r1773_6, ~m? +# 1773| mu1773_8(int) = Store[v2] : &:r1773_5, r1773_7 +# 1773| r1773_9(glval) = VariableAddress[v2] : +# 1773| r1773_10(int) = Load[v2] : &:r1773_9, ~m? +# 1773| r1773_11(int) = Constant[0] : +# 1773| r1773_12(bool) = CompareNE : r1773_10, r1773_11 +# 1773| r1773_13(bool) = CopyValue : r1773_12 +# 1773| v1773_14(void) = ConditionalBranch : r1773_13 #-----| False -> Block 8 #-----| True -> Block 7 -# 1772| Block 7 -# 1772| r1772_1(glval) = VariableAddress[x] : -# 1772| r1772_2(int) = Load[x] : &:r1772_1, ~m? -# 1772| r1772_3(glval) = VariableAddress[v] : -# 1772| r1772_4(int) = Load[v] : &:r1772_3, ~m? -# 1772| r1772_5(int) = Add : r1772_2, r1772_4 -# 1772| r1772_6(glval) = VariableAddress[x] : -# 1772| mu1772_7(int) = Store[x] : &:r1772_6, r1772_5 +# 1774| Block 7 +# 1774| r1774_1(glval) = VariableAddress[x] : +# 1774| r1774_2(int) = Load[x] : &:r1774_1, ~m? +# 1774| r1774_3(glval) = VariableAddress[v] : +# 1774| r1774_4(int) = Load[v] : &:r1774_3, ~m? +# 1774| r1774_5(int) = Add : r1774_2, r1774_4 +# 1774| r1774_6(glval) = VariableAddress[x] : +# 1774| mu1774_7(int) = Store[x] : &:r1774_6, r1774_5 #-----| Goto -> Block 8 -# 1775| Block 8 -# 1775| r1775_1(glval) = VariableAddress[z] : -# 1775| r1775_2(glval) = VariableAddress[x] : -# 1775| r1775_3(int) = Load[x] : &:r1775_2, ~m? -# 1775| mu1775_4(int) = Store[z] : &:r1775_1, r1775_3 -# 1776| r1776_1(glval) = VariableAddress[z] : -# 1776| r1776_2(int) = Load[z] : &:r1776_1, ~m? -# 1776| r1776_3(int) = Constant[0] : -# 1776| r1776_4(bool) = CompareNE : r1776_2, r1776_3 -# 1776| v1776_5(void) = ConditionalBranch : r1776_4 +# 1777| Block 8 +# 1777| r1777_1(glval) = VariableAddress[z] : +# 1777| r1777_2(glval) = VariableAddress[x] : +# 1777| r1777_3(int) = Load[x] : &:r1777_2, ~m? +# 1777| mu1777_4(int) = Store[z] : &:r1777_1, r1777_3 +# 1778| r1778_1(glval) = VariableAddress[z] : +# 1778| r1778_2(int) = Load[z] : &:r1778_1, ~m? +# 1778| r1778_3(int) = Constant[0] : +# 1778| r1778_4(bool) = CompareNE : r1778_2, r1778_3 +# 1778| v1778_5(void) = ConditionalBranch : r1778_4 #-----| False -> Block 10 #-----| True -> Block 9 -# 1777| Block 9 -# 1777| r1777_1(glval) = VariableAddress[x] : -# 1777| r1777_2(int) = Load[x] : &:r1777_1, ~m? -# 1777| r1777_3(glval) = VariableAddress[z] : -# 1777| r1777_4(int) = Load[z] : &:r1777_3, ~m? -# 1777| r1777_5(int) = Add : r1777_2, r1777_4 -# 1777| r1777_6(glval) = VariableAddress[x] : -# 1777| mu1777_7(int) = Store[x] : &:r1777_6, r1777_5 +# 1779| Block 9 +# 1779| r1779_1(glval) = VariableAddress[x] : +# 1779| r1779_2(int) = Load[x] : &:r1779_1, ~m? +# 1779| r1779_3(glval) = VariableAddress[z] : +# 1779| r1779_4(int) = Load[z] : &:r1779_3, ~m? +# 1779| r1779_5(int) = Add : r1779_2, r1779_4 +# 1779| r1779_6(glval) = VariableAddress[x] : +# 1779| mu1779_7(int) = Store[x] : &:r1779_6, r1779_5 #-----| Goto -> Block 10 -# 1780| Block 10 -# 1780| r1780_1(glval) = VariableAddress[z2] : -# 1780| r1780_2(glval) = VariableAddress[z] : -# 1780| r1780_3(int) = Load[z] : &:r1780_2, ~m? -# 1780| mu1780_4(int) = Store[z2] : &:r1780_1, r1780_3 -# 1780| r1780_5(glval) = VariableAddress[z2] : -# 1780| r1780_6(int) = Load[z2] : &:r1780_5, ~m? -# 1780| r1780_7(int) = Constant[0] : -# 1780| r1780_8(bool) = CompareNE : r1780_6, r1780_7 -# 1780| r1780_9(bool) = CopyValue : r1780_8 -# 1780| v1780_10(void) = ConditionalBranch : r1780_9 +# 1782| Block 10 +# 1782| r1782_1(glval) = VariableAddress[z2] : +# 1782| r1782_2(glval) = VariableAddress[z] : +# 1782| r1782_3(int) = Load[z] : &:r1782_2, ~m? +# 1782| mu1782_4(int) = Store[z2] : &:r1782_1, r1782_3 +# 1782| r1782_5(glval) = VariableAddress[z2] : +# 1782| r1782_6(int) = Load[z2] : &:r1782_5, ~m? +# 1782| r1782_7(int) = Constant[0] : +# 1782| r1782_8(bool) = CompareNE : r1782_6, r1782_7 +# 1782| r1782_9(bool) = CopyValue : r1782_8 +# 1782| v1782_10(void) = ConditionalBranch : r1782_9 #-----| False -> Block 12 #-----| True -> Block 11 -# 1781| Block 11 -# 1781| r1781_1(glval) = VariableAddress[z2] : -# 1781| r1781_2(int) = Load[z2] : &:r1781_1, ~m? -# 1781| r1781_3(glval) = VariableAddress[x] : -# 1781| r1781_4(int) = Load[x] : &:r1781_3, ~m? -# 1781| r1781_5(int) = Add : r1781_4, r1781_2 -# 1781| mu1781_6(int) = Store[x] : &:r1781_3, r1781_5 +# 1783| Block 11 +# 1783| r1783_1(glval) = VariableAddress[z2] : +# 1783| r1783_2(int) = Load[z2] : &:r1783_1, ~m? +# 1783| r1783_3(glval) = VariableAddress[x] : +# 1783| r1783_4(int) = Load[x] : &:r1783_3, ~m? +# 1783| r1783_5(int) = Add : r1783_4, r1783_2 +# 1783| mu1783_6(int) = Store[x] : &:r1783_3, r1783_5 #-----| Goto -> Block 12 -# 1783| Block 12 -# 1783| v1783_1(void) = NoOp : -# 1757| v1757_6(void) = ReturnVoid : -# 1757| v1757_7(void) = AliasedUse : ~m? -# 1757| v1757_8(void) = ExitFunction : - -# 1785| void switch_initialization(int) -# 1785| Block 0 -# 1785| v1785_1(void) = EnterFunction : -# 1785| mu1785_2(unknown) = AliasedDefinition : -# 1785| mu1785_3(unknown) = InitializeNonLocal : -# 1785| r1785_4(glval) = VariableAddress[x] : -# 1785| mu1785_5(int) = InitializeParameter[x] : &:r1785_4 -# 1786| r1786_1(glval) = VariableAddress[y] : -# 1786| r1786_2(glval) = VariableAddress[x] : -# 1786| r1786_3(int) = Load[x] : &:r1786_2, ~m? -# 1786| mu1786_4(int) = Store[y] : &:r1786_1, r1786_3 -# 1786| r1786_5(glval) = VariableAddress[x] : -# 1786| r1786_6(int) = Load[x] : &:r1786_5, ~m? -# 1786| r1786_7(int) = Constant[1] : -# 1786| r1786_8(int) = Add : r1786_6, r1786_7 -# 1786| v1786_9(void) = Switch : r1786_8 +# 1785| Block 12 +# 1785| v1785_1(void) = NoOp : +# 1759| v1759_6(void) = ReturnVoid : +# 1759| v1759_7(void) = AliasedUse : ~m? +# 1759| v1759_8(void) = ExitFunction : + +# 1787| void switch_initialization(int) +# 1787| Block 0 +# 1787| v1787_1(void) = EnterFunction : +# 1787| mu1787_2(unknown) = AliasedDefinition : +# 1787| mu1787_3(unknown) = InitializeNonLocal : +# 1787| r1787_4(glval) = VariableAddress[x] : +# 1787| mu1787_5(int) = InitializeParameter[x] : &:r1787_4 +# 1788| r1788_1(glval) = VariableAddress[y] : +# 1788| r1788_2(glval) = VariableAddress[x] : +# 1788| r1788_3(int) = Load[x] : &:r1788_2, ~m? +# 1788| mu1788_4(int) = Store[y] : &:r1788_1, r1788_3 +# 1788| r1788_5(glval) = VariableAddress[x] : +# 1788| r1788_6(int) = Load[x] : &:r1788_5, ~m? +# 1788| r1788_7(int) = Constant[1] : +# 1788| r1788_8(int) = Add : r1788_6, r1788_7 +# 1788| v1788_9(void) = Switch : r1788_8 #-----| Default -> Block 1 -# 1787| Block 1 -# 1787| v1787_1(void) = NoOp : -# 1788| r1788_1(glval) = VariableAddress[x] : -# 1788| r1788_2(int) = Load[x] : &:r1788_1, ~m? -# 1788| r1788_3(glval) = VariableAddress[y] : -# 1788| r1788_4(int) = Load[y] : &:r1788_3, ~m? -# 1788| r1788_5(int) = Add : r1788_2, r1788_4 -# 1788| r1788_6(glval) = VariableAddress[x] : -# 1788| mu1788_7(int) = Store[x] : &:r1788_6, r1788_5 -# 1791| r1791_1(glval) = VariableAddress[w] : -# 1791| mu1791_2(int) = Uninitialized[w] : &:r1791_1 -# 1792| r1792_1(glval) = VariableAddress[x] : -# 1792| r1792_2(int) = Load[x] : &:r1792_1, ~m? -# 1792| r1792_3(glval) = VariableAddress[w] : -# 1792| mu1792_4(int) = Store[w] : &:r1792_3, r1792_2 -# 1792| r1792_5(glval) = VariableAddress[x] : -# 1792| r1792_6(int) = Load[x] : &:r1792_5, ~m? -# 1792| r1792_7(int) = Constant[1] : -# 1792| r1792_8(int) = Add : r1792_6, r1792_7 -# 1792| v1792_9(void) = Switch : r1792_8 +# 1789| Block 1 +# 1789| v1789_1(void) = NoOp : +# 1790| r1790_1(glval) = VariableAddress[x] : +# 1790| r1790_2(int) = Load[x] : &:r1790_1, ~m? +# 1790| r1790_3(glval) = VariableAddress[y] : +# 1790| r1790_4(int) = Load[y] : &:r1790_3, ~m? +# 1790| r1790_5(int) = Add : r1790_2, r1790_4 +# 1790| r1790_6(glval) = VariableAddress[x] : +# 1790| mu1790_7(int) = Store[x] : &:r1790_6, r1790_5 +# 1793| r1793_1(glval) = VariableAddress[w] : +# 1793| mu1793_2(int) = Uninitialized[w] : &:r1793_1 +# 1794| r1794_1(glval) = VariableAddress[x] : +# 1794| r1794_2(int) = Load[x] : &:r1794_1, ~m? +# 1794| r1794_3(glval) = VariableAddress[w] : +# 1794| mu1794_4(int) = Store[w] : &:r1794_3, r1794_2 +# 1794| r1794_5(glval) = VariableAddress[x] : +# 1794| r1794_6(int) = Load[x] : &:r1794_5, ~m? +# 1794| r1794_7(int) = Constant[1] : +# 1794| r1794_8(int) = Add : r1794_6, r1794_7 +# 1794| v1794_9(void) = Switch : r1794_8 #-----| Default -> Block 2 -# 1793| Block 2 -# 1793| v1793_1(void) = NoOp : -# 1794| r1794_1(glval) = VariableAddress[x] : -# 1794| r1794_2(int) = Load[x] : &:r1794_1, ~m? -# 1794| r1794_3(glval) = VariableAddress[w] : -# 1794| r1794_4(int) = Load[w] : &:r1794_3, ~m? -# 1794| r1794_5(int) = Add : r1794_2, r1794_4 -# 1794| r1794_6(glval) = VariableAddress[x] : -# 1794| mu1794_7(int) = Store[x] : &:r1794_6, r1794_5 -# 1797| r1797_1(glval) = VariableAddress[x] : -# 1797| r1797_2(int) = Load[x] : &:r1797_1, ~m? -# 1797| r1797_3(glval) = VariableAddress[w] : -# 1797| mu1797_4(int) = Store[w] : &:r1797_3, r1797_2 -# 1797| r1797_5(glval) = VariableAddress[w2] : -# 1797| r1797_6(glval) = VariableAddress[w] : -# 1797| r1797_7(int) = Load[w] : &:r1797_6, ~m? -# 1797| mu1797_8(int) = Store[w2] : &:r1797_5, r1797_7 -# 1797| r1797_9(glval) = VariableAddress[w2] : -# 1797| r1797_10(int) = Load[w2] : &:r1797_9, ~m? -# 1797| r1797_11(int) = CopyValue : r1797_10 -# 1797| v1797_12(void) = Switch : r1797_11 -#-----| Default -> Block 3 - -# 1798| Block 3 -# 1798| v1798_1(void) = NoOp : +# 1795| Block 2 +# 1795| v1795_1(void) = NoOp : +# 1796| r1796_1(glval) = VariableAddress[x] : +# 1796| r1796_2(int) = Load[x] : &:r1796_1, ~m? +# 1796| r1796_3(glval) = VariableAddress[w] : +# 1796| r1796_4(int) = Load[w] : &:r1796_3, ~m? +# 1796| r1796_5(int) = Add : r1796_2, r1796_4 +# 1796| r1796_6(glval) = VariableAddress[x] : +# 1796| mu1796_7(int) = Store[x] : &:r1796_6, r1796_5 # 1799| r1799_1(glval) = VariableAddress[x] : # 1799| r1799_2(int) = Load[x] : &:r1799_1, ~m? # 1799| r1799_3(glval) = VariableAddress[w] : -# 1799| r1799_4(int) = Load[w] : &:r1799_3, ~m? -# 1799| r1799_5(int) = Add : r1799_2, r1799_4 -# 1799| r1799_6(glval) = VariableAddress[x] : -# 1799| mu1799_7(int) = Store[x] : &:r1799_6, r1799_5 -# 1802| r1802_1(glval) = VariableAddress[v] : -# 1802| r1802_2(glval) = VariableAddress[x] : -# 1802| r1802_3(int) = Load[x] : &:r1802_2, ~m? -# 1802| mu1802_4(int) = Store[v] : &:r1802_1, r1802_3 -# 1802| r1802_5(glval) = VariableAddress[v2] : -# 1802| r1802_6(glval) = VariableAddress[v] : -# 1802| r1802_7(int) = Load[v] : &:r1802_6, ~m? -# 1802| mu1802_8(int) = Store[v2] : &:r1802_5, r1802_7 -# 1802| r1802_9(glval) = VariableAddress[v2] : -# 1802| r1802_10(int) = Load[v2] : &:r1802_9, ~m? -# 1802| r1802_11(int) = CopyValue : r1802_10 -# 1802| v1802_12(void) = Switch : r1802_11 +# 1799| mu1799_4(int) = Store[w] : &:r1799_3, r1799_2 +# 1799| r1799_5(glval) = VariableAddress[w2] : +# 1799| r1799_6(glval) = VariableAddress[w] : +# 1799| r1799_7(int) = Load[w] : &:r1799_6, ~m? +# 1799| mu1799_8(int) = Store[w2] : &:r1799_5, r1799_7 +# 1799| r1799_9(glval) = VariableAddress[w2] : +# 1799| r1799_10(int) = Load[w2] : &:r1799_9, ~m? +# 1799| r1799_11(int) = CopyValue : r1799_10 +# 1799| v1799_12(void) = Switch : r1799_11 +#-----| Default -> Block 3 + +# 1800| Block 3 +# 1800| v1800_1(void) = NoOp : +# 1801| r1801_1(glval) = VariableAddress[x] : +# 1801| r1801_2(int) = Load[x] : &:r1801_1, ~m? +# 1801| r1801_3(glval) = VariableAddress[w] : +# 1801| r1801_4(int) = Load[w] : &:r1801_3, ~m? +# 1801| r1801_5(int) = Add : r1801_2, r1801_4 +# 1801| r1801_6(glval) = VariableAddress[x] : +# 1801| mu1801_7(int) = Store[x] : &:r1801_6, r1801_5 +# 1804| r1804_1(glval) = VariableAddress[v] : +# 1804| r1804_2(glval) = VariableAddress[x] : +# 1804| r1804_3(int) = Load[x] : &:r1804_2, ~m? +# 1804| mu1804_4(int) = Store[v] : &:r1804_1, r1804_3 +# 1804| r1804_5(glval) = VariableAddress[v2] : +# 1804| r1804_6(glval) = VariableAddress[v] : +# 1804| r1804_7(int) = Load[v] : &:r1804_6, ~m? +# 1804| mu1804_8(int) = Store[v2] : &:r1804_5, r1804_7 +# 1804| r1804_9(glval) = VariableAddress[v2] : +# 1804| r1804_10(int) = Load[v2] : &:r1804_9, ~m? +# 1804| r1804_11(int) = CopyValue : r1804_10 +# 1804| v1804_12(void) = Switch : r1804_11 #-----| Default -> Block 4 -# 1803| Block 4 -# 1803| v1803_1(void) = NoOp : -# 1804| r1804_1(glval) = VariableAddress[x] : -# 1804| r1804_2(int) = Load[x] : &:r1804_1, ~m? -# 1804| r1804_3(glval) = VariableAddress[v] : -# 1804| r1804_4(int) = Load[v] : &:r1804_3, ~m? -# 1804| r1804_5(int) = Add : r1804_2, r1804_4 -# 1804| r1804_6(glval) = VariableAddress[x] : -# 1804| mu1804_7(int) = Store[x] : &:r1804_6, r1804_5 -# 1807| r1807_1(glval) = VariableAddress[z] : -# 1807| r1807_2(glval) = VariableAddress[x] : -# 1807| r1807_3(int) = Load[x] : &:r1807_2, ~m? -# 1807| mu1807_4(int) = Store[z] : &:r1807_1, r1807_3 -# 1808| r1808_1(glval) = VariableAddress[z] : -# 1808| r1808_2(int) = Load[z] : &:r1808_1, ~m? -# 1808| v1808_3(void) = Switch : r1808_2 +# 1805| Block 4 +# 1805| v1805_1(void) = NoOp : +# 1806| r1806_1(glval) = VariableAddress[x] : +# 1806| r1806_2(int) = Load[x] : &:r1806_1, ~m? +# 1806| r1806_3(glval) = VariableAddress[v] : +# 1806| r1806_4(int) = Load[v] : &:r1806_3, ~m? +# 1806| r1806_5(int) = Add : r1806_2, r1806_4 +# 1806| r1806_6(glval) = VariableAddress[x] : +# 1806| mu1806_7(int) = Store[x] : &:r1806_6, r1806_5 +# 1809| r1809_1(glval) = VariableAddress[z] : +# 1809| r1809_2(glval) = VariableAddress[x] : +# 1809| r1809_3(int) = Load[x] : &:r1809_2, ~m? +# 1809| mu1809_4(int) = Store[z] : &:r1809_1, r1809_3 +# 1810| r1810_1(glval) = VariableAddress[z] : +# 1810| r1810_2(int) = Load[z] : &:r1810_1, ~m? +# 1810| v1810_3(void) = Switch : r1810_2 #-----| Default -> Block 5 -# 1809| Block 5 -# 1809| v1809_1(void) = NoOp : -# 1810| r1810_1(glval) = VariableAddress[x] : -# 1810| r1810_2(int) = Load[x] : &:r1810_1, ~m? -# 1810| r1810_3(glval) = VariableAddress[z] : -# 1810| r1810_4(int) = Load[z] : &:r1810_3, ~m? -# 1810| r1810_5(int) = Add : r1810_2, r1810_4 -# 1810| r1810_6(glval) = VariableAddress[x] : -# 1810| mu1810_7(int) = Store[x] : &:r1810_6, r1810_5 -# 1813| r1813_1(glval) = VariableAddress[z2] : -# 1813| r1813_2(glval) = VariableAddress[z] : -# 1813| r1813_3(int) = Load[z] : &:r1813_2, ~m? -# 1813| mu1813_4(int) = Store[z2] : &:r1813_1, r1813_3 -# 1813| r1813_5(glval) = VariableAddress[z2] : -# 1813| r1813_6(int) = Load[z2] : &:r1813_5, ~m? -# 1813| r1813_7(int) = CopyValue : r1813_6 -# 1813| v1813_8(void) = Switch : r1813_7 +# 1811| Block 5 +# 1811| v1811_1(void) = NoOp : +# 1812| r1812_1(glval) = VariableAddress[x] : +# 1812| r1812_2(int) = Load[x] : &:r1812_1, ~m? +# 1812| r1812_3(glval) = VariableAddress[z] : +# 1812| r1812_4(int) = Load[z] : &:r1812_3, ~m? +# 1812| r1812_5(int) = Add : r1812_2, r1812_4 +# 1812| r1812_6(glval) = VariableAddress[x] : +# 1812| mu1812_7(int) = Store[x] : &:r1812_6, r1812_5 +# 1815| r1815_1(glval) = VariableAddress[z2] : +# 1815| r1815_2(glval) = VariableAddress[z] : +# 1815| r1815_3(int) = Load[z] : &:r1815_2, ~m? +# 1815| mu1815_4(int) = Store[z2] : &:r1815_1, r1815_3 +# 1815| r1815_5(glval) = VariableAddress[z2] : +# 1815| r1815_6(int) = Load[z2] : &:r1815_5, ~m? +# 1815| r1815_7(int) = CopyValue : r1815_6 +# 1815| v1815_8(void) = Switch : r1815_7 #-----| Default -> Block 6 -# 1814| Block 6 -# 1814| v1814_1(void) = NoOp : -# 1815| r1815_1(glval) = VariableAddress[z2] : -# 1815| r1815_2(int) = Load[z2] : &:r1815_1, ~m? -# 1815| r1815_3(glval) = VariableAddress[x] : -# 1815| r1815_4(int) = Load[x] : &:r1815_3, ~m? -# 1815| r1815_5(int) = Add : r1815_4, r1815_2 -# 1815| mu1815_6(int) = Store[x] : &:r1815_3, r1815_5 -# 1817| v1817_1(void) = NoOp : -# 1785| v1785_6(void) = ReturnVoid : -# 1785| v1785_7(void) = AliasedUse : ~m? -# 1785| v1785_8(void) = ExitFunction : - -# 1821| int global_2 -# 1821| Block 0 -# 1821| v1821_1(void) = EnterFunction : -# 1821| mu1821_2(unknown) = AliasedDefinition : -# 1821| r1821_3(glval) = VariableAddress[global_2] : -# 1821| r1821_4(int) = Constant[1] : -# 1821| mu1821_5(int) = Store[global_2] : &:r1821_3, r1821_4 -# 1821| v1821_6(void) = ReturnVoid : -# 1821| v1821_7(void) = AliasedUse : ~m? -# 1821| v1821_8(void) = ExitFunction : - -# 1825| constructor_only global_4 -# 1825| Block 0 -# 1825| v1825_1(void) = EnterFunction : -# 1825| mu1825_2(unknown) = AliasedDefinition : -# 1825| r1825_3(glval) = VariableAddress[global_4] : -# 1825| r1825_4(glval) = FunctionAddress[constructor_only] : -# 1825| r1825_5(int) = Constant[1] : -# 1825| v1825_6(void) = Call[constructor_only] : func:r1825_4, this:r1825_3, 0:r1825_5 -# 1825| mu1825_7(unknown) = ^CallSideEffect : ~m? -# 1825| mu1825_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1825_3 -# 1825| v1825_9(void) = ReturnVoid : -# 1825| v1825_10(void) = AliasedUse : ~m? -# 1825| v1825_11(void) = ExitFunction : - -# 1827| constructor_only global_5 +# 1816| Block 6 +# 1816| v1816_1(void) = NoOp : +# 1817| r1817_1(glval) = VariableAddress[z2] : +# 1817| r1817_2(int) = Load[z2] : &:r1817_1, ~m? +# 1817| r1817_3(glval) = VariableAddress[x] : +# 1817| r1817_4(int) = Load[x] : &:r1817_3, ~m? +# 1817| r1817_5(int) = Add : r1817_4, r1817_2 +# 1817| mu1817_6(int) = Store[x] : &:r1817_3, r1817_5 +# 1819| v1819_1(void) = NoOp : +# 1787| v1787_6(void) = ReturnVoid : +# 1787| v1787_7(void) = AliasedUse : ~m? +# 1787| v1787_8(void) = ExitFunction : + +# 1823| int global_2 +# 1823| Block 0 +# 1823| v1823_1(void) = EnterFunction : +# 1823| mu1823_2(unknown) = AliasedDefinition : +# 1823| r1823_3(glval) = VariableAddress[global_2] : +# 1823| r1823_4(int) = Constant[1] : +# 1823| mu1823_5(int) = Store[global_2] : &:r1823_3, r1823_4 +# 1823| v1823_6(void) = ReturnVoid : +# 1823| v1823_7(void) = AliasedUse : ~m? +# 1823| v1823_8(void) = ExitFunction : + +# 1827| constructor_only global_4 # 1827| Block 0 # 1827| v1827_1(void) = EnterFunction : # 1827| mu1827_2(unknown) = AliasedDefinition : -# 1827| r1827_3(glval) = VariableAddress[global_5] : +# 1827| r1827_3(glval) = VariableAddress[global_4] : # 1827| r1827_4(glval) = FunctionAddress[constructor_only] : -# 1827| r1827_5(int) = Constant[2] : +# 1827| r1827_5(int) = Constant[1] : # 1827| v1827_6(void) = Call[constructor_only] : func:r1827_4, this:r1827_3, 0:r1827_5 # 1827| mu1827_7(unknown) = ^CallSideEffect : ~m? # 1827| mu1827_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1827_3 @@ -9998,40 +9984,54 @@ ir.cpp: # 1827| v1827_10(void) = AliasedUse : ~m? # 1827| v1827_11(void) = ExitFunction : -# 1829| char* global_string +# 1829| constructor_only global_5 # 1829| Block 0 -# 1829| v1829_1(void) = EnterFunction : -# 1829| mu1829_2(unknown) = AliasedDefinition : -# 1829| r1829_3(glval) = VariableAddress[global_string] : -# 1829| r1829_4(glval) = StringConstant["global string"] : -# 1829| r1829_5(char *) = Convert : r1829_4 -# 1829| r1829_6(char *) = Convert : r1829_5 -# 1829| mu1829_7(char *) = Store[global_string] : &:r1829_3, r1829_6 -# 1829| v1829_8(void) = ReturnVoid : -# 1829| v1829_9(void) = AliasedUse : ~m? -# 1829| v1829_10(void) = ExitFunction : - -# 1831| int global_6 +# 1829| v1829_1(void) = EnterFunction : +# 1829| mu1829_2(unknown) = AliasedDefinition : +# 1829| r1829_3(glval) = VariableAddress[global_5] : +# 1829| r1829_4(glval) = FunctionAddress[constructor_only] : +# 1829| r1829_5(int) = Constant[2] : +# 1829| v1829_6(void) = Call[constructor_only] : func:r1829_4, this:r1829_3, 0:r1829_5 +# 1829| mu1829_7(unknown) = ^CallSideEffect : ~m? +# 1829| mu1829_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1829_3 +# 1829| v1829_9(void) = ReturnVoid : +# 1829| v1829_10(void) = AliasedUse : ~m? +# 1829| v1829_11(void) = ExitFunction : + +# 1831| char* global_string # 1831| Block 0 -# 1831| v1831_1(void) = EnterFunction : -# 1831| mu1831_2(unknown) = AliasedDefinition : -# 1831| r1831_3(glval) = VariableAddress[global_6] : -# 1831| r1831_4(glval) = VariableAddress[global_2] : -# 1831| r1831_5(int) = Load[global_2] : &:r1831_4, ~m? -# 1831| mu1831_6(int) = Store[global_6] : &:r1831_3, r1831_5 -# 1831| v1831_7(void) = ReturnVoid : -# 1831| v1831_8(void) = AliasedUse : ~m? -# 1831| v1831_9(void) = ExitFunction : - -# 1834| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1834| Block 0 -# 1834| v1834_1(void) = EnterFunction : -# 1834| mu1834_2(unknown) = AliasedDefinition : -# 1834| mu1834_3(unknown) = InitializeNonLocal : -# 1834| r1834_4(glval) = VariableAddress[#this] : -# 1834| mu1834_5(glval) = InitializeParameter[#this] : &:r1834_4 -# 1834| r1834_6(glval) = Load[#this] : &:r1834_4, ~m? -# 1834| mu1834_7(A) = InitializeIndirection[#this] : &:r1834_6 +# 1831| v1831_1(void) = EnterFunction : +# 1831| mu1831_2(unknown) = AliasedDefinition : +# 1831| r1831_3(glval) = VariableAddress[global_string] : +# 1831| r1831_4(glval) = StringConstant["global string"] : +# 1831| r1831_5(char *) = Convert : r1831_4 +# 1831| r1831_6(char *) = Convert : r1831_5 +# 1831| mu1831_7(char *) = Store[global_string] : &:r1831_3, r1831_6 +# 1831| v1831_8(void) = ReturnVoid : +# 1831| v1831_9(void) = AliasedUse : ~m? +# 1831| v1831_10(void) = ExitFunction : + +# 1833| int global_6 +# 1833| Block 0 +# 1833| v1833_1(void) = EnterFunction : +# 1833| mu1833_2(unknown) = AliasedDefinition : +# 1833| r1833_3(glval) = VariableAddress[global_6] : +# 1833| r1833_4(glval) = VariableAddress[global_2] : +# 1833| r1833_5(int) = Load[global_2] : &:r1833_4, ~m? +# 1833| mu1833_6(int) = Store[global_6] : &:r1833_3, r1833_5 +# 1833| v1833_7(void) = ReturnVoid : +# 1833| v1833_8(void) = AliasedUse : ~m? +# 1833| v1833_9(void) = ExitFunction : + +# 1836| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1836| Block 0 +# 1836| v1836_1(void) = EnterFunction : +# 1836| mu1836_2(unknown) = AliasedDefinition : +# 1836| mu1836_3(unknown) = InitializeNonLocal : +# 1836| r1836_4(glval) = VariableAddress[#this] : +# 1836| mu1836_5(glval) = InitializeParameter[#this] : &:r1836_4 +# 1836| r1836_6(glval) = Load[#this] : &:r1836_4, ~m? +# 1836| mu1836_7(A) = InitializeIndirection[#this] : &:r1836_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(A &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(A &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? @@ -10051,884 +10051,884 @@ ir.cpp: #-----| r0_17(glval) = CopyValue : r0_16 #-----| r0_18(A &) = CopyValue : r0_17 #-----| mu0_19(A &) = Store[#return] : &:r0_14, r0_18 -# 1834| v1834_8(void) = ReturnIndirection[#this] : &:r1834_6, ~m? +# 1836| v1836_8(void) = ReturnIndirection[#this] : &:r1836_6, ~m? #-----| v0_20(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1834| r1834_9(glval) = VariableAddress[#return] : -# 1834| v1834_10(void) = ReturnValue : &:r1834_9, ~m? -# 1834| v1834_11(void) = AliasedUse : ~m? -# 1834| v1834_12(void) = ExitFunction : - -# 1839| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1839| Block 0 -# 1839| v1839_1(void) = EnterFunction : -# 1839| mu1839_2(unknown) = AliasedDefinition : -# 1839| mu1839_3(unknown) = InitializeNonLocal : -# 1839| r1839_4(glval) = VariableAddress[#this] : -# 1839| mu1839_5(glval) = InitializeParameter[#this] : &:r1839_4 -# 1839| r1839_6(glval) = Load[#this] : &:r1839_4, ~m? -# 1839| mu1839_7(B) = InitializeIndirection[#this] : &:r1839_6 +# 1836| r1836_9(glval) = VariableAddress[#return] : +# 1836| v1836_10(void) = ReturnValue : &:r1836_9, ~m? +# 1836| v1836_11(void) = AliasedUse : ~m? +# 1836| v1836_12(void) = ExitFunction : + +# 1841| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1841| Block 0 +# 1841| v1841_1(void) = EnterFunction : +# 1841| mu1841_2(unknown) = AliasedDefinition : +# 1841| mu1841_3(unknown) = InitializeNonLocal : +# 1841| r1841_4(glval) = VariableAddress[#this] : +# 1841| mu1841_5(glval) = InitializeParameter[#this] : &:r1841_4 +# 1841| r1841_6(glval) = Load[#this] : &:r1841_4, ~m? +# 1841| mu1841_7(B) = InitializeIndirection[#this] : &:r1841_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(B &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(B &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1839| r1839_8(glval) = VariableAddress[#this] : -# 1839| r1839_9(B *) = Load[#this] : &:r1839_8, ~m? -#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1839_9 -# 1839| r1839_10(glval) = FunctionAddress[operator=] : -# 1839| r1839_11(glval) = VariableAddress[(unnamed parameter 0)] : -# 1839| r1839_12(B &&) = Load[(unnamed parameter 0)] : &:r1839_11, ~m? -#-----| r0_6(glval) = CopyValue : r1839_12 -# 1839| r1839_13(B *) = CopyValue : r0_6 -#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1839_13 -# 1839| r1839_14(glval) = CopyValue : r0_7 -#-----| r0_8(A &) = CopyValue : r1839_14 -# 1839| r1839_15(A &) = Call[operator=] : func:r1839_10, this:r0_5, 0:r0_8 -# 1839| mu1839_16(unknown) = ^CallSideEffect : ~m? +# 1841| r1841_8(glval) = VariableAddress[#this] : +# 1841| r1841_9(B *) = Load[#this] : &:r1841_8, ~m? +#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1841_9 +# 1841| r1841_10(glval) = FunctionAddress[operator=] : +# 1841| r1841_11(glval) = VariableAddress[(unnamed parameter 0)] : +# 1841| r1841_12(B &&) = Load[(unnamed parameter 0)] : &:r1841_11, ~m? +#-----| r0_6(glval) = CopyValue : r1841_12 +# 1841| r1841_13(B *) = CopyValue : r0_6 +#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1841_13 +# 1841| r1841_14(glval) = CopyValue : r0_7 +#-----| r0_8(A &) = CopyValue : r1841_14 +# 1841| r1841_15(A &) = Call[operator=] : func:r1841_10, this:r0_5, 0:r0_8 +# 1841| mu1841_16(unknown) = ^CallSideEffect : ~m? #-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? #-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_8, ~m? #-----| mu0_11(A) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 #-----| mu0_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_8 -#-----| r0_13(glval) = CopyValue : r1839_15 +#-----| r0_13(glval) = CopyValue : r1841_15 #-----| r0_14(glval) = VariableAddress[#return] : #-----| r0_15(glval) = VariableAddress[#this] : #-----| r0_16(B *) = Load[#this] : &:r0_15, ~m? #-----| r0_17(glval) = CopyValue : r0_16 #-----| r0_18(B &) = CopyValue : r0_17 #-----| mu0_19(B &) = Store[#return] : &:r0_14, r0_18 -# 1839| v1839_17(void) = ReturnIndirection[#this] : &:r1839_6, ~m? +# 1841| v1841_17(void) = ReturnIndirection[#this] : &:r1841_6, ~m? #-----| v0_20(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1839| r1839_18(glval) = VariableAddress[#return] : -# 1839| v1839_19(void) = ReturnValue : &:r1839_18, ~m? -# 1839| v1839_20(void) = AliasedUse : ~m? -# 1839| v1839_21(void) = ExitFunction : - -# 1843| void block_assignment::foo() -# 1843| Block 0 -# 1843| v1843_1(void) = EnterFunction : -# 1843| mu1843_2(unknown) = AliasedDefinition : -# 1843| mu1843_3(unknown) = InitializeNonLocal : -# 1844| r1844_1(glval) = VariableAddress[v] : -# 1844| mu1844_2(B) = Uninitialized[v] : &:r1844_1 -# 1844| r1844_3(glval) = FunctionAddress[B] : -# 1844| r1844_4(A *) = Constant[0] : -# 1844| v1844_5(void) = Call[B] : func:r1844_3, this:r1844_1, 0:r1844_4 -# 1844| mu1844_6(unknown) = ^CallSideEffect : ~m? -# 1844| v1844_7(void) = ^BufferReadSideEffect[0] : &:r1844_4, ~m? -# 1844| mu1844_8(B) = ^IndirectMayWriteSideEffect[-1] : &:r1844_1 -# 1844| mu1844_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1844_4 -# 1845| r1845_1(glval) = VariableAddress[v] : -# 1845| r1845_2(glval) = FunctionAddress[operator=] : -# 1845| r1845_3(glval) = VariableAddress[#temp1845:13] : -# 1845| mu1845_4(B) = Uninitialized[#temp1845:13] : &:r1845_3 -# 1845| r1845_5(glval) = FunctionAddress[B] : -# 1845| r1845_6(A *) = Constant[0] : -# 1845| v1845_7(void) = Call[B] : func:r1845_5, this:r1845_3, 0:r1845_6 -# 1845| mu1845_8(unknown) = ^CallSideEffect : ~m? -# 1845| v1845_9(void) = ^BufferReadSideEffect[0] : &:r1845_6, ~m? -# 1845| mu1845_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1845_3 -# 1845| mu1845_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1845_6 -# 1845| r1845_12(B &) = CopyValue : r1845_3 -# 1845| r1845_13(B &) = Call[operator=] : func:r1845_2, this:r1845_1, 0:r1845_12 -# 1845| mu1845_14(unknown) = ^CallSideEffect : ~m? -# 1845| v1845_15(void) = ^IndirectReadSideEffect[-1] : &:r1845_1, ~m? -# 1845| v1845_16(void) = ^BufferReadSideEffect[0] : &:r1845_12, ~m? -# 1845| mu1845_17(B) = ^IndirectMayWriteSideEffect[-1] : &:r1845_1 -# 1845| mu1845_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r1845_12 -# 1845| r1845_19(glval) = CopyValue : r1845_13 -# 1846| v1846_1(void) = NoOp : -# 1843| v1843_4(void) = ReturnVoid : -# 1843| v1843_5(void) = AliasedUse : ~m? -# 1843| v1843_6(void) = ExitFunction : - -# 1849| void magicvars() -# 1849| Block 0 -# 1849| v1849_1(void) = EnterFunction : -# 1849| mu1849_2(unknown) = AliasedDefinition : -# 1849| mu1849_3(unknown) = InitializeNonLocal : -# 1850| r1850_1(glval) = VariableAddress[pf] : -# 1850| r1850_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : -# 1850| r1850_3(char *) = Convert : r1850_2 -# 1850| mu1850_4(char *) = Store[pf] : &:r1850_1, r1850_3 -# 1851| r1851_1(glval) = VariableAddress[strfunc] : -# 1851| r1851_2(glval) = VariableAddress[__func__] : -# 1851| r1851_3(char *) = Convert : r1851_2 -# 1851| mu1851_4(char *) = Store[strfunc] : &:r1851_1, r1851_3 -# 1852| v1852_1(void) = NoOp : -# 1849| v1849_4(void) = ReturnVoid : -# 1849| v1849_5(void) = AliasedUse : ~m? -# 1849| v1849_6(void) = ExitFunction : - -# 1862| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1862| Block 0 -# 1862| v1862_1(void) = EnterFunction : -# 1862| mu1862_2(unknown) = AliasedDefinition : -# 1862| mu1862_3(unknown) = InitializeNonLocal : -# 1862| r1862_4(glval) = VariableAddress[#this] : -# 1862| mu1862_5(glval>) = InitializeParameter[#this] : &:r1862_4 -# 1862| r1862_6(glval>) = Load[#this] : &:r1862_4, ~m? -# 1862| mu1862_7(Bar1) = InitializeIndirection[#this] : &:r1862_6 -# 1862| r1862_8(glval) = VariableAddress[p] : -# 1862| mu1862_9(S *) = InitializeParameter[p] : &:r1862_8 -# 1862| r1862_10(S *) = Load[p] : &:r1862_8, ~m? -# 1862| mu1862_11(unknown) = InitializeIndirection[p] : &:r1862_10 -# 1864| r1864_1(glval) = VariableAddress[#return] : -# 1864| r1864_2(glval) = VariableAddress[p] : -# 1864| r1864_3(S *) = Load[p] : &:r1864_2, ~m? -# 1864| r1864_4(void *) = Convert : r1864_3 -# 1864| mu1864_5(void *) = Store[#return] : &:r1864_1, r1864_4 -# 1862| v1862_12(void) = ReturnIndirection[#this] : &:r1862_6, ~m? -# 1862| v1862_13(void) = ReturnIndirection[p] : &:r1862_10, ~m? -# 1862| r1862_14(glval) = VariableAddress[#return] : -# 1862| v1862_15(void) = ReturnValue : &:r1862_14, ~m? -# 1862| v1862_16(void) = AliasedUse : ~m? -# 1862| v1862_17(void) = ExitFunction : - -# 1868| void missing_declaration_entries::test1() -# 1868| Block 0 -# 1868| v1868_1(void) = EnterFunction : -# 1868| mu1868_2(unknown) = AliasedDefinition : -# 1868| mu1868_3(unknown) = InitializeNonLocal : -# 1869| r1869_1(glval>) = VariableAddress[b] : -# 1869| mu1869_2(Bar1) = Uninitialized[b] : &:r1869_1 -# 1870| r1870_1(glval>) = VariableAddress[b] : -# 1870| r1870_2(glval) = FunctionAddress[missing_type_decl_entry] : -# 1870| r1870_3(S *) = Constant[0] : -# 1870| r1870_4(void *) = Call[missing_type_decl_entry] : func:r1870_2, this:r1870_1, 0:r1870_3 -# 1870| mu1870_5(unknown) = ^CallSideEffect : ~m? -# 1870| v1870_6(void) = ^IndirectReadSideEffect[-1] : &:r1870_1, ~m? -# 1870| v1870_7(void) = ^BufferReadSideEffect[0] : &:r1870_3, ~m? -# 1870| mu1870_8(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1870_1 -# 1870| mu1870_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1870_3 -# 1871| v1871_1(void) = NoOp : -# 1868| v1868_4(void) = ReturnVoid : -# 1868| v1868_5(void) = AliasedUse : ~m? -# 1868| v1868_6(void) = ExitFunction : - -# 1875| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1875| Block 0 -# 1875| v1875_1(void) = EnterFunction : -# 1875| mu1875_2(unknown) = AliasedDefinition : -# 1875| mu1875_3(unknown) = InitializeNonLocal : -# 1875| r1875_4(glval) = VariableAddress[#this] : -# 1875| mu1875_5(glval>) = InitializeParameter[#this] : &:r1875_4 -# 1875| r1875_6(glval>) = Load[#this] : &:r1875_4, ~m? -# 1875| mu1875_7(Bar2) = InitializeIndirection[#this] : &:r1875_6 -# 1876| r1876_1(glval) = VariableAddress[x] : -# 1876| mu1876_2(int[10]) = Uninitialized[x] : &:r1876_1 -# 1876| r1876_3(glval) = VariableAddress[y] : -# 1876| mu1876_4(int[10]) = Uninitialized[y] : &:r1876_3 -# 1877| r1877_1(int) = Constant[10] : -# 1877| r1877_2(glval) = VariableAddress[x] : -# 1877| r1877_3(int *) = Convert : r1877_2 -# 1877| r1877_4(glval) = CopyValue : r1877_3 -# 1877| mu1877_5(int) = Store[?] : &:r1877_4, r1877_1 -# 1878| r1878_1(int) = Constant[10] : -# 1878| r1878_2(glval) = VariableAddress[y] : -# 1878| r1878_3(int *) = Convert : r1878_2 -# 1878| r1878_4(glval) = CopyValue : r1878_3 -# 1878| mu1878_5(int) = Store[?] : &:r1878_4, r1878_1 -# 1879| r1879_1(glval) = VariableAddress[#return] : +# 1841| r1841_18(glval) = VariableAddress[#return] : +# 1841| v1841_19(void) = ReturnValue : &:r1841_18, ~m? +# 1841| v1841_20(void) = AliasedUse : ~m? +# 1841| v1841_21(void) = ExitFunction : + +# 1845| void block_assignment::foo() +# 1845| Block 0 +# 1845| v1845_1(void) = EnterFunction : +# 1845| mu1845_2(unknown) = AliasedDefinition : +# 1845| mu1845_3(unknown) = InitializeNonLocal : +# 1846| r1846_1(glval) = VariableAddress[v] : +# 1846| mu1846_2(B) = Uninitialized[v] : &:r1846_1 +# 1846| r1846_3(glval) = FunctionAddress[B] : +# 1846| r1846_4(A *) = Constant[0] : +# 1846| v1846_5(void) = Call[B] : func:r1846_3, this:r1846_1, 0:r1846_4 +# 1846| mu1846_6(unknown) = ^CallSideEffect : ~m? +# 1846| v1846_7(void) = ^BufferReadSideEffect[0] : &:r1846_4, ~m? +# 1846| mu1846_8(B) = ^IndirectMayWriteSideEffect[-1] : &:r1846_1 +# 1846| mu1846_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1846_4 +# 1847| r1847_1(glval) = VariableAddress[v] : +# 1847| r1847_2(glval) = FunctionAddress[operator=] : +# 1847| r1847_3(glval) = VariableAddress[#temp1847:13] : +# 1847| mu1847_4(B) = Uninitialized[#temp1847:13] : &:r1847_3 +# 1847| r1847_5(glval) = FunctionAddress[B] : +# 1847| r1847_6(A *) = Constant[0] : +# 1847| v1847_7(void) = Call[B] : func:r1847_5, this:r1847_3, 0:r1847_6 +# 1847| mu1847_8(unknown) = ^CallSideEffect : ~m? +# 1847| v1847_9(void) = ^BufferReadSideEffect[0] : &:r1847_6, ~m? +# 1847| mu1847_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_3 +# 1847| mu1847_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_6 +# 1847| r1847_12(B &) = CopyValue : r1847_3 +# 1847| r1847_13(B &) = Call[operator=] : func:r1847_2, this:r1847_1, 0:r1847_12 +# 1847| mu1847_14(unknown) = ^CallSideEffect : ~m? +# 1847| v1847_15(void) = ^IndirectReadSideEffect[-1] : &:r1847_1, ~m? +# 1847| v1847_16(void) = ^BufferReadSideEffect[0] : &:r1847_12, ~m? +# 1847| mu1847_17(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_1 +# 1847| mu1847_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_12 +# 1847| r1847_19(glval) = CopyValue : r1847_13 +# 1848| v1848_1(void) = NoOp : +# 1845| v1845_4(void) = ReturnVoid : +# 1845| v1845_5(void) = AliasedUse : ~m? +# 1845| v1845_6(void) = ExitFunction : + +# 1851| void magicvars() +# 1851| Block 0 +# 1851| v1851_1(void) = EnterFunction : +# 1851| mu1851_2(unknown) = AliasedDefinition : +# 1851| mu1851_3(unknown) = InitializeNonLocal : +# 1852| r1852_1(glval) = VariableAddress[pf] : +# 1852| r1852_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : +# 1852| r1852_3(char *) = Convert : r1852_2 +# 1852| mu1852_4(char *) = Store[pf] : &:r1852_1, r1852_3 +# 1853| r1853_1(glval) = VariableAddress[strfunc] : +# 1853| r1853_2(glval) = VariableAddress[__func__] : +# 1853| r1853_3(char *) = Convert : r1853_2 +# 1853| mu1853_4(char *) = Store[strfunc] : &:r1853_1, r1853_3 +# 1854| v1854_1(void) = NoOp : +# 1851| v1851_4(void) = ReturnVoid : +# 1851| v1851_5(void) = AliasedUse : ~m? +# 1851| v1851_6(void) = ExitFunction : + +# 1864| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1864| Block 0 +# 1864| v1864_1(void) = EnterFunction : +# 1864| mu1864_2(unknown) = AliasedDefinition : +# 1864| mu1864_3(unknown) = InitializeNonLocal : +# 1864| r1864_4(glval) = VariableAddress[#this] : +# 1864| mu1864_5(glval>) = InitializeParameter[#this] : &:r1864_4 +# 1864| r1864_6(glval>) = Load[#this] : &:r1864_4, ~m? +# 1864| mu1864_7(Bar1) = InitializeIndirection[#this] : &:r1864_6 +# 1864| r1864_8(glval) = VariableAddress[p] : +# 1864| mu1864_9(S *) = InitializeParameter[p] : &:r1864_8 +# 1864| r1864_10(S *) = Load[p] : &:r1864_8, ~m? +# 1864| mu1864_11(unknown) = InitializeIndirection[p] : &:r1864_10 +# 1866| r1866_1(glval) = VariableAddress[#return] : +# 1866| r1866_2(glval) = VariableAddress[p] : +# 1866| r1866_3(S *) = Load[p] : &:r1866_2, ~m? +# 1866| r1866_4(void *) = Convert : r1866_3 +# 1866| mu1866_5(void *) = Store[#return] : &:r1866_1, r1866_4 +# 1864| v1864_12(void) = ReturnIndirection[#this] : &:r1864_6, ~m? +# 1864| v1864_13(void) = ReturnIndirection[p] : &:r1864_10, ~m? +# 1864| r1864_14(glval) = VariableAddress[#return] : +# 1864| v1864_15(void) = ReturnValue : &:r1864_14, ~m? +# 1864| v1864_16(void) = AliasedUse : ~m? +# 1864| v1864_17(void) = ExitFunction : + +# 1870| void missing_declaration_entries::test1() +# 1870| Block 0 +# 1870| v1870_1(void) = EnterFunction : +# 1870| mu1870_2(unknown) = AliasedDefinition : +# 1870| mu1870_3(unknown) = InitializeNonLocal : +# 1871| r1871_1(glval>) = VariableAddress[b] : +# 1871| mu1871_2(Bar1) = Uninitialized[b] : &:r1871_1 +# 1872| r1872_1(glval>) = VariableAddress[b] : +# 1872| r1872_2(glval) = FunctionAddress[missing_type_decl_entry] : +# 1872| r1872_3(S *) = Constant[0] : +# 1872| r1872_4(void *) = Call[missing_type_decl_entry] : func:r1872_2, this:r1872_1, 0:r1872_3 +# 1872| mu1872_5(unknown) = ^CallSideEffect : ~m? +# 1872| v1872_6(void) = ^IndirectReadSideEffect[-1] : &:r1872_1, ~m? +# 1872| v1872_7(void) = ^BufferReadSideEffect[0] : &:r1872_3, ~m? +# 1872| mu1872_8(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1872_1 +# 1872| mu1872_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1872_3 +# 1873| v1873_1(void) = NoOp : +# 1870| v1870_4(void) = ReturnVoid : +# 1870| v1870_5(void) = AliasedUse : ~m? +# 1870| v1870_6(void) = ExitFunction : + +# 1877| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1877| Block 0 +# 1877| v1877_1(void) = EnterFunction : +# 1877| mu1877_2(unknown) = AliasedDefinition : +# 1877| mu1877_3(unknown) = InitializeNonLocal : +# 1877| r1877_4(glval) = VariableAddress[#this] : +# 1877| mu1877_5(glval>) = InitializeParameter[#this] : &:r1877_4 +# 1877| r1877_6(glval>) = Load[#this] : &:r1877_4, ~m? +# 1877| mu1877_7(Bar2) = InitializeIndirection[#this] : &:r1877_6 +# 1878| r1878_1(glval) = VariableAddress[x] : +# 1878| mu1878_2(int[10]) = Uninitialized[x] : &:r1878_1 +# 1878| r1878_3(glval) = VariableAddress[y] : +# 1878| mu1878_4(int[10]) = Uninitialized[y] : &:r1878_3 +# 1879| r1879_1(int) = Constant[10] : # 1879| r1879_2(glval) = VariableAddress[x] : # 1879| r1879_3(int *) = Convert : r1879_2 -# 1879| r1879_4(int) = Load[?] : &:r1879_3, ~m? -# 1879| r1879_5(glval) = VariableAddress[y] : -# 1879| r1879_6(int *) = Convert : r1879_5 -# 1879| r1879_7(int) = Load[?] : &:r1879_6, ~m? -# 1879| r1879_8(int) = Add : r1879_4, r1879_7 -# 1879| mu1879_9(int) = Store[#return] : &:r1879_1, r1879_8 -# 1875| v1875_8(void) = ReturnIndirection[#this] : &:r1875_6, ~m? -# 1875| r1875_9(glval) = VariableAddress[#return] : -# 1875| v1875_10(void) = ReturnValue : &:r1875_9, ~m? -# 1875| v1875_11(void) = AliasedUse : ~m? -# 1875| v1875_12(void) = ExitFunction : - -# 1883| void missing_declaration_entries::test2() -# 1883| Block 0 -# 1883| v1883_1(void) = EnterFunction : -# 1883| mu1883_2(unknown) = AliasedDefinition : -# 1883| mu1883_3(unknown) = InitializeNonLocal : -# 1884| r1884_1(glval>) = VariableAddress[b] : -# 1884| mu1884_2(Bar2) = Uninitialized[b] : &:r1884_1 -# 1885| r1885_1(glval>) = VariableAddress[b] : -# 1885| r1885_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : -# 1885| r1885_3(int) = Call[two_missing_variable_declaration_entries] : func:r1885_2, this:r1885_1 -# 1885| mu1885_4(unknown) = ^CallSideEffect : ~m? -# 1885| v1885_5(void) = ^IndirectReadSideEffect[-1] : &:r1885_1, ~m? -# 1885| mu1885_6(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1885_1 -# 1886| v1886_1(void) = NoOp : -# 1883| v1883_4(void) = ReturnVoid : -# 1883| v1883_5(void) = AliasedUse : ~m? -# 1883| v1883_6(void) = ExitFunction : - -# 1889| char global_template -# 1889| Block 0 -# 1889| v1889_1(void) = EnterFunction : -# 1889| mu1889_2(unknown) = AliasedDefinition : -# 1889| r1889_3(glval) = VariableAddress[global_template] : -# 1889| r1889_4(char) = Constant[42] : -# 1889| mu1889_5(char) = Store[global_template] : &:r1889_3, r1889_4 -# 1889| v1889_6(void) = ReturnVoid : -# 1889| v1889_7(void) = AliasedUse : ~m? -# 1889| v1889_8(void) = ExitFunction : - -# 1889| int global_template -# 1889| Block 0 -# 1889| v1889_1(void) = EnterFunction : -# 1889| mu1889_2(unknown) = AliasedDefinition : -# 1889| r1889_3(glval) = VariableAddress[global_template] : -# 1889| r1889_4(int) = Constant[42] : -# 1889| mu1889_5(int) = Store[global_template] : &:r1889_3, r1889_4 -# 1889| v1889_6(void) = ReturnVoid : -# 1889| v1889_7(void) = AliasedUse : ~m? -# 1889| v1889_8(void) = ExitFunction : - -# 1891| int test_global_template_int() +# 1879| r1879_4(glval) = CopyValue : r1879_3 +# 1879| mu1879_5(int) = Store[?] : &:r1879_4, r1879_1 +# 1880| r1880_1(int) = Constant[10] : +# 1880| r1880_2(glval) = VariableAddress[y] : +# 1880| r1880_3(int *) = Convert : r1880_2 +# 1880| r1880_4(glval) = CopyValue : r1880_3 +# 1880| mu1880_5(int) = Store[?] : &:r1880_4, r1880_1 +# 1881| r1881_1(glval) = VariableAddress[#return] : +# 1881| r1881_2(glval) = VariableAddress[x] : +# 1881| r1881_3(int *) = Convert : r1881_2 +# 1881| r1881_4(int) = Load[?] : &:r1881_3, ~m? +# 1881| r1881_5(glval) = VariableAddress[y] : +# 1881| r1881_6(int *) = Convert : r1881_5 +# 1881| r1881_7(int) = Load[?] : &:r1881_6, ~m? +# 1881| r1881_8(int) = Add : r1881_4, r1881_7 +# 1881| mu1881_9(int) = Store[#return] : &:r1881_1, r1881_8 +# 1877| v1877_8(void) = ReturnIndirection[#this] : &:r1877_6, ~m? +# 1877| r1877_9(glval) = VariableAddress[#return] : +# 1877| v1877_10(void) = ReturnValue : &:r1877_9, ~m? +# 1877| v1877_11(void) = AliasedUse : ~m? +# 1877| v1877_12(void) = ExitFunction : + +# 1885| void missing_declaration_entries::test2() +# 1885| Block 0 +# 1885| v1885_1(void) = EnterFunction : +# 1885| mu1885_2(unknown) = AliasedDefinition : +# 1885| mu1885_3(unknown) = InitializeNonLocal : +# 1886| r1886_1(glval>) = VariableAddress[b] : +# 1886| mu1886_2(Bar2) = Uninitialized[b] : &:r1886_1 +# 1887| r1887_1(glval>) = VariableAddress[b] : +# 1887| r1887_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : +# 1887| r1887_3(int) = Call[two_missing_variable_declaration_entries] : func:r1887_2, this:r1887_1 +# 1887| mu1887_4(unknown) = ^CallSideEffect : ~m? +# 1887| v1887_5(void) = ^IndirectReadSideEffect[-1] : &:r1887_1, ~m? +# 1887| mu1887_6(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1887_1 +# 1888| v1888_1(void) = NoOp : +# 1885| v1885_4(void) = ReturnVoid : +# 1885| v1885_5(void) = AliasedUse : ~m? +# 1885| v1885_6(void) = ExitFunction : + +# 1891| char global_template # 1891| Block 0 # 1891| v1891_1(void) = EnterFunction : # 1891| mu1891_2(unknown) = AliasedDefinition : -# 1891| mu1891_3(unknown) = InitializeNonLocal : -# 1892| r1892_1(glval) = VariableAddress[local_int] : -# 1892| r1892_2(glval) = VariableAddress[global_template] : -# 1892| r1892_3(int) = Load[global_template] : &:r1892_2, ~m? -# 1892| mu1892_4(int) = Store[local_int] : &:r1892_1, r1892_3 -# 1893| r1893_1(glval) = VariableAddress[local_char] : -# 1893| r1893_2(glval) = VariableAddress[global_template] : -# 1893| r1893_3(char) = Load[global_template] : &:r1893_2, ~m? -# 1893| mu1893_4(char) = Store[local_char] : &:r1893_1, r1893_3 -# 1894| r1894_1(glval) = VariableAddress[#return] : -# 1894| r1894_2(glval) = VariableAddress[local_int] : -# 1894| r1894_3(int) = Load[local_int] : &:r1894_2, ~m? -# 1894| r1894_4(glval) = VariableAddress[local_char] : -# 1894| r1894_5(char) = Load[local_char] : &:r1894_4, ~m? -# 1894| r1894_6(int) = Convert : r1894_5 -# 1894| r1894_7(int) = Add : r1894_3, r1894_6 -# 1894| mu1894_8(int) = Store[#return] : &:r1894_1, r1894_7 -# 1891| r1891_4(glval) = VariableAddress[#return] : -# 1891| v1891_5(void) = ReturnValue : &:r1891_4, ~m? -# 1891| v1891_6(void) = AliasedUse : ~m? -# 1891| v1891_7(void) = ExitFunction : - -# 1899| int noreturnTest(int) -# 1899| Block 0 -# 1899| v1899_1(void) = EnterFunction : -# 1899| mu1899_2(unknown) = AliasedDefinition : -# 1899| mu1899_3(unknown) = InitializeNonLocal : -# 1899| r1899_4(glval) = VariableAddress[x] : -# 1899| mu1899_5(int) = InitializeParameter[x] : &:r1899_4 -# 1900| r1900_1(glval) = VariableAddress[x] : -# 1900| r1900_2(int) = Load[x] : &:r1900_1, ~m? -# 1900| r1900_3(int) = Constant[10] : -# 1900| r1900_4(bool) = CompareLT : r1900_2, r1900_3 -# 1900| v1900_5(void) = ConditionalBranch : r1900_4 +# 1891| r1891_3(glval) = VariableAddress[global_template] : +# 1891| r1891_4(char) = Constant[42] : +# 1891| mu1891_5(char) = Store[global_template] : &:r1891_3, r1891_4 +# 1891| v1891_6(void) = ReturnVoid : +# 1891| v1891_7(void) = AliasedUse : ~m? +# 1891| v1891_8(void) = ExitFunction : + +# 1891| int global_template +# 1891| Block 0 +# 1891| v1891_1(void) = EnterFunction : +# 1891| mu1891_2(unknown) = AliasedDefinition : +# 1891| r1891_3(glval) = VariableAddress[global_template] : +# 1891| r1891_4(int) = Constant[42] : +# 1891| mu1891_5(int) = Store[global_template] : &:r1891_3, r1891_4 +# 1891| v1891_6(void) = ReturnVoid : +# 1891| v1891_7(void) = AliasedUse : ~m? +# 1891| v1891_8(void) = ExitFunction : + +# 1893| int test_global_template_int() +# 1893| Block 0 +# 1893| v1893_1(void) = EnterFunction : +# 1893| mu1893_2(unknown) = AliasedDefinition : +# 1893| mu1893_3(unknown) = InitializeNonLocal : +# 1894| r1894_1(glval) = VariableAddress[local_int] : +# 1894| r1894_2(glval) = VariableAddress[global_template] : +# 1894| r1894_3(int) = Load[global_template] : &:r1894_2, ~m? +# 1894| mu1894_4(int) = Store[local_int] : &:r1894_1, r1894_3 +# 1895| r1895_1(glval) = VariableAddress[local_char] : +# 1895| r1895_2(glval) = VariableAddress[global_template] : +# 1895| r1895_3(char) = Load[global_template] : &:r1895_2, ~m? +# 1895| mu1895_4(char) = Store[local_char] : &:r1895_1, r1895_3 +# 1896| r1896_1(glval) = VariableAddress[#return] : +# 1896| r1896_2(glval) = VariableAddress[local_int] : +# 1896| r1896_3(int) = Load[local_int] : &:r1896_2, ~m? +# 1896| r1896_4(glval) = VariableAddress[local_char] : +# 1896| r1896_5(char) = Load[local_char] : &:r1896_4, ~m? +# 1896| r1896_6(int) = Convert : r1896_5 +# 1896| r1896_7(int) = Add : r1896_3, r1896_6 +# 1896| mu1896_8(int) = Store[#return] : &:r1896_1, r1896_7 +# 1893| r1893_4(glval) = VariableAddress[#return] : +# 1893| v1893_5(void) = ReturnValue : &:r1893_4, ~m? +# 1893| v1893_6(void) = AliasedUse : ~m? +# 1893| v1893_7(void) = ExitFunction : + +# 1901| int noreturnTest(int) +# 1901| Block 0 +# 1901| v1901_1(void) = EnterFunction : +# 1901| mu1901_2(unknown) = AliasedDefinition : +# 1901| mu1901_3(unknown) = InitializeNonLocal : +# 1901| r1901_4(glval) = VariableAddress[x] : +# 1901| mu1901_5(int) = InitializeParameter[x] : &:r1901_4 +# 1902| r1902_1(glval) = VariableAddress[x] : +# 1902| r1902_2(int) = Load[x] : &:r1902_1, ~m? +# 1902| r1902_3(int) = Constant[10] : +# 1902| r1902_4(bool) = CompareLT : r1902_2, r1902_3 +# 1902| v1902_5(void) = ConditionalBranch : r1902_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 1899| Block 1 -# 1899| r1899_6(glval) = VariableAddress[#return] : -# 1899| v1899_7(void) = ReturnValue : &:r1899_6, ~m? -# 1899| v1899_8(void) = AliasedUse : ~m? -# 1899| v1899_9(void) = ExitFunction : - -# 1901| Block 2 -# 1901| r1901_1(glval) = VariableAddress[#return] : -# 1901| r1901_2(glval) = VariableAddress[x] : -# 1901| r1901_3(int) = Load[x] : &:r1901_2, ~m? -# 1901| mu1901_4(int) = Store[#return] : &:r1901_1, r1901_3 +# 1901| Block 1 +# 1901| r1901_6(glval) = VariableAddress[#return] : +# 1901| v1901_7(void) = ReturnValue : &:r1901_6, ~m? +# 1901| v1901_8(void) = AliasedUse : ~m? +# 1901| v1901_9(void) = ExitFunction : + +# 1903| Block 2 +# 1903| r1903_1(glval) = VariableAddress[#return] : +# 1903| r1903_2(glval) = VariableAddress[x] : +# 1903| r1903_3(int) = Load[x] : &:r1903_2, ~m? +# 1903| mu1903_4(int) = Store[#return] : &:r1903_1, r1903_3 #-----| Goto -> Block 1 -# 1903| Block 3 -# 1903| r1903_1(glval) = FunctionAddress[noreturnFunc] : -# 1903| v1903_2(void) = Call[noreturnFunc] : func:r1903_1 -# 1903| mu1903_3(unknown) = ^CallSideEffect : ~m? -# 1899| v1899_10(void) = Unreached : +# 1905| Block 3 +# 1905| r1905_1(glval) = FunctionAddress[noreturnFunc] : +# 1905| v1905_2(void) = Call[noreturnFunc] : func:r1905_1 +# 1905| mu1905_3(unknown) = ^CallSideEffect : ~m? +# 1901| v1901_10(void) = Unreached : -# 1905| Block 4 -# 1905| r1905_1(glval) = VariableAddress[#return] : -# 1905| mu1905_2(int) = Uninitialized[#return] : &:r1905_1 +# 1907| Block 4 +# 1907| r1907_1(glval) = VariableAddress[#return] : +# 1907| mu1907_2(int) = Uninitialized[#return] : &:r1907_1 #-----| Goto -> Block 1 -# 1907| int noreturnTest2(int) -# 1907| Block 0 -# 1907| v1907_1(void) = EnterFunction : -# 1907| mu1907_2(unknown) = AliasedDefinition : -# 1907| mu1907_3(unknown) = InitializeNonLocal : -# 1907| r1907_4(glval) = VariableAddress[x] : -# 1907| mu1907_5(int) = InitializeParameter[x] : &:r1907_4 -# 1908| r1908_1(glval) = VariableAddress[x] : -# 1908| r1908_2(int) = Load[x] : &:r1908_1, ~m? -# 1908| r1908_3(int) = Constant[10] : -# 1908| r1908_4(bool) = CompareLT : r1908_2, r1908_3 -# 1908| v1908_5(void) = ConditionalBranch : r1908_4 +# 1909| int noreturnTest2(int) +# 1909| Block 0 +# 1909| v1909_1(void) = EnterFunction : +# 1909| mu1909_2(unknown) = AliasedDefinition : +# 1909| mu1909_3(unknown) = InitializeNonLocal : +# 1909| r1909_4(glval) = VariableAddress[x] : +# 1909| mu1909_5(int) = InitializeParameter[x] : &:r1909_4 +# 1910| r1910_1(glval) = VariableAddress[x] : +# 1910| r1910_2(int) = Load[x] : &:r1910_1, ~m? +# 1910| r1910_3(int) = Constant[10] : +# 1910| r1910_4(bool) = CompareLT : r1910_2, r1910_3 +# 1910| v1910_5(void) = ConditionalBranch : r1910_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1909| Block 1 -# 1909| r1909_1(glval) = FunctionAddress[noreturnFunc] : -# 1909| v1909_2(void) = Call[noreturnFunc] : func:r1909_1 -# 1909| mu1909_3(unknown) = ^CallSideEffect : ~m? -# 1907| v1907_6(void) = Unreached : - -# 1911| Block 2 -# 1911| r1911_1(glval) = VariableAddress[#return] : -# 1911| r1911_2(glval) = VariableAddress[x] : -# 1911| r1911_3(int) = Load[x] : &:r1911_2, ~m? -# 1911| mu1911_4(int) = Store[#return] : &:r1911_1, r1911_3 -# 1907| r1907_7(glval) = VariableAddress[#return] : -# 1907| v1907_8(void) = ReturnValue : &:r1907_7, ~m? -# 1907| v1907_9(void) = AliasedUse : ~m? -# 1907| v1907_10(void) = ExitFunction : - -# 1914| int static_function(int) -# 1914| Block 0 -# 1914| v1914_1(void) = EnterFunction : -# 1914| mu1914_2(unknown) = AliasedDefinition : -# 1914| mu1914_3(unknown) = InitializeNonLocal : -# 1914| r1914_4(glval) = VariableAddress[x] : -# 1914| mu1914_5(int) = InitializeParameter[x] : &:r1914_4 -# 1915| r1915_1(glval) = VariableAddress[#return] : -# 1915| r1915_2(glval) = VariableAddress[x] : -# 1915| r1915_3(int) = Load[x] : &:r1915_2, ~m? -# 1915| mu1915_4(int) = Store[#return] : &:r1915_1, r1915_3 -# 1914| r1914_6(glval) = VariableAddress[#return] : -# 1914| v1914_7(void) = ReturnValue : &:r1914_6, ~m? -# 1914| v1914_8(void) = AliasedUse : ~m? -# 1914| v1914_9(void) = ExitFunction : - -# 1918| void test_static_functions_with_assignments() -# 1918| Block 0 -# 1918| v1918_1(void) = EnterFunction : -# 1918| mu1918_2(unknown) = AliasedDefinition : -# 1918| mu1918_3(unknown) = InitializeNonLocal : -# 1919| r1919_1(glval) = VariableAddress[c] : -# 1919| mu1919_2(C) = Uninitialized[c] : &:r1919_1 -# 1919| r1919_3(glval) = FunctionAddress[C] : -# 1919| v1919_4(void) = Call[C] : func:r1919_3, this:r1919_1 -# 1919| mu1919_5(unknown) = ^CallSideEffect : ~m? -# 1919| mu1919_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 -# 1920| r1920_1(glval) = VariableAddress[x] : -# 1920| mu1920_2(int) = Uninitialized[x] : &:r1920_1 +# 1911| Block 1 +# 1911| r1911_1(glval) = FunctionAddress[noreturnFunc] : +# 1911| v1911_2(void) = Call[noreturnFunc] : func:r1911_1 +# 1911| mu1911_3(unknown) = ^CallSideEffect : ~m? +# 1909| v1909_6(void) = Unreached : + +# 1913| Block 2 +# 1913| r1913_1(glval) = VariableAddress[#return] : +# 1913| r1913_2(glval) = VariableAddress[x] : +# 1913| r1913_3(int) = Load[x] : &:r1913_2, ~m? +# 1913| mu1913_4(int) = Store[#return] : &:r1913_1, r1913_3 +# 1909| r1909_7(glval) = VariableAddress[#return] : +# 1909| v1909_8(void) = ReturnValue : &:r1909_7, ~m? +# 1909| v1909_9(void) = AliasedUse : ~m? +# 1909| v1909_10(void) = ExitFunction : + +# 1916| int static_function(int) +# 1916| Block 0 +# 1916| v1916_1(void) = EnterFunction : +# 1916| mu1916_2(unknown) = AliasedDefinition : +# 1916| mu1916_3(unknown) = InitializeNonLocal : +# 1916| r1916_4(glval) = VariableAddress[x] : +# 1916| mu1916_5(int) = InitializeParameter[x] : &:r1916_4 +# 1917| r1917_1(glval) = VariableAddress[#return] : +# 1917| r1917_2(glval) = VariableAddress[x] : +# 1917| r1917_3(int) = Load[x] : &:r1917_2, ~m? +# 1917| mu1917_4(int) = Store[#return] : &:r1917_1, r1917_3 +# 1916| r1916_6(glval) = VariableAddress[#return] : +# 1916| v1916_7(void) = ReturnValue : &:r1916_6, ~m? +# 1916| v1916_8(void) = AliasedUse : ~m? +# 1916| v1916_9(void) = ExitFunction : + +# 1920| void test_static_functions_with_assignments() +# 1920| Block 0 +# 1920| v1920_1(void) = EnterFunction : +# 1920| mu1920_2(unknown) = AliasedDefinition : +# 1920| mu1920_3(unknown) = InitializeNonLocal : # 1921| r1921_1(glval) = VariableAddress[c] : -# 1921| r1921_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1921| r1921_3(int) = Constant[10] : -# 1921| r1921_4(int) = Call[StaticMemberFunction] : func:r1921_2, 0:r1921_3 +# 1921| mu1921_2(C) = Uninitialized[c] : &:r1921_1 +# 1921| r1921_3(glval) = FunctionAddress[C] : +# 1921| v1921_4(void) = Call[C] : func:r1921_3, this:r1921_1 # 1921| mu1921_5(unknown) = ^CallSideEffect : ~m? -# 1921| r1921_6(glval) = VariableAddress[x] : -# 1921| mu1921_7(int) = Store[x] : &:r1921_6, r1921_4 -# 1922| r1922_1(glval) = VariableAddress[y] : -# 1922| mu1922_2(int) = Uninitialized[y] : &:r1922_1 -# 1923| r1923_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1923| r1923_2(int) = Constant[10] : -# 1923| r1923_3(int) = Call[StaticMemberFunction] : func:r1923_1, 0:r1923_2 -# 1923| mu1923_4(unknown) = ^CallSideEffect : ~m? -# 1923| r1923_5(glval) = VariableAddress[y] : -# 1923| mu1923_6(int) = Store[y] : &:r1923_5, r1923_3 -# 1924| r1924_1(glval) = VariableAddress[z] : -# 1924| mu1924_2(int) = Uninitialized[z] : &:r1924_1 -# 1925| r1925_1(glval) = FunctionAddress[static_function] : +# 1921| mu1921_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 +# 1922| r1922_1(glval) = VariableAddress[x] : +# 1922| mu1922_2(int) = Uninitialized[x] : &:r1922_1 +# 1923| r1923_1(glval) = VariableAddress[c] : +# 1923| r1923_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1923| r1923_3(int) = Constant[10] : +# 1923| r1923_4(int) = Call[StaticMemberFunction] : func:r1923_2, 0:r1923_3 +# 1923| mu1923_5(unknown) = ^CallSideEffect : ~m? +# 1923| r1923_6(glval) = VariableAddress[x] : +# 1923| mu1923_7(int) = Store[x] : &:r1923_6, r1923_4 +# 1924| r1924_1(glval) = VariableAddress[y] : +# 1924| mu1924_2(int) = Uninitialized[y] : &:r1924_1 +# 1925| r1925_1(glval) = FunctionAddress[StaticMemberFunction] : # 1925| r1925_2(int) = Constant[10] : -# 1925| r1925_3(int) = Call[static_function] : func:r1925_1, 0:r1925_2 +# 1925| r1925_3(int) = Call[StaticMemberFunction] : func:r1925_1, 0:r1925_2 # 1925| mu1925_4(unknown) = ^CallSideEffect : ~m? -# 1925| r1925_5(glval) = VariableAddress[z] : -# 1925| mu1925_6(int) = Store[z] : &:r1925_5, r1925_3 -# 1926| v1926_1(void) = NoOp : -# 1918| v1918_4(void) = ReturnVoid : -# 1918| v1918_5(void) = AliasedUse : ~m? -# 1918| v1918_6(void) = ExitFunction : - -# 1928| void test_double_assign() -# 1928| Block 0 -# 1928| v1928_1(void) = EnterFunction : -# 1928| mu1928_2(unknown) = AliasedDefinition : -# 1928| mu1928_3(unknown) = InitializeNonLocal : -# 1929| r1929_1(glval) = VariableAddress[i] : -# 1929| mu1929_2(int) = Uninitialized[i] : &:r1929_1 -# 1929| r1929_3(glval) = VariableAddress[j] : -# 1929| mu1929_4(int) = Uninitialized[j] : &:r1929_3 -# 1930| r1930_1(int) = Constant[40] : -# 1930| r1930_2(glval) = VariableAddress[j] : -# 1930| mu1930_3(int) = Store[j] : &:r1930_2, r1930_1 -# 1930| r1930_4(int) = Load[j] : &:r1930_2, ~m? -# 1930| r1930_5(glval) = VariableAddress[i] : -# 1930| mu1930_6(int) = Store[i] : &:r1930_5, r1930_4 -# 1931| v1931_1(void) = NoOp : -# 1928| v1928_4(void) = ReturnVoid : -# 1928| v1928_5(void) = AliasedUse : ~m? -# 1928| v1928_6(void) = ExitFunction : - -# 1933| void test_assign_with_assign_operation() -# 1933| Block 0 -# 1933| v1933_1(void) = EnterFunction : -# 1933| mu1933_2(unknown) = AliasedDefinition : -# 1933| mu1933_3(unknown) = InitializeNonLocal : -# 1934| r1934_1(glval) = VariableAddress[i] : -# 1934| mu1934_2(int) = Uninitialized[i] : &:r1934_1 -# 1934| r1934_3(glval) = VariableAddress[j] : -# 1934| r1934_4(int) = Constant[0] : -# 1934| mu1934_5(int) = Store[j] : &:r1934_3, r1934_4 -# 1935| r1935_1(int) = Constant[40] : -# 1935| r1935_2(glval) = VariableAddress[j] : -# 1935| r1935_3(int) = Load[j] : &:r1935_2, ~m? -# 1935| r1935_4(int) = Add : r1935_3, r1935_1 -# 1935| mu1935_5(int) = Store[j] : &:r1935_2, r1935_4 -# 1935| r1935_6(int) = Load[j] : &:r1935_2, ~m? -# 1935| r1935_7(glval) = VariableAddress[i] : -# 1935| mu1935_8(int) = Store[i] : &:r1935_7, r1935_6 -# 1936| v1936_1(void) = NoOp : -# 1933| v1933_4(void) = ReturnVoid : -# 1933| v1933_5(void) = AliasedUse : ~m? -# 1933| v1933_6(void) = ExitFunction : - -# 1942| D& D::ReferenceStaticMemberFunction() -# 1942| Block 0 -# 1942| v1942_1(void) = EnterFunction : -# 1942| mu1942_2(unknown) = AliasedDefinition : -# 1942| mu1942_3(unknown) = InitializeNonLocal : -# 1943| r1943_1(glval) = VariableAddress[#return] : -# 1943| r1943_2(glval) = VariableAddress[x] : -# 1943| r1943_3(D &) = CopyValue : r1943_2 -# 1943| mu1943_4(D &) = Store[#return] : &:r1943_1, r1943_3 -# 1942| r1942_4(glval) = VariableAddress[#return] : -# 1942| v1942_5(void) = ReturnValue : &:r1942_4, ~m? -# 1942| v1942_6(void) = AliasedUse : ~m? -# 1942| v1942_7(void) = ExitFunction : - -# 1945| D D::ObjectStaticMemberFunction() -# 1945| Block 0 -# 1945| v1945_1(void) = EnterFunction : -# 1945| mu1945_2(unknown) = AliasedDefinition : -# 1945| mu1945_3(unknown) = InitializeNonLocal : -# 1946| r1946_1(glval) = VariableAddress[#return] : -# 1946| r1946_2(glval) = VariableAddress[x] : -# 1946| r1946_3(D) = Load[x] : &:r1946_2, ~m? -# 1946| mu1946_4(D) = Store[#return] : &:r1946_1, r1946_3 -# 1945| r1945_4(glval) = VariableAddress[#return] : -# 1945| v1945_5(void) = ReturnValue : &:r1945_4, ~m? -# 1945| v1945_6(void) = AliasedUse : ~m? -# 1945| v1945_7(void) = ExitFunction : - -# 1950| void test_static_member_functions_with_reference_return() -# 1950| Block 0 -# 1950| v1950_1(void) = EnterFunction : -# 1950| mu1950_2(unknown) = AliasedDefinition : -# 1950| mu1950_3(unknown) = InitializeNonLocal : -# 1951| r1951_1(glval) = VariableAddress[d] : -# 1951| mu1951_2(D) = Uninitialized[d] : &:r1951_1 +# 1925| r1925_5(glval) = VariableAddress[y] : +# 1925| mu1925_6(int) = Store[y] : &:r1925_5, r1925_3 +# 1926| r1926_1(glval) = VariableAddress[z] : +# 1926| mu1926_2(int) = Uninitialized[z] : &:r1926_1 +# 1927| r1927_1(glval) = FunctionAddress[static_function] : +# 1927| r1927_2(int) = Constant[10] : +# 1927| r1927_3(int) = Call[static_function] : func:r1927_1, 0:r1927_2 +# 1927| mu1927_4(unknown) = ^CallSideEffect : ~m? +# 1927| r1927_5(glval) = VariableAddress[z] : +# 1927| mu1927_6(int) = Store[z] : &:r1927_5, r1927_3 +# 1928| v1928_1(void) = NoOp : +# 1920| v1920_4(void) = ReturnVoid : +# 1920| v1920_5(void) = AliasedUse : ~m? +# 1920| v1920_6(void) = ExitFunction : + +# 1930| void test_double_assign() +# 1930| Block 0 +# 1930| v1930_1(void) = EnterFunction : +# 1930| mu1930_2(unknown) = AliasedDefinition : +# 1930| mu1930_3(unknown) = InitializeNonLocal : +# 1931| r1931_1(glval) = VariableAddress[i] : +# 1931| mu1931_2(int) = Uninitialized[i] : &:r1931_1 +# 1931| r1931_3(glval) = VariableAddress[j] : +# 1931| mu1931_4(int) = Uninitialized[j] : &:r1931_3 +# 1932| r1932_1(int) = Constant[40] : +# 1932| r1932_2(glval) = VariableAddress[j] : +# 1932| mu1932_3(int) = Store[j] : &:r1932_2, r1932_1 +# 1932| r1932_4(int) = Load[j] : &:r1932_2, ~m? +# 1932| r1932_5(glval) = VariableAddress[i] : +# 1932| mu1932_6(int) = Store[i] : &:r1932_5, r1932_4 +# 1933| v1933_1(void) = NoOp : +# 1930| v1930_4(void) = ReturnVoid : +# 1930| v1930_5(void) = AliasedUse : ~m? +# 1930| v1930_6(void) = ExitFunction : + +# 1935| void test_assign_with_assign_operation() +# 1935| Block 0 +# 1935| v1935_1(void) = EnterFunction : +# 1935| mu1935_2(unknown) = AliasedDefinition : +# 1935| mu1935_3(unknown) = InitializeNonLocal : +# 1936| r1936_1(glval) = VariableAddress[i] : +# 1936| mu1936_2(int) = Uninitialized[i] : &:r1936_1 +# 1936| r1936_3(glval) = VariableAddress[j] : +# 1936| r1936_4(int) = Constant[0] : +# 1936| mu1936_5(int) = Store[j] : &:r1936_3, r1936_4 +# 1937| r1937_1(int) = Constant[40] : +# 1937| r1937_2(glval) = VariableAddress[j] : +# 1937| r1937_3(int) = Load[j] : &:r1937_2, ~m? +# 1937| r1937_4(int) = Add : r1937_3, r1937_1 +# 1937| mu1937_5(int) = Store[j] : &:r1937_2, r1937_4 +# 1937| r1937_6(int) = Load[j] : &:r1937_2, ~m? +# 1937| r1937_7(glval) = VariableAddress[i] : +# 1937| mu1937_8(int) = Store[i] : &:r1937_7, r1937_6 +# 1938| v1938_1(void) = NoOp : +# 1935| v1935_4(void) = ReturnVoid : +# 1935| v1935_5(void) = AliasedUse : ~m? +# 1935| v1935_6(void) = ExitFunction : + +# 1944| D& D::ReferenceStaticMemberFunction() +# 1944| Block 0 +# 1944| v1944_1(void) = EnterFunction : +# 1944| mu1944_2(unknown) = AliasedDefinition : +# 1944| mu1944_3(unknown) = InitializeNonLocal : +# 1945| r1945_1(glval) = VariableAddress[#return] : +# 1945| r1945_2(glval) = VariableAddress[x] : +# 1945| r1945_3(D &) = CopyValue : r1945_2 +# 1945| mu1945_4(D &) = Store[#return] : &:r1945_1, r1945_3 +# 1944| r1944_4(glval) = VariableAddress[#return] : +# 1944| v1944_5(void) = ReturnValue : &:r1944_4, ~m? +# 1944| v1944_6(void) = AliasedUse : ~m? +# 1944| v1944_7(void) = ExitFunction : + +# 1947| D D::ObjectStaticMemberFunction() +# 1947| Block 0 +# 1947| v1947_1(void) = EnterFunction : +# 1947| mu1947_2(unknown) = AliasedDefinition : +# 1947| mu1947_3(unknown) = InitializeNonLocal : +# 1948| r1948_1(glval) = VariableAddress[#return] : +# 1948| r1948_2(glval) = VariableAddress[x] : +# 1948| r1948_3(D) = Load[x] : &:r1948_2, ~m? +# 1948| mu1948_4(D) = Store[#return] : &:r1948_1, r1948_3 +# 1947| r1947_4(glval) = VariableAddress[#return] : +# 1947| v1947_5(void) = ReturnValue : &:r1947_4, ~m? +# 1947| v1947_6(void) = AliasedUse : ~m? +# 1947| v1947_7(void) = ExitFunction : + +# 1952| void test_static_member_functions_with_reference_return() +# 1952| Block 0 +# 1952| v1952_1(void) = EnterFunction : +# 1952| mu1952_2(unknown) = AliasedDefinition : +# 1952| mu1952_3(unknown) = InitializeNonLocal : # 1953| r1953_1(glval) = VariableAddress[d] : -# 1953| r1953_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1953| r1953_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1953_2 -# 1953| mu1953_4(unknown) = ^CallSideEffect : ~m? -# 1953| r1953_5(glval) = CopyValue : r1953_3 -# 1954| r1954_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1954| r1954_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1954_1 -# 1954| mu1954_3(unknown) = ^CallSideEffect : ~m? -# 1954| r1954_4(glval) = CopyValue : r1954_2 +# 1953| mu1953_2(D) = Uninitialized[d] : &:r1953_1 # 1955| r1955_1(glval) = VariableAddress[d] : -# 1955| r1955_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1955| r1955_3(D) = Call[ObjectStaticMemberFunction] : func:r1955_2 +# 1955| r1955_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1955| r1955_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1955_2 # 1955| mu1955_4(unknown) = ^CallSideEffect : ~m? -# 1956| r1956_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1956| r1956_2(D) = Call[ObjectStaticMemberFunction] : func:r1956_1 +# 1955| r1955_5(glval) = CopyValue : r1955_3 +# 1956| r1956_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1956| r1956_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1956_1 # 1956| mu1956_3(unknown) = ^CallSideEffect : ~m? -# 1958| r1958_1(glval) = VariableAddress[x] : -# 1958| mu1958_2(D) = Uninitialized[x] : &:r1958_1 -# 1959| r1959_1(glval) = VariableAddress[d] : -# 1959| r1959_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1959| r1959_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1959_2 -# 1959| mu1959_4(unknown) = ^CallSideEffect : ~m? -# 1959| r1959_5(D) = Load[?] : &:r1959_3, ~m? -# 1959| r1959_6(glval) = VariableAddress[x] : -# 1959| mu1959_7(D) = Store[x] : &:r1959_6, r1959_5 -# 1960| r1960_1(glval) = VariableAddress[y] : -# 1960| mu1960_2(D) = Uninitialized[y] : &:r1960_1 -# 1961| r1961_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1961| r1961_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1961_1 -# 1961| mu1961_3(unknown) = ^CallSideEffect : ~m? -# 1961| r1961_4(D) = Load[?] : &:r1961_2, ~m? -# 1961| r1961_5(glval) = VariableAddress[y] : -# 1961| mu1961_6(D) = Store[y] : &:r1961_5, r1961_4 -# 1962| r1962_1(glval) = VariableAddress[j] : -# 1962| mu1962_2(D) = Uninitialized[j] : &:r1962_1 -# 1963| r1963_1(glval) = VariableAddress[d] : -# 1963| r1963_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1963| r1963_3(D) = Call[ObjectStaticMemberFunction] : func:r1963_2 -# 1963| mu1963_4(unknown) = ^CallSideEffect : ~m? -# 1963| r1963_5(glval) = VariableAddress[j] : -# 1963| mu1963_6(D) = Store[j] : &:r1963_5, r1963_3 -# 1964| r1964_1(glval) = VariableAddress[k] : -# 1964| mu1964_2(D) = Uninitialized[k] : &:r1964_1 -# 1965| r1965_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 1965| r1965_2(D) = Call[ObjectStaticMemberFunction] : func:r1965_1 -# 1965| mu1965_3(unknown) = ^CallSideEffect : ~m? -# 1965| r1965_4(glval) = VariableAddress[k] : -# 1965| mu1965_5(D) = Store[k] : &:r1965_4, r1965_2 -# 1966| v1966_1(void) = NoOp : -# 1950| v1950_4(void) = ReturnVoid : -# 1950| v1950_5(void) = AliasedUse : ~m? -# 1950| v1950_6(void) = ExitFunction : - -# 1968| void test_volatile() -# 1968| Block 0 -# 1968| v1968_1(void) = EnterFunction : -# 1968| mu1968_2(unknown) = AliasedDefinition : -# 1968| mu1968_3(unknown) = InitializeNonLocal : -# 1969| r1969_1(glval) = VariableAddress[x] : -# 1969| mu1969_2(int) = Uninitialized[x] : &:r1969_1 -# 1970| r1970_1(glval) = VariableAddress[x] : -# 1970| r1970_2(int) = Load[x] : &:r1970_1, ~m? -# 1971| v1971_1(void) = NoOp : -# 1968| v1968_4(void) = ReturnVoid : -# 1968| v1968_5(void) = AliasedUse : ~m? -# 1968| v1968_6(void) = ExitFunction : - -# 1979| void value_category_test() -# 1979| Block 0 -# 1979| v1979_1(void) = EnterFunction : -# 1979| mu1979_2(unknown) = AliasedDefinition : -# 1979| mu1979_3(unknown) = InitializeNonLocal : -# 1980| r1980_1(glval) = VariableAddress[c] : -# 1980| mu1980_2(ValCat) = Uninitialized[c] : &:r1980_1 +# 1956| r1956_4(glval) = CopyValue : r1956_2 +# 1957| r1957_1(glval) = VariableAddress[d] : +# 1957| r1957_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1957| r1957_3(D) = Call[ObjectStaticMemberFunction] : func:r1957_2 +# 1957| mu1957_4(unknown) = ^CallSideEffect : ~m? +# 1958| r1958_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1958| r1958_2(D) = Call[ObjectStaticMemberFunction] : func:r1958_1 +# 1958| mu1958_3(unknown) = ^CallSideEffect : ~m? +# 1960| r1960_1(glval) = VariableAddress[x] : +# 1960| mu1960_2(D) = Uninitialized[x] : &:r1960_1 +# 1961| r1961_1(glval) = VariableAddress[d] : +# 1961| r1961_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1961| r1961_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1961_2 +# 1961| mu1961_4(unknown) = ^CallSideEffect : ~m? +# 1961| r1961_5(D) = Load[?] : &:r1961_3, ~m? +# 1961| r1961_6(glval) = VariableAddress[x] : +# 1961| mu1961_7(D) = Store[x] : &:r1961_6, r1961_5 +# 1962| r1962_1(glval) = VariableAddress[y] : +# 1962| mu1962_2(D) = Uninitialized[y] : &:r1962_1 +# 1963| r1963_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 1963| r1963_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1963_1 +# 1963| mu1963_3(unknown) = ^CallSideEffect : ~m? +# 1963| r1963_4(D) = Load[?] : &:r1963_2, ~m? +# 1963| r1963_5(glval) = VariableAddress[y] : +# 1963| mu1963_6(D) = Store[y] : &:r1963_5, r1963_4 +# 1964| r1964_1(glval) = VariableAddress[j] : +# 1964| mu1964_2(D) = Uninitialized[j] : &:r1964_1 +# 1965| r1965_1(glval) = VariableAddress[d] : +# 1965| r1965_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1965| r1965_3(D) = Call[ObjectStaticMemberFunction] : func:r1965_2 +# 1965| mu1965_4(unknown) = ^CallSideEffect : ~m? +# 1965| r1965_5(glval) = VariableAddress[j] : +# 1965| mu1965_6(D) = Store[j] : &:r1965_5, r1965_3 +# 1966| r1966_1(glval) = VariableAddress[k] : +# 1966| mu1966_2(D) = Uninitialized[k] : &:r1966_1 +# 1967| r1967_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 1967| r1967_2(D) = Call[ObjectStaticMemberFunction] : func:r1967_1 +# 1967| mu1967_3(unknown) = ^CallSideEffect : ~m? +# 1967| r1967_4(glval) = VariableAddress[k] : +# 1967| mu1967_5(D) = Store[k] : &:r1967_4, r1967_2 +# 1968| v1968_1(void) = NoOp : +# 1952| v1952_4(void) = ReturnVoid : +# 1952| v1952_5(void) = AliasedUse : ~m? +# 1952| v1952_6(void) = ExitFunction : + +# 1970| void test_volatile() +# 1970| Block 0 +# 1970| v1970_1(void) = EnterFunction : +# 1970| mu1970_2(unknown) = AliasedDefinition : +# 1970| mu1970_3(unknown) = InitializeNonLocal : +# 1971| r1971_1(glval) = VariableAddress[x] : +# 1971| mu1971_2(int) = Uninitialized[x] : &:r1971_1 +# 1972| r1972_1(glval) = VariableAddress[x] : +# 1972| r1972_2(int) = Load[x] : &:r1972_1, ~m? +# 1973| v1973_1(void) = NoOp : +# 1970| v1970_4(void) = ReturnVoid : +# 1970| v1970_5(void) = AliasedUse : ~m? +# 1970| v1970_6(void) = ExitFunction : + +# 1981| void value_category_test() +# 1981| Block 0 +# 1981| v1981_1(void) = EnterFunction : +# 1981| mu1981_2(unknown) = AliasedDefinition : +# 1981| mu1981_3(unknown) = InitializeNonLocal : +# 1982| r1982_1(glval) = VariableAddress[c] : +# 1982| mu1982_2(ValCat) = Uninitialized[c] : &:r1982_1 #-----| r0_1(glval) = VariableAddress[#temp0:0] : #-----| mu0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, ~m? -# 1982| r1982_1(glval) = VariableAddress[c] : -# 1982| r1982_2(glval) = FunctionAddress[lvalue] : -# 1982| r1982_3(ValCat &) = Call[lvalue] : func:r1982_2 -# 1982| mu1982_4(unknown) = ^CallSideEffect : ~m? -# 1982| r1982_5(glval) = CopyValue : r1982_3 -# 1982| mu1982_6(ValCat) = Store[?] : &:r1982_5, r0_3 +# 1984| r1984_1(glval) = VariableAddress[c] : +# 1984| r1984_2(glval) = FunctionAddress[lvalue] : +# 1984| r1984_3(ValCat &) = Call[lvalue] : func:r1984_2 +# 1984| mu1984_4(unknown) = ^CallSideEffect : ~m? +# 1984| r1984_5(glval) = CopyValue : r1984_3 +# 1984| mu1984_6(ValCat) = Store[?] : &:r1984_5, r0_3 #-----| r0_4(glval) = VariableAddress[#temp0:0] : #-----| mu0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, ~m? -# 1983| r1983_1(glval) = VariableAddress[c] : -# 1983| r1983_2(glval) = FunctionAddress[xvalue] : -# 1983| r1983_3(ValCat &&) = Call[xvalue] : func:r1983_2 -# 1983| mu1983_4(unknown) = ^CallSideEffect : ~m? -# 1983| r1983_5(glval) = CopyValue : r1983_3 -# 1983| mu1983_6(ValCat) = Store[?] : &:r1983_5, r0_6 +# 1985| r1985_1(glval) = VariableAddress[c] : +# 1985| r1985_2(glval) = FunctionAddress[xvalue] : +# 1985| r1985_3(ValCat &&) = Call[xvalue] : func:r1985_2 +# 1985| mu1985_4(unknown) = ^CallSideEffect : ~m? +# 1985| r1985_5(glval) = CopyValue : r1985_3 +# 1985| mu1985_6(ValCat) = Store[?] : &:r1985_5, r0_6 #-----| r0_7(glval) = VariableAddress[#temp0:0] : #-----| mu0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, ~m? -# 1984| r1984_1(glval) = VariableAddress[#temp1984:5] : -# 1984| r1984_2(glval) = VariableAddress[c] : -# 1984| r1984_3(glval) = FunctionAddress[prvalue] : -# 1984| r1984_4(ValCat) = Call[prvalue] : func:r1984_3 -# 1984| mu1984_5(unknown) = ^CallSideEffect : ~m? -# 1984| mu1984_6(ValCat) = Store[#temp1984:5] : &:r1984_1, r1984_4 -# 1984| mu1984_7(ValCat) = Store[#temp1984:5] : &:r1984_1, r0_9 +# 1986| r1986_1(glval) = VariableAddress[#temp1986:5] : +# 1986| r1986_2(glval) = VariableAddress[c] : +# 1986| r1986_3(glval) = FunctionAddress[prvalue] : +# 1986| r1986_4(ValCat) = Call[prvalue] : func:r1986_3 +# 1986| mu1986_5(unknown) = ^CallSideEffect : ~m? +# 1986| mu1986_6(ValCat) = Store[#temp1986:5] : &:r1986_1, r1986_4 +# 1986| mu1986_7(ValCat) = Store[#temp1986:5] : &:r1986_1, r0_9 #-----| r0_10(glval) = VariableAddress[#temp0:0] : #-----| mu0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, ~m? -# 1985| r1985_1(glval) = FunctionAddress[lvalue] : -# 1985| r1985_2(ValCat &) = Call[lvalue] : func:r1985_1 -# 1985| mu1985_3(unknown) = ^CallSideEffect : ~m? -# 1985| r1985_4(glval) = CopyValue : r1985_2 -# 1985| mu1985_5(ValCat) = Store[?] : &:r1985_4, r0_12 +# 1987| r1987_1(glval) = FunctionAddress[lvalue] : +# 1987| r1987_2(ValCat &) = Call[lvalue] : func:r1987_1 +# 1987| mu1987_3(unknown) = ^CallSideEffect : ~m? +# 1987| r1987_4(glval) = CopyValue : r1987_2 +# 1987| mu1987_5(ValCat) = Store[?] : &:r1987_4, r0_12 #-----| r0_13(glval) = VariableAddress[#temp0:0] : #-----| mu0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, ~m? -# 1986| r1986_1(glval) = FunctionAddress[xvalue] : -# 1986| r1986_2(ValCat &&) = Call[xvalue] : func:r1986_1 -# 1986| mu1986_3(unknown) = ^CallSideEffect : ~m? -# 1986| r1986_4(glval) = CopyValue : r1986_2 -# 1986| mu1986_5(ValCat) = Store[?] : &:r1986_4, r0_15 +# 1988| r1988_1(glval) = FunctionAddress[xvalue] : +# 1988| r1988_2(ValCat &&) = Call[xvalue] : func:r1988_1 +# 1988| mu1988_3(unknown) = ^CallSideEffect : ~m? +# 1988| r1988_4(glval) = CopyValue : r1988_2 +# 1988| mu1988_5(ValCat) = Store[?] : &:r1988_4, r0_15 #-----| r0_16(glval) = VariableAddress[#temp0:0] : #-----| mu0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, ~m? -# 1987| r1987_1(glval) = VariableAddress[#temp1987:5] : -# 1987| r1987_2(glval) = FunctionAddress[prvalue] : -# 1987| r1987_3(ValCat) = Call[prvalue] : func:r1987_2 -# 1987| mu1987_4(unknown) = ^CallSideEffect : ~m? -# 1987| mu1987_5(ValCat) = Store[#temp1987:5] : &:r1987_1, r1987_3 -# 1987| mu1987_6(ValCat) = Store[#temp1987:5] : &:r1987_1, r0_18 -# 1988| v1988_1(void) = NoOp : -# 1979| v1979_4(void) = ReturnVoid : -# 1979| v1979_5(void) = AliasedUse : ~m? -# 1979| v1979_6(void) = ExitFunction : - -# 1990| void SetStaticFuncPtr() -# 1990| Block 0 -# 1990| v1990_1(void) = EnterFunction : -# 1990| mu1990_2(unknown) = AliasedDefinition : -# 1990| mu1990_3(unknown) = InitializeNonLocal : -# 1991| r1991_1(glval) = VariableAddress[c] : -# 1991| mu1991_2(C) = Uninitialized[c] : &:r1991_1 -# 1991| r1991_3(glval) = FunctionAddress[C] : -# 1991| v1991_4(void) = Call[C] : func:r1991_3, this:r1991_1 -# 1991| mu1991_5(unknown) = ^CallSideEffect : ~m? -# 1991| mu1991_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1991_1 -# 1992| r1992_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1992| r1992_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1992| mu1992_3(..(*)(..)) = Store[pfn] : &:r1992_1, r1992_2 +# 1989| r1989_1(glval) = VariableAddress[#temp1989:5] : +# 1989| r1989_2(glval) = FunctionAddress[prvalue] : +# 1989| r1989_3(ValCat) = Call[prvalue] : func:r1989_2 +# 1989| mu1989_4(unknown) = ^CallSideEffect : ~m? +# 1989| mu1989_5(ValCat) = Store[#temp1989:5] : &:r1989_1, r1989_3 +# 1989| mu1989_6(ValCat) = Store[#temp1989:5] : &:r1989_1, r0_18 +# 1990| v1990_1(void) = NoOp : +# 1981| v1981_4(void) = ReturnVoid : +# 1981| v1981_5(void) = AliasedUse : ~m? +# 1981| v1981_6(void) = ExitFunction : + +# 1992| void SetStaticFuncPtr() +# 1992| Block 0 +# 1992| v1992_1(void) = EnterFunction : +# 1992| mu1992_2(unknown) = AliasedDefinition : +# 1992| mu1992_3(unknown) = InitializeNonLocal : # 1993| r1993_1(glval) = VariableAddress[c] : -# 1993| r1993_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1993| r1993_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1993| mu1993_4(..(*)(..)) = Store[pfn] : &:r1993_3, r1993_2 -# 1994| v1994_1(void) = NoOp : -# 1990| v1990_4(void) = ReturnVoid : -# 1990| v1990_5(void) = AliasedUse : ~m? -# 1990| v1990_6(void) = ExitFunction : - -# 1996| void TernaryTestInt(bool, int, int, int) -# 1996| Block 0 -# 1996| v1996_1(void) = EnterFunction : -# 1996| mu1996_2(unknown) = AliasedDefinition : -# 1996| mu1996_3(unknown) = InitializeNonLocal : -# 1996| r1996_4(glval) = VariableAddress[a] : -# 1996| mu1996_5(bool) = InitializeParameter[a] : &:r1996_4 -# 1996| r1996_6(glval) = VariableAddress[x] : -# 1996| mu1996_7(int) = InitializeParameter[x] : &:r1996_6 -# 1996| r1996_8(glval) = VariableAddress[y] : -# 1996| mu1996_9(int) = InitializeParameter[y] : &:r1996_8 -# 1996| r1996_10(glval) = VariableAddress[z] : -# 1996| mu1996_11(int) = InitializeParameter[z] : &:r1996_10 -# 1997| r1997_1(glval) = VariableAddress[a] : -# 1997| r1997_2(bool) = Load[a] : &:r1997_1, ~m? -# 1997| v1997_3(void) = ConditionalBranch : r1997_2 +# 1993| mu1993_2(C) = Uninitialized[c] : &:r1993_1 +# 1993| r1993_3(glval) = FunctionAddress[C] : +# 1993| v1993_4(void) = Call[C] : func:r1993_3, this:r1993_1 +# 1993| mu1993_5(unknown) = ^CallSideEffect : ~m? +# 1993| mu1993_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1993_1 +# 1994| r1994_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 1994| r1994_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 1994| mu1994_3(..(*)(..)) = Store[pfn] : &:r1994_1, r1994_2 +# 1995| r1995_1(glval) = VariableAddress[c] : +# 1995| r1995_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 1995| r1995_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 1995| mu1995_4(..(*)(..)) = Store[pfn] : &:r1995_3, r1995_2 +# 1996| v1996_1(void) = NoOp : +# 1992| v1992_4(void) = ReturnVoid : +# 1992| v1992_5(void) = AliasedUse : ~m? +# 1992| v1992_6(void) = ExitFunction : + +# 1998| void TernaryTestInt(bool, int, int, int) +# 1998| Block 0 +# 1998| v1998_1(void) = EnterFunction : +# 1998| mu1998_2(unknown) = AliasedDefinition : +# 1998| mu1998_3(unknown) = InitializeNonLocal : +# 1998| r1998_4(glval) = VariableAddress[a] : +# 1998| mu1998_5(bool) = InitializeParameter[a] : &:r1998_4 +# 1998| r1998_6(glval) = VariableAddress[x] : +# 1998| mu1998_7(int) = InitializeParameter[x] : &:r1998_6 +# 1998| r1998_8(glval) = VariableAddress[y] : +# 1998| mu1998_9(int) = InitializeParameter[y] : &:r1998_8 +# 1998| r1998_10(glval) = VariableAddress[z] : +# 1998| mu1998_11(int) = InitializeParameter[z] : &:r1998_10 +# 1999| r1999_1(glval) = VariableAddress[a] : +# 1999| r1999_2(bool) = Load[a] : &:r1999_1, ~m? +# 1999| v1999_3(void) = ConditionalBranch : r1999_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1997| Block 1 -# 1997| r1997_4(glval) = VariableAddress[#temp1997:9] : -# 1997| r1997_5(int) = Load[#temp1997:9] : &:r1997_4, ~m? -# 1997| r1997_6(glval) = VariableAddress[z] : -# 1997| mu1997_7(int) = Store[z] : &:r1997_6, r1997_5 -# 1998| r1998_1(glval) = VariableAddress[a] : -# 1998| r1998_2(bool) = Load[a] : &:r1998_1, ~m? -# 1998| v1998_3(void) = ConditionalBranch : r1998_2 +# 1999| Block 1 +# 1999| r1999_4(glval) = VariableAddress[#temp1999:9] : +# 1999| r1999_5(int) = Load[#temp1999:9] : &:r1999_4, ~m? +# 1999| r1999_6(glval) = VariableAddress[z] : +# 1999| mu1999_7(int) = Store[z] : &:r1999_6, r1999_5 +# 2000| r2000_1(glval) = VariableAddress[a] : +# 2000| r2000_2(bool) = Load[a] : &:r2000_1, ~m? +# 2000| v2000_3(void) = ConditionalBranch : r2000_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1997| Block 2 -# 1997| r1997_8(glval) = VariableAddress[x] : -# 1997| r1997_9(int) = Load[x] : &:r1997_8, ~m? -# 1997| r1997_10(glval) = VariableAddress[#temp1997:9] : -# 1997| mu1997_11(int) = Store[#temp1997:9] : &:r1997_10, r1997_9 +# 1999| Block 2 +# 1999| r1999_8(glval) = VariableAddress[x] : +# 1999| r1999_9(int) = Load[x] : &:r1999_8, ~m? +# 1999| r1999_10(glval) = VariableAddress[#temp1999:9] : +# 1999| mu1999_11(int) = Store[#temp1999:9] : &:r1999_10, r1999_9 #-----| Goto -> Block 1 -# 1997| Block 3 -# 1997| r1997_12(glval) = VariableAddress[y] : -# 1997| r1997_13(int) = Load[y] : &:r1997_12, ~m? -# 1997| r1997_14(glval) = VariableAddress[#temp1997:9] : -# 1997| mu1997_15(int) = Store[#temp1997:9] : &:r1997_14, r1997_13 +# 1999| Block 3 +# 1999| r1999_12(glval) = VariableAddress[y] : +# 1999| r1999_13(int) = Load[y] : &:r1999_12, ~m? +# 1999| r1999_14(glval) = VariableAddress[#temp1999:9] : +# 1999| mu1999_15(int) = Store[#temp1999:9] : &:r1999_14, r1999_13 #-----| Goto -> Block 1 -# 1998| Block 4 -# 1998| r1998_4(glval) = VariableAddress[#temp1998:9] : -# 1998| r1998_5(int) = Load[#temp1998:9] : &:r1998_4, ~m? -# 1998| r1998_6(glval) = VariableAddress[z] : -# 1998| mu1998_7(int) = Store[z] : &:r1998_6, r1998_5 -# 1999| r1999_1(glval) = VariableAddress[a] : -# 1999| r1999_2(bool) = Load[a] : &:r1999_1, ~m? -# 1999| v1999_3(void) = ConditionalBranch : r1999_2 +# 2000| Block 4 +# 2000| r2000_4(glval) = VariableAddress[#temp2000:9] : +# 2000| r2000_5(int) = Load[#temp2000:9] : &:r2000_4, ~m? +# 2000| r2000_6(glval) = VariableAddress[z] : +# 2000| mu2000_7(int) = Store[z] : &:r2000_6, r2000_5 +# 2001| r2001_1(glval) = VariableAddress[a] : +# 2001| r2001_2(bool) = Load[a] : &:r2001_1, ~m? +# 2001| v2001_3(void) = ConditionalBranch : r2001_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 1998| Block 5 -# 1998| r1998_8(glval) = VariableAddress[x] : -# 1998| r1998_9(int) = Load[x] : &:r1998_8, ~m? -# 1998| r1998_10(glval) = VariableAddress[#temp1998:9] : -# 1998| mu1998_11(int) = Store[#temp1998:9] : &:r1998_10, r1998_9 +# 2000| Block 5 +# 2000| r2000_8(glval) = VariableAddress[x] : +# 2000| r2000_9(int) = Load[x] : &:r2000_8, ~m? +# 2000| r2000_10(glval) = VariableAddress[#temp2000:9] : +# 2000| mu2000_11(int) = Store[#temp2000:9] : &:r2000_10, r2000_9 #-----| Goto -> Block 4 -# 1998| Block 6 -# 1998| r1998_12(int) = Constant[5] : -# 1998| r1998_13(glval) = VariableAddress[#temp1998:9] : -# 1998| mu1998_14(int) = Store[#temp1998:9] : &:r1998_13, r1998_12 +# 2000| Block 6 +# 2000| r2000_12(int) = Constant[5] : +# 2000| r2000_13(glval) = VariableAddress[#temp2000:9] : +# 2000| mu2000_14(int) = Store[#temp2000:9] : &:r2000_13, r2000_12 #-----| Goto -> Block 4 -# 1999| Block 7 -# 1999| r1999_4(glval) = VariableAddress[#temp1999:9] : -# 1999| r1999_5(int) = Load[#temp1999:9] : &:r1999_4, ~m? -# 1999| r1999_6(glval) = VariableAddress[z] : -# 1999| mu1999_7(int) = Store[z] : &:r1999_6, r1999_5 -# 2000| r2000_1(int) = Constant[7] : -# 2000| r2000_2(glval) = VariableAddress[a] : -# 2000| r2000_3(bool) = Load[a] : &:r2000_2, ~m? -# 2000| v2000_4(void) = ConditionalBranch : r2000_3 +# 2001| Block 7 +# 2001| r2001_4(glval) = VariableAddress[#temp2001:9] : +# 2001| r2001_5(int) = Load[#temp2001:9] : &:r2001_4, ~m? +# 2001| r2001_6(glval) = VariableAddress[z] : +# 2001| mu2001_7(int) = Store[z] : &:r2001_6, r2001_5 +# 2002| r2002_1(int) = Constant[7] : +# 2002| r2002_2(glval) = VariableAddress[a] : +# 2002| r2002_3(bool) = Load[a] : &:r2002_2, ~m? +# 2002| v2002_4(void) = ConditionalBranch : r2002_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 1999| Block 8 -# 1999| r1999_8(int) = Constant[3] : -# 1999| r1999_9(glval) = VariableAddress[#temp1999:9] : -# 1999| mu1999_10(int) = Store[#temp1999:9] : &:r1999_9, r1999_8 +# 2001| Block 8 +# 2001| r2001_8(int) = Constant[3] : +# 2001| r2001_9(glval) = VariableAddress[#temp2001:9] : +# 2001| mu2001_10(int) = Store[#temp2001:9] : &:r2001_9, r2001_8 #-----| Goto -> Block 7 -# 1999| Block 9 -# 1999| r1999_11(int) = Constant[5] : -# 1999| r1999_12(glval) = VariableAddress[#temp1999:9] : -# 1999| mu1999_13(int) = Store[#temp1999:9] : &:r1999_12, r1999_11 +# 2001| Block 9 +# 2001| r2001_11(int) = Constant[5] : +# 2001| r2001_12(glval) = VariableAddress[#temp2001:9] : +# 2001| mu2001_13(int) = Store[#temp2001:9] : &:r2001_12, r2001_11 #-----| Goto -> Block 7 -# 2000| Block 10 -# 2000| r2000_5(glval) = VariableAddress[#temp2000:6] : -# 2000| r2000_6(glval) = Load[#temp2000:6] : &:r2000_5, ~m? -# 2000| mu2000_7(int) = Store[?] : &:r2000_6, r2000_1 -# 2001| v2001_1(void) = NoOp : -# 1996| v1996_12(void) = ReturnVoid : -# 1996| v1996_13(void) = AliasedUse : ~m? -# 1996| v1996_14(void) = ExitFunction : - -# 2000| Block 11 -# 2000| r2000_8(glval) = VariableAddress[x] : -# 2000| r2000_9(glval) = VariableAddress[#temp2000:6] : -# 2000| mu2000_10(glval) = Store[#temp2000:6] : &:r2000_9, r2000_8 +# 2002| Block 10 +# 2002| r2002_5(glval) = VariableAddress[#temp2002:6] : +# 2002| r2002_6(glval) = Load[#temp2002:6] : &:r2002_5, ~m? +# 2002| mu2002_7(int) = Store[?] : &:r2002_6, r2002_1 +# 2003| v2003_1(void) = NoOp : +# 1998| v1998_12(void) = ReturnVoid : +# 1998| v1998_13(void) = AliasedUse : ~m? +# 1998| v1998_14(void) = ExitFunction : + +# 2002| Block 11 +# 2002| r2002_8(glval) = VariableAddress[x] : +# 2002| r2002_9(glval) = VariableAddress[#temp2002:6] : +# 2002| mu2002_10(glval) = Store[#temp2002:6] : &:r2002_9, r2002_8 #-----| Goto -> Block 10 -# 2000| Block 12 -# 2000| r2000_11(glval) = VariableAddress[y] : -# 2000| r2000_12(glval) = VariableAddress[#temp2000:6] : -# 2000| mu2000_13(glval) = Store[#temp2000:6] : &:r2000_12, r2000_11 +# 2002| Block 12 +# 2002| r2002_11(glval) = VariableAddress[y] : +# 2002| r2002_12(glval) = VariableAddress[#temp2002:6] : +# 2002| mu2002_13(glval) = Store[#temp2002:6] : &:r2002_12, r2002_11 #-----| Goto -> Block 10 -# 2006| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2006| Block 0 -# 2006| v2006_1(void) = EnterFunction : -# 2006| mu2006_2(unknown) = AliasedDefinition : -# 2006| mu2006_3(unknown) = InitializeNonLocal : -# 2006| r2006_4(glval) = VariableAddress[a] : -# 2006| mu2006_5(bool) = InitializeParameter[a] : &:r2006_4 -# 2006| r2006_6(glval) = VariableAddress[x] : -# 2006| mu2006_7(TernaryPodObj) = InitializeParameter[x] : &:r2006_6 -# 2006| r2006_8(glval) = VariableAddress[y] : -# 2006| mu2006_9(TernaryPodObj) = InitializeParameter[y] : &:r2006_8 -# 2006| r2006_10(glval) = VariableAddress[z] : -# 2006| mu2006_11(TernaryPodObj) = InitializeParameter[z] : &:r2006_10 -# 2007| r2007_1(glval) = VariableAddress[a] : -# 2007| r2007_2(bool) = Load[a] : &:r2007_1, ~m? -# 2007| v2007_3(void) = ConditionalBranch : r2007_2 +# 2008| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2008| Block 0 +# 2008| v2008_1(void) = EnterFunction : +# 2008| mu2008_2(unknown) = AliasedDefinition : +# 2008| mu2008_3(unknown) = InitializeNonLocal : +# 2008| r2008_4(glval) = VariableAddress[a] : +# 2008| mu2008_5(bool) = InitializeParameter[a] : &:r2008_4 +# 2008| r2008_6(glval) = VariableAddress[x] : +# 2008| mu2008_7(TernaryPodObj) = InitializeParameter[x] : &:r2008_6 +# 2008| r2008_8(glval) = VariableAddress[y] : +# 2008| mu2008_9(TernaryPodObj) = InitializeParameter[y] : &:r2008_8 +# 2008| r2008_10(glval) = VariableAddress[z] : +# 2008| mu2008_11(TernaryPodObj) = InitializeParameter[z] : &:r2008_10 +# 2009| r2009_1(glval) = VariableAddress[a] : +# 2009| r2009_2(bool) = Load[a] : &:r2009_1, ~m? +# 2009| v2009_3(void) = ConditionalBranch : r2009_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2007| Block 1 -# 2007| r2007_4(glval) = VariableAddress[#temp2007:9] : -# 2007| r2007_5(TernaryPodObj) = Load[#temp2007:9] : &:r2007_4, ~m? -# 2007| r2007_6(glval) = VariableAddress[z] : -# 2007| mu2007_7(TernaryPodObj) = Store[z] : &:r2007_6, r2007_5 -# 2008| r2008_1(glval) = VariableAddress[#temp2008:9] : -# 2008| r2008_2(glval) = VariableAddress[a] : -# 2008| r2008_3(bool) = Load[a] : &:r2008_2, ~m? -# 2008| v2008_4(void) = ConditionalBranch : r2008_3 +# 2009| Block 1 +# 2009| r2009_4(glval) = VariableAddress[#temp2009:9] : +# 2009| r2009_5(TernaryPodObj) = Load[#temp2009:9] : &:r2009_4, ~m? +# 2009| r2009_6(glval) = VariableAddress[z] : +# 2009| mu2009_7(TernaryPodObj) = Store[z] : &:r2009_6, r2009_5 +# 2010| r2010_1(glval) = VariableAddress[#temp2010:9] : +# 2010| r2010_2(glval) = VariableAddress[a] : +# 2010| r2010_3(bool) = Load[a] : &:r2010_2, ~m? +# 2010| v2010_4(void) = ConditionalBranch : r2010_3 #-----| False -> Block 6 #-----| True -> Block 5 -# 2007| Block 2 -# 2007| r2007_8(glval) = VariableAddress[x] : -# 2007| r2007_9(TernaryPodObj) = Load[x] : &:r2007_8, ~m? -# 2007| r2007_10(glval) = VariableAddress[#temp2007:9] : -# 2007| mu2007_11(TernaryPodObj) = Store[#temp2007:9] : &:r2007_10, r2007_9 +# 2009| Block 2 +# 2009| r2009_8(glval) = VariableAddress[x] : +# 2009| r2009_9(TernaryPodObj) = Load[x] : &:r2009_8, ~m? +# 2009| r2009_10(glval) = VariableAddress[#temp2009:9] : +# 2009| mu2009_11(TernaryPodObj) = Store[#temp2009:9] : &:r2009_10, r2009_9 #-----| Goto -> Block 1 -# 2007| Block 3 -# 2007| r2007_12(glval) = VariableAddress[y] : -# 2007| r2007_13(TernaryPodObj) = Load[y] : &:r2007_12, ~m? -# 2007| r2007_14(glval) = VariableAddress[#temp2007:9] : -# 2007| mu2007_15(TernaryPodObj) = Store[#temp2007:9] : &:r2007_14, r2007_13 +# 2009| Block 3 +# 2009| r2009_12(glval) = VariableAddress[y] : +# 2009| r2009_13(TernaryPodObj) = Load[y] : &:r2009_12, ~m? +# 2009| r2009_14(glval) = VariableAddress[#temp2009:9] : +# 2009| mu2009_15(TernaryPodObj) = Store[#temp2009:9] : &:r2009_14, r2009_13 #-----| Goto -> Block 1 -# 2008| Block 4 -# 2008| r2008_5(glval) = VariableAddress[#temp2008:9] : -# 2008| r2008_6(TernaryPodObj) = Load[#temp2008:9] : &:r2008_5, ~m? -# 2008| mu2008_7(TernaryPodObj) = Store[#temp2008:9] : &:r2008_1, r2008_6 -# 2008| r2008_8(TernaryPodObj) = Load[#temp2008:9] : &:r2008_1, ~m? -# 2008| r2008_9(glval) = VariableAddress[z] : -# 2008| mu2008_10(TernaryPodObj) = Store[z] : &:r2008_9, r2008_8 -# 2009| r2009_1(glval) = VariableAddress[#temp2009:9] : -# 2009| r2009_2(glval) = VariableAddress[a] : -# 2009| r2009_3(bool) = Load[a] : &:r2009_2, ~m? -# 2009| v2009_4(void) = ConditionalBranch : r2009_3 +# 2010| Block 4 +# 2010| r2010_5(glval) = VariableAddress[#temp2010:9] : +# 2010| r2010_6(TernaryPodObj) = Load[#temp2010:9] : &:r2010_5, ~m? +# 2010| mu2010_7(TernaryPodObj) = Store[#temp2010:9] : &:r2010_1, r2010_6 +# 2010| r2010_8(TernaryPodObj) = Load[#temp2010:9] : &:r2010_1, ~m? +# 2010| r2010_9(glval) = VariableAddress[z] : +# 2010| mu2010_10(TernaryPodObj) = Store[z] : &:r2010_9, r2010_8 +# 2011| r2011_1(glval) = VariableAddress[#temp2011:9] : +# 2011| r2011_2(glval) = VariableAddress[a] : +# 2011| r2011_3(bool) = Load[a] : &:r2011_2, ~m? +# 2011| v2011_4(void) = ConditionalBranch : r2011_3 #-----| False -> Block 9 #-----| True -> Block 8 -# 2008| Block 5 -# 2008| r2008_11(glval) = VariableAddress[#temp2008:13] : -# 2008| r2008_12(glval) = VariableAddress[x] : -# 2008| r2008_13(TernaryPodObj) = Load[x] : &:r2008_12, ~m? -# 2008| mu2008_14(TernaryPodObj) = Store[#temp2008:13] : &:r2008_11, r2008_13 -# 2008| r2008_15(TernaryPodObj) = Load[#temp2008:13] : &:r2008_11, ~m? -# 2008| r2008_16(glval) = VariableAddress[#temp2008:9] : -# 2008| mu2008_17(TernaryPodObj) = Store[#temp2008:9] : &:r2008_16, r2008_15 +# 2010| Block 5 +# 2010| r2010_11(glval) = VariableAddress[#temp2010:13] : +# 2010| r2010_12(glval) = VariableAddress[x] : +# 2010| r2010_13(TernaryPodObj) = Load[x] : &:r2010_12, ~m? +# 2010| mu2010_14(TernaryPodObj) = Store[#temp2010:13] : &:r2010_11, r2010_13 +# 2010| r2010_15(TernaryPodObj) = Load[#temp2010:13] : &:r2010_11, ~m? +# 2010| r2010_16(glval) = VariableAddress[#temp2010:9] : +# 2010| mu2010_17(TernaryPodObj) = Store[#temp2010:9] : &:r2010_16, r2010_15 #-----| Goto -> Block 4 -# 2008| Block 6 -# 2008| r2008_18(glval) = VariableAddress[#temp2008:17] : -# 2008| r2008_19(TernaryPodObj) = Constant[0] : -# 2008| mu2008_20(TernaryPodObj) = Store[#temp2008:17] : &:r2008_18, r2008_19 -# 2008| r2008_21(TernaryPodObj) = Load[#temp2008:17] : &:r2008_18, ~m? -# 2008| r2008_22(glval) = VariableAddress[#temp2008:9] : -# 2008| mu2008_23(TernaryPodObj) = Store[#temp2008:9] : &:r2008_22, r2008_21 +# 2010| Block 6 +# 2010| r2010_18(glval) = VariableAddress[#temp2010:17] : +# 2010| r2010_19(TernaryPodObj) = Constant[0] : +# 2010| mu2010_20(TernaryPodObj) = Store[#temp2010:17] : &:r2010_18, r2010_19 +# 2010| r2010_21(TernaryPodObj) = Load[#temp2010:17] : &:r2010_18, ~m? +# 2010| r2010_22(glval) = VariableAddress[#temp2010:9] : +# 2010| mu2010_23(TernaryPodObj) = Store[#temp2010:9] : &:r2010_22, r2010_21 #-----| Goto -> Block 4 -# 2009| Block 7 -# 2009| r2009_5(glval) = VariableAddress[#temp2009:9] : -# 2009| r2009_6(TernaryPodObj) = Load[#temp2009:9] : &:r2009_5, ~m? -# 2009| mu2009_7(TernaryPodObj) = Store[#temp2009:9] : &:r2009_1, r2009_6 -# 2009| r2009_8(TernaryPodObj) = Load[#temp2009:9] : &:r2009_1, ~m? -# 2009| r2009_9(glval) = VariableAddress[z] : -# 2009| mu2009_10(TernaryPodObj) = Store[z] : &:r2009_9, r2009_8 -# 2010| r2010_1(glval) = VariableAddress[#temp2010:23] : -# 2010| r2010_2(TernaryPodObj) = Constant[0] : -# 2010| mu2010_3(TernaryPodObj) = Store[#temp2010:23] : &:r2010_1, r2010_2 -# 2010| r2010_4(TernaryPodObj) = Load[#temp2010:23] : &:r2010_1, ~m? -# 2010| r2010_5(glval) = VariableAddress[a] : -# 2010| r2010_6(bool) = Load[a] : &:r2010_5, ~m? -# 2010| v2010_7(void) = ConditionalBranch : r2010_6 +# 2011| Block 7 +# 2011| r2011_5(glval) = VariableAddress[#temp2011:9] : +# 2011| r2011_6(TernaryPodObj) = Load[#temp2011:9] : &:r2011_5, ~m? +# 2011| mu2011_7(TernaryPodObj) = Store[#temp2011:9] : &:r2011_1, r2011_6 +# 2011| r2011_8(TernaryPodObj) = Load[#temp2011:9] : &:r2011_1, ~m? +# 2011| r2011_9(glval) = VariableAddress[z] : +# 2011| mu2011_10(TernaryPodObj) = Store[z] : &:r2011_9, r2011_8 +# 2012| r2012_1(glval) = VariableAddress[#temp2012:23] : +# 2012| r2012_2(TernaryPodObj) = Constant[0] : +# 2012| mu2012_3(TernaryPodObj) = Store[#temp2012:23] : &:r2012_1, r2012_2 +# 2012| r2012_4(TernaryPodObj) = Load[#temp2012:23] : &:r2012_1, ~m? +# 2012| r2012_5(glval) = VariableAddress[a] : +# 2012| r2012_6(bool) = Load[a] : &:r2012_5, ~m? +# 2012| v2012_7(void) = ConditionalBranch : r2012_6 #-----| False -> Block 12 #-----| True -> Block 11 -# 2009| Block 8 -# 2009| r2009_11(glval) = VariableAddress[#temp2009:13] : -# 2009| r2009_12(TernaryPodObj) = Constant[0] : -# 2009| mu2009_13(TernaryPodObj) = Store[#temp2009:13] : &:r2009_11, r2009_12 -# 2009| r2009_14(TernaryPodObj) = Load[#temp2009:13] : &:r2009_11, ~m? -# 2009| r2009_15(glval) = VariableAddress[#temp2009:9] : -# 2009| mu2009_16(TernaryPodObj) = Store[#temp2009:9] : &:r2009_15, r2009_14 +# 2011| Block 8 +# 2011| r2011_11(glval) = VariableAddress[#temp2011:13] : +# 2011| r2011_12(TernaryPodObj) = Constant[0] : +# 2011| mu2011_13(TernaryPodObj) = Store[#temp2011:13] : &:r2011_11, r2011_12 +# 2011| r2011_14(TernaryPodObj) = Load[#temp2011:13] : &:r2011_11, ~m? +# 2011| r2011_15(glval) = VariableAddress[#temp2011:9] : +# 2011| mu2011_16(TernaryPodObj) = Store[#temp2011:9] : &:r2011_15, r2011_14 #-----| Goto -> Block 7 -# 2009| Block 9 -# 2009| r2009_17(glval) = VariableAddress[#temp2009:31] : -# 2009| r2009_18(TernaryPodObj) = Constant[0] : -# 2009| mu2009_19(TernaryPodObj) = Store[#temp2009:31] : &:r2009_17, r2009_18 -# 2009| r2009_20(TernaryPodObj) = Load[#temp2009:31] : &:r2009_17, ~m? -# 2009| r2009_21(glval) = VariableAddress[#temp2009:9] : -# 2009| mu2009_22(TernaryPodObj) = Store[#temp2009:9] : &:r2009_21, r2009_20 +# 2011| Block 9 +# 2011| r2011_17(glval) = VariableAddress[#temp2011:31] : +# 2011| r2011_18(TernaryPodObj) = Constant[0] : +# 2011| mu2011_19(TernaryPodObj) = Store[#temp2011:31] : &:r2011_17, r2011_18 +# 2011| r2011_20(TernaryPodObj) = Load[#temp2011:31] : &:r2011_17, ~m? +# 2011| r2011_21(glval) = VariableAddress[#temp2011:9] : +# 2011| mu2011_22(TernaryPodObj) = Store[#temp2011:9] : &:r2011_21, r2011_20 #-----| Goto -> Block 7 -# 2010| Block 10 -# 2010| r2010_8(glval) = VariableAddress[#temp2010:10] : -# 2010| r2010_9(TernaryPodObj) = Load[#temp2010:10] : &:r2010_8, ~m? -# 2010| r2010_10(glval) = VariableAddress[z] : -# 2010| mu2010_11(TernaryPodObj) = Store[z] : &:r2010_10, r2010_9 -# 2010| r2010_12(glval) = CopyValue : r2010_10 -# 2010| mu2010_13(TernaryPodObj) = Store[?] : &:r2010_12, r2010_4 -# 2011| v2011_1(void) = NoOp : -# 2006| v2006_12(void) = ReturnVoid : -# 2006| v2006_13(void) = AliasedUse : ~m? -# 2006| v2006_14(void) = ExitFunction : - -# 2010| Block 11 -# 2010| r2010_14(glval) = VariableAddress[x] : -# 2010| r2010_15(TernaryPodObj) = Load[x] : &:r2010_14, ~m? -# 2010| r2010_16(glval) = VariableAddress[#temp2010:10] : -# 2010| mu2010_17(TernaryPodObj) = Store[#temp2010:10] : &:r2010_16, r2010_15 +# 2012| Block 10 +# 2012| r2012_8(glval) = VariableAddress[#temp2012:10] : +# 2012| r2012_9(TernaryPodObj) = Load[#temp2012:10] : &:r2012_8, ~m? +# 2012| r2012_10(glval) = VariableAddress[z] : +# 2012| mu2012_11(TernaryPodObj) = Store[z] : &:r2012_10, r2012_9 +# 2012| r2012_12(glval) = CopyValue : r2012_10 +# 2012| mu2012_13(TernaryPodObj) = Store[?] : &:r2012_12, r2012_4 +# 2013| v2013_1(void) = NoOp : +# 2008| v2008_12(void) = ReturnVoid : +# 2008| v2008_13(void) = AliasedUse : ~m? +# 2008| v2008_14(void) = ExitFunction : + +# 2012| Block 11 +# 2012| r2012_14(glval) = VariableAddress[x] : +# 2012| r2012_15(TernaryPodObj) = Load[x] : &:r2012_14, ~m? +# 2012| r2012_16(glval) = VariableAddress[#temp2012:10] : +# 2012| mu2012_17(TernaryPodObj) = Store[#temp2012:10] : &:r2012_16, r2012_15 #-----| Goto -> Block 10 -# 2010| Block 12 -# 2010| r2010_18(glval) = VariableAddress[y] : -# 2010| r2010_19(TernaryPodObj) = Load[y] : &:r2010_18, ~m? -# 2010| r2010_20(glval) = VariableAddress[#temp2010:10] : -# 2010| mu2010_21(TernaryPodObj) = Store[#temp2010:10] : &:r2010_20, r2010_19 +# 2012| Block 12 +# 2012| r2012_18(glval) = VariableAddress[y] : +# 2012| r2012_19(TernaryPodObj) = Load[y] : &:r2012_18, ~m? +# 2012| r2012_20(glval) = VariableAddress[#temp2012:10] : +# 2012| mu2012_21(TernaryPodObj) = Store[#temp2012:10] : &:r2012_20, r2012_19 #-----| Goto -> Block 10 -# 2013| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| mu2013_2(unknown) = AliasedDefinition : -# 2013| mu2013_3(unknown) = InitializeNonLocal : -# 2013| r2013_4(glval) = VariableAddress[#this] : -# 2013| mu2013_5(glval) = InitializeParameter[#this] : &:r2013_4 -# 2013| r2013_6(glval) = Load[#this] : &:r2013_4, ~m? -# 2013| mu2013_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2013_6 +# 2015| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| mu2015_2(unknown) = AliasedDefinition : +# 2015| mu2015_3(unknown) = InitializeNonLocal : +# 2015| r2015_4(glval) = VariableAddress[#this] : +# 2015| mu2015_5(glval) = InitializeParameter[#this] : &:r2015_4 +# 2015| r2015_6(glval) = Load[#this] : &:r2015_4, ~m? +# 2015| mu2015_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? @@ -10939,742 +10939,1018 @@ ir.cpp: #-----| r0_8(glval) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| mu0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2013| v2013_8(void) = ReturnIndirection[#this] : &:r2013_6, ~m? +# 2015| v2015_8(void) = ReturnIndirection[#this] : &:r2015_6, ~m? #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2013| r2013_9(glval) = VariableAddress[#return] : -# 2013| v2013_10(void) = ReturnValue : &:r2013_9, ~m? -# 2013| v2013_11(void) = AliasedUse : ~m? -# 2013| v2013_12(void) = ExitFunction : - -# 2013| void TernaryNonPodObj::TernaryNonPodObj() -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| mu2013_2(unknown) = AliasedDefinition : -# 2013| mu2013_3(unknown) = InitializeNonLocal : -# 2013| r2013_4(glval) = VariableAddress[#this] : -# 2013| mu2013_5(glval) = InitializeParameter[#this] : &:r2013_4 -# 2013| r2013_6(glval) = Load[#this] : &:r2013_4, ~m? -# 2013| mu2013_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2013_6 -# 2013| v2013_8(void) = NoOp : -# 2013| v2013_9(void) = ReturnIndirection[#this] : &:r2013_6, ~m? -# 2013| v2013_10(void) = ReturnVoid : -# 2013| v2013_11(void) = AliasedUse : ~m? -# 2013| v2013_12(void) = ExitFunction : - -# 2013| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| mu2013_2(unknown) = AliasedDefinition : -# 2013| mu2013_3(unknown) = InitializeNonLocal : -# 2013| r2013_4(glval) = VariableAddress[#this] : -# 2013| mu2013_5(glval) = InitializeParameter[#this] : &:r2013_4 -# 2013| r2013_6(glval) = Load[#this] : &:r2013_4, ~m? -# 2013| mu2013_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2013_6 +# 2015| r2015_9(glval) = VariableAddress[#return] : +# 2015| v2015_10(void) = ReturnValue : &:r2015_9, ~m? +# 2015| v2015_11(void) = AliasedUse : ~m? +# 2015| v2015_12(void) = ExitFunction : + +# 2015| void TernaryNonPodObj::TernaryNonPodObj() +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| mu2015_2(unknown) = AliasedDefinition : +# 2015| mu2015_3(unknown) = InitializeNonLocal : +# 2015| r2015_4(glval) = VariableAddress[#this] : +# 2015| mu2015_5(glval) = InitializeParameter[#this] : &:r2015_4 +# 2015| r2015_6(glval) = Load[#this] : &:r2015_4, ~m? +# 2015| mu2015_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_6 +# 2015| v2015_8(void) = NoOp : +# 2015| v2015_9(void) = ReturnIndirection[#this] : &:r2015_6, ~m? +# 2015| v2015_10(void) = ReturnVoid : +# 2015| v2015_11(void) = AliasedUse : ~m? +# 2015| v2015_12(void) = ExitFunction : + +# 2015| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| mu2015_2(unknown) = AliasedDefinition : +# 2015| mu2015_3(unknown) = InitializeNonLocal : +# 2015| r2015_4(glval) = VariableAddress[#this] : +# 2015| mu2015_5(glval) = InitializeParameter[#this] : &:r2015_4 +# 2015| r2015_6(glval) = Load[#this] : &:r2015_4, ~m? +# 2015| mu2015_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2013| v2013_8(void) = NoOp : -# 2013| v2013_9(void) = ReturnIndirection[#this] : &:r2013_6, ~m? +# 2015| v2015_8(void) = NoOp : +# 2015| v2015_9(void) = ReturnIndirection[#this] : &:r2015_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2013| v2013_10(void) = ReturnVoid : -# 2013| v2013_11(void) = AliasedUse : ~m? -# 2013| v2013_12(void) = ExitFunction : - -# 2014| void TernaryNonPodObj::~TernaryNonPodObj() -# 2014| Block 0 -# 2014| v2014_1(void) = EnterFunction : -# 2014| mu2014_2(unknown) = AliasedDefinition : -# 2014| mu2014_3(unknown) = InitializeNonLocal : -# 2014| r2014_4(glval) = VariableAddress[#this] : -# 2014| mu2014_5(glval) = InitializeParameter[#this] : &:r2014_4 -# 2014| r2014_6(glval) = Load[#this] : &:r2014_4, ~m? -# 2014| mu2014_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2014_6 -# 2014| v2014_8(void) = NoOp : -# 2014| v2014_9(void) = ReturnIndirection[#this] : &:r2014_6, ~m? -# 2014| v2014_10(void) = ReturnVoid : -# 2014| v2014_11(void) = AliasedUse : ~m? -# 2014| v2014_12(void) = ExitFunction : - -# 2017| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2017| Block 0 -# 2017| v2017_1(void) = EnterFunction : -# 2017| mu2017_2(unknown) = AliasedDefinition : -# 2017| mu2017_3(unknown) = InitializeNonLocal : -# 2017| r2017_4(glval) = VariableAddress[a] : -# 2017| mu2017_5(bool) = InitializeParameter[a] : &:r2017_4 -# 2017| r2017_6(glval) = VariableAddress[x] : -# 2017| mu2017_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2017_6 -# 2017| r2017_8(glval) = VariableAddress[y] : -# 2017| mu2017_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2017_8 -# 2017| r2017_10(glval) = VariableAddress[z] : -# 2017| mu2017_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2017_10 -# 2018| r2018_1(glval) = VariableAddress[z] : -# 2018| r2018_2(glval) = FunctionAddress[operator=] : -# 2018| r2018_3(glval) = VariableAddress[a] : -# 2018| r2018_4(bool) = Load[a] : &:r2018_3, ~m? -# 2018| v2018_5(void) = ConditionalBranch : r2018_4 +# 2015| v2015_10(void) = ReturnVoid : +# 2015| v2015_11(void) = AliasedUse : ~m? +# 2015| v2015_12(void) = ExitFunction : + +# 2016| void TernaryNonPodObj::~TernaryNonPodObj() +# 2016| Block 0 +# 2016| v2016_1(void) = EnterFunction : +# 2016| mu2016_2(unknown) = AliasedDefinition : +# 2016| mu2016_3(unknown) = InitializeNonLocal : +# 2016| r2016_4(glval) = VariableAddress[#this] : +# 2016| mu2016_5(glval) = InitializeParameter[#this] : &:r2016_4 +# 2016| r2016_6(glval) = Load[#this] : &:r2016_4, ~m? +# 2016| mu2016_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2016_6 +# 2016| v2016_8(void) = NoOp : +# 2016| v2016_9(void) = ReturnIndirection[#this] : &:r2016_6, ~m? +# 2016| v2016_10(void) = ReturnVoid : +# 2016| v2016_11(void) = AliasedUse : ~m? +# 2016| v2016_12(void) = ExitFunction : + +# 2019| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2019| Block 0 +# 2019| v2019_1(void) = EnterFunction : +# 2019| mu2019_2(unknown) = AliasedDefinition : +# 2019| mu2019_3(unknown) = InitializeNonLocal : +# 2019| r2019_4(glval) = VariableAddress[a] : +# 2019| mu2019_5(bool) = InitializeParameter[a] : &:r2019_4 +# 2019| r2019_6(glval) = VariableAddress[x] : +# 2019| mu2019_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2019_6 +# 2019| r2019_8(glval) = VariableAddress[y] : +# 2019| mu2019_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2019_8 +# 2019| r2019_10(glval) = VariableAddress[z] : +# 2019| mu2019_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2019_10 +# 2020| r2020_1(glval) = VariableAddress[z] : +# 2020| r2020_2(glval) = FunctionAddress[operator=] : +# 2020| r2020_3(glval) = VariableAddress[a] : +# 2020| r2020_4(bool) = Load[a] : &:r2020_3, ~m? +# 2020| v2020_5(void) = ConditionalBranch : r2020_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2018| Block 1 -# 2018| r2018_6(glval) = VariableAddress[#temp2018:9] : -# 2018| r2018_7(glval) = Load[#temp2018:9] : &:r2018_6, ~m? -# 2018| r2018_8(glval) = Convert : r2018_7 -# 2018| r2018_9(TernaryNonPodObj &) = CopyValue : r2018_8 -# 2018| r2018_10(TernaryNonPodObj &) = Call[operator=] : func:r2018_2, this:r2018_1, 0:r2018_9 -# 2018| mu2018_11(unknown) = ^CallSideEffect : ~m? -# 2018| v2018_12(void) = ^IndirectReadSideEffect[-1] : &:r2018_1, ~m? -# 2018| v2018_13(void) = ^BufferReadSideEffect[0] : &:r2018_9, ~m? -# 2018| mu2018_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2018_1 -# 2018| r2018_15(glval) = CopyValue : r2018_10 -# 2019| r2019_1(glval) = VariableAddress[z] : -# 2019| r2019_2(glval) = FunctionAddress[operator=] : -# 2019| r2019_3(glval) = VariableAddress[#temp2019:9] : -# 2019| r2019_4(glval) = VariableAddress[a] : -# 2019| r2019_5(bool) = Load[a] : &:r2019_4, ~m? -# 2019| v2019_6(void) = ConditionalBranch : r2019_5 +# 2020| Block 1 +# 2020| r2020_6(glval) = VariableAddress[#temp2020:9] : +# 2020| r2020_7(glval) = Load[#temp2020:9] : &:r2020_6, ~m? +# 2020| r2020_8(glval) = Convert : r2020_7 +# 2020| r2020_9(TernaryNonPodObj &) = CopyValue : r2020_8 +# 2020| r2020_10(TernaryNonPodObj &) = Call[operator=] : func:r2020_2, this:r2020_1, 0:r2020_9 +# 2020| mu2020_11(unknown) = ^CallSideEffect : ~m? +# 2020| v2020_12(void) = ^IndirectReadSideEffect[-1] : &:r2020_1, ~m? +# 2020| v2020_13(void) = ^BufferReadSideEffect[0] : &:r2020_9, ~m? +# 2020| mu2020_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 +# 2020| r2020_15(glval) = CopyValue : r2020_10 +# 2021| r2021_1(glval) = VariableAddress[z] : +# 2021| r2021_2(glval) = FunctionAddress[operator=] : +# 2021| r2021_3(glval) = VariableAddress[#temp2021:9] : +# 2021| r2021_4(glval) = VariableAddress[a] : +# 2021| r2021_5(bool) = Load[a] : &:r2021_4, ~m? +# 2021| v2021_6(void) = ConditionalBranch : r2021_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2018| Block 2 -# 2018| r2018_16(glval) = VariableAddress[x] : -# 2018| r2018_17(glval) = VariableAddress[#temp2018:9] : -# 2018| mu2018_18(glval) = Store[#temp2018:9] : &:r2018_17, r2018_16 +# 2020| Block 2 +# 2020| r2020_16(glval) = VariableAddress[x] : +# 2020| r2020_17(glval) = VariableAddress[#temp2020:9] : +# 2020| mu2020_18(glval) = Store[#temp2020:9] : &:r2020_17, r2020_16 #-----| Goto -> Block 1 -# 2018| Block 3 -# 2018| r2018_19(glval) = VariableAddress[y] : -# 2018| r2018_20(glval) = VariableAddress[#temp2018:9] : -# 2018| mu2018_21(glval) = Store[#temp2018:9] : &:r2018_20, r2018_19 +# 2020| Block 3 +# 2020| r2020_19(glval) = VariableAddress[y] : +# 2020| r2020_20(glval) = VariableAddress[#temp2020:9] : +# 2020| mu2020_21(glval) = Store[#temp2020:9] : &:r2020_20, r2020_19 #-----| Goto -> Block 1 -# 2019| Block 4 -# 2019| r2019_7(glval) = VariableAddress[#temp2019:9] : -# 2019| r2019_8(TernaryNonPodObj) = Load[#temp2019:9] : &:r2019_7, ~m? -# 2019| mu2019_9(TernaryNonPodObj) = Store[#temp2019:9] : &:r2019_3, r2019_8 -# 2019| r2019_10(glval) = Convert : r2019_3 -# 2019| r2019_11(TernaryNonPodObj &) = CopyValue : r2019_10 -# 2019| r2019_12(TernaryNonPodObj &) = Call[operator=] : func:r2019_2, this:r2019_1, 0:r2019_11 -# 2019| mu2019_13(unknown) = ^CallSideEffect : ~m? -# 2019| v2019_14(void) = ^IndirectReadSideEffect[-1] : &:r2019_1, ~m? -# 2019| v2019_15(void) = ^BufferReadSideEffect[0] : &:r2019_11, ~m? -# 2019| mu2019_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2019_1 -# 2019| r2019_17(glval) = CopyValue : r2019_12 -# 2020| r2020_1(glval) = VariableAddress[z] : -# 2020| r2020_2(glval) = FunctionAddress[operator=] : -# 2020| r2020_3(glval) = VariableAddress[#temp2020:9] : -# 2020| r2020_4(glval) = VariableAddress[a] : -# 2020| r2020_5(bool) = Load[a] : &:r2020_4, ~m? -# 2020| v2020_6(void) = ConditionalBranch : r2020_5 +# 2021| Block 4 +# 2021| r2021_7(glval) = VariableAddress[#temp2021:9] : +# 2021| r2021_8(TernaryNonPodObj) = Load[#temp2021:9] : &:r2021_7, ~m? +# 2021| mu2021_9(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_3, r2021_8 +# 2021| r2021_10(glval) = Convert : r2021_3 +# 2021| r2021_11(TernaryNonPodObj &) = CopyValue : r2021_10 +# 2021| r2021_12(TernaryNonPodObj &) = Call[operator=] : func:r2021_2, this:r2021_1, 0:r2021_11 +# 2021| mu2021_13(unknown) = ^CallSideEffect : ~m? +# 2021| v2021_14(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, ~m? +# 2021| v2021_15(void) = ^BufferReadSideEffect[0] : &:r2021_11, ~m? +# 2021| mu2021_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 +# 2021| r2021_17(glval) = CopyValue : r2021_12 +# 2022| r2022_1(glval) = VariableAddress[z] : +# 2022| r2022_2(glval) = FunctionAddress[operator=] : +# 2022| r2022_3(glval) = VariableAddress[#temp2022:9] : +# 2022| r2022_4(glval) = VariableAddress[a] : +# 2022| r2022_5(bool) = Load[a] : &:r2022_4, ~m? +# 2022| v2022_6(void) = ConditionalBranch : r2022_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2019| Block 5 -# 2019| r2019_18(glval) = VariableAddress[#temp2019:13] : -# 2019| mu2019_19(TernaryNonPodObj) = Uninitialized[#temp2019:13] : &:r2019_18 -# 2019| r2019_20(glval) = FunctionAddress[TernaryNonPodObj] : -# 2019| r2019_21(glval) = VariableAddress[x] : -# 2019| r2019_22(glval) = Convert : r2019_21 -# 2019| r2019_23(TernaryNonPodObj &) = CopyValue : r2019_22 -# 2019| v2019_24(void) = Call[TernaryNonPodObj] : func:r2019_20, this:r2019_18, 0:r2019_23 -# 2019| mu2019_25(unknown) = ^CallSideEffect : ~m? -# 2019| v2019_26(void) = ^BufferReadSideEffect[0] : &:r2019_23, ~m? -# 2019| mu2019_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2019_18 -# 2019| r2019_28(TernaryNonPodObj) = Load[#temp2019:13] : &:r2019_18, ~m? -# 2019| r2019_29(glval) = VariableAddress[#temp2019:9] : -# 2019| mu2019_30(TernaryNonPodObj) = Store[#temp2019:9] : &:r2019_29, r2019_28 +# 2021| Block 5 +# 2021| r2021_18(glval) = VariableAddress[#temp2021:13] : +# 2021| mu2021_19(TernaryNonPodObj) = Uninitialized[#temp2021:13] : &:r2021_18 +# 2021| r2021_20(glval) = FunctionAddress[TernaryNonPodObj] : +# 2021| r2021_21(glval) = VariableAddress[x] : +# 2021| r2021_22(glval) = Convert : r2021_21 +# 2021| r2021_23(TernaryNonPodObj &) = CopyValue : r2021_22 +# 2021| v2021_24(void) = Call[TernaryNonPodObj] : func:r2021_20, this:r2021_18, 0:r2021_23 +# 2021| mu2021_25(unknown) = ^CallSideEffect : ~m? +# 2021| v2021_26(void) = ^BufferReadSideEffect[0] : &:r2021_23, ~m? +# 2021| mu2021_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_18 +# 2021| r2021_28(TernaryNonPodObj) = Load[#temp2021:13] : &:r2021_18, ~m? +# 2021| r2021_29(glval) = VariableAddress[#temp2021:9] : +# 2021| mu2021_30(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_29, r2021_28 #-----| Goto -> Block 4 -# 2019| Block 6 -# 2019| r2019_31(glval) = VariableAddress[#temp2019:17] : -# 2019| mu2019_32(TernaryNonPodObj) = Uninitialized[#temp2019:17] : &:r2019_31 -# 2019| r2019_33(glval) = FunctionAddress[TernaryNonPodObj] : -# 2019| v2019_34(void) = Call[TernaryNonPodObj] : func:r2019_33, this:r2019_31 -# 2019| mu2019_35(unknown) = ^CallSideEffect : ~m? -# 2019| mu2019_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2019_31 -# 2019| r2019_37(TernaryNonPodObj) = Load[#temp2019:17] : &:r2019_31, ~m? -# 2019| r2019_38(glval) = VariableAddress[#temp2019:9] : -# 2019| mu2019_39(TernaryNonPodObj) = Store[#temp2019:9] : &:r2019_38, r2019_37 +# 2021| Block 6 +# 2021| r2021_31(glval) = VariableAddress[#temp2021:17] : +# 2021| mu2021_32(TernaryNonPodObj) = Uninitialized[#temp2021:17] : &:r2021_31 +# 2021| r2021_33(glval) = FunctionAddress[TernaryNonPodObj] : +# 2021| v2021_34(void) = Call[TernaryNonPodObj] : func:r2021_33, this:r2021_31 +# 2021| mu2021_35(unknown) = ^CallSideEffect : ~m? +# 2021| mu2021_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_31 +# 2021| r2021_37(TernaryNonPodObj) = Load[#temp2021:17] : &:r2021_31, ~m? +# 2021| r2021_38(glval) = VariableAddress[#temp2021:9] : +# 2021| mu2021_39(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_38, r2021_37 #-----| Goto -> Block 4 -# 2020| Block 7 -# 2020| r2020_7(glval) = VariableAddress[#temp2020:9] : -# 2020| r2020_8(TernaryNonPodObj) = Load[#temp2020:9] : &:r2020_7, ~m? -# 2020| mu2020_9(TernaryNonPodObj) = Store[#temp2020:9] : &:r2020_3, r2020_8 -# 2020| r2020_10(glval) = Convert : r2020_3 -# 2020| r2020_11(TernaryNonPodObj &) = CopyValue : r2020_10 -# 2020| r2020_12(TernaryNonPodObj &) = Call[operator=] : func:r2020_2, this:r2020_1, 0:r2020_11 -# 2020| mu2020_13(unknown) = ^CallSideEffect : ~m? -# 2020| v2020_14(void) = ^IndirectReadSideEffect[-1] : &:r2020_1, ~m? -# 2020| v2020_15(void) = ^BufferReadSideEffect[0] : &:r2020_11, ~m? -# 2020| mu2020_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 -# 2020| r2020_17(glval) = CopyValue : r2020_12 -# 2021| r2021_1(glval) = VariableAddress[z] : -# 2021| r2021_2(glval) = FunctionAddress[operator=] : -# 2021| r2021_3(glval) = VariableAddress[a] : -# 2021| r2021_4(bool) = Load[a] : &:r2021_3, ~m? -# 2021| v2021_5(void) = ConditionalBranch : r2021_4 +# 2022| Block 7 +# 2022| r2022_7(glval) = VariableAddress[#temp2022:9] : +# 2022| r2022_8(TernaryNonPodObj) = Load[#temp2022:9] : &:r2022_7, ~m? +# 2022| mu2022_9(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_3, r2022_8 +# 2022| r2022_10(glval) = Convert : r2022_3 +# 2022| r2022_11(TernaryNonPodObj &) = CopyValue : r2022_10 +# 2022| r2022_12(TernaryNonPodObj &) = Call[operator=] : func:r2022_2, this:r2022_1, 0:r2022_11 +# 2022| mu2022_13(unknown) = ^CallSideEffect : ~m? +# 2022| v2022_14(void) = ^IndirectReadSideEffect[-1] : &:r2022_1, ~m? +# 2022| v2022_15(void) = ^BufferReadSideEffect[0] : &:r2022_11, ~m? +# 2022| mu2022_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_1 +# 2022| r2022_17(glval) = CopyValue : r2022_12 +# 2023| r2023_1(glval) = VariableAddress[z] : +# 2023| r2023_2(glval) = FunctionAddress[operator=] : +# 2023| r2023_3(glval) = VariableAddress[a] : +# 2023| r2023_4(bool) = Load[a] : &:r2023_3, ~m? +# 2023| v2023_5(void) = ConditionalBranch : r2023_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2020| Block 8 -# 2020| r2020_18(glval) = VariableAddress[#temp2020:13] : -# 2020| mu2020_19(TernaryNonPodObj) = Uninitialized[#temp2020:13] : &:r2020_18 -# 2020| r2020_20(glval) = FunctionAddress[TernaryNonPodObj] : -# 2020| v2020_21(void) = Call[TernaryNonPodObj] : func:r2020_20, this:r2020_18 -# 2020| mu2020_22(unknown) = ^CallSideEffect : ~m? -# 2020| mu2020_23(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_18 -# 2020| r2020_24(TernaryNonPodObj) = Load[#temp2020:13] : &:r2020_18, ~m? -# 2020| r2020_25(glval) = VariableAddress[#temp2020:9] : -# 2020| mu2020_26(TernaryNonPodObj) = Store[#temp2020:9] : &:r2020_25, r2020_24 +# 2022| Block 8 +# 2022| r2022_18(glval) = VariableAddress[#temp2022:13] : +# 2022| mu2022_19(TernaryNonPodObj) = Uninitialized[#temp2022:13] : &:r2022_18 +# 2022| r2022_20(glval) = FunctionAddress[TernaryNonPodObj] : +# 2022| v2022_21(void) = Call[TernaryNonPodObj] : func:r2022_20, this:r2022_18 +# 2022| mu2022_22(unknown) = ^CallSideEffect : ~m? +# 2022| mu2022_23(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_18 +# 2022| r2022_24(TernaryNonPodObj) = Load[#temp2022:13] : &:r2022_18, ~m? +# 2022| r2022_25(glval) = VariableAddress[#temp2022:9] : +# 2022| mu2022_26(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_25, r2022_24 #-----| Goto -> Block 7 -# 2020| Block 9 -# 2020| r2020_27(glval) = VariableAddress[#temp2020:34] : -# 2020| mu2020_28(TernaryNonPodObj) = Uninitialized[#temp2020:34] : &:r2020_27 -# 2020| r2020_29(glval) = FunctionAddress[TernaryNonPodObj] : -# 2020| v2020_30(void) = Call[TernaryNonPodObj] : func:r2020_29, this:r2020_27 -# 2020| mu2020_31(unknown) = ^CallSideEffect : ~m? -# 2020| mu2020_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_27 -# 2020| r2020_33(TernaryNonPodObj) = Load[#temp2020:34] : &:r2020_27, ~m? -# 2020| r2020_34(glval) = VariableAddress[#temp2020:9] : -# 2020| mu2020_35(TernaryNonPodObj) = Store[#temp2020:9] : &:r2020_34, r2020_33 +# 2022| Block 9 +# 2022| r2022_27(glval) = VariableAddress[#temp2022:34] : +# 2022| mu2022_28(TernaryNonPodObj) = Uninitialized[#temp2022:34] : &:r2022_27 +# 2022| r2022_29(glval) = FunctionAddress[TernaryNonPodObj] : +# 2022| v2022_30(void) = Call[TernaryNonPodObj] : func:r2022_29, this:r2022_27 +# 2022| mu2022_31(unknown) = ^CallSideEffect : ~m? +# 2022| mu2022_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_27 +# 2022| r2022_33(TernaryNonPodObj) = Load[#temp2022:34] : &:r2022_27, ~m? +# 2022| r2022_34(glval) = VariableAddress[#temp2022:9] : +# 2022| mu2022_35(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_34, r2022_33 #-----| Goto -> Block 7 -# 2021| Block 10 -# 2021| r2021_6(glval) = VariableAddress[#temp2021:10] : -# 2021| r2021_7(glval) = Load[#temp2021:10] : &:r2021_6, ~m? -# 2021| r2021_8(glval) = Convert : r2021_7 -# 2021| r2021_9(TernaryNonPodObj &) = CopyValue : r2021_8 -# 2021| r2021_10(TernaryNonPodObj &) = Call[operator=] : func:r2021_2, this:r2021_1, 0:r2021_9 -# 2021| mu2021_11(unknown) = ^CallSideEffect : ~m? -# 2021| v2021_12(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, ~m? -# 2021| v2021_13(void) = ^BufferReadSideEffect[0] : &:r2021_9, ~m? -# 2021| mu2021_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 -# 2021| r2021_15(glval) = CopyValue : r2021_10 -# 2021| r2021_16(glval) = FunctionAddress[operator=] : -# 2021| r2021_17(glval) = VariableAddress[#temp2021:23] : -# 2021| mu2021_18(TernaryNonPodObj) = Uninitialized[#temp2021:23] : &:r2021_17 -# 2021| r2021_19(glval) = FunctionAddress[TernaryNonPodObj] : -# 2021| v2021_20(void) = Call[TernaryNonPodObj] : func:r2021_19, this:r2021_17 -# 2021| mu2021_21(unknown) = ^CallSideEffect : ~m? -# 2021| mu2021_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_17 -# 2021| r2021_23(glval) = Convert : r2021_17 -# 2021| r2021_24(TernaryNonPodObj &) = CopyValue : r2021_23 -# 2021| r2021_25(TernaryNonPodObj &) = Call[operator=] : func:r2021_16, this:r2021_15, 0:r2021_24 -# 2021| mu2021_26(unknown) = ^CallSideEffect : ~m? -# 2021| v2021_27(void) = ^IndirectReadSideEffect[-1] : &:r2021_15, ~m? -# 2021| v2021_28(void) = ^BufferReadSideEffect[0] : &:r2021_24, ~m? -# 2021| mu2021_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_15 -# 2021| r2021_30(glval) = CopyValue : r2021_25 -# 2022| v2022_1(void) = NoOp : -# 2017| v2017_12(void) = ReturnVoid : -# 2017| v2017_13(void) = AliasedUse : ~m? -# 2017| v2017_14(void) = ExitFunction : - -# 2021| Block 11 -# 2021| r2021_31(glval) = VariableAddress[x] : -# 2021| r2021_32(glval) = VariableAddress[#temp2021:10] : -# 2021| mu2021_33(glval) = Store[#temp2021:10] : &:r2021_32, r2021_31 +# 2023| Block 10 +# 2023| r2023_6(glval) = VariableAddress[#temp2023:10] : +# 2023| r2023_7(glval) = Load[#temp2023:10] : &:r2023_6, ~m? +# 2023| r2023_8(glval) = Convert : r2023_7 +# 2023| r2023_9(TernaryNonPodObj &) = CopyValue : r2023_8 +# 2023| r2023_10(TernaryNonPodObj &) = Call[operator=] : func:r2023_2, this:r2023_1, 0:r2023_9 +# 2023| mu2023_11(unknown) = ^CallSideEffect : ~m? +# 2023| v2023_12(void) = ^IndirectReadSideEffect[-1] : &:r2023_1, ~m? +# 2023| v2023_13(void) = ^BufferReadSideEffect[0] : &:r2023_9, ~m? +# 2023| mu2023_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_1 +# 2023| r2023_15(glval) = CopyValue : r2023_10 +# 2023| r2023_16(glval) = FunctionAddress[operator=] : +# 2023| r2023_17(glval) = VariableAddress[#temp2023:23] : +# 2023| mu2023_18(TernaryNonPodObj) = Uninitialized[#temp2023:23] : &:r2023_17 +# 2023| r2023_19(glval) = FunctionAddress[TernaryNonPodObj] : +# 2023| v2023_20(void) = Call[TernaryNonPodObj] : func:r2023_19, this:r2023_17 +# 2023| mu2023_21(unknown) = ^CallSideEffect : ~m? +# 2023| mu2023_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_17 +# 2023| r2023_23(glval) = Convert : r2023_17 +# 2023| r2023_24(TernaryNonPodObj &) = CopyValue : r2023_23 +# 2023| r2023_25(TernaryNonPodObj &) = Call[operator=] : func:r2023_16, this:r2023_15, 0:r2023_24 +# 2023| mu2023_26(unknown) = ^CallSideEffect : ~m? +# 2023| v2023_27(void) = ^IndirectReadSideEffect[-1] : &:r2023_15, ~m? +# 2023| v2023_28(void) = ^BufferReadSideEffect[0] : &:r2023_24, ~m? +# 2023| mu2023_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_15 +# 2023| r2023_30(glval) = CopyValue : r2023_25 +# 2024| v2024_1(void) = NoOp : +# 2019| v2019_12(void) = ReturnVoid : +# 2019| v2019_13(void) = AliasedUse : ~m? +# 2019| v2019_14(void) = ExitFunction : + +# 2023| Block 11 +# 2023| r2023_31(glval) = VariableAddress[x] : +# 2023| r2023_32(glval) = VariableAddress[#temp2023:10] : +# 2023| mu2023_33(glval) = Store[#temp2023:10] : &:r2023_32, r2023_31 #-----| Goto -> Block 10 -# 2021| Block 12 -# 2021| r2021_34(glval) = VariableAddress[y] : -# 2021| r2021_35(glval) = VariableAddress[#temp2021:10] : -# 2021| mu2021_36(glval) = Store[#temp2021:10] : &:r2021_35, r2021_34 +# 2023| Block 12 +# 2023| r2023_34(glval) = VariableAddress[y] : +# 2023| r2023_35(glval) = VariableAddress[#temp2023:10] : +# 2023| mu2023_36(glval) = Store[#temp2023:10] : &:r2023_35, r2023_34 #-----| Goto -> Block 10 -# 2026| unsigned int CommaTest(unsigned int) -# 2026| Block 0 -# 2026| v2026_1(void) = EnterFunction : -# 2026| mu2026_2(unknown) = AliasedDefinition : -# 2026| mu2026_3(unknown) = InitializeNonLocal : -# 2026| r2026_4(glval) = VariableAddress[x] : -# 2026| mu2026_5(unsigned int) = InitializeParameter[x] : &:r2026_4 -# 2027| r2027_1(glval) = VariableAddress[y] : -# 2027| mu2027_2(unsigned int) = Uninitialized[y] : &:r2027_1 -# 2028| r2028_1(glval) = VariableAddress[x] : -# 2028| r2028_2(unsigned int) = Load[x] : &:r2028_1, ~m? -# 2028| r2028_3(unsigned int) = Constant[100] : -# 2028| r2028_4(bool) = CompareLT : r2028_2, r2028_3 -# 2028| v2028_5(void) = ConditionalBranch : r2028_4 +# 2028| unsigned int CommaTest(unsigned int) +# 2028| Block 0 +# 2028| v2028_1(void) = EnterFunction : +# 2028| mu2028_2(unknown) = AliasedDefinition : +# 2028| mu2028_3(unknown) = InitializeNonLocal : +# 2028| r2028_4(glval) = VariableAddress[x] : +# 2028| mu2028_5(unsigned int) = InitializeParameter[x] : &:r2028_4 +# 2029| r2029_1(glval) = VariableAddress[y] : +# 2029| mu2029_2(unsigned int) = Uninitialized[y] : &:r2029_1 +# 2030| r2030_1(glval) = VariableAddress[x] : +# 2030| r2030_2(unsigned int) = Load[x] : &:r2030_1, ~m? +# 2030| r2030_3(unsigned int) = Constant[100] : +# 2030| r2030_4(bool) = CompareLT : r2030_2, r2030_3 +# 2030| v2030_5(void) = ConditionalBranch : r2030_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2028| Block 1 -# 2028| r2028_6(glval) = VariableAddress[#temp2028:7] : -# 2028| r2028_7(unsigned int) = Load[#temp2028:7] : &:r2028_6, ~m? -# 2028| r2028_8(glval) = VariableAddress[y] : -# 2028| mu2028_9(unsigned int) = Store[y] : &:r2028_8, r2028_7 -# 2031| r2031_1(glval) = VariableAddress[#return] : -# 2031| mu2031_2(unsigned int) = Uninitialized[#return] : &:r2031_1 -# 2026| r2026_6(glval) = VariableAddress[#return] : -# 2026| v2026_7(void) = ReturnValue : &:r2026_6, ~m? -# 2026| v2026_8(void) = AliasedUse : ~m? -# 2026| v2026_9(void) = ExitFunction : - -# 2029| Block 2 -# 2029| r2029_1(glval) = FunctionAddress[CommaTestHelper] : -# 2029| r2029_2(glval) = VariableAddress[x] : -# 2029| r2029_3(unsigned int) = Load[x] : &:r2029_2, ~m? -# 2029| v2029_4(void) = Call[CommaTestHelper] : func:r2029_1, 0:r2029_3 -# 2029| mu2029_5(unknown) = ^CallSideEffect : ~m? -# 2029| r2029_6(glval) = VariableAddress[x] : -# 2029| r2029_7(unsigned int) = Load[x] : &:r2029_6, ~m? -# 2029| r2029_8(unsigned int) = CopyValue : r2029_7 -# 2028| r2028_10(glval) = VariableAddress[#temp2028:7] : -# 2028| mu2028_11(unsigned int) = Store[#temp2028:7] : &:r2028_10, r2029_8 +# 2030| Block 1 +# 2030| r2030_6(glval) = VariableAddress[#temp2030:7] : +# 2030| r2030_7(unsigned int) = Load[#temp2030:7] : &:r2030_6, ~m? +# 2030| r2030_8(glval) = VariableAddress[y] : +# 2030| mu2030_9(unsigned int) = Store[y] : &:r2030_8, r2030_7 +# 2033| r2033_1(glval) = VariableAddress[#return] : +# 2033| mu2033_2(unsigned int) = Uninitialized[#return] : &:r2033_1 +# 2028| r2028_6(glval) = VariableAddress[#return] : +# 2028| v2028_7(void) = ReturnValue : &:r2028_6, ~m? +# 2028| v2028_8(void) = AliasedUse : ~m? +# 2028| v2028_9(void) = ExitFunction : + +# 2031| Block 2 +# 2031| r2031_1(glval) = FunctionAddress[CommaTestHelper] : +# 2031| r2031_2(glval) = VariableAddress[x] : +# 2031| r2031_3(unsigned int) = Load[x] : &:r2031_2, ~m? +# 2031| v2031_4(void) = Call[CommaTestHelper] : func:r2031_1, 0:r2031_3 +# 2031| mu2031_5(unknown) = ^CallSideEffect : ~m? +# 2031| r2031_6(glval) = VariableAddress[x] : +# 2031| r2031_7(unsigned int) = Load[x] : &:r2031_6, ~m? +# 2031| r2031_8(unsigned int) = CopyValue : r2031_7 +# 2030| r2030_10(glval) = VariableAddress[#temp2030:7] : +# 2030| mu2030_11(unsigned int) = Store[#temp2030:7] : &:r2030_10, r2031_8 #-----| Goto -> Block 1 -# 2030| Block 3 -# 2030| r2030_1(glval) = FunctionAddress[CommaTestHelper] : -# 2030| r2030_2(glval) = VariableAddress[x] : -# 2030| r2030_3(unsigned int) = Load[x] : &:r2030_2, ~m? -# 2030| v2030_4(void) = Call[CommaTestHelper] : func:r2030_1, 0:r2030_3 -# 2030| mu2030_5(unknown) = ^CallSideEffect : ~m? -# 2030| r2030_6(int) = Constant[10] : -# 2030| r2030_7(int) = CopyValue : r2030_6 -# 2030| r2030_8(unsigned int) = Convert : r2030_7 -# 2028| r2028_12(glval) = VariableAddress[#temp2028:7] : -# 2028| mu2028_13(unsigned int) = Store[#temp2028:7] : &:r2028_12, r2030_8 +# 2032| Block 3 +# 2032| r2032_1(glval) = FunctionAddress[CommaTestHelper] : +# 2032| r2032_2(glval) = VariableAddress[x] : +# 2032| r2032_3(unsigned int) = Load[x] : &:r2032_2, ~m? +# 2032| v2032_4(void) = Call[CommaTestHelper] : func:r2032_1, 0:r2032_3 +# 2032| mu2032_5(unknown) = ^CallSideEffect : ~m? +# 2032| r2032_6(int) = Constant[10] : +# 2032| r2032_7(int) = CopyValue : r2032_6 +# 2032| r2032_8(unsigned int) = Convert : r2032_7 +# 2030| r2030_12(glval) = VariableAddress[#temp2030:7] : +# 2030| mu2030_13(unsigned int) = Store[#temp2030:7] : &:r2030_12, r2032_8 #-----| Goto -> Block 1 -# 2033| void NewDeleteMem() -# 2033| Block 0 -# 2033| v2033_1(void) = EnterFunction : -# 2033| mu2033_2(unknown) = AliasedDefinition : -# 2033| mu2033_3(unknown) = InitializeNonLocal : -# 2034| r2034_1(glval) = VariableAddress[x] : -# 2034| r2034_2(glval) = FunctionAddress[operator new] : -# 2034| r2034_3(unsigned long) = Constant[4] : -# 2034| r2034_4(void *) = Call[operator new] : func:r2034_2, 0:r2034_3 -# 2034| mu2034_5(unknown) = ^CallSideEffect : ~m? -# 2034| mu2034_6(unknown) = ^InitializeDynamicAllocation : &:r2034_4 -# 2034| r2034_7(int *) = Convert : r2034_4 -# 2034| mu2034_8(int *) = Store[x] : &:r2034_1, r2034_7 -# 2035| r2035_1(int) = Constant[6] : -# 2035| r2035_2(glval) = VariableAddress[x] : -# 2035| r2035_3(int *) = Load[x] : &:r2035_2, ~m? -# 2035| r2035_4(glval) = CopyValue : r2035_3 -# 2035| mu2035_5(int) = Store[?] : &:r2035_4, r2035_1 -# 2036| r2036_1(glval) = FunctionAddress[operator delete] : -# 2036| r2036_2(glval) = VariableAddress[x] : -# 2036| r2036_3(int *) = Load[x] : &:r2036_2, ~m? -# 2036| v2036_4(void) = Call[operator delete] : func:r2036_1, 0:r2036_3 +# 2035| void NewDeleteMem() +# 2035| Block 0 +# 2035| v2035_1(void) = EnterFunction : +# 2035| mu2035_2(unknown) = AliasedDefinition : +# 2035| mu2035_3(unknown) = InitializeNonLocal : +# 2036| r2036_1(glval) = VariableAddress[x] : +# 2036| r2036_2(glval) = FunctionAddress[operator new] : +# 2036| r2036_3(unsigned long) = Constant[4] : +# 2036| r2036_4(void *) = Call[operator new] : func:r2036_2, 0:r2036_3 # 2036| mu2036_5(unknown) = ^CallSideEffect : ~m? -# 2037| v2037_1(void) = NoOp : -# 2033| v2033_4(void) = ReturnVoid : -# 2033| v2033_5(void) = AliasedUse : ~m? -# 2033| v2033_6(void) = ExitFunction : - -# 2039| void Base2::Base2() -# 2039| Block 0 -# 2039| v2039_1(void) = EnterFunction : -# 2039| mu2039_2(unknown) = AliasedDefinition : -# 2039| mu2039_3(unknown) = InitializeNonLocal : -# 2039| r2039_4(glval) = VariableAddress[#this] : -# 2039| mu2039_5(glval) = InitializeParameter[#this] : &:r2039_4 -# 2039| r2039_6(glval) = Load[#this] : &:r2039_4, ~m? -# 2039| mu2039_7(Base2) = InitializeIndirection[#this] : &:r2039_6 -# 2039| v2039_8(void) = NoOp : -# 2039| v2039_9(void) = ReturnIndirection[#this] : &:r2039_6, ~m? -# 2039| v2039_10(void) = ReturnVoid : -# 2039| v2039_11(void) = AliasedUse : ~m? -# 2039| v2039_12(void) = ExitFunction : - -# 2041| void Base2::operator delete(void*) +# 2036| mu2036_6(unknown) = ^InitializeDynamicAllocation : &:r2036_4 +# 2036| r2036_7(int *) = Convert : r2036_4 +# 2036| mu2036_8(int *) = Store[x] : &:r2036_1, r2036_7 +# 2037| r2037_1(int) = Constant[6] : +# 2037| r2037_2(glval) = VariableAddress[x] : +# 2037| r2037_3(int *) = Load[x] : &:r2037_2, ~m? +# 2037| r2037_4(glval) = CopyValue : r2037_3 +# 2037| mu2037_5(int) = Store[?] : &:r2037_4, r2037_1 +# 2038| r2038_1(glval) = FunctionAddress[operator delete] : +# 2038| r2038_2(glval) = VariableAddress[x] : +# 2038| r2038_3(int *) = Load[x] : &:r2038_2, ~m? +# 2038| v2038_4(void) = Call[operator delete] : func:r2038_1, 0:r2038_3 +# 2038| mu2038_5(unknown) = ^CallSideEffect : ~m? +# 2039| v2039_1(void) = NoOp : +# 2035| v2035_4(void) = ReturnVoid : +# 2035| v2035_5(void) = AliasedUse : ~m? +# 2035| v2035_6(void) = ExitFunction : + +# 2041| void Base2::Base2() # 2041| Block 0 -# 2041| v2041_1(void) = EnterFunction : -# 2041| mu2041_2(unknown) = AliasedDefinition : -# 2041| mu2041_3(unknown) = InitializeNonLocal : -# 2041| r2041_4(glval) = VariableAddress[p] : -# 2041| mu2041_5(void *) = InitializeParameter[p] : &:r2041_4 -# 2041| r2041_6(void *) = Load[p] : &:r2041_4, ~m? -# 2041| mu2041_7(unknown) = InitializeIndirection[p] : &:r2041_6 -# 2042| v2042_1(void) = NoOp : -# 2041| v2041_8(void) = ReturnIndirection[p] : &:r2041_6, ~m? -# 2041| v2041_9(void) = ReturnVoid : -# 2041| v2041_10(void) = AliasedUse : ~m? -# 2041| v2041_11(void) = ExitFunction : - -# 2043| void Base2::~Base2() +# 2041| v2041_1(void) = EnterFunction : +# 2041| mu2041_2(unknown) = AliasedDefinition : +# 2041| mu2041_3(unknown) = InitializeNonLocal : +# 2041| r2041_4(glval) = VariableAddress[#this] : +# 2041| mu2041_5(glval) = InitializeParameter[#this] : &:r2041_4 +# 2041| r2041_6(glval) = Load[#this] : &:r2041_4, ~m? +# 2041| mu2041_7(Base2) = InitializeIndirection[#this] : &:r2041_6 +# 2041| v2041_8(void) = NoOp : +# 2041| v2041_9(void) = ReturnIndirection[#this] : &:r2041_6, ~m? +# 2041| v2041_10(void) = ReturnVoid : +# 2041| v2041_11(void) = AliasedUse : ~m? +# 2041| v2041_12(void) = ExitFunction : + +# 2043| void Base2::operator delete(void*) # 2043| Block 0 -# 2043| v2043_1(void) = EnterFunction : -# 2043| mu2043_2(unknown) = AliasedDefinition : -# 2043| mu2043_3(unknown) = InitializeNonLocal : -# 2043| r2043_4(glval) = VariableAddress[#this] : -# 2043| mu2043_5(glval) = InitializeParameter[#this] : &:r2043_4 -# 2043| r2043_6(glval) = Load[#this] : &:r2043_4, ~m? -# 2043| mu2043_7(Base2) = InitializeIndirection[#this] : &:r2043_6 -# 2043| v2043_8(void) = NoOp : -# 2043| v2043_9(void) = ReturnIndirection[#this] : &:r2043_6, ~m? -# 2043| v2043_10(void) = ReturnVoid : -# 2043| v2043_11(void) = AliasedUse : ~m? -# 2043| v2043_12(void) = ExitFunction : - -# 2046| void Derived2::Derived2() -# 2046| Block 0 -# 2046| v2046_1(void) = EnterFunction : -# 2046| mu2046_2(unknown) = AliasedDefinition : -# 2046| mu2046_3(unknown) = InitializeNonLocal : -# 2046| r2046_4(glval) = VariableAddress[#this] : -# 2046| mu2046_5(glval) = InitializeParameter[#this] : &:r2046_4 -# 2046| r2046_6(glval) = Load[#this] : &:r2046_4, ~m? -# 2046| mu2046_7(Derived2) = InitializeIndirection[#this] : &:r2046_6 -# 2046| r2046_8(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2046_5 -# 2046| r2046_9(glval) = FunctionAddress[Base2] : -# 2046| v2046_10(void) = Call[Base2] : func:r2046_9, this:r2046_8 -# 2046| mu2046_11(unknown) = ^CallSideEffect : ~m? -# 2046| mu2046_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2046_8 -# 2046| v2046_13(void) = NoOp : -# 2046| v2046_14(void) = ReturnIndirection[#this] : &:r2046_6, ~m? -# 2046| v2046_15(void) = ReturnVoid : -# 2046| v2046_16(void) = AliasedUse : ~m? -# 2046| v2046_17(void) = ExitFunction : - -# 2049| void Derived2::~Derived2() -# 2049| Block 0 -# 2049| v2049_1(void) = EnterFunction : -# 2049| mu2049_2(unknown) = AliasedDefinition : -# 2049| mu2049_3(unknown) = InitializeNonLocal : -# 2049| r2049_4(glval) = VariableAddress[#this] : -# 2049| mu2049_5(glval) = InitializeParameter[#this] : &:r2049_4 -# 2049| r2049_6(glval) = Load[#this] : &:r2049_4, ~m? -# 2049| mu2049_7(Derived2) = InitializeIndirection[#this] : &:r2049_6 -# 2049| v2049_8(void) = NoOp : -# 2049| r2049_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2049_5 -# 2049| r2049_10(glval) = FunctionAddress[~Base2] : -# 2049| v2049_11(void) = Call[~Base2] : func:r2049_10, this:r2049_9 -# 2049| mu2049_12(unknown) = ^CallSideEffect : ~m? -# 2049| v2049_13(void) = ReturnIndirection[#this] : &:r2049_6, ~m? -# 2049| v2049_14(void) = ReturnVoid : -# 2049| v2049_15(void) = AliasedUse : ~m? -# 2049| v2049_16(void) = ExitFunction : - -# 2051| void Derived2::operator delete(void*) +# 2043| v2043_1(void) = EnterFunction : +# 2043| mu2043_2(unknown) = AliasedDefinition : +# 2043| mu2043_3(unknown) = InitializeNonLocal : +# 2043| r2043_4(glval) = VariableAddress[p] : +# 2043| mu2043_5(void *) = InitializeParameter[p] : &:r2043_4 +# 2043| r2043_6(void *) = Load[p] : &:r2043_4, ~m? +# 2043| mu2043_7(unknown) = InitializeIndirection[p] : &:r2043_6 +# 2044| v2044_1(void) = NoOp : +# 2043| v2043_8(void) = ReturnIndirection[p] : &:r2043_6, ~m? +# 2043| v2043_9(void) = ReturnVoid : +# 2043| v2043_10(void) = AliasedUse : ~m? +# 2043| v2043_11(void) = ExitFunction : + +# 2045| void Base2::~Base2() +# 2045| Block 0 +# 2045| v2045_1(void) = EnterFunction : +# 2045| mu2045_2(unknown) = AliasedDefinition : +# 2045| mu2045_3(unknown) = InitializeNonLocal : +# 2045| r2045_4(glval) = VariableAddress[#this] : +# 2045| mu2045_5(glval) = InitializeParameter[#this] : &:r2045_4 +# 2045| r2045_6(glval) = Load[#this] : &:r2045_4, ~m? +# 2045| mu2045_7(Base2) = InitializeIndirection[#this] : &:r2045_6 +# 2045| v2045_8(void) = NoOp : +# 2045| v2045_9(void) = ReturnIndirection[#this] : &:r2045_6, ~m? +# 2045| v2045_10(void) = ReturnVoid : +# 2045| v2045_11(void) = AliasedUse : ~m? +# 2045| v2045_12(void) = ExitFunction : + +# 2048| void Derived2::Derived2() +# 2048| Block 0 +# 2048| v2048_1(void) = EnterFunction : +# 2048| mu2048_2(unknown) = AliasedDefinition : +# 2048| mu2048_3(unknown) = InitializeNonLocal : +# 2048| r2048_4(glval) = VariableAddress[#this] : +# 2048| mu2048_5(glval) = InitializeParameter[#this] : &:r2048_4 +# 2048| r2048_6(glval) = Load[#this] : &:r2048_4, ~m? +# 2048| mu2048_7(Derived2) = InitializeIndirection[#this] : &:r2048_6 +# 2048| r2048_8(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2048_5 +# 2048| r2048_9(glval) = FunctionAddress[Base2] : +# 2048| v2048_10(void) = Call[Base2] : func:r2048_9, this:r2048_8 +# 2048| mu2048_11(unknown) = ^CallSideEffect : ~m? +# 2048| mu2048_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2048_8 +# 2048| v2048_13(void) = NoOp : +# 2048| v2048_14(void) = ReturnIndirection[#this] : &:r2048_6, ~m? +# 2048| v2048_15(void) = ReturnVoid : +# 2048| v2048_16(void) = AliasedUse : ~m? +# 2048| v2048_17(void) = ExitFunction : + +# 2051| void Derived2::~Derived2() # 2051| Block 0 -# 2051| v2051_1(void) = EnterFunction : -# 2051| mu2051_2(unknown) = AliasedDefinition : -# 2051| mu2051_3(unknown) = InitializeNonLocal : -# 2051| r2051_4(glval) = VariableAddress[p] : -# 2051| mu2051_5(void *) = InitializeParameter[p] : &:r2051_4 -# 2051| r2051_6(void *) = Load[p] : &:r2051_4, ~m? -# 2051| mu2051_7(unknown) = InitializeIndirection[p] : &:r2051_6 -# 2052| v2052_1(void) = NoOp : -# 2051| v2051_8(void) = ReturnIndirection[p] : &:r2051_6, ~m? -# 2051| v2051_9(void) = ReturnVoid : -# 2051| v2051_10(void) = AliasedUse : ~m? -# 2051| v2051_11(void) = ExitFunction : - -# 2056| int virtual_delete() -# 2056| Block 0 -# 2056| v2056_1(void) = EnterFunction : -# 2056| mu2056_2(unknown) = AliasedDefinition : -# 2056| mu2056_3(unknown) = InitializeNonLocal : -# 2058| r2058_1(glval) = VariableAddress[b1] : -# 2058| r2058_2(glval) = FunctionAddress[operator new] : -# 2058| r2058_3(unsigned long) = Constant[8] : -# 2058| r2058_4(void *) = Call[operator new] : func:r2058_2, 0:r2058_3 -# 2058| mu2058_5(unknown) = ^CallSideEffect : ~m? -# 2058| mu2058_6(unknown) = ^InitializeDynamicAllocation : &:r2058_4 -# 2058| r2058_7(Base2 *) = Convert : r2058_4 -# 2058| r2058_8(glval) = FunctionAddress[Base2] : -# 2058| v2058_9(void) = Call[Base2] : func:r2058_8, this:r2058_7 -# 2058| mu2058_10(unknown) = ^CallSideEffect : ~m? -# 2058| mu2058_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2058_7 -# 2058| mu2058_12(Base2 *) = Store[b1] : &:r2058_1, r2058_7 -# 2059| r2059_1(glval) = VirtualDeleteFunctionAddress : -# 2059| r2059_2(glval) = VariableAddress[b1] : -# 2059| r2059_3(Base2 *) = Load[b1] : &:r2059_2, ~m? -# 2059| v2059_4(void) = Call[?] : func:r2059_1, 0:r2059_3 -# 2059| mu2059_5(unknown) = ^CallSideEffect : ~m? -# 2061| r2061_1(glval) = VariableAddress[b2] : -# 2061| r2061_2(glval) = FunctionAddress[operator new] : -# 2061| r2061_3(unsigned long) = Constant[16] : -# 2061| r2061_4(void *) = Call[operator new] : func:r2061_2, 0:r2061_3 +# 2051| v2051_1(void) = EnterFunction : +# 2051| mu2051_2(unknown) = AliasedDefinition : +# 2051| mu2051_3(unknown) = InitializeNonLocal : +# 2051| r2051_4(glval) = VariableAddress[#this] : +# 2051| mu2051_5(glval) = InitializeParameter[#this] : &:r2051_4 +# 2051| r2051_6(glval) = Load[#this] : &:r2051_4, ~m? +# 2051| mu2051_7(Derived2) = InitializeIndirection[#this] : &:r2051_6 +# 2051| v2051_8(void) = NoOp : +# 2051| r2051_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2051_5 +# 2051| r2051_10(glval) = FunctionAddress[~Base2] : +# 2051| v2051_11(void) = Call[~Base2] : func:r2051_10, this:r2051_9 +# 2051| mu2051_12(unknown) = ^CallSideEffect : ~m? +# 2051| v2051_13(void) = ReturnIndirection[#this] : &:r2051_6, ~m? +# 2051| v2051_14(void) = ReturnVoid : +# 2051| v2051_15(void) = AliasedUse : ~m? +# 2051| v2051_16(void) = ExitFunction : + +# 2053| void Derived2::operator delete(void*) +# 2053| Block 0 +# 2053| v2053_1(void) = EnterFunction : +# 2053| mu2053_2(unknown) = AliasedDefinition : +# 2053| mu2053_3(unknown) = InitializeNonLocal : +# 2053| r2053_4(glval) = VariableAddress[p] : +# 2053| mu2053_5(void *) = InitializeParameter[p] : &:r2053_4 +# 2053| r2053_6(void *) = Load[p] : &:r2053_4, ~m? +# 2053| mu2053_7(unknown) = InitializeIndirection[p] : &:r2053_6 +# 2054| v2054_1(void) = NoOp : +# 2053| v2053_8(void) = ReturnIndirection[p] : &:r2053_6, ~m? +# 2053| v2053_9(void) = ReturnVoid : +# 2053| v2053_10(void) = AliasedUse : ~m? +# 2053| v2053_11(void) = ExitFunction : + +# 2058| int virtual_delete() +# 2058| Block 0 +# 2058| v2058_1(void) = EnterFunction : +# 2058| mu2058_2(unknown) = AliasedDefinition : +# 2058| mu2058_3(unknown) = InitializeNonLocal : +# 2060| r2060_1(glval) = VariableAddress[b1] : +# 2060| r2060_2(glval) = FunctionAddress[operator new] : +# 2060| r2060_3(unsigned long) = Constant[8] : +# 2060| r2060_4(void *) = Call[operator new] : func:r2060_2, 0:r2060_3 +# 2060| mu2060_5(unknown) = ^CallSideEffect : ~m? +# 2060| mu2060_6(unknown) = ^InitializeDynamicAllocation : &:r2060_4 +# 2060| r2060_7(Base2 *) = Convert : r2060_4 +# 2060| r2060_8(glval) = FunctionAddress[Base2] : +# 2060| v2060_9(void) = Call[Base2] : func:r2060_8, this:r2060_7 +# 2060| mu2060_10(unknown) = ^CallSideEffect : ~m? +# 2060| mu2060_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2060_7 +# 2060| mu2060_12(Base2 *) = Store[b1] : &:r2060_1, r2060_7 +# 2061| r2061_1(glval) = VirtualDeleteFunctionAddress : +# 2061| r2061_2(glval) = VariableAddress[b1] : +# 2061| r2061_3(Base2 *) = Load[b1] : &:r2061_2, ~m? +# 2061| v2061_4(void) = Call[?] : func:r2061_1, 0:r2061_3 # 2061| mu2061_5(unknown) = ^CallSideEffect : ~m? -# 2061| mu2061_6(unknown) = ^InitializeDynamicAllocation : &:r2061_4 -# 2061| r2061_7(Derived2 *) = Convert : r2061_4 -# 2061| r2061_8(glval) = FunctionAddress[Derived2] : -# 2061| v2061_9(void) = Call[Derived2] : func:r2061_8, this:r2061_7 -# 2061| mu2061_10(unknown) = ^CallSideEffect : ~m? -# 2061| mu2061_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2061_7 -# 2061| r2061_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2061_7 -# 2061| mu2061_13(Base2 *) = Store[b2] : &:r2061_1, r2061_12 -# 2062| r2062_1(glval) = VirtualDeleteFunctionAddress : -# 2062| r2062_2(glval) = VariableAddress[b2] : -# 2062| r2062_3(Base2 *) = Load[b2] : &:r2062_2, ~m? -# 2062| v2062_4(void) = Call[?] : func:r2062_1, 0:r2062_3 -# 2062| mu2062_5(unknown) = ^CallSideEffect : ~m? -# 2064| r2064_1(glval) = VariableAddress[d] : -# 2064| r2064_2(glval) = FunctionAddress[operator new] : -# 2064| r2064_3(unsigned long) = Constant[16] : -# 2064| r2064_4(void *) = Call[operator new] : func:r2064_2, 0:r2064_3 +# 2063| r2063_1(glval) = VariableAddress[b2] : +# 2063| r2063_2(glval) = FunctionAddress[operator new] : +# 2063| r2063_3(unsigned long) = Constant[16] : +# 2063| r2063_4(void *) = Call[operator new] : func:r2063_2, 0:r2063_3 +# 2063| mu2063_5(unknown) = ^CallSideEffect : ~m? +# 2063| mu2063_6(unknown) = ^InitializeDynamicAllocation : &:r2063_4 +# 2063| r2063_7(Derived2 *) = Convert : r2063_4 +# 2063| r2063_8(glval) = FunctionAddress[Derived2] : +# 2063| v2063_9(void) = Call[Derived2] : func:r2063_8, this:r2063_7 +# 2063| mu2063_10(unknown) = ^CallSideEffect : ~m? +# 2063| mu2063_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2063_7 +# 2063| r2063_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2063_7 +# 2063| mu2063_13(Base2 *) = Store[b2] : &:r2063_1, r2063_12 +# 2064| r2064_1(glval) = VirtualDeleteFunctionAddress : +# 2064| r2064_2(glval) = VariableAddress[b2] : +# 2064| r2064_3(Base2 *) = Load[b2] : &:r2064_2, ~m? +# 2064| v2064_4(void) = Call[?] : func:r2064_1, 0:r2064_3 # 2064| mu2064_5(unknown) = ^CallSideEffect : ~m? -# 2064| mu2064_6(unknown) = ^InitializeDynamicAllocation : &:r2064_4 -# 2064| r2064_7(Derived2 *) = Convert : r2064_4 -# 2064| r2064_8(glval) = FunctionAddress[Derived2] : -# 2064| v2064_9(void) = Call[Derived2] : func:r2064_8, this:r2064_7 -# 2064| mu2064_10(unknown) = ^CallSideEffect : ~m? -# 2064| mu2064_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2064_7 -# 2064| mu2064_12(Derived2 *) = Store[d] : &:r2064_1, r2064_7 -# 2065| r2065_1(glval) = VirtualDeleteFunctionAddress : -# 2065| r2065_2(glval) = VariableAddress[d] : -# 2065| r2065_3(Derived2 *) = Load[d] : &:r2065_2, ~m? -# 2065| v2065_4(void) = Call[?] : func:r2065_1, 0:r2065_3 -# 2065| mu2065_5(unknown) = ^CallSideEffect : ~m? -# 2066| r2066_1(glval) = VariableAddress[#return] : -# 2066| mu2066_2(int) = Uninitialized[#return] : &:r2066_1 -# 2056| r2056_4(glval) = VariableAddress[#return] : -# 2056| v2056_5(void) = ReturnValue : &:r2056_4, ~m? -# 2056| v2056_6(void) = AliasedUse : ~m? -# 2056| v2056_7(void) = ExitFunction : - -# 2070| void test_constant_folding() -# 2070| Block 0 -# 2070| v2070_1(void) = EnterFunction : -# 2070| mu2070_2(unknown) = AliasedDefinition : -# 2070| mu2070_3(unknown) = InitializeNonLocal : -# 2071| r2071_1(glval) = VariableAddress[x] : -# 2071| r2071_2(int) = Constant[116] : -# 2071| mu2071_3(int) = Store[x] : &:r2071_1, r2071_2 -# 2072| r2072_1(glval) = FunctionAddress[test_constant_folding_use] : -# 2072| r2072_2(int) = Constant[116] : -# 2072| v2072_3(void) = Call[test_constant_folding_use] : func:r2072_1, 0:r2072_2 -# 2072| mu2072_4(unknown) = ^CallSideEffect : ~m? -# 2073| v2073_1(void) = NoOp : -# 2070| v2070_4(void) = ReturnVoid : -# 2070| v2070_5(void) = AliasedUse : ~m? -# 2070| v2070_6(void) = ExitFunction : - -# 2077| int NonExit() -# 2077| Block 0 -# 2077| v2077_1(void) = EnterFunction : -# 2077| mu2077_2(unknown) = AliasedDefinition : -# 2077| mu2077_3(unknown) = InitializeNonLocal : -# 2078| r2078_1(glval) = VariableAddress[x] : -# 2078| r2078_2(glval) = FunctionAddress[Add] : -# 2078| r2078_3(int) = Constant[3] : -# 2078| r2078_4(int) = Constant[4] : -# 2078| r2078_5(int) = Call[Add] : func:r2078_2, 0:r2078_3, 1:r2078_4 -# 2078| mu2078_6(unknown) = ^CallSideEffect : ~m? -# 2078| mu2078_7(int) = Store[x] : &:r2078_1, r2078_5 -# 2079| r2079_1(glval) = VariableAddress[x] : -# 2079| r2079_2(int) = Load[x] : &:r2079_1, ~m? -# 2079| r2079_3(int) = Constant[7] : -# 2079| r2079_4(bool) = CompareEQ : r2079_2, r2079_3 -# 2079| v2079_5(void) = ConditionalBranch : r2079_4 +# 2066| r2066_1(glval) = VariableAddress[d] : +# 2066| r2066_2(glval) = FunctionAddress[operator new] : +# 2066| r2066_3(unsigned long) = Constant[16] : +# 2066| r2066_4(void *) = Call[operator new] : func:r2066_2, 0:r2066_3 +# 2066| mu2066_5(unknown) = ^CallSideEffect : ~m? +# 2066| mu2066_6(unknown) = ^InitializeDynamicAllocation : &:r2066_4 +# 2066| r2066_7(Derived2 *) = Convert : r2066_4 +# 2066| r2066_8(glval) = FunctionAddress[Derived2] : +# 2066| v2066_9(void) = Call[Derived2] : func:r2066_8, this:r2066_7 +# 2066| mu2066_10(unknown) = ^CallSideEffect : ~m? +# 2066| mu2066_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2066_7 +# 2066| mu2066_12(Derived2 *) = Store[d] : &:r2066_1, r2066_7 +# 2067| r2067_1(glval) = VirtualDeleteFunctionAddress : +# 2067| r2067_2(glval) = VariableAddress[d] : +# 2067| r2067_3(Derived2 *) = Load[d] : &:r2067_2, ~m? +# 2067| v2067_4(void) = Call[?] : func:r2067_1, 0:r2067_3 +# 2067| mu2067_5(unknown) = ^CallSideEffect : ~m? +# 2068| r2068_1(glval) = VariableAddress[#return] : +# 2068| mu2068_2(int) = Uninitialized[#return] : &:r2068_1 +# 2058| r2058_4(glval) = VariableAddress[#return] : +# 2058| v2058_5(void) = ReturnValue : &:r2058_4, ~m? +# 2058| v2058_6(void) = AliasedUse : ~m? +# 2058| v2058_7(void) = ExitFunction : + +# 2072| void test_constant_folding() +# 2072| Block 0 +# 2072| v2072_1(void) = EnterFunction : +# 2072| mu2072_2(unknown) = AliasedDefinition : +# 2072| mu2072_3(unknown) = InitializeNonLocal : +# 2073| r2073_1(glval) = VariableAddress[x] : +# 2073| r2073_2(int) = Constant[116] : +# 2073| mu2073_3(int) = Store[x] : &:r2073_1, r2073_2 +# 2074| r2074_1(glval) = FunctionAddress[test_constant_folding_use] : +# 2074| r2074_2(int) = Constant[116] : +# 2074| v2074_3(void) = Call[test_constant_folding_use] : func:r2074_1, 0:r2074_2 +# 2074| mu2074_4(unknown) = ^CallSideEffect : ~m? +# 2075| v2075_1(void) = NoOp : +# 2072| v2072_4(void) = ReturnVoid : +# 2072| v2072_5(void) = AliasedUse : ~m? +# 2072| v2072_6(void) = ExitFunction : + +# 2079| int NonExit() +# 2079| Block 0 +# 2079| v2079_1(void) = EnterFunction : +# 2079| mu2079_2(unknown) = AliasedDefinition : +# 2079| mu2079_3(unknown) = InitializeNonLocal : +# 2080| r2080_1(glval) = VariableAddress[x] : +# 2080| r2080_2(glval) = FunctionAddress[Add] : +# 2080| r2080_3(int) = Constant[3] : +# 2080| r2080_4(int) = Constant[4] : +# 2080| r2080_5(int) = Call[Add] : func:r2080_2, 0:r2080_3, 1:r2080_4 +# 2080| mu2080_6(unknown) = ^CallSideEffect : ~m? +# 2080| mu2080_7(int) = Store[x] : &:r2080_1, r2080_5 +# 2081| r2081_1(glval) = VariableAddress[x] : +# 2081| r2081_2(int) = Load[x] : &:r2081_1, ~m? +# 2081| r2081_3(int) = Constant[7] : +# 2081| r2081_4(bool) = CompareEQ : r2081_2, r2081_3 +# 2081| v2081_5(void) = ConditionalBranch : r2081_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2080| Block 1 -# 2080| r2080_1(glval) = FunctionAddress[exit] : -# 2080| r2080_2(int) = Constant[3] : -# 2080| v2080_3(void) = Call[exit] : func:r2080_1, 0:r2080_2 -# 2080| mu2080_4(unknown) = ^CallSideEffect : ~m? -# 2077| v2077_4(void) = Unreached : - -# 2081| Block 2 -# 2081| r2081_1(glval) = FunctionAddress[VoidFunc] : -# 2081| v2081_2(void) = Call[VoidFunc] : func:r2081_1 -# 2081| mu2081_3(unknown) = ^CallSideEffect : ~m? -# 2082| r2082_1(glval) = VariableAddress[#return] : -# 2082| r2082_2(glval) = VariableAddress[x] : -# 2082| r2082_3(int) = Load[x] : &:r2082_2, ~m? -# 2082| mu2082_4(int) = Store[#return] : &:r2082_1, r2082_3 -# 2077| r2077_5(glval) = VariableAddress[#return] : -# 2077| v2077_6(void) = ReturnValue : &:r2077_5, ~m? -# 2077| v2077_7(void) = AliasedUse : ~m? -# 2077| v2077_8(void) = ExitFunction : - -# 2085| void CallsNonExit() -# 2085| Block 0 -# 2085| v2085_1(void) = EnterFunction : -# 2085| mu2085_2(unknown) = AliasedDefinition : -# 2085| mu2085_3(unknown) = InitializeNonLocal : -# 2086| r2086_1(glval) = FunctionAddress[VoidFunc] : -# 2086| v2086_2(void) = Call[VoidFunc] : func:r2086_1 -# 2086| mu2086_3(unknown) = ^CallSideEffect : ~m? -# 2087| r2087_1(glval) = FunctionAddress[exit] : -# 2087| r2087_2(int) = Constant[3] : -# 2087| v2087_3(void) = Call[exit] : func:r2087_1, 0:r2087_2 -# 2087| mu2087_4(unknown) = ^CallSideEffect : ~m? -# 2085| v2085_4(void) = Unreached : - -# 2088| Block 1 -# 2088| v2088_1(void) = NoOp : -# 2085| v2085_5(void) = ReturnVoid : -# 2085| v2085_6(void) = AliasedUse : ~m? -# 2085| v2085_7(void) = ExitFunction : - -# 2090| int TransNonExit() -# 2090| Block 0 -# 2090| v2090_1(void) = EnterFunction : -# 2090| mu2090_2(unknown) = AliasedDefinition : -# 2090| mu2090_3(unknown) = InitializeNonLocal : -# 2091| r2091_1(glval) = VariableAddress[x] : -# 2091| r2091_2(glval) = FunctionAddress[Add] : -# 2091| r2091_3(int) = Constant[3] : -# 2091| r2091_4(int) = Constant[4] : -# 2091| r2091_5(int) = Call[Add] : func:r2091_2, 0:r2091_3, 1:r2091_4 -# 2091| mu2091_6(unknown) = ^CallSideEffect : ~m? -# 2091| mu2091_7(int) = Store[x] : &:r2091_1, r2091_5 -# 2092| r2092_1(glval) = VariableAddress[x] : -# 2092| r2092_2(int) = Load[x] : &:r2092_1, ~m? -# 2092| r2092_3(int) = Constant[7] : -# 2092| r2092_4(bool) = CompareEQ : r2092_2, r2092_3 -# 2092| v2092_5(void) = ConditionalBranch : r2092_4 +# 2082| Block 1 +# 2082| r2082_1(glval) = FunctionAddress[exit] : +# 2082| r2082_2(int) = Constant[3] : +# 2082| v2082_3(void) = Call[exit] : func:r2082_1, 0:r2082_2 +# 2082| mu2082_4(unknown) = ^CallSideEffect : ~m? +# 2079| v2079_4(void) = Unreached : + +# 2083| Block 2 +# 2083| r2083_1(glval) = FunctionAddress[VoidFunc] : +# 2083| v2083_2(void) = Call[VoidFunc] : func:r2083_1 +# 2083| mu2083_3(unknown) = ^CallSideEffect : ~m? +# 2084| r2084_1(glval) = VariableAddress[#return] : +# 2084| r2084_2(glval) = VariableAddress[x] : +# 2084| r2084_3(int) = Load[x] : &:r2084_2, ~m? +# 2084| mu2084_4(int) = Store[#return] : &:r2084_1, r2084_3 +# 2079| r2079_5(glval) = VariableAddress[#return] : +# 2079| v2079_6(void) = ReturnValue : &:r2079_5, ~m? +# 2079| v2079_7(void) = AliasedUse : ~m? +# 2079| v2079_8(void) = ExitFunction : + +# 2087| void CallsNonExit() +# 2087| Block 0 +# 2087| v2087_1(void) = EnterFunction : +# 2087| mu2087_2(unknown) = AliasedDefinition : +# 2087| mu2087_3(unknown) = InitializeNonLocal : +# 2088| r2088_1(glval) = FunctionAddress[VoidFunc] : +# 2088| v2088_2(void) = Call[VoidFunc] : func:r2088_1 +# 2088| mu2088_3(unknown) = ^CallSideEffect : ~m? +# 2089| r2089_1(glval) = FunctionAddress[exit] : +# 2089| r2089_2(int) = Constant[3] : +# 2089| v2089_3(void) = Call[exit] : func:r2089_1, 0:r2089_2 +# 2089| mu2089_4(unknown) = ^CallSideEffect : ~m? +# 2087| v2087_4(void) = Unreached : + +# 2090| Block 1 +# 2090| v2090_1(void) = NoOp : +# 2087| v2087_5(void) = ReturnVoid : +# 2087| v2087_6(void) = AliasedUse : ~m? +# 2087| v2087_7(void) = ExitFunction : + +# 2092| int TransNonExit() +# 2092| Block 0 +# 2092| v2092_1(void) = EnterFunction : +# 2092| mu2092_2(unknown) = AliasedDefinition : +# 2092| mu2092_3(unknown) = InitializeNonLocal : +# 2093| r2093_1(glval) = VariableAddress[x] : +# 2093| r2093_2(glval) = FunctionAddress[Add] : +# 2093| r2093_3(int) = Constant[3] : +# 2093| r2093_4(int) = Constant[4] : +# 2093| r2093_5(int) = Call[Add] : func:r2093_2, 0:r2093_3, 1:r2093_4 +# 2093| mu2093_6(unknown) = ^CallSideEffect : ~m? +# 2093| mu2093_7(int) = Store[x] : &:r2093_1, r2093_5 +# 2094| r2094_1(glval) = VariableAddress[x] : +# 2094| r2094_2(int) = Load[x] : &:r2094_1, ~m? +# 2094| r2094_3(int) = Constant[7] : +# 2094| r2094_4(bool) = CompareEQ : r2094_2, r2094_3 +# 2094| v2094_5(void) = ConditionalBranch : r2094_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2093| Block 1 -# 2093| r2093_1(glval) = FunctionAddress[CallsNonExit] : -# 2093| v2093_2(void) = Call[CallsNonExit] : func:r2093_1 -# 2093| mu2093_3(unknown) = ^CallSideEffect : ~m? +# 2095| Block 1 +# 2095| r2095_1(glval) = FunctionAddress[CallsNonExit] : +# 2095| v2095_2(void) = Call[CallsNonExit] : func:r2095_1 +# 2095| mu2095_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 2 -# 2094| Block 2 -# 2094| r2094_1(glval) = FunctionAddress[VoidFunc] : -# 2094| v2094_2(void) = Call[VoidFunc] : func:r2094_1 -# 2094| mu2094_3(unknown) = ^CallSideEffect : ~m? -# 2095| r2095_1(glval) = VariableAddress[#return] : -# 2095| r2095_2(glval) = VariableAddress[x] : -# 2095| r2095_3(int) = Load[x] : &:r2095_2, ~m? -# 2095| mu2095_4(int) = Store[#return] : &:r2095_1, r2095_3 -# 2090| r2090_4(glval) = VariableAddress[#return] : -# 2090| v2090_5(void) = ReturnValue : &:r2090_4, ~m? -# 2090| v2090_6(void) = AliasedUse : ~m? -# 2090| v2090_7(void) = ExitFunction : - -# 2098| void newArrayCorrectType(size_t) -# 2098| Block 0 -# 2098| v2098_1(void) = EnterFunction : -# 2098| mu2098_2(unknown) = AliasedDefinition : -# 2098| mu2098_3(unknown) = InitializeNonLocal : -# 2098| r2098_4(glval) = VariableAddress[n] : -# 2098| mu2098_5(unsigned long) = InitializeParameter[n] : &:r2098_4 -# 2099| r2099_1(glval) = FunctionAddress[operator new[]] : -# 2099| r2099_2(glval) = VariableAddress[n] : -# 2099| r2099_3(unsigned long) = Load[n] : &:r2099_2, ~m? -# 2099| r2099_4(unsigned long) = Constant[4] : -# 2099| r2099_5(unsigned long) = Mul : r2099_3, r2099_4 -# 2099| r2099_6(void *) = Call[operator new[]] : func:r2099_1, 0:r2099_5 -# 2099| mu2099_7(unknown) = ^CallSideEffect : ~m? -# 2099| mu2099_8(unknown) = ^InitializeDynamicAllocation : &:r2099_6 -# 2099| r2099_9(int *) = Convert : r2099_6 -# 2100| r2100_1(glval) = FunctionAddress[operator new[]] : -# 2100| r2100_2(glval) = VariableAddress[n] : -# 2100| r2100_3(unsigned long) = Load[n] : &:r2100_2, ~m? -# 2100| r2100_4(unsigned long) = Constant[4] : -# 2100| r2100_5(unsigned long) = Mul : r2100_3, r2100_4 -# 2100| r2100_6(float) = Constant[1.0] : -# 2100| r2100_7(void *) = Call[operator new[]] : func:r2100_1, 0:r2100_5, 1:r2100_6 -# 2100| mu2100_8(unknown) = ^CallSideEffect : ~m? -# 2100| mu2100_9(unknown) = ^InitializeDynamicAllocation : &:r2100_7 -# 2100| r2100_10(int *) = Convert : r2100_7 +# 2096| Block 2 +# 2096| r2096_1(glval) = FunctionAddress[VoidFunc] : +# 2096| v2096_2(void) = Call[VoidFunc] : func:r2096_1 +# 2096| mu2096_3(unknown) = ^CallSideEffect : ~m? +# 2097| r2097_1(glval) = VariableAddress[#return] : +# 2097| r2097_2(glval) = VariableAddress[x] : +# 2097| r2097_3(int) = Load[x] : &:r2097_2, ~m? +# 2097| mu2097_4(int) = Store[#return] : &:r2097_1, r2097_3 +# 2092| r2092_4(glval) = VariableAddress[#return] : +# 2092| v2092_5(void) = ReturnValue : &:r2092_4, ~m? +# 2092| v2092_6(void) = AliasedUse : ~m? +# 2092| v2092_7(void) = ExitFunction : + +# 2100| void newArrayCorrectType(size_t) +# 2100| Block 0 +# 2100| v2100_1(void) = EnterFunction : +# 2100| mu2100_2(unknown) = AliasedDefinition : +# 2100| mu2100_3(unknown) = InitializeNonLocal : +# 2100| r2100_4(glval) = VariableAddress[n] : +# 2100| mu2100_5(unsigned long) = InitializeParameter[n] : &:r2100_4 # 2101| r2101_1(glval) = FunctionAddress[operator new[]] : # 2101| r2101_2(glval) = VariableAddress[n] : # 2101| r2101_3(unsigned long) = Load[n] : &:r2101_2, ~m? -# 2101| r2101_4(unsigned long) = Constant[8] : +# 2101| r2101_4(unsigned long) = Constant[4] : # 2101| r2101_5(unsigned long) = Mul : r2101_3, r2101_4 # 2101| r2101_6(void *) = Call[operator new[]] : func:r2101_1, 0:r2101_5 # 2101| mu2101_7(unknown) = ^CallSideEffect : ~m? # 2101| mu2101_8(unknown) = ^InitializeDynamicAllocation : &:r2101_6 -# 2101| r2101_9(String *) = Convert : r2101_6 +# 2101| r2101_9(int *) = Convert : r2101_6 # 2102| r2102_1(glval) = FunctionAddress[operator new[]] : # 2102| r2102_2(glval) = VariableAddress[n] : # 2102| r2102_3(unsigned long) = Load[n] : &:r2102_2, ~m? -# 2102| r2102_4(unsigned long) = Constant[256] : +# 2102| r2102_4(unsigned long) = Constant[4] : # 2102| r2102_5(unsigned long) = Mul : r2102_3, r2102_4 -# 2102| r2102_6(align_val_t) = Constant[128] : +# 2102| r2102_6(float) = Constant[1.0] : # 2102| r2102_7(void *) = Call[operator new[]] : func:r2102_1, 0:r2102_5, 1:r2102_6 # 2102| mu2102_8(unknown) = ^CallSideEffect : ~m? # 2102| mu2102_9(unknown) = ^InitializeDynamicAllocation : &:r2102_7 -# 2102| r2102_10(Overaligned *) = Convert : r2102_7 +# 2102| r2102_10(int *) = Convert : r2102_7 # 2103| r2103_1(glval) = FunctionAddress[operator new[]] : # 2103| r2103_2(glval) = VariableAddress[n] : # 2103| r2103_3(unsigned long) = Load[n] : &:r2103_2, ~m? -# 2103| r2103_4(unsigned long) = Constant[1] : +# 2103| r2103_4(unsigned long) = Constant[8] : # 2103| r2103_5(unsigned long) = Mul : r2103_3, r2103_4 # 2103| r2103_6(void *) = Call[operator new[]] : func:r2103_1, 0:r2103_5 # 2103| mu2103_7(unknown) = ^CallSideEffect : ~m? # 2103| mu2103_8(unknown) = ^InitializeDynamicAllocation : &:r2103_6 -# 2103| r2103_9(DefaultCtorWithDefaultParam *) = Convert : r2103_6 +# 2103| r2103_9(String *) = Convert : r2103_6 # 2104| r2104_1(glval) = FunctionAddress[operator new[]] : # 2104| r2104_2(glval) = VariableAddress[n] : # 2104| r2104_3(unsigned long) = Load[n] : &:r2104_2, ~m? -# 2104| r2104_4(unsigned long) = Constant[4] : +# 2104| r2104_4(unsigned long) = Constant[256] : # 2104| r2104_5(unsigned long) = Mul : r2104_3, r2104_4 -# 2104| r2104_6(void *) = Call[operator new[]] : func:r2104_1, 0:r2104_5 -# 2104| mu2104_7(unknown) = ^CallSideEffect : ~m? -# 2104| mu2104_8(unknown) = ^InitializeDynamicAllocation : &:r2104_6 -# 2104| r2104_9(int *) = Convert : r2104_6 -# 2105| v2105_1(void) = NoOp : -# 2098| v2098_6(void) = ReturnVoid : -# 2098| v2098_7(void) = AliasedUse : ~m? -# 2098| v2098_8(void) = ExitFunction : - -# 2109| char* test_strtod(char*) -# 2109| Block 0 -# 2109| v2109_1(void) = EnterFunction : -# 2109| mu2109_2(unknown) = AliasedDefinition : -# 2109| mu2109_3(unknown) = InitializeNonLocal : -# 2109| r2109_4(glval) = VariableAddress[s] : -# 2109| mu2109_5(char *) = InitializeParameter[s] : &:r2109_4 -# 2109| r2109_6(char *) = Load[s] : &:r2109_4, ~m? -# 2109| mu2109_7(unknown) = InitializeIndirection[s] : &:r2109_6 -# 2110| r2110_1(glval) = VariableAddress[end] : -# 2110| mu2110_2(char *) = Uninitialized[end] : &:r2110_1 -# 2111| r2111_1(glval) = VariableAddress[d] : -# 2111| r2111_2(glval) = FunctionAddress[strtod] : -# 2111| r2111_3(glval) = VariableAddress[s] : -# 2111| r2111_4(char *) = Load[s] : &:r2111_3, ~m? -# 2111| r2111_5(char *) = Convert : r2111_4 -# 2111| r2111_6(glval) = VariableAddress[end] : -# 2111| r2111_7(char **) = CopyValue : r2111_6 -# 2111| r2111_8(double) = Call[strtod] : func:r2111_2, 0:r2111_5, 1:r2111_7 -# 2111| v2111_9(void) = ^BufferReadSideEffect[0] : &:r2111_5, ~m? -# 2111| mu2111_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2111_7 -# 2111| mu2111_11(double) = Store[d] : &:r2111_1, r2111_8 -# 2112| r2112_1(glval) = VariableAddress[#return] : -# 2112| r2112_2(glval) = VariableAddress[end] : -# 2112| r2112_3(char *) = Load[end] : &:r2112_2, ~m? -# 2112| mu2112_4(char *) = Store[#return] : &:r2112_1, r2112_3 -# 2109| v2109_8(void) = ReturnIndirection[s] : &:r2109_6, ~m? -# 2109| r2109_9(glval) = VariableAddress[#return] : -# 2109| v2109_10(void) = ReturnValue : &:r2109_9, ~m? -# 2109| v2109_11(void) = AliasedUse : ~m? -# 2109| v2109_12(void) = ExitFunction : - -# 2119| void call_as_child_of_ConditionDeclExpr() -# 2119| Block 0 -# 2119| v2119_1(void) = EnterFunction : -# 2119| mu2119_2(unknown) = AliasedDefinition : -# 2119| mu2119_3(unknown) = InitializeNonLocal : -# 2120| r2120_1(glval) = VariableAddress[b] : -# 2120| r2120_2(HasOperatorBool) = Constant[0] : -# 2120| mu2120_3(HasOperatorBool) = Store[b] : &:r2120_1, r2120_2 -# 2120| r2120_4(glval) = VariableAddress[b] : -# 2120| r2120_5(glval) = FunctionAddress[operator bool] : -# 2120| r2120_6(bool) = Call[operator bool] : func:r2120_5, this:r2120_4 -# 2120| mu2120_7(unknown) = ^CallSideEffect : ~m? -# 2120| v2120_8(void) = ^IndirectReadSideEffect[-1] : &:r2120_4, ~m? -# 2120| mu2120_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2120_4 -# 2120| r2120_10(bool) = CopyValue : r2120_6 -# 2120| v2120_11(void) = ConditionalBranch : r2120_10 +# 2104| r2104_6(align_val_t) = Constant[128] : +# 2104| r2104_7(void *) = Call[operator new[]] : func:r2104_1, 0:r2104_5, 1:r2104_6 +# 2104| mu2104_8(unknown) = ^CallSideEffect : ~m? +# 2104| mu2104_9(unknown) = ^InitializeDynamicAllocation : &:r2104_7 +# 2104| r2104_10(Overaligned *) = Convert : r2104_7 +# 2105| r2105_1(glval) = FunctionAddress[operator new[]] : +# 2105| r2105_2(glval) = VariableAddress[n] : +# 2105| r2105_3(unsigned long) = Load[n] : &:r2105_2, ~m? +# 2105| r2105_4(unsigned long) = Constant[1] : +# 2105| r2105_5(unsigned long) = Mul : r2105_3, r2105_4 +# 2105| r2105_6(void *) = Call[operator new[]] : func:r2105_1, 0:r2105_5 +# 2105| mu2105_7(unknown) = ^CallSideEffect : ~m? +# 2105| mu2105_8(unknown) = ^InitializeDynamicAllocation : &:r2105_6 +# 2105| r2105_9(DefaultCtorWithDefaultParam *) = Convert : r2105_6 +# 2106| r2106_1(glval) = FunctionAddress[operator new[]] : +# 2106| r2106_2(glval) = VariableAddress[n] : +# 2106| r2106_3(unsigned long) = Load[n] : &:r2106_2, ~m? +# 2106| r2106_4(unsigned long) = Constant[4] : +# 2106| r2106_5(unsigned long) = Mul : r2106_3, r2106_4 +# 2106| r2106_6(void *) = Call[operator new[]] : func:r2106_1, 0:r2106_5 +# 2106| mu2106_7(unknown) = ^CallSideEffect : ~m? +# 2106| mu2106_8(unknown) = ^InitializeDynamicAllocation : &:r2106_6 +# 2106| r2106_9(int *) = Convert : r2106_6 +# 2107| v2107_1(void) = NoOp : +# 2100| v2100_6(void) = ReturnVoid : +# 2100| v2100_7(void) = AliasedUse : ~m? +# 2100| v2100_8(void) = ExitFunction : + +# 2111| char* test_strtod(char*) +# 2111| Block 0 +# 2111| v2111_1(void) = EnterFunction : +# 2111| mu2111_2(unknown) = AliasedDefinition : +# 2111| mu2111_3(unknown) = InitializeNonLocal : +# 2111| r2111_4(glval) = VariableAddress[s] : +# 2111| mu2111_5(char *) = InitializeParameter[s] : &:r2111_4 +# 2111| r2111_6(char *) = Load[s] : &:r2111_4, ~m? +# 2111| mu2111_7(unknown) = InitializeIndirection[s] : &:r2111_6 +# 2112| r2112_1(glval) = VariableAddress[end] : +# 2112| mu2112_2(char *) = Uninitialized[end] : &:r2112_1 +# 2113| r2113_1(glval) = VariableAddress[d] : +# 2113| r2113_2(glval) = FunctionAddress[strtod] : +# 2113| r2113_3(glval) = VariableAddress[s] : +# 2113| r2113_4(char *) = Load[s] : &:r2113_3, ~m? +# 2113| r2113_5(char *) = Convert : r2113_4 +# 2113| r2113_6(glval) = VariableAddress[end] : +# 2113| r2113_7(char **) = CopyValue : r2113_6 +# 2113| r2113_8(double) = Call[strtod] : func:r2113_2, 0:r2113_5, 1:r2113_7 +# 2113| v2113_9(void) = ^BufferReadSideEffect[0] : &:r2113_5, ~m? +# 2113| mu2113_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2113_7 +# 2113| mu2113_11(double) = Store[d] : &:r2113_1, r2113_8 +# 2114| r2114_1(glval) = VariableAddress[#return] : +# 2114| r2114_2(glval) = VariableAddress[end] : +# 2114| r2114_3(char *) = Load[end] : &:r2114_2, ~m? +# 2114| mu2114_4(char *) = Store[#return] : &:r2114_1, r2114_3 +# 2111| v2111_8(void) = ReturnIndirection[s] : &:r2111_6, ~m? +# 2111| r2111_9(glval) = VariableAddress[#return] : +# 2111| v2111_10(void) = ReturnValue : &:r2111_9, ~m? +# 2111| v2111_11(void) = AliasedUse : ~m? +# 2111| v2111_12(void) = ExitFunction : + +# 2121| void call_as_child_of_ConditionDeclExpr() +# 2121| Block 0 +# 2121| v2121_1(void) = EnterFunction : +# 2121| mu2121_2(unknown) = AliasedDefinition : +# 2121| mu2121_3(unknown) = InitializeNonLocal : +# 2122| r2122_1(glval) = VariableAddress[b] : +# 2122| r2122_2(HasOperatorBool) = Constant[0] : +# 2122| mu2122_3(HasOperatorBool) = Store[b] : &:r2122_1, r2122_2 +# 2122| r2122_4(glval) = VariableAddress[b] : +# 2122| r2122_5(glval) = FunctionAddress[operator bool] : +# 2122| r2122_6(bool) = Call[operator bool] : func:r2122_5, this:r2122_4 +# 2122| mu2122_7(unknown) = ^CallSideEffect : ~m? +# 2122| v2122_8(void) = ^IndirectReadSideEffect[-1] : &:r2122_4, ~m? +# 2122| mu2122_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2122_4 +# 2122| r2122_10(bool) = CopyValue : r2122_6 +# 2122| v2122_11(void) = ConditionalBranch : r2122_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 2120| Block 1 -# 2120| v2120_12(void) = NoOp : +# 2122| Block 1 +# 2122| v2122_12(void) = NoOp : #-----| Goto -> Block 2 -# 2121| Block 2 -# 2121| v2121_1(void) = NoOp : -# 2119| v2119_4(void) = ReturnVoid : -# 2119| v2119_5(void) = AliasedUse : ~m? -# 2119| v2119_6(void) = ExitFunction : +# 2123| Block 2 +# 2123| v2123_1(void) = NoOp : +# 2121| v2121_4(void) = ReturnVoid : +# 2121| v2121_5(void) = AliasedUse : ~m? +# 2121| v2121_6(void) = ExitFunction : + +# 2125| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2125| Block 0 +# 2125| v2125_1(void) = EnterFunction : +# 2125| mu2125_2(unknown) = AliasedDefinition : +# 2125| mu2125_3(unknown) = InitializeNonLocal : +# 2125| r2125_4(glval) = VariableAddress[#this] : +# 2125| mu2125_5(glval) = InitializeParameter[#this] : &:r2125_4 +# 2125| r2125_6(glval) = Load[#this] : &:r2125_4, ~m? +# 2125| mu2125_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2125_6 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| mu0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? +#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 2125| r2125_8(glval) = FieldAddress[x] : mu2125_5 +# 2125| r2125_9(glval) = VariableAddress[(unnamed parameter 0)] : +# 2125| r2125_10(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2125_9, ~m? +# 2125| r2125_11(glval) = CopyValue : r2125_10 +# 2125| r2125_12(glval) = FieldAddress[x] : r2125_11 +# 2125| r2125_13(char *) = Load[?] : &:r2125_12, ~m? +# 2125| mu2125_14(char *) = Store[?] : &:r2125_8, r2125_13 +# 2125| v2125_15(void) = NoOp : +# 2125| v2125_16(void) = ReturnIndirection[#this] : &:r2125_6, ~m? +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? +# 2125| v2125_17(void) = ReturnVoid : +# 2125| v2125_18(void) = AliasedUse : ~m? +# 2125| v2125_19(void) = ExitFunction : + +# 2128| void ClassWithDestructor::ClassWithDestructor() +# 2128| Block 0 +# 2128| v2128_1(void) = EnterFunction : +# 2128| mu2128_2(unknown) = AliasedDefinition : +# 2128| mu2128_3(unknown) = InitializeNonLocal : +# 2128| r2128_4(glval) = VariableAddress[#this] : +# 2128| mu2128_5(glval) = InitializeParameter[#this] : &:r2128_4 +# 2128| r2128_6(glval) = Load[#this] : &:r2128_4, ~m? +# 2128| mu2128_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2128_6 +# 2128| r2128_8(glval) = FunctionAddress[operator new] : +# 2128| r2128_9(unsigned long) = Constant[1] : +# 2128| r2128_10(void *) = Call[operator new] : func:r2128_8, 0:r2128_9 +# 2128| mu2128_11(unknown) = ^CallSideEffect : ~m? +# 2128| mu2128_12(unknown) = ^InitializeDynamicAllocation : &:r2128_10 +# 2128| r2128_13(char *) = Convert : r2128_10 +# 2128| r2128_14(glval) = VariableAddress[#this] : +# 2128| r2128_15(ClassWithDestructor *) = Load[#this] : &:r2128_14, ~m? +# 2128| r2128_16(glval) = FieldAddress[x] : r2128_15 +# 2128| mu2128_17(char *) = Store[?] : &:r2128_16, r2128_13 +# 2128| v2128_18(void) = NoOp : +# 2128| v2128_19(void) = ReturnIndirection[#this] : &:r2128_6, ~m? +# 2128| v2128_20(void) = ReturnVoid : +# 2128| v2128_21(void) = AliasedUse : ~m? +# 2128| v2128_22(void) = ExitFunction : + +# 2129| void ClassWithDestructor::~ClassWithDestructor() +# 2129| Block 0 +# 2129| v2129_1(void) = EnterFunction : +# 2129| mu2129_2(unknown) = AliasedDefinition : +# 2129| mu2129_3(unknown) = InitializeNonLocal : +# 2129| r2129_4(glval) = VariableAddress[#this] : +# 2129| mu2129_5(glval) = InitializeParameter[#this] : &:r2129_4 +# 2129| r2129_6(glval) = Load[#this] : &:r2129_4, ~m? +# 2129| mu2129_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2129_6 +# 2129| r2129_8(glval) = FunctionAddress[operator delete] : +# 2129| r2129_9(glval) = VariableAddress[#this] : +# 2129| r2129_10(ClassWithDestructor *) = Load[#this] : &:r2129_9, ~m? +# 2129| r2129_11(glval) = FieldAddress[x] : r2129_10 +# 2129| r2129_12(char *) = Load[?] : &:r2129_11, ~m? +# 2129| v2129_13(void) = Call[operator delete] : func:r2129_8, 0:r2129_12 +# 2129| mu2129_14(unknown) = ^CallSideEffect : ~m? +# 2129| v2129_15(void) = NoOp : +# 2129| v2129_16(void) = ReturnIndirection[#this] : &:r2129_6, ~m? +# 2129| v2129_17(void) = ReturnVoid : +# 2129| v2129_18(void) = AliasedUse : ~m? +# 2129| v2129_19(void) = ExitFunction : + +# 2131| void ClassWithDestructor::set_x(char) +# 2131| Block 0 +# 2131| v2131_1(void) = EnterFunction : +# 2131| mu2131_2(unknown) = AliasedDefinition : +# 2131| mu2131_3(unknown) = InitializeNonLocal : +# 2131| r2131_4(glval) = VariableAddress[#this] : +# 2131| mu2131_5(glval) = InitializeParameter[#this] : &:r2131_4 +# 2131| r2131_6(glval) = Load[#this] : &:r2131_4, ~m? +# 2131| mu2131_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2131_6 +# 2131| r2131_8(glval) = VariableAddress[y] : +# 2131| mu2131_9(char) = InitializeParameter[y] : &:r2131_8 +# 2131| r2131_10(glval) = VariableAddress[y] : +# 2131| r2131_11(char) = Load[y] : &:r2131_10, ~m? +# 2131| r2131_12(glval) = VariableAddress[#this] : +# 2131| r2131_13(ClassWithDestructor *) = Load[#this] : &:r2131_12, ~m? +# 2131| r2131_14(glval) = FieldAddress[x] : r2131_13 +# 2131| r2131_15(char *) = Load[?] : &:r2131_14, ~m? +# 2131| r2131_16(glval) = CopyValue : r2131_15 +# 2131| mu2131_17(char) = Store[?] : &:r2131_16, r2131_11 +# 2131| v2131_18(void) = NoOp : +# 2131| v2131_19(void) = ReturnIndirection[#this] : &:r2131_6, ~m? +# 2131| v2131_20(void) = ReturnVoid : +# 2131| v2131_21(void) = AliasedUse : ~m? +# 2131| v2131_22(void) = ExitFunction : + +# 2134| bool initialization_with_destructor_bool +# 2134| Block 0 +# 2134| v2134_1(void) = EnterFunction : +# 2134| mu2134_2(unknown) = AliasedDefinition : +# 2134| r2134_3(glval) = VariableAddress[initialization_with_destructor_bool] : +# 2134| r2134_4(bool) = Constant[1] : +# 2134| mu2134_5(bool) = Store[initialization_with_destructor_bool] : &:r2134_3, r2134_4 +# 2134| v2134_6(void) = ReturnVoid : +# 2134| v2134_7(void) = AliasedUse : ~m? +# 2134| v2134_8(void) = ExitFunction : + +# 2136| void initialization_with_destructor(bool, char) +# 2136| Block 0 +# 2136| v2136_1(void) = EnterFunction : +# 2136| mu2136_2(unknown) = AliasedDefinition : +# 2136| mu2136_3(unknown) = InitializeNonLocal : +# 2136| r2136_4(glval) = VariableAddress[b] : +# 2136| mu2136_5(bool) = InitializeParameter[b] : &:r2136_4 +# 2136| r2136_6(glval) = VariableAddress[c] : +# 2136| mu2136_7(char) = InitializeParameter[c] : &:r2136_6 +# 2137| r2137_1(glval) = VariableAddress[x] : +# 2137| mu2137_2(ClassWithDestructor) = Uninitialized[x] : &:r2137_1 +# 2137| r2137_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2137| v2137_4(void) = Call[ClassWithDestructor] : func:r2137_3, this:r2137_1 +# 2137| mu2137_5(unknown) = ^CallSideEffect : ~m? +# 2137| mu2137_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2137_1 +# 2137| r2137_7(glval) = VariableAddress[b] : +# 2137| r2137_8(bool) = Load[b] : &:r2137_7, ~m? +# 2137| v2137_9(void) = ConditionalBranch : r2137_8 +#-----| True -> Block 4 + +# 2140| Block 1 +# 2140| r2140_1(bool) = Constant[1] : + +# 2140| Block 2 +# 2140| r2140_2(glval) = VariableAddress[x] : +# 2140| mu2140_3(ClassWithDestructor) = Uninitialized[x] : &:r2140_2 +# 2140| r2140_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2140| v2140_5(void) = Call[ClassWithDestructor] : func:r2140_4, this:r2140_2 +# 2140| mu2140_6(unknown) = ^CallSideEffect : ~m? +# 2140| mu2140_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2140_2 + +# 2141| Block 3 +# 2141| r2141_1(glval) = VariableAddress[x] : +# 2141| r2141_2(glval) = FunctionAddress[set_x] : +# 2141| r2141_3(char) = Constant[97] : +# 2141| v2141_4(void) = Call[set_x] : func:r2141_2, this:r2141_1, 0:r2141_3 +# 2141| mu2141_5(unknown) = ^CallSideEffect : ~m? +# 2141| v2141_6(void) = ^IndirectReadSideEffect[-1] : &:r2141_1, ~m? +# 2141| mu2141_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2141_1 + +# 2138| Block 4 +# 2138| r2138_1(glval) = VariableAddress[x] : +# 2138| r2138_2(glval) = FunctionAddress[set_x] : +# 2138| r2138_3(char) = Constant[97] : +# 2138| v2138_4(void) = Call[set_x] : func:r2138_2, this:r2138_1, 0:r2138_3 +# 2138| mu2138_5(unknown) = ^CallSideEffect : ~m? +# 2138| v2138_6(void) = ^IndirectReadSideEffect[-1] : &:r2138_1, ~m? +# 2138| mu2138_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2138_1 + +# 2143| Block 5 +# 2143| r2143_1(glval) = VariableAddress[x] : +# 2143| mu2143_2(ClassWithDestructor) = Uninitialized[x] : &:r2143_1 +# 2143| r2143_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2143| v2143_4(void) = Call[ClassWithDestructor] : func:r2143_3, this:r2143_1 +# 2143| mu2143_5(unknown) = ^CallSideEffect : ~m? +# 2143| mu2143_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2143_1 +# 2143| r2143_7(glval) = VariableAddress[c] : +# 2143| r2143_8(char) = Load[c] : &:r2143_7, ~m? +# 2143| r2143_9(int) = Convert : r2143_8 +# 2143| v2143_10(void) = Switch : r2143_9 +#-----| Case[97] -> Block 6 +#-----| Default -> Block 7 + +# 2144| Block 6 +# 2144| v2144_1(void) = NoOp : +# 2145| r2145_1(glval) = VariableAddress[x] : +# 2145| r2145_2(glval) = FunctionAddress[set_x] : +# 2145| r2145_3(char) = Constant[97] : +# 2145| v2145_4(void) = Call[set_x] : func:r2145_2, this:r2145_1, 0:r2145_3 +# 2145| mu2145_5(unknown) = ^CallSideEffect : ~m? +# 2145| v2145_6(void) = ^IndirectReadSideEffect[-1] : &:r2145_1, ~m? +# 2145| mu2145_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2145_1 +# 2146| v2146_1(void) = NoOp : +#-----| Goto -> Block 8 + +# 2147| Block 7 +# 2147| v2147_1(void) = NoOp : +# 2148| r2148_1(glval) = VariableAddress[x] : +# 2148| r2148_2(glval) = FunctionAddress[set_x] : +# 2148| r2148_3(char) = Constant[98] : +# 2148| v2148_4(void) = Call[set_x] : func:r2148_2, this:r2148_1, 0:r2148_3 +# 2148| mu2148_5(unknown) = ^CallSideEffect : ~m? +# 2148| v2148_6(void) = ^IndirectReadSideEffect[-1] : &:r2148_1, ~m? +# 2148| mu2148_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2148_1 +# 2149| v2149_1(void) = NoOp : +#-----| Goto -> Block 8 + +# 2150| Block 8 +# 2150| v2150_1(void) = NoOp : +# 2152| r2152_1(glval) = VariableAddress[x] : +# 2152| mu2152_2(ClassWithDestructor) = Uninitialized[x] : &:r2152_1 +# 2152| r2152_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2152| v2152_4(void) = Call[ClassWithDestructor] : func:r2152_3, this:r2152_1 +# 2152| mu2152_5(unknown) = ^CallSideEffect : ~m? +# 2152| mu2152_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2152_1 +# 2153| r2153_1(glval &>) = VariableAddress[(__range)] : +# 2153| r2153_2(glval>) = VariableAddress : +# 2153| r2153_3(vector &) = CopyValue : r2153_2 +# 2153| mu2153_4(vector &) = Store[(__range)] : &:r2153_1, r2153_3 +# 2153| r2153_5(glval) = VariableAddress[(__begin)] : +# 2153| r2153_6(glval &>) = VariableAddress[(__range)] : +# 2153| r2153_7(vector &) = Load[(__range)] : &:r2153_6, ~m? +#-----| r0_1(glval>) = CopyValue : r2153_7 +#-----| r0_2(glval>) = Convert : r0_1 +# 2153| r2153_8(glval) = FunctionAddress[begin] : +# 2153| r2153_9(iterator) = Call[begin] : func:r2153_8, this:r0_2 +# 2153| mu2153_10(unknown) = ^CallSideEffect : ~m? +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? +# 2153| mu2153_11(iterator) = Store[(__begin)] : &:r2153_5, r2153_9 +# 2153| r2153_12(glval) = VariableAddress[(__end)] : +# 2153| r2153_13(glval &>) = VariableAddress[(__range)] : +# 2153| r2153_14(vector &) = Load[(__range)] : &:r2153_13, ~m? +#-----| r0_4(glval>) = CopyValue : r2153_14 +#-----| r0_5(glval>) = Convert : r0_4 +# 2153| r2153_15(glval) = FunctionAddress[end] : +# 2153| r2153_16(iterator) = Call[end] : func:r2153_15, this:r0_5 +# 2153| mu2153_17(unknown) = ^CallSideEffect : ~m? +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? +# 2153| mu2153_18(iterator) = Store[(__end)] : &:r2153_12, r2153_16 +#-----| Goto -> Block 9 + +# 2153| Block 9 +# 2153| r2153_19(glval) = VariableAddress[(__begin)] : +#-----| r0_7(glval) = Convert : r2153_19 +# 2153| r2153_20(glval) = FunctionAddress[operator!=] : +# 2153| r2153_21(glval) = VariableAddress[(__end)] : +# 2153| r2153_22(iterator) = Load[(__end)] : &:r2153_21, ~m? +# 2153| r2153_23(bool) = Call[operator!=] : func:r2153_20, this:r0_7, 0:r2153_22 +# 2153| mu2153_24(unknown) = ^CallSideEffect : ~m? +#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? +# 2153| v2153_25(void) = ConditionalBranch : r2153_23 +#-----| False -> Block 11 +#-----| True -> Block 10 + +# 2153| Block 10 +# 2153| r2153_26(glval) = VariableAddress[y] : +# 2153| r2153_27(glval) = VariableAddress[(__begin)] : +#-----| r0_9(glval) = Convert : r2153_27 +# 2153| r2153_28(glval) = FunctionAddress[operator*] : +# 2153| r2153_29(ClassWithDestructor &) = Call[operator*] : func:r2153_28, this:r0_9 +# 2153| mu2153_30(unknown) = ^CallSideEffect : ~m? +#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m? +# 2153| r2153_31(ClassWithDestructor) = Load[?] : &:r2153_29, ~m? +# 2153| mu2153_32(ClassWithDestructor) = Store[y] : &:r2153_26, r2153_31 +# 2154| r2154_1(glval) = VariableAddress[y] : +# 2154| r2154_2(glval) = FunctionAddress[set_x] : +# 2154| r2154_3(char) = Constant[97] : +# 2154| v2154_4(void) = Call[set_x] : func:r2154_2, this:r2154_1, 0:r2154_3 +# 2154| mu2154_5(unknown) = ^CallSideEffect : ~m? +# 2154| v2154_6(void) = ^IndirectReadSideEffect[-1] : &:r2154_1, ~m? +# 2154| mu2154_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2154_1 +# 2153| r2153_33(glval) = VariableAddress[(__begin)] : +# 2153| r2153_34(glval) = FunctionAddress[operator++] : +# 2153| r2153_35(iterator &) = Call[operator++] : func:r2153_34, this:r2153_33 +# 2153| mu2153_36(unknown) = ^CallSideEffect : ~m? +# 2153| v2153_37(void) = ^IndirectReadSideEffect[-1] : &:r2153_33, ~m? +# 2153| mu2153_38(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2153_33 +# 2153| r2153_39(glval) = CopyValue : r2153_35 +#-----| Goto (back edge) -> Block 9 + +# 2155| Block 11 +# 2155| v2155_1(void) = NoOp : +# 2136| v2136_8(void) = ReturnVoid : +# 2136| v2136_9(void) = AliasedUse : ~m? +# 2136| v2136_10(void) = ExitFunction : perf-regression.cpp: # 6| void Big::Big() diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected index b93c7d2649f8..bdc0ef3463e8 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:2138:9:2138:9 | IndirectMayWriteSideEffect: x | Instruction 'IndirectMayWriteSideEffect: x' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected index b93c7d2649f8..bdc0ef3463e8 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:2138:9:2138:9 | IndirectMayWriteSideEffect: x | Instruction 'IndirectMayWriteSideEffect: x' has no successors in function '$@'. | ir.cpp:2136:6:2136:35 | void initialization_with_destructor(bool, char) | void initialization_with_destructor(bool, char) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected index 2a8d7ad25bd5..0cbb9a11f671 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected @@ -5,11 +5,37 @@ uniqueNodeLocation missingLocation uniqueNodeToString | builtin.c:5:5:5:11 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:6:5:6:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:28:5:28:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:28:5:28:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:28:5:28:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:28:5:28:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:28:5:28:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:28:5:28:5 | (no string representation) | Node should have one toString but has 0. | +| cpp11.cpp:28:5:28:5 | (no string representation) | Node should have one toString but has 0. | | misc.c:227:7:227:28 | (no string representation) | Node should have one toString but has 0. | | static_init_templates.cpp:80:18:80:23 | (no string representation) | Node should have one toString but has 0. | | static_init_templates.cpp:80:18:80:23 | (no string representation) | Node should have one toString but has 0. | | static_init_templates.cpp:89:18:89:23 | (no string representation) | Node should have one toString but has 0. | | static_init_templates.cpp:89:18:89:23 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | +| stream_it.cpp:11:3:11:3 | (no string representation) | Node should have one toString but has 0. | parameterCallable localFlowIsLocal readStepIsLocal diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected index f30092f06265..b9ac7f0a2d53 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected @@ -1,16 +1,16 @@ edges -| test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:14:10:14:10 | a | -| test_free.cpp:30:10:30:10 | pointer to free output argument | test_free.cpp:31:27:31:27 | a | -| test_free.cpp:35:10:35:10 | pointer to free output argument | test_free.cpp:37:27:37:27 | a | -| test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | -| test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | -| test_free.cpp:50:27:50:27 | pointer to free output argument | test_free.cpp:51:10:51:10 | a | -| test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:72:14:72:14 | a | -| test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | -| test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | -| test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | -| test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | -| test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | +| test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:14:10:14:10 | a | provenance | | +| test_free.cpp:30:10:30:10 | pointer to free output argument | test_free.cpp:31:27:31:27 | a | provenance | | +| test_free.cpp:35:10:35:10 | pointer to free output argument | test_free.cpp:37:27:37:27 | a | provenance | | +| test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | provenance | | +| test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | provenance | | +| test_free.cpp:50:27:50:27 | pointer to free output argument | test_free.cpp:51:10:51:10 | a | provenance | | +| test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:72:14:72:14 | a | provenance | | +| test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | provenance | | +| test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | provenance | | +| test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | provenance | | +| test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | provenance | | +| test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | provenance | | nodes | test_free.cpp:11:10:11:10 | pointer to free output argument | semmle.label | pointer to free output argument | | test_free.cpp:14:10:14:10 | a | semmle.label | a | diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected index bf2ba1ad092b..ceed007f683a 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/UseAfterFree.expected @@ -1,27 +1,27 @@ edges -| test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:12:5:12:5 | a | -| test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:13:5:13:6 | * ... | -| test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:45:5:45:5 | a | -| test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:45:5:45:5 | a | -| test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:71:9:71:9 | a | -| test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:84:5:84:5 | a | -| test_free.cpp:90:10:90:10 | pointer to free output argument | test_free.cpp:91:5:91:5 | a | -| test_free.cpp:95:10:95:10 | pointer to free output argument | test_free.cpp:96:9:96:9 | a | -| test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:102:23:102:23 | a | -| test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:153:5:153:5 | a | -| test_free.cpp:233:14:233:15 | pointer to free output argument | test_free.cpp:236:9:236:10 | * ... | -| test_free.cpp:239:14:239:15 | pointer to free output argument | test_free.cpp:241:9:241:10 | * ... | -| test_free.cpp:245:10:245:11 | pointer to free output argument | test_free.cpp:246:9:246:10 | * ... | -| test_free.cpp:277:8:277:8 | *s [post update] [buf] | test_free.cpp:278:12:278:12 | *s [buf] | -| test_free.cpp:277:8:277:13 | pointer to free output argument | test_free.cpp:277:8:277:8 | *s [post update] [buf] | -| test_free.cpp:278:12:278:12 | *s [buf] | test_free.cpp:278:15:278:17 | buf | -| test_free.cpp:282:8:282:8 | *s [post update] [buf] | test_free.cpp:283:12:283:12 | *s [buf] | -| test_free.cpp:282:8:282:12 | pointer to free output argument | test_free.cpp:282:8:282:8 | *s [post update] [buf] | -| test_free.cpp:283:12:283:12 | *s [buf] | test_free.cpp:283:14:283:16 | buf | -| test_free.cpp:293:8:293:10 | pointer to free output argument | test_free.cpp:294:3:294:13 | ... = ... | -| test_free.cpp:294:3:294:3 | *s [post update] [buf] | test_free.cpp:295:12:295:12 | *s [buf] | -| test_free.cpp:294:3:294:13 | ... = ... | test_free.cpp:294:3:294:3 | *s [post update] [buf] | -| test_free.cpp:295:12:295:12 | *s [buf] | test_free.cpp:295:14:295:16 | buf | +| test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:12:5:12:5 | a | provenance | | +| test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:13:5:13:6 | * ... | provenance | | +| test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:45:5:45:5 | a | provenance | | +| test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:45:5:45:5 | a | provenance | | +| test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:71:9:71:9 | a | provenance | | +| test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:84:5:84:5 | a | provenance | | +| test_free.cpp:90:10:90:10 | pointer to free output argument | test_free.cpp:91:5:91:5 | a | provenance | | +| test_free.cpp:95:10:95:10 | pointer to free output argument | test_free.cpp:96:9:96:9 | a | provenance | | +| test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:102:23:102:23 | a | provenance | | +| test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:153:5:153:5 | a | provenance | | +| test_free.cpp:233:14:233:15 | pointer to free output argument | test_free.cpp:236:9:236:10 | * ... | provenance | | +| test_free.cpp:239:14:239:15 | pointer to free output argument | test_free.cpp:241:9:241:10 | * ... | provenance | | +| test_free.cpp:245:10:245:11 | pointer to free output argument | test_free.cpp:246:9:246:10 | * ... | provenance | | +| test_free.cpp:277:8:277:8 | *s [post update] [buf] | test_free.cpp:278:12:278:12 | *s [buf] | provenance | | +| test_free.cpp:277:8:277:13 | pointer to free output argument | test_free.cpp:277:8:277:8 | *s [post update] [buf] | provenance | | +| test_free.cpp:278:12:278:12 | *s [buf] | test_free.cpp:278:15:278:17 | buf | provenance | | +| test_free.cpp:282:8:282:8 | *s [post update] [buf] | test_free.cpp:283:12:283:12 | *s [buf] | provenance | | +| test_free.cpp:282:8:282:12 | pointer to free output argument | test_free.cpp:282:8:282:8 | *s [post update] [buf] | provenance | | +| test_free.cpp:283:12:283:12 | *s [buf] | test_free.cpp:283:14:283:16 | buf | provenance | | +| test_free.cpp:293:8:293:10 | pointer to free output argument | test_free.cpp:294:3:294:13 | ... = ... | provenance | | +| test_free.cpp:294:3:294:3 | *s [post update] [buf] | test_free.cpp:295:12:295:12 | *s [buf] | provenance | | +| test_free.cpp:294:3:294:13 | ... = ... | test_free.cpp:294:3:294:3 | *s [post update] [buf] | provenance | | +| test_free.cpp:295:12:295:12 | *s [buf] | test_free.cpp:295:14:295:16 | buf | provenance | | nodes | test_free.cpp:11:10:11:10 | pointer to free output argument | semmle.label | pointer to free output argument | | test_free.cpp:12:5:12:5 | a | semmle.label | a | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Conversion/CastArrayPointerArithmetic/CastArrayPointerArithmetic.expected b/cpp/ql/test/query-tests/Likely Bugs/Conversion/CastArrayPointerArithmetic/CastArrayPointerArithmetic.expected index c65f76cec0f0..3f66b2c20b30 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Conversion/CastArrayPointerArithmetic/CastArrayPointerArithmetic.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Conversion/CastArrayPointerArithmetic/CastArrayPointerArithmetic.expected @@ -1,25 +1,25 @@ edges -| test.cpp:26:29:26:29 | b | test.cpp:27:2:27:2 | b | -| test.cpp:30:34:30:34 | b | test.cpp:31:2:31:2 | b | -| test.cpp:34:31:34:31 | b | test.cpp:35:2:35:2 | b | -| test.cpp:57:19:57:19 | d | test.cpp:26:29:26:29 | b | -| test.cpp:57:19:57:19 | d | test.cpp:58:25:58:25 | d | -| test.cpp:57:19:57:19 | d | test.cpp:59:21:59:21 | d | -| test.cpp:58:25:58:25 | d | test.cpp:30:34:30:34 | b | -| test.cpp:58:25:58:25 | d | test.cpp:59:21:59:21 | d | -| test.cpp:59:21:59:21 | d | test.cpp:34:31:34:31 | b | -| test.cpp:74:19:74:21 | dss | test.cpp:26:29:26:29 | b | -| test.cpp:74:19:74:21 | dss | test.cpp:75:25:75:27 | dss | -| test.cpp:74:19:74:21 | dss | test.cpp:76:21:76:23 | dss | -| test.cpp:75:25:75:27 | dss | test.cpp:30:34:30:34 | b | -| test.cpp:75:25:75:27 | dss | test.cpp:76:21:76:23 | dss | -| test.cpp:76:21:76:23 | dss | test.cpp:34:31:34:31 | b | -| test.cpp:86:19:86:20 | d2 | test.cpp:26:29:26:29 | b | -| test.cpp:86:19:86:20 | d2 | test.cpp:87:25:87:26 | d2 | -| test.cpp:86:19:86:20 | d2 | test.cpp:88:21:88:22 | d2 | -| test.cpp:87:25:87:26 | d2 | test.cpp:30:34:30:34 | b | -| test.cpp:87:25:87:26 | d2 | test.cpp:88:21:88:22 | d2 | -| test.cpp:88:21:88:22 | d2 | test.cpp:34:31:34:31 | b | +| test.cpp:26:29:26:29 | b | test.cpp:27:2:27:2 | b | provenance | | +| test.cpp:30:34:30:34 | b | test.cpp:31:2:31:2 | b | provenance | | +| test.cpp:34:31:34:31 | b | test.cpp:35:2:35:2 | b | provenance | | +| test.cpp:57:19:57:19 | d | test.cpp:26:29:26:29 | b | provenance | | +| test.cpp:57:19:57:19 | d | test.cpp:58:25:58:25 | d | provenance | | +| test.cpp:57:19:57:19 | d | test.cpp:59:21:59:21 | d | provenance | | +| test.cpp:58:25:58:25 | d | test.cpp:30:34:30:34 | b | provenance | | +| test.cpp:58:25:58:25 | d | test.cpp:59:21:59:21 | d | provenance | | +| test.cpp:59:21:59:21 | d | test.cpp:34:31:34:31 | b | provenance | | +| test.cpp:74:19:74:21 | dss | test.cpp:26:29:26:29 | b | provenance | | +| test.cpp:74:19:74:21 | dss | test.cpp:75:25:75:27 | dss | provenance | | +| test.cpp:74:19:74:21 | dss | test.cpp:76:21:76:23 | dss | provenance | | +| test.cpp:75:25:75:27 | dss | test.cpp:30:34:30:34 | b | provenance | | +| test.cpp:75:25:75:27 | dss | test.cpp:76:21:76:23 | dss | provenance | | +| test.cpp:76:21:76:23 | dss | test.cpp:34:31:34:31 | b | provenance | | +| test.cpp:86:19:86:20 | d2 | test.cpp:26:29:26:29 | b | provenance | | +| test.cpp:86:19:86:20 | d2 | test.cpp:87:25:87:26 | d2 | provenance | | +| test.cpp:86:19:86:20 | d2 | test.cpp:88:21:88:22 | d2 | provenance | | +| test.cpp:87:25:87:26 | d2 | test.cpp:30:34:30:34 | b | provenance | | +| test.cpp:87:25:87:26 | d2 | test.cpp:88:21:88:22 | d2 | provenance | | +| test.cpp:88:21:88:22 | d2 | test.cpp:34:31:34:31 | b | provenance | | nodes | test.cpp:26:29:26:29 | b | semmle.label | b | | test.cpp:27:2:27:2 | b | semmle.label | b | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-022/SAMATE/TaintedPath/TaintedPath.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-022/SAMATE/TaintedPath/TaintedPath.expected index 5cc2f9cf5077..dc8bb31748a8 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-022/SAMATE/TaintedPath/TaintedPath.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-022/SAMATE/TaintedPath/TaintedPath.expected @@ -1,5 +1,5 @@ edges -| CWE23_Relative_Path_Traversal__char_console_fopen_11.cpp:55:27:55:38 | fgets output argument | CWE23_Relative_Path_Traversal__char_console_fopen_11.cpp:77:23:77:26 | *data | +| CWE23_Relative_Path_Traversal__char_console_fopen_11.cpp:55:27:55:38 | fgets output argument | CWE23_Relative_Path_Traversal__char_console_fopen_11.cpp:77:23:77:26 | *data | provenance | | nodes | CWE23_Relative_Path_Traversal__char_console_fopen_11.cpp:55:27:55:38 | fgets output argument | semmle.label | fgets output argument | | CWE23_Relative_Path_Traversal__char_console_fopen_11.cpp:77:23:77:26 | *data | semmle.label | *data | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-022/semmle/tests/TaintedPath.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-022/semmle/tests/TaintedPath.expected index dd587dd64ede..3b34718d9543 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-022/semmle/tests/TaintedPath.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-022/semmle/tests/TaintedPath.expected @@ -1,9 +1,9 @@ edges -| test.c:8:27:8:30 | **argv | test.c:17:11:17:18 | *fileName | -| test.c:8:27:8:30 | **argv | test.c:32:11:32:18 | *fileName | -| test.c:8:27:8:30 | **argv | test.c:57:10:57:16 | *access to array | -| test.c:37:17:37:24 | scanf output argument | test.c:38:11:38:18 | *fileName | -| test.c:43:17:43:24 | scanf output argument | test.c:44:11:44:18 | *fileName | +| test.c:8:27:8:30 | **argv | test.c:17:11:17:18 | *fileName | provenance | | +| test.c:8:27:8:30 | **argv | test.c:32:11:32:18 | *fileName | provenance | | +| test.c:8:27:8:30 | **argv | test.c:57:10:57:16 | *access to array | provenance | | +| test.c:37:17:37:24 | scanf output argument | test.c:38:11:38:18 | *fileName | provenance | | +| test.c:43:17:43:24 | scanf output argument | test.c:44:11:44:18 | *fileName | provenance | | nodes | test.c:8:27:8:30 | **argv | semmle.label | **argv | | test.c:17:11:17:18 | *fileName | semmle.label | *fileName | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-078/SAMATE/ExecTainted/ExecTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-078/SAMATE/ExecTainted/ExecTainted.expected index 4c6c158fb7a0..8833a015609e 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-078/SAMATE/ExecTainted/ExecTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-078/SAMATE/ExecTainted/ExecTainted.expected @@ -1,9 +1,9 @@ edges -| tests.cpp:26:15:26:23 | **badSource | tests.cpp:51:12:51:20 | *call to badSource | -| tests.cpp:33:34:33:39 | *call to getenv | tests.cpp:38:39:38:49 | *environment | -| tests.cpp:38:25:38:36 | strncat output argument | tests.cpp:26:15:26:23 | **badSource | -| tests.cpp:38:39:38:49 | *environment | tests.cpp:38:25:38:36 | strncat output argument | -| tests.cpp:51:12:51:20 | *call to badSource | tests.cpp:53:16:53:19 | *data | +| tests.cpp:26:15:26:23 | **badSource | tests.cpp:51:12:51:20 | *call to badSource | provenance | | +| tests.cpp:33:34:33:39 | *call to getenv | tests.cpp:38:39:38:49 | *environment | provenance | | +| tests.cpp:38:25:38:36 | strncat output argument | tests.cpp:26:15:26:23 | **badSource | provenance | | +| tests.cpp:38:39:38:49 | *environment | tests.cpp:38:25:38:36 | strncat output argument | provenance | | +| tests.cpp:51:12:51:20 | *call to badSource | tests.cpp:53:16:53:19 | *data | provenance | | nodes | tests.cpp:26:15:26:23 | **badSource | semmle.label | **badSource | | tests.cpp:33:34:33:39 | *call to getenv | semmle.label | *call to getenv | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-078/semmle/ExecTainted/ExecTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-078/semmle/ExecTainted/ExecTainted.expected index 0b53a53adf69..d50edce5f2fa 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-078/semmle/ExecTainted/ExecTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-078/semmle/ExecTainted/ExecTainted.expected @@ -1,70 +1,70 @@ edges -| test.cpp:15:27:15:30 | **argv | test.cpp:22:45:22:52 | *userName | -| test.cpp:22:13:22:20 | sprintf output argument | test.cpp:23:12:23:19 | *command1 | -| test.cpp:22:45:22:52 | *userName | test.cpp:22:13:22:20 | sprintf output argument | -| test.cpp:47:21:47:26 | *call to getenv | test.cpp:50:35:50:43 | *envCflags | -| test.cpp:50:11:50:17 | sprintf output argument | test.cpp:51:10:51:16 | *command | -| test.cpp:50:35:50:43 | *envCflags | test.cpp:50:11:50:17 | sprintf output argument | -| test.cpp:62:9:62:16 | fread output argument | test.cpp:64:20:64:27 | *filename | -| test.cpp:64:11:64:17 | strncat output argument | test.cpp:65:10:65:16 | *command | -| test.cpp:64:20:64:27 | *filename | test.cpp:64:11:64:17 | strncat output argument | -| test.cpp:82:9:82:16 | fread output argument | test.cpp:84:20:84:27 | *filename | -| test.cpp:84:11:84:17 | strncat output argument | test.cpp:85:32:85:38 | *command | -| test.cpp:84:20:84:27 | *filename | test.cpp:84:11:84:17 | strncat output argument | -| test.cpp:91:9:91:16 | fread output argument | test.cpp:93:17:93:24 | *filename | -| test.cpp:93:11:93:14 | strncat output argument | test.cpp:94:45:94:48 | *path | -| test.cpp:93:17:93:24 | *filename | test.cpp:93:11:93:14 | strncat output argument | -| test.cpp:106:20:106:38 | *call to getenv | test.cpp:107:33:107:36 | *path | -| test.cpp:107:31:107:31 | call to operator+ | test.cpp:108:18:108:22 | *call to c_str | -| test.cpp:107:33:107:36 | *path | test.cpp:107:31:107:31 | call to operator+ | -| test.cpp:113:20:113:38 | *call to getenv | test.cpp:114:19:114:22 | *path | -| test.cpp:114:10:114:23 | call to operator+ | test.cpp:114:25:114:29 | *call to c_str | -| test.cpp:114:10:114:23 | call to operator+ | test.cpp:114:25:114:29 | *call to c_str | -| test.cpp:114:17:114:17 | call to operator+ | test.cpp:114:10:114:23 | call to operator+ | -| test.cpp:114:19:114:22 | *path | test.cpp:114:10:114:23 | call to operator+ | -| test.cpp:114:19:114:22 | *path | test.cpp:114:17:114:17 | call to operator+ | -| test.cpp:119:20:119:38 | *call to getenv | test.cpp:120:19:120:22 | *path | -| test.cpp:120:17:120:17 | call to operator+ | test.cpp:120:10:120:30 | *call to data | -| test.cpp:120:19:120:22 | *path | test.cpp:120:17:120:17 | call to operator+ | -| test.cpp:140:9:140:11 | fread output argument | test.cpp:142:31:142:33 | *str | -| test.cpp:142:11:142:17 | sprintf output argument | test.cpp:143:10:143:16 | *command | -| test.cpp:142:31:142:33 | *str | test.cpp:142:11:142:17 | sprintf output argument | -| test.cpp:174:9:174:16 | fread output argument | test.cpp:177:20:177:27 | *filename | -| test.cpp:174:9:174:16 | fread output argument | test.cpp:180:22:180:29 | *filename | -| test.cpp:177:13:177:17 | strncat output argument | test.cpp:178:22:178:26 | *flags | -| test.cpp:177:13:177:17 | strncat output argument | test.cpp:178:22:178:26 | *flags | -| test.cpp:177:20:177:27 | *filename | test.cpp:177:13:177:17 | strncat output argument | -| test.cpp:177:20:177:27 | *filename | test.cpp:177:13:177:17 | strncat output argument | -| test.cpp:178:13:178:19 | strncat output argument | test.cpp:183:32:183:38 | *command | -| test.cpp:178:13:178:19 | strncat output argument | test.cpp:183:32:183:38 | *command | -| test.cpp:178:22:178:26 | *flags | test.cpp:178:13:178:19 | strncat output argument | -| test.cpp:178:22:178:26 | *flags | test.cpp:178:13:178:19 | strncat output argument | -| test.cpp:180:13:180:19 | strncat output argument | test.cpp:183:32:183:38 | *command | -| test.cpp:180:22:180:29 | *filename | test.cpp:180:13:180:19 | strncat output argument | -| test.cpp:186:47:186:54 | *filename | test.cpp:187:18:187:25 | *filename | -| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | *flags | -| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | *flags | -| test.cpp:187:18:187:25 | *filename | test.cpp:187:11:187:15 | strncat output argument | -| test.cpp:187:18:187:25 | *filename | test.cpp:187:11:187:15 | strncat output argument | -| test.cpp:188:20:188:24 | *flags | test.cpp:188:11:188:17 | strncat output argument | -| test.cpp:188:20:188:24 | *flags | test.cpp:188:11:188:17 | strncat output argument | -| test.cpp:194:9:194:16 | fread output argument | test.cpp:196:26:196:33 | *filename | -| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | *command | -| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | *command | -| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | -| test.cpp:196:26:196:33 | *filename | test.cpp:196:10:196:16 | concat output argument | -| test.cpp:196:26:196:33 | *filename | test.cpp:196:10:196:16 | concat output argument | -| test.cpp:218:9:218:16 | fread output argument | test.cpp:220:19:220:26 | *filename | -| test.cpp:220:10:220:16 | strncat output argument | test.cpp:220:10:220:16 | strncat output argument | -| test.cpp:220:10:220:16 | strncat output argument | test.cpp:220:10:220:16 | strncat output argument | -| test.cpp:220:10:220:16 | strncat output argument | test.cpp:220:10:220:16 | strncat output argument | -| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | -| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | -| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | -| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | -| test.cpp:220:19:220:26 | *filename | test.cpp:220:10:220:16 | strncat output argument | -| test.cpp:220:19:220:26 | *filename | test.cpp:220:10:220:16 | strncat output argument | -| test.cpp:220:19:220:26 | *filename | test.cpp:220:19:220:26 | *filename | +| test.cpp:15:27:15:30 | **argv | test.cpp:22:45:22:52 | *userName | provenance | | +| test.cpp:22:13:22:20 | sprintf output argument | test.cpp:23:12:23:19 | *command1 | provenance | | +| test.cpp:22:45:22:52 | *userName | test.cpp:22:13:22:20 | sprintf output argument | provenance | | +| test.cpp:47:21:47:26 | *call to getenv | test.cpp:50:35:50:43 | *envCflags | provenance | | +| test.cpp:50:11:50:17 | sprintf output argument | test.cpp:51:10:51:16 | *command | provenance | | +| test.cpp:50:35:50:43 | *envCflags | test.cpp:50:11:50:17 | sprintf output argument | provenance | | +| test.cpp:62:9:62:16 | fread output argument | test.cpp:64:20:64:27 | *filename | provenance | | +| test.cpp:64:11:64:17 | strncat output argument | test.cpp:65:10:65:16 | *command | provenance | | +| test.cpp:64:20:64:27 | *filename | test.cpp:64:11:64:17 | strncat output argument | provenance | | +| test.cpp:82:9:82:16 | fread output argument | test.cpp:84:20:84:27 | *filename | provenance | | +| test.cpp:84:11:84:17 | strncat output argument | test.cpp:85:32:85:38 | *command | provenance | | +| test.cpp:84:20:84:27 | *filename | test.cpp:84:11:84:17 | strncat output argument | provenance | | +| test.cpp:91:9:91:16 | fread output argument | test.cpp:93:17:93:24 | *filename | provenance | | +| test.cpp:93:11:93:14 | strncat output argument | test.cpp:94:45:94:48 | *path | provenance | | +| test.cpp:93:17:93:24 | *filename | test.cpp:93:11:93:14 | strncat output argument | provenance | | +| test.cpp:106:20:106:38 | *call to getenv | test.cpp:107:33:107:36 | *path | provenance | | +| test.cpp:107:31:107:31 | call to operator+ | test.cpp:108:18:108:22 | *call to c_str | provenance | | +| test.cpp:107:33:107:36 | *path | test.cpp:107:31:107:31 | call to operator+ | provenance | | +| test.cpp:113:20:113:38 | *call to getenv | test.cpp:114:19:114:22 | *path | provenance | | +| test.cpp:114:10:114:23 | call to operator+ | test.cpp:114:25:114:29 | *call to c_str | provenance | | +| test.cpp:114:10:114:23 | call to operator+ | test.cpp:114:25:114:29 | *call to c_str | provenance | | +| test.cpp:114:17:114:17 | call to operator+ | test.cpp:114:10:114:23 | call to operator+ | provenance | | +| test.cpp:114:19:114:22 | *path | test.cpp:114:10:114:23 | call to operator+ | provenance | | +| test.cpp:114:19:114:22 | *path | test.cpp:114:17:114:17 | call to operator+ | provenance | | +| test.cpp:119:20:119:38 | *call to getenv | test.cpp:120:19:120:22 | *path | provenance | | +| test.cpp:120:17:120:17 | call to operator+ | test.cpp:120:10:120:30 | *call to data | provenance | | +| test.cpp:120:19:120:22 | *path | test.cpp:120:17:120:17 | call to operator+ | provenance | | +| test.cpp:140:9:140:11 | fread output argument | test.cpp:142:31:142:33 | *str | provenance | | +| test.cpp:142:11:142:17 | sprintf output argument | test.cpp:143:10:143:16 | *command | provenance | | +| test.cpp:142:31:142:33 | *str | test.cpp:142:11:142:17 | sprintf output argument | provenance | | +| test.cpp:174:9:174:16 | fread output argument | test.cpp:177:20:177:27 | *filename | provenance | | +| test.cpp:174:9:174:16 | fread output argument | test.cpp:180:22:180:29 | *filename | provenance | | +| test.cpp:177:13:177:17 | strncat output argument | test.cpp:178:22:178:26 | *flags | provenance | | +| test.cpp:177:13:177:17 | strncat output argument | test.cpp:178:22:178:26 | *flags | provenance | | +| test.cpp:177:20:177:27 | *filename | test.cpp:177:13:177:17 | strncat output argument | provenance | | +| test.cpp:177:20:177:27 | *filename | test.cpp:177:13:177:17 | strncat output argument | provenance | | +| test.cpp:178:13:178:19 | strncat output argument | test.cpp:183:32:183:38 | *command | provenance | | +| test.cpp:178:13:178:19 | strncat output argument | test.cpp:183:32:183:38 | *command | provenance | | +| test.cpp:178:22:178:26 | *flags | test.cpp:178:13:178:19 | strncat output argument | provenance | | +| test.cpp:178:22:178:26 | *flags | test.cpp:178:13:178:19 | strncat output argument | provenance | | +| test.cpp:180:13:180:19 | strncat output argument | test.cpp:183:32:183:38 | *command | provenance | | +| test.cpp:180:22:180:29 | *filename | test.cpp:180:13:180:19 | strncat output argument | provenance | | +| test.cpp:186:47:186:54 | *filename | test.cpp:187:18:187:25 | *filename | provenance | | +| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | *flags | provenance | | +| test.cpp:187:11:187:15 | strncat output argument | test.cpp:188:20:188:24 | *flags | provenance | | +| test.cpp:187:18:187:25 | *filename | test.cpp:187:11:187:15 | strncat output argument | provenance | | +| test.cpp:187:18:187:25 | *filename | test.cpp:187:11:187:15 | strncat output argument | provenance | | +| test.cpp:188:20:188:24 | *flags | test.cpp:188:11:188:17 | strncat output argument | provenance | | +| test.cpp:188:20:188:24 | *flags | test.cpp:188:11:188:17 | strncat output argument | provenance | | +| test.cpp:194:9:194:16 | fread output argument | test.cpp:196:26:196:33 | *filename | provenance | | +| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | *command | provenance | | +| test.cpp:196:10:196:16 | concat output argument | test.cpp:198:32:198:38 | *command | provenance | | +| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | provenance | | +| test.cpp:196:26:196:33 | *filename | test.cpp:196:10:196:16 | concat output argument | provenance | | +| test.cpp:196:26:196:33 | *filename | test.cpp:196:10:196:16 | concat output argument | provenance | | +| test.cpp:218:9:218:16 | fread output argument | test.cpp:220:19:220:26 | *filename | provenance | | +| test.cpp:220:10:220:16 | strncat output argument | test.cpp:220:10:220:16 | strncat output argument | provenance | | +| test.cpp:220:10:220:16 | strncat output argument | test.cpp:220:10:220:16 | strncat output argument | provenance | | +| test.cpp:220:10:220:16 | strncat output argument | test.cpp:220:10:220:16 | strncat output argument | provenance | | +| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | provenance | | +| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | provenance | | +| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | provenance | | +| test.cpp:220:10:220:16 | strncat output argument | test.cpp:222:32:222:38 | *command | provenance | | +| test.cpp:220:19:220:26 | *filename | test.cpp:220:10:220:16 | strncat output argument | provenance | | +| test.cpp:220:19:220:26 | *filename | test.cpp:220:10:220:16 | strncat output argument | provenance | | +| test.cpp:220:19:220:26 | *filename | test.cpp:220:19:220:26 | *filename | provenance | | nodes | test.cpp:15:27:15:30 | **argv | semmle.label | **argv | | test.cpp:22:13:22:20 | sprintf output argument | semmle.label | sprintf output argument | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-079/semmle/CgiXss/CgiXss.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-079/semmle/CgiXss/CgiXss.expected index 48d6c47181ed..6a28ffc96ec0 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-079/semmle/CgiXss/CgiXss.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-079/semmle/CgiXss/CgiXss.expected @@ -1,13 +1,13 @@ edges -| search.c:14:24:14:28 | *query | search.c:17:8:17:12 | *query | -| search.c:22:24:22:28 | *query | search.c:23:39:23:43 | *query | -| search.c:55:24:55:28 | *query | search.c:62:8:62:17 | *query_text | -| search.c:67:21:67:26 | *call to getenv | search.c:71:17:71:25 | *raw_query | -| search.c:67:21:67:26 | *call to getenv | search.c:73:17:73:25 | *raw_query | -| search.c:67:21:67:26 | *call to getenv | search.c:77:17:77:25 | *raw_query | -| search.c:71:17:71:25 | *raw_query | search.c:14:24:14:28 | *query | -| search.c:73:17:73:25 | *raw_query | search.c:22:24:22:28 | *query | -| search.c:77:17:77:25 | *raw_query | search.c:55:24:55:28 | *query | +| search.c:14:24:14:28 | *query | search.c:17:8:17:12 | *query | provenance | | +| search.c:22:24:22:28 | *query | search.c:23:39:23:43 | *query | provenance | | +| search.c:55:24:55:28 | *query | search.c:62:8:62:17 | *query_text | provenance | | +| search.c:67:21:67:26 | *call to getenv | search.c:71:17:71:25 | *raw_query | provenance | | +| search.c:67:21:67:26 | *call to getenv | search.c:73:17:73:25 | *raw_query | provenance | | +| search.c:67:21:67:26 | *call to getenv | search.c:77:17:77:25 | *raw_query | provenance | | +| search.c:71:17:71:25 | *raw_query | search.c:14:24:14:28 | *query | provenance | | +| search.c:73:17:73:25 | *raw_query | search.c:22:24:22:28 | *query | provenance | | +| search.c:77:17:77:25 | *raw_query | search.c:55:24:55:28 | *query | provenance | | nodes | search.c:14:24:14:28 | *query | semmle.label | *query | | search.c:17:8:17:12 | *query | semmle.label | *query | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected index ee3754653965..2300fddefd79 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-089/SqlTainted/SqlTainted.expected @@ -1,12 +1,12 @@ edges -| test.c:14:27:14:30 | **argv | test.c:21:18:21:23 | *query1 | -| test.c:14:27:14:30 | **argv | test.c:35:16:35:23 | *userName | -| test.c:35:16:35:23 | *userName | test.c:40:25:40:32 | *username | -| test.c:38:7:38:20 | **globalUsername | test.c:51:18:51:23 | *query1 | -| test.c:40:25:40:32 | *username | test.c:38:7:38:20 | **globalUsername | -| test.c:75:8:75:16 | gets output argument | test.c:76:17:76:25 | *userInput | -| test.c:75:8:75:16 | gets output argument | test.c:77:20:77:28 | *userInput | -| test.cpp:39:27:39:30 | **argv | test.cpp:43:27:43:33 | *access to array | +| test.c:14:27:14:30 | **argv | test.c:21:18:21:23 | *query1 | provenance | | +| test.c:14:27:14:30 | **argv | test.c:35:16:35:23 | *userName | provenance | | +| test.c:35:16:35:23 | *userName | test.c:40:25:40:32 | *username | provenance | | +| test.c:38:7:38:20 | **globalUsername | test.c:51:18:51:23 | *query1 | provenance | | +| test.c:40:25:40:32 | *username | test.c:38:7:38:20 | **globalUsername | provenance | | +| test.c:75:8:75:16 | gets output argument | test.c:76:17:76:25 | *userInput | provenance | | +| test.c:75:8:75:16 | gets output argument | test.c:77:20:77:28 | *userInput | provenance | | +| test.cpp:39:27:39:30 | **argv | test.cpp:43:27:43:33 | *access to array | provenance | | nodes | test.c:14:27:14:30 | **argv | semmle.label | **argv | | test.c:21:18:21:23 | *query1 | semmle.label | *query1 | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-114/SAMATE/UncontrolledProcessOperation/UncontrolledProcessOperation.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-114/SAMATE/UncontrolledProcessOperation/UncontrolledProcessOperation.expected index 86ecf2ea37c9..d49af567a735 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-114/SAMATE/UncontrolledProcessOperation/UncontrolledProcessOperation.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-114/SAMATE/UncontrolledProcessOperation/UncontrolledProcessOperation.expected @@ -1,7 +1,7 @@ edges -| test.cpp:37:73:37:76 | *data | test.cpp:43:32:43:35 | *data | -| test.cpp:64:30:64:35 | *call to getenv | test.cpp:73:24:73:27 | *data | -| test.cpp:73:24:73:27 | *data | test.cpp:37:73:37:76 | *data | +| test.cpp:37:73:37:76 | *data | test.cpp:43:32:43:35 | *data | provenance | | +| test.cpp:64:30:64:35 | *call to getenv | test.cpp:73:24:73:27 | *data | provenance | | +| test.cpp:73:24:73:27 | *data | test.cpp:37:73:37:76 | *data | provenance | | nodes | test.cpp:37:73:37:76 | *data | semmle.label | *data | | test.cpp:43:32:43:35 | *data | semmle.label | *data | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected index 9e10928ecdae..3f94fe17319e 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected @@ -1,16 +1,16 @@ edges -| test.cpp:24:30:24:36 | *command | test.cpp:26:10:26:16 | *command | -| test.cpp:29:30:29:36 | *command | test.cpp:31:10:31:16 | *command | -| test.cpp:42:18:42:34 | *call to getenv | test.cpp:24:30:24:36 | *command | -| test.cpp:43:18:43:34 | *call to getenv | test.cpp:29:30:29:36 | *command | -| test.cpp:56:12:56:17 | fgets output argument | test.cpp:62:10:62:15 | *buffer | -| test.cpp:56:12:56:17 | fgets output argument | test.cpp:63:10:63:13 | *data | -| test.cpp:56:12:56:17 | fgets output argument | test.cpp:64:10:64:16 | *dataref | -| test.cpp:56:12:56:17 | fgets output argument | test.cpp:65:10:65:14 | *data2 | -| test.cpp:76:12:76:17 | fgets output argument | test.cpp:78:10:78:15 | *buffer | -| test.cpp:98:17:98:22 | recv output argument | test.cpp:99:15:99:20 | *buffer | -| test.cpp:106:17:106:22 | recv output argument | test.cpp:107:15:107:20 | *buffer | -| test.cpp:113:8:113:12 | *call to fgets | test.cpp:114:9:114:11 | *ptr | +| test.cpp:24:30:24:36 | *command | test.cpp:26:10:26:16 | *command | provenance | | +| test.cpp:29:30:29:36 | *command | test.cpp:31:10:31:16 | *command | provenance | | +| test.cpp:42:18:42:34 | *call to getenv | test.cpp:24:30:24:36 | *command | provenance | | +| test.cpp:43:18:43:34 | *call to getenv | test.cpp:29:30:29:36 | *command | provenance | | +| test.cpp:56:12:56:17 | fgets output argument | test.cpp:62:10:62:15 | *buffer | provenance | | +| test.cpp:56:12:56:17 | fgets output argument | test.cpp:63:10:63:13 | *data | provenance | | +| test.cpp:56:12:56:17 | fgets output argument | test.cpp:64:10:64:16 | *dataref | provenance | | +| test.cpp:56:12:56:17 | fgets output argument | test.cpp:65:10:65:14 | *data2 | provenance | | +| test.cpp:76:12:76:17 | fgets output argument | test.cpp:78:10:78:15 | *buffer | provenance | | +| test.cpp:98:17:98:22 | recv output argument | test.cpp:99:15:99:20 | *buffer | provenance | | +| test.cpp:106:17:106:22 | recv output argument | test.cpp:107:15:107:20 | *buffer | provenance | | +| test.cpp:113:8:113:12 | *call to fgets | test.cpp:114:9:114:11 | *ptr | provenance | | nodes | test.cpp:24:30:24:36 | *command | semmle.label | *command | | test.cpp:26:10:26:16 | *command | semmle.label | *command | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected index 499d34d0d40d..21e6445c8fd1 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected @@ -1,62 +1,62 @@ edges -| test.cpp:16:11:16:21 | **mk_string_t [string] | test.cpp:39:21:39:31 | *call to mk_string_t [string] | -| test.cpp:18:5:18:7 | *str [post update] [string] | test.cpp:19:5:19:7 | *str [string] | -| test.cpp:18:5:18:30 | ... = ... | test.cpp:18:5:18:7 | *str [post update] [string] | -| test.cpp:18:19:18:24 | call to malloc | test.cpp:18:5:18:30 | ... = ... | -| test.cpp:19:5:19:7 | *str [string] | test.cpp:16:11:16:21 | **mk_string_t [string] | -| test.cpp:39:21:39:31 | *call to mk_string_t [string] | test.cpp:42:13:42:15 | *str [string] | -| test.cpp:39:21:39:31 | *call to mk_string_t [string] | test.cpp:72:17:72:19 | *str [string] | -| test.cpp:39:21:39:31 | *call to mk_string_t [string] | test.cpp:80:17:80:19 | *str [string] | -| test.cpp:42:13:42:15 | *str [string] | test.cpp:42:18:42:23 | string | -| test.cpp:72:17:72:19 | *str [string] | test.cpp:72:22:72:27 | string | -| test.cpp:80:17:80:19 | *str [string] | test.cpp:80:22:80:27 | string | -| test.cpp:88:11:88:30 | **mk_string_t_plus_one [string] | test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | -| test.cpp:90:5:90:7 | *str [post update] [string] | test.cpp:91:5:91:7 | *str [string] | -| test.cpp:90:5:90:34 | ... = ... | test.cpp:90:5:90:7 | *str [post update] [string] | -| test.cpp:90:19:90:24 | call to malloc | test.cpp:90:5:90:34 | ... = ... | -| test.cpp:91:5:91:7 | *str [string] | test.cpp:88:11:88:30 | **mk_string_t_plus_one [string] | -| test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | test.cpp:99:13:99:15 | *str [string] | -| test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | test.cpp:129:17:129:19 | *str [string] | -| test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | test.cpp:137:17:137:19 | *str [string] | -| test.cpp:99:13:99:15 | *str [string] | test.cpp:99:18:99:23 | string | -| test.cpp:129:17:129:19 | *str [string] | test.cpp:129:22:129:27 | string | -| test.cpp:137:17:137:19 | *str [string] | test.cpp:137:22:137:27 | string | -| test.cpp:147:5:147:7 | *str [post update] [string] | test.cpp:148:5:148:7 | *str [string] | -| test.cpp:147:5:147:34 | ... = ... | test.cpp:147:5:147:7 | *str [post update] [string] | -| test.cpp:147:19:147:24 | call to malloc | test.cpp:147:5:147:34 | ... = ... | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:152:13:152:15 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:154:13:154:15 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:156:13:156:15 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:175:17:175:19 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:187:17:187:19 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:195:17:195:19 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:199:17:199:19 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:203:17:203:19 | *str [string] | -| test.cpp:148:5:148:7 | *str [string] | test.cpp:207:17:207:19 | *str [string] | -| test.cpp:152:13:152:15 | *str [string] | test.cpp:152:18:152:23 | string | -| test.cpp:154:13:154:15 | *str [string] | test.cpp:154:18:154:23 | string | -| test.cpp:156:13:156:15 | *str [string] | test.cpp:156:18:156:23 | string | -| test.cpp:175:17:175:19 | *str [string] | test.cpp:175:22:175:27 | string | -| test.cpp:187:17:187:19 | *str [string] | test.cpp:187:22:187:27 | string | -| test.cpp:195:17:195:19 | *str [string] | test.cpp:195:22:195:27 | string | -| test.cpp:199:17:199:19 | *str [string] | test.cpp:199:22:199:27 | string | -| test.cpp:203:17:203:19 | *str [string] | test.cpp:203:22:203:27 | string | -| test.cpp:207:17:207:19 | *str [string] | test.cpp:207:22:207:27 | string | -| test.cpp:214:24:214:24 | p | test.cpp:216:10:216:10 | p | -| test.cpp:220:27:220:54 | call to malloc | test.cpp:222:15:222:20 | buffer | -| test.cpp:222:15:222:20 | buffer | test.cpp:214:24:214:24 | p | -| test.cpp:228:27:228:54 | call to malloc | test.cpp:232:10:232:15 | buffer | -| test.cpp:235:40:235:45 | buffer | test.cpp:236:5:236:26 | ... = ... | -| test.cpp:236:5:236:26 | ... = ... | test.cpp:236:5:236:9 | *p_str [post update] [string] | -| test.cpp:241:20:241:38 | call to malloc | test.cpp:242:22:242:27 | buffer | -| test.cpp:242:16:242:19 | set_string output argument [string] | test.cpp:243:12:243:14 | *str [string] | -| test.cpp:242:22:242:27 | buffer | test.cpp:235:40:235:45 | buffer | -| test.cpp:242:22:242:27 | buffer | test.cpp:242:16:242:19 | set_string output argument [string] | -| test.cpp:243:12:243:14 | *str [string] | test.cpp:243:12:243:21 | string | -| test.cpp:249:14:249:33 | call to my_alloc | test.cpp:250:12:250:12 | p | -| test.cpp:256:9:256:25 | call to malloc | test.cpp:257:12:257:12 | p | -| test.cpp:262:15:262:30 | call to malloc | test.cpp:266:12:266:12 | p | -| test.cpp:264:13:264:30 | call to malloc | test.cpp:266:12:266:12 | p | +| test.cpp:16:11:16:21 | **mk_string_t [string] | test.cpp:39:21:39:31 | *call to mk_string_t [string] | provenance | | +| test.cpp:18:5:18:7 | *str [post update] [string] | test.cpp:19:5:19:7 | *str [string] | provenance | | +| test.cpp:18:5:18:30 | ... = ... | test.cpp:18:5:18:7 | *str [post update] [string] | provenance | | +| test.cpp:18:19:18:24 | call to malloc | test.cpp:18:5:18:30 | ... = ... | provenance | | +| test.cpp:19:5:19:7 | *str [string] | test.cpp:16:11:16:21 | **mk_string_t [string] | provenance | | +| test.cpp:39:21:39:31 | *call to mk_string_t [string] | test.cpp:42:13:42:15 | *str [string] | provenance | | +| test.cpp:39:21:39:31 | *call to mk_string_t [string] | test.cpp:72:17:72:19 | *str [string] | provenance | | +| test.cpp:39:21:39:31 | *call to mk_string_t [string] | test.cpp:80:17:80:19 | *str [string] | provenance | | +| test.cpp:42:13:42:15 | *str [string] | test.cpp:42:18:42:23 | string | provenance | | +| test.cpp:72:17:72:19 | *str [string] | test.cpp:72:22:72:27 | string | provenance | | +| test.cpp:80:17:80:19 | *str [string] | test.cpp:80:22:80:27 | string | provenance | | +| test.cpp:88:11:88:30 | **mk_string_t_plus_one [string] | test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | provenance | | +| test.cpp:90:5:90:7 | *str [post update] [string] | test.cpp:91:5:91:7 | *str [string] | provenance | | +| test.cpp:90:5:90:34 | ... = ... | test.cpp:90:5:90:7 | *str [post update] [string] | provenance | | +| test.cpp:90:19:90:24 | call to malloc | test.cpp:90:5:90:34 | ... = ... | provenance | | +| test.cpp:91:5:91:7 | *str [string] | test.cpp:88:11:88:30 | **mk_string_t_plus_one [string] | provenance | | +| test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | test.cpp:99:13:99:15 | *str [string] | provenance | | +| test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | test.cpp:129:17:129:19 | *str [string] | provenance | | +| test.cpp:96:21:96:40 | *call to mk_string_t_plus_one [string] | test.cpp:137:17:137:19 | *str [string] | provenance | | +| test.cpp:99:13:99:15 | *str [string] | test.cpp:99:18:99:23 | string | provenance | | +| test.cpp:129:17:129:19 | *str [string] | test.cpp:129:22:129:27 | string | provenance | | +| test.cpp:137:17:137:19 | *str [string] | test.cpp:137:22:137:27 | string | provenance | | +| test.cpp:147:5:147:7 | *str [post update] [string] | test.cpp:148:5:148:7 | *str [string] | provenance | | +| test.cpp:147:5:147:34 | ... = ... | test.cpp:147:5:147:7 | *str [post update] [string] | provenance | | +| test.cpp:147:19:147:24 | call to malloc | test.cpp:147:5:147:34 | ... = ... | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:152:13:152:15 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:154:13:154:15 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:156:13:156:15 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:175:17:175:19 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:187:17:187:19 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:195:17:195:19 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:199:17:199:19 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:203:17:203:19 | *str [string] | provenance | | +| test.cpp:148:5:148:7 | *str [string] | test.cpp:207:17:207:19 | *str [string] | provenance | | +| test.cpp:152:13:152:15 | *str [string] | test.cpp:152:18:152:23 | string | provenance | | +| test.cpp:154:13:154:15 | *str [string] | test.cpp:154:18:154:23 | string | provenance | | +| test.cpp:156:13:156:15 | *str [string] | test.cpp:156:18:156:23 | string | provenance | | +| test.cpp:175:17:175:19 | *str [string] | test.cpp:175:22:175:27 | string | provenance | | +| test.cpp:187:17:187:19 | *str [string] | test.cpp:187:22:187:27 | string | provenance | | +| test.cpp:195:17:195:19 | *str [string] | test.cpp:195:22:195:27 | string | provenance | | +| test.cpp:199:17:199:19 | *str [string] | test.cpp:199:22:199:27 | string | provenance | | +| test.cpp:203:17:203:19 | *str [string] | test.cpp:203:22:203:27 | string | provenance | | +| test.cpp:207:17:207:19 | *str [string] | test.cpp:207:22:207:27 | string | provenance | | +| test.cpp:214:24:214:24 | p | test.cpp:216:10:216:10 | p | provenance | | +| test.cpp:220:27:220:54 | call to malloc | test.cpp:222:15:222:20 | buffer | provenance | | +| test.cpp:222:15:222:20 | buffer | test.cpp:214:24:214:24 | p | provenance | | +| test.cpp:228:27:228:54 | call to malloc | test.cpp:232:10:232:15 | buffer | provenance | | +| test.cpp:235:40:235:45 | buffer | test.cpp:236:5:236:26 | ... = ... | provenance | | +| test.cpp:236:5:236:26 | ... = ... | test.cpp:236:5:236:9 | *p_str [post update] [string] | provenance | | +| test.cpp:241:20:241:38 | call to malloc | test.cpp:242:22:242:27 | buffer | provenance | | +| test.cpp:242:16:242:19 | set_string output argument [string] | test.cpp:243:12:243:14 | *str [string] | provenance | | +| test.cpp:242:22:242:27 | buffer | test.cpp:235:40:235:45 | buffer | provenance | | +| test.cpp:242:22:242:27 | buffer | test.cpp:242:16:242:19 | set_string output argument [string] | provenance | | +| test.cpp:243:12:243:14 | *str [string] | test.cpp:243:12:243:21 | string | provenance | | +| test.cpp:249:14:249:33 | call to my_alloc | test.cpp:250:12:250:12 | p | provenance | | +| test.cpp:256:9:256:25 | call to malloc | test.cpp:257:12:257:12 | p | provenance | | +| test.cpp:262:15:262:30 | call to malloc | test.cpp:266:12:266:12 | p | provenance | | +| test.cpp:264:13:264:30 | call to malloc | test.cpp:266:12:266:12 | p | provenance | | nodes | test.cpp:16:11:16:21 | **mk_string_t [string] | semmle.label | **mk_string_t [string] | | test.cpp:18:5:18:7 | *str [post update] [string] | semmle.label | *str [post update] [string] | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected index f911d3b3da1f..fa6e1c36b538 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected @@ -1,14 +1,14 @@ edges -| main.cpp:6:27:6:30 | **argv | main.cpp:7:33:7:36 | **argv | -| main.cpp:7:33:7:36 | **argv | overflowdestination.cpp:23:45:23:48 | **argv | -| overflowdestination.cpp:23:45:23:48 | **argv | overflowdestination.cpp:30:17:30:20 | *arg1 | -| overflowdestination.cpp:43:8:43:10 | fgets output argument | overflowdestination.cpp:46:15:46:17 | *src | -| overflowdestination.cpp:50:52:50:54 | *src | overflowdestination.cpp:53:15:53:17 | *src | -| overflowdestination.cpp:57:52:57:54 | *src | overflowdestination.cpp:64:16:64:19 | *src2 | -| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:75:30:75:32 | *src | -| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:76:30:76:32 | *src | -| overflowdestination.cpp:75:30:75:32 | *src | overflowdestination.cpp:50:52:50:54 | *src | -| overflowdestination.cpp:76:30:76:32 | *src | overflowdestination.cpp:57:52:57:54 | *src | +| main.cpp:6:27:6:30 | **argv | main.cpp:7:33:7:36 | **argv | provenance | | +| main.cpp:7:33:7:36 | **argv | overflowdestination.cpp:23:45:23:48 | **argv | provenance | | +| overflowdestination.cpp:23:45:23:48 | **argv | overflowdestination.cpp:30:17:30:20 | *arg1 | provenance | | +| overflowdestination.cpp:43:8:43:10 | fgets output argument | overflowdestination.cpp:46:15:46:17 | *src | provenance | | +| overflowdestination.cpp:50:52:50:54 | *src | overflowdestination.cpp:53:15:53:17 | *src | provenance | | +| overflowdestination.cpp:57:52:57:54 | *src | overflowdestination.cpp:64:16:64:19 | *src2 | provenance | | +| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:75:30:75:32 | *src | provenance | | +| overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:76:30:76:32 | *src | provenance | | +| overflowdestination.cpp:75:30:75:32 | *src | overflowdestination.cpp:50:52:50:54 | *src | provenance | | +| overflowdestination.cpp:76:30:76:32 | *src | overflowdestination.cpp:57:52:57:54 | *src | provenance | | nodes | main.cpp:6:27:6:30 | **argv | semmle.label | **argv | | main.cpp:7:33:7:36 | **argv | semmle.label | **argv | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected index ac4b606898d7..c5cfefdbff07 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/UnboundedWrite.expected @@ -1,17 +1,17 @@ edges -| main.cpp:6:27:6:30 | **argv | main.cpp:10:20:10:23 | **argv | -| main.cpp:10:20:10:23 | **argv | tests.cpp:657:32:657:35 | **argv | -| tests.cpp:613:19:613:24 | *source | tests.cpp:615:17:615:22 | *source | -| tests.cpp:622:19:622:24 | *source | tests.cpp:625:2:625:16 | *... = ... | -| tests.cpp:625:2:625:2 | *s [post update] [*home] | tests.cpp:628:14:628:14 | *s [*home] | -| tests.cpp:625:2:625:16 | *... = ... | tests.cpp:625:2:625:2 | *s [post update] [*home] | -| tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:14:628:19 | *home | -| tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:16:628:19 | *home | -| tests.cpp:628:16:628:19 | *home | tests.cpp:628:14:628:19 | *home | -| tests.cpp:657:32:657:35 | **argv | tests.cpp:682:9:682:15 | *access to array | -| tests.cpp:657:32:657:35 | **argv | tests.cpp:683:9:683:15 | *access to array | -| tests.cpp:682:9:682:15 | *access to array | tests.cpp:613:19:613:24 | *source | -| tests.cpp:683:9:683:15 | *access to array | tests.cpp:622:19:622:24 | *source | +| main.cpp:6:27:6:30 | **argv | main.cpp:10:20:10:23 | **argv | provenance | | +| main.cpp:10:20:10:23 | **argv | tests.cpp:657:32:657:35 | **argv | provenance | | +| tests.cpp:613:19:613:24 | *source | tests.cpp:615:17:615:22 | *source | provenance | | +| tests.cpp:622:19:622:24 | *source | tests.cpp:625:2:625:16 | *... = ... | provenance | | +| tests.cpp:625:2:625:2 | *s [post update] [*home] | tests.cpp:628:14:628:14 | *s [*home] | provenance | | +| tests.cpp:625:2:625:16 | *... = ... | tests.cpp:625:2:625:2 | *s [post update] [*home] | provenance | | +| tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:14:628:19 | *home | provenance | | +| tests.cpp:628:14:628:14 | *s [*home] | tests.cpp:628:16:628:19 | *home | provenance | | +| tests.cpp:628:16:628:19 | *home | tests.cpp:628:14:628:19 | *home | provenance | | +| tests.cpp:657:32:657:35 | **argv | tests.cpp:682:9:682:15 | *access to array | provenance | | +| tests.cpp:657:32:657:35 | **argv | tests.cpp:683:9:683:15 | *access to array | provenance | | +| tests.cpp:682:9:682:15 | *access to array | tests.cpp:613:19:613:24 | *source | provenance | | +| tests.cpp:683:9:683:15 | *access to array | tests.cpp:622:19:622:24 | *source | provenance | | nodes | main.cpp:6:27:6:30 | **argv | semmle.label | **argv | | main.cpp:10:20:10:23 | **argv | semmle.label | **argv | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-120/semmle/tests/UnboundedWrite.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-120/semmle/tests/UnboundedWrite.expected index 49c6a7799e77..0ebcbb8cde4e 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-120/semmle/tests/UnboundedWrite.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-120/semmle/tests/UnboundedWrite.expected @@ -1,7 +1,7 @@ edges -| tests.c:16:26:16:29 | **argv | tests.c:28:22:28:28 | *access to array | -| tests.c:16:26:16:29 | **argv | tests.c:29:28:29:34 | *access to array | -| tests.c:16:26:16:29 | **argv | tests.c:34:10:34:16 | *access to array | +| tests.c:16:26:16:29 | **argv | tests.c:28:22:28:28 | *access to array | provenance | | +| tests.c:16:26:16:29 | **argv | tests.c:29:28:29:34 | *access to array | provenance | | +| tests.c:16:26:16:29 | **argv | tests.c:34:10:34:16 | *access to array | provenance | | nodes | tests.c:16:26:16:29 | **argv | semmle.label | **argv | | tests.c:28:22:28:28 | *access to array | semmle.label | *access to array | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-129/SAMATE/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-129/SAMATE/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected index 35d6e58f458c..10286da7a386 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-129/SAMATE/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-129/SAMATE/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected @@ -1,5 +1,5 @@ edges -| CWE122_Heap_Based_Buffer_Overflow__c_CWE129_fgets_01.c:30:19:30:29 | fgets output argument | CWE122_Heap_Based_Buffer_Overflow__c_CWE129_fgets_01.c:52:20:52:23 | data | +| CWE122_Heap_Based_Buffer_Overflow__c_CWE129_fgets_01.c:30:19:30:29 | fgets output argument | CWE122_Heap_Based_Buffer_Overflow__c_CWE129_fgets_01.c:52:20:52:23 | data | provenance | | nodes | CWE122_Heap_Based_Buffer_Overflow__c_CWE129_fgets_01.c:30:19:30:29 | fgets output argument | semmle.label | fgets output argument | | CWE122_Heap_Based_Buffer_Overflow__c_CWE129_fgets_01.c:52:20:52:23 | data | semmle.label | data | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-129/semmle/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-129/semmle/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected index f766aabda57b..141d1351540c 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-129/semmle/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-129/semmle/ImproperArrayIndexValidation/ImproperArrayIndexValidation.expected @@ -1,13 +1,13 @@ edges -| test1.c:7:26:7:29 | **argv | test1.c:9:9:9:9 | i | -| test1.c:7:26:7:29 | **argv | test1.c:11:9:11:9 | i | -| test1.c:7:26:7:29 | **argv | test1.c:13:9:13:9 | i | -| test1.c:9:9:9:9 | i | test1.c:16:16:16:16 | i | -| test1.c:11:9:11:9 | i | test1.c:32:16:32:16 | i | -| test1.c:13:9:13:9 | i | test1.c:48:16:48:16 | i | -| test1.c:16:16:16:16 | i | test1.c:18:16:18:16 | i | -| test1.c:32:16:32:16 | i | test1.c:33:11:33:11 | i | -| test1.c:48:16:48:16 | i | test1.c:53:15:53:15 | j | +| test1.c:7:26:7:29 | **argv | test1.c:9:9:9:9 | i | provenance | | +| test1.c:7:26:7:29 | **argv | test1.c:11:9:11:9 | i | provenance | | +| test1.c:7:26:7:29 | **argv | test1.c:13:9:13:9 | i | provenance | | +| test1.c:9:9:9:9 | i | test1.c:16:16:16:16 | i | provenance | | +| test1.c:11:9:11:9 | i | test1.c:32:16:32:16 | i | provenance | | +| test1.c:13:9:13:9 | i | test1.c:48:16:48:16 | i | provenance | | +| test1.c:16:16:16:16 | i | test1.c:18:16:18:16 | i | provenance | | +| test1.c:32:16:32:16 | i | test1.c:33:11:33:11 | i | provenance | | +| test1.c:48:16:48:16 | i | test1.c:53:15:53:15 | j | provenance | | nodes | test1.c:7:26:7:29 | **argv | semmle.label | **argv | | test1.c:9:9:9:9 | i | semmle.label | i | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/SAMATE/UncontrolledFormatString.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/SAMATE/UncontrolledFormatString.expected index 49b397090802..a977543a8ecb 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/SAMATE/UncontrolledFormatString.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/SAMATE/UncontrolledFormatString.expected @@ -1,7 +1,7 @@ edges -| char_connect_socket_w32_vsnprintf_01_bad.c:94:46:94:69 | recv output argument | char_connect_socket_w32_vsnprintf_01_bad.c:125:15:125:18 | *data | -| char_console_fprintf_01_bad.c:30:23:30:35 | fgets output argument | char_console_fprintf_01_bad.c:49:21:49:24 | *data | -| char_environment_fprintf_01_bad.c:27:30:27:35 | *call to getenv | char_environment_fprintf_01_bad.c:36:21:36:24 | *data | +| char_connect_socket_w32_vsnprintf_01_bad.c:94:46:94:69 | recv output argument | char_connect_socket_w32_vsnprintf_01_bad.c:125:15:125:18 | *data | provenance | | +| char_console_fprintf_01_bad.c:30:23:30:35 | fgets output argument | char_console_fprintf_01_bad.c:49:21:49:24 | *data | provenance | | +| char_environment_fprintf_01_bad.c:27:30:27:35 | *call to getenv | char_environment_fprintf_01_bad.c:36:21:36:24 | *data | provenance | | nodes | char_connect_socket_w32_vsnprintf_01_bad.c:94:46:94:69 | recv output argument | semmle.label | recv output argument | | char_connect_socket_w32_vsnprintf_01_bad.c:125:15:125:18 | *data | semmle.label | *data | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected index 2c2db139bafd..8f09b2ee7f5c 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected @@ -1,28 +1,28 @@ edges -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:95:9:95:15 | *access to array | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:96:15:96:21 | *access to array | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:101:9:101:10 | *i1 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:102:15:102:16 | *i1 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:106:9:106:13 | *access to array | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:107:15:107:19 | *access to array | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:110:9:110:11 | ** ... | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:111:15:111:17 | ** ... | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:116:9:116:10 | *i3 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:117:15:117:16 | *i3 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:121:9:121:10 | *i4 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:122:15:122:16 | *i4 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:127:9:127:10 | *i5 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:128:15:128:16 | *i5 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:131:9:131:14 | *... + ... | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:132:15:132:20 | *... + ... | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:135:9:135:12 | *... ++ | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:136:15:136:18 | *-- ... | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:139:9:139:26 | *... ? ... : ... | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:140:15:140:32 | *... ? ... : ... | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:144:9:144:10 | *i7 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:145:15:145:16 | *i7 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:150:9:150:10 | *i8 | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:151:15:151:16 | *i8 | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:95:9:95:15 | *access to array | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:96:15:96:21 | *access to array | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:101:9:101:10 | *i1 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:102:15:102:16 | *i1 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:106:9:106:13 | *access to array | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:107:15:107:19 | *access to array | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:110:9:110:11 | ** ... | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:111:15:111:17 | ** ... | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:116:9:116:10 | *i3 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:117:15:117:16 | *i3 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:121:9:121:10 | *i4 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:122:15:122:16 | *i4 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:127:9:127:10 | *i5 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:128:15:128:16 | *i5 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:131:9:131:14 | *... + ... | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:132:15:132:20 | *... + ... | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:135:9:135:12 | *... ++ | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:136:15:136:18 | *-- ... | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:139:9:139:26 | *... ? ... : ... | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:140:15:140:32 | *... ? ... : ... | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:144:9:144:10 | *i7 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:145:15:145:16 | *i7 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:150:9:150:10 | *i8 | provenance | | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:151:15:151:16 | *i8 | provenance | | nodes | argvLocal.c:13:27:13:30 | **argv | semmle.label | **argv | | argvLocal.c:95:9:95:15 | *access to array | semmle.label | *access to array | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/funcs/funcsLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/funcs/funcsLocal.expected index d8ccacc88cd3..20ae8a4b9ba5 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/funcs/funcsLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/funcs/funcsLocal.expected @@ -1,12 +1,12 @@ edges -| funcsLocal.c:16:8:16:9 | fread output argument | funcsLocal.c:17:9:17:10 | *i1 | -| funcsLocal.c:16:8:16:9 | fread output argument | funcsLocal.c:58:9:58:10 | *e1 | -| funcsLocal.c:26:8:26:9 | fgets output argument | funcsLocal.c:27:9:27:10 | *i3 | -| funcsLocal.c:31:13:31:17 | *call to fgets | funcsLocal.c:32:9:32:10 | *i4 | -| funcsLocal.c:36:7:36:8 | gets output argument | funcsLocal.c:37:9:37:10 | *i5 | -| funcsLocal.c:41:13:41:16 | *call to gets | funcsLocal.c:42:9:42:10 | *i6 | -| funcsLocal.c:46:7:46:9 | gets output argument | funcsLocal.c:47:9:47:11 | ** ... | -| funcsLocal.c:52:8:52:11 | *call to gets | funcsLocal.c:53:9:53:11 | ** ... | +| funcsLocal.c:16:8:16:9 | fread output argument | funcsLocal.c:17:9:17:10 | *i1 | provenance | | +| funcsLocal.c:16:8:16:9 | fread output argument | funcsLocal.c:58:9:58:10 | *e1 | provenance | | +| funcsLocal.c:26:8:26:9 | fgets output argument | funcsLocal.c:27:9:27:10 | *i3 | provenance | | +| funcsLocal.c:31:13:31:17 | *call to fgets | funcsLocal.c:32:9:32:10 | *i4 | provenance | | +| funcsLocal.c:36:7:36:8 | gets output argument | funcsLocal.c:37:9:37:10 | *i5 | provenance | | +| funcsLocal.c:41:13:41:16 | *call to gets | funcsLocal.c:42:9:42:10 | *i6 | provenance | | +| funcsLocal.c:46:7:46:9 | gets output argument | funcsLocal.c:47:9:47:11 | ** ... | provenance | | +| funcsLocal.c:52:8:52:11 | *call to gets | funcsLocal.c:53:9:53:11 | ** ... | provenance | | nodes | funcsLocal.c:16:8:16:9 | fread output argument | semmle.label | fread output argument | | funcsLocal.c:17:9:17:10 | *i1 | semmle.label | *i1 | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/globalVars/UncontrolledFormatString.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/globalVars/UncontrolledFormatString.expected index 683d57b5b752..087a0a88662f 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/globalVars/UncontrolledFormatString.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/globalVars/UncontrolledFormatString.expected @@ -1,15 +1,15 @@ edges -| globalVars.c:8:7:8:10 | **copy | globalVars.c:27:9:27:12 | *copy | -| globalVars.c:8:7:8:10 | **copy | globalVars.c:30:15:30:18 | *copy | -| globalVars.c:8:7:8:10 | **copy | globalVars.c:35:11:35:14 | *copy | -| globalVars.c:9:7:9:11 | **copy2 | globalVars.c:38:9:38:13 | *copy2 | -| globalVars.c:9:7:9:11 | **copy2 | globalVars.c:41:15:41:19 | *copy2 | -| globalVars.c:9:7:9:11 | **copy2 | globalVars.c:50:9:50:13 | *copy2 | -| globalVars.c:11:22:11:25 | **argv | globalVars.c:8:7:8:10 | **copy | -| globalVars.c:15:21:15:23 | *val | globalVars.c:9:7:9:11 | **copy2 | -| globalVars.c:23:27:23:30 | **argv | globalVars.c:24:11:24:14 | **argv | -| globalVars.c:24:11:24:14 | **argv | globalVars.c:11:22:11:25 | **argv | -| globalVars.c:35:11:35:14 | *copy | globalVars.c:15:21:15:23 | *val | +| globalVars.c:8:7:8:10 | **copy | globalVars.c:27:9:27:12 | *copy | provenance | | +| globalVars.c:8:7:8:10 | **copy | globalVars.c:30:15:30:18 | *copy | provenance | | +| globalVars.c:8:7:8:10 | **copy | globalVars.c:35:11:35:14 | *copy | provenance | | +| globalVars.c:9:7:9:11 | **copy2 | globalVars.c:38:9:38:13 | *copy2 | provenance | | +| globalVars.c:9:7:9:11 | **copy2 | globalVars.c:41:15:41:19 | *copy2 | provenance | | +| globalVars.c:9:7:9:11 | **copy2 | globalVars.c:50:9:50:13 | *copy2 | provenance | | +| globalVars.c:11:22:11:25 | **argv | globalVars.c:8:7:8:10 | **copy | provenance | | +| globalVars.c:15:21:15:23 | *val | globalVars.c:9:7:9:11 | **copy2 | provenance | | +| globalVars.c:23:27:23:30 | **argv | globalVars.c:24:11:24:14 | **argv | provenance | | +| globalVars.c:24:11:24:14 | **argv | globalVars.c:11:22:11:25 | **argv | provenance | | +| globalVars.c:35:11:35:14 | *copy | globalVars.c:15:21:15:23 | *val | provenance | | nodes | globalVars.c:8:7:8:10 | **copy | semmle.label | **copy | | globalVars.c:9:7:9:11 | **copy2 | semmle.label | **copy2 | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/ifs/ifs.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/ifs/ifs.expected index 4bcbb79bf7b3..6e860511fb28 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/ifs/ifs.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/ifs/ifs.expected @@ -1,15 +1,15 @@ edges -| ifs.c:16:27:16:30 | **argv | ifs.c:62:9:62:10 | *c7 | -| ifs.c:16:27:16:30 | **argv | ifs.c:69:9:69:10 | *c8 | -| ifs.c:16:27:16:30 | **argv | ifs.c:75:9:75:10 | *i1 | -| ifs.c:16:27:16:30 | **argv | ifs.c:81:9:81:10 | *i2 | -| ifs.c:16:27:16:30 | **argv | ifs.c:87:9:87:10 | *i3 | -| ifs.c:16:27:16:30 | **argv | ifs.c:93:9:93:10 | *i4 | -| ifs.c:16:27:16:30 | **argv | ifs.c:99:9:99:10 | *i5 | -| ifs.c:16:27:16:30 | **argv | ifs.c:106:9:106:10 | *i6 | -| ifs.c:16:27:16:30 | **argv | ifs.c:112:9:112:10 | *i7 | -| ifs.c:16:27:16:30 | **argv | ifs.c:118:9:118:10 | *i8 | -| ifs.c:16:27:16:30 | **argv | ifs.c:124:9:124:10 | *i9 | +| ifs.c:16:27:16:30 | **argv | ifs.c:62:9:62:10 | *c7 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:69:9:69:10 | *c8 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:75:9:75:10 | *i1 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:81:9:81:10 | *i2 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:87:9:87:10 | *i3 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:93:9:93:10 | *i4 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:99:9:99:10 | *i5 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:106:9:106:10 | *i6 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:112:9:112:10 | *i7 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:118:9:118:10 | *i8 | provenance | | +| ifs.c:16:27:16:30 | **argv | ifs.c:124:9:124:10 | *i9 | provenance | | nodes | ifs.c:16:27:16:30 | **argv | semmle.label | **argv | | ifs.c:62:9:62:10 | *c7 | semmle.label | *c7 | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticTainted.expected index d266afbe445e..a2221ec2fd3f 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticTainted.expected @@ -1,5 +1,5 @@ edges -| examples.cpp:63:26:63:30 | fscanf output argument | examples.cpp:66:11:66:14 | data | +| examples.cpp:63:26:63:30 | fscanf output argument | examples.cpp:66:11:66:14 | data | provenance | | nodes | examples.cpp:63:26:63:30 | fscanf output argument | semmle.label | fscanf output argument | | examples.cpp:66:11:66:14 | data | semmle.label | data | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticUncontrolled.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticUncontrolled.expected index 49766a8f25d2..7a6244f1d469 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticUncontrolled.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/SAMATE/ArithmeticUncontrolled.expected @@ -1,16 +1,16 @@ edges -| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | -| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | -| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | -| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | -| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | -| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | -| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | -| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | -| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | -| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | -| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | -| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | +| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | provenance | | +| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | provenance | | +| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | provenance | | +| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | provenance | | +| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | provenance | | +| examples.cpp:22:26:22:33 | call to rand | examples.cpp:25:31:25:34 | data | provenance | | +| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | provenance | | +| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | provenance | | +| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | provenance | | +| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | provenance | | +| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | provenance | | +| examples.cpp:35:26:35:33 | call to rand | examples.cpp:38:9:38:12 | data | provenance | | nodes | examples.cpp:22:26:22:33 | call to rand | semmle.label | call to rand | | examples.cpp:22:26:22:33 | call to rand | semmle.label | call to rand | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected index 8d456343b87a..ef46be9659a0 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected @@ -1,36 +1,36 @@ edges -| test.c:18:13:18:16 | call to rand | test.c:21:17:21:17 | r | -| test.c:34:13:34:18 | call to rand | test.c:35:5:35:5 | r | -| test.c:44:13:44:16 | call to rand | test.c:45:5:45:5 | r | -| test.c:75:13:75:19 | call to rand | test.c:77:9:77:9 | r | -| test.c:75:13:75:19 | call to rand | test.c:77:9:77:9 | r | -| test.c:81:14:81:17 | call to rand | test.c:83:9:83:9 | r | -| test.c:81:23:81:26 | call to rand | test.c:83:9:83:9 | r | -| test.c:125:13:125:16 | call to rand | test.c:127:9:127:9 | r | -| test.c:131:13:131:16 | call to rand | test.c:133:5:133:5 | r | -| test.c:137:13:137:16 | call to rand | test.c:139:10:139:10 | r | -| test.c:155:22:155:27 | call to rand | test.c:157:9:157:9 | r | -| test.cpp:6:5:6:12 | *get_rand | test.cpp:24:11:24:18 | call to get_rand | -| test.cpp:8:9:8:12 | call to rand | test.cpp:6:5:6:12 | *get_rand | -| test.cpp:11:21:11:24 | *dest | test.cpp:30:13:30:14 | get_rand2 output argument | -| test.cpp:13:10:13:13 | call to rand | test.cpp:11:21:11:24 | *dest | -| test.cpp:16:21:16:24 | *dest | test.cpp:36:13:36:13 | get_rand3 output argument | -| test.cpp:18:9:18:12 | call to rand | test.cpp:16:21:16:24 | *dest | -| test.cpp:24:11:24:18 | call to get_rand | test.cpp:25:7:25:7 | r | -| test.cpp:30:13:30:14 | get_rand2 output argument | test.cpp:31:7:31:7 | r | -| test.cpp:36:13:36:13 | get_rand3 output argument | test.cpp:37:7:37:7 | r | -| test.cpp:86:10:86:13 | call to rand | test.cpp:90:10:90:10 | x | -| test.cpp:98:10:98:13 | call to rand | test.cpp:102:10:102:10 | x | -| test.cpp:137:10:137:13 | call to rand | test.cpp:146:9:146:9 | y | -| test.cpp:151:10:151:13 | call to rand | test.cpp:154:10:154:10 | b | -| test.cpp:169:11:169:14 | call to rand | test.cpp:171:11:171:16 | y | -| test.cpp:189:10:189:13 | call to rand | test.cpp:196:7:196:7 | x | -| test.cpp:189:10:189:13 | call to rand | test.cpp:198:7:198:7 | x | -| test.cpp:189:10:189:13 | call to rand | test.cpp:199:7:199:7 | x | -| test.cpp:190:10:190:13 | call to rand | test.cpp:204:7:204:7 | y | -| test.cpp:190:10:190:13 | call to rand | test.cpp:205:7:205:7 | y | -| test.cpp:190:10:190:13 | call to rand | test.cpp:208:7:208:7 | y | -| test.cpp:215:11:215:14 | call to rand | test.cpp:219:8:219:8 | x | +| test.c:18:13:18:16 | call to rand | test.c:21:17:21:17 | r | provenance | | +| test.c:34:13:34:18 | call to rand | test.c:35:5:35:5 | r | provenance | | +| test.c:44:13:44:16 | call to rand | test.c:45:5:45:5 | r | provenance | | +| test.c:75:13:75:19 | call to rand | test.c:77:9:77:9 | r | provenance | | +| test.c:75:13:75:19 | call to rand | test.c:77:9:77:9 | r | provenance | | +| test.c:81:14:81:17 | call to rand | test.c:83:9:83:9 | r | provenance | | +| test.c:81:23:81:26 | call to rand | test.c:83:9:83:9 | r | provenance | | +| test.c:125:13:125:16 | call to rand | test.c:127:9:127:9 | r | provenance | | +| test.c:131:13:131:16 | call to rand | test.c:133:5:133:5 | r | provenance | | +| test.c:137:13:137:16 | call to rand | test.c:139:10:139:10 | r | provenance | | +| test.c:155:22:155:27 | call to rand | test.c:157:9:157:9 | r | provenance | | +| test.cpp:6:5:6:12 | *get_rand | test.cpp:24:11:24:18 | call to get_rand | provenance | | +| test.cpp:8:9:8:12 | call to rand | test.cpp:6:5:6:12 | *get_rand | provenance | | +| test.cpp:11:21:11:24 | *dest | test.cpp:30:13:30:14 | get_rand2 output argument | provenance | | +| test.cpp:13:10:13:13 | call to rand | test.cpp:11:21:11:24 | *dest | provenance | | +| test.cpp:16:21:16:24 | *dest | test.cpp:36:13:36:13 | get_rand3 output argument | provenance | | +| test.cpp:18:9:18:12 | call to rand | test.cpp:16:21:16:24 | *dest | provenance | | +| test.cpp:24:11:24:18 | call to get_rand | test.cpp:25:7:25:7 | r | provenance | | +| test.cpp:30:13:30:14 | get_rand2 output argument | test.cpp:31:7:31:7 | r | provenance | | +| test.cpp:36:13:36:13 | get_rand3 output argument | test.cpp:37:7:37:7 | r | provenance | | +| test.cpp:86:10:86:13 | call to rand | test.cpp:90:10:90:10 | x | provenance | | +| test.cpp:98:10:98:13 | call to rand | test.cpp:102:10:102:10 | x | provenance | | +| test.cpp:137:10:137:13 | call to rand | test.cpp:146:9:146:9 | y | provenance | | +| test.cpp:151:10:151:13 | call to rand | test.cpp:154:10:154:10 | b | provenance | | +| test.cpp:169:11:169:14 | call to rand | test.cpp:171:11:171:16 | y | provenance | | +| test.cpp:189:10:189:13 | call to rand | test.cpp:196:7:196:7 | x | provenance | | +| test.cpp:189:10:189:13 | call to rand | test.cpp:198:7:198:7 | x | provenance | | +| test.cpp:189:10:189:13 | call to rand | test.cpp:199:7:199:7 | x | provenance | | +| test.cpp:190:10:190:13 | call to rand | test.cpp:204:7:204:7 | y | provenance | | +| test.cpp:190:10:190:13 | call to rand | test.cpp:205:7:205:7 | y | provenance | | +| test.cpp:190:10:190:13 | call to rand | test.cpp:208:7:208:7 | y | provenance | | +| test.cpp:215:11:215:14 | call to rand | test.cpp:219:8:219:8 | x | provenance | | nodes | test.c:18:13:18:16 | call to rand | semmle.label | call to rand | | test.c:21:17:21:17 | r | semmle.label | r | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected index 56699b308cc0..cfcb159b3f18 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected @@ -1,28 +1,28 @@ edges -| test.cpp:39:27:39:30 | **argv | test.cpp:43:38:43:44 | tainted | -| test.cpp:39:27:39:30 | **argv | test.cpp:44:38:44:63 | ... * ... | -| test.cpp:39:27:39:30 | **argv | test.cpp:46:38:46:63 | ... + ... | -| test.cpp:39:27:39:30 | **argv | test.cpp:49:32:49:35 | size | -| test.cpp:39:27:39:30 | **argv | test.cpp:50:17:50:30 | size | -| test.cpp:39:27:39:30 | **argv | test.cpp:53:35:53:60 | ... * ... | -| test.cpp:124:18:124:31 | *call to getenv | test.cpp:128:24:128:41 | ... * ... | -| test.cpp:133:19:133:32 | *call to getenv | test.cpp:135:10:135:27 | ... * ... | -| test.cpp:148:20:148:33 | *call to getenv | test.cpp:152:11:152:28 | ... * ... | -| test.cpp:209:8:209:23 | *get_tainted_size | test.cpp:241:9:241:24 | call to get_tainted_size | -| test.cpp:211:14:211:27 | *call to getenv | test.cpp:209:8:209:23 | *get_tainted_size | -| test.cpp:230:21:230:21 | s | test.cpp:231:21:231:21 | s | -| test.cpp:237:24:237:37 | *call to getenv | test.cpp:239:9:239:18 | local_size | -| test.cpp:237:24:237:37 | *call to getenv | test.cpp:245:11:245:20 | local_size | -| test.cpp:237:24:237:37 | *call to getenv | test.cpp:247:10:247:19 | local_size | -| test.cpp:247:10:247:19 | local_size | test.cpp:230:21:230:21 | s | -| test.cpp:250:20:250:27 | *out_size | test.cpp:289:17:289:20 | get_size output argument | -| test.cpp:250:20:250:27 | *out_size | test.cpp:305:18:305:21 | get_size output argument | -| test.cpp:251:18:251:31 | *call to getenv | test.cpp:250:20:250:27 | *out_size | -| test.cpp:259:20:259:33 | *call to getenv | test.cpp:263:11:263:29 | ... * ... | -| test.cpp:289:17:289:20 | get_size output argument | test.cpp:291:11:291:28 | ... * ... | -| test.cpp:305:18:305:21 | get_size output argument | test.cpp:308:10:308:27 | ... * ... | -| test.cpp:353:18:353:31 | *call to getenv | test.cpp:355:35:355:38 | size | -| test.cpp:353:18:353:31 | *call to getenv | test.cpp:356:35:356:38 | size | +| test.cpp:39:27:39:30 | **argv | test.cpp:43:38:43:44 | tainted | provenance | | +| test.cpp:39:27:39:30 | **argv | test.cpp:44:38:44:63 | ... * ... | provenance | | +| test.cpp:39:27:39:30 | **argv | test.cpp:46:38:46:63 | ... + ... | provenance | | +| test.cpp:39:27:39:30 | **argv | test.cpp:49:32:49:35 | size | provenance | | +| test.cpp:39:27:39:30 | **argv | test.cpp:50:17:50:30 | size | provenance | | +| test.cpp:39:27:39:30 | **argv | test.cpp:53:35:53:60 | ... * ... | provenance | | +| test.cpp:124:18:124:31 | *call to getenv | test.cpp:128:24:128:41 | ... * ... | provenance | | +| test.cpp:133:19:133:32 | *call to getenv | test.cpp:135:10:135:27 | ... * ... | provenance | | +| test.cpp:148:20:148:33 | *call to getenv | test.cpp:152:11:152:28 | ... * ... | provenance | | +| test.cpp:209:8:209:23 | *get_tainted_size | test.cpp:241:9:241:24 | call to get_tainted_size | provenance | | +| test.cpp:211:14:211:27 | *call to getenv | test.cpp:209:8:209:23 | *get_tainted_size | provenance | | +| test.cpp:230:21:230:21 | s | test.cpp:231:21:231:21 | s | provenance | | +| test.cpp:237:24:237:37 | *call to getenv | test.cpp:239:9:239:18 | local_size | provenance | | +| test.cpp:237:24:237:37 | *call to getenv | test.cpp:245:11:245:20 | local_size | provenance | | +| test.cpp:237:24:237:37 | *call to getenv | test.cpp:247:10:247:19 | local_size | provenance | | +| test.cpp:247:10:247:19 | local_size | test.cpp:230:21:230:21 | s | provenance | | +| test.cpp:250:20:250:27 | *out_size | test.cpp:289:17:289:20 | get_size output argument | provenance | | +| test.cpp:250:20:250:27 | *out_size | test.cpp:305:18:305:21 | get_size output argument | provenance | | +| test.cpp:251:18:251:31 | *call to getenv | test.cpp:250:20:250:27 | *out_size | provenance | | +| test.cpp:259:20:259:33 | *call to getenv | test.cpp:263:11:263:29 | ... * ... | provenance | | +| test.cpp:289:17:289:20 | get_size output argument | test.cpp:291:11:291:28 | ... * ... | provenance | | +| test.cpp:305:18:305:21 | get_size output argument | test.cpp:308:10:308:27 | ... * ... | provenance | | +| test.cpp:353:18:353:31 | *call to getenv | test.cpp:355:35:355:38 | size | provenance | | +| test.cpp:353:18:353:31 | *call to getenv | test.cpp:356:35:356:38 | size | provenance | | nodes | test.cpp:39:27:39:30 | **argv | semmle.label | **argv | | test.cpp:43:38:43:44 | tainted | semmle.label | tainted | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected index 5c7755d3bd19..801231316527 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected @@ -1,19 +1,19 @@ edges -| test2.cpp:12:21:12:21 | v | test2.cpp:14:11:14:11 | v | -| test2.cpp:25:22:25:23 | fscanf output argument | test2.cpp:27:13:27:13 | v | -| test2.cpp:27:13:27:13 | v | test2.cpp:12:21:12:21 | v | -| test2.cpp:36:9:36:14 | fgets output argument | test2.cpp:39:9:39:11 | num | -| test2.cpp:36:9:36:14 | fgets output argument | test2.cpp:40:3:40:5 | num | -| test3.c:10:27:10:30 | **argv | test.c:14:15:14:28 | maxConnections | -| test3.c:10:27:10:30 | **argv | test.c:44:7:44:10 | len2 | -| test3.c:10:27:10:30 | **argv | test.c:54:7:54:10 | len3 | -| test5.cpp:5:5:5:17 | *getTaintedInt | test5.cpp:17:6:17:18 | call to getTaintedInt | -| test5.cpp:5:5:5:17 | *getTaintedInt | test5.cpp:18:6:18:18 | call to getTaintedInt | -| test5.cpp:9:7:9:9 | gets output argument | test5.cpp:5:5:5:17 | *getTaintedInt | -| test5.cpp:18:6:18:18 | call to getTaintedInt | test5.cpp:19:6:19:6 | y | -| test.c:10:27:10:30 | **argv | test.c:14:15:14:28 | maxConnections | -| test.c:10:27:10:30 | **argv | test.c:44:7:44:10 | len2 | -| test.c:10:27:10:30 | **argv | test.c:54:7:54:10 | len3 | +| test2.cpp:12:21:12:21 | v | test2.cpp:14:11:14:11 | v | provenance | | +| test2.cpp:25:22:25:23 | fscanf output argument | test2.cpp:27:13:27:13 | v | provenance | | +| test2.cpp:27:13:27:13 | v | test2.cpp:12:21:12:21 | v | provenance | | +| test2.cpp:36:9:36:14 | fgets output argument | test2.cpp:39:9:39:11 | num | provenance | | +| test2.cpp:36:9:36:14 | fgets output argument | test2.cpp:40:3:40:5 | num | provenance | | +| test3.c:10:27:10:30 | **argv | test.c:14:15:14:28 | maxConnections | provenance | | +| test3.c:10:27:10:30 | **argv | test.c:44:7:44:10 | len2 | provenance | | +| test3.c:10:27:10:30 | **argv | test.c:54:7:54:10 | len3 | provenance | | +| test5.cpp:5:5:5:17 | *getTaintedInt | test5.cpp:17:6:17:18 | call to getTaintedInt | provenance | | +| test5.cpp:5:5:5:17 | *getTaintedInt | test5.cpp:18:6:18:18 | call to getTaintedInt | provenance | | +| test5.cpp:9:7:9:9 | gets output argument | test5.cpp:5:5:5:17 | *getTaintedInt | provenance | | +| test5.cpp:18:6:18:18 | call to getTaintedInt | test5.cpp:19:6:19:6 | y | provenance | | +| test.c:10:27:10:30 | **argv | test.c:14:15:14:28 | maxConnections | provenance | | +| test.c:10:27:10:30 | **argv | test.c:44:7:44:10 | len2 | provenance | | +| test.c:10:27:10:30 | **argv | test.c:54:7:54:10 | len3 | provenance | | nodes | test2.cpp:12:21:12:21 | v | semmle.label | v | | test2.cpp:14:11:14:11 | v | semmle.label | v | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected index 2a94ba309082..43e865d894bc 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected @@ -1,106 +1,106 @@ edges -| test.cpp:4:15:4:33 | call to malloc | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | -| test.cpp:6:14:6:15 | * ... | test.cpp:8:14:8:21 | * ... | -| test.cpp:16:15:16:33 | call to malloc | test.cpp:20:14:20:21 | * ... | -| test.cpp:28:15:28:37 | call to malloc | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | * ... | -| test.cpp:30:14:30:15 | * ... | test.cpp:32:14:32:21 | * ... | -| test.cpp:51:33:51:35 | *end | test.cpp:60:34:60:37 | mk_array output argument | -| test.cpp:52:19:52:37 | call to malloc | test.cpp:53:12:53:23 | ... + ... | -| test.cpp:53:12:53:23 | ... + ... | test.cpp:51:33:51:35 | *end | -| test.cpp:60:34:60:37 | mk_array output argument | test.cpp:67:9:67:14 | ... = ... | -| test.cpp:205:15:205:33 | call to malloc | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | -| test.cpp:260:13:260:24 | new[] | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | -| test.cpp:264:13:264:14 | * ... | test.cpp:264:13:264:14 | * ... | -| test.cpp:264:13:264:14 | * ... | test.cpp:264:13:264:14 | * ... | -| test.cpp:270:13:270:24 | new[] | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | ... = ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | ... = ... | -| test.cpp:355:14:355:27 | new[] | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | * ... | -| test.cpp:377:14:377:27 | new[] | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | * ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | * ... | -| test.cpp:410:14:410:27 | new[] | test.cpp:411:15:411:23 | & ... | -| test.cpp:410:14:410:27 | new[] | test.cpp:415:7:415:15 | ... = ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | ... = ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | ... = ... | -| test.cpp:421:14:421:27 | new[] | test.cpp:422:15:422:23 | & ... | -| test.cpp:421:14:421:27 | new[] | test.cpp:426:7:426:15 | ... = ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | ... = ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | ... = ... | -| test.cpp:432:14:432:27 | new[] | test.cpp:433:15:433:23 | & ... | -| test.cpp:432:14:432:27 | new[] | test.cpp:438:7:438:15 | ... = ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | ... = ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | ... = ... | -| test.cpp:444:14:444:27 | new[] | test.cpp:445:15:445:23 | & ... | -| test.cpp:444:14:444:27 | new[] | test.cpp:450:7:450:15 | ... = ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | ... = ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | ... = ... | -| test.cpp:480:14:480:27 | new[] | test.cpp:481:15:481:23 | & ... | -| test.cpp:480:14:480:27 | new[] | test.cpp:486:7:486:15 | ... = ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | ... = ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | ... = ... | -| test.cpp:543:14:543:27 | new[] | test.cpp:548:5:548:19 | ... = ... | -| test.cpp:554:14:554:27 | new[] | test.cpp:559:5:559:19 | ... = ... | -| test.cpp:642:14:642:31 | new[] | test.cpp:647:5:647:19 | ... = ... | -| test.cpp:730:12:730:28 | new[] | test.cpp:732:16:732:26 | ... + ... | -| test.cpp:732:16:732:26 | ... + ... | test.cpp:732:16:732:26 | ... + ... | -| test.cpp:732:16:732:26 | ... + ... | test.cpp:733:5:733:12 | ... = ... | -| test.cpp:732:16:732:26 | ... + ... | test.cpp:733:5:733:12 | ... = ... | -| test.cpp:754:18:754:31 | new[] | test.cpp:767:16:767:29 | access to array | -| test.cpp:754:18:754:31 | new[] | test.cpp:767:16:767:29 | access to array | -| test.cpp:754:18:754:31 | new[] | test.cpp:772:16:772:29 | access to array | -| test.cpp:754:18:754:31 | new[] | test.cpp:772:16:772:29 | access to array | -| test.cpp:781:14:781:27 | new[] | test.cpp:786:18:786:27 | access to array | -| test.cpp:792:60:792:62 | *end | test.cpp:800:40:800:43 | mk_array_no_field_flow output argument | -| test.cpp:792:60:792:62 | *end | test.cpp:832:40:832:43 | mk_array_no_field_flow output argument | -| test.cpp:793:14:793:32 | call to malloc | test.cpp:794:12:794:24 | ... + ... | -| test.cpp:794:12:794:24 | ... + ... | test.cpp:792:60:792:62 | *end | -| test.cpp:800:40:800:43 | mk_array_no_field_flow output argument | test.cpp:807:7:807:12 | ... = ... | -| test.cpp:815:52:815:54 | end | test.cpp:815:52:815:54 | end | -| test.cpp:815:52:815:54 | end | test.cpp:821:7:821:12 | ... = ... | -| test.cpp:815:52:815:54 | end | test.cpp:821:7:821:12 | ... = ... | -| test.cpp:832:40:832:43 | mk_array_no_field_flow output argument | test.cpp:833:37:833:39 | end | -| test.cpp:833:37:833:39 | end | test.cpp:815:52:815:54 | end | -| test.cpp:841:18:841:35 | call to malloc | test.cpp:842:3:842:20 | ... = ... | -| test.cpp:848:20:848:37 | call to malloc | test.cpp:849:5:849:22 | ... = ... | -| test.cpp:856:12:856:35 | call to malloc | test.cpp:857:16:857:29 | ... + ... | -| test.cpp:857:16:857:29 | ... + ... | test.cpp:857:16:857:29 | ... + ... | -| test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | -| test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | +| test.cpp:4:15:4:33 | call to malloc | test.cpp:5:15:5:22 | ... + ... | provenance | | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:5:15:5:22 | ... + ... | provenance | | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | provenance | | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | provenance | | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | provenance | | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | provenance | | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | provenance | | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | provenance | | +| test.cpp:6:14:6:15 | * ... | test.cpp:8:14:8:21 | * ... | provenance | | +| test.cpp:16:15:16:33 | call to malloc | test.cpp:20:14:20:21 | * ... | provenance | | +| test.cpp:28:15:28:37 | call to malloc | test.cpp:29:15:29:28 | ... + ... | provenance | | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:29:15:29:28 | ... + ... | provenance | | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | provenance | | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | provenance | | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | provenance | | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | provenance | | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | * ... | provenance | | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | * ... | provenance | | +| test.cpp:30:14:30:15 | * ... | test.cpp:32:14:32:21 | * ... | provenance | | +| test.cpp:51:33:51:35 | *end | test.cpp:60:34:60:37 | mk_array output argument | provenance | | +| test.cpp:52:19:52:37 | call to malloc | test.cpp:53:12:53:23 | ... + ... | provenance | | +| test.cpp:53:12:53:23 | ... + ... | test.cpp:51:33:51:35 | *end | provenance | | +| test.cpp:60:34:60:37 | mk_array output argument | test.cpp:67:9:67:14 | ... = ... | provenance | | +| test.cpp:205:15:205:33 | call to malloc | test.cpp:206:17:206:23 | ... + ... | provenance | | +| test.cpp:206:17:206:23 | ... + ... | test.cpp:206:17:206:23 | ... + ... | provenance | | +| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | provenance | | +| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | provenance | | +| test.cpp:260:13:260:24 | new[] | test.cpp:261:14:261:21 | ... + ... | provenance | | +| test.cpp:261:14:261:21 | ... + ... | test.cpp:261:14:261:21 | ... + ... | provenance | | +| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | provenance | | +| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | provenance | | +| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | provenance | | +| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | provenance | | +| test.cpp:264:13:264:14 | * ... | test.cpp:264:13:264:14 | * ... | provenance | | +| test.cpp:264:13:264:14 | * ... | test.cpp:264:13:264:14 | * ... | provenance | | +| test.cpp:270:13:270:24 | new[] | test.cpp:271:14:271:21 | ... + ... | provenance | | +| test.cpp:271:14:271:21 | ... + ... | test.cpp:271:14:271:21 | ... + ... | provenance | | +| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | ... = ... | provenance | | +| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | ... = ... | provenance | | +| test.cpp:355:14:355:27 | new[] | test.cpp:356:15:356:23 | ... + ... | provenance | | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:356:15:356:23 | ... + ... | provenance | | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | * ... | provenance | | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | * ... | provenance | | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | * ... | provenance | | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | * ... | provenance | | +| test.cpp:377:14:377:27 | new[] | test.cpp:378:15:378:23 | ... + ... | provenance | | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | provenance | | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | * ... | provenance | | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | * ... | provenance | | +| test.cpp:410:14:410:27 | new[] | test.cpp:411:15:411:23 | & ... | provenance | | +| test.cpp:410:14:410:27 | new[] | test.cpp:415:7:415:15 | ... = ... | provenance | | +| test.cpp:411:15:411:23 | & ... | test.cpp:411:15:411:23 | & ... | provenance | | +| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | ... = ... | provenance | | +| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | ... = ... | provenance | | +| test.cpp:421:14:421:27 | new[] | test.cpp:422:15:422:23 | & ... | provenance | | +| test.cpp:421:14:421:27 | new[] | test.cpp:426:7:426:15 | ... = ... | provenance | | +| test.cpp:422:15:422:23 | & ... | test.cpp:422:15:422:23 | & ... | provenance | | +| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | ... = ... | provenance | | +| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | ... = ... | provenance | | +| test.cpp:432:14:432:27 | new[] | test.cpp:433:15:433:23 | & ... | provenance | | +| test.cpp:432:14:432:27 | new[] | test.cpp:438:7:438:15 | ... = ... | provenance | | +| test.cpp:433:15:433:23 | & ... | test.cpp:433:15:433:23 | & ... | provenance | | +| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | ... = ... | provenance | | +| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | ... = ... | provenance | | +| test.cpp:444:14:444:27 | new[] | test.cpp:445:15:445:23 | & ... | provenance | | +| test.cpp:444:14:444:27 | new[] | test.cpp:450:7:450:15 | ... = ... | provenance | | +| test.cpp:445:15:445:23 | & ... | test.cpp:445:15:445:23 | & ... | provenance | | +| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | ... = ... | provenance | | +| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | ... = ... | provenance | | +| test.cpp:480:14:480:27 | new[] | test.cpp:481:15:481:23 | & ... | provenance | | +| test.cpp:480:14:480:27 | new[] | test.cpp:486:7:486:15 | ... = ... | provenance | | +| test.cpp:481:15:481:23 | & ... | test.cpp:481:15:481:23 | & ... | provenance | | +| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | ... = ... | provenance | | +| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | ... = ... | provenance | | +| test.cpp:543:14:543:27 | new[] | test.cpp:548:5:548:19 | ... = ... | provenance | | +| test.cpp:554:14:554:27 | new[] | test.cpp:559:5:559:19 | ... = ... | provenance | | +| test.cpp:642:14:642:31 | new[] | test.cpp:647:5:647:19 | ... = ... | provenance | | +| test.cpp:730:12:730:28 | new[] | test.cpp:732:16:732:26 | ... + ... | provenance | | +| test.cpp:732:16:732:26 | ... + ... | test.cpp:732:16:732:26 | ... + ... | provenance | | +| test.cpp:732:16:732:26 | ... + ... | test.cpp:733:5:733:12 | ... = ... | provenance | | +| test.cpp:732:16:732:26 | ... + ... | test.cpp:733:5:733:12 | ... = ... | provenance | | +| test.cpp:754:18:754:31 | new[] | test.cpp:767:16:767:29 | access to array | provenance | | +| test.cpp:754:18:754:31 | new[] | test.cpp:767:16:767:29 | access to array | provenance | | +| test.cpp:754:18:754:31 | new[] | test.cpp:772:16:772:29 | access to array | provenance | | +| test.cpp:754:18:754:31 | new[] | test.cpp:772:16:772:29 | access to array | provenance | | +| test.cpp:781:14:781:27 | new[] | test.cpp:786:18:786:27 | access to array | provenance | | +| test.cpp:792:60:792:62 | *end | test.cpp:800:40:800:43 | mk_array_no_field_flow output argument | provenance | | +| test.cpp:792:60:792:62 | *end | test.cpp:832:40:832:43 | mk_array_no_field_flow output argument | provenance | | +| test.cpp:793:14:793:32 | call to malloc | test.cpp:794:12:794:24 | ... + ... | provenance | | +| test.cpp:794:12:794:24 | ... + ... | test.cpp:792:60:792:62 | *end | provenance | | +| test.cpp:800:40:800:43 | mk_array_no_field_flow output argument | test.cpp:807:7:807:12 | ... = ... | provenance | | +| test.cpp:815:52:815:54 | end | test.cpp:815:52:815:54 | end | provenance | | +| test.cpp:815:52:815:54 | end | test.cpp:821:7:821:12 | ... = ... | provenance | | +| test.cpp:815:52:815:54 | end | test.cpp:821:7:821:12 | ... = ... | provenance | | +| test.cpp:832:40:832:43 | mk_array_no_field_flow output argument | test.cpp:833:37:833:39 | end | provenance | | +| test.cpp:833:37:833:39 | end | test.cpp:815:52:815:54 | end | provenance | | +| test.cpp:841:18:841:35 | call to malloc | test.cpp:842:3:842:20 | ... = ... | provenance | | +| test.cpp:848:20:848:37 | call to malloc | test.cpp:849:5:849:22 | ... = ... | provenance | | +| test.cpp:856:12:856:35 | call to malloc | test.cpp:857:16:857:29 | ... + ... | provenance | | +| test.cpp:857:16:857:29 | ... + ... | test.cpp:857:16:857:29 | ... + ... | provenance | | +| test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | provenance | | +| test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | provenance | | nodes | test.cpp:4:15:4:33 | call to malloc | semmle.label | call to malloc | | test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected index 800e2d06c441..f5fa846e7a88 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected @@ -1,10 +1,10 @@ edges -| test.cpp:16:25:16:42 | *call to getenv | test.cpp:20:14:20:20 | *address | -| test.cpp:27:25:27:42 | *call to getenv | test.cpp:31:14:31:20 | *address | -| test.cpp:38:25:38:42 | *call to getenv | test.cpp:42:14:42:20 | *address | -| test.cpp:49:25:49:42 | *call to getenv | test.cpp:52:14:52:20 | *address | -| test.cpp:49:25:49:42 | *call to getenv | test.cpp:56:14:56:20 | *address | -| test.cpp:49:25:49:42 | *call to getenv | test.cpp:60:14:60:20 | *address | +| test.cpp:16:25:16:42 | *call to getenv | test.cpp:20:14:20:20 | *address | provenance | | +| test.cpp:27:25:27:42 | *call to getenv | test.cpp:31:14:31:20 | *address | provenance | | +| test.cpp:38:25:38:42 | *call to getenv | test.cpp:42:14:42:20 | *address | provenance | | +| test.cpp:49:25:49:42 | *call to getenv | test.cpp:52:14:52:20 | *address | provenance | | +| test.cpp:49:25:49:42 | *call to getenv | test.cpp:56:14:56:20 | *address | provenance | | +| test.cpp:49:25:49:42 | *call to getenv | test.cpp:60:14:60:20 | *address | provenance | | nodes | test.cpp:16:25:16:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:20:14:20:20 | *address | semmle.label | *address | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextBufferWrite.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextBufferWrite.expected index 6864309a63ea..edd3a273cc64 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextBufferWrite.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextBufferWrite.expected @@ -1,5 +1,5 @@ edges -| test.cpp:53:27:53:30 | **argv | test.cpp:58:25:58:29 | *input | +| test.cpp:53:27:53:30 | **argv | test.cpp:58:25:58:29 | *input | provenance | | nodes | test2.cpp:110:3:110:6 | *call to gets | semmle.label | *call to gets | | test.cpp:53:27:53:30 | **argv | semmle.label | **argv | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextFileWrite.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextFileWrite.expected index c2ff01e3e0ce..ddeb3fed32f9 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextFileWrite.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextFileWrite.expected @@ -1,10 +1,10 @@ edges -| test2.cpp:62:18:62:25 | password | test2.cpp:65:31:65:34 | cpy1 | -| test2.cpp:72:15:72:24 | password | test2.cpp:73:30:73:32 | *buf | -| test2.cpp:72:15:72:24 | password | test2.cpp:76:30:76:32 | *buf | -| test2.cpp:98:45:98:52 | password | test2.cpp:99:27:99:32 | *buffer | -| test.cpp:70:38:70:48 | thePassword | test.cpp:73:43:73:53 | thePassword | -| test.cpp:73:63:73:73 | thePassword | test.cpp:73:43:73:53 | thePassword | +| test2.cpp:62:18:62:25 | password | test2.cpp:65:31:65:34 | cpy1 | provenance | | +| test2.cpp:72:15:72:24 | password | test2.cpp:73:30:73:32 | *buf | provenance | | +| test2.cpp:72:15:72:24 | password | test2.cpp:76:30:76:32 | *buf | provenance | | +| test2.cpp:98:45:98:52 | password | test2.cpp:99:27:99:32 | *buffer | provenance | | +| test.cpp:70:38:70:48 | thePassword | test.cpp:73:43:73:53 | thePassword | provenance | | +| test.cpp:73:63:73:73 | thePassword | test.cpp:73:43:73:53 | thePassword | provenance | | nodes | test2.cpp:43:36:43:43 | password | semmle.label | password | | test2.cpp:44:37:44:45 | thepasswd | semmle.label | thepasswd | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected index 364da5b663b4..8be2ec60f4a9 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected @@ -1,36 +1,36 @@ edges -| test3.cpp:74:21:74:29 | password1 | test3.cpp:76:15:76:17 | ptr | -| test3.cpp:81:15:81:22 | password | test3.cpp:83:15:83:17 | ptr | -| test3.cpp:112:20:112:25 | buffer | test3.cpp:114:14:114:19 | buffer | -| test3.cpp:117:28:117:33 | buffer | test3.cpp:117:13:117:14 | *id | -| test3.cpp:124:7:124:20 | *get_global_str | test3.cpp:144:16:144:29 | call to get_global_str | -| test3.cpp:126:9:126:23 | global_password | test3.cpp:124:7:124:20 | *get_global_str | -| test3.cpp:134:11:134:18 | password | test3.cpp:112:20:112:25 | buffer | -| test3.cpp:138:21:138:22 | call to id | test3.cpp:140:15:140:17 | ptr | -| test3.cpp:138:24:138:32 | password1 | test3.cpp:117:28:117:33 | buffer | -| test3.cpp:138:24:138:32 | password1 | test3.cpp:138:21:138:22 | call to id | -| test3.cpp:144:16:144:29 | call to get_global_str | test3.cpp:146:15:146:18 | data | -| test3.cpp:157:19:157:26 | password | test3.cpp:159:15:159:20 | *buffer | -| test3.cpp:270:16:270:23 | password | test3.cpp:272:15:272:18 | *data | -| test3.cpp:278:20:278:23 | data | test3.cpp:280:14:280:17 | data | -| test3.cpp:283:20:283:23 | data | test3.cpp:285:14:285:17 | data | -| test3.cpp:288:20:288:23 | data | test3.cpp:290:14:290:17 | data | -| test3.cpp:293:20:293:23 | data | test3.cpp:295:14:295:17 | data | -| test3.cpp:298:20:298:23 | data | test3.cpp:300:14:300:17 | data | -| test3.cpp:313:11:313:19 | password1 | test3.cpp:278:20:278:23 | data | -| test3.cpp:314:11:314:19 | password1 | test3.cpp:283:20:283:23 | data | -| test3.cpp:316:11:316:19 | password1 | test3.cpp:283:20:283:23 | data | -| test3.cpp:317:11:317:19 | password1 | test3.cpp:288:20:288:23 | data | -| test3.cpp:322:16:322:24 | password2 | test3.cpp:324:11:324:14 | data | -| test3.cpp:322:16:322:24 | password2 | test3.cpp:325:11:325:14 | data | -| test3.cpp:324:11:324:14 | data | test3.cpp:293:20:293:23 | data | -| test3.cpp:325:11:325:14 | data | test3.cpp:298:20:298:23 | data | -| test3.cpp:526:44:526:54 | my_latitude | test3.cpp:527:15:527:20 | *buffer | -| test3.cpp:532:45:532:58 | home_longitude | test3.cpp:533:15:533:20 | *buffer | -| test3.cpp:551:47:551:58 | salaryString | test3.cpp:552:15:552:20 | *buffer | -| test3.cpp:556:19:556:30 | salaryString | test3.cpp:559:15:559:20 | *buffer | -| test3.cpp:571:8:571:21 | call to get_home_phone | test3.cpp:572:14:572:16 | str | -| test3.cpp:577:8:577:23 | call to get_home_address | test3.cpp:578:14:578:16 | str | +| test3.cpp:74:21:74:29 | password1 | test3.cpp:76:15:76:17 | ptr | provenance | | +| test3.cpp:81:15:81:22 | password | test3.cpp:83:15:83:17 | ptr | provenance | | +| test3.cpp:112:20:112:25 | buffer | test3.cpp:114:14:114:19 | buffer | provenance | | +| test3.cpp:117:28:117:33 | buffer | test3.cpp:117:13:117:14 | *id | provenance | | +| test3.cpp:124:7:124:20 | *get_global_str | test3.cpp:144:16:144:29 | call to get_global_str | provenance | | +| test3.cpp:126:9:126:23 | global_password | test3.cpp:124:7:124:20 | *get_global_str | provenance | | +| test3.cpp:134:11:134:18 | password | test3.cpp:112:20:112:25 | buffer | provenance | | +| test3.cpp:138:21:138:22 | call to id | test3.cpp:140:15:140:17 | ptr | provenance | | +| test3.cpp:138:24:138:32 | password1 | test3.cpp:117:28:117:33 | buffer | provenance | | +| test3.cpp:138:24:138:32 | password1 | test3.cpp:138:21:138:22 | call to id | provenance | | +| test3.cpp:144:16:144:29 | call to get_global_str | test3.cpp:146:15:146:18 | data | provenance | | +| test3.cpp:157:19:157:26 | password | test3.cpp:159:15:159:20 | *buffer | provenance | | +| test3.cpp:270:16:270:23 | password | test3.cpp:272:15:272:18 | *data | provenance | | +| test3.cpp:278:20:278:23 | data | test3.cpp:280:14:280:17 | data | provenance | | +| test3.cpp:283:20:283:23 | data | test3.cpp:285:14:285:17 | data | provenance | | +| test3.cpp:288:20:288:23 | data | test3.cpp:290:14:290:17 | data | provenance | | +| test3.cpp:293:20:293:23 | data | test3.cpp:295:14:295:17 | data | provenance | | +| test3.cpp:298:20:298:23 | data | test3.cpp:300:14:300:17 | data | provenance | | +| test3.cpp:313:11:313:19 | password1 | test3.cpp:278:20:278:23 | data | provenance | | +| test3.cpp:314:11:314:19 | password1 | test3.cpp:283:20:283:23 | data | provenance | | +| test3.cpp:316:11:316:19 | password1 | test3.cpp:283:20:283:23 | data | provenance | | +| test3.cpp:317:11:317:19 | password1 | test3.cpp:288:20:288:23 | data | provenance | | +| test3.cpp:322:16:322:24 | password2 | test3.cpp:324:11:324:14 | data | provenance | | +| test3.cpp:322:16:322:24 | password2 | test3.cpp:325:11:325:14 | data | provenance | | +| test3.cpp:324:11:324:14 | data | test3.cpp:293:20:293:23 | data | provenance | | +| test3.cpp:325:11:325:14 | data | test3.cpp:298:20:298:23 | data | provenance | | +| test3.cpp:526:44:526:54 | my_latitude | test3.cpp:527:15:527:20 | *buffer | provenance | | +| test3.cpp:532:45:532:58 | home_longitude | test3.cpp:533:15:533:20 | *buffer | provenance | | +| test3.cpp:551:47:551:58 | salaryString | test3.cpp:552:15:552:20 | *buffer | provenance | | +| test3.cpp:556:19:556:30 | salaryString | test3.cpp:559:15:559:20 | *buffer | provenance | | +| test3.cpp:571:8:571:21 | call to get_home_phone | test3.cpp:572:14:572:16 | str | provenance | | +| test3.cpp:577:8:577:23 | call to get_home_address | test3.cpp:578:14:578:16 | str | provenance | | nodes | test3.cpp:22:15:22:23 | password1 | semmle.label | password1 | | test3.cpp:26:15:26:23 | password2 | semmle.label | password2 | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected index 49620af742ff..fa12a3030f17 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected @@ -1,17 +1,17 @@ edges -| test.cpp:11:26:11:28 | *url | test.cpp:15:30:15:32 | *url | -| test.cpp:24:13:24:17 | **url_g | test.cpp:38:11:38:15 | *url_g | -| test.cpp:24:21:24:40 | *http://example.com | test.cpp:24:13:24:17 | **url_g | -| test.cpp:28:10:28:29 | *http://example.com | test.cpp:11:26:11:28 | *url | -| test.cpp:35:23:35:42 | *http://example.com | test.cpp:39:11:39:15 | *url_l | -| test.cpp:36:26:36:45 | *http://example.com | test.cpp:40:11:40:17 | *access to array | -| test.cpp:38:11:38:15 | *url_g | test.cpp:11:26:11:28 | *url | -| test.cpp:39:11:39:15 | *url_l | test.cpp:11:26:11:28 | *url | -| test.cpp:40:11:40:17 | *access to array | test.cpp:11:26:11:28 | *url | -| test.cpp:46:18:46:26 | *http:// | test.cpp:49:11:49:16 | *buffer | -| test.cpp:49:11:49:16 | *buffer | test.cpp:11:26:11:28 | *url | -| test.cpp:110:21:110:40 | *http://example.com | test.cpp:121:11:121:13 | *ptr | -| test.cpp:121:11:121:13 | *ptr | test.cpp:11:26:11:28 | *url | +| test.cpp:11:26:11:28 | *url | test.cpp:15:30:15:32 | *url | provenance | | +| test.cpp:24:13:24:17 | **url_g | test.cpp:38:11:38:15 | *url_g | provenance | | +| test.cpp:24:21:24:40 | *http://example.com | test.cpp:24:13:24:17 | **url_g | provenance | | +| test.cpp:28:10:28:29 | *http://example.com | test.cpp:11:26:11:28 | *url | provenance | | +| test.cpp:35:23:35:42 | *http://example.com | test.cpp:39:11:39:15 | *url_l | provenance | | +| test.cpp:36:26:36:45 | *http://example.com | test.cpp:40:11:40:17 | *access to array | provenance | | +| test.cpp:38:11:38:15 | *url_g | test.cpp:11:26:11:28 | *url | provenance | | +| test.cpp:39:11:39:15 | *url_l | test.cpp:11:26:11:28 | *url | provenance | | +| test.cpp:40:11:40:17 | *access to array | test.cpp:11:26:11:28 | *url | provenance | | +| test.cpp:46:18:46:26 | *http:// | test.cpp:49:11:49:16 | *buffer | provenance | | +| test.cpp:49:11:49:16 | *buffer | test.cpp:11:26:11:28 | *url | provenance | | +| test.cpp:110:21:110:40 | *http://example.com | test.cpp:121:11:121:13 | *ptr | provenance | | +| test.cpp:121:11:121:13 | *ptr | test.cpp:11:26:11:28 | *url | provenance | | nodes | test.cpp:11:26:11:28 | *url | semmle.label | *url | | test.cpp:15:30:15:32 | *url | semmle.label | *url | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseAfterFree/UseAfterFree.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseAfterFree/UseAfterFree.expected index 07758344bf30..22cb3f2fe810 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseAfterFree/UseAfterFree.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-416/semmle/tests/UseAfterFree/UseAfterFree.expected @@ -1,16 +1,16 @@ edges -| test.cpp:39:7:39:10 | pointer to free output argument | test.cpp:41:6:41:9 | data | -| test.cpp:75:7:75:10 | pointer to free output argument | test.cpp:79:7:79:10 | data | -| test.cpp:106:7:106:10 | pointer to free output argument | test.cpp:108:6:108:9 | data | -| test.cpp:116:7:116:10 | pointer to free output argument | test.cpp:119:6:119:9 | data | -| test.cpp:127:7:127:10 | pointer to free output argument | test.cpp:130:6:130:9 | data | -| test.cpp:164:9:164:9 | pointer to operator delete output argument | test.cpp:165:2:165:2 | c | -| test.cpp:164:9:164:9 | pointer to operator delete output argument | test.cpp:166:3:166:4 | * ... | -| test.cpp:181:7:181:10 | pointer to free output argument | test.cpp:186:6:186:9 | data | -| test.cpp:192:7:192:10 | pointer to free output argument | test.cpp:197:6:197:9 | data | -| test.cpp:203:7:203:10 | pointer to free output argument | test.cpp:209:6:209:9 | data | -| test.cpp:207:8:207:11 | pointer to free output argument | test.cpp:209:6:209:9 | data | -| test.cpp:216:9:216:9 | pointer to operator delete output argument | test.cpp:217:6:217:6 | x | +| test.cpp:39:7:39:10 | pointer to free output argument | test.cpp:41:6:41:9 | data | provenance | | +| test.cpp:75:7:75:10 | pointer to free output argument | test.cpp:79:7:79:10 | data | provenance | | +| test.cpp:106:7:106:10 | pointer to free output argument | test.cpp:108:6:108:9 | data | provenance | | +| test.cpp:116:7:116:10 | pointer to free output argument | test.cpp:119:6:119:9 | data | provenance | | +| test.cpp:127:7:127:10 | pointer to free output argument | test.cpp:130:6:130:9 | data | provenance | | +| test.cpp:164:9:164:9 | pointer to operator delete output argument | test.cpp:165:2:165:2 | c | provenance | | +| test.cpp:164:9:164:9 | pointer to operator delete output argument | test.cpp:166:3:166:4 | * ... | provenance | | +| test.cpp:181:7:181:10 | pointer to free output argument | test.cpp:186:6:186:9 | data | provenance | | +| test.cpp:192:7:192:10 | pointer to free output argument | test.cpp:197:6:197:9 | data | provenance | | +| test.cpp:203:7:203:10 | pointer to free output argument | test.cpp:209:6:209:9 | data | provenance | | +| test.cpp:207:8:207:11 | pointer to free output argument | test.cpp:209:6:209:9 | data | provenance | | +| test.cpp:216:9:216:9 | pointer to operator delete output argument | test.cpp:217:6:217:6 | x | provenance | | nodes | test.cpp:39:7:39:10 | pointer to free output argument | semmle.label | pointer to free output argument | | test.cpp:41:6:41:9 | data | semmle.label | data | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/SAMATE/PotentiallyExposedSystemData.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-497/SAMATE/PotentiallyExposedSystemData.expected index 6746c557288a..3fc58925ff7b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/SAMATE/PotentiallyExposedSystemData.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/SAMATE/PotentiallyExposedSystemData.expected @@ -1,5 +1,5 @@ edges -| tests.c:57:21:57:28 | *password | tests.c:70:70:70:77 | *password | +| tests.c:57:21:57:28 | *password | tests.c:70:70:70:77 | *password | provenance | | nodes | tests.c:57:21:57:28 | *password | semmle.label | *password | | tests.c:70:70:70:77 | *password | semmle.label | *password | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected index 9c5a5a9f2709..82fd2be33f87 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/ExposedSystemData.expected @@ -1,20 +1,20 @@ edges -| tests2.cpp:50:13:50:19 | **global1 | tests2.cpp:82:14:82:20 | *global1 | -| tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | tests2.cpp:50:13:50:19 | **global1 | -| tests2.cpp:78:18:78:38 | *call to mysql_get_client_info | tests2.cpp:81:14:81:19 | *buffer | -| tests2.cpp:91:42:91:45 | *str1 | tests2.cpp:93:14:93:17 | *str1 | -| tests2.cpp:101:8:101:15 | *call to getpwuid | tests2.cpp:102:14:102:15 | *pw | -| tests2.cpp:109:3:109:4 | *c1 [post update] [*ptr] | tests2.cpp:111:14:111:15 | *c1 [*ptr] | -| tests2.cpp:109:3:109:36 | *... = ... | tests2.cpp:109:3:109:4 | *c1 [post update] [*ptr] | -| tests2.cpp:109:12:109:17 | *call to getenv | tests2.cpp:109:3:109:36 | *... = ... | -| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:14:111:19 | *ptr | -| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:17:111:19 | *ptr | -| tests2.cpp:111:17:111:19 | *ptr | tests2.cpp:111:14:111:19 | *ptr | -| tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | -| tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:43:20:43:23 | *path | -| tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:76:19:76:22 | *path | -| tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:80:20:80:23 | *path | -| tests_sysconf.cpp:36:21:36:27 | confstr output argument | tests_sysconf.cpp:39:19:39:25 | *pathbuf | +| tests2.cpp:50:13:50:19 | **global1 | tests2.cpp:82:14:82:20 | *global1 | provenance | | +| tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | tests2.cpp:50:13:50:19 | **global1 | provenance | | +| tests2.cpp:78:18:78:38 | *call to mysql_get_client_info | tests2.cpp:81:14:81:19 | *buffer | provenance | | +| tests2.cpp:91:42:91:45 | *str1 | tests2.cpp:93:14:93:17 | *str1 | provenance | | +| tests2.cpp:101:8:101:15 | *call to getpwuid | tests2.cpp:102:14:102:15 | *pw | provenance | | +| tests2.cpp:109:3:109:4 | *c1 [post update] [*ptr] | tests2.cpp:111:14:111:15 | *c1 [*ptr] | provenance | | +| tests2.cpp:109:3:109:36 | *... = ... | tests2.cpp:109:3:109:4 | *c1 [post update] [*ptr] | provenance | | +| tests2.cpp:109:12:109:17 | *call to getenv | tests2.cpp:109:3:109:36 | *... = ... | provenance | | +| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:14:111:19 | *ptr | provenance | | +| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:17:111:19 | *ptr | provenance | | +| tests2.cpp:111:17:111:19 | *ptr | tests2.cpp:111:14:111:19 | *ptr | provenance | | +| tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | provenance | | +| tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:43:20:43:23 | *path | provenance | | +| tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:76:19:76:22 | *path | provenance | | +| tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:80:20:80:23 | *path | provenance | | +| tests_sysconf.cpp:36:21:36:27 | confstr output argument | tests_sysconf.cpp:39:19:39:25 | *pathbuf | provenance | | nodes | tests2.cpp:50:13:50:19 | **global1 | semmle.label | **global1 | | tests2.cpp:50:23:50:43 | *call to mysql_get_client_info | semmle.label | *call to mysql_get_client_info | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/PotentiallyExposedSystemData.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/PotentiallyExposedSystemData.expected index 5178a4019398..32e7895b7948 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/PotentiallyExposedSystemData.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-497/semmle/tests/PotentiallyExposedSystemData.expected @@ -1,18 +1,18 @@ edges -| tests.cpp:62:7:62:18 | **global_token | tests.cpp:71:27:71:38 | *global_token | -| tests.cpp:62:7:62:18 | **global_token | tests.cpp:73:27:73:31 | *maybe | -| tests.cpp:62:22:62:27 | *call to getenv | tests.cpp:62:7:62:18 | **global_token | -| tests.cpp:86:29:86:31 | *msg | tests.cpp:88:15:88:17 | *msg | -| tests.cpp:97:13:97:34 | *call to getenv | tests.cpp:86:29:86:31 | *msg | -| tests.cpp:107:30:107:32 | *msg | tests.cpp:111:15:111:17 | *tmp | -| tests.cpp:114:30:114:32 | *msg | tests.cpp:119:7:119:12 | *buffer | -| tests.cpp:122:30:122:32 | *msg | tests.cpp:124:15:124:17 | *msg | -| tests.cpp:131:14:131:35 | *call to getenv | tests.cpp:107:30:107:32 | *msg | -| tests.cpp:132:14:132:35 | *call to getenv | tests.cpp:114:30:114:32 | *msg | -| tests.cpp:133:14:133:35 | *call to getenv | tests.cpp:122:30:122:32 | *msg | -| tests.cpp:139:17:139:22 | *call to getenv | tests.cpp:141:15:141:20 | *secret | -| tests_passwd.cpp:16:8:16:15 | *call to getpwnam | tests_passwd.cpp:18:29:18:31 | *pwd | -| tests_passwd.cpp:16:8:16:15 | *call to getpwnam | tests_passwd.cpp:19:26:19:28 | *pwd | +| tests.cpp:62:7:62:18 | **global_token | tests.cpp:71:27:71:38 | *global_token | provenance | | +| tests.cpp:62:7:62:18 | **global_token | tests.cpp:73:27:73:31 | *maybe | provenance | | +| tests.cpp:62:22:62:27 | *call to getenv | tests.cpp:62:7:62:18 | **global_token | provenance | | +| tests.cpp:86:29:86:31 | *msg | tests.cpp:88:15:88:17 | *msg | provenance | | +| tests.cpp:97:13:97:34 | *call to getenv | tests.cpp:86:29:86:31 | *msg | provenance | | +| tests.cpp:107:30:107:32 | *msg | tests.cpp:111:15:111:17 | *tmp | provenance | | +| tests.cpp:114:30:114:32 | *msg | tests.cpp:119:7:119:12 | *buffer | provenance | | +| tests.cpp:122:30:122:32 | *msg | tests.cpp:124:15:124:17 | *msg | provenance | | +| tests.cpp:131:14:131:35 | *call to getenv | tests.cpp:107:30:107:32 | *msg | provenance | | +| tests.cpp:132:14:132:35 | *call to getenv | tests.cpp:114:30:114:32 | *msg | provenance | | +| tests.cpp:133:14:133:35 | *call to getenv | tests.cpp:122:30:122:32 | *msg | provenance | | +| tests.cpp:139:17:139:22 | *call to getenv | tests.cpp:141:15:141:20 | *secret | provenance | | +| tests_passwd.cpp:16:8:16:15 | *call to getpwnam | tests_passwd.cpp:18:29:18:31 | *pwd | provenance | | +| tests_passwd.cpp:16:8:16:15 | *call to getpwnam | tests_passwd.cpp:19:26:19:28 | *pwd | provenance | | nodes | tests.cpp:48:15:48:36 | *call to getenv | semmle.label | *call to getenv | | tests.cpp:49:15:49:36 | *call to getenv | semmle.label | *call to getenv | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected index 4efc0e59620d..70386662fe88 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected @@ -1,52 +1,52 @@ edges -| tests2.cpp:20:17:20:31 | call to SAXParser | tests2.cpp:22:2:22:2 | *p | -| tests2.cpp:33:17:33:31 | call to SAXParser | tests2.cpp:37:2:37:2 | *p | -| tests2.cpp:49:12:49:12 | call to SAXParser | tests2.cpp:51:2:51:2 | *p | -| tests3.cpp:23:21:23:53 | *call to createXMLReader | tests3.cpp:25:2:25:2 | *p | -| tests3.cpp:35:16:35:20 | **p_3_3 | tests3.cpp:38:2:38:6 | *p_3_3 | -| tests3.cpp:35:24:35:56 | *call to createXMLReader | tests3.cpp:35:16:35:20 | **p_3_3 | -| tests3.cpp:48:16:48:20 | **p_3_5 | tests3.cpp:56:2:56:6 | *p_3_5 | -| tests3.cpp:48:24:48:56 | *call to createXMLReader | tests3.cpp:48:16:48:20 | **p_3_5 | -| tests3.cpp:60:21:60:53 | *call to createXMLReader | tests3.cpp:63:2:63:2 | *p | -| tests3.cpp:67:21:67:53 | *call to createXMLReader | tests3.cpp:70:2:70:2 | *p | -| tests5.cpp:27:25:27:38 | *call to createLSParser | tests5.cpp:29:2:29:2 | *p | -| tests5.cpp:40:25:40:38 | *call to createLSParser | tests5.cpp:43:2:43:2 | *p | -| tests5.cpp:55:25:55:38 | *call to createLSParser | tests5.cpp:59:2:59:2 | *p | -| tests5.cpp:63:21:63:24 | **g_p2 | tests5.cpp:77:2:77:5 | *g_p2 | -| tests5.cpp:70:17:70:30 | *call to createLSParser | tests5.cpp:63:21:63:24 | **g_p2 | -| tests5.cpp:81:25:81:38 | *call to createLSParser | tests5.cpp:83:2:83:2 | *p | -| tests5.cpp:81:25:81:38 | *call to createLSParser | tests5.cpp:83:2:83:2 | *p | -| tests5.cpp:83:2:83:2 | *p | tests5.cpp:85:2:85:2 | *p | -| tests5.cpp:85:2:85:2 | *p | tests5.cpp:86:2:86:2 | *p | -| tests5.cpp:86:2:86:2 | *p | tests5.cpp:88:2:88:2 | *p | -| tests5.cpp:88:2:88:2 | *p | tests5.cpp:89:2:89:2 | *p | -| tests.cpp:15:23:15:43 | call to XercesDOMParser | tests.cpp:17:2:17:2 | *p | -| tests.cpp:28:23:28:43 | call to XercesDOMParser | tests.cpp:31:2:31:2 | *p | -| tests.cpp:35:23:35:43 | call to XercesDOMParser | tests.cpp:37:2:37:2 | *p | -| tests.cpp:37:2:37:2 | *p | tests.cpp:37:2:37:2 | *p | -| tests.cpp:37:2:37:2 | *p | tests.cpp:38:2:38:2 | *p | -| tests.cpp:38:2:38:2 | *p | tests.cpp:38:2:38:2 | *p | -| tests.cpp:38:2:38:2 | *p | tests.cpp:39:2:39:2 | *p | -| tests.cpp:51:23:51:43 | call to XercesDOMParser | tests.cpp:53:2:53:2 | *p | -| tests.cpp:53:2:53:2 | *p | tests.cpp:53:2:53:2 | *p | -| tests.cpp:53:2:53:2 | *p | tests.cpp:55:2:55:2 | *p | -| tests.cpp:55:2:55:2 | *p | tests.cpp:55:2:55:2 | *p | -| tests.cpp:55:2:55:2 | *p | tests.cpp:56:2:56:2 | *p | -| tests.cpp:55:2:55:2 | *p | tests.cpp:57:2:57:2 | *p | -| tests.cpp:57:2:57:2 | *p | tests.cpp:57:2:57:2 | *p | -| tests.cpp:57:2:57:2 | *p | tests.cpp:59:2:59:2 | *p | -| tests.cpp:59:2:59:2 | *p | tests.cpp:59:2:59:2 | *p | -| tests.cpp:59:2:59:2 | *p | tests.cpp:60:2:60:2 | *p | -| tests.cpp:66:23:66:43 | call to XercesDOMParser | tests.cpp:69:2:69:2 | *p | -| tests.cpp:73:23:73:43 | call to XercesDOMParser | tests.cpp:80:2:80:2 | *p | -| tests.cpp:85:24:85:44 | call to XercesDOMParser | tests.cpp:88:3:88:3 | *q | -| tests.cpp:100:24:100:44 | call to XercesDOMParser | tests.cpp:104:3:104:3 | *q | -| tests.cpp:112:39:112:39 | *p | tests.cpp:113:2:113:2 | *p | -| tests.cpp:116:39:116:39 | *p | tests.cpp:117:2:117:2 | *p | -| tests.cpp:122:23:122:43 | call to XercesDOMParser | tests.cpp:126:18:126:18 | *q | -| tests.cpp:122:23:122:43 | call to XercesDOMParser | tests.cpp:128:18:128:18 | *q | -| tests.cpp:126:18:126:18 | *q | tests.cpp:112:39:112:39 | *p | -| tests.cpp:128:18:128:18 | *q | tests.cpp:116:39:116:39 | *p | +| tests2.cpp:20:17:20:31 | call to SAXParser | tests2.cpp:22:2:22:2 | *p | provenance | | +| tests2.cpp:33:17:33:31 | call to SAXParser | tests2.cpp:37:2:37:2 | *p | provenance | | +| tests2.cpp:49:12:49:12 | call to SAXParser | tests2.cpp:51:2:51:2 | *p | provenance | | +| tests3.cpp:23:21:23:53 | *call to createXMLReader | tests3.cpp:25:2:25:2 | *p | provenance | | +| tests3.cpp:35:16:35:20 | **p_3_3 | tests3.cpp:38:2:38:6 | *p_3_3 | provenance | | +| tests3.cpp:35:24:35:56 | *call to createXMLReader | tests3.cpp:35:16:35:20 | **p_3_3 | provenance | | +| tests3.cpp:48:16:48:20 | **p_3_5 | tests3.cpp:56:2:56:6 | *p_3_5 | provenance | | +| tests3.cpp:48:24:48:56 | *call to createXMLReader | tests3.cpp:48:16:48:20 | **p_3_5 | provenance | | +| tests3.cpp:60:21:60:53 | *call to createXMLReader | tests3.cpp:63:2:63:2 | *p | provenance | | +| tests3.cpp:67:21:67:53 | *call to createXMLReader | tests3.cpp:70:2:70:2 | *p | provenance | | +| tests5.cpp:27:25:27:38 | *call to createLSParser | tests5.cpp:29:2:29:2 | *p | provenance | | +| tests5.cpp:40:25:40:38 | *call to createLSParser | tests5.cpp:43:2:43:2 | *p | provenance | | +| tests5.cpp:55:25:55:38 | *call to createLSParser | tests5.cpp:59:2:59:2 | *p | provenance | | +| tests5.cpp:63:21:63:24 | **g_p2 | tests5.cpp:77:2:77:5 | *g_p2 | provenance | | +| tests5.cpp:70:17:70:30 | *call to createLSParser | tests5.cpp:63:21:63:24 | **g_p2 | provenance | | +| tests5.cpp:81:25:81:38 | *call to createLSParser | tests5.cpp:83:2:83:2 | *p | provenance | | +| tests5.cpp:81:25:81:38 | *call to createLSParser | tests5.cpp:83:2:83:2 | *p | provenance | | +| tests5.cpp:83:2:83:2 | *p | tests5.cpp:85:2:85:2 | *p | provenance | | +| tests5.cpp:85:2:85:2 | *p | tests5.cpp:86:2:86:2 | *p | provenance | | +| tests5.cpp:86:2:86:2 | *p | tests5.cpp:88:2:88:2 | *p | provenance | | +| tests5.cpp:88:2:88:2 | *p | tests5.cpp:89:2:89:2 | *p | provenance | | +| tests.cpp:15:23:15:43 | call to XercesDOMParser | tests.cpp:17:2:17:2 | *p | provenance | | +| tests.cpp:28:23:28:43 | call to XercesDOMParser | tests.cpp:31:2:31:2 | *p | provenance | | +| tests.cpp:35:23:35:43 | call to XercesDOMParser | tests.cpp:37:2:37:2 | *p | provenance | | +| tests.cpp:37:2:37:2 | *p | tests.cpp:37:2:37:2 | *p | provenance | | +| tests.cpp:37:2:37:2 | *p | tests.cpp:38:2:38:2 | *p | provenance | | +| tests.cpp:38:2:38:2 | *p | tests.cpp:38:2:38:2 | *p | provenance | | +| tests.cpp:38:2:38:2 | *p | tests.cpp:39:2:39:2 | *p | provenance | | +| tests.cpp:51:23:51:43 | call to XercesDOMParser | tests.cpp:53:2:53:2 | *p | provenance | | +| tests.cpp:53:2:53:2 | *p | tests.cpp:53:2:53:2 | *p | provenance | | +| tests.cpp:53:2:53:2 | *p | tests.cpp:55:2:55:2 | *p | provenance | | +| tests.cpp:55:2:55:2 | *p | tests.cpp:55:2:55:2 | *p | provenance | | +| tests.cpp:55:2:55:2 | *p | tests.cpp:56:2:56:2 | *p | provenance | | +| tests.cpp:55:2:55:2 | *p | tests.cpp:57:2:57:2 | *p | provenance | | +| tests.cpp:57:2:57:2 | *p | tests.cpp:57:2:57:2 | *p | provenance | | +| tests.cpp:57:2:57:2 | *p | tests.cpp:59:2:59:2 | *p | provenance | | +| tests.cpp:59:2:59:2 | *p | tests.cpp:59:2:59:2 | *p | provenance | | +| tests.cpp:59:2:59:2 | *p | tests.cpp:60:2:60:2 | *p | provenance | | +| tests.cpp:66:23:66:43 | call to XercesDOMParser | tests.cpp:69:2:69:2 | *p | provenance | | +| tests.cpp:73:23:73:43 | call to XercesDOMParser | tests.cpp:80:2:80:2 | *p | provenance | | +| tests.cpp:85:24:85:44 | call to XercesDOMParser | tests.cpp:88:3:88:3 | *q | provenance | | +| tests.cpp:100:24:100:44 | call to XercesDOMParser | tests.cpp:104:3:104:3 | *q | provenance | | +| tests.cpp:112:39:112:39 | *p | tests.cpp:113:2:113:2 | *p | provenance | | +| tests.cpp:116:39:116:39 | *p | tests.cpp:117:2:117:2 | *p | provenance | | +| tests.cpp:122:23:122:43 | call to XercesDOMParser | tests.cpp:126:18:126:18 | *q | provenance | | +| tests.cpp:122:23:122:43 | call to XercesDOMParser | tests.cpp:128:18:128:18 | *q | provenance | | +| tests.cpp:126:18:126:18 | *q | tests.cpp:112:39:112:39 | *p | provenance | | +| tests.cpp:128:18:128:18 | *q | tests.cpp:116:39:116:39 | *p | provenance | | nodes | tests2.cpp:20:17:20:31 | call to SAXParser | semmle.label | call to SAXParser | | tests2.cpp:22:2:22:2 | *p | semmle.label | *p | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected index f587e772b653..9b02e597ba29 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected @@ -1,5 +1,5 @@ edges -| test.cpp:20:29:20:47 | *call to getenv | test.cpp:24:10:24:35 | ! ... | +| test.cpp:20:29:20:47 | *call to getenv | test.cpp:24:10:24:35 | ! ... | provenance | | nodes | test.cpp:20:29:20:47 | *call to getenv | semmle.label | *call to getenv | | test.cpp:24:10:24:35 | ! ... | semmle.label | ! ... | diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index cd071c307bf1..01c3a0224327 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -169,13 +169,15 @@ private void RestoreNugetPackages(List allNonBinaryFiles, IEnumerable< { try { - var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger); - var count = nuget.InstallPackages(); - - if (nuget.PackageCount > 0) + using (var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger)) { - CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString())); - CompilationInfos.Add(("Successfully restored packages.config files", count.ToString())); + var count = nuget.InstallPackages(); + + if (nuget.PackageCount > 0) + { + CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString())); + CompilationInfos.Add(("Successfully restored packages.config files", count.ToString())); + } } var nugetPackageDlls = legacyPackageDirectory.DirInfo.GetFiles("*.dll", new EnumerationOptions { RecurseSubdirectories = true }); diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs index db0f20bc8cb1..2183daf09cc0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs @@ -1,8 +1,8 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; -using Microsoft.Build.Framework; using Semmle.Util; namespace Semmle.Extraction.CSharp.DependencyFetching @@ -12,7 +12,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching /// Locates packages in a source tree and downloads all of the /// referenced assemblies to a temp folder. /// - internal class NugetPackages + internal class NugetPackages : IDisposable { private readonly string? nugetExe; private readonly Util.Logging.ILogger logger; @@ -24,6 +24,9 @@ internal class NugetPackages public int PackageCount => packageFiles.Length; + private readonly string? backupNugetConfig; + private readonly string? nugetConfigPath; + /// /// The computed packages directory. /// This will be in the Temp location @@ -47,6 +50,41 @@ public NugetPackages(string sourceDir, TemporaryDirectory packageDirectory, Util { logger.LogInfo($"Found {packageFiles.Length} packages.config files, trying to use nuget.exe for package restore"); nugetExe = ResolveNugetExe(sourceDir); + if (HasNoPackageSource()) + { + // We only modify or add a top level nuget.config file + nugetConfigPath = Path.Combine(sourceDir, "nuget.config"); + try + { + if (File.Exists(nugetConfigPath)) + { + var tempFolderPath = FileUtils.GetTemporaryWorkingDirectory(out var _); + + do + { + backupNugetConfig = Path.Combine(tempFolderPath, Path.GetRandomFileName()); + } + while (File.Exists(backupNugetConfig)); + File.Copy(nugetConfigPath, backupNugetConfig, true); + } + else + { + File.WriteAllText(nugetConfigPath, + """ + + + + + + """); + } + AddDefaultPackageSource(nugetConfigPath); + } + catch (Exception e) + { + logger.LogError($"Failed to add default package source to {nugetConfigPath}: {e}"); + } + } } else { @@ -118,15 +156,15 @@ private bool TryRestoreNugetPackage(string package) */ string exe, args; - if (Util.Win32.IsWindows()) + if (Win32.IsWindows()) { exe = nugetExe!; - args = string.Format("install -OutputDirectory {0} {1}", packageDirectory, package); + args = $"install -OutputDirectory {packageDirectory} {package}"; } else { exe = "mono"; - args = string.Format("{0} install -OutputDirectory {1} {2}", nugetExe, packageDirectory, package); + args = $"{nugetExe} install -OutputDirectory {packageDirectory} {package}"; } var pi = new ProcessStartInfo(exe, args) @@ -159,5 +197,87 @@ public int InstallPackages() { return packageFiles.Count(package => TryRestoreNugetPackage(package.FullName)); } + + private bool HasNoPackageSource() + { + if (Win32.IsWindows()) + { + return false; + } + + try + { + logger.LogInfo("Checking if default package source is available..."); + RunMonoNugetCommand("sources list -ForceEnglishOutput", out var stdout); + if (stdout.All(line => line != "No sources found.")) + { + return false; + } + + return true; + } + catch (Exception e) + { + logger.LogWarning($"Failed to check if default package source is added: {e}"); + return false; + } + } + + private void RunMonoNugetCommand(string command, out IList stdout) + { + var exe = "mono"; + var args = $"{nugetExe} {command}"; + var pi = new ProcessStartInfo(exe, args) + { + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false + }; + + var threadId = Environment.CurrentManagedThreadId; + void onOut(string s) => logger.LogInfo(s, threadId); + void onError(string s) => logger.LogError(s, threadId); + pi.ReadOutput(out stdout, onOut, onError); + } + + private void AddDefaultPackageSource(string nugetConfig) + { + logger.LogInfo("Adding default package source..."); + RunMonoNugetCommand($"sources add -Name DefaultNugetOrg -Source https://api.nuget.org/v3/index.json -ConfigFile \"{nugetConfig}\"", out var _); + } + + public void Dispose() + { + if (nugetConfigPath is null) + { + return; + } + + try + { + if (backupNugetConfig is null) + { + logger.LogInfo("Removing nuget.config file"); + File.Delete(nugetConfigPath); + return; + } + + logger.LogInfo("Reverting nuget.config file content"); + // The content of the original nuget.config file is reverted without changing the file's attributes or casing: + using (var backup = File.OpenRead(backupNugetConfig)) + using (var current = File.OpenWrite(nugetConfigPath)) + { + current.SetLength(0); // Truncate file + backup.CopyTo(current); // Restore original content + } + + logger.LogInfo("Deleting backup nuget.config file"); + File.Delete(backupNugetConfig); + } + catch (Exception exc) + { + logger.LogError($"Failed to restore original nuget.config file: {exc}"); + } + } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs index e3e3c0c6ae4a..a3b7877af4e7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs @@ -1,5 +1,7 @@ +using System; using System.IO; using Microsoft.CodeAnalysis; +using Semmle.Util.Logging; namespace Semmle.Extraction.CSharp.Entities { @@ -25,7 +27,8 @@ public override void Populate(TextWriter trapFile) var mapped = Symbol.GetMappedLineSpan(); if (mapped.HasMappedPath && mapped.IsValid) { - var mappedLoc = Create(Context, Location.Create(mapped.Path, default, mapped.Span)); + var path = TryAdjustRelativeMappedFilePath(mapped.Path, Position.Path, Context.Extractor.Logger); + var mappedLoc = Create(Context, Location.Create(path, default, mapped.Span)); trapFile.locations_mapped(this, mappedLoc); } @@ -61,5 +64,25 @@ private class SourceLocationFactory : CachedEntityFactory new NonGeneratedSourceLocation(cx, init); } + + public static string TryAdjustRelativeMappedFilePath(string mappedToPath, string mappedFromPath, ILogger logger) + { + if (!Path.IsPathRooted(mappedToPath)) + { + try + { + var fullPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(mappedFromPath)!, mappedToPath)); + logger.LogDebug($"Found relative path in line mapping: '{mappedToPath}', interpreting it as '{fullPath}'"); + + mappedToPath = fullPath; + } + catch (Exception e) + { + logger.LogDebug($"Failed to compute absolute path for relative path in line mapping: '{mappedToPath}': {e}"); + } + } + + return mappedToPath; + } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/LineOrSpanDirective.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/LineOrSpanDirective.cs index 9e8c4c557dc7..6d2362203316 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/LineOrSpanDirective.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/LineOrSpanDirective.cs @@ -25,9 +25,11 @@ protected override void PopulatePreprocessor(TextWriter trapFile) { trapFile.directive_lines(this, kind); - if (!string.IsNullOrWhiteSpace(Symbol.File.ValueText)) + var path = Symbol.File.ValueText; + if (!string.IsNullOrWhiteSpace(path)) { - var file = File.Create(Context, Symbol.File.ValueText); + path = NonGeneratedSourceLocation.TryAdjustRelativeMappedFilePath(path, Symbol.SyntaxTree.FilePath, Context.Extractor.Logger); + var file = File.Create(Context, path); trapFile.directive_line_file(this, file); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PragmaChecksumDirective.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PragmaChecksumDirective.cs index 7706118cb6f2..3e0c468d85bc 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PragmaChecksumDirective.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/PreprocessorDirectives/PragmaChecksumDirective.cs @@ -12,7 +12,8 @@ private PragmaChecksumDirective(Context cx, PragmaChecksumDirectiveTriviaSyntax protected override void PopulatePreprocessor(TextWriter trapFile) { - var file = File.Create(Context, Symbol.File.ValueText); + var path = NonGeneratedSourceLocation.TryAdjustRelativeMappedFilePath(Symbol.File.ValueText, Symbol.SyntaxTree.FilePath, Context.Extractor.Logger); + var file = File.Create(Context, path); trapFile.pragma_checksums(this, file, Symbol.Guid.ToString(), Symbol.Bytes.ToString()); } diff --git a/csharp/ql/consistency-queries/DataFlowConsistency.ql b/csharp/ql/consistency-queries/DataFlowConsistency.ql index e1eb8b15a56a..0f9dead6b77b 100644 --- a/csharp/ql/consistency-queries/DataFlowConsistency.ql +++ b/csharp/ql/consistency-queries/DataFlowConsistency.ql @@ -7,15 +7,6 @@ private import codeql.dataflow.internal.DataFlowImplConsistency private module Input implements InputSig { private import CsharpDataFlow - predicate uniqueEnclosingCallableExclude(Node n) { - // TODO: Remove once static initializers are folded into the - // static constructors - exists(ControlFlow::Node cfn | - cfn.getAstNode() = any(FieldOrProperty f | f.isStatic()).getAChild+() and - cfn = n.getControlFlowNode() - ) - } - predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { // TODO: Remove once static initializers are folded into the // static constructors @@ -30,6 +21,8 @@ private module Input implements InputSig { n instanceof ParameterNode or missingLocationExclude(n) + or + n instanceof FlowInsensitiveFieldNode } predicate missingLocationExclude(Node n) { diff --git a/csharp/ql/integration-tests/all-platforms/autobuild/test.py b/csharp/ql/integration-tests/all-platforms/autobuild/test.py index 6a1f88641456..89c7dbf71132 100644 --- a/csharp/ql/integration-tests/all-platforms/autobuild/test.py +++ b/csharp/ql/integration-tests/all-platforms/autobuild/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp") diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/test.py b/csharp/ql/integration-tests/all-platforms/cshtml/test.py index 24cc83b4f2db..b9be34f1efbf 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml/test.py +++ b/csharp/ql/integration-tests/all-platforms/cshtml/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create(['dotnet build'], lang="csharp", extra_args=["--extractor-option=cil=false"]) +run_codeql_database_create(['dotnet build'], lang="csharp") diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/test.py b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/test.py index c0647f00385f..b1f535c17272 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/test.py +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/test.py @@ -1,4 +1,4 @@ import os from create_database_utils import * -run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/test.py b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/test.py index dfce788f2204..c00c6f6e2e8e 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/test.py +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/test.py @@ -2,4 +2,4 @@ from create_database_utils import * os.environ['CODEQL_EXTRACTOR_CSHARP_STANDALONE_EXTRACT_WEB_VIEWS'] = 'false' -run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/test.py b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/test.py index c0647f00385f..b1f535c17272 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/test.py +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_flowsteps/test.py @@ -1,4 +1,4 @@ import os from create_database_utils import * -run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/test.py b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/test.py index c0647f00385f..b1f535c17272 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/test.py +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/test.py @@ -1,4 +1,4 @@ import os from create_database_utils import * -run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create(lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/test.py b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/test.py index 24cc83b4f2db..b9be34f1efbf 100644 --- a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/test.py +++ b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create(['dotnet build'], lang="csharp", extra_args=["--extractor-option=cil=false"]) +run_codeql_database_create(['dotnet build'], lang="csharp") diff --git a/csharp/ql/integration-tests/all-platforms/standalone/test.py b/csharp/ql/integration-tests/all-platforms/standalone/test.py index 58074b430b29..72f47e38d222 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/test.py +++ b/csharp/ql/integration-tests/all-platforms/standalone/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/test.py b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/test.py index 58074b430b29..72f47e38d222 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/test.py +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/linux-only/compiler_args/test.py b/csharp/ql/integration-tests/linux-only/compiler_args/test.py index 6a1f88641456..89c7dbf71132 100644 --- a/csharp/ql/integration-tests/linux-only/compiler_args/test.py +++ b/csharp/ql/integration-tests/linux-only/compiler_args/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp") diff --git a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py index 2a7f375abbae..7173ed4c6c25 100644 --- a/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py +++ b/csharp/ql/integration-tests/linux-only/standalone_dependencies_non_utf8_filename/test.py @@ -5,4 +5,4 @@ with open(path, 'w') as file: file.write('class X { }\n') -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies/test.py index 58074b430b29..72f47e38d222 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies/test.py +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py index 58074b430b29..72f47e38d222 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.py index 58074b430b29..72f47e38d222 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.py +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/test.py index 58074b430b29..72f47e38d222 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/test.py +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected new file mode 100644 index 000000000000..720c83eff168 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected @@ -0,0 +1 @@ +| /Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql new file mode 100644 index 000000000000..e07e7c55e7d4 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql @@ -0,0 +1,14 @@ +import csharp + +private string getPath(Assembly a) { + not a.getCompilation().getOutputAssembly() = a and + exists(string s | s = a.getFile().getAbsolutePath() | + result = + s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + + "/legacypackages".length(), s.length()) + // TODO: include all other assemblies from the test results. Initially disable because mono installations were problematic on ARM runners. + ) +} + +from Assembly a +select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/nuget.config b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/nuget.config new file mode 100644 index 000000000000..7cf2791d7382 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/nuget.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/Program.cs b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/Program.cs new file mode 100644 index 000000000000..39a9e95bb6e3 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/Program.cs @@ -0,0 +1,6 @@ +class Program +{ + static void Main(string[] args) + { + } +} \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/global.json b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/global.json new file mode 100644 index 000000000000..5c3fd64fbd12 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "8.0.101" + } +} diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/packages.config b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/packages.config new file mode 100644 index 000000000000..90071d0ca8cd --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/test.csproj b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/test.csproj new file mode 100644 index 000000000000..f7600103d99f --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/test.csproj @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/skip-on-platform-osx-arm b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/skip-on-platform-osx-arm new file mode 100644 index 000000000000..6ebb8d63fcc8 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/skip-on-platform-osx-arm @@ -0,0 +1 @@ +Skipping the test on the ARM runners, as we're running into trouble with Mono and nuget. diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/test.py new file mode 100644 index 000000000000..9142835c65fc --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/test.py @@ -0,0 +1,3 @@ +from create_database_utils import * + +run_codeql_database_create([], source="proj", lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/integration-tests/posix-only/warn_as_error/test.py b/csharp/ql/integration-tests/posix-only/warn_as_error/test.py index a0a7904259a4..60f5c6422b79 100644 --- a/csharp/ql/integration-tests/posix-only/warn_as_error/test.py +++ b/csharp/ql/integration-tests/posix-only/warn_as_error/test.py @@ -2,6 +2,6 @@ from create_database_utils import * from diagnostics_test_utils import * -run_codeql_database_create(["./build.sh"], lang="csharp", extra_args=["--extractor-option=cil=false"]) +run_codeql_database_create(["./build.sh"], lang="csharp") check_diagnostics() diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/test.py b/csharp/ql/integration-tests/windows-only/standalone_dependencies/test.py index 58074b430b29..72f47e38d222 100644 --- a/csharp/ql/integration-tests/windows-only/standalone_dependencies/test.py +++ b/csharp/ql/integration-tests/windows-only/standalone_dependencies/test.py @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +run_codeql_database_create([], lang="csharp", extra_args=["--extractor-option=buildless=true"]) diff --git a/csharp/ql/lib/change-notes/2024-02-12-primary-constructors.md b/csharp/ql/lib/change-notes/2024-02-12-primary-constructors.md new file mode 100644 index 000000000000..672b1aeb351d --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-12-primary-constructors.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C# 12: The QL and data flow library now support primary constructors. diff --git a/csharp/ql/lib/semmle/code/csharp/Callable.qll b/csharp/ql/lib/semmle/code/csharp/Callable.qll index dd67d2667e3b..be42d84d7de3 100644 --- a/csharp/ql/lib/semmle/code/csharp/Callable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Callable.qll @@ -406,6 +406,24 @@ class InstanceConstructor extends Constructor { override string getAPrimaryQlClass() { result = "InstanceConstructor" } } +/** + * A primary constructor, for example `public class C(object o)` on line 1 in + * ```csharp + * public class C(object o) { + * ... + * } + * ``` + */ +class PrimaryConstructor extends Constructor { + PrimaryConstructor() { + not this.hasBody() and + this.getDeclaringType().fromSource() and + this.fromSource() + } + + override string getAPrimaryQlClass() { result = "PrimaryConstructor" } +} + /** * A destructor, for example `~C() { }` on line 2 in * diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index e97823157119..414310f655e1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -89,6 +89,7 @@ class DataFlowSummarizedCallable instanceof FlowSummary::SummarizedCallable { string toString() { result = super.toString() } } +cached private module Cached { /** * The following heuristic is used to rank when to use source code or when to use summaries for DataFlowCallables. @@ -98,7 +99,8 @@ private module Cached { cached newtype TDataFlowCallable = TDotNetCallable(DotNet::Callable c) { c.isUnboundDeclaration() } or - TSummarizedCallable(DataFlowSummarizedCallable sc) + TSummarizedCallable(DataFlowSummarizedCallable sc) or + TFieldOrProperty(FieldOrProperty f) cached newtype TDataFlowCall = @@ -247,22 +249,33 @@ class ImplicitCapturedReturnKind extends ReturnKind, TImplicitCapturedReturnKind /** A callable used for data flow. */ class DataFlowCallable extends TDataFlowCallable { - /** Get the underlying source code callable, if any. */ + /** Gets the underlying source code callable, if any. */ DotNet::Callable asCallable() { this = TDotNetCallable(result) } - /** Get the underlying summarized callable, if any. */ + /** Gets the underlying summarized callable, if any. */ FlowSummary::SummarizedCallable asSummarizedCallable() { this = TSummarizedCallable(result) } - /** Get the underlying callable. */ + /** Gets the underlying field or property, if any. */ + FieldOrProperty asFieldOrProperty() { this = TFieldOrProperty(result) } + + /** Gets the underlying callable. */ DotNet::Callable getUnderlyingCallable() { result = this.asCallable() or result = this.asSummarizedCallable() } /** Gets a textual representation of this dataflow callable. */ - string toString() { result = this.getUnderlyingCallable().toString() } + string toString() { + result = this.getUnderlyingCallable().toString() + or + result = this.asFieldOrProperty().toString() + } /** Get the location of this dataflow callable. */ - Location getLocation() { result = this.getUnderlyingCallable().getLocation() } + Location getLocation() { + result = this.getUnderlyingCallable().getLocation() + or + result = this.asFieldOrProperty().getLocation() + } } /** A call relevant for data flow. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index 59610ae59756..acdae06c8b0a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -21,6 +21,7 @@ private import semmle.code.csharp.frameworks.system.threading.Tasks private import semmle.code.cil.Ssa::Ssa as CilSsa private import semmle.code.cil.internal.SsaImpl as CilSsaImpl private import codeql.util.Unit +private import codeql.util.Boolean /** Gets the callable in which this node occurs. */ DataFlowCallable nodeGetEnclosingCallable(Node n) { @@ -37,6 +38,19 @@ predicate isArgumentNode(ArgumentNode arg, DataFlowCall c, ArgumentPosition pos) arg.argumentOf(c, pos) } +/** + * Gets a control flow node used for data flow purposes for the primary constructor + * parameter access `pa`. + */ +private ControlFlow::Node getAPrimaryConstructorParameterCfn(ParameterAccess pa) { + pa.getTarget().getCallable() instanceof PrimaryConstructor and + ( + result = pa.(ParameterRead).getAControlFlowNode() + or + pa = any(AssignableDefinition def | result = def.getAControlFlowNode()).getTargetAccess() + ) +} + abstract class NodeImpl extends Node { /** Do not call: use `getEnclosingCallable()` instead. */ abstract DataFlowCallable getEnclosingCallableImpl(); @@ -69,6 +83,17 @@ abstract class NodeImpl extends Node { abstract string toStringImpl(); } +// TODO: Remove once static initializers are folded into the +// static constructors +private DataFlowCallable getEnclosingStaticFieldOrProperty(Expr e) { + result.asFieldOrProperty() = + any(FieldOrProperty f | + f.isStatic() and + e = f.getAChild+() and + not exists(e.getEnclosingCallable()) + ) +} + private class ExprNodeImpl extends ExprNode, NodeImpl { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = @@ -76,6 +101,8 @@ private class ExprNodeImpl extends ExprNode, NodeImpl { this.getExpr().(CIL::Expr).getEnclosingCallable().(DotNet::Callable), this.getControlFlowNodeImpl().getEnclosingCallable() ] + or + result = getEnclosingStaticFieldOrProperty(this.asExpr()) } override DotNet::Type getTypeImpl() { @@ -111,9 +138,22 @@ private module ThisFlow { n.(InstanceParameterNode).getCallable() = cfn.(ControlFlow::Nodes::EntryNode).getCallable() or n.asExprAtNode(cfn) = any(Expr e | e instanceof ThisAccess or e instanceof BaseAccess) + or + n = + any(InstanceParameterAccessNode pan | + pan.getUnderlyingControlFlowNode() = cfn and pan.isPreUpdate() + ) } - private predicate thisAccess(Node n, BasicBlock bb, int i) { thisAccess(n, bb.getNode(i)) } + private predicate thisAccess(Node n, BasicBlock bb, int i) { + thisAccess(n, bb.getNode(i)) + or + exists(Parameter p | n.(PrimaryConstructorThisAccessNode).getParameter() = p | + bb.getCallable() = p.getCallable() and + i = p.getPosition() + 1 and + not n instanceof PostUpdateNode + ) + } private predicate thisRank(Node n, BasicBlock bb, int rankix) { exists(int i | @@ -189,7 +229,7 @@ CIL::DataFlowNode asCilDataFlowNode(Node node) { /** Provides predicates related to local data flow. */ module LocalFlow { - private class LocalExprStepConfiguration extends ControlFlowReachabilityConfiguration { + class LocalExprStepConfiguration extends ControlFlowReachabilityConfiguration { LocalExprStepConfiguration() { this = "LocalExprStepConfiguration" } override predicate candidate( @@ -911,6 +951,17 @@ private module Cached { TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or TParamsArgumentNode(ControlFlow::Node callCfn) { callCfn = any(Call c | isParamsArg(c, _, _)).getAControlFlowNode() + } or + TFlowInsensitiveFieldNode(FieldOrProperty f) { f.isFieldLike() } or + TInstanceParameterAccessNode(ControlFlow::Node cfn, boolean isPostUpdate) { + exists(ParameterAccess pa | cfn = getAPrimaryConstructorParameterCfn(pa) | + isPostUpdate = false + or + pa instanceof ParameterWrite and isPostUpdate = true + ) + } or + TPrimaryConstructorThisAccessNode(Parameter p, Boolean isPostUpdate) { + p.getCallable() instanceof PrimaryConstructor } /** @@ -947,14 +998,20 @@ private module Cached { TFieldContent(Field f) { f.isUnboundDeclaration() } or TPropertyContent(Property p) { p.isUnboundDeclaration() } or TElementContent() or - TSyntheticFieldContent(SyntheticField f) + TSyntheticFieldContent(SyntheticField f) or + TPrimaryConstructorParameterContent(Parameter p) { + p.getCallable() instanceof PrimaryConstructor + } cached newtype TContentApprox = TFieldApproxContent(string firstChar) { firstChar = approximateFieldContent(_) } or TPropertyApproxContent(string firstChar) { firstChar = approximatePropertyContent(_) } or TElementApproxContent() or - TSyntheticFieldApproxContent() + TSyntheticFieldApproxContent() or + TPrimaryConstructorParameterApproxContent(string firstChar) { + firstChar = approximatePrimaryConstructorParameterContent(_) + } pragma[nomagic] private predicate commonSubTypeGeneral(DataFlowTypeOrUnifiable t1, RelevantGvnType t2) { @@ -1021,6 +1078,12 @@ predicate nodeIsHidden(Node n) { n instanceof ParamsArgumentNode or n.asExpr() = any(WithExpr we).getInitializer() + or + n instanceof FlowInsensitiveFieldNode + or + n instanceof InstanceParameterAccessNode + or + n instanceof PrimaryConstructorThisAccessNode } /** A CIL SSA definition, viewed as a node in a data flow graph. */ @@ -1346,6 +1409,8 @@ private module ArgumentNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = cfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(cfn.getAstNode()) } override Type getTypeImpl() { result = cfn.getAstNode().(Expr).getType() } @@ -1385,6 +1450,8 @@ private module ArgumentNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = callCfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(callCfn.getAstNode()) } override Type getTypeImpl() { result = this.getParameter().getType() } @@ -1725,6 +1792,100 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { override string toStringImpl() { result = this.getSummaryNode().toString() } } +/** + * A data-flow node used to model reading and writing of primary constructor parameters. + * For example, in + * ```csharp + * public class C(object o) + * { + * public object GetParam() => o; // (1) + * + * public void SetParam(object value) => o = value; // (2) + * } + * ``` + * the first access to `o` (1) is modeled as `this.o_backing_field` and + * the second access to `o` (2) is modeled as `this.o_backing_field = value`. + * Both models need a pre-update this node, and the latter need an additional post-update this access, + * all of which are represented by an `InstanceParameterAccessNode` node. + */ +class InstanceParameterAccessNode extends NodeImpl, TInstanceParameterAccessNode { + private ControlFlow::Node cfn; + private boolean isPostUpdate; + private Parameter p; + + InstanceParameterAccessNode() { + this = TInstanceParameterAccessNode(cfn, isPostUpdate) and + exists(ParameterAccess pa | cfn = getAPrimaryConstructorParameterCfn(pa) and pa.getTarget() = p) + } + + override DataFlowCallable getEnclosingCallableImpl() { + result.asCallable() = cfn.getEnclosingCallable() + } + + override Type getTypeImpl() { result = cfn.getEnclosingCallable().getDeclaringType() } + + override ControlFlow::Nodes::ElementNode getControlFlowNodeImpl() { none() } + + override Location getLocationImpl() { result = cfn.getLocation() } + + override string toStringImpl() { result = "this" } + + /** + * Gets the underlying control flow node. + */ + ControlFlow::Node getUnderlyingControlFlowNode() { result = cfn } + + /** + * Gets the primary constructor parameter that this is a this access to. + */ + Parameter getParameter() { result = p } + + /** + * Holds if the this parameter access node corresponds to a pre-update node. + */ + predicate isPreUpdate() { isPostUpdate = false } +} + +/** + * A data-flow node used to synthesize the body of a primary constructor. + * + * For example, in + * ```csharp + * public class C(object o) { } + * ``` + * we synthesize the primary constructor for `C` as + * ```csharp + * public C(object o) => this.o_backing_field = o; + * ``` + * The synthesized (pre/post-update) this access is represented an `PrimaryConstructorThisAccessNode` node. + */ +class PrimaryConstructorThisAccessNode extends NodeImpl, TPrimaryConstructorThisAccessNode { + private Parameter p; + private boolean isPostUpdate; + + PrimaryConstructorThisAccessNode() { this = TPrimaryConstructorThisAccessNode(p, isPostUpdate) } + + override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = p.getCallable() } + + override Type getTypeImpl() { result = p.getCallable().getDeclaringType() } + + override ControlFlow::Nodes::ElementNode getControlFlowNodeImpl() { none() } + + override Location getLocationImpl() { result = p.getLocation() } + + override string toStringImpl() { result = "this" } + + /** + * Gets the primary constructor parameter that this is a this access to. + */ + Parameter getParameter() { result = p } + + /** + * Holds if this is a this access for a primary constructor parameter write. + */ + predicate isPostUpdate() { isPostUpdate = true } +} + /** A field or a property. */ class FieldOrProperty extends Assignable, Modifiable { FieldOrProperty() { @@ -1784,6 +1945,30 @@ private class FieldOrPropertyRead extends FieldOrPropertyAccess, AssignableRead } } +/** + * A data flow node used for control-flow insensitive flow through fields + * and properties. + * + * In global data flow this is used to model flow through static fields and + * properties, while for lambda flow we additionally use it to track assignments + * in constructors to uses within the same class. + */ +class FlowInsensitiveFieldNode extends NodeImpl, TFlowInsensitiveFieldNode { + private FieldOrProperty f; + + FlowInsensitiveFieldNode() { this = TFlowInsensitiveFieldNode(f) } + + override DataFlowCallable getEnclosingCallableImpl() { result.asFieldOrProperty() = f } + + override Type getTypeImpl() { result = f.getType() } + + override ControlFlow::Node getControlFlowNodeImpl() { none() } + + override Location getLocationImpl() { result = f.getLocation() } + + override string toStringImpl() { result = "[flow-insensitive] " + f } +} + /** * Holds if `pred` can flow to `succ`, by jumping from one callable to * another. Additional steps specified by the configuration are *not* @@ -1792,13 +1977,16 @@ private class FieldOrPropertyRead extends FieldOrPropertyAccess, AssignableRead predicate jumpStep(Node pred, Node succ) { pred.(NonLocalJumpNode).getAJumpSuccessor(true) = succ or - exists(FieldOrProperty fl, FieldOrPropertyRead flr | - fl.isStatic() and - fl.isFieldLike() and - fl.getAnAssignedValue() = pred.asExpr() and - fl.getAnAccess() = flr and - flr = succ.asExpr() and - flr.hasNonlocalValue() + exists(FieldOrProperty f | f.isStatic() | + f.getAnAssignedValue() = pred.asExpr() and + succ = TFlowInsensitiveFieldNode(f) + or + exists(FieldOrPropertyRead fr | + pred = TFlowInsensitiveFieldNode(f) and + f.getAnAccess() = fr and + fr = succ.asExpr() and + fr.hasNonlocalValue() + ) ) or FlowSummaryImpl::Private::Steps::summaryJumpStep(pred.(FlowSummaryNode).getSummaryNode(), @@ -1834,6 +2022,18 @@ private PropertyContent getResultContent() { result.getProperty() = any(SystemThreadingTasksTaskTClass c_).getResultProperty() } +private predicate primaryConstructorParameterStore( + SsaDefinitionExtNode node1, PrimaryConstructorParameterContent c, Node node2 +) { + exists(Ssa::ExplicitDefinition def, ControlFlow::Node cfn, Parameter p | + def = node1.getDefinitionExt() and + p = def.getSourceVariable().getAssignable() and + cfn = def.getControlFlowNode() and + node2 = TInstanceParameterAccessNode(cfn, true) and + c.getParameter() = p + ) +} + /** * Holds if data can flow from `node1` to `node2` via an assignment to * content `c`. @@ -1871,6 +2071,14 @@ predicate storeStep(Node node1, ContentSet c, Node node2) { c = getResultContent() ) or + primaryConstructorParameterStore(node1, c, node2) + or + exists(Parameter p | + node1 = TExplicitParameterNode(p) and + node2 = TPrimaryConstructorThisAccessNode(p, true) and + c.(PrimaryConstructorParameterContent).getParameter() = p + ) + or FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), c, node2.(FlowSummaryNode).getSummaryNode()) } @@ -1963,6 +2171,14 @@ predicate readStep(Node node1, ContentSet c, Node node2) { node2.asExpr().(AwaitExpr).getExpr() = node1.asExpr() and c = getResultContent() or + node1 = + any(InstanceParameterAccessNode n | + n.getUnderlyingControlFlowNode() = node2.(ExprNode).getControlFlowNode() and + n.getParameter() = c.(PrimaryConstructorParameterContent).getParameter() and + n.isPreUpdate() + ) and + node2.asExpr() instanceof ParameterRead + or // node1 = (..., node2, ...) // node1.ItemX flows to node2 exists(TupleExpr te, int i, Expr item | @@ -2025,6 +2241,8 @@ predicate clearsContent(Node n, ContentSet c) { c.(FieldContent).getField() = f.getUnboundDeclaration() and not f.isRef() ) + or + n = any(PostUpdateNode n1 | primaryConstructorParameterStore(_, c, n1)).getPreUpdateNode() } /** @@ -2258,6 +2476,8 @@ module PostUpdateNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = cfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(oc) } override DotNet::Type getTypeImpl() { result = oc.getType() } @@ -2289,6 +2509,8 @@ module PostUpdateNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = cfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(cfn.getAstNode()) } override Type getTypeImpl() { result = cfn.getAstNode().(Expr).getType() } @@ -2310,6 +2532,32 @@ module PostUpdateNodes { override Node getPreUpdateNode() { result.(FlowSummaryNode).getSummaryNode() = preUpdateNode } } + + private class InstanceParameterAccessPostUpdateNode extends PostUpdateNode, + InstanceParameterAccessNode + { + private ControlFlow::Node cfn; + + InstanceParameterAccessPostUpdateNode() { this = TInstanceParameterAccessNode(cfn, true) } + + override Node getPreUpdateNode() { result = TInstanceParameterAccessNode(cfn, false) } + + override string toStringImpl() { result = "[post] this" } + } + + private class PrimaryConstructorThisAccessPostUpdateNode extends PostUpdateNode, + PrimaryConstructorThisAccessNode + { + private Parameter p; + + PrimaryConstructorThisAccessPostUpdateNode() { + this = TPrimaryConstructorThisAccessNode(p, true) + } + + override Node getPreUpdateNode() { result = TPrimaryConstructorThisAccessNode(p, false) } + + override string toStringImpl() { result = "[post] this" } + } } private import PostUpdateNodes @@ -2437,6 +2685,24 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves nodeTo.asExpr().(EventRead).getTarget() = aee.getTarget() and preservesValue = false ) + or + preservesValue = true and + exists(FieldOrProperty f, FieldOrPropertyAccess fa | + fa = f.getAnAccess() and + fa.targetIsLocalInstance() + | + exists(AssignableDefinition def | + def.getTargetAccess() = fa and + nodeFrom.asExpr() = def.getSource() and + nodeTo = TFlowInsensitiveFieldNode(f) and + nodeFrom.getEnclosingCallable() instanceof Constructor + ) + or + nodeFrom = TFlowInsensitiveFieldNode(f) and + f.getAnAccess() = fa and + fa = nodeTo.asExpr() and + fa.(FieldOrPropertyRead).hasNonlocalValue() + ) } /** @@ -2468,6 +2734,11 @@ class ContentApprox extends TContentApprox { this = TElementApproxContent() and result = "element" or this = TSyntheticFieldApproxContent() and result = "approximated synthetic field" + or + exists(string firstChar | + this = TPrimaryConstructorParameterApproxContent(firstChar) and + result = "approximated parameter field " + firstChar + ) } } @@ -2481,6 +2752,14 @@ private string approximatePropertyContent(PropertyContent pc) { result = pc.getProperty().getName().prefix(1) } +/** + * Gets a string for approximating the name of a synthetic field corresponding + * to a primary constructor parameter. + */ +private string approximatePrimaryConstructorParameterContent(PrimaryConstructorParameterContent pc) { + result = pc.getParameter().getName().prefix(1) +} + /** Gets an approximated value for content `c`. */ pragma[nomagic] ContentApprox getContentApprox(Content c) { @@ -2491,6 +2770,9 @@ ContentApprox getContentApprox(Content c) { c instanceof ElementContent and result = TElementApproxContent() or c instanceof SyntheticFieldContent and result = TSyntheticFieldApproxContent() + or + result = + TPrimaryConstructorParameterApproxContent(approximatePrimaryConstructorParameterContent(c)) } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index c686f2264520..1dc3f77a4503 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -239,6 +239,23 @@ class PropertyContent extends Content, TPropertyContent { override Location getLocation() { result = p.getLocation() } } +/** + * A reference to a synthetic field corresponding to a + * primary constructor parameter. + */ +class PrimaryConstructorParameterContent extends Content, TPrimaryConstructorParameterContent { + private Parameter p; + + PrimaryConstructorParameterContent() { this = TPrimaryConstructorParameterContent(p) } + + /** Gets the underlying parameter. */ + Parameter getParameter() { result = p } + + override string toString() { result = "parameter " + p.getName() } + + override Location getLocation() { result = p.getLocation() } +} + /** A reference to an element in a collection. */ class ElementContent extends Content, TElementContent { override string toString() { result = "element" } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll index 8a1f2b5b296a..8b7db48140ab 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -870,6 +870,39 @@ private module CapturedVariableImpl { ) ) } + + /** + * Holds if captured local scope variable `v` is written inside the callable + * to which `bb` belongs. + * + * In this case a pseudo-read is inserted at the exit node at index `i` in `bb`, + * in order to make the write live. + * + * Example: + * + * ```csharp + * class C { + * void M1() { + * int i = 0; + * void M2() { i = 2; }; + * M2(); + * System.Console.WriteLine(i); + * } + * } + * ``` + * + * The write to `i` inside `M2` on line 4 is live because of the implicit call + * definition on line 5. + */ + predicate capturedExitRead( + ControlFlow::BasicBlock bb, int i, CapturedWrittenLocalScopeSourceVariable v + ) { + exists(ControlFlow::Nodes::AnnotatedExitNode exit | + exit.isNormal() and + variableDefinition(bb.getAPredecessor*(), _, v, _) and + exit = bb.getNode(i) + ) + } } /** @@ -1083,7 +1116,7 @@ private predicate variableReadPseudo(ControlFlow::BasicBlock bb, int i, Ssa::Sou or refReadBeforeWrite(bb, i, v) or - capturedReadOut(bb, i, v, _, _, _) + CapturedVariableImpl::capturedExitRead(bb, i, v) or capturedReadIn(bb, i, v, _, _, _) } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll index 5ad2b6bc675a..1dea41c8a7c7 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll @@ -42,14 +42,18 @@ predicate xssFlow(XssNode source, XssNode sink, string message) { */ module PathGraph { /** Holds if `(pred,succ)` is an edge in the graph of data flow path explanations. */ - query predicate edges(XssNode pred, XssNode succ) { - exists(XssTracking::PathNode a, XssTracking::PathNode b | XssTracking::PathGraph::edges(a, b) | + query predicate edges(XssNode pred, XssNode succ, string key, string val) { + exists(XssTracking::PathNode a, XssTracking::PathNode b | + XssTracking::PathGraph::edges(a, b, key, val) + | pred.asDataFlowNode() = a and succ.asDataFlowNode() = b ) or xssFlow(pred, succ, _) and - pred instanceof XssAspNode + pred instanceof XssAspNode and + key = "provenance" and + val = "" } /** Holds if `n` is a node in the graph of data flow path explanations. */ diff --git a/csharp/ql/src/Security Features/CWE-022/TaintedPath.cs b/csharp/ql/src/Security Features/CWE-022/TaintedPath.cs deleted file mode 100644 index ac2add1b9b0c..000000000000 --- a/csharp/ql/src/Security Features/CWE-022/TaintedPath.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.IO; -using System.Web; - -public class TaintedPathHandler : IHttpHandler -{ - public void ProcessRequest(HttpContext ctx) - { - String path = ctx.Request.QueryString["path"]; - // BAD: This could read any file on the filesystem. - ctx.Response.Write(File.ReadAllText(path)); - - // BAD: This could still read any file on the filesystem. - ctx.Response.Write(File.ReadAllText("/home/user/" + path)); - - // GOOD: MapPath ensures the path is safe to read from. - string safePath = ctx.Request.MapPath(path, ctx.Request.ApplicationPath, false); - ctx.Response.Write(File.ReadAllText(safePath)); - } -} diff --git a/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp b/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp index e838d8c56a4d..bf3132a9719f 100644 --- a/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp +++ b/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp @@ -7,34 +7,53 @@ can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files.

-

Paths that are naively constructed from data controlled by a user may contain unexpected special characters, -such as "..". Such a path may potentially point to any directory on the file system.

+

Paths that are naively constructed from data controlled by a user may be absolute paths, or may contain +unexpected special characters such as "..". Such a path could point anywhere on the file system.

-

Validate user input before using it to construct a file path. Ideally, follow these rules:

+

Validate user input before using it to construct a file path.

-
    -
  • Do not allow more than a single "." character.
  • -
  • Do not allow directory separators such as "/" or "\" (depending on the file system).
  • -
  • Do not rely on simply replacing problematic sequences such as "../". For example, after applying this filter to -".../...//" the resulting string would still be "../".
  • -
  • Use a whitelist of known good patterns.
  • -
  • Sanitize potentially tainted paths using HttpRequest.MapPath.
  • -
+

Common validation methods include checking that the normalized path is relative and does not contain +any ".." components, or checking that the path is contained within a safe folder. The method you should use depends +on how the path is used in the application, and whether the path should be a single path component. +

+ +

If the path should be a single path component (such as a file name), you can check for the existence +of any path separators ("/" or "\"), or ".." sequences in the input, and reject the input if any are found. +

+ +

+Note that removing "../" sequences is not sufficient, since the input could still contain a path separator +followed by "..". For example, the input ".../...//" would still result in the string "../" if only "../" sequences +are removed. +

+ +

Finally, the simplest (but most restrictive) option is to use an allow list of safe patterns and make sure that +the user input matches one of these patterns.

-

In the first example, a file name is read from a HttpRequest and then used to access a file. However, a -malicious user could enter a file name which is an absolute path - for example, "/etc/passwd". In the second example, it -appears that the user is restricted to opening a file within the "user" home directory. However, a malicious user could -enter a filename which contains special characters. For example, the string "../../etc/passwd" will result in the code -reading the file located at "/home/[user]/../../etc/passwd", which is the system's password file. This file would then be -sent back to the user, giving them access to all the system's passwords.

+

In this example, a user-provided file name is read from a HTTP request and then used to access a file +and send it back to the user. However, a malicious user could enter a file name anywhere on the file system, +such as "/etc/passwd" or "../../../etc/passwd".

+ + + +

+If the input should only be a file name, you can check that it doesn't contain any path separators or ".." sequences. +

+ + + +

+If the input should be within a specific directory, you can check that the resolved path +is still contained within that directory. +

- +
diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp b/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp index a1f39d27b8ce..d75ababa6a8b 100644 --- a/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp +++ b/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp @@ -50,7 +50,7 @@ the result is within the destination directory. If provided with a zip file cont path like ..\sneaky-file, then this file would be written outside the destination directory.

- +

To fix this vulnerability, we need to make three changes. Firstly, we need to resolve any directory traversal or other special characters in the path by using Path.GetFullPath. @@ -59,7 +59,7 @@ Secondly, we need to identify the destination output directory, again using the resolved output starts with the resolved destination directory, and throw an exception if this is not the case.

- + diff --git a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs new file mode 100644 index 000000000000..4539aed8b883 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs @@ -0,0 +1,13 @@ +using System; +using System.IO; +using System.Web; + +public class TaintedPathHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext ctx) + { + string filename = ctx.Request.QueryString["path"]; + // BAD: This could read any file on the filesystem. + ctx.Response.Write(File.ReadAllText(filename)); + } +} diff --git a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs new file mode 100644 index 000000000000..19af394b1c74 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Web; + +public class TaintedPathHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext ctx) + { + string filename = ctx.Request.QueryString["path"]; + + string user = ctx.User.Identity.Name; + string publicFolder = Path.GetFullPath("/home/" + user + "/public"); + string filePath = Path.GetFullPath(Path.Combine(publicFolder, filename)); + + // GOOD: ensure that the path stays within the public folder + if (!filePath.StartsWith(publicFolder + Path.DirectorySeparatorChar)) + { + ctx.Response.StatusCode = 400; + ctx.Response.StatusDescription = "Bad Request"; + ctx.Response.Write("Invalid path"); + return; + } + ctx.Response.Write(File.ReadAllText(filename)); + } +} diff --git a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodNormalize.cs b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodNormalize.cs new file mode 100644 index 000000000000..0e31e8b68c90 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodNormalize.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; +using System.Web; + +public class TaintedPathHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext ctx) + { + string filename = ctx.Request.QueryString["path"]; + // GOOD: ensure that the filename has no path separators or parent directory references + if (filename.Contains("..") || filename.Contains("/") || filename.Contains("\\")) + { + ctx.Response.StatusCode = 400; + ctx.Response.StatusDescription = "Bad Request"; + ctx.Response.Write("Invalid path"); + return; + } + ctx.Response.Write(File.ReadAllText(filename)); + } +} diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlipBad.cs b/csharp/ql/src/Security Features/CWE-022/examples/ZipSlipBad.cs similarity index 100% rename from csharp/ql/src/Security Features/CWE-022/ZipSlipBad.cs rename to csharp/ql/src/Security Features/CWE-022/examples/ZipSlipBad.cs diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlipGood.cs b/csharp/ql/src/Security Features/CWE-022/examples/ZipSlipGood.cs similarity index 100% rename from csharp/ql/src/Security Features/CWE-022/ZipSlipGood.cs rename to csharp/ql/src/Security Features/CWE-022/examples/ZipSlipGood.cs diff --git a/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql b/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql index 1713607607ca..47b69d3e975d 100644 --- a/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql +++ b/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql @@ -13,14 +13,18 @@ import csharp import Flow::PathGraph -query predicate edges(Flow::PathNode a, Flow::PathNode b) { - Flow::PathGraph::edges(a, b) +query predicate edges(Flow::PathNode a, Flow::PathNode b, string key, string val) { + Flow::PathGraph::edges(a, b, key, val) or FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallableConfig::isSink(a.getNode()) and - FlowsFromTimeSpanArithmeticToTimeComparisonCallableConfig::isSource(b.getNode()) + FlowsFromTimeSpanArithmeticToTimeComparisonCallableConfig::isSource(b.getNode()) and + key = "provenance" and + val = "" or FlowsFromTimeSpanArithmeticToTimeComparisonCallableConfig::isSink(a.getNode()) and - FlowsFromTimeComparisonCallableToSelectionStatementConditionConfig::isSource(b.getNode()) + FlowsFromTimeComparisonCallableToSelectionStatementConditionConfig::isSource(b.getNode()) and + key = "provenance" and + val = "" } /** diff --git a/csharp/ql/test/experimental/CWE-918/RequestForgery.expected b/csharp/ql/test/experimental/CWE-918/RequestForgery.expected index 4c499ad4be6e..37cc9ded82c8 100644 --- a/csharp/ql/test/experimental/CWE-918/RequestForgery.expected +++ b/csharp/ql/test/experimental/CWE-918/RequestForgery.expected @@ -1,5 +1,5 @@ edges -| RequestForgery.cs:12:52:12:54 | url : String | RequestForgery.cs:14:66:14:68 | access to parameter url | +| RequestForgery.cs:12:52:12:54 | url : String | RequestForgery.cs:14:66:14:68 | access to parameter url | provenance | | nodes | RequestForgery.cs:12:52:12:54 | url : String | semmle.label | url : String | | RequestForgery.cs:14:66:14:68 | access to parameter url | semmle.label | access to parameter url | diff --git a/csharp/ql/test/experimental/Security Features/CWE-759/HashWithoutSalt.expected b/csharp/ql/test/experimental/Security Features/CWE-759/HashWithoutSalt.expected index 0ee0a6b7f61c..f3c1a8ed6c5e 100644 --- a/csharp/ql/test/experimental/Security Features/CWE-759/HashWithoutSalt.expected +++ b/csharp/ql/test/experimental/Security Features/CWE-759/HashWithoutSalt.expected @@ -1,10 +1,10 @@ edges -| HashWithoutSalt.cs:18:28:18:105 | call to method ConvertStringToBinary : IBuffer | HashWithoutSalt.cs:20:49:20:56 | access to local variable passBuff | -| HashWithoutSalt.cs:18:70:18:77 | access to parameter password : String | HashWithoutSalt.cs:18:28:18:105 | call to method ConvertStringToBinary : IBuffer | -| HashWithoutSalt.cs:38:28:38:72 | call to method GetBytes : Byte[] | HashWithoutSalt.cs:39:51:39:59 | access to local variable passBytes | -| HashWithoutSalt.cs:38:64:38:71 | access to parameter password : String | HashWithoutSalt.cs:38:28:38:72 | call to method GetBytes : Byte[] | -| HashWithoutSalt.cs:70:28:70:72 | call to method GetBytes : Byte[] | HashWithoutSalt.cs:71:48:71:56 | access to local variable passBytes | -| HashWithoutSalt.cs:70:64:70:71 | access to parameter password : String | HashWithoutSalt.cs:70:28:70:72 | call to method GetBytes : Byte[] | +| HashWithoutSalt.cs:18:28:18:105 | call to method ConvertStringToBinary : IBuffer | HashWithoutSalt.cs:20:49:20:56 | access to local variable passBuff | provenance | | +| HashWithoutSalt.cs:18:70:18:77 | access to parameter password : String | HashWithoutSalt.cs:18:28:18:105 | call to method ConvertStringToBinary : IBuffer | provenance | | +| HashWithoutSalt.cs:38:28:38:72 | call to method GetBytes : Byte[] | HashWithoutSalt.cs:39:51:39:59 | access to local variable passBytes | provenance | | +| HashWithoutSalt.cs:38:64:38:71 | access to parameter password : String | HashWithoutSalt.cs:38:28:38:72 | call to method GetBytes : Byte[] | provenance | | +| HashWithoutSalt.cs:70:28:70:72 | call to method GetBytes : Byte[] | HashWithoutSalt.cs:71:48:71:56 | access to local variable passBytes | provenance | | +| HashWithoutSalt.cs:70:64:70:71 | access to parameter password : String | HashWithoutSalt.cs:70:28:70:72 | call to method GetBytes : Byte[] | provenance | | nodes | HashWithoutSalt.cs:18:28:18:105 | call to method ConvertStringToBinary : IBuffer | semmle.label | call to method ConvertStringToBinary : IBuffer | | HashWithoutSalt.cs:18:70:18:77 | access to parameter password : String | semmle.label | access to parameter password : String | diff --git a/csharp/ql/test/experimental/Security Features/backdoor/PotentialTimeBomb.expected b/csharp/ql/test/experimental/Security Features/backdoor/PotentialTimeBomb.expected index 512699c5398d..812e17510482 100644 --- a/csharp/ql/test/experimental/Security Features/backdoor/PotentialTimeBomb.expected +++ b/csharp/ql/test/experimental/Security Features/backdoor/PotentialTimeBomb.expected @@ -7,14 +7,14 @@ nodes | test.cs:71:36:71:70 | call to method AddHours | semmle.label | call to method AddHours | subpaths edges -| test.cs:69:34:69:76 | call to method GetLastWriteTime : DateTime | test.cs:71:36:71:48 | access to local variable lastWriteTime | -| test.cs:71:13:71:71 | call to method CompareTo : Int32 | test.cs:71:13:71:76 | ... >= ... | -| test.cs:71:36:71:48 | access to local variable lastWriteTime | test.cs:71:13:71:71 | call to method CompareTo | -| test.cs:71:36:71:48 | access to local variable lastWriteTime | test.cs:71:13:71:71 | call to method CompareTo : Int32 | -| test.cs:71:36:71:48 | access to local variable lastWriteTime | test.cs:71:36:71:70 | call to method AddHours | -| test.cs:71:36:71:70 | call to method AddHours | test.cs:71:13:71:71 | call to method CompareTo | -| test.cs:71:36:71:70 | call to method AddHours | test.cs:71:13:71:71 | call to method CompareTo : Int32 | -| test.cs:71:36:71:70 | call to method AddHours | test.cs:71:36:71:70 | call to method AddHours | +| test.cs:69:34:69:76 | call to method GetLastWriteTime : DateTime | test.cs:71:36:71:48 | access to local variable lastWriteTime | provenance | | +| test.cs:71:13:71:71 | call to method CompareTo : Int32 | test.cs:71:13:71:76 | ... >= ... | provenance | | +| test.cs:71:36:71:48 | access to local variable lastWriteTime | test.cs:71:13:71:71 | call to method CompareTo | provenance | | +| test.cs:71:36:71:48 | access to local variable lastWriteTime | test.cs:71:13:71:71 | call to method CompareTo : Int32 | provenance | | +| test.cs:71:36:71:48 | access to local variable lastWriteTime | test.cs:71:36:71:70 | call to method AddHours | provenance | | +| test.cs:71:36:71:70 | call to method AddHours | test.cs:71:13:71:71 | call to method CompareTo | provenance | | +| test.cs:71:36:71:70 | call to method AddHours | test.cs:71:13:71:71 | call to method CompareTo : Int32 | provenance | | +| test.cs:71:36:71:70 | call to method AddHours | test.cs:71:36:71:70 | call to method AddHours | provenance | | #select | test.cs:71:9:74:9 | if (...) ... | test.cs:69:34:69:76 | call to method GetLastWriteTime : DateTime | test.cs:71:13:71:71 | call to method CompareTo | Possible TimeBomb logic triggered by an $@ that takes into account $@ from the $@ as part of the potential trigger. | test.cs:71:13:71:71 | call to method CompareTo | call to method CompareTo | test.cs:71:36:71:70 | call to method AddHours | offset | test.cs:69:34:69:76 | call to method GetLastWriteTime | last modification time of a file | | test.cs:71:9:74:9 | if (...) ... | test.cs:69:34:69:76 | call to method GetLastWriteTime : DateTime | test.cs:71:13:71:71 | call to method CompareTo : Int32 | Possible TimeBomb logic triggered by an $@ that takes into account $@ from the $@ as part of the potential trigger. | test.cs:71:13:71:71 | call to method CompareTo | call to method CompareTo | test.cs:71:36:71:70 | call to method AddHours | offset | test.cs:69:34:69:76 | call to method GetLastWriteTime | last modification time of a file | diff --git a/csharp/ql/test/library-tests/cil/dataflow/DataFlow.expected b/csharp/ql/test/library-tests/cil/dataflow/DataFlow.expected index 6d75d5ef0415..e4c2f9af9ed2 100644 --- a/csharp/ql/test/library-tests/cil/dataflow/DataFlow.expected +++ b/csharp/ql/test/library-tests/cil/dataflow/DataFlow.expected @@ -1,54 +1,54 @@ edges -| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | -| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | -| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint2 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | -| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint3 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | -| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint5 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | -| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint6 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | -| DataFlow.dll:0:0:0:0 | Parameter 1 of TaintIndirect : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | -| DataFlow.dll:0:0:0:0 | Parameter 2 of Taint1 : String | DataFlow.dll:0:0:0:0 | ldarg.2 : String | -| DataFlow.dll:0:0:0:0 | Parameter 2 of TaintIndirect : String | DataFlow.dll:0:0:0:0 | ldarg.2 : String | -| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | -| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint5 : String | -| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint6 : String | -| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | -| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | -| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | -| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | -| DataFlow.dll:0:0:0:0 | ldarg.2 : String | DataFlow.dll:0:0:0:0 | Parameter 2 of Taint1 : String | -| DataFlow.dll:0:0:0:0 | ldarg.2 : String | DataFlow.dll:0:0:0:0 | call : String | -| DataFlow.dll:0:0:0:0 | ldarg.2 : String | DataFlow.dll:0:0:0:0 | call : String | -| dataflow.cs:16:18:16:26 | "tainted" : String | dataflow.cs:16:18:16:37 | call to method ToString | -| dataflow.cs:18:27:18:27 | 2 : Int32 | dataflow.cs:18:18:18:31 | call to method Max | -| dataflow.cs:18:30:18:30 | 3 : Int32 | dataflow.cs:18:18:18:31 | call to method Max | -| dataflow.cs:19:29:19:31 | 0.5 : Double | dataflow.cs:19:18:19:32 | call to method Round | -| dataflow.cs:20:45:20:53 | "tainted" : String | dataflow.cs:20:18:20:54 | call to method GetFullPath | -| dataflow.cs:27:44:27:46 | 1 : Double | dataflow.cs:27:18:27:52 | call to method IEEERemainder | -| dataflow.cs:27:49:27:51 | 2 : Double | dataflow.cs:27:18:27:52 | call to method IEEERemainder | -| dataflow.cs:38:34:38:37 | "d1" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | -| dataflow.cs:38:34:38:37 | "d1" : String | dataflow.cs:38:18:38:38 | call to method Taint1 | -| dataflow.cs:39:34:39:37 | "d2" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint2 : String | -| dataflow.cs:39:34:39:37 | "d2" : String | dataflow.cs:39:18:39:38 | call to method Taint2 | -| dataflow.cs:40:34:40:37 | "d3" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint3 : String | -| dataflow.cs:40:34:40:37 | "d3" : String | dataflow.cs:40:18:40:38 | call to method Taint3 | -| dataflow.cs:44:28:44:32 | "t1a" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | -| dataflow.cs:44:28:44:32 | "t1a" : String | dataflow.cs:44:18:44:40 | call to method Taint1 | -| dataflow.cs:44:35:44:39 | "t1b" : String | DataFlow.dll:0:0:0:0 | Parameter 2 of Taint1 : String | -| dataflow.cs:44:35:44:39 | "t1b" : String | dataflow.cs:44:18:44:40 | call to method Taint1 | -| dataflow.cs:47:35:47:38 | "t6" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of TaintIndirect : String | -| dataflow.cs:47:35:47:38 | "t6" : String | dataflow.cs:47:18:47:45 | call to method TaintIndirect | -| dataflow.cs:47:41:47:44 | "t6" : String | DataFlow.dll:0:0:0:0 | Parameter 2 of TaintIndirect : String | -| dataflow.cs:47:41:47:44 | "t6" : String | dataflow.cs:47:18:47:45 | call to method TaintIndirect | -| dataflow.cs:72:21:72:34 | call to method NullFunction : null | dataflow.cs:72:21:72:52 | ... ?? ... | -| dataflow.cs:72:39:72:52 | call to method IndirectNull : null | dataflow.cs:72:21:72:52 | ... ?? ... | -| dataflow.cs:87:31:87:44 | call to method NullFunction : null | dataflow.cs:87:24:87:51 | ... ? ... : ... | -| dataflow.cs:100:30:100:33 | null : null | dataflow.cs:72:39:72:52 | call to method IndirectNull : null | -| dataflow.cs:100:30:100:33 | null : null | dataflow.cs:106:20:106:33 | call to method IndirectNull | -| dataflow.cs:100:30:100:33 | null : null | dataflow.cs:106:20:106:33 | call to method IndirectNull : null | -| dataflow.cs:106:20:106:33 | call to method IndirectNull : null | dataflow.cs:108:16:108:16 | access to local variable x : null | -| dataflow.cs:107:23:107:26 | null : null | dataflow.cs:108:16:108:16 | access to local variable x : null | -| dataflow.cs:108:16:108:16 | access to local variable x : null | dataflow.cs:72:21:72:34 | call to method NullFunction : null | -| dataflow.cs:108:16:108:16 | access to local variable x : null | dataflow.cs:87:31:87:44 | call to method NullFunction : null | +| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint2 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint3 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint5 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 1 of Taint6 : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 1 of TaintIndirect : String | DataFlow.dll:0:0:0:0 | ldarg.1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 2 of Taint1 : String | DataFlow.dll:0:0:0:0 | ldarg.2 : String | provenance | | +| DataFlow.dll:0:0:0:0 | Parameter 2 of TaintIndirect : String | DataFlow.dll:0:0:0:0 | ldarg.2 : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint5 : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint6 : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.1 : String | DataFlow.dll:0:0:0:0 | call : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.2 : String | DataFlow.dll:0:0:0:0 | Parameter 2 of Taint1 : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.2 : String | DataFlow.dll:0:0:0:0 | call : String | provenance | | +| DataFlow.dll:0:0:0:0 | ldarg.2 : String | DataFlow.dll:0:0:0:0 | call : String | provenance | | +| dataflow.cs:16:18:16:26 | "tainted" : String | dataflow.cs:16:18:16:37 | call to method ToString | provenance | | +| dataflow.cs:18:27:18:27 | 2 : Int32 | dataflow.cs:18:18:18:31 | call to method Max | provenance | | +| dataflow.cs:18:30:18:30 | 3 : Int32 | dataflow.cs:18:18:18:31 | call to method Max | provenance | | +| dataflow.cs:19:29:19:31 | 0.5 : Double | dataflow.cs:19:18:19:32 | call to method Round | provenance | | +| dataflow.cs:20:45:20:53 | "tainted" : String | dataflow.cs:20:18:20:54 | call to method GetFullPath | provenance | | +| dataflow.cs:27:44:27:46 | 1 : Double | dataflow.cs:27:18:27:52 | call to method IEEERemainder | provenance | | +| dataflow.cs:27:49:27:51 | 2 : Double | dataflow.cs:27:18:27:52 | call to method IEEERemainder | provenance | | +| dataflow.cs:38:34:38:37 | "d1" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | provenance | | +| dataflow.cs:38:34:38:37 | "d1" : String | dataflow.cs:38:18:38:38 | call to method Taint1 | provenance | | +| dataflow.cs:39:34:39:37 | "d2" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint2 : String | provenance | | +| dataflow.cs:39:34:39:37 | "d2" : String | dataflow.cs:39:18:39:38 | call to method Taint2 | provenance | | +| dataflow.cs:40:34:40:37 | "d3" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint3 : String | provenance | | +| dataflow.cs:40:34:40:37 | "d3" : String | dataflow.cs:40:18:40:38 | call to method Taint3 | provenance | | +| dataflow.cs:44:28:44:32 | "t1a" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | provenance | | +| dataflow.cs:44:28:44:32 | "t1a" : String | dataflow.cs:44:18:44:40 | call to method Taint1 | provenance | | +| dataflow.cs:44:35:44:39 | "t1b" : String | DataFlow.dll:0:0:0:0 | Parameter 2 of Taint1 : String | provenance | | +| dataflow.cs:44:35:44:39 | "t1b" : String | dataflow.cs:44:18:44:40 | call to method Taint1 | provenance | | +| dataflow.cs:47:35:47:38 | "t6" : String | DataFlow.dll:0:0:0:0 | Parameter 1 of TaintIndirect : String | provenance | | +| dataflow.cs:47:35:47:38 | "t6" : String | dataflow.cs:47:18:47:45 | call to method TaintIndirect | provenance | | +| dataflow.cs:47:41:47:44 | "t6" : String | DataFlow.dll:0:0:0:0 | Parameter 2 of TaintIndirect : String | provenance | | +| dataflow.cs:47:41:47:44 | "t6" : String | dataflow.cs:47:18:47:45 | call to method TaintIndirect | provenance | | +| dataflow.cs:72:21:72:34 | call to method NullFunction : null | dataflow.cs:72:21:72:52 | ... ?? ... | provenance | | +| dataflow.cs:72:39:72:52 | call to method IndirectNull : null | dataflow.cs:72:21:72:52 | ... ?? ... | provenance | | +| dataflow.cs:87:31:87:44 | call to method NullFunction : null | dataflow.cs:87:24:87:51 | ... ? ... : ... | provenance | | +| dataflow.cs:100:30:100:33 | null : null | dataflow.cs:72:39:72:52 | call to method IndirectNull : null | provenance | | +| dataflow.cs:100:30:100:33 | null : null | dataflow.cs:106:20:106:33 | call to method IndirectNull | provenance | | +| dataflow.cs:100:30:100:33 | null : null | dataflow.cs:106:20:106:33 | call to method IndirectNull : null | provenance | | +| dataflow.cs:106:20:106:33 | call to method IndirectNull : null | dataflow.cs:108:16:108:16 | access to local variable x : null | provenance | | +| dataflow.cs:107:23:107:26 | null : null | dataflow.cs:108:16:108:16 | access to local variable x : null | provenance | | +| dataflow.cs:108:16:108:16 | access to local variable x : null | dataflow.cs:72:21:72:34 | call to method NullFunction : null | provenance | | +| dataflow.cs:108:16:108:16 | access to local variable x : null | dataflow.cs:87:31:87:44 | call to method NullFunction : null | provenance | | nodes | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | semmle.label | Parameter 1 of Taint1 : String | | DataFlow.dll:0:0:0:0 | Parameter 1 of Taint1 : String | semmle.label | Parameter 1 of Taint1 : String | diff --git a/csharp/ql/test/library-tests/cil/dataflow/DataFlow.ql b/csharp/ql/test/library-tests/cil/dataflow/DataFlow.ql index 55d53d0600e7..609717b83404 100644 --- a/csharp/ql/test/library-tests/cil/dataflow/DataFlow.ql +++ b/csharp/ql/test/library-tests/cil/dataflow/DataFlow.ql @@ -13,8 +13,8 @@ private predicate relevantPathNode(Flow::PathNode n) { ) } -query predicate edges(Flow::PathNode a, Flow::PathNode b) { - Flow::PathGraph::edges(a, b) and +query predicate edges(Flow::PathNode a, Flow::PathNode b, string key, string val) { + Flow::PathGraph::edges(a, b, key, val) and relevantPathNode(a) and relevantPathNode(b) } diff --git a/csharp/ql/test/library-tests/constructors/PrimaryConstructor.expected b/csharp/ql/test/library-tests/constructors/PrimaryConstructor.expected new file mode 100644 index 000000000000..af59b035810e --- /dev/null +++ b/csharp/ql/test/library-tests/constructors/PrimaryConstructor.expected @@ -0,0 +1,2 @@ +| constructors.cs:23:18:23:19 | C1 | +| constructors.cs:28:18:28:19 | C2 | diff --git a/csharp/ql/test/library-tests/constructors/PrimaryConstructor.ql b/csharp/ql/test/library-tests/constructors/PrimaryConstructor.ql new file mode 100644 index 000000000000..0a2fb2f23fe8 --- /dev/null +++ b/csharp/ql/test/library-tests/constructors/PrimaryConstructor.ql @@ -0,0 +1,4 @@ +import csharp + +from PrimaryConstructor c +select c diff --git a/csharp/ql/test/library-tests/constructors/PrintAst.expected b/csharp/ql/test/library-tests/constructors/PrintAst.expected index 83a9235de1ae..bd949312d8f4 100644 --- a/csharp/ql/test/library-tests/constructors/PrintAst.expected +++ b/csharp/ql/test/library-tests/constructors/PrintAst.expected @@ -17,3 +17,30 @@ constructors.cs: # 16| -1: [TypeMention] int # 16| 0: [LocalVariableAccess] access to local variable i # 16| 1: [IntLiteral] 0 +# 21| [NamespaceDeclaration] namespace ... { ... } +# 23| 1: [Class] C1 +# 23| 4: [InstanceConstructor,PrimaryConstructor] C1 +#-----| 2: (Parameters) +# 23| 0: [Parameter] o +# 23| -1: [TypeMention] object +# 23| 1: [Parameter] s +# 23| -1: [TypeMention] string +# 25| 5: [InstanceConstructor] C1 +#-----| 2: (Parameters) +# 25| 0: [Parameter] o +# 25| -1: [TypeMention] object +# 25| 3: [ConstructorInitializer] call to constructor C1 +# 25| 0: [ParameterAccess] access to parameter o +# 25| 1: [StringLiteralUtf16] "default" +# 25| 4: [BlockStmt] {...} +# 28| 2: [Class] C2 +#-----| 3: (Base types) +# 28| 0: [TypeMention] C1 +# 28| 4: [InstanceConstructor,PrimaryConstructor] C2 +#-----| 2: (Parameters) +# 28| 0: [Parameter] o +# 28| -1: [TypeMention] object +# 28| 1: [Parameter] s +# 28| -1: [TypeMention] string +# 28| 2: [Parameter] i +# 28| -1: [TypeMention] int diff --git a/csharp/ql/test/library-tests/constructors/constructors.cs b/csharp/ql/test/library-tests/constructors/constructors.cs index d8619a0edb92..33867d8ebc73 100644 --- a/csharp/ql/test/library-tests/constructors/constructors.cs +++ b/csharp/ql/test/library-tests/constructors/constructors.cs @@ -17,3 +17,13 @@ static Class() } } } + +namespace PrimaryConstructors +{ + public class C1(object o, string s) + { + public C1(object o) : this(o, "default") { } + } + + public class C2(object o, string s, int i) : C1(o, s) { } +} diff --git a/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected b/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected index e858c24758db..59e0fb54c328 100644 --- a/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected @@ -1,27 +1,27 @@ edges -| CSharp7.cs:39:9:39:21 | SSA def(x) : String | CSharp7.cs:49:22:49:23 | SSA def(t1) : String | -| CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:39:9:39:21 | SSA def(x) : String | -| CSharp7.cs:42:19:42:19 | x : String | CSharp7.cs:44:9:44:13 | SSA def(y) : String | -| CSharp7.cs:49:22:49:23 | SSA def(t1) : String | CSharp7.cs:51:18:51:19 | access to local variable t1 | -| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:42:19:42:19 | x : String | -| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:55:30:55:31 | SSA def(t4) : String | -| CSharp7.cs:55:30:55:31 | SSA def(t4) : String | CSharp7.cs:56:18:56:19 | access to local variable t4 | -| CSharp7.cs:80:21:80:21 | x : String | CSharp7.cs:82:20:82:20 | access to parameter x : String | -| CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:82:16:82:26 | access to field Item1 : String | -| CSharp7.cs:82:20:82:20 | access to parameter x : String | CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | -| CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | -| CSharp7.cs:87:19:87:27 | "tainted" : String | CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | -| CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:27 | access to field Item1 : String | -| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:80:21:80:21 | x : String | -| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:90:18:90:28 | call to method I | -| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:181:23:181:25 | access to local variable src : String | -| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:182:23:182:25 | access to local variable src : String | -| CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | -| CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | -| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | -| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:26 | call to local function g | -| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | -| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:26 | call to local function h | +| CSharp7.cs:39:9:39:21 | SSA def(x) : String | CSharp7.cs:49:22:49:23 | SSA def(t1) : String | provenance | | +| CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:39:9:39:21 | SSA def(x) : String | provenance | | +| CSharp7.cs:42:19:42:19 | x : String | CSharp7.cs:44:9:44:13 | SSA def(y) : String | provenance | | +| CSharp7.cs:49:22:49:23 | SSA def(t1) : String | CSharp7.cs:51:18:51:19 | access to local variable t1 | provenance | | +| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:42:19:42:19 | x : String | provenance | | +| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:55:30:55:31 | SSA def(t4) : String | provenance | | +| CSharp7.cs:55:30:55:31 | SSA def(t4) : String | CSharp7.cs:56:18:56:19 | access to local variable t4 | provenance | | +| CSharp7.cs:80:21:80:21 | x : String | CSharp7.cs:82:20:82:20 | access to parameter x : String | provenance | | +| CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:82:16:82:26 | access to field Item1 : String | provenance | | +| CSharp7.cs:82:20:82:20 | access to parameter x : String | CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | provenance | | +| CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | provenance | | +| CSharp7.cs:87:19:87:27 | "tainted" : String | CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | provenance | | +| CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:27 | access to field Item1 : String | provenance | | +| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:80:21:80:21 | x : String | provenance | | +| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:90:18:90:28 | call to method I | provenance | | +| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:181:23:181:25 | access to local variable src : String | provenance | | +| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:182:23:182:25 | access to local variable src : String | provenance | | +| CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | provenance | | +| CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | provenance | | +| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:26 | call to local function g | provenance | | +| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | provenance | | +| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:26 | call to local function h | provenance | | nodes | CSharp7.cs:39:9:39:21 | SSA def(x) : String | semmle.label | SSA def(x) : String | | CSharp7.cs:39:13:39:21 | "tainted" : String | semmle.label | "tainted" : String | diff --git a/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected b/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected index 04bb7095ec91..2cc4eb58cf93 100644 --- a/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected +++ b/csharp/ql/test/library-tests/csharp7/GlobalTaintTracking.expected @@ -1,34 +1,34 @@ edges -| CSharp7.cs:39:9:39:21 | SSA def(x) : String | CSharp7.cs:49:22:49:23 | SSA def(t1) : String | -| CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:39:9:39:21 | SSA def(x) : String | -| CSharp7.cs:42:19:42:19 | x : String | CSharp7.cs:44:9:44:13 | SSA def(y) : String | -| CSharp7.cs:49:22:49:23 | SSA def(t1) : String | CSharp7.cs:51:18:51:19 | access to local variable t1 | -| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:42:19:42:19 | x : String | -| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:55:30:55:31 | SSA def(t4) : String | -| CSharp7.cs:55:30:55:31 | SSA def(t4) : String | CSharp7.cs:56:18:56:19 | access to local variable t4 | -| CSharp7.cs:80:21:80:21 | x : String | CSharp7.cs:82:20:82:20 | access to parameter x : String | -| CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:82:16:82:26 | access to field Item1 : String | -| CSharp7.cs:82:20:82:20 | access to parameter x : String | CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | -| CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | -| CSharp7.cs:87:19:87:27 | "tainted" : String | CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | -| CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:27 | access to field Item1 : String | -| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:80:21:80:21 | x : String | -| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:90:18:90:28 | call to method I | -| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:180:23:180:25 | access to local variable src : String | -| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:181:23:181:25 | access to local variable src : String | -| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:182:23:182:25 | access to local variable src : String | -| CSharp7.cs:176:25:176:25 | s : String | CSharp7.cs:176:33:176:33 | access to parameter s : String | -| CSharp7.cs:176:31:176:34 | call to local function g : String | CSharp7.cs:176:31:176:39 | ... + ... : String | -| CSharp7.cs:176:33:176:33 | access to parameter s : String | CSharp7.cs:176:31:176:34 | call to local function g : String | -| CSharp7.cs:176:33:176:33 | access to parameter s : String | CSharp7.cs:177:25:177:25 | s : String | -| CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | -| CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | -| CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:176:25:176:25 | s : String | -| CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:180:21:180:26 | call to local function f | -| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | -| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:26 | call to local function g | -| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | -| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:26 | call to local function h | +| CSharp7.cs:39:9:39:21 | SSA def(x) : String | CSharp7.cs:49:22:49:23 | SSA def(t1) : String | provenance | | +| CSharp7.cs:39:13:39:21 | "tainted" : String | CSharp7.cs:39:9:39:21 | SSA def(x) : String | provenance | | +| CSharp7.cs:42:19:42:19 | x : String | CSharp7.cs:44:9:44:13 | SSA def(y) : String | provenance | | +| CSharp7.cs:49:22:49:23 | SSA def(t1) : String | CSharp7.cs:51:18:51:19 | access to local variable t1 | provenance | | +| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:42:19:42:19 | x : String | provenance | | +| CSharp7.cs:55:11:55:19 | "tainted" : String | CSharp7.cs:55:30:55:31 | SSA def(t4) : String | provenance | | +| CSharp7.cs:55:30:55:31 | SSA def(t4) : String | CSharp7.cs:56:18:56:19 | access to local variable t4 | provenance | | +| CSharp7.cs:80:21:80:21 | x : String | CSharp7.cs:82:20:82:20 | access to parameter x : String | provenance | | +| CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:82:16:82:26 | access to field Item1 : String | provenance | | +| CSharp7.cs:82:20:82:20 | access to parameter x : String | CSharp7.cs:82:16:82:24 | (..., ...) : ValueTuple [field Item1] : String | provenance | | +| CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | provenance | | +| CSharp7.cs:87:19:87:27 | "tainted" : String | CSharp7.cs:87:18:87:34 | (..., ...) : ValueTuple [field Item1] : String | provenance | | +| CSharp7.cs:90:20:90:21 | access to local variable t1 : ValueTuple [field Item1] : String | CSharp7.cs:90:20:90:27 | access to field Item1 : String | provenance | | +| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:80:21:80:21 | x : String | provenance | | +| CSharp7.cs:90:20:90:27 | access to field Item1 : String | CSharp7.cs:90:18:90:28 | call to method I | provenance | | +| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:180:23:180:25 | access to local variable src : String | provenance | | +| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:181:23:181:25 | access to local variable src : String | provenance | | +| CSharp7.cs:175:22:175:30 | "tainted" : String | CSharp7.cs:182:23:182:25 | access to local variable src : String | provenance | | +| CSharp7.cs:176:25:176:25 | s : String | CSharp7.cs:176:33:176:33 | access to parameter s : String | provenance | | +| CSharp7.cs:176:31:176:34 | call to local function g : String | CSharp7.cs:176:31:176:39 | ... + ... : String | provenance | | +| CSharp7.cs:176:33:176:33 | access to parameter s : String | CSharp7.cs:176:31:176:34 | call to local function g : String | provenance | | +| CSharp7.cs:176:33:176:33 | access to parameter s : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:177:25:177:25 | s : String | CSharp7.cs:177:31:177:31 | access to parameter s : String | provenance | | +| CSharp7.cs:178:25:178:25 | s : String | CSharp7.cs:178:37:178:37 | access to parameter s : String | provenance | | +| CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:176:25:176:25 | s : String | provenance | | +| CSharp7.cs:180:23:180:25 | access to local variable src : String | CSharp7.cs:180:21:180:26 | call to local function f | provenance | | +| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:177:25:177:25 | s : String | provenance | | +| CSharp7.cs:181:23:181:25 | access to local variable src : String | CSharp7.cs:181:21:181:26 | call to local function g | provenance | | +| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:178:25:178:25 | s : String | provenance | | +| CSharp7.cs:182:23:182:25 | access to local variable src : String | CSharp7.cs:182:21:182:26 | call to local function h | provenance | | nodes | CSharp7.cs:39:9:39:21 | SSA def(x) : String | semmle.label | SSA def(x) : String | | CSharp7.cs:39:13:39:21 | "tainted" : String | semmle.label | "tainted" : String | diff --git a/csharp/ql/test/library-tests/csharp9/PrintAst.expected b/csharp/ql/test/library-tests/csharp9/PrintAst.expected index feef948d70bd..7bc97c98d706 100644 --- a/csharp/ql/test/library-tests/csharp9/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp9/PrintAst.expected @@ -878,7 +878,7 @@ Record.cs: # 27| 1: [Parameter] right # 27| 14: [Property] EqualityContract # 27| 3: [Getter] get_EqualityContract -# 27| 15: [InstanceConstructor] Person1 +# 27| 15: [InstanceConstructor,PrimaryConstructor] Person1 #-----| 2: (Parameters) # 27| 0: [Parameter] FirstName # 27| -1: [TypeMention] string @@ -905,7 +905,7 @@ Record.cs: # 29| 1: [Parameter] right # 29| 15: [Property] EqualityContract # 29| 3: [Getter] get_EqualityContract -# 29| 16: [InstanceConstructor] Teacher1 +# 29| 16: [InstanceConstructor,PrimaryConstructor] Teacher1 #-----| 2: (Parameters) # 29| 0: [Parameter] FirstName # 29| -1: [TypeMention] string @@ -929,7 +929,7 @@ Record.cs: # 32| 1: [Parameter] right # 32| 15: [Property] EqualityContract # 32| 3: [Getter] get_EqualityContract -# 32| 16: [InstanceConstructor] Student1 +# 32| 16: [InstanceConstructor,PrimaryConstructor] Student1 #-----| 2: (Parameters) # 32| 0: [Parameter] FirstName # 32| -1: [TypeMention] string @@ -953,7 +953,7 @@ Record.cs: # 35| 1: [Parameter] right # 35| 14: [Property] EqualityContract # 35| 3: [Getter] get_EqualityContract -# 35| 15: [InstanceConstructor] Pet +# 35| 15: [InstanceConstructor,PrimaryConstructor] Pet #-----| 2: (Parameters) # 35| 0: [Parameter] Name # 35| -1: [TypeMention] string @@ -977,7 +977,7 @@ Record.cs: #-----| 2: (Parameters) # 41| 0: [Parameter] left # 41| 1: [Parameter] right -# 41| 14: [InstanceConstructor] Dog +# 41| 14: [InstanceConstructor,PrimaryConstructor] Dog #-----| 2: (Parameters) # 41| 0: [Parameter] Name # 41| -1: [TypeMention] string @@ -1018,7 +1018,7 @@ Record.cs: # 54| 1: [Parameter] right # 54| 14: [Property] EqualityContract # 54| 3: [Getter] get_EqualityContract -# 54| 15: [InstanceConstructor] R1 +# 54| 15: [InstanceConstructor,PrimaryConstructor] R1 #-----| 2: (Parameters) # 54| 0: [Parameter] A # 54| -1: [TypeMention] string @@ -1038,7 +1038,7 @@ Record.cs: # 56| 1: [Parameter] right # 56| 15: [Property] EqualityContract # 56| 3: [Getter] get_EqualityContract -# 56| 16: [InstanceConstructor] R2 +# 56| 16: [InstanceConstructor,PrimaryConstructor] R2 #-----| 2: (Parameters) # 56| 0: [Parameter] A # 56| -1: [TypeMention] string diff --git a/csharp/ql/test/library-tests/dataflow/async/Async.expected b/csharp/ql/test/library-tests/dataflow/async/Async.expected index 4fd0136cda04..ed0395fff0b3 100644 --- a/csharp/ql/test/library-tests/dataflow/async/Async.expected +++ b/csharp/ql/test/library-tests/dataflow/async/Async.expected @@ -1,39 +1,39 @@ edges -| Async.cs:9:37:9:41 | input : String | Async.cs:11:21:11:25 | access to parameter input : String | -| Async.cs:11:21:11:25 | access to parameter input : String | Async.cs:11:14:11:26 | call to method Return | -| Async.cs:11:21:11:25 | access to parameter input : String | Async.cs:14:34:14:34 | x : String | -| Async.cs:14:34:14:34 | x : String | Async.cs:16:16:16:16 | access to parameter x : String | -| Async.cs:14:34:14:34 | x : String | Async.cs:16:16:16:16 | access to parameter x : String | -| Async.cs:16:16:16:16 | access to parameter x : String | Async.cs:11:14:11:26 | call to method Return | -| Async.cs:19:41:19:45 | input : String | Async.cs:21:32:21:36 | access to parameter input : String | -| Async.cs:21:20:21:37 | call to method ReturnAwait : Task [property Result] : String | Async.cs:21:14:21:37 | await ... | -| Async.cs:21:32:21:36 | access to parameter input : String | Async.cs:21:20:21:37 | call to method ReturnAwait : Task [property Result] : String | -| Async.cs:21:32:21:36 | access to parameter input : String | Async.cs:35:51:35:51 | x : String | -| Async.cs:24:41:24:45 | input : String | Async.cs:26:35:26:39 | access to parameter input : String | -| Async.cs:26:17:26:40 | await ... : String | Async.cs:27:14:27:14 | access to local variable x | -| Async.cs:26:23:26:40 | call to method ReturnAwait : Task [property Result] : String | Async.cs:26:17:26:40 | await ... : String | -| Async.cs:26:35:26:39 | access to parameter input : String | Async.cs:26:23:26:40 | call to method ReturnAwait : Task [property Result] : String | -| Async.cs:26:35:26:39 | access to parameter input : String | Async.cs:35:51:35:51 | x : String | -| Async.cs:30:35:30:39 | input : String | Async.cs:32:27:32:31 | access to parameter input : String | -| Async.cs:32:14:32:32 | call to method ReturnAwait2 : Task [property Result] : String | Async.cs:32:14:32:39 | access to property Result | -| Async.cs:32:27:32:31 | access to parameter input : String | Async.cs:32:14:32:32 | call to method ReturnAwait2 : Task [property Result] : String | -| Async.cs:32:27:32:31 | access to parameter input : String | Async.cs:51:52:51:52 | x : String | -| Async.cs:35:51:35:51 | x : String | Async.cs:38:16:38:16 | access to parameter x : String | -| Async.cs:35:51:35:51 | x : String | Async.cs:38:16:38:16 | access to parameter x : String | -| Async.cs:38:16:38:16 | access to parameter x : String | Async.cs:21:20:21:37 | call to method ReturnAwait : Task [property Result] : String | -| Async.cs:38:16:38:16 | access to parameter x : String | Async.cs:26:23:26:40 | call to method ReturnAwait : Task [property Result] : String | -| Async.cs:41:33:41:37 | input : String | Async.cs:43:25:43:29 | access to parameter input : String | -| Async.cs:43:14:43:30 | call to method ReturnTask : Task [property Result] : String | Async.cs:43:14:43:37 | access to property Result | -| Async.cs:43:25:43:29 | access to parameter input : String | Async.cs:43:14:43:30 | call to method ReturnTask : Task [property Result] : String | -| Async.cs:43:25:43:29 | access to parameter input : String | Async.cs:46:44:46:44 | x : String | -| Async.cs:46:44:46:44 | x : String | Async.cs:48:32:48:32 | access to parameter x : String | -| Async.cs:46:44:46:44 | x : String | Async.cs:48:32:48:32 | access to parameter x : String | -| Async.cs:48:16:48:33 | call to method FromResult : Task [property Result] : String | Async.cs:43:14:43:30 | call to method ReturnTask : Task [property Result] : String | -| Async.cs:48:32:48:32 | access to parameter x : String | Async.cs:48:16:48:33 | call to method FromResult : Task [property Result] : String | -| Async.cs:48:32:48:32 | access to parameter x : String | Async.cs:48:16:48:33 | call to method FromResult : Task [property Result] : String | -| Async.cs:51:52:51:52 | x : String | Async.cs:51:58:51:58 | access to parameter x : String | -| Async.cs:51:52:51:52 | x : String | Async.cs:51:58:51:58 | access to parameter x : String | -| Async.cs:51:58:51:58 | access to parameter x : String | Async.cs:32:14:32:32 | call to method ReturnAwait2 : Task [property Result] : String | +| Async.cs:9:37:9:41 | input : String | Async.cs:11:21:11:25 | access to parameter input : String | provenance | | +| Async.cs:11:21:11:25 | access to parameter input : String | Async.cs:11:14:11:26 | call to method Return | provenance | | +| Async.cs:11:21:11:25 | access to parameter input : String | Async.cs:14:34:14:34 | x : String | provenance | | +| Async.cs:14:34:14:34 | x : String | Async.cs:16:16:16:16 | access to parameter x : String | provenance | | +| Async.cs:14:34:14:34 | x : String | Async.cs:16:16:16:16 | access to parameter x : String | provenance | | +| Async.cs:16:16:16:16 | access to parameter x : String | Async.cs:11:14:11:26 | call to method Return | provenance | | +| Async.cs:19:41:19:45 | input : String | Async.cs:21:32:21:36 | access to parameter input : String | provenance | | +| Async.cs:21:20:21:37 | call to method ReturnAwait : Task [property Result] : String | Async.cs:21:14:21:37 | await ... | provenance | | +| Async.cs:21:32:21:36 | access to parameter input : String | Async.cs:21:20:21:37 | call to method ReturnAwait : Task [property Result] : String | provenance | | +| Async.cs:21:32:21:36 | access to parameter input : String | Async.cs:35:51:35:51 | x : String | provenance | | +| Async.cs:24:41:24:45 | input : String | Async.cs:26:35:26:39 | access to parameter input : String | provenance | | +| Async.cs:26:17:26:40 | await ... : String | Async.cs:27:14:27:14 | access to local variable x | provenance | | +| Async.cs:26:23:26:40 | call to method ReturnAwait : Task [property Result] : String | Async.cs:26:17:26:40 | await ... : String | provenance | | +| Async.cs:26:35:26:39 | access to parameter input : String | Async.cs:26:23:26:40 | call to method ReturnAwait : Task [property Result] : String | provenance | | +| Async.cs:26:35:26:39 | access to parameter input : String | Async.cs:35:51:35:51 | x : String | provenance | | +| Async.cs:30:35:30:39 | input : String | Async.cs:32:27:32:31 | access to parameter input : String | provenance | | +| Async.cs:32:14:32:32 | call to method ReturnAwait2 : Task [property Result] : String | Async.cs:32:14:32:39 | access to property Result | provenance | | +| Async.cs:32:27:32:31 | access to parameter input : String | Async.cs:32:14:32:32 | call to method ReturnAwait2 : Task [property Result] : String | provenance | | +| Async.cs:32:27:32:31 | access to parameter input : String | Async.cs:51:52:51:52 | x : String | provenance | | +| Async.cs:35:51:35:51 | x : String | Async.cs:38:16:38:16 | access to parameter x : String | provenance | | +| Async.cs:35:51:35:51 | x : String | Async.cs:38:16:38:16 | access to parameter x : String | provenance | | +| Async.cs:38:16:38:16 | access to parameter x : String | Async.cs:21:20:21:37 | call to method ReturnAwait : Task [property Result] : String | provenance | | +| Async.cs:38:16:38:16 | access to parameter x : String | Async.cs:26:23:26:40 | call to method ReturnAwait : Task [property Result] : String | provenance | | +| Async.cs:41:33:41:37 | input : String | Async.cs:43:25:43:29 | access to parameter input : String | provenance | | +| Async.cs:43:14:43:30 | call to method ReturnTask : Task [property Result] : String | Async.cs:43:14:43:37 | access to property Result | provenance | | +| Async.cs:43:25:43:29 | access to parameter input : String | Async.cs:43:14:43:30 | call to method ReturnTask : Task [property Result] : String | provenance | | +| Async.cs:43:25:43:29 | access to parameter input : String | Async.cs:46:44:46:44 | x : String | provenance | | +| Async.cs:46:44:46:44 | x : String | Async.cs:48:32:48:32 | access to parameter x : String | provenance | | +| Async.cs:46:44:46:44 | x : String | Async.cs:48:32:48:32 | access to parameter x : String | provenance | | +| Async.cs:48:16:48:33 | call to method FromResult : Task [property Result] : String | Async.cs:43:14:43:30 | call to method ReturnTask : Task [property Result] : String | provenance | | +| Async.cs:48:32:48:32 | access to parameter x : String | Async.cs:48:16:48:33 | call to method FromResult : Task [property Result] : String | provenance | | +| Async.cs:48:32:48:32 | access to parameter x : String | Async.cs:48:16:48:33 | call to method FromResult : Task [property Result] : String | provenance | | +| Async.cs:51:52:51:52 | x : String | Async.cs:51:58:51:58 | access to parameter x : String | provenance | | +| Async.cs:51:52:51:52 | x : String | Async.cs:51:58:51:58 | access to parameter x : String | provenance | | +| Async.cs:51:58:51:58 | access to parameter x : String | Async.cs:32:14:32:32 | call to method ReturnAwait2 : Task [property Result] : String | provenance | | nodes | Async.cs:9:37:9:41 | input : String | semmle.label | input : String | | Async.cs:11:14:11:26 | call to method Return | semmle.label | call to method Return | diff --git a/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected b/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected index c7cc4c5f45f8..daf679b629a4 100644 --- a/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected @@ -1,46 +1,46 @@ edges -| CallSensitivityFlow.cs:7:38:7:38 | o : Object | CallSensitivityFlow.cs:11:20:11:20 | access to parameter o : Object | -| CallSensitivityFlow.cs:7:38:7:38 | o : Object | CallSensitivityFlow.cs:11:20:11:20 | access to parameter o : Object | -| CallSensitivityFlow.cs:19:39:19:39 | o : Object | CallSensitivityFlow.cs:23:18:23:18 | access to parameter o | -| CallSensitivityFlow.cs:27:40:27:40 | o : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | -| CallSensitivityFlow.cs:27:40:27:40 | o : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | -| CallSensitivityFlow.cs:35:41:35:41 | o : Object | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | -| CallSensitivityFlow.cs:43:45:43:45 | o : Object | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | -| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | -| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | -| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | -| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | -| CallSensitivityFlow.cs:78:24:78:35 | object creation of type Object : Object | CallSensitivityFlow.cs:19:39:19:39 | o : Object | -| CallSensitivityFlow.cs:79:25:79:36 | object creation of type Object : Object | CallSensitivityFlow.cs:27:40:27:40 | o : Object | -| CallSensitivityFlow.cs:80:26:80:37 | object creation of type Object : Object | CallSensitivityFlow.cs:35:41:35:41 | o : Object | -| CallSensitivityFlow.cs:81:30:81:41 | object creation of type Object : Object | CallSensitivityFlow.cs:43:45:43:45 | o : Object | -| CallSensitivityFlow.cs:82:31:82:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | -| CallSensitivityFlow.cs:83:31:83:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | -| CallSensitivityFlow.cs:84:31:84:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | -| CallSensitivityFlow.cs:85:26:85:37 | object creation of type Object : Object | CallSensitivityFlow.cs:7:38:7:38 | o : Object | -| CallSensitivityFlow.cs:85:26:85:37 | object creation of type Object : Object | CallSensitivityFlow.cs:85:14:85:44 | call to method FlowThrough | -| CallSensitivityFlow.cs:87:31:87:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | -| CallSensitivityFlow.cs:101:24:101:35 | object creation of type Object : Object | CallSensitivityFlow.cs:19:39:19:39 | o : Object | -| CallSensitivityFlow.cs:102:25:102:36 | object creation of type Object : Object | CallSensitivityFlow.cs:27:40:27:40 | o : Object | -| CallSensitivityFlow.cs:103:26:103:37 | object creation of type Object : Object | CallSensitivityFlow.cs:35:41:35:41 | o : Object | -| CallSensitivityFlow.cs:104:30:104:41 | object creation of type Object : Object | CallSensitivityFlow.cs:43:45:43:45 | o : Object | -| CallSensitivityFlow.cs:105:26:105:37 | object creation of type Object : Object | CallSensitivityFlow.cs:7:38:7:38 | o : Object | -| CallSensitivityFlow.cs:105:26:105:37 | object creation of type Object : Object | CallSensitivityFlow.cs:105:14:105:41 | call to method FlowThrough | -| CallSensitivityFlow.cs:117:26:117:37 | object creation of type Object : Object | CallSensitivityFlow.cs:124:43:124:43 | o : Object | -| CallSensitivityFlow.cs:118:27:118:38 | object creation of type Object : Object | CallSensitivityFlow.cs:132:44:132:44 | o : Object | -| CallSensitivityFlow.cs:119:32:119:43 | object creation of type Object : Object | CallSensitivityFlow.cs:140:49:140:49 | o : Object | -| CallSensitivityFlow.cs:124:43:124:43 | o : Object | CallSensitivityFlow.cs:128:22:128:22 | access to parameter o | -| CallSensitivityFlow.cs:132:44:132:44 | o : Object | CallSensitivityFlow.cs:136:22:136:22 | access to parameter o | -| CallSensitivityFlow.cs:140:49:140:49 | o : Object | CallSensitivityFlow.cs:150:18:150:19 | access to local variable o3 | -| CallSensitivityFlow.cs:162:34:162:34 | o : Object | CallSensitivityFlow.cs:164:14:164:14 | access to parameter o | -| CallSensitivityFlow.cs:167:44:167:44 | o : Object | CallSensitivityFlow.cs:169:14:169:14 | access to parameter o : Object | -| CallSensitivityFlow.cs:169:14:169:14 | access to parameter o : Object | CallSensitivityFlow.cs:162:34:162:34 | o : Object | -| CallSensitivityFlow.cs:172:37:172:48 | object creation of type Object : Object | CallSensitivityFlow.cs:174:45:174:53 | call to method MOut : Object | -| CallSensitivityFlow.cs:174:45:174:53 | call to method MOut : Object | CallSensitivityFlow.cs:187:17:187:30 | call to method CallMOut : Object | -| CallSensitivityFlow.cs:182:21:182:32 | object creation of type Object : Object | CallSensitivityFlow.cs:205:40:205:40 | o : Object | -| CallSensitivityFlow.cs:185:21:185:32 | object creation of type Object : Object | CallSensitivityFlow.cs:167:44:167:44 | o : Object | -| CallSensitivityFlow.cs:187:17:187:30 | call to method CallMOut : Object | CallSensitivityFlow.cs:188:14:188:14 | access to local variable o | -| CallSensitivityFlow.cs:205:40:205:40 | o : Object | CallSensitivityFlow.cs:208:18:208:18 | access to parameter o | +| CallSensitivityFlow.cs:7:38:7:38 | o : Object | CallSensitivityFlow.cs:11:20:11:20 | access to parameter o : Object | provenance | | +| CallSensitivityFlow.cs:7:38:7:38 | o : Object | CallSensitivityFlow.cs:11:20:11:20 | access to parameter o : Object | provenance | | +| CallSensitivityFlow.cs:19:39:19:39 | o : Object | CallSensitivityFlow.cs:23:18:23:18 | access to parameter o | provenance | | +| CallSensitivityFlow.cs:27:40:27:40 | o : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | provenance | | +| CallSensitivityFlow.cs:27:40:27:40 | o : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | provenance | | +| CallSensitivityFlow.cs:35:41:35:41 | o : Object | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | provenance | | +| CallSensitivityFlow.cs:43:45:43:45 | o : Object | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | provenance | | +| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | provenance | | +| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | provenance | | +| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | provenance | | +| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | provenance | | +| CallSensitivityFlow.cs:78:24:78:35 | object creation of type Object : Object | CallSensitivityFlow.cs:19:39:19:39 | o : Object | provenance | | +| CallSensitivityFlow.cs:79:25:79:36 | object creation of type Object : Object | CallSensitivityFlow.cs:27:40:27:40 | o : Object | provenance | | +| CallSensitivityFlow.cs:80:26:80:37 | object creation of type Object : Object | CallSensitivityFlow.cs:35:41:35:41 | o : Object | provenance | | +| CallSensitivityFlow.cs:81:30:81:41 | object creation of type Object : Object | CallSensitivityFlow.cs:43:45:43:45 | o : Object | provenance | | +| CallSensitivityFlow.cs:82:31:82:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | provenance | | +| CallSensitivityFlow.cs:83:31:83:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | provenance | | +| CallSensitivityFlow.cs:84:31:84:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | provenance | | +| CallSensitivityFlow.cs:85:26:85:37 | object creation of type Object : Object | CallSensitivityFlow.cs:7:38:7:38 | o : Object | provenance | | +| CallSensitivityFlow.cs:85:26:85:37 | object creation of type Object : Object | CallSensitivityFlow.cs:85:14:85:44 | call to method FlowThrough | provenance | | +| CallSensitivityFlow.cs:87:31:87:42 | object creation of type Object : Object | CallSensitivityFlow.cs:56:46:56:46 | o : Object | provenance | | +| CallSensitivityFlow.cs:101:24:101:35 | object creation of type Object : Object | CallSensitivityFlow.cs:19:39:19:39 | o : Object | provenance | | +| CallSensitivityFlow.cs:102:25:102:36 | object creation of type Object : Object | CallSensitivityFlow.cs:27:40:27:40 | o : Object | provenance | | +| CallSensitivityFlow.cs:103:26:103:37 | object creation of type Object : Object | CallSensitivityFlow.cs:35:41:35:41 | o : Object | provenance | | +| CallSensitivityFlow.cs:104:30:104:41 | object creation of type Object : Object | CallSensitivityFlow.cs:43:45:43:45 | o : Object | provenance | | +| CallSensitivityFlow.cs:105:26:105:37 | object creation of type Object : Object | CallSensitivityFlow.cs:7:38:7:38 | o : Object | provenance | | +| CallSensitivityFlow.cs:105:26:105:37 | object creation of type Object : Object | CallSensitivityFlow.cs:105:14:105:41 | call to method FlowThrough | provenance | | +| CallSensitivityFlow.cs:117:26:117:37 | object creation of type Object : Object | CallSensitivityFlow.cs:124:43:124:43 | o : Object | provenance | | +| CallSensitivityFlow.cs:118:27:118:38 | object creation of type Object : Object | CallSensitivityFlow.cs:132:44:132:44 | o : Object | provenance | | +| CallSensitivityFlow.cs:119:32:119:43 | object creation of type Object : Object | CallSensitivityFlow.cs:140:49:140:49 | o : Object | provenance | | +| CallSensitivityFlow.cs:124:43:124:43 | o : Object | CallSensitivityFlow.cs:128:22:128:22 | access to parameter o | provenance | | +| CallSensitivityFlow.cs:132:44:132:44 | o : Object | CallSensitivityFlow.cs:136:22:136:22 | access to parameter o | provenance | | +| CallSensitivityFlow.cs:140:49:140:49 | o : Object | CallSensitivityFlow.cs:150:18:150:19 | access to local variable o3 | provenance | | +| CallSensitivityFlow.cs:162:34:162:34 | o : Object | CallSensitivityFlow.cs:164:14:164:14 | access to parameter o | provenance | | +| CallSensitivityFlow.cs:167:44:167:44 | o : Object | CallSensitivityFlow.cs:169:14:169:14 | access to parameter o : Object | provenance | | +| CallSensitivityFlow.cs:169:14:169:14 | access to parameter o : Object | CallSensitivityFlow.cs:162:34:162:34 | o : Object | provenance | | +| CallSensitivityFlow.cs:172:37:172:48 | object creation of type Object : Object | CallSensitivityFlow.cs:174:45:174:53 | call to method MOut : Object | provenance | | +| CallSensitivityFlow.cs:174:45:174:53 | call to method MOut : Object | CallSensitivityFlow.cs:187:17:187:30 | call to method CallMOut : Object | provenance | | +| CallSensitivityFlow.cs:182:21:182:32 | object creation of type Object : Object | CallSensitivityFlow.cs:205:40:205:40 | o : Object | provenance | | +| CallSensitivityFlow.cs:185:21:185:32 | object creation of type Object : Object | CallSensitivityFlow.cs:167:44:167:44 | o : Object | provenance | | +| CallSensitivityFlow.cs:187:17:187:30 | call to method CallMOut : Object | CallSensitivityFlow.cs:188:14:188:14 | access to local variable o | provenance | | +| CallSensitivityFlow.cs:205:40:205:40 | o : Object | CallSensitivityFlow.cs:208:18:208:18 | access to parameter o | provenance | | nodes | CallSensitivityFlow.cs:7:38:7:38 | o : Object | semmle.label | o : Object | | CallSensitivityFlow.cs:7:38:7:38 | o : Object | semmle.label | o : Object | diff --git a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected index 4ecd3771cbf7..2aadd5b0bbf5 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected @@ -1,278 +1,278 @@ edges -| CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | CollectionFlow.cs:14:52:14:53 | access to parameter ts : A[] [element] : A | -| CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | CollectionFlow.cs:14:52:14:53 | access to parameter ts : null [element] : A | -| CollectionFlow.cs:14:52:14:53 | access to parameter ts : A[] [element] : A | CollectionFlow.cs:14:52:14:56 | access to array element | -| CollectionFlow.cs:14:52:14:53 | access to parameter ts : null [element] : A | CollectionFlow.cs:14:52:14:56 | access to array element | -| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | -| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | -| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | -| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | -| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | -| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | -| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | -| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | -| CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:75:18:78 | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:18:75:18:78 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:75:18:81 | access to indexer | -| CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:73:20:76 | access to parameter dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:20:73:20:76 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:73:20:81 | access to property Keys : ICollection [element] : A | -| CollectionFlow.cs:20:73:20:81 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:20:73:20:89 | call to method First | -| CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:42 | access to parameter ts : A[] [element] : A | -| CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | CollectionFlow.cs:22:41:22:42 | access to parameter ts : null [element] : A | -| CollectionFlow.cs:22:41:22:42 | access to parameter ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | -| CollectionFlow.cs:22:41:22:42 | access to parameter ts : null [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | -| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | -| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | -| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | -| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | -| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | -| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | -| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | -| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | -| CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:70 | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:26:67:26:70 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | -| CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:71 | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:28:68:28:71 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:79 | call to method First> : KeyValuePair [property Value] : A | -| CollectionFlow.cs:28:68:28:79 | call to method First> : KeyValuePair [property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | -| CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:72 | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:30:69:30:72 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | -| CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | -| CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | -| CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | -| CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:69 | access to parameter dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:34:66:34:69 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:77 | call to method First> : KeyValuePair [property Key] : A | -| CollectionFlow.cs:34:66:34:77 | call to method First> : KeyValuePair [property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | -| CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | CollectionFlow.cs:36:63:36:66 | access to parameter args : A[] [element] : A | -| CollectionFlow.cs:36:49:36:52 | args : null [element] : A | CollectionFlow.cs:36:63:36:66 | access to parameter args : null [element] : A | -| CollectionFlow.cs:36:63:36:66 | access to parameter args : A[] [element] : A | CollectionFlow.cs:36:63:36:69 | access to array element | -| CollectionFlow.cs:36:63:36:66 | access to parameter args : null [element] : A | CollectionFlow.cs:36:63:36:69 | access to array element | -| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:41:27:41:27 | access to local variable a : A | -| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:42:14:42:16 | access to local variable as : null [element] : A | -| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:43:18:43:20 | access to local variable as : null [element] : A | -| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | -| CollectionFlow.cs:41:27:41:27 | access to local variable a : A | CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | -| CollectionFlow.cs:42:14:42:16 | access to local variable as : null [element] : A | CollectionFlow.cs:42:14:42:19 | access to array element | -| CollectionFlow.cs:43:18:43:20 | access to local variable as : null [element] : A | CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | -| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | -| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | CollectionFlow.cs:44:14:44:23 | call to method First
| -| CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:59:53:59:53 | access to local variable a : A | -| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:60:14:60:14 | access to local variable c : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:61:18:61:18 | access to local variable c : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:20:62:20 | access to local variable c : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:59:45:59:55 | { ..., ... } : A[] [element] : A | CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | -| CollectionFlow.cs:59:53:59:53 | access to local variable a : A | CollectionFlow.cs:59:45:59:55 | { ..., ... } : A[] [element] : A | -| CollectionFlow.cs:60:14:60:14 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:60:14:60:17 | access to field As : A[] [element] : A | -| CollectionFlow.cs:60:14:60:17 | access to field As : A[] [element] : A | CollectionFlow.cs:60:14:60:20 | access to array element | -| CollectionFlow.cs:61:18:61:18 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:61:18:61:21 | access to field As : A[] [element] : A | -| CollectionFlow.cs:61:18:61:21 | access to field As : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | -| CollectionFlow.cs:62:20:62:20 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | -| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | -| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | CollectionFlow.cs:62:14:62:24 | call to method First | -| CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:78:18:78:18 | access to local variable a : A | -| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:79:14:79:16 | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:80:18:80:20 | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:78:18:78:18 | access to local variable a : A | CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | -| CollectionFlow.cs:79:14:79:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:79:14:79:19 | access to array element | -| CollectionFlow.cs:80:18:80:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | -| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | -| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:81:14:81:23 | call to method First | -| CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:98:19:98:19 | access to local variable a : A | -| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:99:14:99:17 | access to local variable list : List [element] : A | -| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:100:22:100:25 | access to local variable list : List [element] : A | -| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | -| CollectionFlow.cs:98:19:98:19 | access to local variable a : A | CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:99:14:99:17 | access to local variable list : List [element] : A | CollectionFlow.cs:99:14:99:20 | access to indexer | -| CollectionFlow.cs:100:22:100:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | -| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | -| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | CollectionFlow.cs:101:14:101:28 | call to method ListFirst | -| CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:116:36:116:36 | access to local variable a : A | -| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | CollectionFlow.cs:117:14:117:17 | access to local variable list : List [element] : A | -| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | CollectionFlow.cs:118:22:118:25 | access to local variable list : List [element] : A | -| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | -| CollectionFlow.cs:116:36:116:36 | access to local variable a : A | CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | -| CollectionFlow.cs:117:14:117:17 | access to local variable list : List [element] : A | CollectionFlow.cs:117:14:117:20 | access to indexer | -| CollectionFlow.cs:118:22:118:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | -| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | -| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | CollectionFlow.cs:119:14:119:28 | call to method ListFirst | -| CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:134:18:134:18 | access to local variable a : A | -| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:135:14:135:17 | access to local variable list : List [element] : A | -| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:136:22:136:25 | access to local variable list : List [element] : A | -| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | -| CollectionFlow.cs:134:18:134:18 | access to local variable a : A | CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:135:14:135:17 | access to local variable list : List [element] : A | CollectionFlow.cs:135:14:135:20 | access to indexer | -| CollectionFlow.cs:136:22:136:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | -| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | -| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | CollectionFlow.cs:137:14:137:28 | call to method ListFirst | -| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:153:19:153:19 | access to local variable a : A | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:154:14:154:17 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:155:23:155:26 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:153:19:153:19 | access to local variable a : A | CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:154:14:154:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:154:14:154:20 | access to indexer | -| CollectionFlow.cs:155:23:155:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | -| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | -| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:175:52:175:52 | access to local variable a : A | -| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:176:14:176:17 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:177:23:177:26 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:175:52:175:52 | access to local variable a : A | CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | -| CollectionFlow.cs:176:14:176:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:176:14:176:20 | access to indexer | -| CollectionFlow.cs:177:23:177:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | -| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | -| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:196:53:196:53 | access to local variable a : A | -| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:197:14:197:17 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:198:23:198:26 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:196:53:196:53 | access to local variable a : A | CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | -| CollectionFlow.cs:197:14:197:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:197:14:197:20 | access to indexer | -| CollectionFlow.cs:198:23:198:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | -| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | -| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:218:49:218:49 | access to local variable a : A | -| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:219:14:219:17 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:220:21:220:24 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:218:49:218:49 | access to local variable a : A | CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | -| CollectionFlow.cs:219:14:219:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:219:14:219:22 | access to property Keys : Dictionary.KeyCollection [element] : A | -| CollectionFlow.cs:219:14:219:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:219:14:219:30 | call to method First | -| CollectionFlow.cs:220:21:220:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | -| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | -| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:237:48:237:48 | access to local variable a : A | -| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:238:14:238:17 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:239:21:239:24 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:237:48:237:48 | access to local variable a : A | CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | -| CollectionFlow.cs:238:14:238:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:238:14:238:22 | access to property Keys : Dictionary.KeyCollection [element] : A | -| CollectionFlow.cs:238:14:238:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:238:14:238:30 | call to method First | -| CollectionFlow.cs:239:21:239:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | -| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | -| CollectionFlow.cs:255:17:255:23 | object creation of type A : A | CollectionFlow.cs:256:27:256:27 | access to local variable a : A | -| CollectionFlow.cs:256:25:256:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:257:27:257:29 | access to local variable as : null [element] : A | -| CollectionFlow.cs:256:27:256:27 | access to local variable a : A | CollectionFlow.cs:256:25:256:29 | { ..., ... } : null [element] : A | -| CollectionFlow.cs:257:22:257:22 | SSA def(x) : A | CollectionFlow.cs:258:18:258:18 | access to local variable x | -| CollectionFlow.cs:257:27:257:29 | access to local variable as : null [element] : A | CollectionFlow.cs:257:22:257:22 | SSA def(x) : A | -| CollectionFlow.cs:270:17:270:23 | object creation of type A : A | CollectionFlow.cs:271:27:271:27 | access to local variable a : A | -| CollectionFlow.cs:271:25:271:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:272:26:272:28 | access to local variable as : null [element] : A | -| CollectionFlow.cs:271:27:271:27 | access to local variable a : A | CollectionFlow.cs:271:25:271:29 | { ..., ... } : null [element] : A | -| CollectionFlow.cs:272:26:272:28 | access to local variable as : null [element] : A | CollectionFlow.cs:272:26:272:44 | call to method GetEnumerator : IEnumerator [property Current] : A | -| CollectionFlow.cs:272:26:272:44 | call to method GetEnumerator : IEnumerator [property Current] : A | CollectionFlow.cs:274:18:274:27 | access to local variable enumerator : IEnumerator [property Current] : A | -| CollectionFlow.cs:274:18:274:27 | access to local variable enumerator : IEnumerator [property Current] : A | CollectionFlow.cs:274:18:274:35 | access to property Current | -| CollectionFlow.cs:287:17:287:23 | object creation of type A : A | CollectionFlow.cs:289:18:289:18 | access to local variable a : A | -| CollectionFlow.cs:289:9:289:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | -| CollectionFlow.cs:289:18:289:18 | access to local variable a : A | CollectionFlow.cs:289:9:289:12 | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | -| CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:35 | access to property Current | -| CollectionFlow.cs:306:17:306:23 | object creation of type A : A | CollectionFlow.cs:308:43:308:43 | access to local variable a : A | -| CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | -| CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | -| CollectionFlow.cs:308:43:308:43 | access to local variable a : A | CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | -| CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | -| CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | -| CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:24 | access to property Key | -| CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:55:328:61 | access to parameter element : A | -| CollectionFlow.cs:328:55:328:61 | access to parameter element : A | CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | -| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:334:23:334:23 | access to local variable a : A | -| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:335:14:335:16 | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | -| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:328:32:328:38 | element : A | -| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | -| CollectionFlow.cs:335:14:335:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:335:14:335:19 | access to array element | -| CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | -| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | -| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:337:14:337:23 | call to method First | -| CollectionFlow.cs:350:34:350:40 | element : A | CollectionFlow.cs:350:55:350:61 | access to parameter element : A | -| CollectionFlow.cs:350:55:350:61 | access to parameter element : A | CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List [element] : A | -| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:356:23:356:23 | access to local variable a : A | -| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:357:14:357:17 | access to local variable list : List [element] : A | -| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:358:22:358:25 | access to local variable list : List [element] : A | -| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | -| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:350:34:350:40 | element : A | -| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | -| CollectionFlow.cs:357:14:357:17 | access to local variable list : List [element] : A | CollectionFlow.cs:357:14:357:20 | access to indexer | -| CollectionFlow.cs:358:22:358:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | -| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | -| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | CollectionFlow.cs:359:14:359:28 | call to method ListFirst | -| CollectionFlow.cs:373:20:373:26 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | -| CollectionFlow.cs:374:26:374:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | -| CollectionFlow.cs:375:26:375:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | -| CollectionFlow.cs:376:20:376:38 | array creation of type A[] : null [element] : A | CollectionFlow.cs:36:49:36:52 | args : null [element] : A | -| CollectionFlow.cs:376:28:376:38 | { ..., ... } : null [element] : A | CollectionFlow.cs:376:20:376:38 | array creation of type A[] : null [element] : A | -| CollectionFlow.cs:376:30:376:36 | object creation of type A : A | CollectionFlow.cs:376:28:376:38 | { ..., ... } : null [element] : A | -| CollectionFlow.cs:406:17:406:23 | object creation of type A : A | CollectionFlow.cs:408:20:408:20 | access to local variable a : A | -| CollectionFlow.cs:408:9:408:13 | [post] access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:409:14:409:18 | access to local variable array : MyInlineArray [element] : A | -| CollectionFlow.cs:408:20:408:20 | access to local variable a : A | CollectionFlow.cs:408:9:408:13 | [post] access to local variable array : MyInlineArray [element] : A | -| CollectionFlow.cs:409:14:409:18 | access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:409:14:409:21 | access to array element | -| CollectionFlow.cs:427:17:427:23 | object creation of type A : A | CollectionFlow.cs:428:22:428:22 | access to local variable a : A | -| CollectionFlow.cs:428:21:428:23 | [...] : A[] [element] : A | CollectionFlow.cs:429:14:429:18 | access to local variable array : A[] [element] : A | -| CollectionFlow.cs:428:22:428:22 | access to local variable a : A | CollectionFlow.cs:428:21:428:23 | [...] : A[] [element] : A | -| CollectionFlow.cs:429:14:429:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:429:14:429:21 | access to array element | -| CollectionFlow.cs:434:17:434:23 | object creation of type A : A | CollectionFlow.cs:435:22:435:22 | access to local variable a : A | -| CollectionFlow.cs:435:21:435:23 | [...] : List [element] : A | CollectionFlow.cs:436:14:436:14 | access to local variable l : List [element] : A | -| CollectionFlow.cs:435:22:435:22 | access to local variable a : A | CollectionFlow.cs:435:21:435:23 | [...] : List [element] : A | -| CollectionFlow.cs:436:14:436:14 | access to local variable l : List [element] : A | CollectionFlow.cs:436:14:436:17 | access to indexer | -| CollectionFlow.cs:447:17:447:23 | object creation of type A : A | CollectionFlow.cs:448:21:448:21 | access to local variable a : A | -| CollectionFlow.cs:448:20:448:22 | [...] : A[] [element] : A | CollectionFlow.cs:449:22:449:28 | .. access to local variable temp : A[] [element] : A | -| CollectionFlow.cs:448:21:448:21 | access to local variable a : A | CollectionFlow.cs:448:20:448:22 | [...] : A[] [element] : A | -| CollectionFlow.cs:449:22:449:28 | .. access to local variable temp : A[] [element] : A | CollectionFlow.cs:450:14:450:18 | access to local variable array : A[] [element] : A | -| CollectionFlow.cs:450:14:450:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:450:14:450:21 | access to array element | -| CollectionFlow.cs:487:17:487:23 | object creation of type A : A | CollectionFlow.cs:488:40:488:40 | access to local variable a : A | -| CollectionFlow.cs:488:24:488:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:489:14:489:17 | access to local variable span : Span [element] : A | -| CollectionFlow.cs:488:40:488:40 | access to local variable a : A | CollectionFlow.cs:488:24:488:41 | object creation of type Span : Span [element] : A | -| CollectionFlow.cs:489:14:489:17 | access to local variable span : Span [element] : A | CollectionFlow.cs:489:14:489:20 | access to indexer | -| CollectionFlow.cs:494:17:494:23 | object creation of type A : A | CollectionFlow.cs:495:40:495:40 | access to local variable a : A | -| CollectionFlow.cs:495:24:495:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:496:19:496:22 | access to local variable span : Span [element] : A | -| CollectionFlow.cs:495:40:495:40 | access to local variable a : A | CollectionFlow.cs:495:24:495:41 | object creation of type Span : Span [element] : A | -| CollectionFlow.cs:496:19:496:22 | access to local variable span : Span [element] : A | CollectionFlow.cs:496:19:496:32 | call to method ToArray : T[] [element] : A | -| CollectionFlow.cs:496:19:496:32 | call to method ToArray : T[] [element] : A | CollectionFlow.cs:497:14:497:16 | access to local variable arr : T[] [element] : A | -| CollectionFlow.cs:497:14:497:16 | access to local variable arr : T[] [element] : A | CollectionFlow.cs:497:14:497:19 | access to array element | -| CollectionFlow.cs:502:17:502:23 | object creation of type A : A | CollectionFlow.cs:503:21:503:21 | access to local variable a : A | -| CollectionFlow.cs:503:9:503:14 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:504:14:504:19 | access to parameter target : Span [element] : A | -| CollectionFlow.cs:503:21:503:21 | access to local variable a : A | CollectionFlow.cs:503:9:503:14 | [post] access to parameter target : Span [element] : A | -| CollectionFlow.cs:504:14:504:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:504:14:504:22 | access to indexer | -| CollectionFlow.cs:509:22:509:51 | object creation of type Span : Span [element] : A | CollectionFlow.cs:510:9:510:14 | access to local variable source : Span [element] : A | -| CollectionFlow.cs:509:34:509:50 | array creation of type A[] : null [element] : A | CollectionFlow.cs:509:22:509:51 | object creation of type Span : Span [element] : A | -| CollectionFlow.cs:509:40:509:50 | { ..., ... } : null [element] : A | CollectionFlow.cs:509:34:509:50 | array creation of type A[] : null [element] : A | -| CollectionFlow.cs:509:42:509:48 | object creation of type A : A | CollectionFlow.cs:509:40:509:50 | { ..., ... } : null [element] : A | -| CollectionFlow.cs:510:9:510:14 | access to local variable source : Span [element] : A | CollectionFlow.cs:510:23:510:28 | [post] access to parameter target : Span [element] : A | -| CollectionFlow.cs:510:23:510:28 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:511:14:511:19 | access to parameter target : Span [element] : A | -| CollectionFlow.cs:511:14:511:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:511:14:511:22 | access to indexer | -| CollectionFlow.cs:516:17:516:23 | object creation of type A : A | CollectionFlow.cs:517:60:517:60 | access to local variable a : A | -| CollectionFlow.cs:517:32:517:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | CollectionFlow.cs:518:14:518:17 | access to local variable span : ReadOnlySpan [element] : A | -| CollectionFlow.cs:517:52:517:62 | array creation of type A[] : null [element] : A | CollectionFlow.cs:517:32:517:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | -| CollectionFlow.cs:517:58:517:62 | { ..., ... } : null [element] : A | CollectionFlow.cs:517:52:517:62 | array creation of type A[] : null [element] : A | -| CollectionFlow.cs:517:60:517:60 | access to local variable a : A | CollectionFlow.cs:517:58:517:62 | { ..., ... } : null [element] : A | -| CollectionFlow.cs:518:14:518:17 | access to local variable span : ReadOnlySpan [element] : A | CollectionFlow.cs:518:14:518:20 | access to indexer | +| CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | CollectionFlow.cs:14:52:14:53 | access to parameter ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | CollectionFlow.cs:14:52:14:53 | access to parameter ts : null [element] : A | provenance | | +| CollectionFlow.cs:14:52:14:53 | access to parameter ts : A[] [element] : A | CollectionFlow.cs:14:52:14:56 | access to array element | provenance | | +| CollectionFlow.cs:14:52:14:53 | access to parameter ts : null [element] : A | CollectionFlow.cs:14:52:14:56 | access to array element | provenance | | +| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:16:49:16:52 | list : List [element] : A | CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | provenance | | +| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | provenance | | +| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | provenance | | +| CollectionFlow.cs:16:63:16:66 | access to parameter list : List [element] : A | CollectionFlow.cs:16:63:16:69 | access to indexer | provenance | | +| CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:75:18:78 | access to parameter dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:18:75:18:78 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:75:18:81 | access to indexer | provenance | | +| CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:73:20:76 | access to parameter dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:20:73:20:76 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:73:20:81 | access to property Keys : ICollection [element] : A | provenance | | +| CollectionFlow.cs:20:73:20:81 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:20:73:20:89 | call to method First | provenance | | +| CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:42 | access to parameter ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | CollectionFlow.cs:22:41:22:42 | access to parameter ts : null [element] : A | provenance | | +| CollectionFlow.cs:22:41:22:42 | access to parameter ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | provenance | | +| CollectionFlow.cs:22:41:22:42 | access to parameter ts : null [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | provenance | | +| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:24:43:24:46 | list : List [element] : A | CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | provenance | | +| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | provenance | | +| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | provenance | | +| CollectionFlow.cs:24:52:24:55 | access to parameter list : List [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | provenance | | +| CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:70 | access to parameter dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:26:67:26:70 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | provenance | | +| CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:71 | access to parameter dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:28:68:28:71 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:79 | call to method First> : KeyValuePair [property Value] : A | provenance | | +| CollectionFlow.cs:28:68:28:79 | call to method First> : KeyValuePair [property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | provenance | | +| CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:72 | access to parameter dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:30:69:30:72 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | provenance | | +| CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | provenance | | +| CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | provenance | | +| CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | provenance | | +| CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:69 | access to parameter dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:34:66:34:69 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:77 | call to method First> : KeyValuePair [property Key] : A | provenance | | +| CollectionFlow.cs:34:66:34:77 | call to method First> : KeyValuePair [property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | provenance | | +| CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | CollectionFlow.cs:36:63:36:66 | access to parameter args : A[] [element] : A | provenance | | +| CollectionFlow.cs:36:49:36:52 | args : null [element] : A | CollectionFlow.cs:36:63:36:66 | access to parameter args : null [element] : A | provenance | | +| CollectionFlow.cs:36:63:36:66 | access to parameter args : A[] [element] : A | CollectionFlow.cs:36:63:36:69 | access to array element | provenance | | +| CollectionFlow.cs:36:63:36:66 | access to parameter args : null [element] : A | CollectionFlow.cs:36:63:36:69 | access to array element | provenance | | +| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:41:27:41:27 | access to local variable a : A | provenance | | +| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:42:14:42:16 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:43:18:43:20 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:41:27:41:27 | access to local variable a : A | CollectionFlow.cs:41:25:41:29 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:42:14:42:16 | access to local variable as : null [element] : A | CollectionFlow.cs:42:14:42:19 | access to array element | provenance | | +| CollectionFlow.cs:43:18:43:20 | access to local variable as : null [element] : A | CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | provenance | | +| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | CollectionFlow.cs:22:34:22:35 | ts : null [element] : A | provenance | | +| CollectionFlow.cs:44:20:44:22 | access to local variable as : null [element] : A | CollectionFlow.cs:44:14:44:23 | call to method First | provenance | | +| CollectionFlow.cs:58:17:58:23 | object creation of type A : A | CollectionFlow.cs:59:53:59:53 | access to local variable a : A | provenance | | +| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:60:14:60:14 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:61:18:61:18 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:20:62:20 | access to local variable c : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:59:45:59:55 | { ..., ... } : A[] [element] : A | CollectionFlow.cs:59:38:59:57 | { ..., ... } : CollectionFlow [field As, element] : A | provenance | | +| CollectionFlow.cs:59:53:59:53 | access to local variable a : A | CollectionFlow.cs:59:45:59:55 | { ..., ... } : A[] [element] : A | provenance | | +| CollectionFlow.cs:60:14:60:14 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:60:14:60:17 | access to field As : A[] [element] : A | provenance | | +| CollectionFlow.cs:60:14:60:17 | access to field As : A[] [element] : A | CollectionFlow.cs:60:14:60:20 | access to array element | provenance | | +| CollectionFlow.cs:61:18:61:18 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:61:18:61:21 | access to field As : A[] [element] : A | provenance | | +| CollectionFlow.cs:61:18:61:21 | access to field As : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:62:20:62:20 | access to local variable c : CollectionFlow [field As, element] : A | CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | provenance | | +| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:62:20:62:23 | access to field As : A[] [element] : A | CollectionFlow.cs:62:14:62:24 | call to method First | provenance | | +| CollectionFlow.cs:76:17:76:23 | object creation of type A : A | CollectionFlow.cs:78:18:78:18 | access to local variable a : A | provenance | | +| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:79:14:79:16 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:80:18:80:20 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:78:18:78:18 | access to local variable a : A | CollectionFlow.cs:78:9:78:11 | [post] access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:79:14:79:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:79:14:79:19 | access to array element | provenance | | +| CollectionFlow.cs:80:18:80:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:81:20:81:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:81:14:81:23 | call to method First | provenance | | +| CollectionFlow.cs:96:17:96:23 | object creation of type A : A | CollectionFlow.cs:98:19:98:19 | access to local variable a : A | provenance | | +| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:99:14:99:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:100:22:100:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:98:19:98:19 | access to local variable a : A | CollectionFlow.cs:98:9:98:12 | [post] access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:99:14:99:17 | access to local variable list : List [element] : A | CollectionFlow.cs:99:14:99:20 | access to indexer | provenance | | +| CollectionFlow.cs:100:22:100:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:101:24:101:27 | access to local variable list : List [element] : A | CollectionFlow.cs:101:14:101:28 | call to method ListFirst | provenance | | +| CollectionFlow.cs:115:17:115:23 | object creation of type A : A | CollectionFlow.cs:116:36:116:36 | access to local variable a : A | provenance | | +| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | CollectionFlow.cs:117:14:117:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | CollectionFlow.cs:118:22:118:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:116:36:116:36 | access to local variable a : A | CollectionFlow.cs:116:20:116:38 | object creation of type List : List [element] : A | provenance | | +| CollectionFlow.cs:117:14:117:17 | access to local variable list : List [element] : A | CollectionFlow.cs:117:14:117:20 | access to indexer | provenance | | +| CollectionFlow.cs:118:22:118:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:119:24:119:27 | access to local variable list : List [element] : A | CollectionFlow.cs:119:14:119:28 | call to method ListFirst | provenance | | +| CollectionFlow.cs:132:17:132:23 | object creation of type A : A | CollectionFlow.cs:134:18:134:18 | access to local variable a : A | provenance | | +| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:135:14:135:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:136:22:136:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:134:18:134:18 | access to local variable a : A | CollectionFlow.cs:134:9:134:12 | [post] access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:135:14:135:17 | access to local variable list : List [element] : A | CollectionFlow.cs:135:14:135:20 | access to indexer | provenance | | +| CollectionFlow.cs:136:22:136:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:137:24:137:27 | access to local variable list : List [element] : A | CollectionFlow.cs:137:14:137:28 | call to method ListFirst | provenance | | +| CollectionFlow.cs:151:17:151:23 | object creation of type A : A | CollectionFlow.cs:153:19:153:19 | access to local variable a : A | provenance | | +| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:154:14:154:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:155:23:155:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:153:19:153:19 | access to local variable a : A | CollectionFlow.cs:153:9:153:12 | [post] access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:154:14:154:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:154:14:154:20 | access to indexer | provenance | | +| CollectionFlow.cs:155:23:155:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | provenance | | +| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | provenance | | +| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | provenance | | +| CollectionFlow.cs:174:17:174:23 | object creation of type A : A | CollectionFlow.cs:175:52:175:52 | access to local variable a : A | provenance | | +| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:176:14:176:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:177:23:177:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:175:52:175:52 | access to local variable a : A | CollectionFlow.cs:175:20:175:56 | object creation of type Dictionary : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:176:14:176:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:176:14:176:20 | access to indexer | provenance | | +| CollectionFlow.cs:177:23:177:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | provenance | | +| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | provenance | | +| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | provenance | | +| CollectionFlow.cs:195:17:195:23 | object creation of type A : A | CollectionFlow.cs:196:53:196:53 | access to local variable a : A | provenance | | +| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:197:14:197:17 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:198:23:198:26 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:196:53:196:53 | access to local variable a : A | CollectionFlow.cs:196:20:196:55 | object creation of type Dictionary : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:197:14:197:17 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:197:14:197:20 | access to indexer | provenance | | +| CollectionFlow.cs:198:23:198:26 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:18:61:18:64 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | provenance | | +| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | provenance | | +| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | provenance | | +| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | provenance | | +| CollectionFlow.cs:217:17:217:23 | object creation of type A : A | CollectionFlow.cs:218:49:218:49 | access to local variable a : A | provenance | | +| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:219:14:219:17 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:220:21:220:24 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:218:49:218:49 | access to local variable a : A | CollectionFlow.cs:218:20:218:56 | object creation of type Dictionary : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:219:14:219:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:219:14:219:22 | access to property Keys : Dictionary.KeyCollection [element] : A | provenance | | +| CollectionFlow.cs:219:14:219:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:219:14:219:30 | call to method First | provenance | | +| CollectionFlow.cs:220:21:220:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | provenance | | +| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | provenance | | +| CollectionFlow.cs:236:17:236:23 | object creation of type A : A | CollectionFlow.cs:237:48:237:48 | access to local variable a : A | provenance | | +| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:238:14:238:17 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:239:21:239:24 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:237:48:237:48 | access to local variable a : A | CollectionFlow.cs:237:20:237:55 | object creation of type Dictionary : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:238:14:238:17 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:238:14:238:22 | access to property Keys : Dictionary.KeyCollection [element] : A | provenance | | +| CollectionFlow.cs:238:14:238:22 | access to property Keys : Dictionary.KeyCollection [element] : A | CollectionFlow.cs:238:14:238:30 | call to method First | provenance | | +| CollectionFlow.cs:239:21:239:24 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:20:59:20:62 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | provenance | | +| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | provenance | | +| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | provenance | | +| CollectionFlow.cs:255:17:255:23 | object creation of type A : A | CollectionFlow.cs:256:27:256:27 | access to local variable a : A | provenance | | +| CollectionFlow.cs:256:25:256:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:257:27:257:29 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:256:27:256:27 | access to local variable a : A | CollectionFlow.cs:256:25:256:29 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:257:22:257:22 | SSA def(x) : A | CollectionFlow.cs:258:18:258:18 | access to local variable x | provenance | | +| CollectionFlow.cs:257:27:257:29 | access to local variable as : null [element] : A | CollectionFlow.cs:257:22:257:22 | SSA def(x) : A | provenance | | +| CollectionFlow.cs:270:17:270:23 | object creation of type A : A | CollectionFlow.cs:271:27:271:27 | access to local variable a : A | provenance | | +| CollectionFlow.cs:271:25:271:29 | { ..., ... } : null [element] : A | CollectionFlow.cs:272:26:272:28 | access to local variable as : null [element] : A | provenance | | +| CollectionFlow.cs:271:27:271:27 | access to local variable a : A | CollectionFlow.cs:271:25:271:29 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:272:26:272:28 | access to local variable as : null [element] : A | CollectionFlow.cs:272:26:272:44 | call to method GetEnumerator : IEnumerator [property Current] : A | provenance | | +| CollectionFlow.cs:272:26:272:44 | call to method GetEnumerator : IEnumerator [property Current] : A | CollectionFlow.cs:274:18:274:27 | access to local variable enumerator : IEnumerator [property Current] : A | provenance | | +| CollectionFlow.cs:274:18:274:27 | access to local variable enumerator : IEnumerator [property Current] : A | CollectionFlow.cs:274:18:274:35 | access to property Current | provenance | | +| CollectionFlow.cs:287:17:287:23 | object creation of type A : A | CollectionFlow.cs:289:18:289:18 | access to local variable a : A | provenance | | +| CollectionFlow.cs:289:9:289:12 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:289:18:289:18 | access to local variable a : A | CollectionFlow.cs:289:9:289:12 | [post] access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:290:26:290:29 | access to local variable list : List [element] : A | CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | provenance | | +| CollectionFlow.cs:290:26:290:45 | call to method GetEnumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | provenance | | +| CollectionFlow.cs:292:18:292:27 | access to local variable enumerator : List.Enumerator [property Current] : A | CollectionFlow.cs:292:18:292:35 | access to property Current | provenance | | +| CollectionFlow.cs:306:17:306:23 | object creation of type A : A | CollectionFlow.cs:308:43:308:43 | access to local variable a : A | provenance | | +| CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | provenance | | +| CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | CollectionFlow.cs:308:9:308:12 | [post] access to local variable list : List [element, property Key] : A | provenance | | +| CollectionFlow.cs:308:43:308:43 | access to local variable a : A | CollectionFlow.cs:308:18:308:47 | object creation of type KeyValuePair : KeyValuePair [property Key] : A | provenance | | +| CollectionFlow.cs:309:9:309:12 | access to local variable list : List [element, property Key] : A | CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | provenance | | +| CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | provenance | | +| CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair [property Key] : A | CollectionFlow.cs:311:18:311:24 | access to property Key | provenance | | +| CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:55:328:61 | access to parameter element : A | provenance | | +| CollectionFlow.cs:328:55:328:61 | access to parameter element : A | CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | provenance | | +| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:334:23:334:23 | access to local variable a : A | provenance | | +| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:335:14:335:16 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:328:32:328:38 | element : A | provenance | | +| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | provenance | | +| CollectionFlow.cs:335:14:335:16 | access to local variable as : A[] [element] : A | CollectionFlow.cs:335:14:335:19 | access to array element | provenance | | +| CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | | +| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:337:14:337:23 | call to method First | provenance | | +| CollectionFlow.cs:350:34:350:40 | element : A | CollectionFlow.cs:350:55:350:61 | access to parameter element : A | provenance | | +| CollectionFlow.cs:350:55:350:61 | access to parameter element : A | CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List [element] : A | provenance | | +| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:356:23:356:23 | access to local variable a : A | provenance | | +| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:357:14:357:17 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:358:22:358:25 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:350:34:350:40 | element : A | provenance | | +| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List [element] : A | provenance | | +| CollectionFlow.cs:357:14:357:17 | access to local variable list : List [element] : A | CollectionFlow.cs:357:14:357:20 | access to indexer | provenance | | +| CollectionFlow.cs:358:22:358:25 | access to local variable list : List [element] : A | CollectionFlow.cs:16:49:16:52 | list : List [element] : A | provenance | | +| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | CollectionFlow.cs:24:43:24:46 | list : List [element] : A | provenance | | +| CollectionFlow.cs:359:24:359:27 | access to local variable list : List [element] : A | CollectionFlow.cs:359:14:359:28 | call to method ListFirst | provenance | | +| CollectionFlow.cs:373:20:373:26 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | +| CollectionFlow.cs:374:26:374:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | +| CollectionFlow.cs:375:26:375:32 | object creation of type A : A | CollectionFlow.cs:36:49:36:52 | args : A[] [element] : A | provenance | | +| CollectionFlow.cs:376:20:376:38 | array creation of type A[] : null [element] : A | CollectionFlow.cs:36:49:36:52 | args : null [element] : A | provenance | | +| CollectionFlow.cs:376:28:376:38 | { ..., ... } : null [element] : A | CollectionFlow.cs:376:20:376:38 | array creation of type A[] : null [element] : A | provenance | | +| CollectionFlow.cs:376:30:376:36 | object creation of type A : A | CollectionFlow.cs:376:28:376:38 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:406:17:406:23 | object creation of type A : A | CollectionFlow.cs:408:20:408:20 | access to local variable a : A | provenance | | +| CollectionFlow.cs:408:9:408:13 | [post] access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:409:14:409:18 | access to local variable array : MyInlineArray [element] : A | provenance | | +| CollectionFlow.cs:408:20:408:20 | access to local variable a : A | CollectionFlow.cs:408:9:408:13 | [post] access to local variable array : MyInlineArray [element] : A | provenance | | +| CollectionFlow.cs:409:14:409:18 | access to local variable array : MyInlineArray [element] : A | CollectionFlow.cs:409:14:409:21 | access to array element | provenance | | +| CollectionFlow.cs:427:17:427:23 | object creation of type A : A | CollectionFlow.cs:428:22:428:22 | access to local variable a : A | provenance | | +| CollectionFlow.cs:428:21:428:23 | [...] : A[] [element] : A | CollectionFlow.cs:429:14:429:18 | access to local variable array : A[] [element] : A | provenance | | +| CollectionFlow.cs:428:22:428:22 | access to local variable a : A | CollectionFlow.cs:428:21:428:23 | [...] : A[] [element] : A | provenance | | +| CollectionFlow.cs:429:14:429:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:429:14:429:21 | access to array element | provenance | | +| CollectionFlow.cs:434:17:434:23 | object creation of type A : A | CollectionFlow.cs:435:22:435:22 | access to local variable a : A | provenance | | +| CollectionFlow.cs:435:21:435:23 | [...] : List [element] : A | CollectionFlow.cs:436:14:436:14 | access to local variable l : List [element] : A | provenance | | +| CollectionFlow.cs:435:22:435:22 | access to local variable a : A | CollectionFlow.cs:435:21:435:23 | [...] : List [element] : A | provenance | | +| CollectionFlow.cs:436:14:436:14 | access to local variable l : List [element] : A | CollectionFlow.cs:436:14:436:17 | access to indexer | provenance | | +| CollectionFlow.cs:447:17:447:23 | object creation of type A : A | CollectionFlow.cs:448:21:448:21 | access to local variable a : A | provenance | | +| CollectionFlow.cs:448:20:448:22 | [...] : A[] [element] : A | CollectionFlow.cs:449:22:449:28 | .. access to local variable temp : A[] [element] : A | provenance | | +| CollectionFlow.cs:448:21:448:21 | access to local variable a : A | CollectionFlow.cs:448:20:448:22 | [...] : A[] [element] : A | provenance | | +| CollectionFlow.cs:449:22:449:28 | .. access to local variable temp : A[] [element] : A | CollectionFlow.cs:450:14:450:18 | access to local variable array : A[] [element] : A | provenance | | +| CollectionFlow.cs:450:14:450:18 | access to local variable array : A[] [element] : A | CollectionFlow.cs:450:14:450:21 | access to array element | provenance | | +| CollectionFlow.cs:487:17:487:23 | object creation of type A : A | CollectionFlow.cs:488:40:488:40 | access to local variable a : A | provenance | | +| CollectionFlow.cs:488:24:488:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:489:14:489:17 | access to local variable span : Span [element] : A | provenance | | +| CollectionFlow.cs:488:40:488:40 | access to local variable a : A | CollectionFlow.cs:488:24:488:41 | object creation of type Span : Span [element] : A | provenance | | +| CollectionFlow.cs:489:14:489:17 | access to local variable span : Span [element] : A | CollectionFlow.cs:489:14:489:20 | access to indexer | provenance | | +| CollectionFlow.cs:494:17:494:23 | object creation of type A : A | CollectionFlow.cs:495:40:495:40 | access to local variable a : A | provenance | | +| CollectionFlow.cs:495:24:495:41 | object creation of type Span : Span [element] : A | CollectionFlow.cs:496:19:496:22 | access to local variable span : Span [element] : A | provenance | | +| CollectionFlow.cs:495:40:495:40 | access to local variable a : A | CollectionFlow.cs:495:24:495:41 | object creation of type Span : Span [element] : A | provenance | | +| CollectionFlow.cs:496:19:496:22 | access to local variable span : Span [element] : A | CollectionFlow.cs:496:19:496:32 | call to method ToArray : T[] [element] : A | provenance | | +| CollectionFlow.cs:496:19:496:32 | call to method ToArray : T[] [element] : A | CollectionFlow.cs:497:14:497:16 | access to local variable arr : T[] [element] : A | provenance | | +| CollectionFlow.cs:497:14:497:16 | access to local variable arr : T[] [element] : A | CollectionFlow.cs:497:14:497:19 | access to array element | provenance | | +| CollectionFlow.cs:502:17:502:23 | object creation of type A : A | CollectionFlow.cs:503:21:503:21 | access to local variable a : A | provenance | | +| CollectionFlow.cs:503:9:503:14 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:504:14:504:19 | access to parameter target : Span [element] : A | provenance | | +| CollectionFlow.cs:503:21:503:21 | access to local variable a : A | CollectionFlow.cs:503:9:503:14 | [post] access to parameter target : Span [element] : A | provenance | | +| CollectionFlow.cs:504:14:504:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:504:14:504:22 | access to indexer | provenance | | +| CollectionFlow.cs:509:22:509:51 | object creation of type Span : Span [element] : A | CollectionFlow.cs:510:9:510:14 | access to local variable source : Span [element] : A | provenance | | +| CollectionFlow.cs:509:34:509:50 | array creation of type A[] : null [element] : A | CollectionFlow.cs:509:22:509:51 | object creation of type Span : Span [element] : A | provenance | | +| CollectionFlow.cs:509:40:509:50 | { ..., ... } : null [element] : A | CollectionFlow.cs:509:34:509:50 | array creation of type A[] : null [element] : A | provenance | | +| CollectionFlow.cs:509:42:509:48 | object creation of type A : A | CollectionFlow.cs:509:40:509:50 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:510:9:510:14 | access to local variable source : Span [element] : A | CollectionFlow.cs:510:23:510:28 | [post] access to parameter target : Span [element] : A | provenance | | +| CollectionFlow.cs:510:23:510:28 | [post] access to parameter target : Span [element] : A | CollectionFlow.cs:511:14:511:19 | access to parameter target : Span [element] : A | provenance | | +| CollectionFlow.cs:511:14:511:19 | access to parameter target : Span [element] : A | CollectionFlow.cs:511:14:511:22 | access to indexer | provenance | | +| CollectionFlow.cs:516:17:516:23 | object creation of type A : A | CollectionFlow.cs:517:60:517:60 | access to local variable a : A | provenance | | +| CollectionFlow.cs:517:32:517:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | CollectionFlow.cs:518:14:518:17 | access to local variable span : ReadOnlySpan [element] : A | provenance | | +| CollectionFlow.cs:517:52:517:62 | array creation of type A[] : null [element] : A | CollectionFlow.cs:517:32:517:63 | object creation of type ReadOnlySpan : ReadOnlySpan [element] : A | provenance | | +| CollectionFlow.cs:517:58:517:62 | { ..., ... } : null [element] : A | CollectionFlow.cs:517:52:517:62 | array creation of type A[] : null [element] : A | provenance | | +| CollectionFlow.cs:517:60:517:60 | access to local variable a : A | CollectionFlow.cs:517:58:517:62 | { ..., ... } : null [element] : A | provenance | | +| CollectionFlow.cs:518:14:518:17 | access to local variable span : ReadOnlySpan [element] : A | CollectionFlow.cs:518:14:518:20 | access to indexer | provenance | | nodes | CollectionFlow.cs:14:40:14:41 | ts : A[] [element] : A | semmle.label | ts : A[] [element] : A | | CollectionFlow.cs:14:40:14:41 | ts : null [element] : A | semmle.label | ts : null [element] : A | diff --git a/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.expected b/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.expected new file mode 100644 index 000000000000..a12db3ca3a9b --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.expected @@ -0,0 +1,138 @@ +testFailures +edges +| Constructors.cs:5:24:5:25 | [post] this access : C_no_ctor [field s1] : Object | Constructors.cs:9:27:9:41 | object creation of type C_no_ctor : C_no_ctor [field s1] : Object | provenance | | +| Constructors.cs:5:29:5:45 | call to method Source : Object | Constructors.cs:5:24:5:25 | [post] this access : C_no_ctor [field s1] : Object | provenance | | +| Constructors.cs:9:27:9:41 | object creation of type C_no_ctor : C_no_ctor [field s1] : Object | Constructors.cs:10:13:10:13 | access to local variable c : C_no_ctor [field s1] : Object | provenance | | +| Constructors.cs:10:13:10:13 | access to local variable c : C_no_ctor [field s1] : Object | Constructors.cs:13:21:13:22 | this : C_no_ctor [field s1] : Object | provenance | | +| Constructors.cs:13:21:13:22 | this : C_no_ctor [field s1] : Object | Constructors.cs:15:18:15:19 | this access : C_no_ctor [field s1] : Object | provenance | | +| Constructors.cs:15:18:15:19 | this access : C_no_ctor [field s1] : Object | Constructors.cs:15:18:15:19 | access to field s1 | provenance | | +| Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | provenance | | +| Constructors.cs:21:29:21:45 | call to method Source : Object | Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | provenance | | +| Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | provenance | | +| Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | provenance | | +| Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | provenance | | +| Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | Constructors.cs:33:18:33:19 | access to field s1 | provenance | | +| Constructors.cs:41:26:41:26 | o : Object | Constructors.cs:41:38:41:38 | access to parameter o : Object | provenance | | +| Constructors.cs:41:38:41:38 | access to parameter o : Object | Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | provenance | | +| Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:46:31:46:38 | access to parameter o21param : Object | provenance | | +| Constructors.cs:46:31:46:38 | access to parameter o21param : Object | Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | provenance | | +| Constructors.cs:50:32:50:36 | this : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | this access : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:50:32:50:36 | this access : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | access to field Obj21 : Object | provenance | | +| Constructors.cs:52:35:52:35 | o : Object | Constructors.cs:54:13:54:24 | SSA def(o22param) : Object | provenance | | +| Constructors.cs:57:54:57:55 | o2 : Object | Constructors.cs:59:13:59:19 | SSA def(o1) : Object | provenance | | +| Constructors.cs:62:41:62:41 | o : Object | Constructors.cs:64:37:64:37 | access to parameter o : Object | provenance | | +| Constructors.cs:64:37:64:37 | access to parameter o : Object | Constructors.cs:57:54:57:55 | o2 : Object | provenance | | +| Constructors.cs:64:37:64:37 | access to parameter o : Object | Constructors.cs:64:27:64:34 | SSA def(o22param) : Object | provenance | | +| Constructors.cs:70:17:70:33 | call to method Source : Object | Constructors.cs:71:25:71:25 | access to local variable o : Object | provenance | | +| Constructors.cs:71:18:71:26 | object creation of type C1 : C1 [field Obj] : Object | Constructors.cs:72:14:72:15 | access to local variable c1 : C1 [field Obj] : Object | provenance | | +| Constructors.cs:71:25:71:25 | access to local variable o : Object | Constructors.cs:41:26:41:26 | o : Object | provenance | | +| Constructors.cs:71:25:71:25 | access to local variable o : Object | Constructors.cs:71:18:71:26 | object creation of type C1 : C1 [field Obj] : Object | provenance | | +| Constructors.cs:72:14:72:15 | access to local variable c1 : C1 [field Obj] : Object | Constructors.cs:72:14:72:19 | access to field Obj | provenance | | +| Constructors.cs:77:19:77:35 | call to method Source : Object | Constructors.cs:79:25:79:27 | access to local variable o21 : Object | provenance | | +| Constructors.cs:78:19:78:35 | call to method Source : Object | Constructors.cs:79:30:79:32 | access to local variable o22 : Object | provenance | | +| Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object | Constructors.cs:80:14:80:15 | access to local variable c2 : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object | Constructors.cs:82:14:82:15 | access to local variable c2 : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [parameter o22param] : Object | Constructors.cs:81:14:81:15 | access to local variable c2 : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:79:25:79:27 | access to local variable o21 : Object | Constructors.cs:44:28:44:35 | o21param : Object | provenance | | +| Constructors.cs:79:25:79:27 | access to local variable o21 : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:79:30:79:32 | access to local variable o22 : Object | Constructors.cs:44:45:44:52 | o22param : Object | provenance | | +| Constructors.cs:79:30:79:32 | access to local variable o22 : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:80:14:80:15 | access to local variable c2 : C2 [field Obj21] : Object | Constructors.cs:80:14:80:21 | access to field Obj21 | provenance | | +| Constructors.cs:81:14:81:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:81:14:81:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:81:14:81:21 | access to property Obj22 | provenance | | +| Constructors.cs:82:14:82:15 | access to local variable c2 : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | this : C2 [field Obj21] : Object | provenance | | +| Constructors.cs:82:14:82:15 | access to local variable c2 : C2 [field Obj21] : Object | Constructors.cs:82:14:82:21 | access to property Obj23 | provenance | | +| Constructors.cs:91:21:91:37 | call to method Source : Object | Constructors.cs:92:19:92:23 | access to local variable taint : Object | provenance | | +| Constructors.cs:92:9:92:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:93:14:93:15 | access to local variable c2 : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:92:19:92:23 | access to local variable taint : Object | Constructors.cs:52:35:52:35 | o : Object | provenance | | +| Constructors.cs:92:19:92:23 | access to local variable taint : Object | Constructors.cs:92:9:92:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:93:14:93:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:93:14:93:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:93:14:93:21 | access to property Obj22 | provenance | | +| Constructors.cs:99:21:99:37 | call to method Source : Object | Constructors.cs:100:25:100:29 | access to local variable taint : Object | provenance | | +| Constructors.cs:100:9:100:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:100:25:100:29 | access to local variable taint : Object | Constructors.cs:62:41:62:41 | o : Object | provenance | | +| Constructors.cs:100:25:100:29 | access to local variable taint : Object | Constructors.cs:100:9:100:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | provenance | | +| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:101:14:101:21 | access to property Obj22 | provenance | | +nodes +| Constructors.cs:5:24:5:25 | [post] this access : C_no_ctor [field s1] : Object | semmle.label | [post] this access : C_no_ctor [field s1] : Object | +| Constructors.cs:5:29:5:45 | call to method Source : Object | semmle.label | call to method Source : Object | +| Constructors.cs:9:27:9:41 | object creation of type C_no_ctor : C_no_ctor [field s1] : Object | semmle.label | object creation of type C_no_ctor : C_no_ctor [field s1] : Object | +| Constructors.cs:10:13:10:13 | access to local variable c : C_no_ctor [field s1] : Object | semmle.label | access to local variable c : C_no_ctor [field s1] : Object | +| Constructors.cs:13:21:13:22 | this : C_no_ctor [field s1] : Object | semmle.label | this : C_no_ctor [field s1] : Object | +| Constructors.cs:15:18:15:19 | access to field s1 | semmle.label | access to field s1 | +| Constructors.cs:15:18:15:19 | this access : C_no_ctor [field s1] : Object | semmle.label | this access : C_no_ctor [field s1] : Object | +| Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | semmle.label | [post] this access : C_with_ctor [field s1] : Object | +| Constructors.cs:21:29:21:45 | call to method Source : Object | semmle.label | call to method Source : Object | +| Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | +| Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | semmle.label | access to local variable c : C_with_ctor [field s1] : Object | +| Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | semmle.label | this : C_with_ctor [field s1] : Object | +| Constructors.cs:33:18:33:19 | access to field s1 | semmle.label | access to field s1 | +| Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | semmle.label | this access : C_with_ctor [field s1] : Object | +| Constructors.cs:41:26:41:26 | o : Object | semmle.label | o : Object | +| Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | semmle.label | [post] this access : C1 [field Obj] : Object | +| Constructors.cs:41:38:41:38 | access to parameter o : Object | semmle.label | access to parameter o : Object | +| Constructors.cs:44:28:44:35 | o21param : Object | semmle.label | o21param : Object | +| Constructors.cs:44:45:44:52 | o22param : Object | semmle.label | o22param : Object | +| Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | semmle.label | [post] this access : C2 [field Obj21] : Object | +| Constructors.cs:46:31:46:38 | access to parameter o21param : Object | semmle.label | access to parameter o21param : Object | +| Constructors.cs:48:32:48:39 | access to parameter o22param : Object | semmle.label | access to parameter o22param : Object | +| Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | semmle.label | this : C2 [parameter o22param] : Object | +| Constructors.cs:50:32:50:36 | access to field Obj21 : Object | semmle.label | access to field Obj21 : Object | +| Constructors.cs:50:32:50:36 | this : C2 [field Obj21] : Object | semmle.label | this : C2 [field Obj21] : Object | +| Constructors.cs:50:32:50:36 | this access : C2 [field Obj21] : Object | semmle.label | this access : C2 [field Obj21] : Object | +| Constructors.cs:52:35:52:35 | o : Object | semmle.label | o : Object | +| Constructors.cs:54:13:54:24 | SSA def(o22param) : Object | semmle.label | SSA def(o22param) : Object | +| Constructors.cs:57:54:57:55 | o2 : Object | semmle.label | o2 : Object | +| Constructors.cs:59:13:59:19 | SSA def(o1) : Object | semmle.label | SSA def(o1) : Object | +| Constructors.cs:62:41:62:41 | o : Object | semmle.label | o : Object | +| Constructors.cs:64:27:64:34 | SSA def(o22param) : Object | semmle.label | SSA def(o22param) : Object | +| Constructors.cs:64:37:64:37 | access to parameter o : Object | semmle.label | access to parameter o : Object | +| Constructors.cs:70:17:70:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| Constructors.cs:71:18:71:26 | object creation of type C1 : C1 [field Obj] : Object | semmle.label | object creation of type C1 : C1 [field Obj] : Object | +| Constructors.cs:71:25:71:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Constructors.cs:72:14:72:15 | access to local variable c1 : C1 [field Obj] : Object | semmle.label | access to local variable c1 : C1 [field Obj] : Object | +| Constructors.cs:72:14:72:19 | access to field Obj | semmle.label | access to field Obj | +| Constructors.cs:77:19:77:35 | call to method Source : Object | semmle.label | call to method Source : Object | +| Constructors.cs:78:19:78:35 | call to method Source : Object | semmle.label | call to method Source : Object | +| Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object | semmle.label | object creation of type C2 : C2 [field Obj21] : Object | +| Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [parameter o22param] : Object | semmle.label | object creation of type C2 : C2 [parameter o22param] : Object | +| Constructors.cs:79:25:79:27 | access to local variable o21 : Object | semmle.label | access to local variable o21 : Object | +| Constructors.cs:79:30:79:32 | access to local variable o22 : Object | semmle.label | access to local variable o22 : Object | +| Constructors.cs:80:14:80:15 | access to local variable c2 : C2 [field Obj21] : Object | semmle.label | access to local variable c2 : C2 [field Obj21] : Object | +| Constructors.cs:80:14:80:21 | access to field Obj21 | semmle.label | access to field Obj21 | +| Constructors.cs:81:14:81:15 | access to local variable c2 : C2 [parameter o22param] : Object | semmle.label | access to local variable c2 : C2 [parameter o22param] : Object | +| Constructors.cs:81:14:81:21 | access to property Obj22 | semmle.label | access to property Obj22 | +| Constructors.cs:82:14:82:15 | access to local variable c2 : C2 [field Obj21] : Object | semmle.label | access to local variable c2 : C2 [field Obj21] : Object | +| Constructors.cs:82:14:82:21 | access to property Obj23 | semmle.label | access to property Obj23 | +| Constructors.cs:91:21:91:37 | call to method Source : Object | semmle.label | call to method Source : Object | +| Constructors.cs:92:9:92:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | semmle.label | [post] access to local variable c2 : C2 [parameter o22param] : Object | +| Constructors.cs:92:19:92:23 | access to local variable taint : Object | semmle.label | access to local variable taint : Object | +| Constructors.cs:93:14:93:15 | access to local variable c2 : C2 [parameter o22param] : Object | semmle.label | access to local variable c2 : C2 [parameter o22param] : Object | +| Constructors.cs:93:14:93:21 | access to property Obj22 | semmle.label | access to property Obj22 | +| Constructors.cs:99:21:99:37 | call to method Source : Object | semmle.label | call to method Source : Object | +| Constructors.cs:100:9:100:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | semmle.label | [post] access to local variable c2 : C2 [parameter o22param] : Object | +| Constructors.cs:100:25:100:29 | access to local variable taint : Object | semmle.label | access to local variable taint : Object | +| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | semmle.label | access to local variable c2 : C2 [parameter o22param] : Object | +| Constructors.cs:101:14:101:21 | access to property Obj22 | semmle.label | access to property Obj22 | +subpaths +| Constructors.cs:64:37:64:37 | access to parameter o : Object | Constructors.cs:57:54:57:55 | o2 : Object | Constructors.cs:59:13:59:19 | SSA def(o1) : Object | Constructors.cs:64:27:64:34 | SSA def(o22param) : Object | +| Constructors.cs:71:25:71:25 | access to local variable o : Object | Constructors.cs:41:26:41:26 | o : Object | Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | Constructors.cs:71:18:71:26 | object creation of type C1 : C1 [field Obj] : Object | +| Constructors.cs:79:25:79:27 | access to local variable o21 : Object | Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object | +| Constructors.cs:79:30:79:32 | access to local variable o22 : Object | Constructors.cs:44:45:44:52 | o22param : Object | Constructors.cs:44:45:44:52 | o22param : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [parameter o22param] : Object | +| Constructors.cs:81:14:81:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | Constructors.cs:81:14:81:21 | access to property Obj22 | +| Constructors.cs:82:14:82:15 | access to local variable c2 : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | this : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | access to field Obj21 : Object | Constructors.cs:82:14:82:21 | access to property Obj23 | +| Constructors.cs:92:19:92:23 | access to local variable taint : Object | Constructors.cs:52:35:52:35 | o : Object | Constructors.cs:54:13:54:24 | SSA def(o22param) : Object | Constructors.cs:92:9:92:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | +| Constructors.cs:93:14:93:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | Constructors.cs:93:14:93:21 | access to property Obj22 | +| Constructors.cs:100:25:100:29 | access to local variable taint : Object | Constructors.cs:62:41:62:41 | o : Object | Constructors.cs:64:27:64:34 | SSA def(o22param) : Object | Constructors.cs:100:9:100:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | +| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | Constructors.cs:101:14:101:21 | access to property Obj22 | +#select +| Constructors.cs:15:18:15:19 | access to field s1 | Constructors.cs:5:29:5:45 | call to method Source : Object | Constructors.cs:15:18:15:19 | access to field s1 | $@ | Constructors.cs:5:29:5:45 | call to method Source : Object | call to method Source : Object | +| Constructors.cs:33:18:33:19 | access to field s1 | Constructors.cs:21:29:21:45 | call to method Source : Object | Constructors.cs:33:18:33:19 | access to field s1 | $@ | Constructors.cs:21:29:21:45 | call to method Source : Object | call to method Source : Object | +| Constructors.cs:72:14:72:19 | access to field Obj | Constructors.cs:70:17:70:33 | call to method Source : Object | Constructors.cs:72:14:72:19 | access to field Obj | $@ | Constructors.cs:70:17:70:33 | call to method Source : Object | call to method Source : Object | +| Constructors.cs:80:14:80:21 | access to field Obj21 | Constructors.cs:77:19:77:35 | call to method Source : Object | Constructors.cs:80:14:80:21 | access to field Obj21 | $@ | Constructors.cs:77:19:77:35 | call to method Source : Object | call to method Source : Object | +| Constructors.cs:81:14:81:21 | access to property Obj22 | Constructors.cs:78:19:78:35 | call to method Source : Object | Constructors.cs:81:14:81:21 | access to property Obj22 | $@ | Constructors.cs:78:19:78:35 | call to method Source : Object | call to method Source : Object | +| Constructors.cs:82:14:82:21 | access to property Obj23 | Constructors.cs:77:19:77:35 | call to method Source : Object | Constructors.cs:82:14:82:21 | access to property Obj23 | $@ | Constructors.cs:77:19:77:35 | call to method Source : Object | call to method Source : Object | +| Constructors.cs:93:14:93:21 | access to property Obj22 | Constructors.cs:91:21:91:37 | call to method Source : Object | Constructors.cs:93:14:93:21 | access to property Obj22 | $@ | Constructors.cs:91:21:91:37 | call to method Source : Object | call to method Source : Object | +| Constructors.cs:101:14:101:21 | access to property Obj22 | Constructors.cs:99:21:99:37 | call to method Source : Object | Constructors.cs:101:14:101:21 | access to property Obj22 | $@ | Constructors.cs:99:21:99:37 | call to method Source : Object | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.ql b/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.ql new file mode 100644 index 000000000000..f47c9f4e9a40 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/constructors/ConstructorFlow.ql @@ -0,0 +1,12 @@ +/** + * @kind path-problem + */ + +import csharp +import TestUtilities.InlineFlowTest +import ValueFlowTest +import PathGraph + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/constructors/Constructors.cs b/csharp/ql/test/library-tests/dataflow/constructors/Constructors.cs new file mode 100644 index 000000000000..41724b78ddf8 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/constructors/Constructors.cs @@ -0,0 +1,107 @@ +public class Constructors +{ + public class C_no_ctor + { + private object s1 = Source(1); + + void M1() + { + C_no_ctor c = new C_no_ctor(); + c.M2(); + } + + public void M2() + { + Sink(s1); // $ hasValueFlow=1 + } + } + + public class C_with_ctor + { + private object s1 = Source(1); + + void M1() + { + C_with_ctor c = new C_with_ctor(); + c.M2(); + } + + public C_with_ctor() { } + + public void M2() + { + Sink(s1); // $ hasValueFlow=1 + } + } + + public class C1 + { + public object Obj; + + public C1(object o) => Obj = o; + } + + public class C2(object o21param, object o22param) + { + public object Obj21 = o21param; + + public object Obj22 => o22param; + + public object Obj23 => Obj21; + + public void SetObj(object o) + { + o22param = o; + } + + private void SetObjOut(out object o1, object o2) + { + o1 = o2; + } + + public void SetObjViaOut(object o) + { + SetObjOut(out o22param, o); + } + } + + public void M1() + { + var o = Source(1); + var c1 = new C1(o); + Sink(c1.Obj); // $ hasValueFlow=1 + } + + public void M2() + { + var o21 = Source(2); + var o22 = Source(3); + var c2 = new C2(o21, o22); + Sink(c2.Obj21); // $ hasValueFlow=2 + Sink(c2.Obj22); // $ hasValueFlow=3 + Sink(c2.Obj23); // $ hasValueFlow=2 + } + + public void M3() + { + var c2 = new C2(new object(), new object()); + Sink(c2.Obj21); // No flow + Sink(c2.Obj22); // No flow + Sink(c2.Obj23); // No flow + var taint = Source(4); + c2.SetObj(taint); + Sink(c2.Obj22); // $ hasValueFlow=4 + } + + public void M4() + { + var c2 = new C2(new object(), new object()); + var taint = Source(5); + c2.SetObjViaOut(taint); + Sink(c2.Obj22); // $ hasValueFlow=5 + } + + public static void Sink(object o) { } + + public static T Source(object source) => throw null; +} diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.cs b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.cs index 15d628aea9a0..1f9c48445dd4 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.cs +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.cs @@ -128,9 +128,31 @@ public unsafe void M18() void M19(Action a, bool b) { if (b) - a = () => {}; + a = () => { }; a(); } - void M20(bool b) => M19(() => {}, b); + void M20(bool b) => M19(() => { }, b); + + Action Field; + Action Prop2 { get; set; } + + DelegateFlow(Action a, Action b) + { + Field = a; + Prop2 = b; + } + + void M20() + { + new DelegateFlow( + _ => { }, + _ => { } + ); + + this.Field(0); + this.Prop2(0); + Field(0); + Prop2(0); + } } diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected index 610ff1f06d95..c16036e751c4 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected @@ -22,8 +22,12 @@ delegateCall | DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:93:13:93:21 | (...) => ... | | DelegateFlow.cs:114:9:114:16 | function pointer call | DelegateFlow.cs:7:17:7:18 | M2 | | DelegateFlow.cs:125:9:125:25 | function pointer call | DelegateFlow.cs:7:17:7:18 | M2 | -| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:131:17:131:24 | (...) => ... | -| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:29:135:36 | (...) => ... | +| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:131:17:131:25 | (...) => ... | +| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:29:135:37 | (...) => ... | +| DelegateFlow.cs:153:9:153:21 | delegate call | DelegateFlow.cs:149:13:149:20 | (...) => ... | +| DelegateFlow.cs:154:9:154:21 | delegate call | DelegateFlow.cs:150:13:150:20 | (...) => ... | +| DelegateFlow.cs:155:9:155:16 | delegate call | DelegateFlow.cs:149:13:149:20 | (...) => ... | +| DelegateFlow.cs:156:9:156:16 | delegate call | DelegateFlow.cs:150:13:150:20 | (...) => ... | viableLambda | DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:16:9:16:20 | call to method M2 | DelegateFlow.cs:16:12:16:19 | (...) => ... | | DelegateFlow.cs:9:9:9:12 | delegate call | DelegateFlow.cs:17:9:17:14 | call to method M2 | DelegateFlow.cs:5:10:5:11 | M1 | @@ -49,7 +53,11 @@ viableLambda | DelegateFlow.cs:89:35:89:37 | delegate call | DelegateFlow.cs:93:9:93:22 | call to local function M14 | DelegateFlow.cs:93:13:93:21 | (...) => ... | | DelegateFlow.cs:114:9:114:16 | function pointer call | DelegateFlow.cs:119:9:119:28 | call to method M16 | DelegateFlow.cs:7:17:7:18 | M2 | | DelegateFlow.cs:125:9:125:25 | function pointer call | file://:0:0:0:0 | (none) | DelegateFlow.cs:7:17:7:18 | M2 | -| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:25:135:40 | call to method M19 | DelegateFlow.cs:135:29:135:36 | (...) => ... | -| DelegateFlow.cs:132:9:132:11 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:131:17:131:24 | (...) => ... | +| DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:25:135:41 | call to method M19 | DelegateFlow.cs:135:29:135:37 | (...) => ... | +| DelegateFlow.cs:132:9:132:11 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:131:17:131:25 | (...) => ... | +| DelegateFlow.cs:153:9:153:21 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:149:13:149:20 | (...) => ... | +| DelegateFlow.cs:154:9:154:21 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:150:13:150:20 | (...) => ... | +| DelegateFlow.cs:155:9:155:16 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:149:13:149:20 | (...) => ... | +| DelegateFlow.cs:156:9:156:16 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:150:13:150:20 | (...) => ... | | file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | | file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected index cd3e2b94127f..a64ed809a803 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected @@ -1,77 +1,77 @@ invalidModelRow edges -| ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | ExternalFlow.cs:10:29:10:32 | access to local variable arg1 : Object | -| ExternalFlow.cs:10:29:10:32 | access to local variable arg1 : Object | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | -| ExternalFlow.cs:15:29:15:40 | object creation of type Object : Object | ExternalFlow.cs:17:24:17:29 | access to local variable argIn1 : Object | -| ExternalFlow.cs:16:30:16:41 | object creation of type Object : Object | ExternalFlow.cs:18:18:18:24 | access to local variable argOut1 | -| ExternalFlow.cs:17:24:17:29 | access to local variable argIn1 : Object | ExternalFlow.cs:17:32:17:38 | [post] access to local variable argOut1 : Object | -| ExternalFlow.cs:17:32:17:38 | [post] access to local variable argOut1 : Object | ExternalFlow.cs:18:18:18:24 | access to local variable argOut1 | -| ExternalFlow.cs:23:27:23:38 | object creation of type Object : Object | ExternalFlow.cs:24:25:24:28 | access to local variable arg2 : Object | -| ExternalFlow.cs:24:13:24:29 | [post] this access : D | ExternalFlow.cs:25:18:25:21 | this access | -| ExternalFlow.cs:24:25:24:28 | access to local variable arg2 : Object | ExternalFlow.cs:24:13:24:29 | [post] this access : D | -| ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | -| ExternalFlow.cs:30:26:30:37 | object creation of type Object : Object | ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | -| ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:39 | call to method StepFieldGetter | -| ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | ExternalFlow.cs:36:18:36:69 | access to field Field | -| ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | -| ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | -| ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | -| ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | -| ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | -| ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:27 | access to field Field | -| ExternalFlow.cs:42:13:42:16 | [post] this access : D [property Property] : Object | ExternalFlow.cs:43:18:43:21 | this access : D [property Property] : Object | -| ExternalFlow.cs:42:29:42:40 | object creation of type Object : Object | ExternalFlow.cs:42:13:42:16 | [post] this access : D [property Property] : Object | -| ExternalFlow.cs:43:18:43:21 | this access : D [property Property] : Object | ExternalFlow.cs:43:18:43:42 | call to method StepPropertyGetter | -| ExternalFlow.cs:48:13:48:16 | [post] this access : D [property Property] : Object | ExternalFlow.cs:49:18:49:21 | this access : D [property Property] : Object | -| ExternalFlow.cs:48:37:48:48 | object creation of type Object : Object | ExternalFlow.cs:48:13:48:16 | [post] this access : D [property Property] : Object | -| ExternalFlow.cs:49:18:49:21 | this access : D [property Property] : Object | ExternalFlow.cs:49:18:49:30 | access to property Property | -| ExternalFlow.cs:54:13:54:16 | [post] this access : D [element] : Object | ExternalFlow.cs:55:18:55:21 | this access : D [element] : Object | -| ExternalFlow.cs:54:36:54:47 | object creation of type Object : Object | ExternalFlow.cs:54:13:54:16 | [post] this access : D [element] : Object | -| ExternalFlow.cs:55:18:55:21 | this access : D [element] : Object | ExternalFlow.cs:55:18:55:41 | call to method StepElementGetter | -| ExternalFlow.cs:60:35:60:35 | o : Object | ExternalFlow.cs:60:47:60:47 | access to parameter o | -| ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | ExternalFlow.cs:60:35:60:35 | o : Object | -| ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | ExternalFlow.cs:66:18:66:18 | access to local variable o | -| ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | -| ExternalFlow.cs:71:30:71:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | -| ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | ExternalFlow.cs:71:30:71:45 | { ..., ... } : null [element] : Object | -| ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | ExternalFlow.cs:72:23:72:23 | o : Object | -| ExternalFlow.cs:72:23:72:23 | o : Object | ExternalFlow.cs:72:35:72:35 | access to parameter o | -| ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | -| ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | -| ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:24 | access to array element | -| ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | -| ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | -| ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | -| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | -| ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | ExternalFlow.cs:85:18:85:25 | access to array element | -| ExternalFlow.cs:90:21:90:34 | object creation of type String : String | ExternalFlow.cs:91:19:91:19 | access to local variable s : String | -| ExternalFlow.cs:91:19:91:19 | access to local variable s : String | ExternalFlow.cs:91:30:91:30 | SSA def(i) : Int32 | -| ExternalFlow.cs:91:30:91:30 | SSA def(i) : Int32 | ExternalFlow.cs:92:18:92:18 | (...) ... | -| ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:103:16:103:17 | access to local variable d1 : D [field Field] : Object | -| ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:104:18:104:19 | access to local variable d1 : D [field Field] : Object | -| ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | -| ExternalFlow.cs:100:20:100:20 | d : Object | ExternalFlow.cs:102:22:102:22 | access to parameter d | -| ExternalFlow.cs:103:16:103:17 | access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:100:20:100:20 | d : Object | -| ExternalFlow.cs:104:18:104:19 | access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:104:18:104:25 | access to field Field | -| ExternalFlow.cs:111:13:111:13 | [post] access to local variable f : F [field MyField] : Object | ExternalFlow.cs:112:18:112:18 | access to local variable f : F [field MyField] : Object | -| ExternalFlow.cs:111:24:111:35 | object creation of type Object : Object | ExternalFlow.cs:111:13:111:13 | [post] access to local variable f : F [field MyField] : Object | -| ExternalFlow.cs:112:18:112:18 | access to local variable f : F [field MyField] : Object | ExternalFlow.cs:112:18:112:25 | access to property MyProp | -| ExternalFlow.cs:117:34:117:49 | { ..., ... } : null [element] : Object | ExternalFlow.cs:118:29:118:29 | access to local variable a : null [element] : Object | -| ExternalFlow.cs:117:36:117:47 | object creation of type Object : Object | ExternalFlow.cs:117:34:117:49 | { ..., ... } : null [element] : Object | -| ExternalFlow.cs:118:21:118:30 | call to method Reverse : null [element] : Object | ExternalFlow.cs:120:18:120:18 | access to local variable b : null [element] : Object | -| ExternalFlow.cs:118:29:118:29 | access to local variable a : null [element] : Object | ExternalFlow.cs:118:21:118:30 | call to method Reverse : null [element] : Object | -| ExternalFlow.cs:120:18:120:18 | access to local variable b : null [element] : Object | ExternalFlow.cs:120:18:120:21 | access to array element | -| ExternalFlow.cs:205:22:205:33 | object creation of type Object : Object | ExternalFlow.cs:206:38:206:39 | access to local variable o2 : Object | -| ExternalFlow.cs:206:38:206:39 | access to local variable o2 : Object | ExternalFlow.cs:206:18:206:40 | call to method MixedFlowArgs | -| ExternalFlow.cs:211:22:211:33 | object creation of type Object : Object | ExternalFlow.cs:212:52:212:53 | access to local variable o1 : Object | -| ExternalFlow.cs:212:52:212:53 | access to local variable o1 : Object | ExternalFlow.cs:212:18:212:54 | call to method GeneratedFlowWithGeneratedNeutral | -| ExternalFlow.cs:244:21:244:28 | object creation of type HC : HC | ExternalFlow.cs:245:21:245:21 | access to local variable h : HC | -| ExternalFlow.cs:245:21:245:21 | access to local variable h : HC | ExternalFlow.cs:245:21:245:39 | call to method ExtensionMethod : HC | -| ExternalFlow.cs:245:21:245:39 | call to method ExtensionMethod : HC | ExternalFlow.cs:246:18:246:18 | access to local variable o | -| ExternalFlow.cs:262:13:262:13 | [post] access to parameter a : MyInlineArray [element] : Object | ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object | -| ExternalFlow.cs:262:20:262:31 | object creation of type Object : Object | ExternalFlow.cs:262:13:262:13 | [post] access to parameter a : MyInlineArray [element] : Object | -| ExternalFlow.cs:263:21:263:31 | call to method GetFirst : Object | ExternalFlow.cs:264:18:264:18 | access to local variable b | -| ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object | ExternalFlow.cs:263:21:263:31 | call to method GetFirst : Object | +| ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | ExternalFlow.cs:10:29:10:32 | access to local variable arg1 : Object | provenance | | +| ExternalFlow.cs:10:29:10:32 | access to local variable arg1 : Object | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | provenance | | +| ExternalFlow.cs:15:29:15:40 | object creation of type Object : Object | ExternalFlow.cs:17:24:17:29 | access to local variable argIn1 : Object | provenance | | +| ExternalFlow.cs:16:30:16:41 | object creation of type Object : Object | ExternalFlow.cs:18:18:18:24 | access to local variable argOut1 | provenance | | +| ExternalFlow.cs:17:24:17:29 | access to local variable argIn1 : Object | ExternalFlow.cs:17:32:17:38 | [post] access to local variable argOut1 : Object | provenance | | +| ExternalFlow.cs:17:32:17:38 | [post] access to local variable argOut1 : Object | ExternalFlow.cs:18:18:18:24 | access to local variable argOut1 | provenance | | +| ExternalFlow.cs:23:27:23:38 | object creation of type Object : Object | ExternalFlow.cs:24:25:24:28 | access to local variable arg2 : Object | provenance | | +| ExternalFlow.cs:24:13:24:29 | [post] this access : D | ExternalFlow.cs:25:18:25:21 | this access | provenance | | +| ExternalFlow.cs:24:25:24:28 | access to local variable arg2 : Object | ExternalFlow.cs:24:13:24:29 | [post] this access : D | provenance | | +| ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | provenance | | +| ExternalFlow.cs:30:26:30:37 | object creation of type Object : Object | ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | provenance | | +| ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:39 | call to method StepFieldGetter | provenance | | +| ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | ExternalFlow.cs:36:18:36:69 | access to field Field | provenance | | +| ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | provenance | | +| ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | provenance | | +| ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | provenance | | +| ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | provenance | | +| ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | provenance | | +| ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:27 | access to field Field | provenance | | +| ExternalFlow.cs:42:13:42:16 | [post] this access : D [property Property] : Object | ExternalFlow.cs:43:18:43:21 | this access : D [property Property] : Object | provenance | | +| ExternalFlow.cs:42:29:42:40 | object creation of type Object : Object | ExternalFlow.cs:42:13:42:16 | [post] this access : D [property Property] : Object | provenance | | +| ExternalFlow.cs:43:18:43:21 | this access : D [property Property] : Object | ExternalFlow.cs:43:18:43:42 | call to method StepPropertyGetter | provenance | | +| ExternalFlow.cs:48:13:48:16 | [post] this access : D [property Property] : Object | ExternalFlow.cs:49:18:49:21 | this access : D [property Property] : Object | provenance | | +| ExternalFlow.cs:48:37:48:48 | object creation of type Object : Object | ExternalFlow.cs:48:13:48:16 | [post] this access : D [property Property] : Object | provenance | | +| ExternalFlow.cs:49:18:49:21 | this access : D [property Property] : Object | ExternalFlow.cs:49:18:49:30 | access to property Property | provenance | | +| ExternalFlow.cs:54:13:54:16 | [post] this access : D [element] : Object | ExternalFlow.cs:55:18:55:21 | this access : D [element] : Object | provenance | | +| ExternalFlow.cs:54:36:54:47 | object creation of type Object : Object | ExternalFlow.cs:54:13:54:16 | [post] this access : D [element] : Object | provenance | | +| ExternalFlow.cs:55:18:55:21 | this access : D [element] : Object | ExternalFlow.cs:55:18:55:41 | call to method StepElementGetter | provenance | | +| ExternalFlow.cs:60:35:60:35 | o : Object | ExternalFlow.cs:60:47:60:47 | access to parameter o | provenance | | +| ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | ExternalFlow.cs:60:35:60:35 | o : Object | provenance | | +| ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | ExternalFlow.cs:66:18:66:18 | access to local variable o | provenance | | +| ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | ExternalFlow.cs:65:21:65:60 | call to method Apply : Object | provenance | | +| ExternalFlow.cs:71:30:71:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | provenance | | +| ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | ExternalFlow.cs:71:30:71:45 | { ..., ... } : null [element] : Object | provenance | | +| ExternalFlow.cs:72:17:72:20 | access to local variable objs : null [element] : Object | ExternalFlow.cs:72:23:72:23 | o : Object | provenance | | +| ExternalFlow.cs:72:23:72:23 | o : Object | ExternalFlow.cs:72:35:72:35 | access to parameter o | provenance | | +| ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | provenance | | +| ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | provenance | | +| ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:24 | access to array element | provenance | | +| ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | provenance | | +| ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | provenance | | +| ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | provenance | | +| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | provenance | | +| ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | ExternalFlow.cs:85:18:85:25 | access to array element | provenance | | +| ExternalFlow.cs:90:21:90:34 | object creation of type String : String | ExternalFlow.cs:91:19:91:19 | access to local variable s : String | provenance | | +| ExternalFlow.cs:91:19:91:19 | access to local variable s : String | ExternalFlow.cs:91:30:91:30 | SSA def(i) : Int32 | provenance | | +| ExternalFlow.cs:91:30:91:30 | SSA def(i) : Int32 | ExternalFlow.cs:92:18:92:18 | (...) ... | provenance | | +| ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:103:16:103:17 | access to local variable d1 : D [field Field] : Object | provenance | | +| ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:104:18:104:19 | access to local variable d1 : D [field Field] : Object | provenance | | +| ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | ExternalFlow.cs:98:13:98:14 | [post] access to local variable d1 : D [field Field] : Object | provenance | | +| ExternalFlow.cs:100:20:100:20 | d : Object | ExternalFlow.cs:102:22:102:22 | access to parameter d | provenance | | +| ExternalFlow.cs:103:16:103:17 | access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:100:20:100:20 | d : Object | provenance | | +| ExternalFlow.cs:104:18:104:19 | access to local variable d1 : D [field Field] : Object | ExternalFlow.cs:104:18:104:25 | access to field Field | provenance | | +| ExternalFlow.cs:111:13:111:13 | [post] access to local variable f : F [field MyField] : Object | ExternalFlow.cs:112:18:112:18 | access to local variable f : F [field MyField] : Object | provenance | | +| ExternalFlow.cs:111:24:111:35 | object creation of type Object : Object | ExternalFlow.cs:111:13:111:13 | [post] access to local variable f : F [field MyField] : Object | provenance | | +| ExternalFlow.cs:112:18:112:18 | access to local variable f : F [field MyField] : Object | ExternalFlow.cs:112:18:112:25 | access to property MyProp | provenance | | +| ExternalFlow.cs:117:34:117:49 | { ..., ... } : null [element] : Object | ExternalFlow.cs:118:29:118:29 | access to local variable a : null [element] : Object | provenance | | +| ExternalFlow.cs:117:36:117:47 | object creation of type Object : Object | ExternalFlow.cs:117:34:117:49 | { ..., ... } : null [element] : Object | provenance | | +| ExternalFlow.cs:118:21:118:30 | call to method Reverse : null [element] : Object | ExternalFlow.cs:120:18:120:18 | access to local variable b : null [element] : Object | provenance | | +| ExternalFlow.cs:118:29:118:29 | access to local variable a : null [element] : Object | ExternalFlow.cs:118:21:118:30 | call to method Reverse : null [element] : Object | provenance | | +| ExternalFlow.cs:120:18:120:18 | access to local variable b : null [element] : Object | ExternalFlow.cs:120:18:120:21 | access to array element | provenance | | +| ExternalFlow.cs:205:22:205:33 | object creation of type Object : Object | ExternalFlow.cs:206:38:206:39 | access to local variable o2 : Object | provenance | | +| ExternalFlow.cs:206:38:206:39 | access to local variable o2 : Object | ExternalFlow.cs:206:18:206:40 | call to method MixedFlowArgs | provenance | | +| ExternalFlow.cs:211:22:211:33 | object creation of type Object : Object | ExternalFlow.cs:212:52:212:53 | access to local variable o1 : Object | provenance | | +| ExternalFlow.cs:212:52:212:53 | access to local variable o1 : Object | ExternalFlow.cs:212:18:212:54 | call to method GeneratedFlowWithGeneratedNeutral | provenance | | +| ExternalFlow.cs:244:21:244:28 | object creation of type HC : HC | ExternalFlow.cs:245:21:245:21 | access to local variable h : HC | provenance | | +| ExternalFlow.cs:245:21:245:21 | access to local variable h : HC | ExternalFlow.cs:245:21:245:39 | call to method ExtensionMethod : HC | provenance | | +| ExternalFlow.cs:245:21:245:39 | call to method ExtensionMethod : HC | ExternalFlow.cs:246:18:246:18 | access to local variable o | provenance | | +| ExternalFlow.cs:262:13:262:13 | [post] access to parameter a : MyInlineArray [element] : Object | ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object | provenance | | +| ExternalFlow.cs:262:20:262:31 | object creation of type Object : Object | ExternalFlow.cs:262:13:262:13 | [post] access to parameter a : MyInlineArray [element] : Object | provenance | | +| ExternalFlow.cs:263:21:263:31 | call to method GetFirst : Object | ExternalFlow.cs:264:18:264:18 | access to local variable b | provenance | | +| ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object | ExternalFlow.cs:263:21:263:31 | call to method GetFirst : Object | provenance | | nodes | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | semmle.label | call to method StepArgRes | diff --git a/csharp/ql/test/library-tests/dataflow/fields/C_ctor.cs b/csharp/ql/test/library-tests/dataflow/fields/C_ctor.cs deleted file mode 100644 index 346c24068bb5..000000000000 --- a/csharp/ql/test/library-tests/dataflow/fields/C_ctor.cs +++ /dev/null @@ -1,42 +0,0 @@ -public class C_no_ctor -{ - private Elem s1 = Util.Source(1); - - void M1() - { - C_no_ctor c = new C_no_ctor(); - c.M2(); - } - - public void M2() - { - Util.Sink(s1); // $ hasValueFlow=1 - } -} - -public class C_with_ctor -{ - private Elem s1 = Util.Source(1); - - void M1() - { - C_with_ctor c = new C_with_ctor(); - c.M2(); - } - - public C_with_ctor() { } - - public void M2() - { - Util.Sink(s1); // $ hasValueFlow=1 - } -} - -class Util -{ - public static void Sink(object o) { } - - public static T Source(object source) => throw null; -} - -public class Elem { } diff --git a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected index a56a9fa6524a..b5c1624c2516 100644 --- a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected @@ -1,945 +1,921 @@ testFailures edges -| A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | -| A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | -| A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | -| A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | -| A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | -| A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | -| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | -| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | -| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | -| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | -| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | -| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | -| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | -| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | -| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | -| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | -| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | -| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | -| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | -| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | -| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | -| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | -| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | -| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | -| A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | -| A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | -| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | -| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | -| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | -| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | -| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | -| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | -| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | -| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | -| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | -| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | -| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | -| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | -| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | -| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | -| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | -| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | -| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | -| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | -| A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | -| A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | -| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | -| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | -| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | -| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | -| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | -| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | -| A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | -| A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | -| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | -| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | -| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | -| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | -| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | -| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | -| A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | -| A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | -| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | -| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | -| A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | -| A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | -| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | -| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | -| A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | -| A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | -| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | -| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | -| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | -| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | -| A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | -| A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | -| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | -| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | -| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | -| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | -| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | -| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | -| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | -| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | -| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | -| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | -| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | -| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | -| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | -| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | -| A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | -| A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | -| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | -| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | -| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | -| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | -| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | -| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | -| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | -| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | -| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | -| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | -| A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | -| A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | -| A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | -| A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | -| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | -| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | -| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | -| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | -| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | -| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | -| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | -| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | -| A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | -| A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | -| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | -| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | -| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | -| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | -| A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | -| A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | -| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | -| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | -| A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | -| A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | -| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | -| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | -| A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | -| A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | -| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | -| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | -| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | -| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | -| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | -| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | -| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | -| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | -| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | -| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | -| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | -| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | -| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | -| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | -| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | -| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | -| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | -| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | -| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | -| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | -| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | -| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | -| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | -| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | -| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | -| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | -| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | -| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | -| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | -| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | -| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | -| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | -| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | -| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | -| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | -| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | -| A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | -| A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | -| A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | -| A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | -| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | -| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | -| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | -| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | -| A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | -| A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | -| A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | -| A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | -| A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | -| A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | -| A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | -| A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | -| A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | -| A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | -| A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | -| A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | -| A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | -| A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | -| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | -| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | -| A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | -| A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | -| A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | -| A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | -| A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | -| A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | -| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | -| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | -| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | -| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | -| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | -| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | -| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | -| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | -| B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | -| B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | -| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | -| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | -| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | -| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | -| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | -| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | -| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | -| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | -| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | -| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | -| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | -| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | -| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | -| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | -| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | -| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | -| B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | -| B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | -| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | -| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | -| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | -| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | -| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | -| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | -| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | -| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | -| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | -| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | -| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | -| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | -| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | -| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | -| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | -| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | -| B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | -| B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | -| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | -| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | -| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | -| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | -| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | -| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | -| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | -| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | -| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | -| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | -| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | -| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | -| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | -| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | -| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | -| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | -| C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | -| C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | -| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | -| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | -| C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | -| C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | -| C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | -| C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | -| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | -| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | -| C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | -| C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | -| C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | -| C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | -| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | -| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | -| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | -| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | -| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | -| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | -| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | -| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | -| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | -| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | -| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | -| C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | -| C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | -| C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | -| C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | -| C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | -| C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | -| C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | -| C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | -| C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | -| C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | -| C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | -| C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | -| C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | -| C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | -| C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | -| C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | -| C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | -| C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | -| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | -| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | -| C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | -| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | -| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | -| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | -| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | -| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | -| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | -| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | -| C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | -| C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | -| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | -| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | -| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | -| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | -| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | -| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | -| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | -| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | -| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | -| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | -| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | -| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | -| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | -| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | -| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | -| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | -| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | -| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | -| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | -| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | -| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | -| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | -| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | -| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | -| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | -| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | -| D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | -| D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | -| D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | -| D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | -| D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | -| D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | -| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | -| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | -| D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | -| D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | -| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | -| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | -| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | -| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | -| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | -| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | -| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | -| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | -| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | -| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | -| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | -| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | -| D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | -| D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | -| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | -| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | -| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | -| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | -| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | -| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | -| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | -| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | -| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | -| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | -| D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | -| D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | -| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | -| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | -| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | -| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | -| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | -| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | -| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | -| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | -| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | -| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | -| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | -| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | -| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | -| D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | -| D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | -| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | -| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | -| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | -| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | -| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | -| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | -| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | -| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | -| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | -| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | -| E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | -| E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | -| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | -| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | -| E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | -| E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | -| E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | -| E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | -| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | -| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | -| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | -| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | -| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | -| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | -| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | -| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | -| E.cs:43:46:43:46 | o : Object | E.cs:46:22:46:22 | access to parameter o : Object | -| E.cs:43:46:43:46 | o : Object | E.cs:46:22:46:22 | access to parameter o : Object | -| E.cs:46:22:46:22 | access to parameter o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | -| E.cs:46:22:46:22 | access to parameter o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | -| E.cs:54:21:54:37 | call to method Source : Object | E.cs:55:29:55:33 | access to local variable taint : Object | -| E.cs:54:21:54:37 | call to method Source : Object | E.cs:55:29:55:33 | access to local variable taint : Object | -| E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | -| E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | -| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | -| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | -| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | -| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | -| E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:26 | access to field RefField | -| E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:26 | access to field RefField | -| F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | -| F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | -| F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | -| F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | -| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | -| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | -| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | -| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | -| F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | -| F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | -| F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | -| F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | -| F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | -| F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | -| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | -| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | -| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | -| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | -| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | -| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | -| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | -| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | -| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | -| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | -| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | -| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | -| F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | -| F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | -| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | -| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | -| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | -| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | -| F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | -| F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | -| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | -| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | -| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | -| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | -| F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | -| F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | -| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | -| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | -| F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | -| F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | -| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | -| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | -| F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | -| F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | -| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | -| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | -| G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | -| G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | -| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | -| G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | -| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | -| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | -| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | -| G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | -| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | -| G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | -| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | -| G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | -| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | -| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | -| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | -| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | -| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | -| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | -| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | -| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | -| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | -| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | -| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | -| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | -| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | -| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | -| G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | -| G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | -| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | -| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | -| G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | -| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | -| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | -| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | -| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | -| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | -| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | -| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | -| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | -| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | -| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | -| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | -| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | -| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | -| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | -| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | -| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | -| H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | -| H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | -| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | -| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | -| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | -| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | -| H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | -| H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | -| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | -| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | -| H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | -| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | -| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | -| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | -| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | -| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | -| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | -| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | -| H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | -| H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | -| H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | -| H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | -| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | -| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | -| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | -| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | -| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | -| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | -| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | -| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | -| H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | -| H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | -| H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | -| H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | -| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | -| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | -| H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | -| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | -| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | -| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | -| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | -| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | -| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | -| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | -| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | -| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | -| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | -| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | -| H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | -| H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | -| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | -| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | -| H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | -| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | -| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | -| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | -| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | -| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | -| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | -| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | -| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | -| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | -| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | -| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | -| H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | -| H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | -| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | -| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | -| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | -| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | -| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | -| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | -| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | -| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | -| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | -| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | -| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | -| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | -| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | -| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | -| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | -| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | -| H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | -| H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | -| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | -| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | -| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | -| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | -| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | -| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | -| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | -| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | -| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | -| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | -| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | -| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | -| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | -| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | -| H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | -| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | -| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | -| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | -| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | -| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | -| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | -| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | -| H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | -| H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | -| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | -| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | -| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | -| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | -| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | -| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | -| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | -| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | -| H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | -| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | -| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | -| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | -| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | -| H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | -| H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | -| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | -| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | -| H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | -| H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | -| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | -| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | -| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | -| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | -| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | -| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | -| H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | -| H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | -| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | -| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | -| H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | -| H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | -| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | -| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | -| H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | -| H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | -| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | -| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | -| H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | -| H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | -| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | -| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | -| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | -| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | -| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | -| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | -| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | -| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | -| H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | -| H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | -| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | -| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | -| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | -| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | -| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | -| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | -| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | -| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | -| H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | -| H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | -| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | -| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | -| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | -| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | -| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | -| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | -| H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | -| H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | -| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | -| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | -| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | -| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | -| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | -| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | -| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | -| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | -| I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | -| I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | -| I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | -| I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | -| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | -| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | -| I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | -| I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | -| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | -| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | -| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | -| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | -| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | -| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | -| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | -| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | -| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | -| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | -| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | -| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | -| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | -| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | -| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | -| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | -| I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | -| I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | -| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | -| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | -| I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | -| I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | -| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | -| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | -| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | -| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | -| I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | -| I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | -| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | -| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | -| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | -| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | -| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | -| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | -| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | -| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | -| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | -| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | -| J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | -| J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | -| J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | -| J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | -| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | -| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | -| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | -| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | -| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | -| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | -| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | -| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | -| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | -| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | -| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | -| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | -| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | -| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | -| J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | -| J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | -| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | -| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | -| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | -| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | -| J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | -| J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | -| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | -| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | -| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | -| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | -| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | -| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | -| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | -| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | -| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | -| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | -| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | -| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | -| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | -| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | -| J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | -| J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | -| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | -| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | -| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | -| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | -| J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | -| J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | -| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | -| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | -| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | -| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | -| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | -| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | -| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | -| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | -| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | -| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | -| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | -| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | -| J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | -| J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | -| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | -| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | -| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | -| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | -| J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | -| J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | -| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | -| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | -| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | -| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | -| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | -| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | -| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | -| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | -| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | -| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | -| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | -| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | -| J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | -| J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | -| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | -| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | -| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | -| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | -| J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | -| J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | -| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | -| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | -| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | -| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | -| J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | -| J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | -| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | -| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | -| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | -| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | -| J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | -| J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | -| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | -| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | -| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | -| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | -| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | -| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | -| J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | -| J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | -| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | -| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | -| J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | -| J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | +| A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | provenance | | +| A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | provenance | | +| A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | provenance | | +| A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | provenance | | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | provenance | | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | provenance | | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | provenance | | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | provenance | | +| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | provenance | | +| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | provenance | | +| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | provenance | | +| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | provenance | | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | provenance | | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | provenance | | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | provenance | | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | provenance | | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | provenance | | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | provenance | | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | provenance | | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | provenance | | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | provenance | | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | provenance | | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | provenance | | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | provenance | | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | provenance | | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | provenance | | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | provenance | | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | provenance | | +| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | provenance | | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | provenance | | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | provenance | | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | provenance | | +| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | provenance | | +| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | provenance | | +| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | provenance | | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | provenance | | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | provenance | | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | provenance | | +| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | provenance | | +| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | provenance | | +| A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | provenance | | +| A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | provenance | | +| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | provenance | | +| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | provenance | | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | provenance | | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | provenance | | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | provenance | | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | provenance | | +| A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | provenance | | +| A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | provenance | | +| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | provenance | | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | provenance | | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | provenance | | +| A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | provenance | | +| A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | provenance | | +| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | provenance | | +| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | provenance | | +| A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | provenance | | +| A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | provenance | | +| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | provenance | | +| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | provenance | | +| A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | provenance | | +| A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | provenance | | +| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | provenance | | +| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | provenance | | +| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | provenance | | +| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | provenance | | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | provenance | | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | provenance | | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | provenance | | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | provenance | | +| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | provenance | | +| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | provenance | | +| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | provenance | | +| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | provenance | | +| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | provenance | | +| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | provenance | | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | provenance | | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | provenance | | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | provenance | | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | provenance | | +| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | provenance | | +| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | provenance | | +| A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | provenance | | +| A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | provenance | | +| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | provenance | | +| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | provenance | | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | provenance | | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | provenance | | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | provenance | | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | provenance | | +| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | provenance | | +| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | provenance | | +| A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | provenance | | +| A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | provenance | | +| A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | provenance | | +| A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | provenance | | +| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | provenance | | +| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | provenance | | +| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | provenance | | +| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | provenance | | +| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | provenance | | +| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | provenance | | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | provenance | | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | provenance | | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | | +| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | provenance | | +| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | provenance | | +| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | provenance | | +| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | provenance | | +| A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | provenance | | +| A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | provenance | | +| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | provenance | | +| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | provenance | | +| A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | provenance | | +| A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | provenance | | +| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | provenance | | +| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | provenance | | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | provenance | | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | provenance | | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | provenance | | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | provenance | | +| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | provenance | | +| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | provenance | | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | provenance | | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | provenance | | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | provenance | | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | provenance | | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | provenance | | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | provenance | | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | provenance | | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | provenance | | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | provenance | | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | provenance | | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | provenance | | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | provenance | | +| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | provenance | | +| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | provenance | | +| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | provenance | | +| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | provenance | | +| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | provenance | | +| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | provenance | | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | provenance | | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | provenance | | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | provenance | | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | provenance | | +| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | provenance | | +| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | provenance | | +| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | provenance | | +| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | provenance | | +| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | provenance | | +| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | provenance | | +| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | provenance | | +| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | provenance | | +| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | provenance | | +| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | provenance | | +| A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | provenance | | +| A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | provenance | | +| A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | provenance | | +| A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | provenance | | +| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | provenance | | +| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | provenance | | +| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | provenance | | +| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | provenance | | +| A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | provenance | | +| A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | provenance | | +| A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | provenance | | +| A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | provenance | | +| A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | provenance | | +| A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | provenance | | +| A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | provenance | | +| A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | provenance | | +| A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | provenance | | +| A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | provenance | | +| A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | provenance | | +| A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | provenance | | +| A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | provenance | | +| A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | provenance | | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | provenance | | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | provenance | | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | provenance | | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | provenance | | +| A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | provenance | | +| A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | provenance | | +| A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | provenance | | +| A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | provenance | | +| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | provenance | | +| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | provenance | | +| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | provenance | | +| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | provenance | | +| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | provenance | | +| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | provenance | | +| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | provenance | | +| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | provenance | | +| B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | provenance | | +| B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | provenance | | +| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | provenance | | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | provenance | | +| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | provenance | | +| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | provenance | | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | provenance | | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | provenance | | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | provenance | | +| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | provenance | | +| B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | provenance | | +| B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | provenance | | +| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | provenance | | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | provenance | | +| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | provenance | | +| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | provenance | | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | provenance | | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | provenance | | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | provenance | | +| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | provenance | | +| B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | provenance | | +| B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | provenance | | +| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | provenance | | +| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | provenance | | +| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | provenance | | +| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | provenance | | +| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | provenance | | +| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | provenance | | +| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | provenance | | +| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | provenance | | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | provenance | | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | provenance | | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | provenance | | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | provenance | | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | | +| C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | provenance | | +| C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | provenance | | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | provenance | | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | provenance | | +| C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | provenance | | +| C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | provenance | | +| C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | provenance | | +| C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | provenance | | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | provenance | | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | provenance | | +| C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | provenance | | +| C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | provenance | | +| C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | provenance | | +| C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | provenance | | +| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | provenance | | +| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | provenance | | +| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | provenance | | +| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | provenance | | +| C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | provenance | | +| C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | provenance | | +| C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | provenance | | +| C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | provenance | | +| C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | provenance | | +| C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | provenance | | +| C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | provenance | | +| C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | provenance | | +| C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | provenance | | +| C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | provenance | | +| C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | provenance | | +| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | provenance | | +| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | provenance | | +| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | provenance | | +| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | provenance | | +| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | provenance | | +| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | provenance | | +| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | provenance | | +| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | provenance | | +| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | provenance | | +| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | provenance | | +| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | provenance | | +| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | provenance | | +| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | provenance | | +| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | provenance | | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | provenance | | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | provenance | | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | provenance | | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | provenance | | +| D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | provenance | | +| D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | provenance | | +| D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | provenance | | +| D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | provenance | | +| D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | provenance | | +| D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | provenance | | +| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | provenance | | +| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | provenance | | +| D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | provenance | | +| D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | provenance | | +| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | provenance | | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | provenance | | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | provenance | | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | provenance | | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | provenance | | +| D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | provenance | | +| D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | provenance | | +| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | provenance | | +| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | provenance | | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | provenance | | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | provenance | | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | provenance | | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | provenance | | +| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | provenance | | +| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | provenance | | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | provenance | | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | provenance | | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | provenance | | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | provenance | | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | provenance | | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | provenance | | +| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | provenance | | +| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | provenance | | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | provenance | | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | provenance | | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | provenance | | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | provenance | | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | provenance | | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | provenance | | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | provenance | | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | provenance | | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | provenance | | +| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | provenance | | +| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | provenance | | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | provenance | | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | provenance | | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | provenance | | +| E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | provenance | | +| E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | provenance | | +| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | provenance | | +| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | provenance | | +| E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | provenance | | +| E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | provenance | | +| E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | provenance | | +| E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | provenance | | +| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | provenance | | +| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | provenance | | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | provenance | | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | provenance | | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | provenance | | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | provenance | | +| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | provenance | | +| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | provenance | | +| E.cs:43:46:43:46 | o : Object | E.cs:46:22:46:22 | access to parameter o : Object | provenance | | +| E.cs:43:46:43:46 | o : Object | E.cs:46:22:46:22 | access to parameter o : Object | provenance | | +| E.cs:46:22:46:22 | access to parameter o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | provenance | | +| E.cs:46:22:46:22 | access to parameter o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | provenance | | +| E.cs:54:21:54:37 | call to method Source : Object | E.cs:55:29:55:33 | access to local variable taint : Object | provenance | | +| E.cs:54:21:54:37 | call to method Source : Object | E.cs:55:29:55:33 | access to local variable taint : Object | provenance | | +| E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | provenance | | +| E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | provenance | | +| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | provenance | | +| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | provenance | | +| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | provenance | | +| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object | provenance | | +| E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:26 | access to field RefField | provenance | | +| E.cs:57:14:57:17 | access to local variable refs : RefS [field RefField] : Object | E.cs:57:14:57:26 | access to field RefField | provenance | | +| F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | provenance | | +| F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | provenance | | +| F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | provenance | | +| F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | provenance | | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | provenance | | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | provenance | | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | provenance | | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | provenance | | +| F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | provenance | | +| F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | provenance | | +| F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | provenance | | +| F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | provenance | | +| F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | provenance | | +| F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | provenance | | +| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | provenance | | +| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | provenance | | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | provenance | | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | provenance | | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | provenance | | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | provenance | | +| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | provenance | | +| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | provenance | | +| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | provenance | | +| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | provenance | | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | provenance | | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | provenance | | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | provenance | | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | provenance | | +| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | provenance | | +| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | provenance | | +| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | provenance | | +| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | provenance | | +| F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | provenance | | +| F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | provenance | | +| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | provenance | | +| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | provenance | | +| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | provenance | | +| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | provenance | | +| F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | provenance | | +| F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | provenance | | +| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | provenance | | +| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | provenance | | +| F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | provenance | | +| F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | provenance | | +| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | provenance | | +| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | provenance | | +| F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | provenance | | +| F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | provenance | | +| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | provenance | | +| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | provenance | | +| G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | provenance | | +| G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | provenance | | +| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | provenance | | +| G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | provenance | | +| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | provenance | | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | provenance | | +| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | provenance | | +| G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | provenance | | +| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | provenance | | +| G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | provenance | | +| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | provenance | | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | provenance | | +| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | provenance | | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | provenance | | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | provenance | | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | provenance | | +| G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | provenance | | +| G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | provenance | | +| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | provenance | | +| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | provenance | | +| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | provenance | | +| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | provenance | | +| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | provenance | | +| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | provenance | | +| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | provenance | | +| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | provenance | | +| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | provenance | | +| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | provenance | | +| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | provenance | | +| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | provenance | | +| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | provenance | | +| H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | provenance | | +| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | provenance | | +| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | provenance | | +| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | provenance | | +| H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | provenance | | +| H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | provenance | | +| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | provenance | | +| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | provenance | | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | provenance | | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | provenance | | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | provenance | | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | provenance | | +| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | provenance | | +| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | provenance | | +| H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | provenance | | +| H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | provenance | | +| H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | provenance | | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | provenance | | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | provenance | | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | provenance | | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | provenance | | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | provenance | | +| H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | provenance | | +| H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | provenance | | +| H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | provenance | | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | provenance | | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | provenance | | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | provenance | | +| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | provenance | | +| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | provenance | | +| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | provenance | | +| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | provenance | | +| H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | provenance | | +| H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | provenance | | +| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | provenance | | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | provenance | | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | provenance | | +| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | provenance | | +| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | provenance | | +| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | provenance | | +| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | provenance | | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | provenance | | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | provenance | | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | provenance | | +| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | provenance | | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | provenance | | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | provenance | | +| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | provenance | | +| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | provenance | | +| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | provenance | | +| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | provenance | | +| H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | provenance | | +| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | provenance | | +| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | provenance | | +| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | provenance | | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | provenance | | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | provenance | | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | provenance | | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | provenance | | +| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | provenance | | +| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | provenance | | +| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | provenance | | +| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | provenance | | +| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | provenance | | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | provenance | | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | provenance | | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | provenance | | +| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | provenance | | +| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | provenance | | +| H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | provenance | | +| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | provenance | | +| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | provenance | | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | provenance | | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | provenance | | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | provenance | | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | provenance | | +| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | provenance | | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | provenance | | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | provenance | | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | provenance | | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | provenance | | +| H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | provenance | | +| H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | provenance | | +| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | provenance | | +| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | provenance | | +| H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | provenance | | +| H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | provenance | | +| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | provenance | | +| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | provenance | | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | provenance | | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | provenance | | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | provenance | | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | provenance | | +| H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | provenance | | +| H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | provenance | | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | provenance | | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | provenance | | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | provenance | | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | provenance | | +| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | provenance | | +| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | provenance | | +| H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | provenance | | +| H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | provenance | | +| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | provenance | | +| H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | provenance | | +| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | provenance | | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | provenance | | +| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | provenance | | +| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | provenance | | +| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | provenance | | +| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | provenance | | +| H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | provenance | | +| H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | provenance | | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | provenance | | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | provenance | | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | provenance | | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | provenance | | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | provenance | | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | provenance | | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | provenance | | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | provenance | | +| H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | provenance | | +| H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | provenance | | +| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | provenance | | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | provenance | | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | provenance | | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | provenance | | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | provenance | | +| H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | provenance | | +| H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | provenance | | +| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | provenance | | +| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | provenance | | +| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | provenance | | +| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | provenance | | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | provenance | | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | provenance | | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | provenance | | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | provenance | | +| I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | provenance | | +| I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | provenance | | +| I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | provenance | | +| I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | provenance | | +| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | provenance | | +| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | provenance | | +| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | provenance | | +| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | provenance | | +| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | provenance | | +| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | provenance | | +| I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | provenance | | +| I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | provenance | | +| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | provenance | | +| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | provenance | | +| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | provenance | | +| I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | provenance | | +| I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | provenance | | +| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | provenance | | +| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | provenance | | +| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | provenance | | +| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | provenance | | +| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | provenance | | +| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | provenance | | +| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | provenance | | +| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | provenance | | +| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | provenance | | +| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | provenance | | +| J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | provenance | | +| J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | provenance | | +| J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | provenance | | +| J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | provenance | | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | provenance | | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | provenance | | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | provenance | | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | provenance | | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | provenance | | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | provenance | | +| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | provenance | | +| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | provenance | | +| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | provenance | | +| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | provenance | | +| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | provenance | | +| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | provenance | | +| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | provenance | | +| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | provenance | | +| J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | provenance | | +| J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | provenance | | +| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | provenance | | +| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | provenance | | +| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | provenance | | +| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | provenance | | +| J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | provenance | | +| J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | provenance | | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | provenance | | +| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | provenance | | +| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | provenance | | +| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | provenance | | +| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | provenance | | +| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | provenance | | +| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | provenance | | +| J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | provenance | | +| J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | provenance | | +| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | provenance | | +| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | provenance | | +| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | provenance | | +| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | provenance | | +| J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | provenance | | +| J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | provenance | | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | provenance | | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | provenance | | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | provenance | | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | provenance | | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | provenance | | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | provenance | | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | provenance | | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | provenance | | +| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | provenance | | +| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | provenance | | +| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | provenance | | +| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | provenance | | +| J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | provenance | | +| J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | provenance | | +| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | provenance | | +| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | provenance | | +| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | provenance | | +| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | provenance | | +| J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | provenance | | +| J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | provenance | | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | provenance | | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | provenance | | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | provenance | | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | provenance | | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | provenance | | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | provenance | | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | provenance | | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | provenance | | +| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | provenance | | +| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | provenance | | +| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | provenance | | +| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | provenance | | +| J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | provenance | | +| J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | provenance | | +| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | provenance | | +| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | provenance | | +| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | provenance | | +| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | provenance | | +| J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | provenance | | +| J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | provenance | | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | provenance | | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | provenance | | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | provenance | | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | provenance | | +| J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | provenance | | +| J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | provenance | | +| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | provenance | | +| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | provenance | | +| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | provenance | | +| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | provenance | | +| J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | provenance | | +| J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | provenance | | +| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | provenance | | +| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | provenance | | +| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | provenance | | +| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | provenance | | +| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | provenance | | +| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | provenance | | +| J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | provenance | | +| J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | provenance | | +| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | provenance | | +| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | provenance | | +| J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | provenance | | +| J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | provenance | | nodes | A.cs:5:17:5:28 | call to method Source : C | semmle.label | call to method Source : C | | A.cs:5:17:5:28 | call to method Source : C | semmle.label | call to method Source : C | @@ -1281,34 +1257,6 @@ nodes | C.cs:27:14:27:15 | this access : C [property s5] : Elem | semmle.label | this access : C [property s5] : Elem | | C.cs:28:14:28:15 | access to property s6 | semmle.label | access to property s6 | | C.cs:28:14:28:15 | access to property s6 | semmle.label | access to property s6 | -| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | semmle.label | [post] this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | semmle.label | [post] this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:3:23:3:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | -| C_ctor.cs:3:23:3:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | -| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | semmle.label | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | -| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | semmle.label | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | -| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | semmle.label | access to local variable c : C_no_ctor [field s1] : Elem | -| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | semmle.label | access to local variable c : C_no_ctor [field s1] : Elem | -| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | semmle.label | this : C_no_ctor [field s1] : Elem | -| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | semmle.label | this : C_no_ctor [field s1] : Elem | -| C_ctor.cs:13:19:13:20 | access to field s1 | semmle.label | access to field s1 | -| C_ctor.cs:13:19:13:20 | access to field s1 | semmle.label | access to field s1 | -| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | semmle.label | this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | semmle.label | this access : C_no_ctor [field s1] : Elem | -| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | semmle.label | [post] this access : C_with_ctor [field s1] : Elem | -| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | semmle.label | [post] this access : C_with_ctor [field s1] : Elem | -| C_ctor.cs:19:23:19:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | -| C_ctor.cs:19:23:19:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | -| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | -| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | -| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | semmle.label | access to local variable c : C_with_ctor [field s1] : Elem | -| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | semmle.label | access to local variable c : C_with_ctor [field s1] : Elem | -| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | semmle.label | this : C_with_ctor [field s1] : Elem | -| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | semmle.label | this : C_with_ctor [field s1] : Elem | -| C_ctor.cs:31:19:31:20 | access to field s1 | semmle.label | access to field s1 | -| C_ctor.cs:31:19:31:20 | access to field s1 | semmle.label | access to field s1 | -| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | semmle.label | this access : C_with_ctor [field s1] : Elem | -| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | semmle.label | this access : C_with_ctor [field s1] : Elem | | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | @@ -2121,10 +2069,6 @@ subpaths | C.cs:27:14:27:15 | access to property s5 | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:27:14:27:15 | access to property s5 | $@ | C.cs:7:37:7:51 | call to method Source : Elem | call to method Source : Elem | | C.cs:28:14:28:15 | access to property s6 | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | $@ | C.cs:8:30:8:44 | call to method Source : Elem | call to method Source : Elem | | C.cs:28:14:28:15 | access to property s6 | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | $@ | C.cs:8:30:8:44 | call to method Source : Elem | call to method Source : Elem | -| C_ctor.cs:13:19:13:20 | access to field s1 | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | $@ | C_ctor.cs:3:23:3:42 | call to method Source : Elem | call to method Source : Elem | -| C_ctor.cs:13:19:13:20 | access to field s1 | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | $@ | C_ctor.cs:3:23:3:42 | call to method Source : Elem | call to method Source : Elem | -| C_ctor.cs:31:19:31:20 | access to field s1 | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | $@ | C_ctor.cs:19:23:19:42 | call to method Source : Elem | call to method Source : Elem | -| C_ctor.cs:31:19:31:20 | access to field s1 | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | $@ | C_ctor.cs:19:23:19:42 | call to method Source : Elem | call to method Source : Elem | | D.cs:32:14:32:23 | access to property AutoProp | D.cs:29:17:29:33 | call to method Source : Object | D.cs:32:14:32:23 | access to property AutoProp | $@ | D.cs:29:17:29:33 | call to method Source : Object | call to method Source : Object | | D.cs:32:14:32:23 | access to property AutoProp | D.cs:29:17:29:33 | call to method Source : Object | D.cs:32:14:32:23 | access to property AutoProp | $@ | D.cs:29:17:29:33 | call to method Source : Object | call to method Source : Object | | D.cs:39:14:39:26 | access to property TrivialProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:39:14:39:26 | access to property TrivialProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index 00d45708afc8..4d549939f1c2 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -1,344 +1,344 @@ edges -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:12:19:12:24 | access to local variable sink27 | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:21:23:21:28 | access to local variable sink28 | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:30:19:30:24 | access to local variable sink29 | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | -| Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:57:27:57:32 | access to parameter sink39 | -| Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:50:50:50:55 | sink39 : String | -| Capture.cs:69:13:69:35 | SSA def(sink30) : String | Capture.cs:72:15:72:20 | access to local variable sink30 | -| Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:69:13:69:35 | SSA def(sink30) : String | -| Capture.cs:79:17:79:39 | SSA def(sink31) : String | Capture.cs:84:15:84:20 | access to local variable sink31 | -| Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:79:17:79:39 | SSA def(sink31) : String | -| Capture.cs:89:13:89:35 | SSA def(sink32) : String | Capture.cs:93:15:93:20 | access to local variable sink32 | -| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:89:13:89:35 | SSA def(sink32) : String | -| Capture.cs:115:17:115:39 | SSA def(sink40) : String | Capture.cs:122:15:122:20 | access to local variable sink40 | -| Capture.cs:115:26:115:39 | "taint source" : String | Capture.cs:115:17:115:39 | SSA def(sink40) : String | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:133:15:133:20 | access to local variable sink33 | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:145:15:145:20 | access to local variable sink34 | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:154:15:154:20 | access to local variable sink35 | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:168:25:168:31 | access to parameter tainted : String | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:194:25:194:31 | access to parameter tainted : String | -| Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | Capture.cs:161:15:161:20 | access to local variable sink36 | -| Capture.cs:168:25:168:31 | access to parameter tainted : String | Capture.cs:169:15:169:20 | access to local variable sink37 | -| Capture.cs:188:26:188:26 | s : String | Capture.cs:191:20:191:22 | call to local function M : String | -| Capture.cs:194:22:194:32 | call to local function Id : String | Capture.cs:195:15:195:20 | access to local variable sink38 | -| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:188:26:188:26 | s : String | -| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:194:22:194:32 | call to local function Id : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | -| GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | -| GlobalDataFlow.cs:54:15:54:15 | x : String | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | -| GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | -| GlobalDataFlow.cs:57:37:57:37 | x : String | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | -| GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | -| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | -| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:427:9:427:11 | value : String | -| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | -| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | -| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | -| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:74:15:74:19 | access to local variable sink1 | -| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | -| GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | -| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | -| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | -| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | -| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:77:15:77:19 | access to local variable sink2 | -| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | -| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | -| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | -| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:80:15:80:19 | access to local variable sink3 | -| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | -| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | -| GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | -| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:82:15:82:20 | access to local variable sink13 | -| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | -| GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | -| GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | -| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | -| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | -| GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | -| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | -| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | -| GlobalDataFlow.cs:87:22:87:136 | call to method First : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | -| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | -| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | -| GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | -| GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | -| GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | -| GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | GlobalDataFlow.cs:164:15:164:19 | access to local variable sink8 | -| GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | -| GlobalDataFlow.cs:165:22:165:39 | call to method First : String | GlobalDataFlow.cs:166:15:166:20 | access to local variable sink12 | -| GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | -| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | -| GlobalDataFlow.cs:184:21:184:26 | delegate call : String | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | -| GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | -| GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | -| GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | GlobalDataFlow.cs:202:15:202:20 | access to local variable sink19 | -| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | -| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | -| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | -| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | -| GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | -| GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | -| GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | -| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | -| GlobalDataFlow.cs:216:22:216:47 | call to method First : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | -| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | -| GlobalDataFlow.cs:218:22:218:47 | call to method First : String | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | -| GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | -| GlobalDataFlow.cs:220:22:220:57 | call to method First : String | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | -| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | -| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | -| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | -| GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | -| GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | -| GlobalDataFlow.cs:244:22:244:31 | await ... : String | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | -| GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:244:22:244:31 | await ... : String | -| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | -| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | -| GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | -| GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | GlobalDataFlow.cs:265:15:265:24 | access to parameter sinkParam1 | -| GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | GlobalDataFlow.cs:270:15:270:24 | access to parameter sinkParam3 | -| GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | GlobalDataFlow.cs:275:15:275:24 | access to parameter sinkParam4 | -| GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | GlobalDataFlow.cs:280:15:280:24 | access to parameter sinkParam5 | -| GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | GlobalDataFlow.cs:285:15:285:24 | access to parameter sinkParam6 | -| GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | GlobalDataFlow.cs:290:15:290:24 | access to parameter sinkParam7 | -| GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | -| GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | -| GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | -| GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:13 | SSA def(y) : String | -| GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:13 | SSA def(y) : String | -| GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | -| GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | -| GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | -| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | -| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | -| GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | -| GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | -| GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | -| GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | -| GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | -| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | -| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:54:15:54:15 | x : String | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:57:37:57:37 | x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | -| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | -| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | -| GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | -| GlobalDataFlow.cs:427:9:427:11 | value : String | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | -| GlobalDataFlow.cs:438:22:438:35 | "taint source" : String | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | -| GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | -| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | -| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | -| GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | GlobalDataFlow.cs:461:15:461:20 | access to local variable sink45 | -| GlobalDataFlow.cs:466:53:466:55 | arg : String | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | -| GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | -| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | -| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | -| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:22 | access to field field | -| GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:22 | access to field field | -| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:22 | access to field field | -| GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:22 | access to field field | -| GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:22 | access to field field | -| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | -| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | -| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:21 | access to field field | -| GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:21 | access to field field | -| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | -| GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:21 | access to field field | -| GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:21 | access to field field | -| GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | -| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | -| GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | -| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | -| GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | -| GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | -| GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | -| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | -| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | -| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:11:19:11:19 | access to local variable x | -| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | -| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | -| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | -| Splitting.cs:18:24:18:24 | s : String | Splitting.cs:20:29:20:29 | access to parameter s : String | -| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:20:22:20:30 | call to method Return : String | -| Splitting.cs:21:9:21:11 | value : String | Splitting.cs:21:28:21:32 | access to parameter value : String | -| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:21:21:21:33 | call to method Return | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | -| Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | -| Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | -| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:34:19:34:19 | access to local variable x | -| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | -| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | -| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | -| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | -| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | -| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s | -| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:12:19:12:24 | access to local variable sink27 | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:21:23:21:28 | access to local variable sink28 | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:30:19:30:24 | access to local variable sink29 | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | | +| Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:50:50:50:55 | sink39 : String | provenance | | +| Capture.cs:69:13:69:35 | SSA def(sink30) : String | Capture.cs:72:15:72:20 | access to local variable sink30 | provenance | | +| Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:69:13:69:35 | SSA def(sink30) : String | provenance | | +| Capture.cs:79:17:79:39 | SSA def(sink31) : String | Capture.cs:84:15:84:20 | access to local variable sink31 | provenance | | +| Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:79:17:79:39 | SSA def(sink31) : String | provenance | | +| Capture.cs:89:13:89:35 | SSA def(sink32) : String | Capture.cs:93:15:93:20 | access to local variable sink32 | provenance | | +| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:89:13:89:35 | SSA def(sink32) : String | provenance | | +| Capture.cs:115:17:115:39 | SSA def(sink40) : String | Capture.cs:122:15:122:20 | access to local variable sink40 | provenance | | +| Capture.cs:115:26:115:39 | "taint source" : String | Capture.cs:115:17:115:39 | SSA def(sink40) : String | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:133:15:133:20 | access to local variable sink33 | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:145:15:145:20 | access to local variable sink34 | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:154:15:154:20 | access to local variable sink35 | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:168:25:168:31 | access to parameter tainted : String | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:194:25:194:31 | access to parameter tainted : String | provenance | | +| Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | Capture.cs:161:15:161:20 | access to local variable sink36 | provenance | | +| Capture.cs:168:25:168:31 | access to parameter tainted : String | Capture.cs:169:15:169:20 | access to local variable sink37 | provenance | | +| Capture.cs:188:26:188:26 | s : String | Capture.cs:191:20:191:22 | call to local function M : String | provenance | | +| Capture.cs:194:22:194:32 | call to local function Id : String | Capture.cs:195:15:195:20 | access to local variable sink38 | provenance | | +| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:188:26:188:26 | s : String | provenance | | +| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:194:22:194:32 | call to local function Id : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | provenance | | +| GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | +| GlobalDataFlow.cs:54:15:54:15 | x : String | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:57:37:57:37 | x : String | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:427:9:427:11 | value : String | provenance | | +| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | provenance | | +| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | provenance | | +| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | provenance | | +| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:74:15:74:19 | access to local variable sink1 | provenance | | +| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | provenance | | +| GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | provenance | | +| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | provenance | | +| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | provenance | | +| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | provenance | | +| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:77:15:77:19 | access to local variable sink2 | provenance | | +| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | provenance | | +| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | provenance | | +| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | provenance | | +| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:80:15:80:19 | access to local variable sink3 | provenance | | +| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | provenance | | +| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | provenance | | +| GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | provenance | | +| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:82:15:82:20 | access to local variable sink13 | provenance | | +| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | provenance | | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | provenance | | +| GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | provenance | | +| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | provenance | | +| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | provenance | | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | provenance | | +| GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | provenance | | +| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | provenance | | +| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | provenance | | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | provenance | | +| GlobalDataFlow.cs:87:22:87:136 | call to method First : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | provenance | | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | +| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | provenance | | +| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | provenance | | +| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | provenance | | +| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | provenance | | +| GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | provenance | | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | +| GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | provenance | | +| GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | provenance | | +| GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | GlobalDataFlow.cs:164:15:164:19 | access to local variable sink8 | provenance | | +| GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | provenance | | +| GlobalDataFlow.cs:165:22:165:39 | call to method First : String | GlobalDataFlow.cs:166:15:166:20 | access to local variable sink12 | provenance | | +| GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | provenance | | +| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | provenance | | +| GlobalDataFlow.cs:184:21:184:26 | delegate call : String | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | provenance | | +| GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | provenance | | +| GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | provenance | | +| GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | GlobalDataFlow.cs:202:15:202:20 | access to local variable sink19 | provenance | | +| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | provenance | | +| GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | provenance | | +| GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | provenance | | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | provenance | | +| GlobalDataFlow.cs:216:22:216:47 | call to method First : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | provenance | | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | provenance | | +| GlobalDataFlow.cs:218:22:218:47 | call to method First : String | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | provenance | | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | provenance | | +| GlobalDataFlow.cs:220:22:220:57 | call to method First : String | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | provenance | | +| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | provenance | | +| GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | provenance | | +| GlobalDataFlow.cs:244:22:244:31 | await ... : String | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | provenance | | +| GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:244:22:244:31 | await ... : String | provenance | | +| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | provenance | | +| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | provenance | | +| GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | provenance | | +| GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | GlobalDataFlow.cs:265:15:265:24 | access to parameter sinkParam1 | provenance | | +| GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | GlobalDataFlow.cs:270:15:270:24 | access to parameter sinkParam3 | provenance | | +| GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | GlobalDataFlow.cs:275:15:275:24 | access to parameter sinkParam4 | provenance | | +| GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | GlobalDataFlow.cs:280:15:280:24 | access to parameter sinkParam5 | provenance | | +| GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | GlobalDataFlow.cs:285:15:285:24 | access to parameter sinkParam6 | provenance | | +| GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | GlobalDataFlow.cs:290:15:290:24 | access to parameter sinkParam7 | provenance | | +| GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | provenance | | +| GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | provenance | | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | +| GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:13 | SSA def(y) : String | provenance | | +| GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:13 | SSA def(y) : String | provenance | | +| GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | provenance | | +| GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | provenance | | +| GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | provenance | | +| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | provenance | | +| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | provenance | | +| GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | provenance | | +| GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | provenance | | +| GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | provenance | | +| GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | provenance | | +| GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:54:15:54:15 | x : String | provenance | | +| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | provenance | | +| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:57:37:57:37 | x : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | provenance | | +| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | provenance | | +| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | provenance | | +| GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | provenance | | +| GlobalDataFlow.cs:427:9:427:11 | value : String | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | provenance | | +| GlobalDataFlow.cs:438:22:438:35 | "taint source" : String | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | provenance | | +| GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | provenance | | +| GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | GlobalDataFlow.cs:461:15:461:20 | access to local variable sink45 | provenance | | +| GlobalDataFlow.cs:466:53:466:55 | arg : String | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | provenance | | +| GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | | +| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | +| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:22 | access to field field | provenance | | +| GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:22 | access to field field | provenance | | +| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:22 | access to field field | provenance | | +| GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:22 | access to field field | provenance | | +| GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:22 | access to field field | provenance | | +| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | provenance | | +| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:21 | access to field field | provenance | | +| GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:21 | access to field field | provenance | | +| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:21 | access to field field | provenance | | +| GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:21 | access to field field | provenance | | +| GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | provenance | | +| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | provenance | | +| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | provenance | | +| GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | provenance | | +| GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | provenance | | +| GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | provenance | | +| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | provenance | | +| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | provenance | | +| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | provenance | | +| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | provenance | | +| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | provenance | | +| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | provenance | | +| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:11:19:11:19 | access to local variable x | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | provenance | | +| Splitting.cs:18:24:18:24 | s : String | Splitting.cs:20:29:20:29 | access to parameter s : String | provenance | | +| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:20:22:20:30 | call to method Return : String | provenance | | +| Splitting.cs:21:9:21:11 | value : String | Splitting.cs:21:28:21:32 | access to parameter value : String | provenance | | +| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:21:21:21:33 | call to method Return | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | provenance | | +| Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | provenance | | +| Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | provenance | | +| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | provenance | | +| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | provenance | | +| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:34:19:34:19 | access to local variable x | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | provenance | | +| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | provenance | | +| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s | provenance | | +| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s | provenance | | nodes | Capture.cs:7:20:7:26 | tainted : String | semmle.label | tainted : String | | Capture.cs:12:19:12:24 | access to local variable sink27 | semmle.label | access to local variable sink27 | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 8dd706eb671d..ace244f6961c 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -1,387 +1,387 @@ edges -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:12:19:12:24 | access to local variable sink27 | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:21:23:21:28 | access to local variable sink28 | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:30:19:30:24 | access to local variable sink29 | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | -| Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:57:27:57:32 | access to parameter sink39 | -| Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:50:50:50:55 | sink39 : String | -| Capture.cs:69:13:69:35 | SSA def(sink30) : String | Capture.cs:72:15:72:20 | access to local variable sink30 | -| Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:69:13:69:35 | SSA def(sink30) : String | -| Capture.cs:79:17:79:39 | SSA def(sink31) : String | Capture.cs:84:15:84:20 | access to local variable sink31 | -| Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:79:17:79:39 | SSA def(sink31) : String | -| Capture.cs:89:13:89:35 | SSA def(sink32) : String | Capture.cs:93:15:93:20 | access to local variable sink32 | -| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:89:13:89:35 | SSA def(sink32) : String | -| Capture.cs:115:17:115:39 | SSA def(sink40) : String | Capture.cs:122:15:122:20 | access to local variable sink40 | -| Capture.cs:115:26:115:39 | "taint source" : String | Capture.cs:115:17:115:39 | SSA def(sink40) : String | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:133:15:133:20 | access to local variable sink33 | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:145:15:145:20 | access to local variable sink34 | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:154:15:154:20 | access to local variable sink35 | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:168:25:168:31 | access to parameter tainted : String | -| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:194:25:194:31 | access to parameter tainted : String | -| Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | Capture.cs:161:15:161:20 | access to local variable sink36 | -| Capture.cs:168:25:168:31 | access to parameter tainted : String | Capture.cs:169:15:169:20 | access to local variable sink37 | -| Capture.cs:188:26:188:26 | s : String | Capture.cs:191:20:191:22 | call to local function M : String | -| Capture.cs:194:22:194:32 | call to local function Id : String | Capture.cs:195:15:195:20 | access to local variable sink38 | -| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:188:26:188:26 | s : String | -| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:194:22:194:32 | call to local function Id : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | -| GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | -| GlobalDataFlow.cs:54:15:54:15 | x : String | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | -| GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | -| GlobalDataFlow.cs:57:37:57:37 | x : String | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | -| GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | -| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | -| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | -| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:427:9:427:11 | value : String | -| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | -| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | -| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | -| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:74:15:74:19 | access to local variable sink1 | -| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | -| GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | -| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | -| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | -| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | -| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:77:15:77:19 | access to local variable sink2 | -| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | -| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | -| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | -| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:80:15:80:19 | access to local variable sink3 | -| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | -| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | -| GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | -| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:82:15:82:20 | access to local variable sink13 | -| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | -| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | -| GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | -| GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | -| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | -| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | -| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | -| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | -| GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | -| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | -| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | -| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | -| GlobalDataFlow.cs:87:22:87:136 | call to method First : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | -| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | -| GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | GlobalDataFlow.cs:90:15:90:20 | access to local variable sink17 | -| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | -| GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | -| GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:92:15:92:20 | access to local variable sink18 | -| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | -| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | -| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | -| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | -| GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | GlobalDataFlow.cs:94:36:94:41 | SSA def(sink21) : Int32 | -| GlobalDataFlow.cs:94:36:94:41 | SSA def(sink21) : Int32 | GlobalDataFlow.cs:95:15:95:20 | access to local variable sink21 | -| GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | GlobalDataFlow.cs:97:35:97:40 | SSA def(sink22) : Boolean | -| GlobalDataFlow.cs:97:35:97:40 | SSA def(sink22) : Boolean | GlobalDataFlow.cs:98:15:98:20 | access to local variable sink22 | -| GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | GlobalDataFlow.cs:100:82:100:88 | SSA def(sink21b) : Int32 | -| GlobalDataFlow.cs:100:82:100:88 | SSA def(sink21b) : Int32 | GlobalDataFlow.cs:101:15:101:21 | access to local variable sink21b | -| GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | -| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | -| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | -| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | -| GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | -| GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | -| GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | -| GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | GlobalDataFlow.cs:164:15:164:19 | access to local variable sink8 | -| GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | -| GlobalDataFlow.cs:165:22:165:39 | call to method First : String | GlobalDataFlow.cs:166:15:166:20 | access to local variable sink12 | -| GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | -| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | -| GlobalDataFlow.cs:184:21:184:26 | delegate call : String | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | -| GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | -| GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | -| GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | GlobalDataFlow.cs:202:15:202:20 | access to local variable sink19 | -| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | -| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | -| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | -| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | -| GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | -| GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | -| GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | -| GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | -| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | -| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | -| GlobalDataFlow.cs:216:22:216:47 | call to method First : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | -| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | -| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | -| GlobalDataFlow.cs:218:22:218:47 | call to method First : String | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | -| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | -| GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | -| GlobalDataFlow.cs:220:22:220:57 | call to method First : String | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | -| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | -| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | -| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | -| GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | -| GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | -| GlobalDataFlow.cs:244:22:244:31 | await ... : String | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | -| GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:244:22:244:31 | await ... : String | -| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | -| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | -| GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | -| GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | GlobalDataFlow.cs:265:15:265:24 | access to parameter sinkParam1 | -| GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | GlobalDataFlow.cs:270:15:270:24 | access to parameter sinkParam3 | -| GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | GlobalDataFlow.cs:275:15:275:24 | access to parameter sinkParam4 | -| GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | GlobalDataFlow.cs:280:15:280:24 | access to parameter sinkParam5 | -| GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | GlobalDataFlow.cs:285:15:285:24 | access to parameter sinkParam6 | -| GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | GlobalDataFlow.cs:290:15:290:24 | access to parameter sinkParam7 | -| GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | -| GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | -| GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | -| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | -| GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:13 | SSA def(y) : String | -| GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:13 | SSA def(y) : String | -| GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | -| GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | -| GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | -| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | -| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | -| GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | -| GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | -| GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | -| GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | -| GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | -| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | -| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:54:15:54:15 | x : String | -| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | -| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | -| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:57:37:57:37 | x : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | -| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | -| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | -| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | -| GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | -| GlobalDataFlow.cs:427:9:427:11 | value : String | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | -| GlobalDataFlow.cs:438:22:438:35 | "taint source" : String | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | -| GlobalDataFlow.cs:448:22:448:65 | call to method Join : String | GlobalDataFlow.cs:449:15:449:20 | access to local variable sink44 | -| GlobalDataFlow.cs:448:51:448:64 | "taint source" : String | GlobalDataFlow.cs:448:22:448:65 | call to method Join : String | -| GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | -| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | -| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | -| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | -| GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | GlobalDataFlow.cs:461:15:461:20 | access to local variable sink45 | -| GlobalDataFlow.cs:466:53:466:55 | arg : String | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | -| GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | -| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | -| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | -| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:22 | access to field field | -| GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:22 | access to field field | -| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:22 | access to field field | -| GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:22 | access to field field | -| GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:22 | access to field field | -| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | -| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | -| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:21 | access to field field | -| GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:21 | access to field field | -| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | -| GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:21 | access to field field | -| GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:21 | access to field field | -| GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | -| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | -| GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | -| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | -| GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | -| GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | -| GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | -| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | -| GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | -| GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | -| GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | -| GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | -| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | -| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | -| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:40:20:40:26 | (...) ... : AppendInterpolatedStringHandler | -| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | -| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | -| GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:33 | call to method ToString : String | -| GlobalDataFlowStringBuilder.cs:31:21:31:33 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:32:15:32:19 | access to local variable sink0 | -| GlobalDataFlowStringBuilder.cs:35:9:35:11 | [post] access to local variable sb1 : StringBuilder | GlobalDataFlowStringBuilder.cs:36:21:36:23 | access to local variable sb1 : StringBuilder | -| GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:9:35:11 | [post] access to local variable sb1 : StringBuilder | -| GlobalDataFlowStringBuilder.cs:36:21:36:23 | access to local variable sb1 : StringBuilder | GlobalDataFlowStringBuilder.cs:36:21:36:34 | call to method ToString : String | -| GlobalDataFlowStringBuilder.cs:36:21:36:34 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:37:15:37:19 | access to local variable sink1 | -| GlobalDataFlowStringBuilder.cs:40:9:40:11 | [post] access to local variable sb2 : StringBuilder | GlobalDataFlowStringBuilder.cs:41:21:41:23 | access to local variable sb2 : StringBuilder | -| GlobalDataFlowStringBuilder.cs:40:20:40:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:40:9:40:11 | [post] access to local variable sb2 : StringBuilder | -| GlobalDataFlowStringBuilder.cs:41:21:41:23 | access to local variable sb2 : StringBuilder | GlobalDataFlowStringBuilder.cs:41:21:41:34 | call to method ToString : String | -| GlobalDataFlowStringBuilder.cs:41:21:41:34 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:42:15:42:19 | access to local variable sink2 | -| GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:49:21:49:22 | access to local variable sb : StringBuilder | -| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | -| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | -| GlobalDataFlowStringBuilder.cs:49:21:49:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:49:21:49:33 | call to method ToString : String | -| GlobalDataFlowStringBuilder.cs:49:21:49:33 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:50:15:50:19 | access to local variable sink3 | -| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | -| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | -| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | -| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:11:19:11:19 | access to local variable x | -| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | -| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | -| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | -| Splitting.cs:18:24:18:24 | s : String | Splitting.cs:20:29:20:29 | access to parameter s : String | -| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:20:22:20:30 | call to method Return : String | -| Splitting.cs:21:9:21:11 | value : String | Splitting.cs:21:28:21:32 | access to parameter value : String | -| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:16:26:16:26 | x : String | -| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:21:21:21:33 | call to method Return | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | -| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | -| Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | -| Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | -| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | -| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:34:19:34:19 | access to local variable x | -| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | -| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | -| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | -| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | -| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | -| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s | -| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:12:19:12:24 | access to local variable sink27 | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:21:23:21:28 | access to local variable sink28 | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:30:19:30:24 | access to local variable sink29 | provenance | | +| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | +| Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | | +| Capture.cs:61:36:61:42 | access to parameter tainted : String | Capture.cs:50:50:50:55 | sink39 : String | provenance | | +| Capture.cs:69:13:69:35 | SSA def(sink30) : String | Capture.cs:72:15:72:20 | access to local variable sink30 | provenance | | +| Capture.cs:69:22:69:35 | "taint source" : String | Capture.cs:69:13:69:35 | SSA def(sink30) : String | provenance | | +| Capture.cs:79:17:79:39 | SSA def(sink31) : String | Capture.cs:84:15:84:20 | access to local variable sink31 | provenance | | +| Capture.cs:79:26:79:39 | "taint source" : String | Capture.cs:79:17:79:39 | SSA def(sink31) : String | provenance | | +| Capture.cs:89:13:89:35 | SSA def(sink32) : String | Capture.cs:93:15:93:20 | access to local variable sink32 | provenance | | +| Capture.cs:89:22:89:35 | "taint source" : String | Capture.cs:89:13:89:35 | SSA def(sink32) : String | provenance | | +| Capture.cs:115:17:115:39 | SSA def(sink40) : String | Capture.cs:122:15:122:20 | access to local variable sink40 | provenance | | +| Capture.cs:115:26:115:39 | "taint source" : String | Capture.cs:115:17:115:39 | SSA def(sink40) : String | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:133:15:133:20 | access to local variable sink33 | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:145:15:145:20 | access to local variable sink34 | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:154:15:154:20 | access to local variable sink35 | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:168:25:168:31 | access to parameter tainted : String | provenance | | +| Capture.cs:125:25:125:31 | tainted : String | Capture.cs:194:25:194:31 | access to parameter tainted : String | provenance | | +| Capture.cs:160:22:160:38 | call to local function CaptureThrough4 : String | Capture.cs:161:15:161:20 | access to local variable sink36 | provenance | | +| Capture.cs:168:25:168:31 | access to parameter tainted : String | Capture.cs:169:15:169:20 | access to local variable sink37 | provenance | | +| Capture.cs:188:26:188:26 | s : String | Capture.cs:191:20:191:22 | call to local function M : String | provenance | | +| Capture.cs:194:22:194:32 | call to local function Id : String | Capture.cs:195:15:195:20 | access to local variable sink38 | provenance | | +| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:188:26:188:26 | s : String | provenance | | +| Capture.cs:194:25:194:31 | access to parameter tainted : String | Capture.cs:194:22:194:32 | call to local function Id : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:27:15:27:32 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:36:13:36:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:38:35:38:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | provenance | | +| GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | GlobalDataFlow.cs:45:50:45:59 | access to parameter sinkParam2 | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:45:30:45:39 | sinkParam2 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:46:13:46:30 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:53:20:53:37 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | +| GlobalDataFlow.cs:54:15:54:15 | x : String | GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:54:24:54:24 | access to parameter x : String | GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:54:28:54:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:382:41:382:41 | x : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:55:44:55:61 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:56:28:56:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:57:37:57:37 | x : String | GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:57:46:57:46 | access to parameter x : String | GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:58:35:58:52 | access to property SinkProperty0 : String | GlobalDataFlow.cs:396:52:396:52 | x : String | provenance | | +| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | provenance | | +| GlobalDataFlow.cs:65:22:65:39 | access to property SinkProperty0 : String | GlobalDataFlow.cs:427:9:427:11 | value : String | provenance | | +| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | provenance | | +| GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | provenance | | +| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:71:21:71:46 | call to method Return : String | provenance | | +| GlobalDataFlow.cs:71:28:71:45 | access to property SinkProperty0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:74:15:74:19 | access to local variable sink1 | provenance | | +| GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | provenance | | +| GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | GlobalDataFlow.cs:73:21:73:101 | (...) ... : String | provenance | | +| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:73:29:73:101 | call to method Invoke : String | provenance | | +| GlobalDataFlow.cs:73:94:73:98 | access to local variable sink0 : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | provenance | | +| GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | provenance | | +| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:77:15:77:19 | access to local variable sink2 | provenance | | +| GlobalDataFlow.cs:76:30:76:34 | SSA def(sink2) : String | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | provenance | | +| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | provenance | | +| GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | provenance | | +| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:80:15:80:19 | access to local variable sink3 | provenance | | +| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | provenance | | +| GlobalDataFlow.cs:79:30:79:34 | SSA def(sink3) : String | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | provenance | | +| GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | GlobalDataFlow.cs:81:22:81:93 | call to method First : String | provenance | | +| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:82:15:82:20 | access to local variable sink13 | provenance | | +| GlobalDataFlow.cs:81:22:81:93 | call to method First : String | GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | provenance | | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | provenance | | +| GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:81:59:81:63 | access to local variable sink3 : String | GlobalDataFlow.cs:81:57:81:65 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:83:22:83:95 | call to method First : String | provenance | | +| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:84:15:84:20 | access to local variable sink14 | provenance | | +| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | provenance | | +| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | provenance | | +| GlobalDataFlow.cs:83:22:83:95 | call to method First : String | GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | provenance | | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | provenance | | +| GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:83:59:83:64 | access to local variable sink13 : String | GlobalDataFlow.cs:83:57:83:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First : String | provenance | | +| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | provenance | | +| GlobalDataFlow.cs:85:22:85:136 | call to method First : String | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | provenance | | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First : String | provenance | | +| GlobalDataFlow.cs:87:22:87:136 | call to method First : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | provenance | | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | GlobalDataFlow.cs:90:15:90:20 | access to local variable sink17 | provenance | | +| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | provenance | | +| GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | provenance | | +| GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:92:15:92:20 | access to local variable sink18 | provenance | | +| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | provenance | | +| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | provenance | | +| GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | provenance | | +| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | provenance | | +| GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | GlobalDataFlow.cs:94:36:94:41 | SSA def(sink21) : Int32 | provenance | | +| GlobalDataFlow.cs:94:36:94:41 | SSA def(sink21) : Int32 | GlobalDataFlow.cs:95:15:95:20 | access to local variable sink21 | provenance | | +| GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | GlobalDataFlow.cs:97:35:97:40 | SSA def(sink22) : Boolean | provenance | | +| GlobalDataFlow.cs:97:35:97:40 | SSA def(sink22) : Boolean | GlobalDataFlow.cs:98:15:98:20 | access to local variable sink22 | provenance | | +| GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | GlobalDataFlow.cs:100:82:100:88 | SSA def(sink21b) : Int32 | provenance | | +| GlobalDataFlow.cs:100:82:100:88 | SSA def(sink21b) : Int32 | GlobalDataFlow.cs:101:15:101:21 | access to local variable sink21b | provenance | | +| GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | +| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:140:15:140:19 | access to local variable sink4 | provenance | | +| GlobalDataFlow.cs:139:21:139:34 | delegate call : String | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | provenance | | +| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | provenance | | +| GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | provenance | | +| GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | GlobalDataFlow.cs:148:15:148:19 | access to local variable sink5 | provenance | | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | +| GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | GlobalDataFlow.cs:158:15:158:19 | access to local variable sink6 | provenance | | +| GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | GlobalDataFlow.cs:161:15:161:19 | access to local variable sink7 | provenance | | +| GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | GlobalDataFlow.cs:164:15:164:19 | access to local variable sink8 | provenance | | +| GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | GlobalDataFlow.cs:165:22:165:39 | call to method First : String | provenance | | +| GlobalDataFlow.cs:165:22:165:39 | call to method First : String | GlobalDataFlow.cs:166:15:166:20 | access to local variable sink12 | provenance | | +| GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | GlobalDataFlow.cs:168:15:168:20 | access to local variable sink23 | provenance | | +| GlobalDataFlow.cs:183:35:183:48 | "taint source" : String | GlobalDataFlow.cs:184:21:184:26 | delegate call : String | provenance | | +| GlobalDataFlow.cs:184:21:184:26 | delegate call : String | GlobalDataFlow.cs:185:15:185:19 | access to local variable sink9 | provenance | | +| GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | provenance | | +| GlobalDataFlow.cs:193:22:193:48 | access to property Value : String | GlobalDataFlow.cs:194:15:194:20 | access to local variable sink10 | provenance | | +| GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | GlobalDataFlow.cs:202:15:202:20 | access to local variable sink19 | provenance | | +| GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:38:211:75 | call to method AsQueryable : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | provenance | | +| GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | provenance | | +| GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | provenance | | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:216:22:216:39 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:216:22:216:47 | call to method First : String | provenance | | +| GlobalDataFlow.cs:216:22:216:47 | call to method First : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | provenance | | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | provenance | | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | provenance | | +| GlobalDataFlow.cs:218:22:218:39 | call to method Select : IQueryable [element] : String | GlobalDataFlow.cs:218:22:218:47 | call to method First : String | provenance | | +| GlobalDataFlow.cs:218:22:218:47 | call to method First : String | GlobalDataFlow.cs:219:15:219:20 | access to local variable sink25 | provenance | | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | provenance | | +| GlobalDataFlow.cs:220:22:220:49 | call to method Select : IEnumerable [element] : String | GlobalDataFlow.cs:220:22:220:57 | call to method First : String | provenance | | +| GlobalDataFlow.cs:220:22:220:57 | call to method First : String | GlobalDataFlow.cs:221:15:221:20 | access to local variable sink26 | provenance | | +| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:241:35:241:48 | "taint source" : String | GlobalDataFlow.cs:241:20:241:49 | call to method Run : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:242:22:242:25 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | provenance | | +| GlobalDataFlow.cs:242:22:242:32 | access to property Result : String | GlobalDataFlow.cs:243:15:243:20 | access to local variable sink41 | provenance | | +| GlobalDataFlow.cs:244:22:244:31 | await ... : String | GlobalDataFlow.cs:245:15:245:20 | access to local variable sink42 | provenance | | +| GlobalDataFlow.cs:244:28:244:31 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:244:22:244:31 | await ... : String | provenance | | +| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | provenance | | +| GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | GlobalDataFlow.cs:260:15:260:24 | access to parameter sinkParam0 | provenance | | +| GlobalDataFlow.cs:259:16:259:25 | access to parameter sinkParam0 : String | GlobalDataFlow.cs:257:26:257:35 | sinkParam0 : String | provenance | | +| GlobalDataFlow.cs:263:26:263:35 | sinkParam1 : String | GlobalDataFlow.cs:265:15:265:24 | access to parameter sinkParam1 | provenance | | +| GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | GlobalDataFlow.cs:270:15:270:24 | access to parameter sinkParam3 | provenance | | +| GlobalDataFlow.cs:273:26:273:35 | sinkParam4 : String | GlobalDataFlow.cs:275:15:275:24 | access to parameter sinkParam4 | provenance | | +| GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | GlobalDataFlow.cs:280:15:280:24 | access to parameter sinkParam5 | provenance | | +| GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | GlobalDataFlow.cs:285:15:285:24 | access to parameter sinkParam6 | provenance | | +| GlobalDataFlow.cs:288:26:288:35 | sinkParam7 : String | GlobalDataFlow.cs:290:15:290:24 | access to parameter sinkParam7 | provenance | | +| GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | provenance | | +| GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | provenance | | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc : String | provenance | | +| GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | +| GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:13 | SSA def(y) : String | provenance | | +| GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:13 | SSA def(y) : String | provenance | | +| GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | provenance | | +| GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | provenance | | +| GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | provenance | | +| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | provenance | | +| GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy : Lazy [property Value] : String | provenance | | +| GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | GlobalDataFlow.cs:160:20:160:24 | SSA def(sink7) : String | provenance | | +| GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | GlobalDataFlow.cs:346:9:346:26 | SSA def(x) : String | provenance | | +| GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | GlobalDataFlow.cs:163:20:163:24 | SSA def(sink8) : String | provenance | | +| GlobalDataFlow.cs:351:13:351:26 | "taint source" : String | GlobalDataFlow.cs:351:9:351:26 | SSA def(x) : String | provenance | | +| GlobalDataFlow.cs:357:22:357:35 | "taint source" : String | GlobalDataFlow.cs:165:22:165:31 | call to method OutYield : IEnumerable [element] : String | provenance | | +| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:382:41:382:41 | x : String | GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:54:15:54:15 | x : String | provenance | | +| GlobalDataFlow.cs:384:11:384:11 | access to parameter x : String | GlobalDataFlow.cs:268:26:268:35 | sinkParam3 : String | provenance | | +| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | provenance | | +| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:396:52:396:52 | x : String | GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:57:37:57:37 | x : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:278:26:278:35 | sinkParam5 : String | provenance | | +| GlobalDataFlow.cs:398:11:398:11 | access to parameter x : String | GlobalDataFlow.cs:283:26:283:35 | sinkParam6 : String | provenance | | +| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:404:15:404:20 | access to local variable sink11 | provenance | | +| GlobalDataFlow.cs:401:39:401:45 | tainted : String | GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | provenance | | +| GlobalDataFlow.cs:405:16:405:21 | access to local variable sink11 : String | GlobalDataFlow.cs:167:22:167:43 | call to method TaintedParam : String | provenance | | +| GlobalDataFlow.cs:427:9:427:11 | value : String | GlobalDataFlow.cs:427:41:427:46 | access to local variable sink20 | provenance | | +| GlobalDataFlow.cs:438:22:438:35 | "taint source" : String | GlobalDataFlow.cs:201:22:201:32 | access to property OutProperty : String | provenance | | +| GlobalDataFlow.cs:448:22:448:65 | call to method Join : String | GlobalDataFlow.cs:449:15:449:20 | access to local variable sink44 | provenance | | +| GlobalDataFlow.cs:448:51:448:64 | "taint source" : String | GlobalDataFlow.cs:448:22:448:65 | call to method Join : String | provenance | | +| GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:457:35:457:48 | "taint source" : String | GlobalDataFlow.cs:457:20:457:49 | call to method Run : Task [property Result] : String | provenance | | +| GlobalDataFlow.cs:458:25:458:28 | access to local variable task : Task [property Result] : String | GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:458:25:458:50 | call to method ConfigureAwait : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:459:23:459:31 | access to local variable awaitable : ConfiguredTaskAwaitable [synthetic m_configuredTaskAwaiter, synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:459:23:459:44 | call to method GetAwaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | provenance | | +| GlobalDataFlow.cs:460:22:460:28 | access to local variable awaiter : ConfiguredTaskAwaitable.ConfiguredTaskAwaiter [synthetic m_task_configured_task_awaitable, property Result] : String | GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | provenance | | +| GlobalDataFlow.cs:460:22:460:40 | call to method GetResult : String | GlobalDataFlow.cs:461:15:461:20 | access to local variable sink45 | provenance | | +| GlobalDataFlow.cs:466:53:466:55 | arg : String | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | provenance | | +| GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | | +| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | +| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:22 | access to field field | provenance | | +| GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:22 | access to field field | provenance | | +| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:22 | access to field field | provenance | | +| GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:22 | access to field field | provenance | | +| GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:22 | access to field field | provenance | | +| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | provenance | | +| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:21 | access to field field | provenance | | +| GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:21 | access to field field | provenance | | +| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:21 | access to field field | provenance | | +| GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:21 | access to field field | provenance | | +| GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | provenance | | +| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | provenance | | +| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | provenance | | +| GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | provenance | | +| GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | provenance | | +| GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:556:22:556:22 | SSA def(x) : String | provenance | | +| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | provenance | | +| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | provenance | | +| GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | provenance | | +| GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | provenance | | +| GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:40:20:40:26 | (...) ... : AppendInterpolatedStringHandler | provenance | | +| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | provenance | | +| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:33 | call to method ToString : String | provenance | | +| GlobalDataFlowStringBuilder.cs:31:21:31:33 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:32:15:32:19 | access to local variable sink0 | provenance | | +| GlobalDataFlowStringBuilder.cs:35:9:35:11 | [post] access to local variable sb1 : StringBuilder | GlobalDataFlowStringBuilder.cs:36:21:36:23 | access to local variable sb1 : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:9:35:11 | [post] access to local variable sb1 : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:36:21:36:23 | access to local variable sb1 : StringBuilder | GlobalDataFlowStringBuilder.cs:36:21:36:34 | call to method ToString : String | provenance | | +| GlobalDataFlowStringBuilder.cs:36:21:36:34 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:37:15:37:19 | access to local variable sink1 | provenance | | +| GlobalDataFlowStringBuilder.cs:40:9:40:11 | [post] access to local variable sb2 : StringBuilder | GlobalDataFlowStringBuilder.cs:41:21:41:23 | access to local variable sb2 : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:40:20:40:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:40:9:40:11 | [post] access to local variable sb2 : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:41:21:41:23 | access to local variable sb2 : StringBuilder | GlobalDataFlowStringBuilder.cs:41:21:41:34 | call to method ToString : String | provenance | | +| GlobalDataFlowStringBuilder.cs:41:21:41:34 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:42:15:42:19 | access to local variable sink2 | provenance | | +| GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:49:21:49:22 | access to local variable sb : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | provenance | | +| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder | provenance | | +| GlobalDataFlowStringBuilder.cs:49:21:49:22 | access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:49:21:49:33 | call to method ToString : String | provenance | | +| GlobalDataFlowStringBuilder.cs:49:21:49:33 | call to method ToString : String | GlobalDataFlowStringBuilder.cs:50:15:50:19 | access to local variable sink3 | provenance | | +| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | provenance | | +| Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | provenance | | +| Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x | provenance | | +| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | provenance | | +| Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | Splitting.cs:11:19:11:19 | access to local variable x | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return : String | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return : String | provenance | | +| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | provenance | | +| Splitting.cs:18:24:18:24 | s : String | Splitting.cs:20:29:20:29 | access to parameter s : String | provenance | | +| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:20:22:20:30 | call to method Return : String | provenance | | +| Splitting.cs:21:9:21:11 | value : String | Splitting.cs:21:28:21:32 | access to parameter value : String | provenance | | +| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:16:26:16:26 | x : String | provenance | | +| Splitting.cs:21:28:21:32 | access to parameter value : String | Splitting.cs:21:21:21:33 | call to method Return | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | provenance | | +| Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | provenance | | +| Splitting.cs:30:17:30:23 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | provenance | | +| Splitting.cs:30:17:30:23 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:21:9:21:11 | value : String | provenance | | +| Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): false] access to local variable x | provenance | | +| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | provenance | | +| Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | Splitting.cs:34:19:34:19 | access to local variable x | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:18:24:18:24 | s : String | provenance | | +| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String | provenance | | +| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | provenance | | +| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s | provenance | | +| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s | provenance | | nodes | Capture.cs:7:20:7:26 | tainted : String | semmle.label | tainted : String | | Capture.cs:12:19:12:24 | access to local variable sink27 | semmle.label | access to local variable sink27 | diff --git a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected index f5f0902b3a8e..d55c099ca4f4 100644 --- a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected @@ -1,77 +1,77 @@ testFailures edges -| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | -| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | -| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | -| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | -| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | -| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | -| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | -| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | -| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | -| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | -| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | -| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | -| Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | -| Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | -| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | -| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | -| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | -| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | -| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | -| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | -| Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | -| Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | -| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | -| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | -| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | -| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | -| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | -| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | -| Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | -| Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | -| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | -| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | -| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | -| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | -| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | -| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | -| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | -| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | -| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | -| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | -| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | -| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | -| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | -| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | -| Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | -| Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | -| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | -| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | -| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | -| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | -| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | -| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | -| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | -| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | -| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | -| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | -| Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | -| Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | -| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | -| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | -| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | -| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | -| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | -| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | -| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | -| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | -| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | -| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | -| Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | -| Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | -| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | -| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | +| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | provenance | | +| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | provenance | | +| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | provenance | | +| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | provenance | | +| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | provenance | | +| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | provenance | | +| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | provenance | | +| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | provenance | | +| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | provenance | | +| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | provenance | | +| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | provenance | | +| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | provenance | | +| Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | provenance | | +| Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | provenance | | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | provenance | | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | provenance | | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | provenance | | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | provenance | | +| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | provenance | | +| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | provenance | | +| Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | provenance | | +| Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | provenance | | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | provenance | | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | provenance | | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | provenance | | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | provenance | | +| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | provenance | | +| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | provenance | | +| Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | provenance | | +| Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | provenance | | +| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | provenance | | +| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | provenance | | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | provenance | | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | provenance | | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | provenance | | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | provenance | | +| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | provenance | | +| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | provenance | | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | provenance | | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | provenance | | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | provenance | | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | provenance | | +| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | provenance | | +| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | provenance | | +| Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | provenance | | +| Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | provenance | | +| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | provenance | | +| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | provenance | | +| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | provenance | | +| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | provenance | | +| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | provenance | | +| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | provenance | | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | provenance | | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | provenance | | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | provenance | | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | provenance | | +| Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | provenance | | +| Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | provenance | | +| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | provenance | | +| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | provenance | | +| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | provenance | | +| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | provenance | | +| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | provenance | | +| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | provenance | | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | provenance | | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | provenance | | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | provenance | | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | provenance | | +| Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | provenance | | +| Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | provenance | | +| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | provenance | | +| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | provenance | | nodes | Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | | Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/Capture.cs b/csharp/ql/test/library-tests/dataflow/ssa/Capture.cs index a74d480668d3..2e2c491bfc12 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/Capture.cs +++ b/csharp/ql/test/library-tests/dataflow/ssa/Capture.cs @@ -148,7 +148,7 @@ void M4() void M5() { Use(e); - e = 0; // Should *not* get an SSA definition (`e` is never read) + e = 0; // Should *not* get an SSA definition (`e` is never read), but does since captured variables are conservatively considered live } var f = 12; @@ -165,7 +165,7 @@ void M7() Use(g); }; - var h = 12; // Should *not* get an SSA definition + var h = 12; // Should *not* get an SSA definition, but does since captured variables are conservatively considered live void M8() { h = 0; diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected index 8cbd5e6b1b67..134190ef871b 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected @@ -4,6 +4,7 @@ | DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:18:13:18:18 | SSA def(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:28:13:28:18 | SSA def(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:39:13:39:18 | SSA def(y) | +| DefUse.cs:59:13:59:13 | i | DefUse.cs:3:17:3:19 | SSA phi(i) | DefUse.cs:76:9:76:11 | SSA def(i) | | DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) | | DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:97:13:97:18 | SSA def(x5) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected index 7cd94d64ec24..48aafe94201d 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected @@ -27,14 +27,19 @@ | in | Properties.cs:74:23:74:23 | a | Properties.cs:74:23:74:54 | SSA def(a) | Properties.cs:82:24:82:46 | SSA capture def(a) | Properties.cs:82:9:82:47 | call to method Select | true | | in | Properties.cs:75:23:75:23 | b | Properties.cs:75:23:75:35 | SSA def(b) | Properties.cs:85:24:85:46 | SSA capture def(b) | Properties.cs:85:9:85:47 | call to method Select | true | | out | Capture.cs:6:16:6:16 | i | Capture.cs:13:13:13:17 | SSA def(i) | Capture.cs:38:9:38:11 | SSA call def(i) | Capture.cs:38:9:38:11 | delegate call | false | +| out | Capture.cs:6:16:6:16 | i | Capture.cs:13:13:13:17 | SSA def(i) | Capture.cs:44:9:44:12 | SSA call def(i) | Capture.cs:44:9:44:12 | call to method M | true | | out | Capture.cs:8:13:8:13 | x | Capture.cs:15:13:15:17 | SSA def(x) | Capture.cs:38:9:38:11 | SSA call def(x) | Capture.cs:38:9:38:11 | delegate call | false | | out | Capture.cs:8:13:8:13 | x | Capture.cs:15:13:15:17 | SSA def(x) | Capture.cs:44:9:44:12 | SSA call def(x) | Capture.cs:44:9:44:12 | call to method M | true | | out | Capture.cs:29:13:29:13 | z | Capture.cs:30:28:30:32 | SSA def(z) | Capture.cs:32:9:32:11 | SSA call def(z) | Capture.cs:32:9:32:11 | delegate call | false | +| out | Capture.cs:29:13:29:13 | z | Capture.cs:30:28:30:32 | SSA def(z) | Capture.cs:44:9:44:12 | SSA call def(z) | Capture.cs:44:9:44:12 | call to method M | true | | out | Capture.cs:50:20:50:20 | a | Capture.cs:52:28:52:40 | SSA def(a) | Capture.cs:53:9:53:11 | SSA call def(a) | Capture.cs:53:9:53:11 | delegate call | false | | out | Capture.cs:59:13:59:13 | i | Capture.cs:60:36:60:38 | SSA def(i) | Capture.cs:61:9:61:25 | SSA call def(i) | Capture.cs:61:9:61:25 | call to method Select | true | | out | Capture.cs:75:13:75:13 | i | Capture.cs:76:80:76:80 | SSA def(i) | Capture.cs:77:9:77:25 | SSA call def(i) | Capture.cs:77:9:77:25 | call to method Select | true | +| out | Capture.cs:102:13:102:13 | z | Capture.cs:105:13:105:17 | SSA def(z) | Capture.cs:103:9:107:10 | SSA call def(z) | Capture.cs:103:9:107:10 | call to local function fn | true | +| out | Capture.cs:122:13:122:13 | b | Capture.cs:125:13:125:17 | SSA def(b) | Capture.cs:128:9:128:12 | SSA call def(b) | Capture.cs:128:9:128:12 | call to local function M2 | false | | out | Capture.cs:130:13:130:13 | c | Capture.cs:133:13:133:17 | SSA def(c) | Capture.cs:136:9:136:12 | SSA call def(c) | Capture.cs:136:9:136:12 | call to local function M3 | false | | out | Capture.cs:139:13:139:13 | d | Capture.cs:142:13:142:17 | SSA def(d) | Capture.cs:144:9:144:12 | SSA call def(d) | Capture.cs:144:9:144:12 | call to local function M4 | false | +| out | Capture.cs:154:13:154:13 | f | Capture.cs:158:13:158:17 | SSA def(f) | Capture.cs:160:9:160:12 | SSA call def(f) | Capture.cs:160:9:160:12 | call to local function M6 | false | | out | Capture.cs:168:13:168:13 | h | Capture.cs:174:17:174:21 | SSA def(h) | Capture.cs:176:13:176:16 | SSA call def(h) | Capture.cs:176:13:176:16 | call to local function M9 | false | | out | Capture.cs:229:13:229:13 | i | Capture.cs:235:21:235:25 | SSA def(i) | Capture.cs:236:9:236:12 | SSA call def(i) | Capture.cs:236:9:236:12 | call to local function M3 | false | | out | DefUse.cs:167:23:167:23 | i | DefUse.cs:173:13:173:17 | SSA def(i) | DefUse.cs:181:9:181:11 | SSA call def(i) | DefUse.cs:181:9:181:11 | delegate call | false | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected index ed1b3a00cc10..02d622c006ac 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected @@ -2,6 +2,7 @@ | Capture.cs:6:16:6:16 | i | Capture.cs:10:20:27:9 | SSA capture def(i) | | Capture.cs:6:16:6:16 | i | Capture.cs:13:13:13:17 | SSA def(i) | | Capture.cs:6:16:6:16 | i | Capture.cs:38:9:38:11 | SSA call def(i) | +| Capture.cs:6:16:6:16 | i | Capture.cs:44:9:44:12 | SSA call def(i) | | Capture.cs:8:13:8:13 | x | Capture.cs:8:13:8:17 | SSA def(x) | | Capture.cs:8:13:8:13 | x | Capture.cs:15:13:15:17 | SSA def(x) | | Capture.cs:8:13:8:13 | x | Capture.cs:19:24:23:13 | SSA capture def(x) | @@ -16,6 +17,7 @@ | Capture.cs:29:13:29:13 | z | Capture.cs:30:28:30:32 | SSA def(z) | | Capture.cs:29:13:29:13 | z | Capture.cs:32:9:32:11 | SSA call def(z) | | Capture.cs:29:13:29:13 | z | Capture.cs:37:9:37:13 | SSA def(z) | +| Capture.cs:29:13:29:13 | z | Capture.cs:44:9:44:12 | SSA call def(z) | | Capture.cs:30:16:30:16 | c | Capture.cs:30:16:30:35 | SSA def(c) | | Capture.cs:50:20:50:20 | a | Capture.cs:50:20:50:20 | SSA param(a) | | Capture.cs:50:20:50:20 | a | Capture.cs:52:28:52:40 | SSA def(a) | @@ -50,22 +52,28 @@ | Capture.cs:94:13:94:13 | y | Capture.cs:96:12:100:9 | SSA capture def(y) | | Capture.cs:98:17:98:17 | x | Capture.cs:98:17:98:21 | SSA def(x) | | Capture.cs:102:13:102:13 | z | Capture.cs:102:13:102:18 | SSA def(z) | +| Capture.cs:102:13:102:13 | z | Capture.cs:103:9:107:10 | SSA call def(z) | | Capture.cs:102:13:102:13 | z | Capture.cs:105:13:105:17 | SSA def(z) | | Capture.cs:114:13:114:13 | a | Capture.cs:114:13:114:18 | SSA def(a) | | Capture.cs:114:13:114:13 | a | Capture.cs:115:9:119:9 | SSA capture def(a) | | Capture.cs:117:17:117:17 | x | Capture.cs:117:17:117:21 | SSA def(x) | | Capture.cs:122:13:122:13 | b | Capture.cs:122:13:122:18 | SSA def(b) | | Capture.cs:122:13:122:13 | b | Capture.cs:125:13:125:17 | SSA def(b) | +| Capture.cs:122:13:122:13 | b | Capture.cs:128:9:128:12 | SSA call def(b) | | Capture.cs:130:13:130:13 | c | Capture.cs:130:13:130:18 | SSA def(c) | | Capture.cs:130:13:130:13 | c | Capture.cs:133:13:133:17 | SSA def(c) | | Capture.cs:130:13:130:13 | c | Capture.cs:136:9:136:12 | SSA call def(c) | | Capture.cs:139:13:139:13 | d | Capture.cs:139:13:139:18 | SSA def(d) | | Capture.cs:139:13:139:13 | d | Capture.cs:142:13:142:17 | SSA def(d) | | Capture.cs:139:13:139:13 | d | Capture.cs:144:9:144:12 | SSA call def(d) | +| Capture.cs:147:13:147:13 | e | Capture.cs:147:13:147:18 | SSA def(e) | | Capture.cs:147:13:147:13 | e | Capture.cs:148:9:152:9 | SSA capture def(e) | +| Capture.cs:147:13:147:13 | e | Capture.cs:151:13:151:17 | SSA def(e) | | Capture.cs:154:13:154:13 | f | Capture.cs:154:13:154:18 | SSA def(f) | | Capture.cs:154:13:154:13 | f | Capture.cs:158:13:158:17 | SSA def(f) | +| Capture.cs:154:13:154:13 | f | Capture.cs:160:9:160:12 | SSA call def(f) | | Capture.cs:162:13:162:13 | g | Capture.cs:163:9:166:9 | SSA capture def(g) | +| Capture.cs:168:13:168:13 | h | Capture.cs:168:13:168:18 | SSA def(h) | | Capture.cs:168:13:168:13 | h | Capture.cs:171:13:171:17 | SSA def(h) | | Capture.cs:168:13:168:13 | h | Capture.cs:174:17:174:21 | SSA def(h) | | Capture.cs:168:13:168:13 | h | Capture.cs:176:13:176:16 | SSA call def(h) | @@ -86,6 +94,7 @@ | Capture.cs:229:13:229:13 | i | Capture.cs:235:21:235:25 | SSA def(i) | | Capture.cs:229:13:229:13 | i | Capture.cs:236:9:236:12 | SSA call def(i) | | Capture.cs:242:13:242:13 | i | Capture.cs:242:13:242:17 | SSA def(i) | +| Capture.cs:242:13:242:13 | i | Capture.cs:245:13:245:17 | SSA def(i) | | Capture.cs:242:13:242:13 | i | Capture.cs:254:27:254:27 | SSA def(i) | | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | @@ -94,6 +103,7 @@ | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | | Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | +| Consistency.cs:38:13:38:13 | i | Consistency.cs:38:13:38:13 | SSA def(i) | | Consistency.cs:38:13:38:13 | i | Consistency.cs:39:28:39:32 | SSA def(i) | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | | Consistency.cs:49:30:49:30 | a | Consistency.cs:49:30:49:30 | SSA param(a) | @@ -119,7 +129,9 @@ | DefUse.cs:44:13:44:13 | z | DefUse.cs:50:23:50:23 | SSA def(z) | | DefUse.cs:53:9:53:13 | this.Field | DefUse.cs:53:9:53:17 | SSA def(this.Field) | | DefUse.cs:56:9:56:12 | this.Prop | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | +| DefUse.cs:59:13:59:13 | i | DefUse.cs:3:17:3:19 | SSA phi(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:59:13:59:17 | SSA def(i) | +| DefUse.cs:59:13:59:13 | i | DefUse.cs:60:37:60:41 | SSA def(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:71:9:71:13 | SSA def(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:72:9:72:11 | SSA def(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:75:9:75:13 | SSA def(i) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected index 55ab1190c8ff..4ec9fbf90b08 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected @@ -16,7 +16,9 @@ | Capture.cs:38:9:38:11 | SSA call def(i) | Capture.cs:38:9:38:11 | delegate call | | Capture.cs:38:9:38:11 | SSA call def(x) | Capture.cs:38:9:38:11 | delegate call | | Capture.cs:43:9:43:13 | SSA def(x) | Capture.cs:43:9:43:13 | ... = ... | +| Capture.cs:44:9:44:12 | SSA call def(i) | Capture.cs:44:9:44:12 | call to method M | | Capture.cs:44:9:44:12 | SSA call def(x) | Capture.cs:44:9:44:12 | call to method M | +| Capture.cs:44:9:44:12 | SSA call def(z) | Capture.cs:44:9:44:12 | call to method M | | Capture.cs:50:20:50:20 | SSA param(a) | Capture.cs:50:20:50:20 | a | | Capture.cs:52:16:52:43 | SSA def(b) | Capture.cs:52:16:52:43 | Action b = ... | | Capture.cs:52:28:52:40 | SSA def(a) | Capture.cs:52:28:52:40 | ... = ... | @@ -50,22 +52,28 @@ | Capture.cs:96:12:100:9 | SSA capture def(y) | Capture.cs:96:12:100:9 | (...) => ... | | Capture.cs:98:17:98:21 | SSA def(x) | Capture.cs:98:17:98:21 | Int32 x = ... | | Capture.cs:102:13:102:18 | SSA def(z) | Capture.cs:102:13:102:18 | Int32 z = ... | +| Capture.cs:103:9:107:10 | SSA call def(z) | Capture.cs:103:9:107:10 | call to local function fn | | Capture.cs:105:13:105:17 | SSA def(z) | Capture.cs:105:13:105:17 | ... = ... | | Capture.cs:114:13:114:18 | SSA def(a) | Capture.cs:114:13:114:18 | Int32 a = ... | | Capture.cs:115:9:119:9 | SSA capture def(a) | Capture.cs:115:9:119:9 | M1 | | Capture.cs:117:17:117:21 | SSA def(x) | Capture.cs:117:17:117:21 | Int32 x = ... | | Capture.cs:122:13:122:18 | SSA def(b) | Capture.cs:122:13:122:18 | Int32 b = ... | | Capture.cs:125:13:125:17 | SSA def(b) | Capture.cs:125:13:125:17 | ... = ... | +| Capture.cs:128:9:128:12 | SSA call def(b) | Capture.cs:128:9:128:12 | call to local function M2 | | Capture.cs:130:13:130:18 | SSA def(c) | Capture.cs:130:13:130:18 | Int32 c = ... | | Capture.cs:133:13:133:17 | SSA def(c) | Capture.cs:133:13:133:17 | ... = ... | | Capture.cs:136:9:136:12 | SSA call def(c) | Capture.cs:136:9:136:12 | call to local function M3 | | Capture.cs:139:13:139:18 | SSA def(d) | Capture.cs:139:13:139:18 | Int32 d = ... | | Capture.cs:142:13:142:17 | SSA def(d) | Capture.cs:142:13:142:17 | ... = ... | | Capture.cs:144:9:144:12 | SSA call def(d) | Capture.cs:144:9:144:12 | call to local function M4 | +| Capture.cs:147:13:147:18 | SSA def(e) | Capture.cs:147:13:147:18 | Int32 e = ... | | Capture.cs:148:9:152:9 | SSA capture def(e) | Capture.cs:148:9:152:9 | M5 | +| Capture.cs:151:13:151:17 | SSA def(e) | Capture.cs:151:13:151:17 | ... = ... | | Capture.cs:154:13:154:18 | SSA def(f) | Capture.cs:154:13:154:18 | Int32 f = ... | | Capture.cs:158:13:158:17 | SSA def(f) | Capture.cs:158:13:158:17 | ... = ... | +| Capture.cs:160:9:160:12 | SSA call def(f) | Capture.cs:160:9:160:12 | call to local function M6 | | Capture.cs:163:9:166:9 | SSA capture def(g) | Capture.cs:163:9:166:9 | M7 | +| Capture.cs:168:13:168:18 | SSA def(h) | Capture.cs:168:13:168:18 | Int32 h = ... | | Capture.cs:171:13:171:17 | SSA def(h) | Capture.cs:171:13:171:17 | ... = ... | | Capture.cs:174:17:174:21 | SSA def(h) | Capture.cs:174:17:174:21 | ... = ... | | Capture.cs:176:13:176:16 | SSA call def(h) | Capture.cs:176:13:176:16 | call to local function M9 | @@ -86,6 +94,7 @@ | Capture.cs:235:21:235:25 | SSA def(i) | Capture.cs:235:21:235:25 | ... = ... | | Capture.cs:236:9:236:12 | SSA call def(i) | Capture.cs:236:9:236:12 | call to local function M3 | | Capture.cs:242:13:242:17 | SSA def(i) | Capture.cs:242:13:242:17 | Int32 i = ... | +| Capture.cs:245:13:245:17 | SSA def(i) | Capture.cs:245:13:245:17 | ... = ... | | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | ... = ... | | Capture.cs:254:27:254:27 | SSA def(i) | Capture.cs:254:9:254:28 | call to local function CaptureAndRef | | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | b | @@ -94,6 +103,7 @@ | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:9:25:30 | call to method Out | | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:25:9:25:30 | call to method Out | | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | ... = ... | +| Consistency.cs:38:13:38:13 | SSA def(i) | Consistency.cs:38:13:38:13 | Int32 i | | Consistency.cs:39:28:39:32 | SSA def(i) | Consistency.cs:39:28:39:32 | ... = ... | | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:44:11:44:11 | S s | | Consistency.cs:49:30:49:30 | SSA param(a) | Consistency.cs:49:30:49:30 | a | @@ -117,6 +127,7 @@ | DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:53:9:53:17 | ... = ... | | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:56:9:56:16 | ... = ... | | DefUse.cs:59:13:59:17 | SSA def(i) | DefUse.cs:59:13:59:17 | Int32 i = ... | +| DefUse.cs:60:37:60:41 | SSA def(i) | DefUse.cs:60:37:60:41 | ... = ... | | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:63:9:63:18 | ... = ... | | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:66:9:66:18 | ... = ... | | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:67:19:67:27 | TestClass tc = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected index a969905fadbe..56d86ea53cdb 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected @@ -43,8 +43,11 @@ | Capture.cs:130:13:130:13 | c | Capture.cs:133:13:133:17 | SSA def(c) | Capture.cs:133:13:133:17 | ... = ... | | Capture.cs:139:13:139:13 | d | Capture.cs:139:13:139:18 | SSA def(d) | Capture.cs:139:13:139:18 | Int32 d = ... | | Capture.cs:139:13:139:13 | d | Capture.cs:142:13:142:17 | SSA def(d) | Capture.cs:142:13:142:17 | ... = ... | +| Capture.cs:147:13:147:13 | e | Capture.cs:147:13:147:18 | SSA def(e) | Capture.cs:147:13:147:18 | Int32 e = ... | +| Capture.cs:147:13:147:13 | e | Capture.cs:151:13:151:17 | SSA def(e) | Capture.cs:151:13:151:17 | ... = ... | | Capture.cs:154:13:154:13 | f | Capture.cs:154:13:154:18 | SSA def(f) | Capture.cs:154:13:154:18 | Int32 f = ... | | Capture.cs:154:13:154:13 | f | Capture.cs:158:13:158:17 | SSA def(f) | Capture.cs:158:13:158:17 | ... = ... | +| Capture.cs:168:13:168:13 | h | Capture.cs:168:13:168:18 | SSA def(h) | Capture.cs:168:13:168:18 | Int32 h = ... | | Capture.cs:168:13:168:13 | h | Capture.cs:171:13:171:17 | SSA def(h) | Capture.cs:171:13:171:17 | ... = ... | | Capture.cs:168:13:168:13 | h | Capture.cs:174:17:174:21 | SSA def(h) | Capture.cs:174:17:174:21 | ... = ... | | Capture.cs:182:17:182:17 | i | Capture.cs:182:17:182:21 | SSA def(i) | Capture.cs:182:17:182:21 | Int32 i = ... | @@ -58,6 +61,7 @@ | Capture.cs:229:13:229:13 | i | Capture.cs:232:9:232:13 | SSA def(i) | Capture.cs:232:9:232:13 | ... = ... | | Capture.cs:229:13:229:13 | i | Capture.cs:235:21:235:25 | SSA def(i) | Capture.cs:235:21:235:25 | ... = ... | | Capture.cs:242:13:242:13 | i | Capture.cs:242:13:242:17 | SSA def(i) | Capture.cs:242:13:242:17 | Int32 i = ... | +| Capture.cs:242:13:242:13 | i | Capture.cs:245:13:245:17 | SSA def(i) | Capture.cs:245:13:245:17 | ... = ... | | Capture.cs:242:13:242:13 | i | Capture.cs:254:27:254:27 | SSA def(i) | Capture.cs:254:27:254:27 | access to local variable i | | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | ... = ... | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | b | @@ -65,6 +69,7 @@ | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | [finally: exception(Exception)] SSA def(i) | Consistency.cs:15:17:15:21 | Int32 i = ... | | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:29:25:29 | Consistency c | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | ... = ... | +| Consistency.cs:38:13:38:13 | i | Consistency.cs:38:13:38:13 | SSA def(i) | Consistency.cs:38:13:38:13 | Int32 i | | Consistency.cs:38:13:38:13 | i | Consistency.cs:39:28:39:32 | SSA def(i) | Consistency.cs:39:28:39:32 | ... = ... | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:44:11:44:11 | S s | | Consistency.cs:49:30:49:30 | a | Consistency.cs:49:30:49:30 | SSA param(a) | Consistency.cs:49:30:49:30 | a | @@ -88,6 +93,7 @@ | DefUse.cs:53:9:53:13 | this.Field | DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:53:9:53:17 | ... = ... | | DefUse.cs:56:9:56:12 | this.Prop | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:56:9:56:16 | ... = ... | | DefUse.cs:59:13:59:13 | i | DefUse.cs:59:13:59:17 | SSA def(i) | DefUse.cs:59:13:59:17 | Int32 i = ... | +| DefUse.cs:59:13:59:13 | i | DefUse.cs:60:37:60:41 | SSA def(i) | DefUse.cs:60:37:60:41 | ... = ... | | DefUse.cs:59:13:59:13 | i | DefUse.cs:71:9:71:13 | SSA def(i) | DefUse.cs:71:9:71:13 | ... = ... | | DefUse.cs:59:13:59:13 | i | DefUse.cs:72:9:72:11 | SSA def(i) | DefUse.cs:72:9:72:11 | ...++ | | DefUse.cs:59:13:59:13 | i | DefUse.cs:75:9:75:13 | SSA def(i) | DefUse.cs:75:9:75:13 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitCall.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitCall.expected index d6bf73411012..22a56a7da24d 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitCall.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitCall.expected @@ -1,12 +1,17 @@ | Capture.cs:6:16:6:16 | i | Capture.cs:38:9:38:11 | SSA call def(i) | Capture.cs:13:13:13:17 | ... = ... | +| Capture.cs:6:16:6:16 | i | Capture.cs:44:9:44:12 | SSA call def(i) | Capture.cs:13:13:13:17 | ... = ... | | Capture.cs:8:13:8:13 | x | Capture.cs:38:9:38:11 | SSA call def(x) | Capture.cs:15:13:15:17 | ... = ... | | Capture.cs:8:13:8:13 | x | Capture.cs:44:9:44:12 | SSA call def(x) | Capture.cs:15:13:15:17 | ... = ... | | Capture.cs:29:13:29:13 | z | Capture.cs:32:9:32:11 | SSA call def(z) | Capture.cs:30:28:30:32 | ... = ... | +| Capture.cs:29:13:29:13 | z | Capture.cs:44:9:44:12 | SSA call def(z) | Capture.cs:30:28:30:32 | ... = ... | | Capture.cs:50:20:50:20 | a | Capture.cs:53:9:53:11 | SSA call def(a) | Capture.cs:52:28:52:40 | ... = ... | | Capture.cs:59:13:59:13 | i | Capture.cs:61:9:61:25 | SSA call def(i) | Capture.cs:60:36:60:38 | ...++ | | Capture.cs:75:13:75:13 | i | Capture.cs:77:9:77:25 | SSA call def(i) | Capture.cs:76:80:76:80 | access to local variable i | +| Capture.cs:102:13:102:13 | z | Capture.cs:103:9:107:10 | SSA call def(z) | Capture.cs:105:13:105:17 | ... = ... | +| Capture.cs:122:13:122:13 | b | Capture.cs:128:9:128:12 | SSA call def(b) | Capture.cs:125:13:125:17 | ... = ... | | Capture.cs:130:13:130:13 | c | Capture.cs:136:9:136:12 | SSA call def(c) | Capture.cs:133:13:133:17 | ... = ... | | Capture.cs:139:13:139:13 | d | Capture.cs:144:9:144:12 | SSA call def(d) | Capture.cs:142:13:142:17 | ... = ... | +| Capture.cs:154:13:154:13 | f | Capture.cs:160:9:160:12 | SSA call def(f) | Capture.cs:158:13:158:17 | ... = ... | | Capture.cs:168:13:168:13 | h | Capture.cs:176:13:176:16 | SSA call def(h) | Capture.cs:174:17:174:21 | ... = ... | | Capture.cs:229:13:229:13 | i | Capture.cs:236:9:236:12 | SSA call def(i) | Capture.cs:235:21:235:25 | ... = ... | | DefUse.cs:167:23:167:23 | i | DefUse.cs:181:9:181:11 | SSA call def(i) | DefUse.cs:173:13:173:17 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected index 78e35e1c3818..bf7db2924299 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected @@ -3,6 +3,9 @@ | Capture.cs:6:16:6:16 | i | Capture.cs:13:13:13:17 | SSA def(i) | Capture.cs:13:13:13:17 | SSA def(i) | | Capture.cs:6:16:6:16 | i | Capture.cs:38:9:38:11 | SSA call def(i) | Capture.cs:6:16:6:16 | SSA param(i) | | Capture.cs:6:16:6:16 | i | Capture.cs:38:9:38:11 | SSA call def(i) | Capture.cs:38:9:38:11 | SSA call def(i) | +| Capture.cs:6:16:6:16 | i | Capture.cs:44:9:44:12 | SSA call def(i) | Capture.cs:6:16:6:16 | SSA param(i) | +| Capture.cs:6:16:6:16 | i | Capture.cs:44:9:44:12 | SSA call def(i) | Capture.cs:38:9:38:11 | SSA call def(i) | +| Capture.cs:6:16:6:16 | i | Capture.cs:44:9:44:12 | SSA call def(i) | Capture.cs:44:9:44:12 | SSA call def(i) | | Capture.cs:8:13:8:13 | x | Capture.cs:8:13:8:17 | SSA def(x) | Capture.cs:8:13:8:17 | SSA def(x) | | Capture.cs:8:13:8:13 | x | Capture.cs:15:13:15:17 | SSA def(x) | Capture.cs:15:13:15:17 | SSA def(x) | | Capture.cs:8:13:8:13 | x | Capture.cs:19:24:23:13 | SSA capture def(x) | Capture.cs:19:24:23:13 | SSA capture def(x) | @@ -20,6 +23,8 @@ | Capture.cs:29:13:29:13 | z | Capture.cs:32:9:32:11 | SSA call def(z) | Capture.cs:29:13:29:17 | SSA def(z) | | Capture.cs:29:13:29:13 | z | Capture.cs:32:9:32:11 | SSA call def(z) | Capture.cs:32:9:32:11 | SSA call def(z) | | Capture.cs:29:13:29:13 | z | Capture.cs:37:9:37:13 | SSA def(z) | Capture.cs:37:9:37:13 | SSA def(z) | +| Capture.cs:29:13:29:13 | z | Capture.cs:44:9:44:12 | SSA call def(z) | Capture.cs:37:9:37:13 | SSA def(z) | +| Capture.cs:29:13:29:13 | z | Capture.cs:44:9:44:12 | SSA call def(z) | Capture.cs:44:9:44:12 | SSA call def(z) | | Capture.cs:30:16:30:16 | c | Capture.cs:30:16:30:35 | SSA def(c) | Capture.cs:30:16:30:35 | SSA def(c) | | Capture.cs:50:20:50:20 | a | Capture.cs:50:20:50:20 | SSA param(a) | Capture.cs:50:20:50:20 | SSA param(a) | | Capture.cs:50:20:50:20 | a | Capture.cs:52:28:52:40 | SSA def(a) | Capture.cs:52:28:52:40 | SSA def(a) | @@ -57,12 +62,16 @@ | Capture.cs:94:13:94:13 | y | Capture.cs:96:12:100:9 | SSA capture def(y) | Capture.cs:96:12:100:9 | SSA capture def(y) | | Capture.cs:98:17:98:17 | x | Capture.cs:98:17:98:21 | SSA def(x) | Capture.cs:98:17:98:21 | SSA def(x) | | Capture.cs:102:13:102:13 | z | Capture.cs:102:13:102:18 | SSA def(z) | Capture.cs:102:13:102:18 | SSA def(z) | +| Capture.cs:102:13:102:13 | z | Capture.cs:103:9:107:10 | SSA call def(z) | Capture.cs:102:13:102:18 | SSA def(z) | +| Capture.cs:102:13:102:13 | z | Capture.cs:103:9:107:10 | SSA call def(z) | Capture.cs:103:9:107:10 | SSA call def(z) | | Capture.cs:102:13:102:13 | z | Capture.cs:105:13:105:17 | SSA def(z) | Capture.cs:105:13:105:17 | SSA def(z) | | Capture.cs:114:13:114:13 | a | Capture.cs:114:13:114:18 | SSA def(a) | Capture.cs:114:13:114:18 | SSA def(a) | | Capture.cs:114:13:114:13 | a | Capture.cs:115:9:119:9 | SSA capture def(a) | Capture.cs:115:9:119:9 | SSA capture def(a) | | Capture.cs:117:17:117:17 | x | Capture.cs:117:17:117:21 | SSA def(x) | Capture.cs:117:17:117:21 | SSA def(x) | | Capture.cs:122:13:122:13 | b | Capture.cs:122:13:122:18 | SSA def(b) | Capture.cs:122:13:122:18 | SSA def(b) | | Capture.cs:122:13:122:13 | b | Capture.cs:125:13:125:17 | SSA def(b) | Capture.cs:125:13:125:17 | SSA def(b) | +| Capture.cs:122:13:122:13 | b | Capture.cs:128:9:128:12 | SSA call def(b) | Capture.cs:122:13:122:18 | SSA def(b) | +| Capture.cs:122:13:122:13 | b | Capture.cs:128:9:128:12 | SSA call def(b) | Capture.cs:128:9:128:12 | SSA call def(b) | | Capture.cs:130:13:130:13 | c | Capture.cs:130:13:130:18 | SSA def(c) | Capture.cs:130:13:130:18 | SSA def(c) | | Capture.cs:130:13:130:13 | c | Capture.cs:133:13:133:17 | SSA def(c) | Capture.cs:133:13:133:17 | SSA def(c) | | Capture.cs:130:13:130:13 | c | Capture.cs:136:9:136:12 | SSA call def(c) | Capture.cs:130:13:130:18 | SSA def(c) | @@ -71,10 +80,15 @@ | Capture.cs:139:13:139:13 | d | Capture.cs:142:13:142:17 | SSA def(d) | Capture.cs:142:13:142:17 | SSA def(d) | | Capture.cs:139:13:139:13 | d | Capture.cs:144:9:144:12 | SSA call def(d) | Capture.cs:139:13:139:18 | SSA def(d) | | Capture.cs:139:13:139:13 | d | Capture.cs:144:9:144:12 | SSA call def(d) | Capture.cs:144:9:144:12 | SSA call def(d) | +| Capture.cs:147:13:147:13 | e | Capture.cs:147:13:147:18 | SSA def(e) | Capture.cs:147:13:147:18 | SSA def(e) | | Capture.cs:147:13:147:13 | e | Capture.cs:148:9:152:9 | SSA capture def(e) | Capture.cs:148:9:152:9 | SSA capture def(e) | +| Capture.cs:147:13:147:13 | e | Capture.cs:151:13:151:17 | SSA def(e) | Capture.cs:151:13:151:17 | SSA def(e) | | Capture.cs:154:13:154:13 | f | Capture.cs:154:13:154:18 | SSA def(f) | Capture.cs:154:13:154:18 | SSA def(f) | | Capture.cs:154:13:154:13 | f | Capture.cs:158:13:158:17 | SSA def(f) | Capture.cs:158:13:158:17 | SSA def(f) | +| Capture.cs:154:13:154:13 | f | Capture.cs:160:9:160:12 | SSA call def(f) | Capture.cs:154:13:154:18 | SSA def(f) | +| Capture.cs:154:13:154:13 | f | Capture.cs:160:9:160:12 | SSA call def(f) | Capture.cs:160:9:160:12 | SSA call def(f) | | Capture.cs:162:13:162:13 | g | Capture.cs:163:9:166:9 | SSA capture def(g) | Capture.cs:163:9:166:9 | SSA capture def(g) | +| Capture.cs:168:13:168:13 | h | Capture.cs:168:13:168:18 | SSA def(h) | Capture.cs:168:13:168:18 | SSA def(h) | | Capture.cs:168:13:168:13 | h | Capture.cs:171:13:171:17 | SSA def(h) | Capture.cs:171:13:171:17 | SSA def(h) | | Capture.cs:168:13:168:13 | h | Capture.cs:174:17:174:21 | SSA def(h) | Capture.cs:174:17:174:21 | SSA def(h) | | Capture.cs:168:13:168:13 | h | Capture.cs:176:13:176:16 | SSA call def(h) | Capture.cs:171:13:171:17 | SSA def(h) | @@ -97,6 +111,7 @@ | Capture.cs:229:13:229:13 | i | Capture.cs:236:9:236:12 | SSA call def(i) | Capture.cs:232:9:232:13 | SSA def(i) | | Capture.cs:229:13:229:13 | i | Capture.cs:236:9:236:12 | SSA call def(i) | Capture.cs:236:9:236:12 | SSA call def(i) | | Capture.cs:242:13:242:13 | i | Capture.cs:242:13:242:17 | SSA def(i) | Capture.cs:242:13:242:17 | SSA def(i) | +| Capture.cs:242:13:242:13 | i | Capture.cs:245:13:245:17 | SSA def(i) | Capture.cs:245:13:245:17 | SSA def(i) | | Capture.cs:242:13:242:13 | i | Capture.cs:254:27:254:27 | SSA def(i) | Capture.cs:254:27:254:27 | SSA def(i) | | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | SSA def(j) | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | SSA param(b) | @@ -105,6 +120,7 @@ | Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:29:25:29 | SSA def(c) | | Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | SSA def(c) | +| Consistency.cs:38:13:38:13 | i | Consistency.cs:38:13:38:13 | SSA def(i) | Consistency.cs:38:13:38:13 | SSA def(i) | | Consistency.cs:38:13:38:13 | i | Consistency.cs:39:28:39:32 | SSA def(i) | Consistency.cs:39:28:39:32 | SSA def(i) | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:44:11:44:11 | SSA def(s) | | Consistency.cs:49:30:49:30 | a | Consistency.cs:49:30:49:30 | SSA param(a) | Consistency.cs:49:30:49:30 | SSA param(a) | @@ -133,7 +149,9 @@ | DefUse.cs:44:13:44:13 | z | DefUse.cs:50:23:50:23 | SSA def(z) | DefUse.cs:50:23:50:23 | SSA def(z) | | DefUse.cs:53:9:53:13 | this.Field | DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:53:9:53:17 | SSA def(this.Field) | | DefUse.cs:56:9:56:12 | this.Prop | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | +| DefUse.cs:59:13:59:13 | i | DefUse.cs:3:17:3:19 | SSA phi(i) | DefUse.cs:76:9:76:11 | SSA def(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:59:13:59:17 | SSA def(i) | DefUse.cs:59:13:59:17 | SSA def(i) | +| DefUse.cs:59:13:59:13 | i | DefUse.cs:60:37:60:41 | SSA def(i) | DefUse.cs:60:37:60:41 | SSA def(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:71:9:71:13 | SSA def(i) | DefUse.cs:71:9:71:13 | SSA def(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:72:9:72:11 | SSA def(i) | DefUse.cs:72:9:72:11 | SSA def(i) | | DefUse.cs:59:13:59:13 | i | DefUse.cs:75:9:75:13 | SSA def(i) | DefUse.cs:75:9:75:13 | SSA def(i) | diff --git a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected index edde57342e5a..2000a735bdbd 100644 --- a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected +++ b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected @@ -1,12 +1,12 @@ edges -| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | -| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | -| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | -| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | -| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | -| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | +| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | provenance | | +| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | provenance | | +| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | provenance | | +| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | provenance | | nodes | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | semmle.label | bytes : Byte[] [element] : Object | | Test.cs:15:20:15:61 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected index 38da52c1af5d..85243196a392 100644 --- a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected +++ b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected @@ -1,13 +1,13 @@ edges -| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | -| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | -| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | -| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | -| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | -| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | -| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | +| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | provenance | | +| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | provenance | | +| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | provenance | | +| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | provenance | | +| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | provenance | | nodes | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | semmle.label | bytes : Byte[] [element] : Object | | Test.cs:15:20:15:61 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected index 82868f7fce39..a499529d57d3 100644 --- a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected +++ b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected @@ -1,15 +1,15 @@ edges -| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | -| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | -| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | -| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | -| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | -| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | -| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | -| Test.cs:43:29:43:50 | call to method ReadEnv : String | Test.cs:46:42:46:96 | ... + ... | -| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | +| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | provenance | | +| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | provenance | | +| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | provenance | | +| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | provenance | | +| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | provenance | | +| Test.cs:43:29:43:50 | call to method ReadEnv : String | Test.cs:46:42:46:96 | ... + ... | provenance | | +| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | provenance | | nodes | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | semmle.label | bytes : Byte[] [element] : Object | | Test.cs:15:20:15:61 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected index b4863cc7b123..53b701785113 100644 --- a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected +++ b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected @@ -1,16 +1,16 @@ edges -| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | -| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | -| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | -| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | -| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | -| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | -| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | -| Test.cs:43:29:43:50 | call to method ReadEnv : String | Test.cs:46:42:46:96 | ... + ... | -| Test.cs:53:29:53:52 | call to method GetCustom : String | Test.cs:56:42:56:96 | ... + ... | -| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | +| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | provenance | | +| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | provenance | | +| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | provenance | | +| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | provenance | | +| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | provenance | | +| Test.cs:43:29:43:50 | call to method ReadEnv : String | Test.cs:46:42:46:96 | ... + ... | provenance | | +| Test.cs:53:29:53:52 | call to method GetCustom : String | Test.cs:56:42:56:96 | ... + ... | provenance | | +| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | provenance | | nodes | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | semmle.label | bytes : Byte[] [element] : Object | | Test.cs:15:20:15:61 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected index 69b547c0bddc..184c4722f80b 100644 --- a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected +++ b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected @@ -1,14 +1,14 @@ edges -| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | -| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | -| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | -| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | -| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | -| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | -| Test.cs:43:29:43:50 | call to method ReadEnv : String | Test.cs:46:42:46:96 | ... + ... | -| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | +| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | provenance | | +| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | provenance | | +| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | provenance | | +| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | provenance | | +| Test.cs:43:29:43:50 | call to method ReadEnv : String | Test.cs:46:42:46:96 | ... + ... | provenance | | +| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | provenance | | nodes | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | semmle.label | bytes : Byte[] [element] : Object | | Test.cs:15:20:15:61 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected index f48ee60904b1..72271d088367 100644 --- a/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected +++ b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected @@ -1,14 +1,14 @@ edges -| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | -| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | -| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | -| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | -| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | -| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | -| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | -| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | -| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | +| Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | provenance | | +| Test.cs:15:56:15:60 | access to parameter bytes : Byte[] [element] : Object | Test.cs:15:20:15:61 | call to method GetString : String | provenance | | +| Test.cs:23:42:23:59 | call to method GetStream : NetworkStream | Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | provenance | | +| Test.cs:25:29:25:34 | access to local variable stream : NetworkStream | Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:25:41:25:46 | [post] access to local variable buffer : Byte[] [element] : Object | Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | provenance | | +| Test.cs:28:85:28:105 | call to method BytesToString : String | Test.cs:28:42:28:111 | ... + ... | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | provenance | | +| Test.cs:28:99:28:104 | access to local variable buffer : Byte[] [element] : Object | Test.cs:28:85:28:105 | call to method BytesToString : String | provenance | | +| Test.cs:34:29:34:69 | call to method ExecuteQuery : String | Test.cs:37:42:37:96 | ... + ... | provenance | | +| Test.cs:62:29:62:48 | call to method GetCliArg : String | Test.cs:65:42:65:96 | ... + ... | provenance | | nodes | Test.cs:12:45:12:49 | bytes : Byte[] [element] : Object | semmle.label | bytes : Byte[] [element] : Object | | Test.cs:15:20:15:61 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected b/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected index bbe5e6d22c55..7cbddb9d3d57 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/PrintAst.expected @@ -363,7 +363,7 @@ Tuples.cs: # 95| 1: [Parameter] right # 95| 14: [Property] EqualityContract # 95| 3: [Getter] get_EqualityContract -# 95| 15: [InstanceConstructor] R1 +# 95| 15: [InstanceConstructor,PrimaryConstructor] R1 #-----| 2: (Parameters) # 95| 0: [Parameter] i # 95| -1: [TypeMention] string diff --git a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected index 95c39fd302cc..e93d25ad84ab 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected @@ -1,205 +1,205 @@ testFailures edges -| Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | -| Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | -| Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | -| Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | -| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | -| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | -| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | -| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | -| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | -| Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | -| Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | -| Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | -| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | -| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | -| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | -| Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | -| Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | -| Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | -| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | -| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | -| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | -| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | -| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | -| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | -| Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | -| Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | -| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | -| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | -| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | -| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | -| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | -| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | -| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | -| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | -| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | -| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | -| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | -| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | -| Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | -| Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | -| Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | -| Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | -| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | -| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | -| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | -| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | -| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | -| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | -| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | -| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | -| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | -| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | -| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | -| Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | -| Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | -| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | -| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | -| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | -| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | -| Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | -| Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | -| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | -| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | -| Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | -| Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | -| Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | -| Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | -| Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | -| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | -| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | -| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | -| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | -| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | -| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | -| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | -| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | -| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | -| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | -| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | -| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | -| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | -| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | -| Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | -| Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | -| Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | -| Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | -| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | -| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | -| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | -| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | -| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | -| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | -| Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | -| Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | -| Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | -| Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | -| Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | -| Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | -| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | -| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | -| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | -| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | -| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | -| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | -| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | -| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | -| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | -| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | -| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | -| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | -| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | -| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | -| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | -| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | -| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | -| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | -| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | -| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | -| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | -| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | -| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | -| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | -| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | -| Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | provenance | | +| Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | provenance | | +| Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | provenance | | +| Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | provenance | | +| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | provenance | | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | provenance | | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | provenance | | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | provenance | | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | provenance | | +| Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | provenance | | +| Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | provenance | | +| Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | provenance | | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | provenance | | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | provenance | | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | provenance | | +| Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | provenance | | +| Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | provenance | | +| Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | provenance | | +| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | provenance | | +| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | provenance | | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | provenance | | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | provenance | | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | provenance | | +| Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | provenance | | +| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | provenance | | +| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | provenance | | +| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | provenance | | +| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | provenance | | +| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | provenance | | +| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | provenance | | +| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | provenance | | +| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | provenance | | +| Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | provenance | | +| Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | provenance | | +| Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | provenance | | +| Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | provenance | | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | provenance | | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | provenance | | +| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | provenance | | +| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | provenance | | +| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | provenance | | +| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | provenance | | +| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | provenance | | +| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | provenance | | +| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | provenance | | +| Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | provenance | | +| Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | provenance | | +| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | provenance | | +| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | provenance | | +| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | provenance | | +| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | provenance | | +| Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | provenance | | +| Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | provenance | | +| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | provenance | | +| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | provenance | | +| Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | provenance | | +| Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | provenance | | +| Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | provenance | | +| Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | provenance | | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | provenance | | +| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | provenance | | +| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | provenance | | +| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | provenance | | +| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | provenance | | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | provenance | | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | provenance | | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | provenance | | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | provenance | | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | provenance | | +| Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | provenance | | +| Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | provenance | | +| Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | provenance | | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | provenance | | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | provenance | | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | provenance | | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | provenance | | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | provenance | | +| Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | provenance | | +| Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | provenance | | +| Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | provenance | | +| Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | provenance | | +| Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | provenance | | +| Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | provenance | | +| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | provenance | | +| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | provenance | | +| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | provenance | | +| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | provenance | | +| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | provenance | | +| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | provenance | | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | provenance | | +| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | provenance | | +| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | provenance | | +| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | provenance | | +| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | provenance | | +| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | provenance | | +| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | provenance | | +| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | provenance | | +| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | provenance | | +| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | provenance | | +| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | provenance | | +| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | provenance | | +| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | provenance | | +| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | provenance | | +| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | provenance | | +| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | provenance | | +| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | provenance | | +| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | provenance | | +| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | +| Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | provenance | | nodes | Tuples.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected b/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected index 51286b90578c..cb7792957a80 100644 --- a/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected +++ b/csharp/ql/test/library-tests/dataflow/typeflow-dispatch/TypeFlowDispatch.expected @@ -1,59 +1,59 @@ testFailures edges -| TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | -| TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | -| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | -| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | -| TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | -| TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | -| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | -| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | -| TypeFlowDispatch.cs:23:20:23:20 | x : String | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | -| TypeFlowDispatch.cs:23:20:23:20 | x : String | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | -| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | -| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | -| TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | -| TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | -| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | -| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | -| TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | -| TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | -| TypeFlowDispatch.cs:36:42:36:52 | call to method Source : String | TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | -| TypeFlowDispatch.cs:36:42:36:52 | call to method Source : String | TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | -| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | -| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | -| TypeFlowDispatch.cs:39:34:39:34 | x : String | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | -| TypeFlowDispatch.cs:39:34:39:34 | x : String | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | -| TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | -| TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | -| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | -| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | -| TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | -| TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | -| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | -| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | -| TypeFlowDispatch.cs:52:32:52:32 | t : String | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | -| TypeFlowDispatch.cs:52:32:52:32 | t : String | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | -| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | -| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | -| TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | -| TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | -| TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | -| TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | -| TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | -| TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | -| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | -| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | -| TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | -| TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | -| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | -| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | -| TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | -| TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | -| TypeFlowDispatch.cs:74:42:74:52 | call to method Source : String | TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | -| TypeFlowDispatch.cs:74:42:74:52 | call to method Source : String | TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | -| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | -| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | +| TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:11:42:11:42 | x : String | TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | provenance | | +| TypeFlowDispatch.cs:13:11:13:11 | access to parameter x : String | TypeFlowDispatch.cs:23:20:23:20 | x : String | provenance | | +| TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:16:46:16:46 | x : String | TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | provenance | | +| TypeFlowDispatch.cs:18:19:18:19 | access to parameter x : String | TypeFlowDispatch.cs:11:42:11:42 | x : String | provenance | | +| TypeFlowDispatch.cs:23:20:23:20 | x : String | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | provenance | | +| TypeFlowDispatch.cs:23:20:23:20 | x : String | TypeFlowDispatch.cs:23:32:23:32 | access to parameter x | provenance | | +| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | provenance | | +| TypeFlowDispatch.cs:23:39:23:49 | call to method Source : String | TypeFlowDispatch.cs:16:46:16:46 | x : String | provenance | | +| TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | provenance | | +| TypeFlowDispatch.cs:31:9:31:9 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:39:34:39:34 | x : String | provenance | | +| TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | provenance | | +| TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | provenance | | +| TypeFlowDispatch.cs:36:42:36:52 | call to method Source : String | TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | provenance | | +| TypeFlowDispatch.cs:36:42:36:52 | call to method Source : String | TypeFlowDispatch.cs:36:23:36:54 | object creation of type List : List [element] : String | provenance | | +| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:39:25:39:31 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:29:37:29:37 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:39:34:39:34 | x : String | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | provenance | | +| TypeFlowDispatch.cs:39:34:39:34 | x : String | TypeFlowDispatch.cs:39:46:39:46 | access to parameter x | provenance | | +| TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:42:42:42:42 | x : String | TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:44:11:44:11 | access to parameter x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:47:46:47:46 | x : String | TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | provenance | | +| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | provenance | | +| TypeFlowDispatch.cs:49:19:49:19 | access to parameter x : String | TypeFlowDispatch.cs:42:42:42:42 | x : String | provenance | | +| TypeFlowDispatch.cs:52:32:52:32 | t : String | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | provenance | | +| TypeFlowDispatch.cs:52:32:52:32 | t : String | TypeFlowDispatch.cs:52:43:52:43 | access to parameter t | provenance | | +| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | provenance | | +| TypeFlowDispatch.cs:57:38:57:48 | call to method Source : String | TypeFlowDispatch.cs:47:46:47:46 | x : String | provenance | | +| TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | provenance | | +| TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | provenance | | +| TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | provenance | | +| TypeFlowDispatch.cs:63:27:63:27 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:63:22:63:22 | SSA def(x) : String | provenance | | +| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:64:15:64:15 | access to local variable x : String | TypeFlowDispatch.cs:52:32:52:32 | t : String | provenance | | +| TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:69:17:69:17 | access to parameter l : List [element] : String | TypeFlowDispatch.cs:61:29:61:29 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | provenance | | +| TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | provenance | | +| TypeFlowDispatch.cs:74:42:74:52 | call to method Source : String | TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | provenance | | +| TypeFlowDispatch.cs:74:42:74:52 | call to method Source : String | TypeFlowDispatch.cs:74:23:74:54 | object creation of type List : List [element] : String | provenance | | +| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | provenance | | +| TypeFlowDispatch.cs:77:21:77:27 | access to local variable tainted : List [element] : String | TypeFlowDispatch.cs:67:33:67:33 | l : List [element] : String | provenance | | nodes | TypeFlowDispatch.cs:11:42:11:42 | x : String | semmle.label | x : String | | TypeFlowDispatch.cs:11:42:11:42 | x : String | semmle.label | x : String | diff --git a/csharp/ql/test/library-tests/dataflow/types/Types.expected b/csharp/ql/test/library-tests/dataflow/types/Types.expected index 76628874c488..1c35152bc261 100644 --- a/csharp/ql/test/library-tests/dataflow/types/Types.expected +++ b/csharp/ql/test/library-tests/dataflow/types/Types.expected @@ -1,63 +1,63 @@ testFailures edges -| Types.cs:7:21:7:25 | this : D | Types.cs:7:32:7:35 | this access : D | -| Types.cs:7:32:7:35 | this access : D | Types.cs:16:30:16:30 | this : D | -| Types.cs:16:30:16:30 | this : D | Types.cs:16:42:16:45 | this access | -| Types.cs:23:12:23:18 | object creation of type C : C | Types.cs:47:22:47:22 | a : C | -| Types.cs:25:12:25:18 | object creation of type C : C | Types.cs:63:22:63:22 | a : C | -| Types.cs:26:12:26:18 | object creation of type C : C | Types.cs:65:25:65:25 | x : C | -| Types.cs:27:12:27:18 | object creation of type C : C | Types.cs:67:25:67:25 | x : C | -| Types.cs:28:12:28:18 | object creation of type C : C | Types.cs:69:25:69:25 | x : C | -| Types.cs:30:12:30:18 | object creation of type C : C | Types.cs:77:22:77:22 | a : C | -| Types.cs:32:9:32:15 | object creation of type D : D | Types.cs:16:30:16:30 | this : D | -| Types.cs:33:9:33:15 | object creation of type D : D | Types.cs:7:21:7:25 | this : D | -| Types.cs:35:12:35:18 | object creation of type D : D | Types.cs:53:22:53:22 | a : D | -| Types.cs:37:12:37:18 | object creation of type D : D | Types.cs:65:25:65:25 | x : D | -| Types.cs:38:12:38:18 | object creation of type D : D | Types.cs:67:25:67:25 | x : D | -| Types.cs:39:12:39:18 | object creation of type D : D | Types.cs:69:25:69:25 | x : D | -| Types.cs:40:12:40:18 | object creation of type D : D | Types.cs:71:25:71:25 | x : D | -| Types.cs:43:20:43:23 | null : null | Types.cs:44:14:44:14 | access to local variable o | -| Types.cs:47:22:47:22 | a : C | Types.cs:49:18:49:20 | SSA def(c) : C | -| Types.cs:49:18:49:20 | SSA def(c) : C | Types.cs:50:18:50:18 | access to local variable c | -| Types.cs:53:22:53:22 | a : D | Types.cs:57:18:57:20 | SSA def(d) : D | -| Types.cs:57:18:57:20 | SSA def(d) : D | Types.cs:58:22:58:22 | access to local variable d | -| Types.cs:63:22:63:22 | a : C | Types.cs:63:33:63:36 | (...) ... | -| Types.cs:65:25:65:25 | x : C | Types.cs:65:36:65:36 | access to parameter x | -| Types.cs:65:25:65:25 | x : D | Types.cs:65:36:65:36 | access to parameter x | -| Types.cs:67:25:67:25 | x : C | Types.cs:67:48:67:48 | access to parameter x | -| Types.cs:67:25:67:25 | x : D | Types.cs:67:48:67:48 | access to parameter x | -| Types.cs:69:25:69:25 | x : C | Types.cs:69:52:69:52 | access to parameter x | -| Types.cs:69:25:69:25 | x : D | Types.cs:69:52:69:52 | access to parameter x | -| Types.cs:71:25:71:25 | x : D | Types.cs:73:21:73:21 | (...) ... : D | -| Types.cs:73:21:73:21 | (...) ... : D | Types.cs:74:9:74:9 | access to local variable d : D | -| Types.cs:74:9:74:9 | access to local variable d : D | Types.cs:16:30:16:30 | this : D | -| Types.cs:77:22:77:22 | a : C | Types.cs:79:18:79:25 | SSA def(b) : C | -| Types.cs:79:18:79:25 | SSA def(b) : C | Types.cs:80:18:80:18 | access to local variable b | -| Types.cs:90:22:90:22 | e : Types+E.E2 | Types.cs:92:26:92:26 | access to parameter e : Types+E.E2 | -| Types.cs:92:13:92:16 | [post] this access : Types+E [field Field] : Types+E.E2 | Types.cs:93:13:93:16 | this access : Types+E [field Field] : Types+E.E2 | -| Types.cs:92:26:92:26 | access to parameter e : Types+E.E2 | Types.cs:92:13:92:16 | [post] this access : Types+E [field Field] : Types+E.E2 | -| Types.cs:93:13:93:16 | this access : Types+E [field Field] : Types+E.E2 | Types.cs:113:34:113:34 | this : Types+E [field Field] : Types+E.E2 | -| Types.cs:110:25:110:32 | object creation of type E2 : Types+E.E2 | Types.cs:90:22:90:22 | e : Types+E.E2 | -| Types.cs:113:34:113:34 | this : Types+E [field Field] : Types+E.E2 | Types.cs:115:22:115:25 | this access : Types+E [field Field] : Types+E.E2 | -| Types.cs:115:22:115:25 | this access : Types+E [field Field] : Types+E.E2 | Types.cs:115:22:115:31 | access to field Field | -| Types.cs:120:25:120:31 | object creation of type A : A | Types.cs:122:30:122:30 | access to local variable a : A | -| Types.cs:121:26:121:33 | object creation of type E2 : Types+E.E2 | Types.cs:123:30:123:31 | access to local variable e2 : Types+E.E2 | -| Types.cs:122:30:122:30 | access to local variable a : A | Types.cs:122:22:122:31 | call to method Through | -| Types.cs:122:30:122:30 | access to local variable a : A | Types.cs:130:34:130:34 | x : A | -| Types.cs:123:30:123:31 | access to local variable e2 : Types+E.E2 | Types.cs:123:22:123:32 | call to method Through | -| Types.cs:123:30:123:31 | access to local variable e2 : Types+E.E2 | Types.cs:130:34:130:34 | x : Types+E.E2 | -| Types.cs:130:34:130:34 | x : A | Types.cs:130:40:130:40 | access to parameter x : A | -| Types.cs:130:34:130:34 | x : Types+E.E2 | Types.cs:130:40:130:40 | access to parameter x : Types+E.E2 | -| Types.cs:138:21:138:25 | this : FieldC [field Field] : Object | Types.cs:138:32:138:35 | this access : FieldC [field Field] : Object | -| Types.cs:138:32:138:35 | this access : FieldC [field Field] : Object | Types.cs:153:30:153:30 | this : FieldC [field Field] : Object | -| Types.cs:144:13:144:13 | [post] access to parameter c : FieldC [field Field] : Object | Types.cs:145:13:145:13 | access to parameter c : FieldC [field Field] : Object | -| Types.cs:144:23:144:34 | object creation of type Object : Object | Types.cs:144:13:144:13 | [post] access to parameter c : FieldC [field Field] : Object | -| Types.cs:145:13:145:13 | access to parameter c : FieldC [field Field] : Object | Types.cs:138:21:138:25 | this : FieldC [field Field] : Object | -| Types.cs:153:30:153:30 | this : FieldC [field Field] : Object | Types.cs:153:42:153:45 | this access : FieldC [field Field] : Object | -| Types.cs:153:42:153:45 | this access : FieldC [field Field] : Object | Types.cs:153:42:153:51 | access to field Field | -| Types.cs:162:34:162:34 | this : Types+F+F1 | Types.cs:162:46:162:49 | this access | -| Types.cs:167:22:167:34 | object creation of type F1 : Types+F+F1 | Types.cs:173:13:173:19 | call to method GetF1 : Types+F+F1 | -| Types.cs:173:13:173:19 | call to method GetF1 : Types+F+F1 | Types.cs:162:34:162:34 | this : Types+F+F1 | +| Types.cs:7:21:7:25 | this : D | Types.cs:7:32:7:35 | this access : D | provenance | | +| Types.cs:7:32:7:35 | this access : D | Types.cs:16:30:16:30 | this : D | provenance | | +| Types.cs:16:30:16:30 | this : D | Types.cs:16:42:16:45 | this access | provenance | | +| Types.cs:23:12:23:18 | object creation of type C : C | Types.cs:47:22:47:22 | a : C | provenance | | +| Types.cs:25:12:25:18 | object creation of type C : C | Types.cs:63:22:63:22 | a : C | provenance | | +| Types.cs:26:12:26:18 | object creation of type C : C | Types.cs:65:25:65:25 | x : C | provenance | | +| Types.cs:27:12:27:18 | object creation of type C : C | Types.cs:67:25:67:25 | x : C | provenance | | +| Types.cs:28:12:28:18 | object creation of type C : C | Types.cs:69:25:69:25 | x : C | provenance | | +| Types.cs:30:12:30:18 | object creation of type C : C | Types.cs:77:22:77:22 | a : C | provenance | | +| Types.cs:32:9:32:15 | object creation of type D : D | Types.cs:16:30:16:30 | this : D | provenance | | +| Types.cs:33:9:33:15 | object creation of type D : D | Types.cs:7:21:7:25 | this : D | provenance | | +| Types.cs:35:12:35:18 | object creation of type D : D | Types.cs:53:22:53:22 | a : D | provenance | | +| Types.cs:37:12:37:18 | object creation of type D : D | Types.cs:65:25:65:25 | x : D | provenance | | +| Types.cs:38:12:38:18 | object creation of type D : D | Types.cs:67:25:67:25 | x : D | provenance | | +| Types.cs:39:12:39:18 | object creation of type D : D | Types.cs:69:25:69:25 | x : D | provenance | | +| Types.cs:40:12:40:18 | object creation of type D : D | Types.cs:71:25:71:25 | x : D | provenance | | +| Types.cs:43:20:43:23 | null : null | Types.cs:44:14:44:14 | access to local variable o | provenance | | +| Types.cs:47:22:47:22 | a : C | Types.cs:49:18:49:20 | SSA def(c) : C | provenance | | +| Types.cs:49:18:49:20 | SSA def(c) : C | Types.cs:50:18:50:18 | access to local variable c | provenance | | +| Types.cs:53:22:53:22 | a : D | Types.cs:57:18:57:20 | SSA def(d) : D | provenance | | +| Types.cs:57:18:57:20 | SSA def(d) : D | Types.cs:58:22:58:22 | access to local variable d | provenance | | +| Types.cs:63:22:63:22 | a : C | Types.cs:63:33:63:36 | (...) ... | provenance | | +| Types.cs:65:25:65:25 | x : C | Types.cs:65:36:65:36 | access to parameter x | provenance | | +| Types.cs:65:25:65:25 | x : D | Types.cs:65:36:65:36 | access to parameter x | provenance | | +| Types.cs:67:25:67:25 | x : C | Types.cs:67:48:67:48 | access to parameter x | provenance | | +| Types.cs:67:25:67:25 | x : D | Types.cs:67:48:67:48 | access to parameter x | provenance | | +| Types.cs:69:25:69:25 | x : C | Types.cs:69:52:69:52 | access to parameter x | provenance | | +| Types.cs:69:25:69:25 | x : D | Types.cs:69:52:69:52 | access to parameter x | provenance | | +| Types.cs:71:25:71:25 | x : D | Types.cs:73:21:73:21 | (...) ... : D | provenance | | +| Types.cs:73:21:73:21 | (...) ... : D | Types.cs:74:9:74:9 | access to local variable d : D | provenance | | +| Types.cs:74:9:74:9 | access to local variable d : D | Types.cs:16:30:16:30 | this : D | provenance | | +| Types.cs:77:22:77:22 | a : C | Types.cs:79:18:79:25 | SSA def(b) : C | provenance | | +| Types.cs:79:18:79:25 | SSA def(b) : C | Types.cs:80:18:80:18 | access to local variable b | provenance | | +| Types.cs:90:22:90:22 | e : Types+E.E2 | Types.cs:92:26:92:26 | access to parameter e : Types+E.E2 | provenance | | +| Types.cs:92:13:92:16 | [post] this access : Types+E [field Field] : Types+E.E2 | Types.cs:93:13:93:16 | this access : Types+E [field Field] : Types+E.E2 | provenance | | +| Types.cs:92:26:92:26 | access to parameter e : Types+E.E2 | Types.cs:92:13:92:16 | [post] this access : Types+E [field Field] : Types+E.E2 | provenance | | +| Types.cs:93:13:93:16 | this access : Types+E [field Field] : Types+E.E2 | Types.cs:113:34:113:34 | this : Types+E [field Field] : Types+E.E2 | provenance | | +| Types.cs:110:25:110:32 | object creation of type E2 : Types+E.E2 | Types.cs:90:22:90:22 | e : Types+E.E2 | provenance | | +| Types.cs:113:34:113:34 | this : Types+E [field Field] : Types+E.E2 | Types.cs:115:22:115:25 | this access : Types+E [field Field] : Types+E.E2 | provenance | | +| Types.cs:115:22:115:25 | this access : Types+E [field Field] : Types+E.E2 | Types.cs:115:22:115:31 | access to field Field | provenance | | +| Types.cs:120:25:120:31 | object creation of type A : A | Types.cs:122:30:122:30 | access to local variable a : A | provenance | | +| Types.cs:121:26:121:33 | object creation of type E2 : Types+E.E2 | Types.cs:123:30:123:31 | access to local variable e2 : Types+E.E2 | provenance | | +| Types.cs:122:30:122:30 | access to local variable a : A | Types.cs:122:22:122:31 | call to method Through | provenance | | +| Types.cs:122:30:122:30 | access to local variable a : A | Types.cs:130:34:130:34 | x : A | provenance | | +| Types.cs:123:30:123:31 | access to local variable e2 : Types+E.E2 | Types.cs:123:22:123:32 | call to method Through | provenance | | +| Types.cs:123:30:123:31 | access to local variable e2 : Types+E.E2 | Types.cs:130:34:130:34 | x : Types+E.E2 | provenance | | +| Types.cs:130:34:130:34 | x : A | Types.cs:130:40:130:40 | access to parameter x : A | provenance | | +| Types.cs:130:34:130:34 | x : Types+E.E2 | Types.cs:130:40:130:40 | access to parameter x : Types+E.E2 | provenance | | +| Types.cs:138:21:138:25 | this : FieldC [field Field] : Object | Types.cs:138:32:138:35 | this access : FieldC [field Field] : Object | provenance | | +| Types.cs:138:32:138:35 | this access : FieldC [field Field] : Object | Types.cs:153:30:153:30 | this : FieldC [field Field] : Object | provenance | | +| Types.cs:144:13:144:13 | [post] access to parameter c : FieldC [field Field] : Object | Types.cs:145:13:145:13 | access to parameter c : FieldC [field Field] : Object | provenance | | +| Types.cs:144:23:144:34 | object creation of type Object : Object | Types.cs:144:13:144:13 | [post] access to parameter c : FieldC [field Field] : Object | provenance | | +| Types.cs:145:13:145:13 | access to parameter c : FieldC [field Field] : Object | Types.cs:138:21:138:25 | this : FieldC [field Field] : Object | provenance | | +| Types.cs:153:30:153:30 | this : FieldC [field Field] : Object | Types.cs:153:42:153:45 | this access : FieldC [field Field] : Object | provenance | | +| Types.cs:153:42:153:45 | this access : FieldC [field Field] : Object | Types.cs:153:42:153:51 | access to field Field | provenance | | +| Types.cs:162:34:162:34 | this : Types+F+F1 | Types.cs:162:46:162:49 | this access | provenance | | +| Types.cs:167:22:167:34 | object creation of type F1 : Types+F+F1 | Types.cs:173:13:173:19 | call to method GetF1 : Types+F+F1 | provenance | | +| Types.cs:173:13:173:19 | call to method GetF1 : Types+F+F1 | Types.cs:162:34:162:34 | this : Types+F+F1 | provenance | | nodes | Types.cs:7:21:7:25 | this : D | semmle.label | this : D | | Types.cs:7:32:7:35 | this access : D | semmle.label | this access : D | diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected index a9d4895fb469..b4b4cf6f1297 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected @@ -1,178 +1,178 @@ edges -| EntityFramework.cs:59:13:62:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:66:29:66:30 | access to local variable p1 : Person [property Name] : String | -| EntityFramework.cs:61:24:61:32 | "tainted" : String | EntityFramework.cs:59:13:62:13 | { ..., ... } : Person [property Name] : String | -| EntityFramework.cs:66:13:66:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:68:13:68:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFramework.cs:66:13:66:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:66:13:66:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFramework.cs:66:29:66:30 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:66:13:66:23 | [post] access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:68:13:68:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:81:13:84:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:88:29:88:30 | access to local variable p1 : Person [property Name] : String | -| EntityFramework.cs:83:24:83:32 | "tainted" : String | EntityFramework.cs:81:13:84:13 | { ..., ... } : Person [property Name] : String | -| EntityFramework.cs:88:13:88:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:90:19:90:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFramework.cs:88:13:88:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:88:13:88:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFramework.cs:88:29:88:30 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:88:13:88:23 | [post] access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:90:19:90:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:103:13:106:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:109:27:109:28 | access to local variable p1 : Person [property Name] : String | -| EntityFramework.cs:105:24:105:32 | "tainted" : String | EntityFramework.cs:103:13:106:13 | { ..., ... } : Person [property Name] : String | -| EntityFramework.cs:109:27:109:28 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:193:35:193:35 | p : Person [property Name] : String | -| EntityFramework.cs:122:13:125:13 | { ..., ... } : Person [property Title] : String | EntityFramework.cs:129:18:129:19 | access to local variable p1 : Person [property Title] : String | -| EntityFramework.cs:124:25:124:33 | "tainted" : String | EntityFramework.cs:122:13:125:13 | { ..., ... } : Person [property Title] : String | -| EntityFramework.cs:129:18:129:19 | access to local variable p1 : Person [property Title] : String | EntityFramework.cs:129:18:129:25 | access to property Title | -| EntityFramework.cs:141:13:148:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | EntityFramework.cs:149:29:149:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | -| EntityFramework.cs:142:29:147:17 | array creation of type Address[] : null [element, property Street] : String | EntityFramework.cs:141:13:148:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | -| EntityFramework.cs:142:35:147:17 | { ..., ... } : null [element, property Street] : String | EntityFramework.cs:142:29:147:17 | array creation of type Address[] : null [element, property Street] : String | -| EntityFramework.cs:143:21:146:21 | object creation of type Address : Address [property Street] : String | EntityFramework.cs:142:35:147:17 | { ..., ... } : null [element, property Street] : String | -| EntityFramework.cs:143:33:146:21 | { ..., ... } : Address [property Street] : String | EntityFramework.cs:143:21:146:21 | object creation of type Address : Address [property Street] : String | -| EntityFramework.cs:145:34:145:42 | "tainted" : String | EntityFramework.cs:143:33:146:21 | { ..., ... } : Address [property Street] : String | -| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:150:13:150:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:154:13:154:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFramework.cs:149:13:149:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFramework.cs:149:29:149:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | EntityFramework.cs:149:13:149:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:150:13:150:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:150:13:150:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:154:13:154:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:154:13:154:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:157:13:160:13 | { ..., ... } : Address [property Street] : String | EntityFramework.cs:161:31:161:32 | access to local variable a1 : Address [property Street] : String | -| EntityFramework.cs:159:26:159:34 | "tainted" : String | EntityFramework.cs:157:13:160:13 | { ..., ... } : Address [property Street] : String | -| EntityFramework.cs:161:13:161:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | -| EntityFramework.cs:161:13:161:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | -| EntityFramework.cs:161:13:161:25 | [post] access to property Addresses : DbSet [element, property Street] : String | EntityFramework.cs:161:13:161:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | -| EntityFramework.cs:161:31:161:32 | access to local variable a1 : Address [property Street] : String | EntityFramework.cs:161:13:161:25 | [post] access to property Addresses : DbSet [element, property Street] : String | -| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:173:13:176:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:182:71:182:72 | access to local variable p1 : Person [property Name] : String | -| EntityFramework.cs:175:24:175:32 | "tainted" : String | EntityFramework.cs:173:13:176:13 | { ..., ... } : Person [property Name] : String | -| EntityFramework.cs:178:13:181:13 | { ..., ... } : Address [property Street] : String | EntityFramework.cs:182:85:182:86 | access to local variable a1 : Address [property Street] : String | -| EntityFramework.cs:180:26:180:34 | "tainted" : String | EntityFramework.cs:178:13:181:13 | { ..., ... } : Address [property Street] : String | -| EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | -| EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | -| EntityFramework.cs:182:71:182:72 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | -| EntityFramework.cs:182:85:182:86 | access to local variable a1 : Address [property Street] : String | EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | -| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | -| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | -| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | -| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | -| EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | -| EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | -| EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | -| EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | -| EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:193:35:193:35 | p : Person [property Name] : String | EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | -| EntityFramework.cs:196:13:196:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:196:13:196:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | -| EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | EntityFramework.cs:204:18:204:41 | access to property Name | -| EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFramework.cs:212:18:212:38 | call to method First
: Address [property Street] : String | -| EntityFramework.cs:212:18:212:38 | call to method First
: Address [property Street] : String | EntityFramework.cs:212:18:212:45 | access to property Street | -| EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | -| EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | -| EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFramework.cs:219:18:219:54 | call to method First
: Address [property Street] : String | -| EntityFramework.cs:219:18:219:54 | call to method First
: Address [property Street] : String | EntityFramework.cs:219:18:219:61 | access to property Street | -| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | -| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | -| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | -| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:32:85:42 | access to local variable taintSource : String | -| EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString : RawSqlString | EntityFrameworkCore.cs:84:18:84:46 | (...) ... | -| EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString : RawSqlString | -| EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion : RawSqlString | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | -| EntityFrameworkCore.cs:85:32:85:42 | access to local variable taintSource : String | EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion : RawSqlString | -| EntityFrameworkCore.cs:92:13:95:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:99:29:99:30 | access to local variable p1 : Person [property Name] : String | -| EntityFrameworkCore.cs:94:24:94:32 | "tainted" : String | EntityFrameworkCore.cs:92:13:95:13 | { ..., ... } : Person [property Name] : String | -| EntityFrameworkCore.cs:99:13:99:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:101:13:101:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:99:13:99:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:99:13:99:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:99:29:99:30 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:99:13:99:23 | [post] access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:101:13:101:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:114:13:117:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:121:29:121:30 | access to local variable p1 : Person [property Name] : String | -| EntityFrameworkCore.cs:116:24:116:32 | "tainted" : String | EntityFrameworkCore.cs:114:13:117:13 | { ..., ... } : Person [property Name] : String | -| EntityFrameworkCore.cs:121:13:121:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:123:19:123:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:121:13:121:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:121:13:121:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:121:29:121:30 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:121:13:121:23 | [post] access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:123:19:123:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:136:13:139:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:142:27:142:28 | access to local variable p1 : Person [property Name] : String | -| EntityFrameworkCore.cs:138:24:138:32 | "tainted" : String | EntityFrameworkCore.cs:136:13:139:13 | { ..., ... } : Person [property Name] : String | -| EntityFrameworkCore.cs:142:27:142:28 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:226:35:226:35 | p : Person [property Name] : String | -| EntityFrameworkCore.cs:155:13:158:13 | { ..., ... } : Person [property Title] : String | EntityFrameworkCore.cs:162:18:162:19 | access to local variable p1 : Person [property Title] : String | -| EntityFrameworkCore.cs:157:25:157:33 | "tainted" : String | EntityFrameworkCore.cs:155:13:158:13 | { ..., ... } : Person [property Title] : String | -| EntityFrameworkCore.cs:162:18:162:19 | access to local variable p1 : Person [property Title] : String | EntityFrameworkCore.cs:162:18:162:25 | access to property Title | -| EntityFrameworkCore.cs:174:13:181:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:29:182:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:29:180:17 | array creation of type Address[] : null [element, property Street] : String | EntityFrameworkCore.cs:174:13:181:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:175:35:180:17 | { ..., ... } : null [element, property Street] : String | EntityFrameworkCore.cs:175:29:180:17 | array creation of type Address[] : null [element, property Street] : String | -| EntityFrameworkCore.cs:176:21:179:21 | object creation of type Address : Address [property Street] : String | EntityFrameworkCore.cs:175:35:180:17 | { ..., ... } : null [element, property Street] : String | -| EntityFrameworkCore.cs:176:33:179:21 | { ..., ... } : Address [property Street] : String | EntityFrameworkCore.cs:176:21:179:21 | object creation of type Address : Address [property Street] : String | -| EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | EntityFrameworkCore.cs:176:33:179:21 | { ..., ... } : Address [property Street] : String | -| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:182:13:182:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:182:29:182:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:13:182:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:190:13:193:13 | { ..., ... } : Address [property Street] : String | EntityFrameworkCore.cs:194:31:194:32 | access to local variable a1 : Address [property Street] : String | -| EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | EntityFrameworkCore.cs:190:13:193:13 | { ..., ... } : Address [property Street] : String | -| EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:194:13:194:25 | [post] access to property Addresses : DbSet [element, property Street] : String | EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:194:31:194:32 | access to local variable a1 : Address [property Street] : String | EntityFrameworkCore.cs:194:13:194:25 | [post] access to property Addresses : DbSet [element, property Street] : String | -| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:206:13:209:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:215:71:215:72 | access to local variable p1 : Person [property Name] : String | -| EntityFrameworkCore.cs:208:24:208:32 | "tainted" : String | EntityFrameworkCore.cs:206:13:209:13 | { ..., ... } : Person [property Name] : String | -| EntityFrameworkCore.cs:211:13:214:13 | { ..., ... } : Address [property Street] : String | EntityFrameworkCore.cs:215:85:215:86 | access to local variable a1 : Address [property Street] : String | -| EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | EntityFrameworkCore.cs:211:13:214:13 | { ..., ... } : Address [property Street] : String | -| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | -| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | -| EntityFrameworkCore.cs:215:71:215:72 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | -| EntityFrameworkCore.cs:215:85:215:86 | access to local variable a1 : Address [property Street] : String | EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | -| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | -| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | -| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | -| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | -| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | -| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:226:35:226:35 | p : Person [property Name] : String | EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | -| EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | -| EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | -| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | -| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Address [property Street] : String | -| EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Address [property Street] : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | -| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Address [property Street] : String | -| EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Address [property Street] : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | +| EntityFramework.cs:59:13:62:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:66:29:66:30 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFramework.cs:61:24:61:32 | "tainted" : String | EntityFramework.cs:59:13:62:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFramework.cs:66:13:66:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:68:13:68:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFramework.cs:66:13:66:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:66:13:66:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFramework.cs:66:29:66:30 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:66:13:66:23 | [post] access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:68:13:68:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:81:13:84:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:88:29:88:30 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFramework.cs:83:24:83:32 | "tainted" : String | EntityFramework.cs:81:13:84:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFramework.cs:88:13:88:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:90:19:90:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFramework.cs:88:13:88:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:88:13:88:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFramework.cs:88:29:88:30 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:88:13:88:23 | [post] access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:90:19:90:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:103:13:106:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:109:27:109:28 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFramework.cs:105:24:105:32 | "tainted" : String | EntityFramework.cs:103:13:106:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFramework.cs:109:27:109:28 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:193:35:193:35 | p : Person [property Name] : String | provenance | | +| EntityFramework.cs:122:13:125:13 | { ..., ... } : Person [property Title] : String | EntityFramework.cs:129:18:129:19 | access to local variable p1 : Person [property Title] : String | provenance | | +| EntityFramework.cs:124:25:124:33 | "tainted" : String | EntityFramework.cs:122:13:125:13 | { ..., ... } : Person [property Title] : String | provenance | | +| EntityFramework.cs:129:18:129:19 | access to local variable p1 : Person [property Title] : String | EntityFramework.cs:129:18:129:25 | access to property Title | provenance | | +| EntityFramework.cs:141:13:148:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | EntityFramework.cs:149:29:149:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:142:29:147:17 | array creation of type Address[] : null [element, property Street] : String | EntityFramework.cs:141:13:148:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:142:35:147:17 | { ..., ... } : null [element, property Street] : String | EntityFramework.cs:142:29:147:17 | array creation of type Address[] : null [element, property Street] : String | provenance | | +| EntityFramework.cs:143:21:146:21 | object creation of type Address : Address [property Street] : String | EntityFramework.cs:142:35:147:17 | { ..., ... } : null [element, property Street] : String | provenance | | +| EntityFramework.cs:143:33:146:21 | { ..., ... } : Address [property Street] : String | EntityFramework.cs:143:21:146:21 | object creation of type Address : Address [property Street] : String | provenance | | +| EntityFramework.cs:145:34:145:42 | "tainted" : String | EntityFramework.cs:143:33:146:21 | { ..., ... } : Address [property Street] : String | provenance | | +| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:150:13:150:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:154:13:154:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:149:13:149:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:149:13:149:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:149:29:149:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | EntityFramework.cs:149:13:149:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:150:13:150:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:150:13:150:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:154:13:154:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:154:13:154:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:157:13:160:13 | { ..., ... } : Address [property Street] : String | EntityFramework.cs:161:31:161:32 | access to local variable a1 : Address [property Street] : String | provenance | | +| EntityFramework.cs:159:26:159:34 | "tainted" : String | EntityFramework.cs:157:13:160:13 | { ..., ... } : Address [property Street] : String | provenance | | +| EntityFramework.cs:161:13:161:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:161:13:161:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:161:13:161:25 | [post] access to property Addresses : DbSet [element, property Street] : String | EntityFramework.cs:161:13:161:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:161:31:161:32 | access to local variable a1 : Address [property Street] : String | EntityFramework.cs:161:13:161:25 | [post] access to property Addresses : DbSet [element, property Street] : String | provenance | | +| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:162:13:162:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:166:13:166:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:173:13:176:13 | { ..., ... } : Person [property Name] : String | EntityFramework.cs:182:71:182:72 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFramework.cs:175:24:175:32 | "tainted" : String | EntityFramework.cs:173:13:176:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFramework.cs:178:13:181:13 | { ..., ... } : Address [property Street] : String | EntityFramework.cs:182:85:182:86 | access to local variable a1 : Address [property Street] : String | provenance | | +| EntityFramework.cs:180:26:180:34 | "tainted" : String | EntityFramework.cs:178:13:181:13 | { ..., ... } : Address [property Street] : String | provenance | | +| EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | provenance | | +| EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | provenance | | +| EntityFramework.cs:182:71:182:72 | access to local variable p1 : Person [property Name] : String | EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | provenance | | +| EntityFramework.cs:182:85:182:86 | access to local variable a1 : Address [property Street] : String | EntityFramework.cs:182:60:182:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | provenance | | +| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | provenance | | +| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | provenance | | +| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | provenance | | +| EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | provenance | | +| EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | provenance | | +| EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | EntityFramework.cs:183:13:183:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | provenance | | +| EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | provenance | | +| EntityFramework.cs:183:37:183:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | EntityFramework.cs:183:13:183:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | provenance | | +| EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:184:13:184:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:190:13:190:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:193:35:193:35 | p : Person [property Name] : String | EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | provenance | | +| EntityFramework.cs:196:13:196:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:196:13:196:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | provenance | | +| EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | EntityFramework.cs:204:18:204:41 | access to property Name | provenance | | +| EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFramework.cs:212:18:212:38 | call to method First
: Address [property Street] : String | provenance | | +| EntityFramework.cs:212:18:212:38 | call to method First
: Address [property Street] : String | EntityFramework.cs:212:18:212:45 | access to property Street | provenance | | +| EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | provenance | | +| EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | provenance | | +| EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFramework.cs:219:18:219:54 | call to method First
: Address [property Street] : String | provenance | | +| EntityFramework.cs:219:18:219:54 | call to method First
: Address [property Street] : String | EntityFramework.cs:219:18:219:61 | access to property Street | provenance | | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | provenance | | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | provenance | | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | provenance | | +| EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:32:85:42 | access to local variable taintSource : String | provenance | | +| EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString : RawSqlString | EntityFrameworkCore.cs:84:18:84:46 | (...) ... | provenance | | +| EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | EntityFrameworkCore.cs:84:18:84:46 | object creation of type RawSqlString : RawSqlString | provenance | | +| EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion : RawSqlString | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | provenance | | +| EntityFrameworkCore.cs:85:32:85:42 | access to local variable taintSource : String | EntityFrameworkCore.cs:85:18:85:42 | call to operator implicit conversion : RawSqlString | provenance | | +| EntityFrameworkCore.cs:92:13:95:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:99:29:99:30 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:94:24:94:32 | "tainted" : String | EntityFrameworkCore.cs:92:13:95:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:99:13:99:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:101:13:101:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:99:13:99:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:99:13:99:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:99:29:99:30 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:99:13:99:23 | [post] access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:101:13:101:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:114:13:117:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:121:29:121:30 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:116:24:116:32 | "tainted" : String | EntityFrameworkCore.cs:114:13:117:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:121:13:121:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:123:19:123:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:121:13:121:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:121:13:121:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:121:29:121:30 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:121:13:121:23 | [post] access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:123:19:123:21 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:136:13:139:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:142:27:142:28 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:138:24:138:32 | "tainted" : String | EntityFrameworkCore.cs:136:13:139:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:142:27:142:28 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:226:35:226:35 | p : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:155:13:158:13 | { ..., ... } : Person [property Title] : String | EntityFrameworkCore.cs:162:18:162:19 | access to local variable p1 : Person [property Title] : String | provenance | | +| EntityFrameworkCore.cs:157:25:157:33 | "tainted" : String | EntityFrameworkCore.cs:155:13:158:13 | { ..., ... } : Person [property Title] : String | provenance | | +| EntityFrameworkCore.cs:162:18:162:19 | access to local variable p1 : Person [property Title] : String | EntityFrameworkCore.cs:162:18:162:25 | access to property Title | provenance | | +| EntityFrameworkCore.cs:174:13:181:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:29:182:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:175:29:180:17 | array creation of type Address[] : null [element, property Street] : String | EntityFrameworkCore.cs:174:13:181:13 | { ..., ... } : Person [property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:175:35:180:17 | { ..., ... } : null [element, property Street] : String | EntityFrameworkCore.cs:175:29:180:17 | array creation of type Address[] : null [element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:176:21:179:21 | object creation of type Address : Address [property Street] : String | EntityFrameworkCore.cs:175:35:180:17 | { ..., ... } : null [element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:176:33:179:21 | { ..., ... } : Address [property Street] : String | EntityFrameworkCore.cs:176:21:179:21 | object creation of type Address : Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:178:34:178:42 | "tainted" : String | EntityFrameworkCore.cs:176:33:179:21 | { ..., ... } : Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:182:13:182:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:13:182:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:182:29:182:30 | access to local variable p1 : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:182:13:182:23 | [post] access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:183:13:183:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:187:13:187:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:190:13:193:13 | { ..., ... } : Address [property Street] : String | EntityFrameworkCore.cs:194:31:194:32 | access to local variable a1 : Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:192:26:192:34 | "tainted" : String | EntityFrameworkCore.cs:190:13:193:13 | { ..., ... } : Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:194:13:194:25 | [post] access to property Addresses : DbSet [element, property Street] : String | EntityFrameworkCore.cs:194:13:194:15 | [post] access to local variable ctx : MyContext [property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:194:31:194:32 | access to local variable a1 : Address [property Street] : String | EntityFrameworkCore.cs:194:13:194:25 | [post] access to property Addresses : DbSet [element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:195:13:195:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:199:13:199:15 | access to local variable ctx : MyContext [property Persons, element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:206:13:209:13 | { ..., ... } : Person [property Name] : String | EntityFrameworkCore.cs:215:71:215:72 | access to local variable p1 : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:208:24:208:32 | "tainted" : String | EntityFrameworkCore.cs:206:13:209:13 | { ..., ... } : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:211:13:214:13 | { ..., ... } : Address [property Street] : String | EntityFrameworkCore.cs:215:85:215:86 | access to local variable a1 : Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:213:26:213:34 | "tainted" : String | EntityFrameworkCore.cs:211:13:214:13 | { ..., ... } : Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | provenance | | +| EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | provenance | | +| EntityFrameworkCore.cs:215:71:215:72 | access to local variable p1 : Person [property Name] : String | EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Person, property Name] : String | provenance | | +| EntityFrameworkCore.cs:215:85:215:86 | access to local variable a1 : Address [property Street] : String | EntityFrameworkCore.cs:215:60:215:88 | { ..., ... } : PersonAddressMap [property Address, property Street] : String | provenance | | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | provenance | | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | provenance | | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | provenance | | +| EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | provenance | | +| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | provenance | | +| EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | EntityFrameworkCore.cs:216:13:216:15 | [post] access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | provenance | | +| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Address, property Street] : String | EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Address, property Street] : String | provenance | | +| EntityFrameworkCore.cs:216:37:216:53 | access to local variable personAddressMap1 : PersonAddressMap [property Person, property Name] : String | EntityFrameworkCore.cs:216:13:216:31 | [post] access to property PersonAddresses : DbSet [element, property Person, property Name] : String | provenance | | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:217:13:217:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Address, property Street] : String | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:223:13:223:15 | access to local variable ctx : MyContext [property PersonAddresses, element, property Person, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:226:35:226:35 | p : Person [property Name] : String | EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | provenance | | +| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | provenance | | +| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | provenance | | +| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
[element, property Street] : String | EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:245:18:245:38 | call to method First
: Address [property Street] : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | provenance | | +| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | provenance | | +| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
[element, property Street] : String | EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Address [property Street] : String | provenance | | +| EntityFrameworkCore.cs:252:18:252:54 | call to method First
: Address [property Street] : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | provenance | | nodes | EntityFramework.cs:59:13:62:13 | { ..., ... } : Person [property Name] : String | semmle.label | { ..., ... } : Person [property Name] : String | | EntityFramework.cs:61:24:61:32 | "tainted" : String | semmle.label | "tainted" : String | diff --git a/csharp/ql/test/query-tests/API Abuse/FormatInvalid/FormatInvalid.expected b/csharp/ql/test/query-tests/API Abuse/FormatInvalid/FormatInvalid.expected index f3525d8bd47d..a1c5e9254370 100644 --- a/csharp/ql/test/query-tests/API Abuse/FormatInvalid/FormatInvalid.expected +++ b/csharp/ql/test/query-tests/API Abuse/FormatInvalid/FormatInvalid.expected @@ -1,6 +1,6 @@ edges -| FormatMissingArgument.cs:22:16:22:20 | "{1}" : String | FormatMissingArgument.cs:28:24:28:29 | format : String | -| FormatMissingArgument.cs:28:24:28:29 | format : String | FormatMissingArgument.cs:31:23:31:28 | access to parameter format | +| FormatMissingArgument.cs:22:16:22:20 | "{1}" : String | FormatMissingArgument.cs:28:24:28:29 | format : String | provenance | | +| FormatMissingArgument.cs:28:24:28:29 | format : String | FormatMissingArgument.cs:31:23:31:28 | access to parameter format | provenance | | nodes | FormatInvalid.cs:9:23:9:27 | "{0}" | semmle.label | "{0}" | | FormatInvalid.cs:12:23:12:29 | "{0,1}" | semmle.label | "{0,1}" | diff --git a/csharp/ql/test/query-tests/Likely Bugs/UnsafeYearConstruction/UnsafeYearConstruction.expected b/csharp/ql/test/query-tests/Likely Bugs/UnsafeYearConstruction/UnsafeYearConstruction.expected index bf23b05a35a9..5ff0ff32c213 100644 --- a/csharp/ql/test/query-tests/Likely Bugs/UnsafeYearConstruction/UnsafeYearConstruction.expected +++ b/csharp/ql/test/query-tests/Likely Bugs/UnsafeYearConstruction/UnsafeYearConstruction.expected @@ -1,7 +1,7 @@ edges -| Program.cs:15:27:15:38 | ... + ... : Int32 | Program.cs:17:37:17:43 | access to local variable endYear | -| Program.cs:23:31:23:34 | year : Int32 | Program.cs:26:39:26:42 | access to parameter year | -| Program.cs:33:18:33:29 | ... - ... : Int32 | Program.cs:23:31:23:34 | year : Int32 | +| Program.cs:15:27:15:38 | ... + ... : Int32 | Program.cs:17:37:17:43 | access to local variable endYear | provenance | | +| Program.cs:23:31:23:34 | year : Int32 | Program.cs:26:39:26:42 | access to parameter year | provenance | | +| Program.cs:33:18:33:29 | ... - ... : Int32 | Program.cs:23:31:23:34 | year : Int32 | provenance | | nodes | Program.cs:13:39:13:50 | ... - ... | semmle.label | ... - ... | | Program.cs:15:27:15:38 | ... + ... : Int32 | semmle.label | ... + ... : Int32 | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected b/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected index 4135e7ce5d61..10a233c2c824 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-020/UntrustedDataToExternalAPI.expected @@ -1,7 +1,7 @@ edges -| UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | UntrustedData.cs:9:20:9:50 | access to indexer : String | -| UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | UntrustedData.cs:13:28:13:31 | access to local variable name | -| UntrustedData.cs:9:20:9:50 | access to indexer : String | UntrustedData.cs:13:28:13:31 | access to local variable name | +| UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | UntrustedData.cs:9:20:9:50 | access to indexer : String | provenance | | +| UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | UntrustedData.cs:13:28:13:31 | access to local variable name | provenance | | +| UntrustedData.cs:9:20:9:50 | access to indexer : String | UntrustedData.cs:13:28:13:31 | access to local variable name | provenance | | nodes | UntrustedData.cs:9:20:9:30 | access to property Request | semmle.label | access to property Request | | UntrustedData.cs:9:20:9:42 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected index 77e55c484e73..e3bc1c2dd1b3 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/TaintedPath.expected @@ -1,19 +1,19 @@ edges -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:10:23:10:53 | access to indexer : String | -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:12:50:12:53 | access to local variable path | -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:17:51:17:54 | access to local variable path | -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:25:30:25:33 | access to local variable path | -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:31:30:31:33 | access to local variable path | -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:36:25:36:31 | access to local variable badPath | -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:38:49:38:55 | access to local variable badPath | -| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:51:26:51:29 | access to local variable path | -| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:12:50:12:53 | access to local variable path | -| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:17:51:17:54 | access to local variable path | -| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:25:30:25:33 | access to local variable path | -| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:31:30:31:33 | access to local variable path | -| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:36:25:36:31 | access to local variable badPath | -| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:38:49:38:55 | access to local variable badPath | -| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:51:26:51:29 | access to local variable path | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:10:23:10:53 | access to indexer : String | provenance | | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:12:50:12:53 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:17:51:17:54 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:25:30:25:33 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:31:30:31:33 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:36:25:36:31 | access to local variable badPath | provenance | | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:38:49:38:55 | access to local variable badPath | provenance | | +| TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | TaintedPath.cs:51:26:51:29 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:12:50:12:53 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:17:51:17:54 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:25:30:25:33 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:31:30:31:33 | access to local variable path | provenance | | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:36:25:36:31 | access to local variable badPath | provenance | | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:38:49:38:55 | access to local variable badPath | provenance | | +| TaintedPath.cs:10:23:10:53 | access to indexer : String | TaintedPath.cs:51:26:51:29 | access to local variable path | provenance | | nodes | TaintedPath.cs:10:23:10:45 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | TaintedPath.cs:10:23:10:53 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/ZipSlip.expected b/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/ZipSlip.expected index a5b2d7166f77..3443ea23f8ee 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/ZipSlip.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/ZipSlip.expected @@ -1,23 +1,23 @@ edges -| ZipSlip.cs:15:35:15:66 | call to method GetFullPath : String | ZipSlip.cs:30:71:30:78 | access to local variable fullPath : String | -| ZipSlip.cs:15:35:15:66 | call to method GetFullPath : String | ZipSlip.cs:38:81:38:88 | access to local variable fullPath : String | -| ZipSlip.cs:15:52:15:65 | access to property FullName : String | ZipSlip.cs:15:35:15:66 | call to method GetFullPath : String | -| ZipSlip.cs:18:31:18:44 | access to property FullName : String | ZipSlip.cs:22:71:22:74 | access to local variable file : String | -| ZipSlip.cs:22:43:22:75 | call to method Combine : String | ZipSlip.cs:23:41:23:52 | access to local variable destFileName | -| ZipSlip.cs:22:71:22:74 | access to local variable file : String | ZipSlip.cs:22:43:22:75 | call to method Combine : String | -| ZipSlip.cs:30:43:30:79 | call to method Combine : String | ZipSlip.cs:31:41:31:52 | access to local variable destFilePath | -| ZipSlip.cs:30:43:30:79 | call to method Combine : String | ZipSlip.cs:35:45:35:56 | access to local variable destFilePath | -| ZipSlip.cs:30:71:30:78 | access to local variable fullPath : String | ZipSlip.cs:30:43:30:79 | call to method Combine : String | -| ZipSlip.cs:38:36:38:90 | call to method GetFullPath : String | ZipSlip.cs:39:41:39:52 | access to local variable destFilePath | -| ZipSlip.cs:38:53:38:89 | call to method Combine : String | ZipSlip.cs:38:36:38:90 | call to method GetFullPath : String | -| ZipSlip.cs:38:81:38:88 | access to local variable fullPath : String | ZipSlip.cs:38:53:38:89 | call to method Combine : String | -| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:68:74:68:85 | access to local variable destFilePath | -| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:75:71:75:82 | access to local variable destFilePath | -| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:82:57:82:68 | access to local variable destFilePath | -| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:90:58:90:69 | access to local variable destFilePath | -| ZipSlip.cs:61:72:61:85 | access to property FullName : String | ZipSlip.cs:61:47:61:86 | call to method Combine : String | -| ZipSlipBad.cs:9:31:9:73 | call to method Combine : String | ZipSlipBad.cs:10:29:10:40 | access to local variable destFileName | -| ZipSlipBad.cs:9:59:9:72 | access to property FullName : String | ZipSlipBad.cs:9:31:9:73 | call to method Combine : String | +| ZipSlip.cs:15:35:15:66 | call to method GetFullPath : String | ZipSlip.cs:30:71:30:78 | access to local variable fullPath : String | provenance | | +| ZipSlip.cs:15:35:15:66 | call to method GetFullPath : String | ZipSlip.cs:38:81:38:88 | access to local variable fullPath : String | provenance | | +| ZipSlip.cs:15:52:15:65 | access to property FullName : String | ZipSlip.cs:15:35:15:66 | call to method GetFullPath : String | provenance | | +| ZipSlip.cs:18:31:18:44 | access to property FullName : String | ZipSlip.cs:22:71:22:74 | access to local variable file : String | provenance | | +| ZipSlip.cs:22:43:22:75 | call to method Combine : String | ZipSlip.cs:23:41:23:52 | access to local variable destFileName | provenance | | +| ZipSlip.cs:22:71:22:74 | access to local variable file : String | ZipSlip.cs:22:43:22:75 | call to method Combine : String | provenance | | +| ZipSlip.cs:30:43:30:79 | call to method Combine : String | ZipSlip.cs:31:41:31:52 | access to local variable destFilePath | provenance | | +| ZipSlip.cs:30:43:30:79 | call to method Combine : String | ZipSlip.cs:35:45:35:56 | access to local variable destFilePath | provenance | | +| ZipSlip.cs:30:71:30:78 | access to local variable fullPath : String | ZipSlip.cs:30:43:30:79 | call to method Combine : String | provenance | | +| ZipSlip.cs:38:36:38:90 | call to method GetFullPath : String | ZipSlip.cs:39:41:39:52 | access to local variable destFilePath | provenance | | +| ZipSlip.cs:38:53:38:89 | call to method Combine : String | ZipSlip.cs:38:36:38:90 | call to method GetFullPath : String | provenance | | +| ZipSlip.cs:38:81:38:88 | access to local variable fullPath : String | ZipSlip.cs:38:53:38:89 | call to method Combine : String | provenance | | +| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:68:74:68:85 | access to local variable destFilePath | provenance | | +| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:75:71:75:82 | access to local variable destFilePath | provenance | | +| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:82:57:82:68 | access to local variable destFilePath | provenance | | +| ZipSlip.cs:61:47:61:86 | call to method Combine : String | ZipSlip.cs:90:58:90:69 | access to local variable destFilePath | provenance | | +| ZipSlip.cs:61:72:61:85 | access to property FullName : String | ZipSlip.cs:61:47:61:86 | call to method Combine : String | provenance | | +| ZipSlipBad.cs:9:31:9:73 | call to method Combine : String | ZipSlipBad.cs:10:29:10:40 | access to local variable destFileName | provenance | | +| ZipSlipBad.cs:9:59:9:72 | access to property FullName : String | ZipSlipBad.cs:9:31:9:73 | call to method Combine : String | provenance | | nodes | ZipSlip.cs:15:35:15:66 | call to method GetFullPath : String | semmle.label | call to method GetFullPath : String | | ZipSlip.cs:15:52:15:65 | access to property FullName : String | semmle.label | access to property FullName : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected index 336342b9747d..fc1da3ba7c66 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected @@ -1,26 +1,26 @@ edges -| CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:25:32:25:51 | access to property Text : String | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:26:27:26:47 | ... + ... | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:26:50:26:66 | ... + ... | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | -| CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:29:27:29:35 | access to local variable startInfo | -| CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | -| CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | -| CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | -| CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | -| CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | -| CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | -| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | -| CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | +| CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:25:32:25:51 | access to property Text : String | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:26:27:26:47 | ... + ... | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:26:50:26:66 | ... + ... | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput | provenance | | +| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:29:27:29:35 | access to local variable startInfo | provenance | | +| CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | +| CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | +| CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | provenance | | +| CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | +| CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | provenance | | +| CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | +| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | provenance | | +| CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | nodes | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | | CommandInjection.cs:25:32:25:51 | access to property Text : String | semmle.label | access to property Text : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected index 0c166565a832..46c85f7abbe6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected @@ -1,5 +1,5 @@ edges -| StoredCommandInjection.cs:22:54:22:80 | call to method GetString : String | StoredCommandInjection.cs:22:46:22:80 | ... + ... | +| StoredCommandInjection.cs:22:54:22:80 | call to method GetString : String | StoredCommandInjection.cs:22:46:22:80 | ... + ... | provenance | | nodes | StoredCommandInjection.cs:22:46:22:80 | ... + ... | semmle.label | ... + ... | | StoredCommandInjection.cs:22:54:22:80 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected index beef5ec29682..488df85e1c4f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected @@ -1,5 +1,5 @@ edges -| StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | +| StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | provenance | | nodes | StoredXSS.cs:22:44:22:86 | ... + ... | semmle.label | ... + ... | | StoredXSS.cs:22:60:22:86 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected index added4434000..1e1c6258c898 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSS/XSS.expected @@ -1,19 +1,19 @@ edges -| Index.cshtml:5:19:5:31 | access to property Query : IQueryCollection | Index.cshtml:14:16:14:22 | call to operator implicit conversion | -| XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:19:25:19:52 | access to indexer : String | -| XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | -| XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | -| XSSAspNet.cs:19:25:19:52 | access to indexer : String | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | -| XSSAspNet.cs:19:25:19:52 | access to indexer : String | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | -| XSSAspNet.cs:43:28:43:46 | access to property QueryString : NameValueCollection | XSSAspNet.cs:43:28:43:55 | access to indexer | -| XSSAspNetCore.cs:21:52:21:64 | access to property Query : IQueryCollection | XSSAspNetCore.cs:21:52:21:76 | call to operator implicit conversion | -| XSSAspNetCore.cs:40:56:40:58 | foo : String | XSSAspNetCore.cs:44:51:44:53 | access to parameter foo | -| XSSAspNetCore.cs:58:43:58:55 | access to property Query : IQueryCollection | XSSAspNetCore.cs:58:43:58:62 | access to indexer : StringValues | -| XSSAspNetCore.cs:58:43:58:62 | access to indexer : StringValues | XSSAspNetCore.cs:58:43:58:73 | call to method ToString | -| XSSAspNetCore.cs:61:44:61:56 | access to property Query : IQueryCollection | XSSAspNetCore.cs:61:44:61:63 | access to indexer : StringValues | -| XSSAspNetCore.cs:61:44:61:56 | access to property Query : IQueryCollection | XSSAspNetCore.cs:61:44:61:66 | access to indexer | -| XSSAspNetCore.cs:61:44:61:63 | access to indexer : StringValues | XSSAspNetCore.cs:61:44:61:66 | access to indexer | -| XSSAspNetCore.cs:72:51:72:65 | access to property Headers : IHeaderDictionary | XSSAspNetCore.cs:72:51:72:72 | call to operator implicit conversion | +| Index.cshtml:5:19:5:31 | access to property Query : IQueryCollection | Index.cshtml:14:16:14:22 | call to operator implicit conversion | provenance | | +| XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:19:25:19:52 | access to indexer : String | provenance | | +| XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | provenance | | +| XSSAspNet.cs:19:25:19:43 | access to property QueryString : NameValueCollection | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | provenance | | +| XSSAspNet.cs:19:25:19:52 | access to indexer : String | XSSAspNet.cs:26:30:26:34 | access to local variable sayHi | provenance | | +| XSSAspNet.cs:19:25:19:52 | access to indexer : String | XSSAspNet.cs:36:40:36:44 | access to local variable sayHi | provenance | | +| XSSAspNet.cs:43:28:43:46 | access to property QueryString : NameValueCollection | XSSAspNet.cs:43:28:43:55 | access to indexer | provenance | | +| XSSAspNetCore.cs:21:52:21:64 | access to property Query : IQueryCollection | XSSAspNetCore.cs:21:52:21:76 | call to operator implicit conversion | provenance | | +| XSSAspNetCore.cs:40:56:40:58 | foo : String | XSSAspNetCore.cs:44:51:44:53 | access to parameter foo | provenance | | +| XSSAspNetCore.cs:58:43:58:55 | access to property Query : IQueryCollection | XSSAspNetCore.cs:58:43:58:62 | access to indexer : StringValues | provenance | | +| XSSAspNetCore.cs:58:43:58:62 | access to indexer : StringValues | XSSAspNetCore.cs:58:43:58:73 | call to method ToString | provenance | | +| XSSAspNetCore.cs:61:44:61:56 | access to property Query : IQueryCollection | XSSAspNetCore.cs:61:44:61:63 | access to indexer : StringValues | provenance | | +| XSSAspNetCore.cs:61:44:61:56 | access to property Query : IQueryCollection | XSSAspNetCore.cs:61:44:61:66 | access to indexer | provenance | | +| XSSAspNetCore.cs:61:44:61:63 | access to indexer : StringValues | XSSAspNetCore.cs:61:44:61:66 | access to indexer | provenance | | +| XSSAspNetCore.cs:72:51:72:65 | access to property Headers : IHeaderDictionary | XSSAspNetCore.cs:72:51:72:72 | call to operator implicit conversion | provenance | | nodes | Index.cshtml:5:19:5:31 | access to property Query : IQueryCollection | semmle.label | access to property Query : IQueryCollection | | Index.cshtml:14:16:14:22 | call to operator implicit conversion | semmle.label | call to operator implicit conversion | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected index 941b4b359a9c..e3c29b083161 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected @@ -1,33 +1,33 @@ edges -| XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | XSS.cs:26:32:26:40 | access to local variable userInput : StringBuilder | -| XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | XSS.cs:27:29:27:37 | access to local variable userInput : StringBuilder | -| XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | XSS.cs:28:26:28:34 | access to local variable userInput : StringBuilder | -| XSS.cs:25:48:25:62 | access to field categoryTextBox : TextBox | XSS.cs:25:48:25:67 | access to property Text : String | -| XSS.cs:25:48:25:67 | access to property Text : String | XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | -| XSS.cs:26:32:26:40 | access to local variable userInput : StringBuilder | XSS.cs:26:32:26:51 | call to method ToString | -| XSS.cs:27:29:27:37 | access to local variable userInput : StringBuilder | XSS.cs:27:29:27:48 | call to method ToString | -| XSS.cs:28:26:28:34 | access to local variable userInput : StringBuilder | XSS.cs:28:26:28:45 | call to method ToString | -| XSS.cs:37:27:37:53 | access to property QueryString : NameValueCollection | XSS.cs:37:27:37:61 | access to indexer : String | -| XSS.cs:37:27:37:53 | access to property QueryString : NameValueCollection | XSS.cs:38:36:38:39 | access to local variable name | -| XSS.cs:37:27:37:61 | access to indexer : String | XSS.cs:38:36:38:39 | access to local variable name | -| XSS.cs:57:27:57:65 | access to property QueryString : NameValueCollection | XSS.cs:57:27:57:73 | access to indexer : String | -| XSS.cs:57:27:57:65 | access to property QueryString : NameValueCollection | XSS.cs:59:22:59:25 | access to local variable name | -| XSS.cs:57:27:57:73 | access to indexer : String | XSS.cs:59:22:59:25 | access to local variable name | -| XSS.cs:75:27:75:53 | access to property QueryString : NameValueCollection | XSS.cs:75:27:75:61 | access to indexer : String | -| XSS.cs:75:27:75:53 | access to property QueryString : NameValueCollection | XSS.cs:76:36:76:39 | access to local variable name | -| XSS.cs:75:27:75:61 | access to indexer : String | XSS.cs:76:36:76:39 | access to local variable name | -| XSS.cs:78:28:78:42 | access to property Request : HttpRequestBase | XSS.cs:79:36:79:40 | access to local variable name2 | -| XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:85:27:85:61 | access to indexer : String | -| XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:86:28:86:31 | access to local variable name | -| XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:87:31:87:34 | access to local variable name | -| XSS.cs:85:27:85:61 | access to indexer : String | XSS.cs:86:28:86:31 | access to local variable name | -| XSS.cs:85:27:85:61 | access to indexer : String | XSS.cs:87:31:87:34 | access to local variable name | -| XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:94:27:94:61 | access to indexer : String | -| XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:95:31:95:34 | access to local variable name | -| XSS.cs:94:27:94:61 | access to indexer : String | XSS.cs:95:31:95:34 | access to local variable name | -| script.aspx:12:1:12:14 | <%= ... %> | script.aspx:12:1:12:14 | <%= ... %> | -| script.aspx:16:1:16:34 | <%= ... %> | script.aspx:16:1:16:34 | <%= ... %> | -| script.aspx:20:1:20:41 | <%= ... %> | script.aspx:20:1:20:41 | <%= ... %> | +| XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | XSS.cs:26:32:26:40 | access to local variable userInput : StringBuilder | provenance | | +| XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | XSS.cs:27:29:27:37 | access to local variable userInput : StringBuilder | provenance | | +| XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | XSS.cs:28:26:28:34 | access to local variable userInput : StringBuilder | provenance | | +| XSS.cs:25:48:25:62 | access to field categoryTextBox : TextBox | XSS.cs:25:48:25:67 | access to property Text : String | provenance | | +| XSS.cs:25:48:25:67 | access to property Text : String | XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | provenance | | +| XSS.cs:26:32:26:40 | access to local variable userInput : StringBuilder | XSS.cs:26:32:26:51 | call to method ToString | provenance | | +| XSS.cs:27:29:27:37 | access to local variable userInput : StringBuilder | XSS.cs:27:29:27:48 | call to method ToString | provenance | | +| XSS.cs:28:26:28:34 | access to local variable userInput : StringBuilder | XSS.cs:28:26:28:45 | call to method ToString | provenance | | +| XSS.cs:37:27:37:53 | access to property QueryString : NameValueCollection | XSS.cs:37:27:37:61 | access to indexer : String | provenance | | +| XSS.cs:37:27:37:53 | access to property QueryString : NameValueCollection | XSS.cs:38:36:38:39 | access to local variable name | provenance | | +| XSS.cs:37:27:37:61 | access to indexer : String | XSS.cs:38:36:38:39 | access to local variable name | provenance | | +| XSS.cs:57:27:57:65 | access to property QueryString : NameValueCollection | XSS.cs:57:27:57:73 | access to indexer : String | provenance | | +| XSS.cs:57:27:57:65 | access to property QueryString : NameValueCollection | XSS.cs:59:22:59:25 | access to local variable name | provenance | | +| XSS.cs:57:27:57:73 | access to indexer : String | XSS.cs:59:22:59:25 | access to local variable name | provenance | | +| XSS.cs:75:27:75:53 | access to property QueryString : NameValueCollection | XSS.cs:75:27:75:61 | access to indexer : String | provenance | | +| XSS.cs:75:27:75:53 | access to property QueryString : NameValueCollection | XSS.cs:76:36:76:39 | access to local variable name | provenance | | +| XSS.cs:75:27:75:61 | access to indexer : String | XSS.cs:76:36:76:39 | access to local variable name | provenance | | +| XSS.cs:78:28:78:42 | access to property Request : HttpRequestBase | XSS.cs:79:36:79:40 | access to local variable name2 | provenance | | +| XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:85:27:85:61 | access to indexer : String | provenance | | +| XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:86:28:86:31 | access to local variable name | provenance | | +| XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:87:31:87:34 | access to local variable name | provenance | | +| XSS.cs:85:27:85:61 | access to indexer : String | XSS.cs:86:28:86:31 | access to local variable name | provenance | | +| XSS.cs:85:27:85:61 | access to indexer : String | XSS.cs:87:31:87:34 | access to local variable name | provenance | | +| XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:94:27:94:61 | access to indexer : String | provenance | | +| XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:95:31:95:34 | access to local variable name | provenance | | +| XSS.cs:94:27:94:61 | access to indexer : String | XSS.cs:95:31:95:34 | access to local variable name | provenance | | +| script.aspx:12:1:12:14 | <%= ... %> | script.aspx:12:1:12:14 | <%= ... %> | provenance | | +| script.aspx:16:1:16:34 | <%= ... %> | script.aspx:16:1:16:34 | <%= ... %> | provenance | | +| script.aspx:20:1:20:41 | <%= ... %> | script.aspx:20:1:20:41 | <%= ... %> | provenance | | nodes | XSS.cs:25:13:25:21 | [post] access to local variable userInput : StringBuilder | semmle.label | [post] access to local variable userInput : StringBuilder | | XSS.cs:25:48:25:62 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Shared_Test18.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Shared_Test18.cshtml.g.cs index eecb00361d68..52b0510994e6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Shared_Test18.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Shared_Test18.cshtml.g.cs @@ -24,7 +24,7 @@ public class Areas_TestArea_Views_Shared_Test18 : global::Microsoft.AspNetCore.M #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Areas/TestArea/Views/Shared/Test18.cshtml" +#line 6 "../Areas/TestArea/Views/Shared/Test18.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Areas_TestArea_Views_Shared_Test18 : global::Microsoft.AspNetCore.M #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Areas/TestArea/Views/Shared/Test18.cshtml" +#line 8 "../Areas/TestArea/Views/Shared/Test18.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Areas_TestArea_Views_Shared_Test18 : global::Microsoft.AspNetCore.M #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Areas/TestArea/Views/Shared/Test18.cshtml" +#line 9 "../Areas/TestArea/Views/Shared/Test18.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Test4_Test17.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Test4_Test17.cshtml.g.cs index ee7ee811920f..5d33dbbed54a 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Test4_Test17.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Areas_TestArea_Views_Test4_Test17.cshtml.g.cs @@ -24,7 +24,7 @@ public class Areas_TestArea_Views_Test4_Test17 : global::Microsoft.AspNetCore.Mv #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Areas/TestArea/Views/Test4/Test17.cshtml" +#line 6 "../Areas/TestArea/Views/Test4/Test17.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Areas_TestArea_Views_Test4_Test17 : global::Microsoft.AspNetCore.Mv #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Areas/TestArea/Views/Test4/Test17.cshtml" +#line 8 "../Areas/TestArea/Views/Test4/Test17.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Areas_TestArea_Views_Test4_Test17 : global::Microsoft.AspNetCore.Mv #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Areas/TestArea/Views/Test4/Test17.cshtml" +#line 9 "../Areas/TestArea/Views/Test4/Test17.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/MyAreas_Test4_Test22.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/MyAreas_Test4_Test22.cshtml.g.cs index f8b2ecde53a4..6624ae0ebf3a 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/MyAreas_Test4_Test22.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/MyAreas_Test4_Test22.cshtml.g.cs @@ -24,7 +24,7 @@ public class MyAreas_Test4_Test22 : global::Microsoft.AspNetCore.Mvc.Razor.Razor #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "MyAreas/Test4/Test22.cshtml" +#line 6 "../MyAreas/Test4/Test22.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class MyAreas_Test4_Test22 : global::Microsoft.AspNetCore.Mvc.Razor.Razor #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "MyAreas/Test4/Test22.cshtml" +#line 8 "../MyAreas/Test4/Test22.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class MyAreas_Test4_Test22 : global::Microsoft.AspNetCore.Mvc.Razor.Razor #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "MyAreas/Test4/Test22.cshtml" +#line 9 "../MyAreas/Test4/Test22.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Pages_Shared_Test21.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Pages_Shared_Test21.cshtml.g.cs index 483df5af705f..c75acc2aaa9e 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Pages_Shared_Test21.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Pages_Shared_Test21.cshtml.g.cs @@ -24,7 +24,7 @@ public class Pages_Shared_Test21 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Pages/Shared/Test21.cshtml" +#line 6 "../Pages/Shared/Test21.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Pages_Shared_Test21 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Pages/Shared/Test21.cshtml" +#line 8 "../Pages/Shared/Test21.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Pages_Shared_Test21 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Pages/Shared/Test21.cshtml" +#line 9 "../Pages/Shared/Test21.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Template.g b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Template.g index 1f283c9e3a01..0fa1767db71c 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Template.g +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Template.g @@ -24,7 +24,7 @@ using test; #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "$PATHSLASH" +#line 6 "../$PATHSLASH" if (Model != null) { @@ -33,7 +33,7 @@ using test; #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "$PATHSLASH" +#line 8 "../$PATHSLASH" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ Write(Html.Raw(Model.Name)); #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "$PATHSLASH" +#line 9 "../$PATHSLASH" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom2_Test16.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom2_Test16.cshtml.g.cs index c6048503384b..82ed62549562 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom2_Test16.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom2_Test16.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Custom2_Test16 : global::Microsoft.AspNetCore.Mvc.Razor.Razor #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Custom2/Test16.cshtml" +#line 6 "../Views/Custom2/Test16.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Custom2_Test16 : global::Microsoft.AspNetCore.Mvc.Razor.Razor #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Custom2/Test16.cshtml" +#line 8 "../Views/Custom2/Test16.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Custom2_Test16 : global::Microsoft.AspNetCore.Mvc.Razor.Razor #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Custom2/Test16.cshtml" +#line 9 "../Views/Custom2/Test16.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom_Test3_Test15.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom_Test3_Test15.cshtml.g.cs index 00edb1f4b8c9..eb366a727b68 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom_Test3_Test15.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Custom_Test3_Test15.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Custom_Test3_Test15 : global::Microsoft.AspNetCore.Mvc.Razor. #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Custom/Test3/Test15.cshtml" +#line 6 "../Views/Custom/Test3/Test15.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Custom_Test3_Test15 : global::Microsoft.AspNetCore.Mvc.Razor. #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Custom/Test3/Test15.cshtml" +#line 8 "../Views/Custom/Test3/Test15.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Custom_Test3_Test15 : global::Microsoft.AspNetCore.Mvc.Razor. #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Custom/Test3/Test15.cshtml" +#line 9 "../Views/Custom/Test3/Test15.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test13.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test13.cshtml.g.cs index ad153243a9dc..240733439bc8 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test13.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test13.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Other_Test13 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Other/Test13.cshtml" +#line 6 "../Views/Other/Test13.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Other_Test13 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Other/Test13.cshtml" +#line 8 "../Views/Other/Test13.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Other_Test13 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Other/Test13.cshtml" +#line 9 "../Views/Other/Test13.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test5.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test5.cshtml.g.cs index 8b6dcfa243bb..f51631b536ae 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test5.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test5.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Other_Test5 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Other/Test5.cshtml" +#line 6 "../Views/Other/Test5.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Other_Test5 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Other/Test5.cshtml" +#line 8 "../Views/Other/Test5.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Other_Test5 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Other/Test5.cshtml" +#line 9 "../Views/Other/Test5.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test6.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test6.cshtml.g.cs index 58aa308379b8..fbbd4e99798b 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test6.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test6.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Other_Test6 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Other/Test6.cshtml" +#line 6 "../Views/Other/Test6.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Other_Test6 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Other/Test6.cshtml" +#line 8 "../Views/Other/Test6.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Other_Test6 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Other/Test6.cshtml" +#line 9 "../Views/Other/Test6.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test8.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test8.cshtml.g.cs index 799e7a84768c..c3643f4dd2f1 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test8.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test8.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Other_Test8 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Other/Test8.cshtml" +#line 6 "../Views/Other/Test8.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Other_Test8 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Other/Test8.cshtml" +#line 8 "../Views/Other/Test8.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Other_Test8 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Other/Test8.cshtml" +#line 9 "../Views/Other/Test8.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test9.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test9.cshtml.g.cs index 9c1199c2ee30..0a8391424502 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test9.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Other_Test9.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Other_Test9 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Other/Test9.cshtml" +#line 6 "../Views/Other/Test9.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Other_Test9 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Other/Test9.cshtml" +#line 8 "../Views/Other/Test9.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Other_Test9 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Other/Test9.cshtml" +#line 9 "../Views/Other/Test9.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test12.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test12.cshtml.g.cs index 6292047ecec9..d68e6cfb7073 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test12.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test12.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Shared_Test12 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Shared/Test12.cshtml" +#line 6 "../Views/Shared/Test12.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Shared_Test12 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Shared/Test12.cshtml" +#line 8 "../Views/Shared/Test12.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Shared_Test12 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Shared/Test12.cshtml" +#line 9 "../Views/Shared/Test12.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test14.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test14.cshtml.g.cs index 93cb009780fb..d42efb18be2f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test14.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test14.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Shared_Test14 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Shared/Test14.cshtml" +#line 6 "../Views/Shared/Test14.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Shared_Test14 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Shared/Test14.cshtml" +#line 8 "../Views/Shared/Test14.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Shared_Test14 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Shared/Test14.cshtml" +#line 9 "../Views/Shared/Test14.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test19.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test19.cshtml.g.cs index daacf56a1f1e..cd20980fb4d5 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test19.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test19.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Shared_Test19 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Shared/Test19.cshtml" +#line 6 "../Views/Shared/Test19.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Shared_Test19 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Shared/Test19.cshtml" +#line 8 "../Views/Shared/Test19.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Shared_Test19 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Shared/Test19.cshtml" +#line 9 "../Views/Shared/Test19.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test2.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test2.cshtml.g.cs index c20f1456c067..0fbdbfd2f0fe 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test2.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test2.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Shared_Test2 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Shared/Test2.cshtml" +#line 6 "../Views/Shared/Test2.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Shared_Test2 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Shared/Test2.cshtml" +#line 8 "../Views/Shared/Test2.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Shared_Test2 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Shared/Test2.cshtml" +#line 9 "../Views/Shared/Test2.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test23.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test23.cshtml.g.cs index 919c874680b8..218968593b9f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test23.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test23.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Shared_Test23 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Shared/Test23.cshtml" +#line 6 "../Views/Shared/Test23.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Shared_Test23 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Shared/Test23.cshtml" +#line 8 "../Views/Shared/Test23.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Shared_Test23 : global::Microsoft.AspNetCore.Mvc.Razor.RazorP #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Shared/Test23.cshtml" +#line 9 "../Views/Shared/Test23.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test3.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test3.cshtml.g.cs index 7bd08d8665b3..ea4626788bba 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test3.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Shared_Test3.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Shared_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Shared/Test3.cshtml" +#line 6 "../Views/Shared/Test3.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Shared_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Shared/Test3.cshtml" +#line 8 "../Views/Shared/Test3.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Shared_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Shared/Test3.cshtml" +#line 9 "../Views/Shared/Test3.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test1.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test1.cshtml.g.cs index a4dec53b6324..bb27bae13204 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test1.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test1.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test2_Test1 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test2/Test1.cshtml" +#line 6 "../Views/Test2/Test1.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test2_Test1 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test2/Test1.cshtml" +#line 8 "../Views/Test2/Test1.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test2_Test1 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test2/Test1.cshtml" +#line 9 "../Views/Test2/Test1.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test10.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test10.cshtml.g.cs index 33a4d27e254a..dbb7f68a284b 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test10.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test10.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test2_Test10 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test2/Test10.cshtml" +#line 6 "../Views/Test2/Test10.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test2_Test10 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test2/Test10.cshtml" +#line 8 "../Views/Test2/Test10.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test2_Test10 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test2/Test10.cshtml" +#line 9 "../Views/Test2/Test10.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test11.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test11.cshtml.g.cs index da0b0a9c1625..069bbd688f97 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test11.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test11.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test2_Test11 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test2/Test11.cshtml" +#line 6 "../Views/Test2/Test11.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test2_Test11 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test2/Test11.cshtml" +#line 8 "../Views/Test2/Test11.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test2_Test11 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test2/Test11.cshtml" +#line 9 "../Views/Test2/Test11.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test12.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test12.cshtml.g.cs index 023daa7b03ea..410f9d8a0d66 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test12.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test12.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test2_Test12 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test2/Test12.cshtml" +#line 6 "../Views/Test2/Test12.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test2_Test12 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test2/Test12.cshtml" +#line 8 "../Views/Test2/Test12.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test2_Test12 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test2/Test12.cshtml" +#line 9 "../Views/Test2/Test12.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test14.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test14.cshtml.g.cs index 28b0ab8ee3fd..c5c4253384e6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test14.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test14.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test2_Test14 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test2/Test14.cshtml" +#line 6 "../Views/Test2/Test14.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test2_Test14 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test2/Test14.cshtml" +#line 8 "../Views/Test2/Test14.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test2_Test14 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test2/Test14.cshtml" +#line 9 "../Views/Test2/Test14.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test2.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test2.cshtml.g.cs index 53c7e6eed471..6d57bfd899ce 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test2.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test2.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test2_Test2 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test2/Test2.cshtml" +#line 6 "../Views/Test2/Test2.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test2_Test2 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test2/Test2.cshtml" +#line 8 "../Views/Test2/Test2.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test2_Test2 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test2/Test2.cshtml" +#line 9 "../Views/Test2/Test2.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test3.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test3.cshtml.g.cs index 299f6f89a16d..a3d046fe0386 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test3.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test2_Test3.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test2_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test2/Test3.cshtml" +#line 6 "../Views/Test2/Test3.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test2_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test2/Test3.cshtml" +#line 8 "../Views/Test2/Test3.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test2_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPag #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test2/Test3.cshtml" +#line 9 "../Views/Test2/Test3.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test4_Test20.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test4_Test20.cshtml.g.cs index 814a81a5b5d0..26ebc94e101f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test4_Test20.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test4_Test20.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test4_Test20 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test4/Test20.cshtml" +#line 6 "../Views/Test4/Test20.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test4_Test20 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test4/Test20.cshtml" +#line 8 "../Views/Test4/Test20.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test4_Test20 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPa #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test4/Test20.cshtml" +#line 9 "../Views/Test4/Test20.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test1.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test1.cshtml.g.cs index 2ad66b7a0323..30123d044677 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test1.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test1.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test_Test1 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test/Test1.cshtml" +#line 6 "../Views/Test/Test1.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test_Test1 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test/Test1.cshtml" +#line 8 "../Views/Test/Test1.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test_Test1 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test/Test1.cshtml" +#line 9 "../Views/Test/Test1.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test3.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test3.cshtml.g.cs index 95ef158286b2..ade57ee34764 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test3.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test3.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test/Test3.cshtml" +#line 6 "../Views/Test/Test3.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test/Test3.cshtml" +#line 8 "../Views/Test/Test3.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test_Test3 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test/Test3.cshtml" +#line 9 "../Views/Test/Test3.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test4.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test4.cshtml.g.cs index 7a8cea221f71..583c0a35b1a8 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test4.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test4.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test_Test4 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test/Test4.cshtml" +#line 6 "../Views/Test/Test4.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test_Test4 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test/Test4.cshtml" +#line 8 "../Views/Test/Test4.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test_Test4 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test/Test4.cshtml" +#line 9 "../Views/Test/Test4.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test7.cshtml.g.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test7.cshtml.g.cs index 1eef0024c7ad..710cc34bd073 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test7.cshtml.g.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/Generated/Views_Test_Test7.cshtml.g.cs @@ -24,7 +24,7 @@ public class Views_Test_Test7 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #pragma warning disable 1998 public async override global::System.Threading.Tasks.Task ExecuteAsync() { -#line 6 "Views/Test/Test7.cshtml" +#line 6 "../Views/Test/Test7.cshtml" if (Model != null) { @@ -33,7 +33,7 @@ public class Views_Test_Test7 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("

Hello \""); #nullable restore -#line 8 "Views/Test/Test7.cshtml" +#line 8 "../Views/Test/Test7.cshtml" Write(Html.Raw(Model.Name)); #line default @@ -41,7 +41,7 @@ public class Views_Test_Test7 : global::Microsoft.AspNetCore.Mvc.Razor.RazorPage #nullable disable WriteLiteral("\"

\n"); #nullable restore -#line 9 "Views/Test/Test7.cshtml" +#line 9 "../Views/Test/Test7.cshtml" } #line default diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/XSS.expected index 19413509bcb4..70c8dcfbd111 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/XSS.expected @@ -1,72 +1,72 @@ edges -| Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:20 | access to property Model : UserData | Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:25 | access to property Name | -| Areas/TestArea/Views/Test4/Test17.cshtml:8:16:8:20 | access to property Model : UserData | Areas/TestArea/Views/Test4/Test17.cshtml:8:16:8:25 | access to property Name | -| Controllers/TestController.cs:13:41:13:48 | tainted1 : UserData | Controllers/TestController.cs:15:30:15:37 | access to parameter tainted1 : UserData | -| Controllers/TestController.cs:15:30:15:37 | access to parameter tainted1 : UserData | Views/Test/Test1.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:18:41:18:48 | tainted2 : UserData | Controllers/TestController.cs:20:30:20:37 | access to parameter tainted2 : UserData | -| Controllers/TestController.cs:20:30:20:37 | access to parameter tainted2 : UserData | Views/Shared/Test2.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:23:41:23:48 | tainted3 : UserData | Controllers/TestController.cs:25:30:25:37 | access to parameter tainted3 : UserData | -| Controllers/TestController.cs:25:30:25:37 | access to parameter tainted3 : UserData | Views/Test/Test3.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:28:41:28:48 | tainted4 : UserData | Controllers/TestController.cs:30:32:30:39 | access to parameter tainted4 : UserData | -| Controllers/TestController.cs:30:32:30:39 | access to parameter tainted4 : UserData | Views/Test/Test4.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:33:41:33:48 | tainted5 : UserData | Controllers/TestController.cs:35:39:35:46 | access to parameter tainted5 : UserData | -| Controllers/TestController.cs:35:39:35:46 | access to parameter tainted5 : UserData | Views/Other/Test5.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:38:41:38:48 | tainted6 : UserData | Controllers/TestController.cs:40:64:40:71 | access to parameter tainted6 : UserData | -| Controllers/TestController.cs:40:64:40:71 | access to parameter tainted6 : UserData | Views/Other/Test6.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:43:41:43:48 | tainted7 : UserData | Controllers/TestController.cs:45:21:45:28 | access to parameter tainted7 : UserData | -| Controllers/TestController.cs:45:21:45:28 | access to parameter tainted7 : UserData | Views/Test/Test7.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:48:41:48:48 | tainted8 : UserData | Controllers/TestController.cs:50:50:50:57 | access to parameter tainted8 : UserData | -| Controllers/TestController.cs:50:50:50:57 | access to parameter tainted8 : UserData | Views/Other/Test8.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:53:41:53:48 | tainted9 : UserData | Controllers/TestController.cs:55:51:55:58 | access to parameter tainted9 : UserData | -| Controllers/TestController.cs:55:51:55:58 | access to parameter tainted9 : UserData | Views/Other/Test9.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:60:42:60:50 | tainted10 : UserData | Controllers/TestController.cs:62:31:62:39 | access to parameter tainted10 : UserData | -| Controllers/TestController.cs:62:31:62:39 | access to parameter tainted10 : UserData | Views/Test2/Test10.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:65:42:65:50 | tainted11 : UserData | Controllers/TestController.cs:67:23:67:31 | access to parameter tainted11 : UserData | -| Controllers/TestController.cs:67:23:67:31 | access to parameter tainted11 : UserData | Controllers/TestController.cs:70:43:70:43 | x : UserData | -| Controllers/TestController.cs:70:43:70:43 | x : UserData | Controllers/TestController.cs:70:70:70:70 | access to parameter x : UserData | -| Controllers/TestController.cs:70:70:70:70 | access to parameter x : UserData | Views/Test2/Test11.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:81:42:81:50 | tainted13 : UserData | Controllers/TestController.cs:83:37:83:45 | access to parameter tainted13 : UserData | -| Controllers/TestController.cs:83:37:83:45 | access to parameter tainted13 : UserData | Controllers/TestController.cs:94:64:94:64 | x : UserData | -| Controllers/TestController.cs:86:42:86:50 | tainted14 : UserData | Controllers/TestController.cs:88:37:88:45 | access to parameter tainted14 : UserData | -| Controllers/TestController.cs:88:37:88:45 | access to parameter tainted14 : UserData | Controllers/TestController.cs:96:64:96:64 | x : UserData | -| Controllers/TestController.cs:94:64:94:64 | x : UserData | Controllers/TestController.cs:94:113:94:113 | access to parameter x : UserData | -| Controllers/TestController.cs:94:113:94:113 | access to parameter x : UserData | Views/Other/Test13.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:96:64:96:64 | x : UserData | Controllers/TestController.cs:96:93:96:93 | access to parameter x : UserData | -| Controllers/TestController.cs:96:93:96:93 | access to parameter x : UserData | Views/Shared/Test14.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:106:42:106:50 | tainted15 : UserData | Controllers/TestController.cs:108:21:108:29 | access to parameter tainted15 : UserData | -| Controllers/TestController.cs:108:21:108:29 | access to parameter tainted15 : UserData | Views/Custom/Test3/Test15.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:111:42:111:50 | tainted16 : UserData | Controllers/TestController.cs:113:31:113:39 | access to parameter tainted16 : UserData | -| Controllers/TestController.cs:113:31:113:39 | access to parameter tainted16 : UserData | Views/Custom2/Test16.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:119:42:119:50 | tainted17 : UserData | Controllers/TestController.cs:121:31:121:39 | access to parameter tainted17 : UserData | -| Controllers/TestController.cs:121:31:121:39 | access to parameter tainted17 : UserData | Areas/TestArea/Views/Test4/Test17.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:124:42:124:50 | tainted18 : UserData | Controllers/TestController.cs:126:31:126:39 | access to parameter tainted18 : UserData | -| Controllers/TestController.cs:126:31:126:39 | access to parameter tainted18 : UserData | Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:129:42:129:50 | tainted19 : UserData | Controllers/TestController.cs:131:31:131:39 | access to parameter tainted19 : UserData | -| Controllers/TestController.cs:131:31:131:39 | access to parameter tainted19 : UserData | Views/Shared/Test19.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:139:42:139:50 | tainted21 : UserData | Controllers/TestController.cs:141:31:141:39 | access to parameter tainted21 : UserData | -| Controllers/TestController.cs:141:31:141:39 | access to parameter tainted21 : UserData | Pages/Shared/Test21.cshtml:8:16:8:20 | access to property Model : UserData | -| Controllers/TestController.cs:149:40:149:48 | tainted23 : String | Controllers/TestController.cs:152:18:152:26 | access to parameter tainted23 : String | -| Controllers/TestController.cs:152:9:152:9 | [post] access to local variable x : UserData [property Name] : String | Controllers/TestController.cs:153:31:153:31 | access to local variable x : UserData [property Name] : String | -| Controllers/TestController.cs:152:18:152:26 | access to parameter tainted23 : String | Controllers/TestController.cs:152:9:152:9 | [post] access to local variable x : UserData [property Name] : String | -| Controllers/TestController.cs:153:31:153:31 | access to local variable x : UserData [property Name] : String | Views/Shared/Test23.cshtml:8:16:8:20 | access to property Model : UserData [property Name] : String | -| Pages/Shared/Test21.cshtml:8:16:8:20 | access to property Model : UserData | Pages/Shared/Test21.cshtml:8:16:8:25 | access to property Name | -| Views/Custom2/Test16.cshtml:8:16:8:20 | access to property Model : UserData | Views/Custom2/Test16.cshtml:8:16:8:25 | access to property Name | -| Views/Custom/Test3/Test15.cshtml:8:16:8:20 | access to property Model : UserData | Views/Custom/Test3/Test15.cshtml:8:16:8:25 | access to property Name | -| Views/Other/Test5.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test5.cshtml:8:16:8:25 | access to property Name | -| Views/Other/Test6.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test6.cshtml:8:16:8:25 | access to property Name | -| Views/Other/Test8.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test8.cshtml:8:16:8:25 | access to property Name | -| Views/Other/Test9.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test9.cshtml:8:16:8:25 | access to property Name | -| Views/Other/Test13.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test13.cshtml:8:16:8:25 | access to property Name | -| Views/Shared/Test2.cshtml:8:16:8:20 | access to property Model : UserData | Views/Shared/Test2.cshtml:8:16:8:25 | access to property Name | -| Views/Shared/Test14.cshtml:8:16:8:20 | access to property Model : UserData | Views/Shared/Test14.cshtml:8:16:8:25 | access to property Name | -| Views/Shared/Test19.cshtml:8:16:8:20 | access to property Model : UserData | Views/Shared/Test19.cshtml:8:16:8:25 | access to property Name | -| Views/Shared/Test23.cshtml:8:16:8:20 | access to property Model : UserData [property Name] : String | Views/Shared/Test23.cshtml:8:16:8:25 | access to property Name | -| Views/Test2/Test10.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test2/Test10.cshtml:8:16:8:25 | access to property Name | -| Views/Test2/Test11.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test2/Test11.cshtml:8:16:8:25 | access to property Name | -| Views/Test/Test1.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test1.cshtml:8:16:8:25 | access to property Name | -| Views/Test/Test3.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test3.cshtml:8:16:8:25 | access to property Name | -| Views/Test/Test4.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test4.cshtml:8:16:8:25 | access to property Name | -| Views/Test/Test7.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test7.cshtml:8:16:8:25 | access to property Name | +| Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:20 | access to property Model : UserData | Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:25 | access to property Name | provenance | | +| Areas/TestArea/Views/Test4/Test17.cshtml:8:16:8:20 | access to property Model : UserData | Areas/TestArea/Views/Test4/Test17.cshtml:8:16:8:25 | access to property Name | provenance | | +| Controllers/TestController.cs:13:41:13:48 | tainted1 : UserData | Controllers/TestController.cs:15:30:15:37 | access to parameter tainted1 : UserData | provenance | | +| Controllers/TestController.cs:15:30:15:37 | access to parameter tainted1 : UserData | Views/Test/Test1.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:18:41:18:48 | tainted2 : UserData | Controllers/TestController.cs:20:30:20:37 | access to parameter tainted2 : UserData | provenance | | +| Controllers/TestController.cs:20:30:20:37 | access to parameter tainted2 : UserData | Views/Shared/Test2.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:23:41:23:48 | tainted3 : UserData | Controllers/TestController.cs:25:30:25:37 | access to parameter tainted3 : UserData | provenance | | +| Controllers/TestController.cs:25:30:25:37 | access to parameter tainted3 : UserData | Views/Test/Test3.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:28:41:28:48 | tainted4 : UserData | Controllers/TestController.cs:30:32:30:39 | access to parameter tainted4 : UserData | provenance | | +| Controllers/TestController.cs:30:32:30:39 | access to parameter tainted4 : UserData | Views/Test/Test4.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:33:41:33:48 | tainted5 : UserData | Controllers/TestController.cs:35:39:35:46 | access to parameter tainted5 : UserData | provenance | | +| Controllers/TestController.cs:35:39:35:46 | access to parameter tainted5 : UserData | Views/Other/Test5.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:38:41:38:48 | tainted6 : UserData | Controllers/TestController.cs:40:64:40:71 | access to parameter tainted6 : UserData | provenance | | +| Controllers/TestController.cs:40:64:40:71 | access to parameter tainted6 : UserData | Views/Other/Test6.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:43:41:43:48 | tainted7 : UserData | Controllers/TestController.cs:45:21:45:28 | access to parameter tainted7 : UserData | provenance | | +| Controllers/TestController.cs:45:21:45:28 | access to parameter tainted7 : UserData | Views/Test/Test7.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:48:41:48:48 | tainted8 : UserData | Controllers/TestController.cs:50:50:50:57 | access to parameter tainted8 : UserData | provenance | | +| Controllers/TestController.cs:50:50:50:57 | access to parameter tainted8 : UserData | Views/Other/Test8.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:53:41:53:48 | tainted9 : UserData | Controllers/TestController.cs:55:51:55:58 | access to parameter tainted9 : UserData | provenance | | +| Controllers/TestController.cs:55:51:55:58 | access to parameter tainted9 : UserData | Views/Other/Test9.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:60:42:60:50 | tainted10 : UserData | Controllers/TestController.cs:62:31:62:39 | access to parameter tainted10 : UserData | provenance | | +| Controllers/TestController.cs:62:31:62:39 | access to parameter tainted10 : UserData | Views/Test2/Test10.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:65:42:65:50 | tainted11 : UserData | Controllers/TestController.cs:67:23:67:31 | access to parameter tainted11 : UserData | provenance | | +| Controllers/TestController.cs:67:23:67:31 | access to parameter tainted11 : UserData | Controllers/TestController.cs:70:43:70:43 | x : UserData | provenance | | +| Controllers/TestController.cs:70:43:70:43 | x : UserData | Controllers/TestController.cs:70:70:70:70 | access to parameter x : UserData | provenance | | +| Controllers/TestController.cs:70:70:70:70 | access to parameter x : UserData | Views/Test2/Test11.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:81:42:81:50 | tainted13 : UserData | Controllers/TestController.cs:83:37:83:45 | access to parameter tainted13 : UserData | provenance | | +| Controllers/TestController.cs:83:37:83:45 | access to parameter tainted13 : UserData | Controllers/TestController.cs:94:64:94:64 | x : UserData | provenance | | +| Controllers/TestController.cs:86:42:86:50 | tainted14 : UserData | Controllers/TestController.cs:88:37:88:45 | access to parameter tainted14 : UserData | provenance | | +| Controllers/TestController.cs:88:37:88:45 | access to parameter tainted14 : UserData | Controllers/TestController.cs:96:64:96:64 | x : UserData | provenance | | +| Controllers/TestController.cs:94:64:94:64 | x : UserData | Controllers/TestController.cs:94:113:94:113 | access to parameter x : UserData | provenance | | +| Controllers/TestController.cs:94:113:94:113 | access to parameter x : UserData | Views/Other/Test13.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:96:64:96:64 | x : UserData | Controllers/TestController.cs:96:93:96:93 | access to parameter x : UserData | provenance | | +| Controllers/TestController.cs:96:93:96:93 | access to parameter x : UserData | Views/Shared/Test14.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:106:42:106:50 | tainted15 : UserData | Controllers/TestController.cs:108:21:108:29 | access to parameter tainted15 : UserData | provenance | | +| Controllers/TestController.cs:108:21:108:29 | access to parameter tainted15 : UserData | Views/Custom/Test3/Test15.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:111:42:111:50 | tainted16 : UserData | Controllers/TestController.cs:113:31:113:39 | access to parameter tainted16 : UserData | provenance | | +| Controllers/TestController.cs:113:31:113:39 | access to parameter tainted16 : UserData | Views/Custom2/Test16.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:119:42:119:50 | tainted17 : UserData | Controllers/TestController.cs:121:31:121:39 | access to parameter tainted17 : UserData | provenance | | +| Controllers/TestController.cs:121:31:121:39 | access to parameter tainted17 : UserData | Areas/TestArea/Views/Test4/Test17.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:124:42:124:50 | tainted18 : UserData | Controllers/TestController.cs:126:31:126:39 | access to parameter tainted18 : UserData | provenance | | +| Controllers/TestController.cs:126:31:126:39 | access to parameter tainted18 : UserData | Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:129:42:129:50 | tainted19 : UserData | Controllers/TestController.cs:131:31:131:39 | access to parameter tainted19 : UserData | provenance | | +| Controllers/TestController.cs:131:31:131:39 | access to parameter tainted19 : UserData | Views/Shared/Test19.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:139:42:139:50 | tainted21 : UserData | Controllers/TestController.cs:141:31:141:39 | access to parameter tainted21 : UserData | provenance | | +| Controllers/TestController.cs:141:31:141:39 | access to parameter tainted21 : UserData | Pages/Shared/Test21.cshtml:8:16:8:20 | access to property Model : UserData | provenance | | +| Controllers/TestController.cs:149:40:149:48 | tainted23 : String | Controllers/TestController.cs:152:18:152:26 | access to parameter tainted23 : String | provenance | | +| Controllers/TestController.cs:152:9:152:9 | [post] access to local variable x : UserData [property Name] : String | Controllers/TestController.cs:153:31:153:31 | access to local variable x : UserData [property Name] : String | provenance | | +| Controllers/TestController.cs:152:18:152:26 | access to parameter tainted23 : String | Controllers/TestController.cs:152:9:152:9 | [post] access to local variable x : UserData [property Name] : String | provenance | | +| Controllers/TestController.cs:153:31:153:31 | access to local variable x : UserData [property Name] : String | Views/Shared/Test23.cshtml:8:16:8:20 | access to property Model : UserData [property Name] : String | provenance | | +| Pages/Shared/Test21.cshtml:8:16:8:20 | access to property Model : UserData | Pages/Shared/Test21.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Custom2/Test16.cshtml:8:16:8:20 | access to property Model : UserData | Views/Custom2/Test16.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Custom/Test3/Test15.cshtml:8:16:8:20 | access to property Model : UserData | Views/Custom/Test3/Test15.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Other/Test5.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test5.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Other/Test6.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test6.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Other/Test8.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test8.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Other/Test9.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test9.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Other/Test13.cshtml:8:16:8:20 | access to property Model : UserData | Views/Other/Test13.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Shared/Test2.cshtml:8:16:8:20 | access to property Model : UserData | Views/Shared/Test2.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Shared/Test14.cshtml:8:16:8:20 | access to property Model : UserData | Views/Shared/Test14.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Shared/Test19.cshtml:8:16:8:20 | access to property Model : UserData | Views/Shared/Test19.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Shared/Test23.cshtml:8:16:8:20 | access to property Model : UserData [property Name] : String | Views/Shared/Test23.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Test2/Test10.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test2/Test10.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Test2/Test11.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test2/Test11.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Test/Test1.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test1.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Test/Test3.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test3.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Test/Test4.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test4.cshtml:8:16:8:25 | access to property Name | provenance | | +| Views/Test/Test7.cshtml:8:16:8:20 | access to property Model : UserData | Views/Test/Test7.cshtml:8:16:8:25 | access to property Name | provenance | | nodes | Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:20 | access to property Model : UserData | semmle.label | access to property Model : UserData | | Areas/TestArea/Views/Shared/Test18.cshtml:8:16:8:25 | access to property Name | semmle.label | access to property Name | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XssPageModels/test.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XssPageModels/test.expected index 6806ff9abe41..b939e45a0820 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/XssPageModels/test.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XssPageModels/test.expected @@ -1,13 +1,13 @@ edges -| TestModel.cs:13:9:13:12 | [post] this access : TestModel [property Name] : String | TestModel.cs:14:16:14:21 | this access : TestModel [property Name] : String | -| TestModel.cs:13:21:13:28 | call to method source : String | TestModel.cs:13:9:13:12 | [post] this access : TestModel [property Name] : String | -| TestModel.cs:14:16:14:21 | this access : TestModel [property Name] : String | TestPage.cshtml.g.cs:63:35:63:48 | access to property Model : TestModel [property Name] : String | -| TestModel.cs:14:16:14:21 | this access : TestModel [property Name] : String | TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | -| TestModel.cs:18:9:18:12 | [post] this access : TestModel [property Name] : String | TestPage.cshtml.g.cs:63:35:63:48 | access to property Model : TestModel [property Name] : String | -| TestModel.cs:18:9:18:12 | [post] this access : TestModel [property Name] : String | TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | -| TestModel.cs:18:16:18:23 | call to method source : String | TestModel.cs:18:9:18:12 | [post] this access : TestModel [property Name] : String | -| TestPage.cshtml.g.cs:63:35:63:48 | access to property Model : TestModel [property Name] : String | TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | -| TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | TestPage.cshtml:5:16:5:25 | access to property Name | +| TestModel.cs:13:9:13:12 | [post] this access : TestModel [property Name] : String | TestModel.cs:14:16:14:21 | this access : TestModel [property Name] : String | provenance | | +| TestModel.cs:13:21:13:28 | call to method source : String | TestModel.cs:13:9:13:12 | [post] this access : TestModel [property Name] : String | provenance | | +| TestModel.cs:14:16:14:21 | this access : TestModel [property Name] : String | TestPage.cshtml.g.cs:63:35:63:48 | access to property Model : TestModel [property Name] : String | provenance | | +| TestModel.cs:14:16:14:21 | this access : TestModel [property Name] : String | TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | provenance | | +| TestModel.cs:18:9:18:12 | [post] this access : TestModel [property Name] : String | TestPage.cshtml.g.cs:63:35:63:48 | access to property Model : TestModel [property Name] : String | provenance | | +| TestModel.cs:18:9:18:12 | [post] this access : TestModel [property Name] : String | TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | provenance | | +| TestModel.cs:18:16:18:23 | call to method source : String | TestModel.cs:18:9:18:12 | [post] this access : TestModel [property Name] : String | provenance | | +| TestPage.cshtml.g.cs:63:35:63:48 | access to property Model : TestModel [property Name] : String | TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | provenance | | +| TestPage.cshtml:5:16:5:20 | access to property Model : TestModel [property Name] : String | TestPage.cshtml:5:16:5:25 | access to property Name | provenance | | nodes | TestModel.cs:13:9:13:12 | [post] this access : TestModel [property Name] : String | semmle.label | [post] this access : TestModel [property Name] : String | | TestModel.cs:13:21:13:28 | call to method source : String | semmle.label | call to method source : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected index e6048fc656e8..c2ce4a209f62 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected @@ -1,19 +1,19 @@ edges -| SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | -| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | -| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | -| SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | -| SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | -| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | -| SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | -| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | -| SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | -| SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | -| SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | -| SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | -| SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | -| SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | -| SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | +| SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | provenance | | +| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | provenance | | +| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | provenance | | +| SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | provenance | | +| SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | provenance | | +| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | provenance | | +| SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | provenance | | +| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | provenance | | +| SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | provenance | | +| SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | provenance | | +| SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | provenance | | +| SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | provenance | | +| SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | provenance | | +| SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | provenance | | +| SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | provenance | | nodes | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | semmle.label | ... + ... | | SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected index 888573d86b65..9ef1a073fbe1 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected @@ -1,37 +1,37 @@ edges -| SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:33:21:33:40 | access to property Text : String | -| SqlInjection.cs:33:21:33:40 | access to property Text : String | SqlInjection.cs:34:50:34:55 | access to local variable query1 | -| SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:68:33:68:52 | access to property Text : String | -| SqlInjection.cs:68:33:68:52 | access to property Text : String | SqlInjection.cs:69:56:69:61 | access to local variable query1 | -| SqlInjection.cs:68:33:68:52 | access to property Text : String | SqlInjection.cs:70:55:70:60 | access to local variable query1 | -| SqlInjection.cs:82:21:82:29 | access to property Text : String | SqlInjection.cs:83:50:83:55 | access to local variable query1 | -| SqlInjection.cs:92:21:92:29 | access to property Text : String | SqlInjection.cs:93:42:93:52 | access to local variable queryString | -| SqlInjection.cs:92:21:92:29 | access to property Text : String | SqlInjection.cs:93:42:93:52 | access to local variable queryString : String | -| SqlInjection.cs:93:27:93:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:94:50:94:52 | access to local variable cmd | -| SqlInjection.cs:93:42:93:52 | access to local variable queryString : String | SqlInjection.cs:93:27:93:53 | object creation of type SqlCommand : SqlCommand | -| SqlInjectionDapper.cs:20:86:20:94 | access to property Text : String | SqlInjectionDapper.cs:21:55:21:59 | access to local variable query | -| SqlInjectionDapper.cs:29:86:29:94 | access to property Text : String | SqlInjectionDapper.cs:30:66:30:70 | access to local variable query | -| SqlInjectionDapper.cs:38:86:38:94 | access to property Text : String | SqlInjectionDapper.cs:39:63:39:67 | access to local variable query | -| SqlInjectionDapper.cs:47:86:47:94 | access to property Text : String | SqlInjectionDapper.cs:49:47:49:51 | access to local variable query | -| SqlInjectionDapper.cs:57:86:57:94 | access to property Text : String | SqlInjectionDapper.cs:58:42:58:46 | access to local variable query | -| SqlInjectionDapper.cs:66:86:66:94 | access to property Text : String | SqlInjectionDapper.cs:67:42:67:46 | access to local variable query | -| SqlInjectionDapper.cs:75:86:75:94 | access to property Text : String | SqlInjectionDapper.cs:77:52:77:56 | access to local variable query | -| SqlInjectionSqlite.cs:19:51:19:63 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:19:51:19:68 | access to property Text | -| SqlInjectionSqlite.cs:24:23:24:71 | object creation of type SQLiteCommand : SQLiteCommand | SqlInjectionSqlite.cs:44:45:44:47 | access to local variable cmd | -| SqlInjectionSqlite.cs:24:41:24:53 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:24:41:24:58 | access to property Text | -| SqlInjectionSqlite.cs:24:41:24:53 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:24:41:24:58 | access to property Text : String | -| SqlInjectionSqlite.cs:24:41:24:58 | access to property Text : String | SqlInjectionSqlite.cs:24:23:24:71 | object creation of type SQLiteCommand : SQLiteCommand | -| SqlInjectionSqlite.cs:33:49:33:61 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:33:49:33:66 | access to property Text | -| SqlInjectionSqlite.cs:39:45:39:57 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:39:45:39:62 | access to property Text | -| SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | -| SqlInjectionSqlite.cs:49:51:49:63 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:49:51:49:68 | access to property Text : String | -| SqlInjectionSqlite.cs:49:51:49:68 | access to property Text : String | SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | -| SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | -| SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | -| SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | -| SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | -| SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | -| SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | +| SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:33:21:33:40 | access to property Text : String | provenance | | +| SqlInjection.cs:33:21:33:40 | access to property Text : String | SqlInjection.cs:34:50:34:55 | access to local variable query1 | provenance | | +| SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:68:33:68:52 | access to property Text : String | provenance | | +| SqlInjection.cs:68:33:68:52 | access to property Text : String | SqlInjection.cs:69:56:69:61 | access to local variable query1 | provenance | | +| SqlInjection.cs:68:33:68:52 | access to property Text : String | SqlInjection.cs:70:55:70:60 | access to local variable query1 | provenance | | +| SqlInjection.cs:82:21:82:29 | access to property Text : String | SqlInjection.cs:83:50:83:55 | access to local variable query1 | provenance | | +| SqlInjection.cs:92:21:92:29 | access to property Text : String | SqlInjection.cs:93:42:93:52 | access to local variable queryString | provenance | | +| SqlInjection.cs:92:21:92:29 | access to property Text : String | SqlInjection.cs:93:42:93:52 | access to local variable queryString : String | provenance | | +| SqlInjection.cs:93:27:93:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:94:50:94:52 | access to local variable cmd | provenance | | +| SqlInjection.cs:93:42:93:52 | access to local variable queryString : String | SqlInjection.cs:93:27:93:53 | object creation of type SqlCommand : SqlCommand | provenance | | +| SqlInjectionDapper.cs:20:86:20:94 | access to property Text : String | SqlInjectionDapper.cs:21:55:21:59 | access to local variable query | provenance | | +| SqlInjectionDapper.cs:29:86:29:94 | access to property Text : String | SqlInjectionDapper.cs:30:66:30:70 | access to local variable query | provenance | | +| SqlInjectionDapper.cs:38:86:38:94 | access to property Text : String | SqlInjectionDapper.cs:39:63:39:67 | access to local variable query | provenance | | +| SqlInjectionDapper.cs:47:86:47:94 | access to property Text : String | SqlInjectionDapper.cs:49:47:49:51 | access to local variable query | provenance | | +| SqlInjectionDapper.cs:57:86:57:94 | access to property Text : String | SqlInjectionDapper.cs:58:42:58:46 | access to local variable query | provenance | | +| SqlInjectionDapper.cs:66:86:66:94 | access to property Text : String | SqlInjectionDapper.cs:67:42:67:46 | access to local variable query | provenance | | +| SqlInjectionDapper.cs:75:86:75:94 | access to property Text : String | SqlInjectionDapper.cs:77:52:77:56 | access to local variable query | provenance | | +| SqlInjectionSqlite.cs:19:51:19:63 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:19:51:19:68 | access to property Text | provenance | | +| SqlInjectionSqlite.cs:24:23:24:71 | object creation of type SQLiteCommand : SQLiteCommand | SqlInjectionSqlite.cs:44:45:44:47 | access to local variable cmd | provenance | | +| SqlInjectionSqlite.cs:24:41:24:53 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:24:41:24:58 | access to property Text | provenance | | +| SqlInjectionSqlite.cs:24:41:24:53 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:24:41:24:58 | access to property Text : String | provenance | | +| SqlInjectionSqlite.cs:24:41:24:58 | access to property Text : String | SqlInjectionSqlite.cs:24:23:24:71 | object creation of type SQLiteCommand : SQLiteCommand | provenance | | +| SqlInjectionSqlite.cs:33:49:33:61 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:33:49:33:66 | access to property Text | provenance | | +| SqlInjectionSqlite.cs:39:45:39:57 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:39:45:39:62 | access to property Text | provenance | | +| SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | provenance | | +| SqlInjectionSqlite.cs:49:51:49:63 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:49:51:49:68 | access to property Text : String | provenance | | +| SqlInjectionSqlite.cs:49:51:49:68 | access to property Text : String | SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | provenance | | +| SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | provenance | | +| SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | provenance | | +| SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | provenance | | +| SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | provenance | | +| SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | provenance | | +| SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | provenance | | nodes | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | | SqlInjection.cs:33:21:33:40 | access to property Text : String | semmle.label | access to property Text : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected index 0699a17d531f..ec812749311c 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected @@ -1,17 +1,17 @@ edges -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:11:27:11:61 | access to indexer : String | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:14:54:14:78 | ... + ... | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:16:21:16:45 | ... + ... | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:23:21:23:45 | ... + ... | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:24:53:24:77 | ... + ... | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:27:48:27:70 | ... + ... | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:29:20:29:42 | ... + ... | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:14:54:14:78 | ... + ... | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:16:21:16:45 | ... + ... | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:23:21:23:45 | ... + ... | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:24:53:24:77 | ... + ... | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:27:48:27:70 | ... + ... | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:29:20:29:42 | ... + ... | +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:11:27:11:61 | access to indexer : String | provenance | | +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:14:54:14:78 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:16:21:16:45 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:23:21:23:45 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:24:53:24:77 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:27:48:27:70 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:29:20:29:42 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:14:54:14:78 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:16:21:16:45 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:23:21:23:45 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:24:53:24:77 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:27:48:27:70 | ... + ... | provenance | | +| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:29:20:29:42 | ... + ... | provenance | | nodes | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | LDAPInjection.cs:11:27:11:61 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected index 34e5ef3dc99f..d66714c82cc5 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected @@ -1,5 +1,5 @@ edges -| StoredLDAPInjection.cs:22:83:22:109 | call to method GetString : String | StoredLDAPInjection.cs:22:66:22:109 | ... + ... | +| StoredLDAPInjection.cs:22:83:22:109 | call to method GetString : String | StoredLDAPInjection.cs:22:66:22:109 | ... + ... | provenance | | nodes | StoredLDAPInjection.cs:22:66:22:109 | ... + ... | semmle.label | ... + ... | | StoredLDAPInjection.cs:22:83:22:109 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected index 63b1d336449d..028af79c5dff 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/XMLInjection.expected @@ -1,7 +1,7 @@ edges -| Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | Test.cs:8:27:8:65 | access to indexer : String | -| Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | Test.cs:15:25:15:80 | ... + ... | -| Test.cs:8:27:8:65 | access to indexer : String | Test.cs:15:25:15:80 | ... + ... | +| Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | Test.cs:8:27:8:65 | access to indexer : String | provenance | | +| Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | Test.cs:15:25:15:80 | ... + ... | provenance | | +| Test.cs:8:27:8:65 | access to indexer : String | Test.cs:15:25:15:80 | ... + ... | provenance | | nodes | Test.cs:8:27:8:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | Test.cs:8:27:8:65 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected index 006ca27fdd72..f247e97bc359 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.expected @@ -1,9 +1,9 @@ edges -| CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:23:23:23:53 | access to indexer : String | -| CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:29:64:29:67 | access to local variable code | -| CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:40:36:40:39 | access to local variable code | -| CodeInjection.cs:23:23:23:53 | access to indexer : String | CodeInjection.cs:29:64:29:67 | access to local variable code | -| CodeInjection.cs:23:23:23:53 | access to indexer : String | CodeInjection.cs:40:36:40:39 | access to local variable code | +| CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:23:23:23:53 | access to indexer : String | provenance | | +| CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:29:64:29:67 | access to local variable code | provenance | | +| CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | CodeInjection.cs:40:36:40:39 | access to local variable code | provenance | | +| CodeInjection.cs:23:23:23:53 | access to indexer : String | CodeInjection.cs:29:64:29:67 | access to local variable code | provenance | | +| CodeInjection.cs:23:23:23:53 | access to indexer : String | CodeInjection.cs:40:36:40:39 | access to local variable code | provenance | | nodes | CodeInjection.cs:23:23:23:45 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | CodeInjection.cs:23:23:23:53 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected index 75ef72855575..cc089c9898ba 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-099/ResourceInjection.expected @@ -1,9 +1,9 @@ edges -| ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:8:27:8:61 | access to indexer : String | -| ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:11:57:11:72 | access to local variable connectionString | -| ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:13:42:13:57 | access to local variable connectionString | -| ResourceInjection.cs:8:27:8:61 | access to indexer : String | ResourceInjection.cs:11:57:11:72 | access to local variable connectionString | -| ResourceInjection.cs:8:27:8:61 | access to indexer : String | ResourceInjection.cs:13:42:13:57 | access to local variable connectionString | +| ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:8:27:8:61 | access to indexer : String | provenance | | +| ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:11:57:11:72 | access to local variable connectionString | provenance | | +| ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | ResourceInjection.cs:13:42:13:57 | access to local variable connectionString | provenance | | +| ResourceInjection.cs:8:27:8:61 | access to indexer : String | ResourceInjection.cs:11:57:11:72 | access to local variable connectionString | provenance | | +| ResourceInjection.cs:8:27:8:61 | access to indexer : String | ResourceInjection.cs:13:42:13:57 | access to local variable connectionString | provenance | | nodes | ResourceInjection.cs:8:27:8:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | ResourceInjection.cs:8:27:8:61 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected b/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected index 869daaa60cb1..72d5d4978209 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-112/MissingXMLValidation.expected @@ -1,20 +1,20 @@ edges -| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | -| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | -| MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:16:26:16:58 | object creation of type StringReader | -| MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:21:26:21:58 | object creation of type StringReader | -| MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:27:26:27:58 | object creation of type StringReader | -| MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:35:26:35:58 | object creation of type StringReader | -| MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:45:26:45:58 | object creation of type StringReader | +| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | provenance | | +| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | provenance | | +| MissingXMLValidation.cs:16:43:16:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:16:26:16:58 | object creation of type StringReader | provenance | | +| MissingXMLValidation.cs:21:43:21:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:21:26:21:58 | object creation of type StringReader | provenance | | +| MissingXMLValidation.cs:27:43:27:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:27:26:27:58 | object creation of type StringReader | provenance | | +| MissingXMLValidation.cs:35:43:35:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:35:26:35:58 | object creation of type StringReader | provenance | | +| MissingXMLValidation.cs:45:43:45:57 | access to local variable userProvidedXml : String | MissingXMLValidation.cs:45:26:45:58 | object creation of type StringReader | provenance | | nodes | MissingXMLValidation.cs:12:34:12:56 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | MissingXMLValidation.cs:12:34:12:75 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/AssemblyPathInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/AssemblyPathInjection.expected index 396d766c3e6b..a13b0d640044 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/AssemblyPathInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/AssemblyPathInjection.expected @@ -1,7 +1,7 @@ edges -| Test.cs:7:26:7:48 | access to property QueryString : NameValueCollection | Test.cs:7:26:7:63 | access to indexer : String | -| Test.cs:7:26:7:48 | access to property QueryString : NameValueCollection | Test.cs:10:36:10:46 | access to local variable libraryName | -| Test.cs:7:26:7:63 | access to indexer : String | Test.cs:10:36:10:46 | access to local variable libraryName | +| Test.cs:7:26:7:48 | access to property QueryString : NameValueCollection | Test.cs:7:26:7:63 | access to indexer : String | provenance | | +| Test.cs:7:26:7:48 | access to property QueryString : NameValueCollection | Test.cs:10:36:10:46 | access to local variable libraryName | provenance | | +| Test.cs:7:26:7:63 | access to indexer : String | Test.cs:10:36:10:46 | access to local variable libraryName | provenance | | nodes | Test.cs:7:26:7:48 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | Test.cs:7:26:7:63 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected index 4e863739f340..b01941c6d396 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-117/LogForging.expected @@ -1,12 +1,12 @@ edges -| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:18:27:18:61 | access to indexer : String | -| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:21:21:21:43 | ... + ... | -| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:29:50:29:72 | ... + ... | -| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:33:26:33:33 | access to local variable username | -| LogForging.cs:18:27:18:61 | access to indexer : String | LogForging.cs:21:21:21:43 | ... + ... | -| LogForging.cs:18:27:18:61 | access to indexer : String | LogForging.cs:29:50:29:72 | ... + ... | -| LogForging.cs:18:27:18:61 | access to indexer : String | LogForging.cs:33:26:33:33 | access to local variable username | -| LogForgingAsp.cs:8:32:8:39 | username : String | LogForgingAsp.cs:12:21:12:43 | ... + ... | +| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:18:27:18:61 | access to indexer : String | provenance | | +| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:21:21:21:43 | ... + ... | provenance | | +| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:29:50:29:72 | ... + ... | provenance | | +| LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | LogForging.cs:33:26:33:33 | access to local variable username | provenance | | +| LogForging.cs:18:27:18:61 | access to indexer : String | LogForging.cs:21:21:21:43 | ... + ... | provenance | | +| LogForging.cs:18:27:18:61 | access to indexer : String | LogForging.cs:29:50:29:72 | ... + ... | provenance | | +| LogForging.cs:18:27:18:61 | access to indexer : String | LogForging.cs:33:26:33:33 | access to local variable username | provenance | | +| LogForgingAsp.cs:8:32:8:39 | username : String | LogForgingAsp.cs:12:21:12:43 | ... + ... | provenance | | nodes | LogForging.cs:18:27:18:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | LogForging.cs:18:27:18:61 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected b/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected index 5945b83d6352..9ae706885f6a 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-134/UncontrolledFormatString.expected @@ -1,13 +1,13 @@ edges -| ConsoleUncontrolledFormatString.cs:8:22:8:39 | call to method ReadLine : String | ConsoleUncontrolledFormatString.cs:11:31:11:36 | access to local variable format | -| UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | -| UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:12:23:12:26 | access to local variable path | -| UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:15:46:15:49 | access to local variable path | -| UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | UncontrolledFormatString.cs:12:23:12:26 | access to local variable path | -| UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | UncontrolledFormatString.cs:15:46:15:49 | access to local variable path | -| UncontrolledFormatStringBad.cs:9:25:9:47 | access to property QueryString : NameValueCollection | UncontrolledFormatStringBad.cs:9:25:9:61 | access to indexer : String | -| UncontrolledFormatStringBad.cs:9:25:9:47 | access to property QueryString : NameValueCollection | UncontrolledFormatStringBad.cs:12:39:12:44 | access to local variable format | -| UncontrolledFormatStringBad.cs:9:25:9:61 | access to indexer : String | UncontrolledFormatStringBad.cs:12:39:12:44 | access to local variable format | +| ConsoleUncontrolledFormatString.cs:8:22:8:39 | call to method ReadLine : String | ConsoleUncontrolledFormatString.cs:11:31:11:36 | access to local variable format | provenance | | +| UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | provenance | | +| UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:12:23:12:26 | access to local variable path | provenance | | +| UncontrolledFormatString.cs:9:23:9:45 | access to property QueryString : NameValueCollection | UncontrolledFormatString.cs:15:46:15:49 | access to local variable path | provenance | | +| UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | UncontrolledFormatString.cs:12:23:12:26 | access to local variable path | provenance | | +| UncontrolledFormatString.cs:9:23:9:53 | access to indexer : String | UncontrolledFormatString.cs:15:46:15:49 | access to local variable path | provenance | | +| UncontrolledFormatStringBad.cs:9:25:9:47 | access to property QueryString : NameValueCollection | UncontrolledFormatStringBad.cs:9:25:9:61 | access to indexer : String | provenance | | +| UncontrolledFormatStringBad.cs:9:25:9:47 | access to property QueryString : NameValueCollection | UncontrolledFormatStringBad.cs:12:39:12:44 | access to local variable format | provenance | | +| UncontrolledFormatStringBad.cs:9:25:9:61 | access to indexer : String | UncontrolledFormatStringBad.cs:12:39:12:44 | access to local variable format | provenance | | nodes | ConsoleUncontrolledFormatString.cs:8:22:8:39 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | | ConsoleUncontrolledFormatString.cs:11:31:11:36 | access to local variable format | semmle.label | access to local variable format | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/ExposureInTransmittedData.expected b/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/ExposureInTransmittedData.expected index 9399dd0a6ebd..9a1d6036ad7f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/ExposureInTransmittedData.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/ExposureInTransmittedData.expected @@ -1,9 +1,9 @@ edges -| ExposureInTransmittedData.cs:24:32:24:38 | access to property Data : IDictionary | ExposureInTransmittedData.cs:24:32:24:50 | access to indexer | -| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:31:53:31:53 | access to local variable p | -| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:31:56:31:56 | access to local variable p | -| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:32:24:32:52 | ... + ... | -| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:33:27:33:27 | access to local variable p | +| ExposureInTransmittedData.cs:24:32:24:38 | access to property Data : IDictionary | ExposureInTransmittedData.cs:24:32:24:50 | access to indexer | provenance | | +| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:31:53:31:53 | access to local variable p | provenance | | +| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:31:56:31:56 | access to local variable p | provenance | | +| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:32:24:32:52 | ... + ... | provenance | | +| ExposureInTransmittedData.cs:30:17:30:36 | call to method GetField : String | ExposureInTransmittedData.cs:33:27:33:27 | access to local variable p | provenance | | nodes | ExposureInTransmittedData.cs:14:32:14:39 | access to local variable password | semmle.label | access to local variable password | | ExposureInTransmittedData.cs:18:32:18:44 | call to method ToString | semmle.label | call to method ToString | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected b/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected index 3e273ef83b89..4ba1ed42f1d0 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-209/ExceptionInformationExposure.expected @@ -1,10 +1,10 @@ edges -| ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | -| ExceptionInformationExposure.cs:23:32:23:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | -| ExceptionInformationExposure.cs:39:28:39:44 | access to property InnerException : Exception | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | -| ExceptionInformationExposure.cs:40:28:40:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | -| ExceptionInformationExposure.cs:41:28:41:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | -| ExceptionInformationExposure.cs:47:28:47:44 | object creation of type MyException : MyException | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | +| ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | provenance | | +| ExceptionInformationExposure.cs:23:32:23:33 | access to local variable ex : Exception | ExceptionInformationExposure.cs:23:32:23:44 | access to property StackTrace | provenance | | +| ExceptionInformationExposure.cs:39:28:39:44 | access to property InnerException : Exception | ExceptionInformationExposure.cs:39:28:39:55 | access to property StackTrace | provenance | | +| ExceptionInformationExposure.cs:40:28:40:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:40:28:40:40 | access to property StackTrace | provenance | | +| ExceptionInformationExposure.cs:41:28:41:29 | access to local variable ex : Exception | ExceptionInformationExposure.cs:41:28:41:40 | call to method ToString | provenance | | +| ExceptionInformationExposure.cs:47:28:47:44 | object creation of type MyException : MyException | ExceptionInformationExposure.cs:47:28:47:55 | call to method ToString | provenance | | nodes | ExceptionInformationExposure.cs:19:32:19:33 | access to local variable ex : Exception | semmle.label | access to local variable ex : Exception | | ExceptionInformationExposure.cs:19:32:19:44 | call to method ToString | semmle.label | call to method ToString | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-321/HardcodedSymmetricEncryptionKey/HardcodedSymmetricEncryptionKey.expected b/csharp/ql/test/query-tests/Security Features/CWE-321/HardcodedSymmetricEncryptionKey/HardcodedSymmetricEncryptionKey.expected index 10cb82ff67e4..8fcc865b54c0 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-321/HardcodedSymmetricEncryptionKey/HardcodedSymmetricEncryptionKey.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-321/HardcodedSymmetricEncryptionKey/HardcodedSymmetricEncryptionKey.expected @@ -1,17 +1,17 @@ edges -| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:31:21:31:21 | access to local variable d | -| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:36:37:36:37 | access to local variable d : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:41:50:41:50 | access to local variable c : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:50:35:50:35 | access to local variable c : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:28:39:28:116 | call to method GetBytes : Byte[] | HardcodedSymmetricEncryptionKey.cs:44:51:44:69 | access to local variable byteArrayFromString : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:28:62:28:115 | "Hello, world: here is a very bad way to create a key" : String | HardcodedSymmetricEncryptionKey.cs:28:39:28:116 | call to method GetBytes : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:36:37:36:37 | access to local variable d : Byte[] | HardcodedSymmetricEncryptionKey.cs:103:57:103:59 | key : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:41:50:41:50 | access to local variable c : Byte[] | HardcodedSymmetricEncryptionKey.cs:112:63:112:65 | key : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:44:51:44:69 | access to local variable byteArrayFromString : Byte[] | HardcodedSymmetricEncryptionKey.cs:112:63:112:65 | key : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:50:35:50:35 | access to local variable c : Byte[] | HardcodedSymmetricEncryptionKey.cs:59:64:59:71 | password : Byte[] | -| HardcodedSymmetricEncryptionKey.cs:59:64:59:71 | password : Byte[] | HardcodedSymmetricEncryptionKey.cs:68:87:68:94 | access to parameter password | -| HardcodedSymmetricEncryptionKey.cs:103:57:103:59 | key : Byte[] | HardcodedSymmetricEncryptionKey.cs:108:23:108:25 | access to parameter key | -| HardcodedSymmetricEncryptionKey.cs:112:63:112:65 | key : Byte[] | HardcodedSymmetricEncryptionKey.cs:121:87:121:89 | access to parameter key | +| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:31:21:31:21 | access to local variable d | provenance | | +| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:36:37:36:37 | access to local variable d : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:41:50:41:50 | access to local variable c : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:25:21:25:97 | array creation of type Byte[] : Byte[] | HardcodedSymmetricEncryptionKey.cs:50:35:50:35 | access to local variable c : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:28:39:28:116 | call to method GetBytes : Byte[] | HardcodedSymmetricEncryptionKey.cs:44:51:44:69 | access to local variable byteArrayFromString : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:28:62:28:115 | "Hello, world: here is a very bad way to create a key" : String | HardcodedSymmetricEncryptionKey.cs:28:39:28:116 | call to method GetBytes : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:36:37:36:37 | access to local variable d : Byte[] | HardcodedSymmetricEncryptionKey.cs:103:57:103:59 | key : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:41:50:41:50 | access to local variable c : Byte[] | HardcodedSymmetricEncryptionKey.cs:112:63:112:65 | key : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:44:51:44:69 | access to local variable byteArrayFromString : Byte[] | HardcodedSymmetricEncryptionKey.cs:112:63:112:65 | key : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:50:35:50:35 | access to local variable c : Byte[] | HardcodedSymmetricEncryptionKey.cs:59:64:59:71 | password : Byte[] | provenance | | +| HardcodedSymmetricEncryptionKey.cs:59:64:59:71 | password : Byte[] | HardcodedSymmetricEncryptionKey.cs:68:87:68:94 | access to parameter password | provenance | | +| HardcodedSymmetricEncryptionKey.cs:103:57:103:59 | key : Byte[] | HardcodedSymmetricEncryptionKey.cs:108:23:108:25 | access to parameter key | provenance | | +| HardcodedSymmetricEncryptionKey.cs:112:63:112:65 | key : Byte[] | HardcodedSymmetricEncryptionKey.cs:121:87:121:89 | access to parameter key | provenance | | nodes | HardcodedSymmetricEncryptionKey.cs:17:21:17:97 | array creation of type Byte[] | semmle.label | array creation of type Byte[] | | HardcodedSymmetricEncryptionKey.cs:22:23:22:99 | array creation of type Byte[] | semmle.label | array creation of type Byte[] | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-327/DontInstallRootCert/DontInstallRootCert.expected b/csharp/ql/test/query-tests/Security Features/CWE-327/DontInstallRootCert/DontInstallRootCert.expected index 9f20b582a86d..616fe890da8e 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-327/DontInstallRootCert/DontInstallRootCert.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-327/DontInstallRootCert/DontInstallRootCert.expected @@ -1,7 +1,7 @@ edges -| Test.cs:15:31:15:59 | object creation of type X509Store : X509Store | Test.cs:18:13:18:17 | access to local variable store | -| Test.cs:25:31:25:86 | object creation of type X509Store : X509Store | Test.cs:28:13:28:17 | access to local variable store | -| Test.cs:70:31:70:86 | object creation of type X509Store : X509Store | Test.cs:73:13:73:17 | access to local variable store | +| Test.cs:15:31:15:59 | object creation of type X509Store : X509Store | Test.cs:18:13:18:17 | access to local variable store | provenance | | +| Test.cs:25:31:25:86 | object creation of type X509Store : X509Store | Test.cs:28:13:28:17 | access to local variable store | provenance | | +| Test.cs:70:31:70:86 | object creation of type X509Store : X509Store | Test.cs:73:13:73:17 | access to local variable store | provenance | | nodes | Test.cs:15:31:15:59 | object creation of type X509Store : X509Store | semmle.label | object creation of type X509Store : X509Store | | Test.cs:18:13:18:17 | access to local variable store | semmle.label | access to local variable store | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/InsecureSQLConnection.expected b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/InsecureSQLConnection.expected index 14d9e9213c62..fc657fcde1d1 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/InsecureSQLConnection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/InsecureSQLConnection.expected @@ -1,6 +1,6 @@ edges -| InsecureSQLConnection.cs:44:17:44:64 | "Server=1.2.3.4;Database=Anything;UID=ab;Pwd=cd" : String | InsecureSQLConnection.cs:46:81:46:93 | access to local variable connectString | -| InsecureSQLConnection.cs:53:17:53:78 | "Server=1.2.3.4;Database=Anything;UID=ab;Pwd=cd;Encrypt=false" : String | InsecureSQLConnection.cs:55:81:55:93 | access to local variable connectString | +| InsecureSQLConnection.cs:44:17:44:64 | "Server=1.2.3.4;Database=Anything;UID=ab;Pwd=cd" : String | InsecureSQLConnection.cs:46:81:46:93 | access to local variable connectString | provenance | | +| InsecureSQLConnection.cs:53:17:53:78 | "Server=1.2.3.4;Database=Anything;UID=ab;Pwd=cd;Encrypt=false" : String | InsecureSQLConnection.cs:55:81:55:93 | access to local variable connectString | provenance | | nodes | InsecureSQLConnection.cs:38:52:38:128 | "Server=myServerName\\myInstanceName;Database=myDataBase;User Id=myUsername;" | semmle.label | "Server=myServerName\\myInstanceName;Database=myDataBase;User Id=myUsername;" | | InsecureSQLConnection.cs:44:17:44:64 | "Server=1.2.3.4;Database=Anything;UID=ab;Pwd=cd" : String | semmle.label | "Server=1.2.3.4;Database=Anything;UID=ab;Pwd=cd" : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected index 20312f4c17be..b0c0dbae40f8 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected @@ -1,19 +1,19 @@ edges -| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | -| InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | -| InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | -| InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder | -| InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder | -| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | -| InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | -| InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | -| InsecureRandomness.cs:60:23:60:40 | access to array element : String | InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | -| InsecureRandomness.cs:60:31:60:39 | call to method Next : Int32 | InsecureRandomness.cs:60:23:60:40 | access to array element : String | -| InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | InsecureRandomness.cs:62:16:62:32 | call to method ToString : String | -| InsecureRandomness.cs:62:16:62:32 | call to method ToString : String | InsecureRandomness.cs:13:20:13:56 | call to method InsecureRandomStringFromSelection | -| InsecureRandomness.cs:72:23:72:40 | access to indexer : String | InsecureRandomness.cs:74:16:74:21 | access to local variable result : String | -| InsecureRandomness.cs:72:31:72:39 | call to method Next : Int32 | InsecureRandomness.cs:72:23:72:40 | access to indexer : String | -| InsecureRandomness.cs:74:16:74:21 | access to local variable result : String | InsecureRandomness.cs:14:20:14:54 | call to method InsecureRandomStringFromIndexer | +| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | provenance | | +| InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | provenance | | +| InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | provenance | | +| InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder | provenance | | +| InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder | provenance | | +| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | provenance | | +| InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | provenance | | +| InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | provenance | | +| InsecureRandomness.cs:60:23:60:40 | access to array element : String | InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | provenance | | +| InsecureRandomness.cs:60:31:60:39 | call to method Next : Int32 | InsecureRandomness.cs:60:23:60:40 | access to array element : String | provenance | | +| InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | InsecureRandomness.cs:62:16:62:32 | call to method ToString : String | provenance | | +| InsecureRandomness.cs:62:16:62:32 | call to method ToString : String | InsecureRandomness.cs:13:20:13:56 | call to method InsecureRandomStringFromSelection | provenance | | +| InsecureRandomness.cs:72:23:72:40 | access to indexer : String | InsecureRandomness.cs:74:16:74:21 | access to local variable result : String | provenance | | +| InsecureRandomness.cs:72:31:72:39 | call to method Next : Int32 | InsecureRandomness.cs:72:23:72:40 | access to indexer : String | provenance | | +| InsecureRandomness.cs:74:16:74:21 | access to local variable result : String | InsecureRandomness.cs:14:20:14:54 | call to method InsecureRandomStringFromIndexer | provenance | | nodes | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | semmle.label | call to method InsecureRandomString | | InsecureRandomness.cs:13:20:13:56 | call to method InsecureRandomStringFromSelection | semmle.label | call to method InsecureRandomStringFromSelection | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/UnsafeDeserializationUntrustedInput.expected b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/UnsafeDeserializationUntrustedInput.expected index 0761f950feb5..d9ee462e64ac 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/UnsafeDeserializationUntrustedInput.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/UnsafeDeserializationUntrustedInput.expected @@ -1,23 +1,23 @@ edges -| BinaryFormatterUntrustedInputBad.cs:12:48:12:83 | call to method GetBytes : Byte[] | BinaryFormatterUntrustedInputBad.cs:12:31:12:84 | object creation of type MemoryStream | -| BinaryFormatterUntrustedInputBad.cs:12:71:12:77 | access to parameter textBox : TextBox | BinaryFormatterUntrustedInputBad.cs:12:71:12:82 | access to property Text : String | -| BinaryFormatterUntrustedInputBad.cs:12:71:12:82 | access to property Text : String | BinaryFormatterUntrustedInputBad.cs:12:48:12:83 | call to method GetBytes : Byte[] | -| DataContractJsonSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | DataContractJsonSerializerUntrustedInputBad.cs:13:30:13:80 | object creation of type MemoryStream | -| DataContractJsonSerializerUntrustedInputBad.cs:13:70:13:73 | access to parameter data : TextBox | DataContractJsonSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | -| DataContractJsonSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | DataContractJsonSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | -| DataContractSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | DataContractSerializerUntrustedInputBad.cs:13:30:13:80 | object creation of type MemoryStream | -| DataContractSerializerUntrustedInputBad.cs:13:70:13:73 | access to parameter data : TextBox | DataContractSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | -| DataContractSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | DataContractSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | -| ResourceReaderUntrustedInputBad.cs:11:54:11:86 | call to method GetBytes : Byte[] | ResourceReaderUntrustedInputBad.cs:11:37:11:87 | object creation of type MemoryStream | -| ResourceReaderUntrustedInputBad.cs:11:77:11:80 | access to parameter data : TextBox | ResourceReaderUntrustedInputBad.cs:11:77:11:85 | access to property Text : String | -| ResourceReaderUntrustedInputBad.cs:11:77:11:85 | access to property Text : String | ResourceReaderUntrustedInputBad.cs:11:54:11:86 | call to method GetBytes : Byte[] | -| UnsafeDeserializationUntrustedInputBad.cs:10:37:10:43 | access to parameter textBox : TextBox | UnsafeDeserializationUntrustedInputBad.cs:10:37:10:48 | access to property Text | -| XmlObjectSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | XmlObjectSerializerUntrustedInputBad.cs:13:30:13:80 | object creation of type MemoryStream | -| XmlObjectSerializerUntrustedInputBad.cs:13:70:13:73 | access to parameter data : TextBox | XmlObjectSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | -| XmlObjectSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | XmlObjectSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | -| XmlSerializerUntrustedInputBad.cs:13:48:13:80 | call to method GetBytes : Byte[] | XmlSerializerUntrustedInputBad.cs:13:31:13:81 | object creation of type MemoryStream | -| XmlSerializerUntrustedInputBad.cs:13:71:13:74 | access to parameter data : TextBox | XmlSerializerUntrustedInputBad.cs:13:71:13:79 | access to property Text : String | -| XmlSerializerUntrustedInputBad.cs:13:71:13:79 | access to property Text : String | XmlSerializerUntrustedInputBad.cs:13:48:13:80 | call to method GetBytes : Byte[] | +| BinaryFormatterUntrustedInputBad.cs:12:48:12:83 | call to method GetBytes : Byte[] | BinaryFormatterUntrustedInputBad.cs:12:31:12:84 | object creation of type MemoryStream | provenance | | +| BinaryFormatterUntrustedInputBad.cs:12:71:12:77 | access to parameter textBox : TextBox | BinaryFormatterUntrustedInputBad.cs:12:71:12:82 | access to property Text : String | provenance | | +| BinaryFormatterUntrustedInputBad.cs:12:71:12:82 | access to property Text : String | BinaryFormatterUntrustedInputBad.cs:12:48:12:83 | call to method GetBytes : Byte[] | provenance | | +| DataContractJsonSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | DataContractJsonSerializerUntrustedInputBad.cs:13:30:13:80 | object creation of type MemoryStream | provenance | | +| DataContractJsonSerializerUntrustedInputBad.cs:13:70:13:73 | access to parameter data : TextBox | DataContractJsonSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | provenance | | +| DataContractJsonSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | DataContractJsonSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | provenance | | +| DataContractSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | DataContractSerializerUntrustedInputBad.cs:13:30:13:80 | object creation of type MemoryStream | provenance | | +| DataContractSerializerUntrustedInputBad.cs:13:70:13:73 | access to parameter data : TextBox | DataContractSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | provenance | | +| DataContractSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | DataContractSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | provenance | | +| ResourceReaderUntrustedInputBad.cs:11:54:11:86 | call to method GetBytes : Byte[] | ResourceReaderUntrustedInputBad.cs:11:37:11:87 | object creation of type MemoryStream | provenance | | +| ResourceReaderUntrustedInputBad.cs:11:77:11:80 | access to parameter data : TextBox | ResourceReaderUntrustedInputBad.cs:11:77:11:85 | access to property Text : String | provenance | | +| ResourceReaderUntrustedInputBad.cs:11:77:11:85 | access to property Text : String | ResourceReaderUntrustedInputBad.cs:11:54:11:86 | call to method GetBytes : Byte[] | provenance | | +| UnsafeDeserializationUntrustedInputBad.cs:10:37:10:43 | access to parameter textBox : TextBox | UnsafeDeserializationUntrustedInputBad.cs:10:37:10:48 | access to property Text | provenance | | +| XmlObjectSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | XmlObjectSerializerUntrustedInputBad.cs:13:30:13:80 | object creation of type MemoryStream | provenance | | +| XmlObjectSerializerUntrustedInputBad.cs:13:70:13:73 | access to parameter data : TextBox | XmlObjectSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | provenance | | +| XmlObjectSerializerUntrustedInputBad.cs:13:70:13:78 | access to property Text : String | XmlObjectSerializerUntrustedInputBad.cs:13:47:13:79 | call to method GetBytes : Byte[] | provenance | | +| XmlSerializerUntrustedInputBad.cs:13:48:13:80 | call to method GetBytes : Byte[] | XmlSerializerUntrustedInputBad.cs:13:31:13:81 | object creation of type MemoryStream | provenance | | +| XmlSerializerUntrustedInputBad.cs:13:71:13:74 | access to parameter data : TextBox | XmlSerializerUntrustedInputBad.cs:13:71:13:79 | access to property Text : String | provenance | | +| XmlSerializerUntrustedInputBad.cs:13:71:13:79 | access to property Text : String | XmlSerializerUntrustedInputBad.cs:13:48:13:80 | call to method GetBytes : Byte[] | provenance | | nodes | BinaryFormatterUntrustedInputBad.cs:12:31:12:84 | object creation of type MemoryStream | semmle.label | object creation of type MemoryStream | | BinaryFormatterUntrustedInputBad.cs:12:48:12:83 | call to method GetBytes : Byte[] | semmle.label | call to method GetBytes : Byte[] | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/UnsafeDeserializationUntrustedInput.expected b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/UnsafeDeserializationUntrustedInput.expected index c73b31226884..c50a361dac7f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/UnsafeDeserializationUntrustedInput.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/UnsafeDeserializationUntrustedInput.expected @@ -1,7 +1,7 @@ edges -| Test.cs:9:46:9:49 | access to parameter data : TextBox | Test.cs:9:46:9:54 | access to property Text | -| Test.cs:17:46:17:49 | access to parameter data : TextBox | Test.cs:17:46:17:54 | access to property Text | -| Test.cs:25:46:25:49 | access to parameter data : TextBox | Test.cs:25:46:25:54 | access to property Text | +| Test.cs:9:46:9:49 | access to parameter data : TextBox | Test.cs:9:46:9:54 | access to property Text | provenance | | +| Test.cs:17:46:17:49 | access to parameter data : TextBox | Test.cs:17:46:17:54 | access to property Text | provenance | | +| Test.cs:25:46:25:49 | access to parameter data : TextBox | Test.cs:25:46:25:54 | access to property Text | provenance | | nodes | Test.cs:9:46:9:49 | access to parameter data : TextBox | semmle.label | access to parameter data : TextBox | | Test.cs:9:46:9:54 | access to property Text | semmle.label | access to property Text | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected index ff1cac032fe3..33e634145589 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/UrlRedirect.expected @@ -1,32 +1,32 @@ edges -| UrlRedirect.cs:13:31:13:53 | access to property QueryString : NameValueCollection | UrlRedirect.cs:13:31:13:61 | access to indexer | -| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:23:22:23:52 | access to indexer : String | -| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:48:29:48:31 | access to local variable url | -| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:64:31:64:52 | $"..." | -| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:70:66:70:68 | access to local variable url : String | -| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:76:69:76:71 | access to local variable url : String | -| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:76:74:76:76 | access to local variable url : String | -| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:48:29:48:31 | access to local variable url | -| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:64:31:64:52 | $"..." | -| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:70:66:70:68 | access to local variable url : String | -| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:76:69:76:71 | access to local variable url : String | -| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:76:74:76:76 | access to local variable url : String | -| UrlRedirect.cs:38:44:38:66 | access to property QueryString : NameValueCollection | UrlRedirect.cs:38:44:38:74 | access to indexer | -| UrlRedirect.cs:39:47:39:69 | access to property QueryString : NameValueCollection | UrlRedirect.cs:39:47:39:77 | access to indexer | -| UrlRedirect.cs:70:66:70:68 | access to local variable url : String | UrlRedirect.cs:70:31:70:69 | call to method Format | -| UrlRedirect.cs:76:69:76:71 | access to local variable url : String | UrlRedirect.cs:76:31:76:77 | call to method Format | -| UrlRedirect.cs:76:74:76:76 | access to local variable url : String | UrlRedirect.cs:76:31:76:77 | call to method Format | -| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:16:22:16:26 | access to parameter value | -| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:19:44:19:48 | call to operator implicit conversion | -| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:25:46:25:50 | call to operator implicit conversion | -| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:31:66:31:70 | access to parameter value | -| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:34:49:34:53 | call to operator implicit conversion | -| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:37:69:37:73 | access to parameter value | -| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:40:39:40:53 | ... + ... | -| UrlRedirectCore.cs:45:51:45:55 | value : String | UrlRedirectCore.cs:48:28:48:32 | access to parameter value | -| UrlRedirectCore.cs:45:51:45:55 | value : String | UrlRedirectCore.cs:53:40:53:44 | access to parameter value : String | -| UrlRedirectCore.cs:45:51:45:55 | value : String | UrlRedirectCore.cs:56:31:56:35 | access to parameter value | -| UrlRedirectCore.cs:53:40:53:44 | access to parameter value : String | UrlRedirectCore.cs:53:32:53:45 | object creation of type Uri | +| UrlRedirect.cs:13:31:13:53 | access to property QueryString : NameValueCollection | UrlRedirect.cs:13:31:13:61 | access to indexer | provenance | | +| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:23:22:23:52 | access to indexer : String | provenance | | +| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:48:29:48:31 | access to local variable url | provenance | | +| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:64:31:64:52 | $"..." | provenance | | +| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:70:66:70:68 | access to local variable url : String | provenance | | +| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:76:69:76:71 | access to local variable url : String | provenance | | +| UrlRedirect.cs:23:22:23:44 | access to property QueryString : NameValueCollection | UrlRedirect.cs:76:74:76:76 | access to local variable url : String | provenance | | +| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:48:29:48:31 | access to local variable url | provenance | | +| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:64:31:64:52 | $"..." | provenance | | +| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:70:66:70:68 | access to local variable url : String | provenance | | +| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:76:69:76:71 | access to local variable url : String | provenance | | +| UrlRedirect.cs:23:22:23:52 | access to indexer : String | UrlRedirect.cs:76:74:76:76 | access to local variable url : String | provenance | | +| UrlRedirect.cs:38:44:38:66 | access to property QueryString : NameValueCollection | UrlRedirect.cs:38:44:38:74 | access to indexer | provenance | | +| UrlRedirect.cs:39:47:39:69 | access to property QueryString : NameValueCollection | UrlRedirect.cs:39:47:39:77 | access to indexer | provenance | | +| UrlRedirect.cs:70:66:70:68 | access to local variable url : String | UrlRedirect.cs:70:31:70:69 | call to method Format | provenance | | +| UrlRedirect.cs:76:69:76:71 | access to local variable url : String | UrlRedirect.cs:76:31:76:77 | call to method Format | provenance | | +| UrlRedirect.cs:76:74:76:76 | access to local variable url : String | UrlRedirect.cs:76:31:76:77 | call to method Format | provenance | | +| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:16:22:16:26 | access to parameter value | provenance | | +| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:19:44:19:48 | call to operator implicit conversion | provenance | | +| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:25:46:25:50 | call to operator implicit conversion | provenance | | +| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:31:66:31:70 | access to parameter value | provenance | | +| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:34:49:34:53 | call to operator implicit conversion | provenance | | +| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:37:69:37:73 | access to parameter value | provenance | | +| UrlRedirectCore.cs:13:44:13:48 | value : String | UrlRedirectCore.cs:40:39:40:53 | ... + ... | provenance | | +| UrlRedirectCore.cs:45:51:45:55 | value : String | UrlRedirectCore.cs:48:28:48:32 | access to parameter value | provenance | | +| UrlRedirectCore.cs:45:51:45:55 | value : String | UrlRedirectCore.cs:53:40:53:44 | access to parameter value : String | provenance | | +| UrlRedirectCore.cs:45:51:45:55 | value : String | UrlRedirectCore.cs:56:31:56:35 | access to parameter value | provenance | | +| UrlRedirectCore.cs:53:40:53:44 | access to parameter value : String | UrlRedirectCore.cs:53:32:53:45 | object creation of type Uri | provenance | | nodes | UrlRedirect.cs:13:31:13:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | UrlRedirect.cs:13:31:13:61 | access to indexer | semmle.label | access to indexer | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-611/UntrustedDataInsecureXml.expected b/csharp/ql/test/query-tests/Security Features/CWE-611/UntrustedDataInsecureXml.expected index c6e463428a64..4a3a88b7a746 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-611/UntrustedDataInsecureXml.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-611/UntrustedDataInsecureXml.expected @@ -1,5 +1,5 @@ edges -| Test.cs:11:50:11:72 | access to property QueryString : NameValueCollection | Test.cs:11:50:11:84 | access to indexer | +| Test.cs:11:50:11:72 | access to property QueryString : NameValueCollection | Test.cs:11:50:11:84 | access to indexer | provenance | | nodes | Test.cs:11:50:11:72 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | Test.cs:11:50:11:84 | access to indexer | semmle.label | access to indexer | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected index 63235e25c927..daaca6c5d3a7 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected @@ -1,8 +1,8 @@ edges -| StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | -| StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | -| StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | -| StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | +| StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | provenance | | +| StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | provenance | | +| StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | provenance | | +| StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | provenance | | nodes | StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | semmle.label | call to method GetString : String | | StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | semmle.label | call to method GetString : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected index fa812c210eda..78652e8ea9d6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected @@ -1,34 +1,34 @@ edges -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:10:27:10:61 | access to indexer : String | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:34:30:34:30 | access to local variable s | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:16:33:16:33 | access to local variable s | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:19:29:19:29 | access to local variable s | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:28:20:28:20 | access to local variable s | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:34:30:34:30 | access to local variable s | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:40:21:40:21 | access to local variable s | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:46:22:46:22 | access to local variable s | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:52:21:52:21 | access to local variable s | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:27:11:61 | access to indexer : String | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:34:30:34:30 | access to local variable s | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:16:33:16:33 | access to local variable s | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:19:29:19:29 | access to local variable s | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:28:20:28:20 | access to local variable s | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:34:30:34:30 | access to local variable s | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:40:21:40:21 | access to local variable s | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:46:22:46:22 | access to local variable s | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:52:21:52:21 | access to local variable s | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:10:27:10:61 | access to indexer : String | provenance | | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:34:30:34:30 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:16:33:16:33 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:19:29:19:29 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:28:20:28:20 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:34:30:34:30 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:40:21:40:21 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:46:22:46:22 | access to local variable s | provenance | | +| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:52:21:52:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:27:11:61 | access to indexer : String | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:34:30:34:30 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:16:33:16:33 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:19:29:19:29 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:28:20:28:20 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:34:30:34:30 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:40:21:40:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:46:22:46:22 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:52:21:52:21 | access to local variable s | provenance | | nodes | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | XPathInjection.cs:10:27:10:61 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected index 8f378704ce54..ed14c44e2af4 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/ReDoS.expected @@ -1,15 +1,15 @@ edges -| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:11:28:11:63 | access to indexer : String | -| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:15:40:15:48 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:16:42:16:50 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:19:139:19:147 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:22:43:22:51 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:24:21:24:29 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:15:40:15:48 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:16:42:16:50 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:19:139:19:147 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:22:43:22:51 | access to local variable userInput | -| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:24:21:24:29 | access to local variable userInput | +| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:11:28:11:63 | access to indexer : String | provenance | | +| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:15:40:15:48 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:16:42:16:50 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:19:139:19:147 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:22:43:22:51 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:24:21:24:29 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:15:40:15:48 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:16:42:16:50 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:19:139:19:147 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:22:43:22:51 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:11:28:11:63 | access to indexer : String | ExponentialRegex.cs:24:21:24:29 | access to local variable userInput | provenance | | nodes | ExponentialRegex.cs:11:28:11:50 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | ExponentialRegex.cs:11:28:11:63 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected index 100f4fc61cc5..989d0648f484 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/ReDoS.expected @@ -1,7 +1,7 @@ edges -| ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:13:28:13:63 | access to indexer : String | -| ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:16:40:16:48 | access to local variable userInput | -| ExponentialRegex.cs:13:28:13:63 | access to indexer : String | ExponentialRegex.cs:16:40:16:48 | access to local variable userInput | +| ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:13:28:13:63 | access to indexer : String | provenance | | +| ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | ExponentialRegex.cs:16:40:16:48 | access to local variable userInput | provenance | | +| ExponentialRegex.cs:13:28:13:63 | access to indexer : String | ExponentialRegex.cs:16:40:16:48 | access to local variable userInput | provenance | | nodes | ExponentialRegex.cs:13:28:13:50 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | ExponentialRegex.cs:13:28:13:63 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected index 01b1dcfb67f9..7fa9f7428f43 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/RegexInjection.expected @@ -1,7 +1,7 @@ edges -| RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | RegexInjection.cs:10:24:10:55 | access to indexer : String | -| RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | RegexInjection.cs:14:19:14:23 | access to local variable regex | -| RegexInjection.cs:10:24:10:55 | access to indexer : String | RegexInjection.cs:14:19:14:23 | access to local variable regex | +| RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | RegexInjection.cs:10:24:10:55 | access to indexer : String | provenance | | +| RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | RegexInjection.cs:14:19:14:23 | access to local variable regex | provenance | | +| RegexInjection.cs:10:24:10:55 | access to indexer : String | RegexInjection.cs:14:19:14:23 | access to local variable regex | provenance | | nodes | RegexInjection.cs:10:24:10:46 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | RegexInjection.cs:10:24:10:55 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-798/HardcodedCredentials.expected b/csharp/ql/test/query-tests/Security Features/CWE-798/HardcodedCredentials.expected index 4dc81537e206..5c707971384e 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-798/HardcodedCredentials.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-798/HardcodedCredentials.expected @@ -1,5 +1,5 @@ edges -| HardcodedCredentials.cs:48:30:48:60 | array creation of type Byte[] : Byte[] | HardcodedCredentials.cs:51:13:51:23 | access to local variable rawCertData | +| HardcodedCredentials.cs:48:30:48:60 | array creation of type Byte[] : Byte[] | HardcodedCredentials.cs:51:13:51:23 | access to local variable rawCertData | provenance | | nodes | HardcodedCredentials.cs:16:25:16:36 | "myPa55word" | semmle.label | "myPa55word" | | HardcodedCredentials.cs:32:19:32:28 | "username" | semmle.label | "username" | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected b/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected index 3f985cd5eff9..86f4167bd757 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-807/ConditionalBypass.expected @@ -1,24 +1,24 @@ edges -| ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | ConditionalBypass.cs:12:26:12:59 | access to indexer : String | -| ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | ConditionalBypass.cs:16:13:16:30 | ... == ... | -| ConditionalBypass.cs:12:26:12:59 | access to indexer : String | ConditionalBypass.cs:16:13:16:30 | ... == ... | -| ConditionalBypass.cs:19:34:19:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:22:13:22:23 | access to local variable adminCookie : HttpCookie | -| ConditionalBypass.cs:19:34:19:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:27:13:27:23 | access to local variable adminCookie : HttpCookie | -| ConditionalBypass.cs:22:13:22:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:22:13:22:29 | access to property Value : String | -| ConditionalBypass.cs:22:13:22:29 | access to property Value : String | ConditionalBypass.cs:22:13:22:45 | call to method Equals | -| ConditionalBypass.cs:27:13:27:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:27:13:27:29 | access to property Value : String | -| ConditionalBypass.cs:27:13:27:29 | access to property Value : String | ConditionalBypass.cs:27:13:27:40 | ... == ... | -| ConditionalBypass.cs:42:32:42:66 | call to method GetHostByAddress : IPHostEntry | ConditionalBypass.cs:44:13:44:20 | access to local variable hostInfo : IPHostEntry | -| ConditionalBypass.cs:42:32:42:66 | call to method GetHostByAddress : IPHostEntry | ConditionalBypass.cs:49:13:49:20 | access to local variable hostInfo : IPHostEntry | -| ConditionalBypass.cs:44:13:44:20 | access to local variable hostInfo : IPHostEntry | ConditionalBypass.cs:44:13:44:29 | access to property HostName : String | -| ConditionalBypass.cs:44:13:44:29 | access to property HostName : String | ConditionalBypass.cs:44:13:44:46 | ... == ... | -| ConditionalBypass.cs:49:13:49:20 | access to local variable hostInfo : IPHostEntry | ConditionalBypass.cs:49:13:49:29 | access to property HostName | -| ConditionalBypass.cs:70:34:70:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:72:13:72:23 | access to local variable adminCookie : HttpCookie | -| ConditionalBypass.cs:72:13:72:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:72:13:72:29 | access to property Value : String | -| ConditionalBypass.cs:72:13:72:29 | access to property Value : String | ConditionalBypass.cs:72:13:72:40 | ... == ... | -| ConditionalBypass.cs:83:34:83:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:84:13:84:23 | access to local variable adminCookie : HttpCookie | -| ConditionalBypass.cs:84:13:84:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:84:13:84:29 | access to property Value : String | -| ConditionalBypass.cs:84:13:84:29 | access to property Value : String | ConditionalBypass.cs:84:13:84:40 | ... == ... | +| ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | ConditionalBypass.cs:12:26:12:59 | access to indexer : String | provenance | | +| ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | ConditionalBypass.cs:16:13:16:30 | ... == ... | provenance | | +| ConditionalBypass.cs:12:26:12:59 | access to indexer : String | ConditionalBypass.cs:16:13:16:30 | ... == ... | provenance | | +| ConditionalBypass.cs:19:34:19:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:22:13:22:23 | access to local variable adminCookie : HttpCookie | provenance | | +| ConditionalBypass.cs:19:34:19:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:27:13:27:23 | access to local variable adminCookie : HttpCookie | provenance | | +| ConditionalBypass.cs:22:13:22:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:22:13:22:29 | access to property Value : String | provenance | | +| ConditionalBypass.cs:22:13:22:29 | access to property Value : String | ConditionalBypass.cs:22:13:22:45 | call to method Equals | provenance | | +| ConditionalBypass.cs:27:13:27:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:27:13:27:29 | access to property Value : String | provenance | | +| ConditionalBypass.cs:27:13:27:29 | access to property Value : String | ConditionalBypass.cs:27:13:27:40 | ... == ... | provenance | | +| ConditionalBypass.cs:42:32:42:66 | call to method GetHostByAddress : IPHostEntry | ConditionalBypass.cs:44:13:44:20 | access to local variable hostInfo : IPHostEntry | provenance | | +| ConditionalBypass.cs:42:32:42:66 | call to method GetHostByAddress : IPHostEntry | ConditionalBypass.cs:49:13:49:20 | access to local variable hostInfo : IPHostEntry | provenance | | +| ConditionalBypass.cs:44:13:44:20 | access to local variable hostInfo : IPHostEntry | ConditionalBypass.cs:44:13:44:29 | access to property HostName : String | provenance | | +| ConditionalBypass.cs:44:13:44:29 | access to property HostName : String | ConditionalBypass.cs:44:13:44:46 | ... == ... | provenance | | +| ConditionalBypass.cs:49:13:49:20 | access to local variable hostInfo : IPHostEntry | ConditionalBypass.cs:49:13:49:29 | access to property HostName | provenance | | +| ConditionalBypass.cs:70:34:70:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:72:13:72:23 | access to local variable adminCookie : HttpCookie | provenance | | +| ConditionalBypass.cs:72:13:72:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:72:13:72:29 | access to property Value : String | provenance | | +| ConditionalBypass.cs:72:13:72:29 | access to property Value : String | ConditionalBypass.cs:72:13:72:40 | ... == ... | provenance | | +| ConditionalBypass.cs:83:34:83:52 | access to property Cookies : HttpCookieCollection | ConditionalBypass.cs:84:13:84:23 | access to local variable adminCookie : HttpCookie | provenance | | +| ConditionalBypass.cs:84:13:84:23 | access to local variable adminCookie : HttpCookie | ConditionalBypass.cs:84:13:84:29 | access to property Value : String | provenance | | +| ConditionalBypass.cs:84:13:84:29 | access to property Value : String | ConditionalBypass.cs:84:13:84:40 | ... == ... | provenance | | nodes | ConditionalBypass.cs:12:26:12:48 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | ConditionalBypass.cs:12:26:12:59 | access to indexer : String | semmle.label | access to indexer : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-838/InappropriateEncoding.expected b/csharp/ql/test/query-tests/Security Features/CWE-838/InappropriateEncoding.expected index 2f33a932e3d8..4958966f788f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-838/InappropriateEncoding.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-838/InappropriateEncoding.expected @@ -1,14 +1,14 @@ edges -| HtmlEncode.cs:10:40:10:65 | call to method UrlEncode : String | HtmlEncode.cs:10:28:10:65 | ... + ... | -| InappropriateEncoding.cs:13:28:13:40 | call to method Encode : String | InappropriateEncoding.cs:18:46:18:51 | access to local variable query1 | -| InappropriateEncoding.cs:34:28:34:55 | call to method UrlEncode : String | InappropriateEncoding.cs:35:32:35:43 | access to local variable encodedValue | -| InappropriateEncoding.cs:34:28:34:55 | call to method UrlEncode : String | InappropriateEncoding.cs:36:22:36:59 | ... + ... | -| InappropriateEncoding.cs:34:28:34:55 | call to method UrlEncode : String | InappropriateEncoding.cs:37:59:37:70 | access to local variable encodedValue : String | -| InappropriateEncoding.cs:37:59:37:70 | access to local variable encodedValue : String | InappropriateEncoding.cs:37:22:37:71 | call to method Format | -| InappropriateEncoding.cs:55:28:55:56 | call to method HtmlEncode : String | InappropriateEncoding.cs:56:31:56:42 | access to local variable encodedValue | -| InappropriateEncoding.cs:66:16:66:42 | call to method Replace : String | InappropriateEncoding.cs:13:28:13:40 | call to method Encode : String | -| SqlEncode.cs:14:62:14:87 | call to method Replace : String | SqlEncode.cs:15:46:15:50 | access to local variable query | -| UrlEncode.cs:10:43:10:69 | call to method HtmlEncode : String | UrlEncode.cs:10:31:10:69 | ... + ... | +| HtmlEncode.cs:10:40:10:65 | call to method UrlEncode : String | HtmlEncode.cs:10:28:10:65 | ... + ... | provenance | | +| InappropriateEncoding.cs:13:28:13:40 | call to method Encode : String | InappropriateEncoding.cs:18:46:18:51 | access to local variable query1 | provenance | | +| InappropriateEncoding.cs:34:28:34:55 | call to method UrlEncode : String | InappropriateEncoding.cs:35:32:35:43 | access to local variable encodedValue | provenance | | +| InappropriateEncoding.cs:34:28:34:55 | call to method UrlEncode : String | InappropriateEncoding.cs:36:22:36:59 | ... + ... | provenance | | +| InappropriateEncoding.cs:34:28:34:55 | call to method UrlEncode : String | InappropriateEncoding.cs:37:59:37:70 | access to local variable encodedValue : String | provenance | | +| InappropriateEncoding.cs:37:59:37:70 | access to local variable encodedValue : String | InappropriateEncoding.cs:37:22:37:71 | call to method Format | provenance | | +| InappropriateEncoding.cs:55:28:55:56 | call to method HtmlEncode : String | InappropriateEncoding.cs:56:31:56:42 | access to local variable encodedValue | provenance | | +| InappropriateEncoding.cs:66:16:66:42 | call to method Replace : String | InappropriateEncoding.cs:13:28:13:40 | call to method Encode : String | provenance | | +| SqlEncode.cs:14:62:14:87 | call to method Replace : String | SqlEncode.cs:15:46:15:50 | access to local variable query | provenance | | +| UrlEncode.cs:10:43:10:69 | call to method HtmlEncode : String | UrlEncode.cs:10:31:10:69 | ... + ... | provenance | | nodes | HtmlEncode.cs:10:28:10:65 | ... + ... | semmle.label | ... + ... | | HtmlEncode.cs:10:40:10:65 | call to method UrlEncode : String | semmle.label | call to method UrlEncode : String | diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index fa003b238db9..f2ba68a20f0e 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -551,6 +551,7 @@ func (extraction *Extraction) extractError(tw *trap.Writer, err packages.Error, log.Printf("Warning: failed to evaluate symlinks for %s", wd) } file = filepath.Join(ewd, "-") + extraction.extractFileInfo(tw, file, true) } else { var rawfile string if parts := threePartPos.FindStringSubmatch(pos); parts != nil { @@ -585,7 +586,7 @@ func (extraction *Extraction) extractError(tw *trap.Writer, err packages.Error, file = afile } - extraction.extractFileInfo(tw, file) + extraction.extractFileInfo(tw, file, false) } extraction.Lock.Lock() @@ -654,7 +655,7 @@ func (extraction *Extraction) extractFile(ast *ast.File, pkg *packages.Package) return err } - extraction.extractFileInfo(tw, path) + extraction.extractFileInfo(tw, path, false) extractScopes(tw, ast, pkg) @@ -672,7 +673,7 @@ func (extraction *Extraction) extractFile(ast *ast.File, pkg *packages.Package) // extractFileInfo extracts file-system level information for the given file, populating // the `files` and `containerparent` tables -func (extraction *Extraction) extractFileInfo(tw *trap.Writer, file string) { +func (extraction *Extraction) extractFileInfo(tw *trap.Writer, file string, isDummy bool) { // We may visit the same file twice because `extractError` calls this function to describe files containing // compilation errors. It is also called for user source files being extracted. extraction.Lock.Lock() @@ -704,7 +705,9 @@ func (extraction *Extraction) extractFileInfo(tw *trap.Writer, file string) { dbscheme.HasLocationTable.Emit(tw, lbl, emitLocation(tw, lbl, 0, 0, 0, 0)) extraction.Lock.Lock() slbl := extraction.StatWriter.Labeler.FileLabelFor(file) - dbscheme.CompilationCompilingFilesTable.Emit(extraction.StatWriter, extraction.Label, extraction.GetFileIdx(file), slbl) + if !isDummy { + dbscheme.CompilationCompilingFilesTable.Emit(extraction.StatWriter, extraction.Label, extraction.GetFileIdx(file), slbl) + } extraction.Lock.Unlock() break } diff --git a/go/extractor/go.mod b/go/extractor/go.mod index d4a00dcd1584..c1aa66b49b39 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -4,5 +4,5 @@ go 1.21 require ( golang.org/x/mod v0.15.0 - golang.org/x/tools v0.17.0 + golang.org/x/tools v0.18.0 ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index f3a7decbd45b..dab099e92a05 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -2,5 +2,5 @@ golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= -golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= diff --git a/go/extractor/gomodextractor.go b/go/extractor/gomodextractor.go index 54e556b4cde0..be52af59760b 100644 --- a/go/extractor/gomodextractor.go +++ b/go/extractor/gomodextractor.go @@ -40,7 +40,7 @@ func (extraction *Extraction) extractGoMod(path string) error { return err } - extraction.extractFileInfo(tw, path) + extraction.extractFileInfo(tw, path, false) file, err := os.Open(path) if err != nil { diff --git a/go/extractor/vendor/golang.org/x/tools/go/packages/doc.go b/go/extractor/vendor/golang.org/x/tools/go/packages/doc.go index b2a0b7c6a678..a8d7b06ac090 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/packages/doc.go +++ b/go/extractor/vendor/golang.org/x/tools/go/packages/doc.go @@ -15,22 +15,10 @@ Load passes most patterns directly to the underlying build tool. The default build tool is the go command. Its supported patterns are described at https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns. +Other build systems may be supported by providing a "driver"; +see [The driver protocol]. -Load may be used in Go projects that use alternative build systems, by -installing an appropriate "driver" program for the build system and -specifying its location in the GOPACKAGESDRIVER environment variable. -For example, -https://github.com/bazelbuild/rules_go/wiki/Editor-and-tool-integration -explains how to use the driver for Bazel. -The driver program is responsible for interpreting patterns in its -preferred notation and reporting information about the packages that -they identify. -(See driverRequest and driverResponse types for the JSON -schema used by the protocol. -Though the protocol is supported, these types are currently unexported; -see #64608 for a proposal to publish them.) - -Regardless of driver, all patterns with the prefix "query=", where query is a +All patterns with the prefix "query=", where query is a non-empty string of letters from [a-z], are reserved and may be interpreted as query operators. @@ -86,7 +74,29 @@ for details. Most tools should pass their command-line arguments (after any flags) uninterpreted to [Load], so that it can interpret them according to the conventions of the underlying build system. + See the Example function for typical usage. + +# The driver protocol + +[Load] may be used to load Go packages even in Go projects that use +alternative build systems, by installing an appropriate "driver" +program for the build system and specifying its location in the +GOPACKAGESDRIVER environment variable. +For example, +https://github.com/bazelbuild/rules_go/wiki/Editor-and-tool-integration +explains how to use the driver for Bazel. + +The driver program is responsible for interpreting patterns in its +preferred notation and reporting information about the packages that +those patterns identify. Drivers must also support the special "file=" +and "pattern=" patterns described above. + +The patterns are provided as positional command-line arguments. A +JSON-encoded [DriverRequest] message providing additional information +is written to the driver's standard input. The driver must write a +JSON-encoded [DriverResponse] message to its standard output. (This +message differs from the JSON schema produced by 'go list'.) */ package packages // import "golang.org/x/tools/go/packages" diff --git a/go/extractor/vendor/golang.org/x/tools/go/packages/external.go b/go/extractor/vendor/golang.org/x/tools/go/packages/external.go index 7db1d1293ab9..4335c1eb14c7 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/packages/external.go +++ b/go/extractor/vendor/golang.org/x/tools/go/packages/external.go @@ -2,12 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// This file enables an external tool to intercept package requests. -// If the tool is present then its results are used in preference to -// the go list command. - package packages +// This file defines the protocol that enables an external "driver" +// tool to supply package metadata in place of 'go list'. + import ( "bytes" "encoding/json" @@ -17,31 +16,71 @@ import ( "strings" ) -// The Driver Protocol +// DriverRequest defines the schema of a request for package metadata +// from an external driver program. The JSON-encoded DriverRequest +// message is provided to the driver program's standard input. The +// query patterns are provided as command-line arguments. // -// The driver, given the inputs to a call to Load, returns metadata about the packages specified. -// This allows for different build systems to support go/packages by telling go/packages how the -// packages' source is organized. -// The driver is a binary, either specified by the GOPACKAGESDRIVER environment variable or in -// the path as gopackagesdriver. It's given the inputs to load in its argv. See the package -// documentation in doc.go for the full description of the patterns that need to be supported. -// A driver receives as a JSON-serialized driverRequest struct in standard input and will -// produce a JSON-serialized driverResponse (see definition in packages.go) in its standard output. - -// driverRequest is used to provide the portion of Load's Config that is needed by a driver. -type driverRequest struct { +// See the package documentation for an overview. +type DriverRequest struct { Mode LoadMode `json:"mode"` + // Env specifies the environment the underlying build system should be run in. Env []string `json:"env"` + // BuildFlags are flags that should be passed to the underlying build system. BuildFlags []string `json:"build_flags"` + // Tests specifies whether the patterns should also return test packages. Tests bool `json:"tests"` + // Overlay maps file paths (relative to the driver's working directory) to the byte contents // of overlay files. Overlay map[string][]byte `json:"overlay"` } +// DriverResponse defines the schema of a response from an external +// driver program, providing the results of a query for package +// metadata. The driver program must write a JSON-encoded +// DriverResponse message to its standard output. +// +// See the package documentation for an overview. +type DriverResponse struct { + // NotHandled is returned if the request can't be handled by the current + // driver. If an external driver returns a response with NotHandled, the + // rest of the DriverResponse is ignored, and go/packages will fallback + // to the next driver. If go/packages is extended in the future to support + // lists of multiple drivers, go/packages will fall back to the next driver. + NotHandled bool + + // Compiler and Arch are the arguments pass of types.SizesFor + // to get a types.Sizes to use when type checking. + Compiler string + Arch string + + // Roots is the set of package IDs that make up the root packages. + // We have to encode this separately because when we encode a single package + // we cannot know if it is one of the roots as that requires knowledge of the + // graph it is part of. + Roots []string `json:",omitempty"` + + // Packages is the full set of packages in the graph. + // The packages are not connected into a graph. + // The Imports if populated will be stubs that only have their ID set. + // Imports will be connected and then type and syntax information added in a + // later pass (see refine). + Packages []*Package + + // GoVersion is the minor version number used by the driver + // (e.g. the go command on the PATH) when selecting .go files. + // Zero means unknown. + GoVersion int +} + +// driver is the type for functions that query the build system for the +// packages named by the patterns. +type driver func(cfg *Config, patterns ...string) (*DriverResponse, error) + // findExternalDriver returns the file path of a tool that supplies // the build system package structure, or "" if not found." // If GOPACKAGESDRIVER is set in the environment findExternalTool returns its @@ -64,8 +103,8 @@ func findExternalDriver(cfg *Config) driver { return nil } } - return func(cfg *Config, words ...string) (*driverResponse, error) { - req, err := json.Marshal(driverRequest{ + return func(cfg *Config, words ...string) (*DriverResponse, error) { + req, err := json.Marshal(DriverRequest{ Mode: cfg.Mode, Env: cfg.Env, BuildFlags: cfg.BuildFlags, @@ -92,7 +131,7 @@ func findExternalDriver(cfg *Config) driver { fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd), stderr) } - var response driverResponse + var response DriverResponse if err := json.Unmarshal(buf.Bytes(), &response); err != nil { return nil, err } diff --git a/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go b/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go index cd375fbc3c20..22305d9c90a1 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go +++ b/go/extractor/vendor/golang.org/x/tools/go/packages/golist.go @@ -35,23 +35,23 @@ type goTooOldError struct { error } -// responseDeduper wraps a driverResponse, deduplicating its contents. +// responseDeduper wraps a DriverResponse, deduplicating its contents. type responseDeduper struct { seenRoots map[string]bool seenPackages map[string]*Package - dr *driverResponse + dr *DriverResponse } func newDeduper() *responseDeduper { return &responseDeduper{ - dr: &driverResponse{}, + dr: &DriverResponse{}, seenRoots: map[string]bool{}, seenPackages: map[string]*Package{}, } } -// addAll fills in r with a driverResponse. -func (r *responseDeduper) addAll(dr *driverResponse) { +// addAll fills in r with a DriverResponse. +func (r *responseDeduper) addAll(dr *DriverResponse) { for _, pkg := range dr.Packages { r.addPackage(pkg) } @@ -128,7 +128,7 @@ func (state *golistState) mustGetEnv() map[string]string { // goListDriver uses the go list command to interpret the patterns and produce // the build system package structure. // See driver for more details. -func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) { +func goListDriver(cfg *Config, patterns ...string) (_ *DriverResponse, err error) { // Make sure that any asynchronous go commands are killed when we return. parentCtx := cfg.Context if parentCtx == nil { @@ -146,16 +146,18 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) { } // Fill in response.Sizes asynchronously if necessary. - var sizeserr error - var sizeswg sync.WaitGroup if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&NeedTypes != 0 { - sizeswg.Add(1) + errCh := make(chan error) go func() { compiler, arch, err := packagesdriver.GetSizesForArgsGolist(ctx, state.cfgInvocation(), cfg.gocmdRunner) - sizeserr = err response.dr.Compiler = compiler response.dr.Arch = arch - sizeswg.Done() + errCh <- err + }() + defer func() { + if sizesErr := <-errCh; sizesErr != nil { + err = sizesErr + } }() } @@ -208,10 +210,7 @@ extractQueries: } } - sizeswg.Wait() - if sizeserr != nil { - return nil, sizeserr - } + // (We may yet return an error due to defer.) return response.dr, nil } @@ -266,7 +265,7 @@ func (state *golistState) runContainsQueries(response *responseDeduper, queries // adhocPackage attempts to load or construct an ad-hoc package for a given // query, if the original call to the driver produced inadequate results. -func (state *golistState) adhocPackage(pattern, query string) (*driverResponse, error) { +func (state *golistState) adhocPackage(pattern, query string) (*DriverResponse, error) { response, err := state.createDriverResponse(query) if err != nil { return nil, err @@ -357,7 +356,7 @@ func otherFiles(p *jsonPackage) [][]string { // createDriverResponse uses the "go list" command to expand the pattern // words and return a response for the specified packages. -func (state *golistState) createDriverResponse(words ...string) (*driverResponse, error) { +func (state *golistState) createDriverResponse(words ...string) (*DriverResponse, error) { // go list uses the following identifiers in ImportPath and Imports: // // "p" -- importable package or main (command) @@ -384,7 +383,7 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse pkgs := make(map[string]*Package) additionalErrors := make(map[string][]Error) // Decode the JSON and convert it to Package form. - response := &driverResponse{ + response := &DriverResponse{ GoVersion: goVersion, } for dec := json.NewDecoder(buf); dec.More(); { diff --git a/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go b/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go index 81e9e6a727da..f33b0afc22cf 100644 --- a/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go +++ b/go/extractor/vendor/golang.org/x/tools/go/packages/packages.go @@ -206,43 +206,6 @@ type Config struct { Overlay map[string][]byte } -// driver is the type for functions that query the build system for the -// packages named by the patterns. -type driver func(cfg *Config, patterns ...string) (*driverResponse, error) - -// driverResponse contains the results for a driver query. -type driverResponse struct { - // NotHandled is returned if the request can't be handled by the current - // driver. If an external driver returns a response with NotHandled, the - // rest of the driverResponse is ignored, and go/packages will fallback - // to the next driver. If go/packages is extended in the future to support - // lists of multiple drivers, go/packages will fall back to the next driver. - NotHandled bool - - // Compiler and Arch are the arguments pass of types.SizesFor - // to get a types.Sizes to use when type checking. - Compiler string - Arch string - - // Roots is the set of package IDs that make up the root packages. - // We have to encode this separately because when we encode a single package - // we cannot know if it is one of the roots as that requires knowledge of the - // graph it is part of. - Roots []string `json:",omitempty"` - - // Packages is the full set of packages in the graph. - // The packages are not connected into a graph. - // The Imports if populated will be stubs that only have their ID set. - // Imports will be connected and then type and syntax information added in a - // later pass (see refine). - Packages []*Package - - // GoVersion is the minor version number used by the driver - // (e.g. the go command on the PATH) when selecting .go files. - // Zero means unknown. - GoVersion int -} - // Load loads and returns the Go packages named by the given patterns. // // Config specifies loading options; @@ -291,7 +254,7 @@ func Load(cfg *Config, patterns ...string) ([]*Package, error) { // no external driver, or the driver returns a response with NotHandled set, // defaultDriver will fall back to the go list driver. // The boolean result indicates that an external driver handled the request. -func defaultDriver(cfg *Config, patterns ...string) (*driverResponse, bool, error) { +func defaultDriver(cfg *Config, patterns ...string) (*DriverResponse, bool, error) { if driver := findExternalDriver(cfg); driver != nil { response, err := driver(cfg, patterns...) if err != nil { @@ -303,7 +266,10 @@ func defaultDriver(cfg *Config, patterns ...string) (*driverResponse, bool, erro } response, err := goListDriver(cfg, patterns...) - return response, false, err + if err != nil { + return nil, false, err + } + return response, false, nil } // A Package describes a loaded Go package. @@ -648,7 +614,7 @@ func newLoader(cfg *Config) *loader { // refine connects the supplied packages into a graph and then adds type // and syntax information as requested by the LoadMode. -func (ld *loader) refine(response *driverResponse) ([]*Package, error) { +func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { roots := response.Roots rootMap := make(map[string]int, len(roots)) for i, root := range roots { diff --git a/go/extractor/vendor/golang.org/x/tools/internal/gcimporter/iimport.go b/go/extractor/vendor/golang.org/x/tools/internal/gcimporter/iimport.go index 9bde15e3bc66..9fffa9ad05cb 100644 --- a/go/extractor/vendor/golang.org/x/tools/internal/gcimporter/iimport.go +++ b/go/extractor/vendor/golang.org/x/tools/internal/gcimporter/iimport.go @@ -224,6 +224,7 @@ func iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte // Gather the relevant packages from the manifest. items := make([]GetPackagesItem, r.uint64()) + uniquePkgPaths := make(map[string]bool) for i := range items { pkgPathOff := r.uint64() pkgPath := p.stringAt(pkgPathOff) @@ -248,6 +249,12 @@ func iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte } items[i].nameIndex = nameIndex + + uniquePkgPaths[pkgPath] = true + } + // Debugging #63822; hypothesis: there are duplicate PkgPaths. + if len(uniquePkgPaths) != len(items) { + reportf("found duplicate PkgPaths while reading export data manifest: %v", items) } // Request packages all at once from the client, diff --git a/go/extractor/vendor/modules.txt b/go/extractor/vendor/modules.txt index fa3a89a509df..5687615f62c3 100644 --- a/go/extractor/vendor/modules.txt +++ b/go/extractor/vendor/modules.txt @@ -4,7 +4,7 @@ golang.org/x/mod/internal/lazyregexp golang.org/x/mod/modfile golang.org/x/mod/module golang.org/x/mod/semver -# golang.org/x/tools v0.17.0 +# golang.org/x/tools v0.18.0 ## explicit; go 1.18 golang.org/x/tools/go/gcexportdata golang.org/x/tools/go/internal/packagesdriver diff --git a/go/ql/lib/semmle/go/Files.qll b/go/ql/lib/semmle/go/Files.qll index 64b5caf7f463..87e3fd3169d1 100644 --- a/go/ql/lib/semmle/go/Files.qll +++ b/go/ql/lib/semmle/go/Files.qll @@ -124,6 +124,7 @@ class ExtractedOrExternalFile extends Container, Impl::File, Documentable, ExprP /** A file that has been extracted. */ class File extends ExtractedOrExternalFile { File() { + not this.getBaseName() = "-" and // getAChild is specifically for the Go AST and so does not apply to non-go files // we care about all non-go extracted files, as only go files can have `@file` entries due to requiring a file entry for diagnostic errors not this.getExtension() = "go" @@ -141,6 +142,13 @@ class GoFile extends File { override string getAPrimaryQlClass() { result = "GoFile" } } +/** A dummy file. */ +class DummyFile extends ExtractedOrExternalFile { + DummyFile() { this.getBaseName() = "-" } + + override string getAPrimaryQlClass() { result = "DummyFile" } +} + /** An HTML file. */ class HtmlFile extends File { HtmlFile() { this.getExtension().regexpMatch("x?html?") } diff --git a/go/ql/test/experimental/CWE-090/LDAPInjection.expected b/go/ql/test/experimental/CWE-090/LDAPInjection.expected index 8e1165fab60f..2815643c014f 100644 --- a/go/ql/test/experimental/CWE-090/LDAPInjection.expected +++ b/go/ql/test/experimental/CWE-090/LDAPInjection.expected @@ -1,24 +1,24 @@ edges -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:59:3:59:11 | untrusted | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:61:3:61:51 | ...+... | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:62:3:62:33 | slice literal | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:62:24:62:32 | untrusted | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:66:3:66:11 | untrusted | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:68:3:68:51 | ...+... | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:69:3:69:33 | slice literal | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:69:24:69:32 | untrusted | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:73:3:73:11 | untrusted | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:75:3:75:51 | ...+... | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:76:3:76:33 | slice literal | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:76:24:76:32 | untrusted | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:80:22:80:30 | untrusted | -| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:81:25:81:33 | untrusted | -| LDAPInjection.go:62:3:62:33 | slice literal [array] | LDAPInjection.go:62:3:62:33 | slice literal | -| LDAPInjection.go:62:24:62:32 | untrusted | LDAPInjection.go:62:3:62:33 | slice literal [array] | -| LDAPInjection.go:69:3:69:33 | slice literal [array] | LDAPInjection.go:69:3:69:33 | slice literal | -| LDAPInjection.go:69:24:69:32 | untrusted | LDAPInjection.go:69:3:69:33 | slice literal [array] | -| LDAPInjection.go:76:3:76:33 | slice literal [array] | LDAPInjection.go:76:3:76:33 | slice literal | -| LDAPInjection.go:76:24:76:32 | untrusted | LDAPInjection.go:76:3:76:33 | slice literal [array] | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:59:3:59:11 | untrusted | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:61:3:61:51 | ...+... | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:62:3:62:33 | slice literal | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:62:24:62:32 | untrusted | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:66:3:66:11 | untrusted | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:68:3:68:51 | ...+... | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:69:3:69:33 | slice literal | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:69:24:69:32 | untrusted | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:73:3:73:11 | untrusted | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:75:3:75:51 | ...+... | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:76:3:76:33 | slice literal | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:76:24:76:32 | untrusted | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:80:22:80:30 | untrusted | provenance | | +| LDAPInjection.go:57:15:57:29 | call to UserAgent | LDAPInjection.go:81:25:81:33 | untrusted | provenance | | +| LDAPInjection.go:62:3:62:33 | slice literal [array] | LDAPInjection.go:62:3:62:33 | slice literal | provenance | | +| LDAPInjection.go:62:24:62:32 | untrusted | LDAPInjection.go:62:3:62:33 | slice literal [array] | provenance | | +| LDAPInjection.go:69:3:69:33 | slice literal [array] | LDAPInjection.go:69:3:69:33 | slice literal | provenance | | +| LDAPInjection.go:69:24:69:32 | untrusted | LDAPInjection.go:69:3:69:33 | slice literal [array] | provenance | | +| LDAPInjection.go:76:3:76:33 | slice literal [array] | LDAPInjection.go:76:3:76:33 | slice literal | provenance | | +| LDAPInjection.go:76:24:76:32 | untrusted | LDAPInjection.go:76:3:76:33 | slice literal [array] | provenance | | nodes | LDAPInjection.go:57:15:57:29 | call to UserAgent | semmle.label | call to UserAgent | | LDAPInjection.go:59:3:59:11 | untrusted | semmle.label | untrusted | diff --git a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected index c7618b3108fa..e00daf0294f6 100644 --- a/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected +++ b/go/ql/test/experimental/CWE-1004/CookieWithoutHttpOnly.expected @@ -1,412 +1,412 @@ edges -| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:20:15:21 | &... | -| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:20:15:21 | &... | -| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:21:15:21 | c | -| CookieWithoutHttpOnly.go:12:10:12:18 | "session" | CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:20:15:21 | &... | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:20:15:21 | &... | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:21:15:21 | c | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | -| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:21:15:21 | c | -| CookieWithoutHttpOnly.go:15:21:15:21 | c | CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:21:24:21 | c | -| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:21:24:21 | c | -| CookieWithoutHttpOnly.go:20:13:20:21 | "session" | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | -| CookieWithoutHttpOnly.go:22:13:22:17 | false | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:21:24:21 | c | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:21:24:21 | c | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:21:24:21 | c | -| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:21:24:21 | c | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:21:33:21 | c | -| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:21:33:21 | c | -| CookieWithoutHttpOnly.go:29:13:29:21 | "session" | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | -| CookieWithoutHttpOnly.go:31:13:31:16 | true | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:21:33:21 | c | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:21:33:21 | c | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:21:33:21 | c | -| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:21:33:21 | c | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:21:42:21 | c | -| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:21:42:21 | c | -| CookieWithoutHttpOnly.go:38:10:38:18 | "session" | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | -| CookieWithoutHttpOnly.go:41:15:41:18 | true | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:21:42:21 | c | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:21:42:21 | c | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:21:42:21 | c | -| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:21:42:21 | c | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:21:51:21 | c | -| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:21:51:21 | c | -| CookieWithoutHttpOnly.go:47:10:47:18 | "session" | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | -| CookieWithoutHttpOnly.go:50:15:50:19 | false | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:21:51:21 | c | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:21:51:21 | c | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:21:51:21 | c | -| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:21:51:21 | c | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:55:2:55:4 | definition of val | CookieWithoutHttpOnly.go:59:13:59:15 | val | -| CookieWithoutHttpOnly.go:55:9:55:13 | false | CookieWithoutHttpOnly.go:59:13:59:15 | val | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:21:61:21 | c | -| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:21:61:21 | c | -| CookieWithoutHttpOnly.go:57:13:57:21 | "session" | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | -| CookieWithoutHttpOnly.go:59:13:59:15 | val | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:21:61:21 | c | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:21:61:21 | c | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:21:61:21 | c | -| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:21:61:21 | c | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:65:2:65:4 | definition of val | CookieWithoutHttpOnly.go:69:13:69:15 | val | -| CookieWithoutHttpOnly.go:65:9:65:12 | true | CookieWithoutHttpOnly.go:69:13:69:15 | val | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:21:71:21 | c | -| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:21:71:21 | c | -| CookieWithoutHttpOnly.go:67:13:67:21 | "session" | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | -| CookieWithoutHttpOnly.go:69:13:69:15 | val | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:21:71:21 | c | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:21:71:21 | c | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:21:71:21 | c | -| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:21:71:21 | c | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:75:2:75:4 | definition of val | CookieWithoutHttpOnly.go:80:15:80:17 | val | -| CookieWithoutHttpOnly.go:75:9:75:12 | true | CookieWithoutHttpOnly.go:80:15:80:17 | val | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:21:81:21 | c | -| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:21:81:21 | c | -| CookieWithoutHttpOnly.go:77:10:77:18 | "session" | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | -| CookieWithoutHttpOnly.go:80:15:80:17 | val | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:21:81:21 | c | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:21:81:21 | c | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:21:81:21 | c | -| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:21:81:21 | c | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:85:2:85:4 | definition of val | CookieWithoutHttpOnly.go:90:15:90:17 | val | -| CookieWithoutHttpOnly.go:85:9:85:13 | false | CookieWithoutHttpOnly.go:90:15:90:17 | val | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:21:91:21 | c | -| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:21:91:21 | c | -| CookieWithoutHttpOnly.go:87:10:87:18 | "session" | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | -| CookieWithoutHttpOnly.go:90:15:90:17 | val | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:21:91:21 | c | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:21:91:21 | c | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:21:91:21 | c | -| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:21:91:21 | c | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:20:100:21 | &... | -| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:20:100:21 | &... | -| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:21:100:21 | c | -| CookieWithoutHttpOnly.go:99:15:99:19 | false | CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:20:100:21 | &... | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:20:100:21 | &... | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:21:100:21 | c | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | -| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:21:100:21 | c | -| CookieWithoutHttpOnly.go:100:21:100:21 | c | CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:104:10:104:18 | "session" | CookieWithoutHttpOnly.go:106:10:106:13 | name | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:21:110:21 | c | -| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:21:110:21 | c | -| CookieWithoutHttpOnly.go:106:10:106:13 | name | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | -| CookieWithoutHttpOnly.go:109:15:109:19 | false | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:21:110:21 | c | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:21:110:21 | c | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:21:110:21 | c | -| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:21:110:21 | c | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:114:13:114:24 | "login_name" | CookieWithoutHttpOnly.go:116:10:116:16 | session | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:21:120:21 | c | -| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:21:120:21 | c | -| CookieWithoutHttpOnly.go:116:10:116:16 | session | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | -| CookieWithoutHttpOnly.go:119:15:119:19 | false | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:21:120:21 | c | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:21:120:21 | c | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:21:120:21 | c | -| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:21:120:21 | c | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:126:16:126:20 | store | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:134:16:134:20 | store | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:146:16:146:20 | store | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:158:16:158:20 | store | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:170:16:170:20 | store | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:183:16:183:20 | store | -| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:195:16:195:20 | store | -| CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | CookieWithoutHttpOnly.go:129:2:129:8 | session | -| CookieWithoutHttpOnly.go:126:16:126:20 | store | CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | -| CookieWithoutHttpOnly.go:133:2:133:9 | definition of httpOnly | CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | -| CookieWithoutHttpOnly.go:133:14:133:18 | false | CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | -| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | -| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | -| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | -| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | -| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | -| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | -| CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | CookieWithoutHttpOnly.go:142:2:142:8 | session | -| CookieWithoutHttpOnly.go:134:16:134:20 | store | CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | -| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | -| CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | -| CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | -| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | -| CookieWithoutHttpOnly.go:137:2:137:8 | session | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:2:137:8 | session | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:20:140:2 | &... | -| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | -| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | -| CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | -| CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:147:2:147:8 | session [pointer] | -| CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:149:2:149:8 | session [pointer] | -| CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:153:2:153:8 | session | -| CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | CookieWithoutHttpOnly.go:153:2:153:8 | session | -| CookieWithoutHttpOnly.go:146:16:146:20 | store | CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | -| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | -| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:149:2:149:8 | session | -| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:153:2:153:8 | session | -| CookieWithoutHttpOnly.go:147:2:147:8 | session [pointer] | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:149:2:149:8 | session | -| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:153:2:153:8 | session | -| CookieWithoutHttpOnly.go:149:2:149:8 | session | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | -| CookieWithoutHttpOnly.go:149:2:149:8 | session [pointer] | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | session | -| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:20:151:2 | &... | -| CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | CookieWithoutHttpOnly.go:149:20:151:2 | &... | -| CookieWithoutHttpOnly.go:157:2:157:9 | definition of httpOnly | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | -| CookieWithoutHttpOnly.go:157:14:157:17 | true | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | -| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | -| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | -| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | -| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | -| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | -| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | -| CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | CookieWithoutHttpOnly.go:166:2:166:8 | session | -| CookieWithoutHttpOnly.go:158:16:158:20 | store | CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | -| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | -| CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | -| CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | -| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | -| CookieWithoutHttpOnly.go:161:2:161:8 | session | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:2:161:8 | session | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:20:164:2 | &... | -| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | -| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | -| CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | -| CookieWithoutHttpOnly.go:169:56:169:63 | argument corresponding to httpOnly | CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | -| CookieWithoutHttpOnly.go:169:56:169:63 | definition of httpOnly | CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | -| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | -| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | -| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | -| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | -| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | -| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | -| CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | CookieWithoutHttpOnly.go:178:2:178:8 | session | -| CookieWithoutHttpOnly.go:170:16:170:20 | store | CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | -| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | -| CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | -| CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | -| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | -| CookieWithoutHttpOnly.go:173:2:173:8 | session | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:2:173:8 | session | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:20:176:2 | &... | -| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | -| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | -| CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | -| CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | CookieWithoutHttpOnly.go:191:19:191:25 | session | -| CookieWithoutHttpOnly.go:183:16:183:20 | store | CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | -| CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | CookieWithoutHttpOnly.go:202:19:202:25 | session | -| CookieWithoutHttpOnly.go:195:16:195:20 | store | CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | +| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | CookieWithoutHttpOnly.go:15:21:15:21 | c | provenance | | +| CookieWithoutHttpOnly.go:12:10:12:18 | "session" | CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:15:20:15:21 | &... | CookieWithoutHttpOnly.go:15:21:15:21 | c | provenance | | +| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:20:15:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | CookieWithoutHttpOnly.go:15:21:15:21 | c | provenance | | +| CookieWithoutHttpOnly.go:15:21:15:21 | c | CookieWithoutHttpOnly.go:15:20:15:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | +| CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | +| CookieWithoutHttpOnly.go:20:13:20:21 | "session" | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:22:13:22:17 | false | CookieWithoutHttpOnly.go:19:7:23:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:20:24:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | +| CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | CookieWithoutHttpOnly.go:24:21:24:21 | c | provenance | | +| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:24:21:24:21 | c | CookieWithoutHttpOnly.go:24:20:24:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | +| CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | +| CookieWithoutHttpOnly.go:29:13:29:21 | "session" | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:31:13:31:16 | true | CookieWithoutHttpOnly.go:28:7:32:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:20:33:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | +| CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | CookieWithoutHttpOnly.go:33:21:33:21 | c | provenance | | +| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:33:21:33:21 | c | CookieWithoutHttpOnly.go:33:20:33:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | +| CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | +| CookieWithoutHttpOnly.go:38:10:38:18 | "session" | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:41:15:41:18 | true | CookieWithoutHttpOnly.go:37:7:40:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:20:42:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | +| CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | CookieWithoutHttpOnly.go:42:21:42:21 | c | provenance | | +| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:42:21:42:21 | c | CookieWithoutHttpOnly.go:42:20:42:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | +| CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | +| CookieWithoutHttpOnly.go:47:10:47:18 | "session" | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:50:15:50:19 | false | CookieWithoutHttpOnly.go:46:7:49:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:20:51:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | +| CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | CookieWithoutHttpOnly.go:51:21:51:21 | c | provenance | | +| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:51:21:51:21 | c | CookieWithoutHttpOnly.go:51:20:51:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:55:2:55:4 | definition of val | CookieWithoutHttpOnly.go:59:13:59:15 | val | provenance | | +| CookieWithoutHttpOnly.go:55:9:55:13 | false | CookieWithoutHttpOnly.go:59:13:59:15 | val | provenance | | +| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | +| CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | +| CookieWithoutHttpOnly.go:57:13:57:21 | "session" | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:59:13:59:15 | val | CookieWithoutHttpOnly.go:56:7:60:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:20:61:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | +| CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | CookieWithoutHttpOnly.go:61:21:61:21 | c | provenance | | +| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:61:21:61:21 | c | CookieWithoutHttpOnly.go:61:20:61:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:65:2:65:4 | definition of val | CookieWithoutHttpOnly.go:69:13:69:15 | val | provenance | | +| CookieWithoutHttpOnly.go:65:9:65:12 | true | CookieWithoutHttpOnly.go:69:13:69:15 | val | provenance | | +| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | +| CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | +| CookieWithoutHttpOnly.go:67:13:67:21 | "session" | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:69:13:69:15 | val | CookieWithoutHttpOnly.go:66:7:70:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:20:71:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | +| CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | CookieWithoutHttpOnly.go:71:21:71:21 | c | provenance | | +| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:71:21:71:21 | c | CookieWithoutHttpOnly.go:71:20:71:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:75:2:75:4 | definition of val | CookieWithoutHttpOnly.go:80:15:80:17 | val | provenance | | +| CookieWithoutHttpOnly.go:75:9:75:12 | true | CookieWithoutHttpOnly.go:80:15:80:17 | val | provenance | | +| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | +| CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | +| CookieWithoutHttpOnly.go:77:10:77:18 | "session" | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:80:15:80:17 | val | CookieWithoutHttpOnly.go:76:7:79:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:20:81:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | +| CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | CookieWithoutHttpOnly.go:81:21:81:21 | c | provenance | | +| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:81:21:81:21 | c | CookieWithoutHttpOnly.go:81:20:81:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:85:2:85:4 | definition of val | CookieWithoutHttpOnly.go:90:15:90:17 | val | provenance | | +| CookieWithoutHttpOnly.go:85:9:85:13 | false | CookieWithoutHttpOnly.go:90:15:90:17 | val | provenance | | +| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | +| CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | +| CookieWithoutHttpOnly.go:87:10:87:18 | "session" | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:90:15:90:17 | val | CookieWithoutHttpOnly.go:86:7:89:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:20:91:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | +| CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | CookieWithoutHttpOnly.go:91:21:91:21 | c | provenance | | +| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:91:21:91:21 | c | CookieWithoutHttpOnly.go:91:20:91:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | CookieWithoutHttpOnly.go:100:21:100:21 | c | provenance | | +| CookieWithoutHttpOnly.go:99:15:99:19 | false | CookieWithoutHttpOnly.go:95:7:98:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:100:20:100:21 | &... | CookieWithoutHttpOnly.go:100:21:100:21 | c | provenance | | +| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:20:100:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | CookieWithoutHttpOnly.go:100:21:100:21 | c | provenance | | +| CookieWithoutHttpOnly.go:100:21:100:21 | c | CookieWithoutHttpOnly.go:100:20:100:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:104:10:104:18 | "session" | CookieWithoutHttpOnly.go:106:10:106:13 | name | provenance | | +| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | +| CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | +| CookieWithoutHttpOnly.go:106:10:106:13 | name | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:109:15:109:19 | false | CookieWithoutHttpOnly.go:105:7:108:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:20:110:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | +| CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | CookieWithoutHttpOnly.go:110:21:110:21 | c | provenance | | +| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:110:21:110:21 | c | CookieWithoutHttpOnly.go:110:20:110:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:114:13:114:24 | "login_name" | CookieWithoutHttpOnly.go:116:10:116:16 | session | provenance | | +| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | +| CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | +| CookieWithoutHttpOnly.go:116:10:116:16 | session | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:119:15:119:19 | false | CookieWithoutHttpOnly.go:115:7:118:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:20:120:21 | &... | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | +| CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | CookieWithoutHttpOnly.go:120:21:120:21 | c | provenance | | +| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:120:21:120:21 | c | CookieWithoutHttpOnly.go:120:20:120:21 | &... [pointer] | provenance | | +| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:126:16:126:20 | store | provenance | | +| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:134:16:134:20 | store | provenance | | +| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:146:16:146:20 | store | provenance | | +| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:158:16:158:20 | store | provenance | | +| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:170:16:170:20 | store | provenance | | +| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:183:16:183:20 | store | provenance | | +| CookieWithoutHttpOnly.go:123:13:123:49 | call to NewCookieStore | CookieWithoutHttpOnly.go:195:16:195:20 | store | provenance | | +| CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | CookieWithoutHttpOnly.go:129:2:129:8 | session | provenance | | +| CookieWithoutHttpOnly.go:126:16:126:20 | store | CookieWithoutHttpOnly.go:126:2:126:43 | ... := ...[0] | provenance | | +| CookieWithoutHttpOnly.go:133:2:133:9 | definition of httpOnly | CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | provenance | | +| CookieWithoutHttpOnly.go:133:14:133:18 | false | CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | provenance | | +| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | +| CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | +| CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | +| CookieWithoutHttpOnly.go:134:16:134:20 | store | CookieWithoutHttpOnly.go:134:2:134:43 | ... := ...[0] | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:135:2:135:8 | session [pointer] | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:134:2:134:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:135:2:135:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | CookieWithoutHttpOnly.go:142:2:142:8 | session | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | session | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | session | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:2:137:8 | session [pointer] | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | +| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:2:137:8 | session | provenance | | +| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:137:20:140:2 | &... | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | CookieWithoutHttpOnly.go:137:20:140:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:139:13:139:20 | httpOnly | CookieWithoutHttpOnly.go:137:21:140:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:147:2:147:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:149:2:149:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | +| CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | +| CookieWithoutHttpOnly.go:146:16:146:20 | store | CookieWithoutHttpOnly.go:146:2:146:43 | ... := ...[0] | provenance | | +| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:149:2:149:8 | session | provenance | | +| CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | +| CookieWithoutHttpOnly.go:147:2:147:8 | session [pointer] | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:146:2:146:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:147:2:147:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:149:2:149:8 | session | provenance | | +| CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | CookieWithoutHttpOnly.go:153:2:153:8 | session | provenance | | +| CookieWithoutHttpOnly.go:149:2:149:8 | session | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:149:2:149:8 | session [pointer] | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:2:149:8 | session | provenance | | +| CookieWithoutHttpOnly.go:149:20:151:2 | &... | CookieWithoutHttpOnly.go:149:20:151:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:149:21:151:2 | struct literal | CookieWithoutHttpOnly.go:149:20:151:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:157:2:157:9 | definition of httpOnly | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | provenance | | +| CookieWithoutHttpOnly.go:157:14:157:17 | true | CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | provenance | | +| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | +| CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | +| CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | +| CookieWithoutHttpOnly.go:158:16:158:20 | store | CookieWithoutHttpOnly.go:158:2:158:43 | ... := ...[0] | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:159:2:159:8 | session [pointer] | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:158:2:158:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:159:2:159:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | CookieWithoutHttpOnly.go:166:2:166:8 | session | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | session | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | session | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:2:161:8 | session [pointer] | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | +| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:2:161:8 | session | provenance | | +| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:161:20:164:2 | &... | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | CookieWithoutHttpOnly.go:161:20:164:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:163:13:163:20 | httpOnly | CookieWithoutHttpOnly.go:161:21:164:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:169:56:169:63 | argument corresponding to httpOnly | CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | provenance | | +| CookieWithoutHttpOnly.go:169:56:169:63 | definition of httpOnly | CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | provenance | | +| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | +| CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | +| CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | +| CookieWithoutHttpOnly.go:170:16:170:20 | store | CookieWithoutHttpOnly.go:170:2:170:43 | ... := ...[0] | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:171:2:171:8 | session [pointer] | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:170:2:170:8 | definition of session [pointer] | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:171:2:171:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | CookieWithoutHttpOnly.go:178:2:178:8 | session | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | session | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | session | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:2:173:8 | session [pointer] | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | implicit dereference | provenance | | +| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | +| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:2:173:8 | session | provenance | | +| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:173:20:176:2 | &... | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | CookieWithoutHttpOnly.go:173:20:176:2 | &... | provenance | | +| CookieWithoutHttpOnly.go:175:13:175:20 | httpOnly | CookieWithoutHttpOnly.go:173:21:176:2 | struct literal | provenance | | +| CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | CookieWithoutHttpOnly.go:191:19:191:25 | session | provenance | | +| CookieWithoutHttpOnly.go:183:16:183:20 | store | CookieWithoutHttpOnly.go:183:2:183:43 | ... := ...[0] | provenance | | +| CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | CookieWithoutHttpOnly.go:202:19:202:25 | session | provenance | | +| CookieWithoutHttpOnly.go:195:16:195:20 | store | CookieWithoutHttpOnly.go:195:2:195:43 | ... := ...[0] | provenance | | nodes | CookieWithoutHttpOnly.go:11:7:14:2 | struct literal | semmle.label | struct literal | | CookieWithoutHttpOnly.go:12:10:12:18 | "session" | semmle.label | "session" | diff --git a/go/ql/test/experimental/CWE-203/Timing.expected b/go/ql/test/experimental/CWE-203/Timing.expected index 05e19774dbcf..b1aa5487aa97 100644 --- a/go/ql/test/experimental/CWE-203/Timing.expected +++ b/go/ql/test/experimental/CWE-203/Timing.expected @@ -1,10 +1,10 @@ edges -| timing.go:15:18:15:27 | selection of Header | timing.go:15:18:15:45 | call to Get | -| timing.go:15:18:15:45 | call to Get | timing.go:17:31:17:42 | headerSecret | -| timing.go:28:18:28:27 | selection of Header | timing.go:28:18:28:45 | call to Get | -| timing.go:28:18:28:45 | call to Get | timing.go:30:47:30:58 | headerSecret | -| timing.go:41:18:41:27 | selection of Header | timing.go:41:18:41:45 | call to Get | -| timing.go:41:18:41:45 | call to Get | timing.go:42:25:42:36 | headerSecret | +| timing.go:15:18:15:27 | selection of Header | timing.go:15:18:15:45 | call to Get | provenance | | +| timing.go:15:18:15:45 | call to Get | timing.go:17:31:17:42 | headerSecret | provenance | | +| timing.go:28:18:28:27 | selection of Header | timing.go:28:18:28:45 | call to Get | provenance | | +| timing.go:28:18:28:45 | call to Get | timing.go:30:47:30:58 | headerSecret | provenance | | +| timing.go:41:18:41:27 | selection of Header | timing.go:41:18:41:45 | call to Get | provenance | | +| timing.go:41:18:41:45 | call to Get | timing.go:42:25:42:36 | headerSecret | provenance | | nodes | timing.go:15:18:15:27 | selection of Header | semmle.label | selection of Header | | timing.go:15:18:15:45 | call to Get | semmle.label | call to Get | diff --git a/go/ql/test/experimental/CWE-287/ImproperLdapAuth.expected b/go/ql/test/experimental/CWE-287/ImproperLdapAuth.expected index 16d32e489375..14629dfec2e0 100644 --- a/go/ql/test/experimental/CWE-287/ImproperLdapAuth.expected +++ b/go/ql/test/experimental/CWE-287/ImproperLdapAuth.expected @@ -1,7 +1,7 @@ edges -| ImproperLdapAuth.go:18:18:18:24 | selection of URL | ImproperLdapAuth.go:18:18:18:32 | call to Query | -| ImproperLdapAuth.go:18:18:18:32 | call to Query | ImproperLdapAuth.go:28:23:28:34 | bindPassword | -| ImproperLdapAuth.go:87:18:87:19 | "" | ImproperLdapAuth.go:97:23:97:34 | bindPassword | +| ImproperLdapAuth.go:18:18:18:24 | selection of URL | ImproperLdapAuth.go:18:18:18:32 | call to Query | provenance | | +| ImproperLdapAuth.go:18:18:18:32 | call to Query | ImproperLdapAuth.go:28:23:28:34 | bindPassword | provenance | | +| ImproperLdapAuth.go:87:18:87:19 | "" | ImproperLdapAuth.go:97:23:97:34 | bindPassword | provenance | | nodes | ImproperLdapAuth.go:18:18:18:24 | selection of URL | semmle.label | selection of URL | | ImproperLdapAuth.go:18:18:18:32 | call to Query | semmle.label | call to Query | diff --git a/go/ql/test/experimental/CWE-321-V2/HardCodedKeys.expected b/go/ql/test/experimental/CWE-321-V2/HardCodedKeys.expected index 6d1d1693ab71..5b26a2a9b369 100644 --- a/go/ql/test/experimental/CWE-321-V2/HardCodedKeys.expected +++ b/go/ql/test/experimental/CWE-321-V2/HardCodedKeys.expected @@ -1,8 +1,8 @@ edges -| go-jose.v3.go:13:14:13:34 | type conversion | go-jose.v3.go:24:32:24:37 | JwtKey | -| go-jose.v3.go:13:21:13:33 | "AllYourBase" | go-jose.v3.go:13:14:13:34 | type conversion | -| golang-jwt-v5.go:19:15:19:35 | type conversion | golang-jwt-v5.go:27:9:27:15 | JwtKey1 | -| golang-jwt-v5.go:19:22:19:34 | "AllYourBase" | golang-jwt-v5.go:19:15:19:35 | type conversion | +| go-jose.v3.go:13:14:13:34 | type conversion | go-jose.v3.go:24:32:24:37 | JwtKey | provenance | | +| go-jose.v3.go:13:21:13:33 | "AllYourBase" | go-jose.v3.go:13:14:13:34 | type conversion | provenance | | +| golang-jwt-v5.go:19:15:19:35 | type conversion | golang-jwt-v5.go:27:9:27:15 | JwtKey1 | provenance | | +| golang-jwt-v5.go:19:22:19:34 | "AllYourBase" | golang-jwt-v5.go:19:15:19:35 | type conversion | provenance | | nodes | go-jose.v3.go:13:14:13:34 | type conversion | semmle.label | type conversion | | go-jose.v3.go:13:21:13:33 | "AllYourBase" | semmle.label | "AllYourBase" | diff --git a/go/ql/test/experimental/CWE-321/HardcodedKeys.expected b/go/ql/test/experimental/CWE-321/HardcodedKeys.expected index 873bb55b7c2c..bcc40eacb231 100644 --- a/go/ql/test/experimental/CWE-321/HardcodedKeys.expected +++ b/go/ql/test/experimental/CWE-321/HardcodedKeys.expected @@ -1,44 +1,44 @@ edges -| HardcodedKeysBad.go:11:18:11:38 | type conversion | HardcodedKeysBad.go:19:28:19:39 | mySigningKey | -| HardcodedKeysBad.go:11:25:11:37 | "AllYourBase" | HardcodedKeysBad.go:11:18:11:38 | type conversion | -| main.go:33:18:33:31 | type conversion | main.go:42:28:42:39 | mySigningKey | -| main.go:33:25:33:30 | "key1" | main.go:33:18:33:31 | type conversion | -| main.go:50:23:50:28 | "key2" | main.go:50:16:50:29 | type conversion | -| main.go:68:9:68:22 | type conversion | main.go:69:44:69:46 | key | -| main.go:68:16:68:21 | `key3` | main.go:68:9:68:22 | type conversion | -| main.go:73:9:73:22 | type conversion | main.go:74:66:74:68 | key | -| main.go:73:16:73:21 | "key4" | main.go:73:9:73:22 | type conversion | -| main.go:77:10:77:23 | type conversion | main.go:82:15:82:18 | key2 | -| main.go:77:17:77:22 | "key5" | main.go:77:10:77:23 | type conversion | -| main.go:88:9:88:22 | type conversion | main.go:92:41:92:43 | key | -| main.go:88:16:88:21 | "key6" | main.go:88:9:88:22 | type conversion | -| main.go:97:10:97:23 | type conversion | main.go:99:66:99:69 | key2 | -| main.go:97:17:97:22 | "key7" | main.go:97:10:97:23 | type conversion | -| main.go:105:9:105:22 | type conversion | main.go:110:30:110:32 | key | -| main.go:105:16:105:21 | "key8" | main.go:105:9:105:22 | type conversion | -| main.go:114:15:114:28 | type conversion | main.go:115:16:115:24 | sharedKey | -| main.go:114:22:114:27 | "key9" | main.go:114:15:114:28 | type conversion | -| main.go:118:23:118:37 | type conversion | main.go:121:16:121:30 | sharedKeyglobal | -| main.go:118:30:118:36 | "key10" | main.go:118:23:118:37 | type conversion | -| main.go:127:27:127:33 | "key11" | main.go:127:20:127:34 | type conversion | -| main.go:142:14:142:28 | type conversion | main.go:144:39:144:46 | mySecret | -| main.go:142:21:142:27 | "key12" | main.go:142:14:142:28 | type conversion | -| main.go:149:14:149:28 | type conversion | main.go:153:11:153:18 | mySecret | -| main.go:149:21:149:27 | "key13" | main.go:149:14:149:28 | type conversion | -| main.go:160:12:160:26 | type conversion | main.go:161:34:161:39 | secret | -| main.go:160:19:160:25 | "key14" | main.go:160:12:160:26 | type conversion | -| main.go:166:12:166:26 | type conversion | main.go:167:32:167:37 | secret | -| main.go:166:19:166:25 | "key15" | main.go:166:12:166:26 | type conversion | -| main.go:172:12:172:26 | type conversion | main.go:173:41:173:46 | secret | -| main.go:172:19:172:25 | "key16" | main.go:172:12:172:26 | type conversion | -| main.go:178:12:178:26 | type conversion | main.go:179:51:179:56 | secret | -| main.go:178:19:178:25 | "key17" | main.go:178:12:178:26 | type conversion | -| main.go:184:12:184:26 | type conversion | main.go:185:42:185:47 | secret | -| main.go:184:19:184:25 | "key18" | main.go:184:12:184:26 | type conversion | -| main.go:190:12:190:26 | type conversion | main.go:193:33:193:38 | secret | -| main.go:190:19:190:25 | "key19" | main.go:190:12:190:26 | type conversion | -| sanitizer.go:17:9:17:21 | type conversion | sanitizer.go:18:44:18:46 | key | -| sanitizer.go:17:16:17:20 | `key` | sanitizer.go:17:9:17:21 | type conversion | +| HardcodedKeysBad.go:11:18:11:38 | type conversion | HardcodedKeysBad.go:19:28:19:39 | mySigningKey | provenance | | +| HardcodedKeysBad.go:11:25:11:37 | "AllYourBase" | HardcodedKeysBad.go:11:18:11:38 | type conversion | provenance | | +| main.go:33:18:33:31 | type conversion | main.go:42:28:42:39 | mySigningKey | provenance | | +| main.go:33:25:33:30 | "key1" | main.go:33:18:33:31 | type conversion | provenance | | +| main.go:50:23:50:28 | "key2" | main.go:50:16:50:29 | type conversion | provenance | | +| main.go:68:9:68:22 | type conversion | main.go:69:44:69:46 | key | provenance | | +| main.go:68:16:68:21 | `key3` | main.go:68:9:68:22 | type conversion | provenance | | +| main.go:73:9:73:22 | type conversion | main.go:74:66:74:68 | key | provenance | | +| main.go:73:16:73:21 | "key4" | main.go:73:9:73:22 | type conversion | provenance | | +| main.go:77:10:77:23 | type conversion | main.go:82:15:82:18 | key2 | provenance | | +| main.go:77:17:77:22 | "key5" | main.go:77:10:77:23 | type conversion | provenance | | +| main.go:88:9:88:22 | type conversion | main.go:92:41:92:43 | key | provenance | | +| main.go:88:16:88:21 | "key6" | main.go:88:9:88:22 | type conversion | provenance | | +| main.go:97:10:97:23 | type conversion | main.go:99:66:99:69 | key2 | provenance | | +| main.go:97:17:97:22 | "key7" | main.go:97:10:97:23 | type conversion | provenance | | +| main.go:105:9:105:22 | type conversion | main.go:110:30:110:32 | key | provenance | | +| main.go:105:16:105:21 | "key8" | main.go:105:9:105:22 | type conversion | provenance | | +| main.go:114:15:114:28 | type conversion | main.go:115:16:115:24 | sharedKey | provenance | | +| main.go:114:22:114:27 | "key9" | main.go:114:15:114:28 | type conversion | provenance | | +| main.go:118:23:118:37 | type conversion | main.go:121:16:121:30 | sharedKeyglobal | provenance | | +| main.go:118:30:118:36 | "key10" | main.go:118:23:118:37 | type conversion | provenance | | +| main.go:127:27:127:33 | "key11" | main.go:127:20:127:34 | type conversion | provenance | | +| main.go:142:14:142:28 | type conversion | main.go:144:39:144:46 | mySecret | provenance | | +| main.go:142:21:142:27 | "key12" | main.go:142:14:142:28 | type conversion | provenance | | +| main.go:149:14:149:28 | type conversion | main.go:153:11:153:18 | mySecret | provenance | | +| main.go:149:21:149:27 | "key13" | main.go:149:14:149:28 | type conversion | provenance | | +| main.go:160:12:160:26 | type conversion | main.go:161:34:161:39 | secret | provenance | | +| main.go:160:19:160:25 | "key14" | main.go:160:12:160:26 | type conversion | provenance | | +| main.go:166:12:166:26 | type conversion | main.go:167:32:167:37 | secret | provenance | | +| main.go:166:19:166:25 | "key15" | main.go:166:12:166:26 | type conversion | provenance | | +| main.go:172:12:172:26 | type conversion | main.go:173:41:173:46 | secret | provenance | | +| main.go:172:19:172:25 | "key16" | main.go:172:12:172:26 | type conversion | provenance | | +| main.go:178:12:178:26 | type conversion | main.go:179:51:179:56 | secret | provenance | | +| main.go:178:19:178:25 | "key17" | main.go:178:12:178:26 | type conversion | provenance | | +| main.go:184:12:184:26 | type conversion | main.go:185:42:185:47 | secret | provenance | | +| main.go:184:19:184:25 | "key18" | main.go:184:12:184:26 | type conversion | provenance | | +| main.go:190:12:190:26 | type conversion | main.go:193:33:193:38 | secret | provenance | | +| main.go:190:19:190:25 | "key19" | main.go:190:12:190:26 | type conversion | provenance | | +| sanitizer.go:17:9:17:21 | type conversion | sanitizer.go:18:44:18:46 | key | provenance | | +| sanitizer.go:17:16:17:20 | `key` | sanitizer.go:17:9:17:21 | type conversion | provenance | | nodes | HardcodedKeysBad.go:11:18:11:38 | type conversion | semmle.label | type conversion | | HardcodedKeysBad.go:11:25:11:37 | "AllYourBase" | semmle.label | "AllYourBase" | diff --git a/go/ql/test/experimental/CWE-347/ParseJWTWithoutVerification.expected b/go/ql/test/experimental/CWE-347/ParseJWTWithoutVerification.expected index 7162ed5802f2..d067b5eb83dc 100644 --- a/go/ql/test/experimental/CWE-347/ParseJWTWithoutVerification.expected +++ b/go/ql/test/experimental/CWE-347/ParseJWTWithoutVerification.expected @@ -1,16 +1,16 @@ edges -| go-jose.v3.go:25:16:25:20 | selection of URL | go-jose.v3.go:25:16:25:28 | call to Query | -| go-jose.v3.go:25:16:25:28 | call to Query | go-jose.v3.go:25:16:25:47 | call to Get | -| go-jose.v3.go:25:16:25:47 | call to Get | go-jose.v3.go:26:15:26:25 | signedToken | -| go-jose.v3.go:26:15:26:25 | signedToken | go-jose.v3.go:29:19:29:29 | definition of signedToken | -| go-jose.v3.go:29:19:29:29 | definition of signedToken | go-jose.v3.go:31:37:31:47 | signedToken | -| go-jose.v3.go:31:2:31:48 | ... := ...[0] | go-jose.v3.go:33:12:33:23 | DecodedToken | -| go-jose.v3.go:31:37:31:47 | signedToken | go-jose.v3.go:31:2:31:48 | ... := ...[0] | -| golang-jwt-v5.go:28:16:28:20 | selection of URL | golang-jwt-v5.go:28:16:28:28 | call to Query | -| golang-jwt-v5.go:28:16:28:28 | call to Query | golang-jwt-v5.go:28:16:28:47 | call to Get | -| golang-jwt-v5.go:28:16:28:47 | call to Get | golang-jwt-v5.go:29:25:29:35 | signedToken | -| golang-jwt-v5.go:29:25:29:35 | signedToken | golang-jwt-v5.go:32:29:32:39 | definition of signedToken | -| golang-jwt-v5.go:32:29:32:39 | definition of signedToken | golang-jwt-v5.go:34:58:34:68 | signedToken | +| go-jose.v3.go:25:16:25:20 | selection of URL | go-jose.v3.go:25:16:25:28 | call to Query | provenance | | +| go-jose.v3.go:25:16:25:28 | call to Query | go-jose.v3.go:25:16:25:47 | call to Get | provenance | | +| go-jose.v3.go:25:16:25:47 | call to Get | go-jose.v3.go:26:15:26:25 | signedToken | provenance | | +| go-jose.v3.go:26:15:26:25 | signedToken | go-jose.v3.go:29:19:29:29 | definition of signedToken | provenance | | +| go-jose.v3.go:29:19:29:29 | definition of signedToken | go-jose.v3.go:31:37:31:47 | signedToken | provenance | | +| go-jose.v3.go:31:2:31:48 | ... := ...[0] | go-jose.v3.go:33:12:33:23 | DecodedToken | provenance | | +| go-jose.v3.go:31:37:31:47 | signedToken | go-jose.v3.go:31:2:31:48 | ... := ...[0] | provenance | | +| golang-jwt-v5.go:28:16:28:20 | selection of URL | golang-jwt-v5.go:28:16:28:28 | call to Query | provenance | | +| golang-jwt-v5.go:28:16:28:28 | call to Query | golang-jwt-v5.go:28:16:28:47 | call to Get | provenance | | +| golang-jwt-v5.go:28:16:28:47 | call to Get | golang-jwt-v5.go:29:25:29:35 | signedToken | provenance | | +| golang-jwt-v5.go:29:25:29:35 | signedToken | golang-jwt-v5.go:32:29:32:39 | definition of signedToken | provenance | | +| golang-jwt-v5.go:32:29:32:39 | definition of signedToken | golang-jwt-v5.go:34:58:34:68 | signedToken | provenance | | nodes | go-jose.v3.go:25:16:25:20 | selection of URL | semmle.label | selection of URL | | go-jose.v3.go:25:16:25:28 | call to Query | semmle.label | call to Query | diff --git a/go/ql/test/experimental/CWE-369/DivideByZero.expected b/go/ql/test/experimental/CWE-369/DivideByZero.expected index 0d979a79790d..0b6eeb933176 100644 --- a/go/ql/test/experimental/CWE-369/DivideByZero.expected +++ b/go/ql/test/experimental/CWE-369/DivideByZero.expected @@ -1,26 +1,26 @@ edges -| DivideByZero.go:10:12:10:16 | selection of URL | DivideByZero.go:10:12:10:24 | call to Query | -| DivideByZero.go:10:12:10:24 | call to Query | DivideByZero.go:11:27:11:32 | param1 | -| DivideByZero.go:11:2:11:33 | ... := ...[0] | DivideByZero.go:12:16:12:20 | value | -| DivideByZero.go:11:27:11:32 | param1 | DivideByZero.go:11:2:11:33 | ... := ...[0] | -| DivideByZero.go:17:12:17:16 | selection of URL | DivideByZero.go:17:12:17:24 | call to Query | -| DivideByZero.go:17:12:17:24 | call to Query | DivideByZero.go:18:11:18:24 | type conversion | -| DivideByZero.go:18:11:18:24 | type conversion | DivideByZero.go:19:16:19:20 | value | -| DivideByZero.go:24:12:24:16 | selection of URL | DivideByZero.go:24:12:24:24 | call to Query | -| DivideByZero.go:24:12:24:24 | call to Query | DivideByZero.go:25:31:25:36 | param1 | -| DivideByZero.go:25:2:25:45 | ... := ...[0] | DivideByZero.go:26:16:26:20 | value | -| DivideByZero.go:25:31:25:36 | param1 | DivideByZero.go:25:2:25:45 | ... := ...[0] | -| DivideByZero.go:31:12:31:16 | selection of URL | DivideByZero.go:31:12:31:24 | call to Query | -| DivideByZero.go:31:12:31:24 | call to Query | DivideByZero.go:32:33:32:38 | param1 | -| DivideByZero.go:32:2:32:43 | ... := ...[0] | DivideByZero.go:33:16:33:20 | value | -| DivideByZero.go:32:33:32:38 | param1 | DivideByZero.go:32:2:32:43 | ... := ...[0] | -| DivideByZero.go:38:12:38:16 | selection of URL | DivideByZero.go:38:12:38:24 | call to Query | -| DivideByZero.go:38:12:38:24 | call to Query | DivideByZero.go:39:32:39:37 | param1 | -| DivideByZero.go:39:2:39:46 | ... := ...[0] | DivideByZero.go:40:16:40:20 | value | -| DivideByZero.go:39:32:39:37 | param1 | DivideByZero.go:39:2:39:46 | ... := ...[0] | -| DivideByZero.go:54:12:54:16 | selection of URL | DivideByZero.go:54:12:54:24 | call to Query | -| DivideByZero.go:54:12:54:24 | call to Query | DivideByZero.go:55:11:55:24 | type conversion | -| DivideByZero.go:55:11:55:24 | type conversion | DivideByZero.go:57:17:57:21 | value | +| DivideByZero.go:10:12:10:16 | selection of URL | DivideByZero.go:10:12:10:24 | call to Query | provenance | | +| DivideByZero.go:10:12:10:24 | call to Query | DivideByZero.go:11:27:11:32 | param1 | provenance | | +| DivideByZero.go:11:2:11:33 | ... := ...[0] | DivideByZero.go:12:16:12:20 | value | provenance | | +| DivideByZero.go:11:27:11:32 | param1 | DivideByZero.go:11:2:11:33 | ... := ...[0] | provenance | | +| DivideByZero.go:17:12:17:16 | selection of URL | DivideByZero.go:17:12:17:24 | call to Query | provenance | | +| DivideByZero.go:17:12:17:24 | call to Query | DivideByZero.go:18:11:18:24 | type conversion | provenance | | +| DivideByZero.go:18:11:18:24 | type conversion | DivideByZero.go:19:16:19:20 | value | provenance | | +| DivideByZero.go:24:12:24:16 | selection of URL | DivideByZero.go:24:12:24:24 | call to Query | provenance | | +| DivideByZero.go:24:12:24:24 | call to Query | DivideByZero.go:25:31:25:36 | param1 | provenance | | +| DivideByZero.go:25:2:25:45 | ... := ...[0] | DivideByZero.go:26:16:26:20 | value | provenance | | +| DivideByZero.go:25:31:25:36 | param1 | DivideByZero.go:25:2:25:45 | ... := ...[0] | provenance | | +| DivideByZero.go:31:12:31:16 | selection of URL | DivideByZero.go:31:12:31:24 | call to Query | provenance | | +| DivideByZero.go:31:12:31:24 | call to Query | DivideByZero.go:32:33:32:38 | param1 | provenance | | +| DivideByZero.go:32:2:32:43 | ... := ...[0] | DivideByZero.go:33:16:33:20 | value | provenance | | +| DivideByZero.go:32:33:32:38 | param1 | DivideByZero.go:32:2:32:43 | ... := ...[0] | provenance | | +| DivideByZero.go:38:12:38:16 | selection of URL | DivideByZero.go:38:12:38:24 | call to Query | provenance | | +| DivideByZero.go:38:12:38:24 | call to Query | DivideByZero.go:39:32:39:37 | param1 | provenance | | +| DivideByZero.go:39:2:39:46 | ... := ...[0] | DivideByZero.go:40:16:40:20 | value | provenance | | +| DivideByZero.go:39:32:39:37 | param1 | DivideByZero.go:39:2:39:46 | ... := ...[0] | provenance | | +| DivideByZero.go:54:12:54:16 | selection of URL | DivideByZero.go:54:12:54:24 | call to Query | provenance | | +| DivideByZero.go:54:12:54:24 | call to Query | DivideByZero.go:55:11:55:24 | type conversion | provenance | | +| DivideByZero.go:55:11:55:24 | type conversion | DivideByZero.go:57:17:57:21 | value | provenance | | nodes | DivideByZero.go:10:12:10:16 | selection of URL | semmle.label | selection of URL | | DivideByZero.go:10:12:10:24 | call to Query | semmle.label | call to Query | diff --git a/go/ql/test/experimental/CWE-74/DsnInjection.expected b/go/ql/test/experimental/CWE-74/DsnInjection.expected index 9859f05b50c8..2788c186d006 100644 --- a/go/ql/test/experimental/CWE-74/DsnInjection.expected +++ b/go/ql/test/experimental/CWE-74/DsnInjection.expected @@ -1,9 +1,9 @@ edges -| Dsn.go:47:10:47:30 | call to FormValue | Dsn.go:49:102:49:105 | name | -| Dsn.go:49:11:49:106 | []type{args} [array] | Dsn.go:49:11:49:106 | call to Sprintf | -| Dsn.go:49:11:49:106 | call to Sprintf | Dsn.go:50:29:50:33 | dbDSN | -| Dsn.go:49:102:49:105 | name | Dsn.go:49:11:49:106 | []type{args} [array] | -| Dsn.go:49:102:49:105 | name | Dsn.go:49:11:49:106 | call to Sprintf | +| Dsn.go:47:10:47:30 | call to FormValue | Dsn.go:49:102:49:105 | name | provenance | | +| Dsn.go:49:11:49:106 | []type{args} [array] | Dsn.go:49:11:49:106 | call to Sprintf | provenance | | +| Dsn.go:49:11:49:106 | call to Sprintf | Dsn.go:50:29:50:33 | dbDSN | provenance | | +| Dsn.go:49:102:49:105 | name | Dsn.go:49:11:49:106 | []type{args} [array] | provenance | | +| Dsn.go:49:102:49:105 | name | Dsn.go:49:11:49:106 | call to Sprintf | provenance | | nodes | Dsn.go:47:10:47:30 | call to FormValue | semmle.label | call to FormValue | | Dsn.go:49:11:49:106 | []type{args} [array] | semmle.label | []type{args} [array] | diff --git a/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected b/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected index 09143c4cab9d..ffe20d053f7a 100644 --- a/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected +++ b/go/ql/test/experimental/CWE-74/DsnInjectionLocal.expected @@ -1,24 +1,24 @@ edges -| Dsn.go:26:11:26:17 | selection of Args | Dsn.go:28:102:28:109 | index expression | -| Dsn.go:28:11:28:110 | []type{args} [array] | Dsn.go:28:11:28:110 | call to Sprintf | -| Dsn.go:28:11:28:110 | call to Sprintf | Dsn.go:29:29:29:33 | dbDSN | -| Dsn.go:28:102:28:109 | index expression | Dsn.go:28:11:28:110 | []type{args} [array] | -| Dsn.go:28:102:28:109 | index expression | Dsn.go:28:11:28:110 | call to Sprintf | -| Dsn.go:62:2:62:4 | definition of cfg [pointer] | Dsn.go:63:9:63:11 | cfg [pointer] | -| Dsn.go:62:2:62:4 | definition of cfg [pointer] | Dsn.go:67:102:67:104 | cfg [pointer] | -| Dsn.go:63:9:63:11 | cfg [pointer] | Dsn.go:63:9:63:11 | implicit dereference | -| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:62:2:62:4 | definition of cfg [pointer] | -| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:63:9:63:11 | implicit dereference | -| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | -| Dsn.go:63:19:63:25 | selection of Args | Dsn.go:63:19:63:29 | slice expression | -| Dsn.go:63:19:63:29 | slice expression | Dsn.go:63:9:63:11 | implicit dereference | -| Dsn.go:67:11:67:109 | []type{args} [array] | Dsn.go:67:11:67:109 | call to Sprintf | -| Dsn.go:67:11:67:109 | call to Sprintf | Dsn.go:68:29:68:33 | dbDSN | -| Dsn.go:67:102:67:104 | cfg [pointer] | Dsn.go:67:102:67:104 | implicit dereference | -| Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:63:9:63:11 | implicit dereference | -| Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | -| Dsn.go:67:102:67:108 | selection of dsn | Dsn.go:67:11:67:109 | []type{args} [array] | -| Dsn.go:67:102:67:108 | selection of dsn | Dsn.go:67:11:67:109 | call to Sprintf | +| Dsn.go:26:11:26:17 | selection of Args | Dsn.go:28:102:28:109 | index expression | provenance | | +| Dsn.go:28:11:28:110 | []type{args} [array] | Dsn.go:28:11:28:110 | call to Sprintf | provenance | | +| Dsn.go:28:11:28:110 | call to Sprintf | Dsn.go:29:29:29:33 | dbDSN | provenance | | +| Dsn.go:28:102:28:109 | index expression | Dsn.go:28:11:28:110 | []type{args} [array] | provenance | | +| Dsn.go:28:102:28:109 | index expression | Dsn.go:28:11:28:110 | call to Sprintf | provenance | | +| Dsn.go:62:2:62:4 | definition of cfg [pointer] | Dsn.go:63:9:63:11 | cfg [pointer] | provenance | | +| Dsn.go:62:2:62:4 | definition of cfg [pointer] | Dsn.go:67:102:67:104 | cfg [pointer] | provenance | | +| Dsn.go:63:9:63:11 | cfg [pointer] | Dsn.go:63:9:63:11 | implicit dereference | provenance | | +| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:62:2:62:4 | definition of cfg [pointer] | provenance | | +| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:63:9:63:11 | implicit dereference | provenance | | +| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | provenance | | +| Dsn.go:63:19:63:25 | selection of Args | Dsn.go:63:19:63:29 | slice expression | provenance | | +| Dsn.go:63:19:63:29 | slice expression | Dsn.go:63:9:63:11 | implicit dereference | provenance | | +| Dsn.go:67:11:67:109 | []type{args} [array] | Dsn.go:67:11:67:109 | call to Sprintf | provenance | | +| Dsn.go:67:11:67:109 | call to Sprintf | Dsn.go:68:29:68:33 | dbDSN | provenance | | +| Dsn.go:67:102:67:104 | cfg [pointer] | Dsn.go:67:102:67:104 | implicit dereference | provenance | | +| Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:63:9:63:11 | implicit dereference | provenance | | +| Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | provenance | | +| Dsn.go:67:102:67:108 | selection of dsn | Dsn.go:67:11:67:109 | []type{args} [array] | provenance | | +| Dsn.go:67:102:67:108 | selection of dsn | Dsn.go:67:11:67:109 | call to Sprintf | provenance | | nodes | Dsn.go:26:11:26:17 | selection of Args | semmle.label | selection of Args | | Dsn.go:28:11:28:110 | []type{args} [array] | semmle.label | []type{args} [array] | diff --git a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected b/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected index 2b543ccde1db..1d0f5facd038 100644 --- a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected +++ b/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected @@ -1,28 +1,28 @@ edges -| HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | HTMLTemplateEscapingPassthrough.go:30:39:30:39 | a | -| HTMLTemplateEscapingPassthrough.go:29:26:29:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | -| HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | HTMLTemplateEscapingPassthrough.go:36:40:36:40 | a | -| HTMLTemplateEscapingPassthrough.go:35:23:35:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | -| HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | HTMLTemplateEscapingPassthrough.go:41:40:41:40 | a | -| HTMLTemplateEscapingPassthrough.go:40:19:40:33 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | -| HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | HTMLTemplateEscapingPassthrough.go:47:41:47:41 | c | -| HTMLTemplateEscapingPassthrough.go:46:29:46:43 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | -| HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | HTMLTemplateEscapingPassthrough.go:51:44:51:44 | d | -| HTMLTemplateEscapingPassthrough.go:50:23:50:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | -| HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | HTMLTemplateEscapingPassthrough.go:55:44:55:44 | e | -| HTMLTemplateEscapingPassthrough.go:54:26:54:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | -| HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | HTMLTemplateEscapingPassthrough.go:59:38:59:38 | b | -| HTMLTemplateEscapingPassthrough.go:58:24:58:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | -| HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | HTMLTemplateEscapingPassthrough.go:63:44:63:44 | f | -| HTMLTemplateEscapingPassthrough.go:62:27:62:41 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | -| HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | HTMLTemplateEscapingPassthrough.go:67:38:67:38 | g | -| HTMLTemplateEscapingPassthrough.go:66:24:66:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | -| HTMLTemplateEscapingPassthrough.go:75:17:75:31 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:76:38:76:44 | escaped | -| HTMLTemplateEscapingPassthrough.go:81:10:81:24 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:84:38:84:40 | src | -| HTMLTemplateEscapingPassthrough.go:89:10:89:24 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:91:64:91:66 | src | -| HTMLTemplateEscapingPassthrough.go:91:16:91:77 | type conversion | HTMLTemplateEscapingPassthrough.go:92:38:92:46 | converted | -| HTMLTemplateEscapingPassthrough.go:91:38:91:67 | call to HTMLEscapeString | HTMLTemplateEscapingPassthrough.go:91:16:91:77 | type conversion | -| HTMLTemplateEscapingPassthrough.go:91:64:91:66 | src | HTMLTemplateEscapingPassthrough.go:91:38:91:67 | call to HTMLEscapeString | +| HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | HTMLTemplateEscapingPassthrough.go:30:39:30:39 | a | provenance | | +| HTMLTemplateEscapingPassthrough.go:29:26:29:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | HTMLTemplateEscapingPassthrough.go:36:40:36:40 | a | provenance | | +| HTMLTemplateEscapingPassthrough.go:35:23:35:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | HTMLTemplateEscapingPassthrough.go:41:40:41:40 | a | provenance | | +| HTMLTemplateEscapingPassthrough.go:40:19:40:33 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | HTMLTemplateEscapingPassthrough.go:47:41:47:41 | c | provenance | | +| HTMLTemplateEscapingPassthrough.go:46:29:46:43 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | HTMLTemplateEscapingPassthrough.go:51:44:51:44 | d | provenance | | +| HTMLTemplateEscapingPassthrough.go:50:23:50:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | HTMLTemplateEscapingPassthrough.go:55:44:55:44 | e | provenance | | +| HTMLTemplateEscapingPassthrough.go:54:26:54:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | HTMLTemplateEscapingPassthrough.go:59:38:59:38 | b | provenance | | +| HTMLTemplateEscapingPassthrough.go:58:24:58:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | HTMLTemplateEscapingPassthrough.go:63:44:63:44 | f | provenance | | +| HTMLTemplateEscapingPassthrough.go:62:27:62:41 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | HTMLTemplateEscapingPassthrough.go:67:38:67:38 | g | provenance | | +| HTMLTemplateEscapingPassthrough.go:66:24:66:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:75:17:75:31 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:76:38:76:44 | escaped | provenance | | +| HTMLTemplateEscapingPassthrough.go:81:10:81:24 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:84:38:84:40 | src | provenance | | +| HTMLTemplateEscapingPassthrough.go:89:10:89:24 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:91:64:91:66 | src | provenance | | +| HTMLTemplateEscapingPassthrough.go:91:16:91:77 | type conversion | HTMLTemplateEscapingPassthrough.go:92:38:92:46 | converted | provenance | | +| HTMLTemplateEscapingPassthrough.go:91:38:91:67 | call to HTMLEscapeString | HTMLTemplateEscapingPassthrough.go:91:16:91:77 | type conversion | provenance | | +| HTMLTemplateEscapingPassthrough.go:91:64:91:66 | src | HTMLTemplateEscapingPassthrough.go:91:38:91:67 | call to HTMLEscapeString | provenance | | nodes | HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | semmle.label | type conversion | | HTMLTemplateEscapingPassthrough.go:29:26:29:40 | call to UserAgent | semmle.label | call to UserAgent | diff --git a/go/ql/test/experimental/CWE-918/SSRF.expected b/go/ql/test/experimental/CWE-918/SSRF.expected index e7b78beb153b..0e5bdee9671d 100644 --- a/go/ql/test/experimental/CWE-918/SSRF.expected +++ b/go/ql/test/experimental/CWE-918/SSRF.expected @@ -1,46 +1,46 @@ edges -| builtin.go:19:12:19:34 | call to FormValue | builtin.go:22:21:22:62 | ...+... | -| builtin.go:83:21:83:31 | call to Referer | builtin.go:88:27:88:40 | untrustedInput | -| builtin.go:97:21:97:31 | call to Referer | builtin.go:101:36:101:49 | untrustedInput | -| builtin.go:111:21:111:31 | call to Referer | builtin.go:114:15:114:28 | untrustedInput | -| builtin.go:129:21:129:31 | call to Referer | builtin.go:132:38:132:51 | untrustedInput | -| new-tests.go:26:26:26:30 | &... | new-tests.go:31:48:31:56 | selection of word | -| new-tests.go:26:26:26:30 | &... | new-tests.go:32:48:32:56 | selection of safe | -| new-tests.go:26:26:26:30 | &... | new-tests.go:35:49:35:57 | selection of word | -| new-tests.go:31:11:31:57 | []type{args} [array] | new-tests.go:31:11:31:57 | call to Sprintf | -| new-tests.go:31:48:31:56 | selection of word | new-tests.go:31:11:31:57 | []type{args} [array] | -| new-tests.go:31:48:31:56 | selection of word | new-tests.go:31:11:31:57 | call to Sprintf | -| new-tests.go:32:11:32:57 | []type{args} [array] | new-tests.go:32:11:32:57 | call to Sprintf | -| new-tests.go:32:48:32:56 | selection of safe | new-tests.go:32:11:32:57 | []type{args} [array] | -| new-tests.go:32:48:32:56 | selection of safe | new-tests.go:32:11:32:57 | call to Sprintf | -| new-tests.go:35:12:35:58 | []type{args} [array] | new-tests.go:35:12:35:58 | call to Sprintf | -| new-tests.go:35:49:35:57 | selection of word | new-tests.go:35:12:35:58 | []type{args} [array] | -| new-tests.go:35:49:35:57 | selection of word | new-tests.go:35:12:35:58 | call to Sprintf | -| new-tests.go:39:18:39:30 | call to Param | new-tests.go:47:11:47:46 | ...+... | -| new-tests.go:49:18:49:30 | call to Query | new-tests.go:50:11:50:46 | ...+... | -| new-tests.go:62:2:62:39 | ... := ...[0] | new-tests.go:63:17:63:23 | reqBody | -| new-tests.go:62:31:62:38 | selection of Body | new-tests.go:62:2:62:39 | ... := ...[0] | -| new-tests.go:63:17:63:23 | reqBody | new-tests.go:63:26:63:30 | &... | -| new-tests.go:63:26:63:30 | &... | new-tests.go:68:48:68:56 | selection of word | -| new-tests.go:63:26:63:30 | &... | new-tests.go:69:48:69:56 | selection of safe | -| new-tests.go:63:26:63:30 | &... | new-tests.go:74:49:74:57 | selection of word | -| new-tests.go:68:11:68:57 | []type{args} [array] | new-tests.go:68:11:68:57 | call to Sprintf | -| new-tests.go:68:48:68:56 | selection of word | new-tests.go:68:11:68:57 | []type{args} [array] | -| new-tests.go:68:48:68:56 | selection of word | new-tests.go:68:11:68:57 | call to Sprintf | -| new-tests.go:69:11:69:57 | []type{args} [array] | new-tests.go:69:11:69:57 | call to Sprintf | -| new-tests.go:69:48:69:56 | selection of safe | new-tests.go:69:11:69:57 | []type{args} [array] | -| new-tests.go:69:48:69:56 | selection of safe | new-tests.go:69:11:69:57 | call to Sprintf | -| new-tests.go:74:12:74:58 | []type{args} [array] | new-tests.go:74:12:74:58 | call to Sprintf | -| new-tests.go:74:49:74:57 | selection of word | new-tests.go:74:12:74:58 | []type{args} [array] | -| new-tests.go:74:49:74:57 | selection of word | new-tests.go:74:12:74:58 | call to Sprintf | -| new-tests.go:78:18:78:24 | selection of URL | new-tests.go:78:18:78:32 | call to Query | -| new-tests.go:78:18:78:32 | call to Query | new-tests.go:78:18:78:46 | call to Get | -| new-tests.go:78:18:78:46 | call to Get | new-tests.go:79:11:79:46 | ...+... | -| new-tests.go:81:18:81:67 | call to TrimPrefix | new-tests.go:82:11:82:46 | ...+... | -| new-tests.go:81:37:81:43 | selection of URL | new-tests.go:81:37:81:48 | selection of Path | -| new-tests.go:81:37:81:48 | selection of Path | new-tests.go:81:18:81:67 | call to TrimPrefix | -| new-tests.go:86:10:86:20 | call to Vars | new-tests.go:88:11:88:46 | ...+... | -| new-tests.go:95:18:95:45 | call to URLParam | new-tests.go:96:11:96:46 | ...+... | +| builtin.go:19:12:19:34 | call to FormValue | builtin.go:22:21:22:62 | ...+... | provenance | | +| builtin.go:83:21:83:31 | call to Referer | builtin.go:88:27:88:40 | untrustedInput | provenance | | +| builtin.go:97:21:97:31 | call to Referer | builtin.go:101:36:101:49 | untrustedInput | provenance | | +| builtin.go:111:21:111:31 | call to Referer | builtin.go:114:15:114:28 | untrustedInput | provenance | | +| builtin.go:129:21:129:31 | call to Referer | builtin.go:132:38:132:51 | untrustedInput | provenance | | +| new-tests.go:26:26:26:30 | &... | new-tests.go:31:48:31:56 | selection of word | provenance | | +| new-tests.go:26:26:26:30 | &... | new-tests.go:32:48:32:56 | selection of safe | provenance | | +| new-tests.go:26:26:26:30 | &... | new-tests.go:35:49:35:57 | selection of word | provenance | | +| new-tests.go:31:11:31:57 | []type{args} [array] | new-tests.go:31:11:31:57 | call to Sprintf | provenance | | +| new-tests.go:31:48:31:56 | selection of word | new-tests.go:31:11:31:57 | []type{args} [array] | provenance | | +| new-tests.go:31:48:31:56 | selection of word | new-tests.go:31:11:31:57 | call to Sprintf | provenance | | +| new-tests.go:32:11:32:57 | []type{args} [array] | new-tests.go:32:11:32:57 | call to Sprintf | provenance | | +| new-tests.go:32:48:32:56 | selection of safe | new-tests.go:32:11:32:57 | []type{args} [array] | provenance | | +| new-tests.go:32:48:32:56 | selection of safe | new-tests.go:32:11:32:57 | call to Sprintf | provenance | | +| new-tests.go:35:12:35:58 | []type{args} [array] | new-tests.go:35:12:35:58 | call to Sprintf | provenance | | +| new-tests.go:35:49:35:57 | selection of word | new-tests.go:35:12:35:58 | []type{args} [array] | provenance | | +| new-tests.go:35:49:35:57 | selection of word | new-tests.go:35:12:35:58 | call to Sprintf | provenance | | +| new-tests.go:39:18:39:30 | call to Param | new-tests.go:47:11:47:46 | ...+... | provenance | | +| new-tests.go:49:18:49:30 | call to Query | new-tests.go:50:11:50:46 | ...+... | provenance | | +| new-tests.go:62:2:62:39 | ... := ...[0] | new-tests.go:63:17:63:23 | reqBody | provenance | | +| new-tests.go:62:31:62:38 | selection of Body | new-tests.go:62:2:62:39 | ... := ...[0] | provenance | | +| new-tests.go:63:17:63:23 | reqBody | new-tests.go:63:26:63:30 | &... | provenance | | +| new-tests.go:63:26:63:30 | &... | new-tests.go:68:48:68:56 | selection of word | provenance | | +| new-tests.go:63:26:63:30 | &... | new-tests.go:69:48:69:56 | selection of safe | provenance | | +| new-tests.go:63:26:63:30 | &... | new-tests.go:74:49:74:57 | selection of word | provenance | | +| new-tests.go:68:11:68:57 | []type{args} [array] | new-tests.go:68:11:68:57 | call to Sprintf | provenance | | +| new-tests.go:68:48:68:56 | selection of word | new-tests.go:68:11:68:57 | []type{args} [array] | provenance | | +| new-tests.go:68:48:68:56 | selection of word | new-tests.go:68:11:68:57 | call to Sprintf | provenance | | +| new-tests.go:69:11:69:57 | []type{args} [array] | new-tests.go:69:11:69:57 | call to Sprintf | provenance | | +| new-tests.go:69:48:69:56 | selection of safe | new-tests.go:69:11:69:57 | []type{args} [array] | provenance | | +| new-tests.go:69:48:69:56 | selection of safe | new-tests.go:69:11:69:57 | call to Sprintf | provenance | | +| new-tests.go:74:12:74:58 | []type{args} [array] | new-tests.go:74:12:74:58 | call to Sprintf | provenance | | +| new-tests.go:74:49:74:57 | selection of word | new-tests.go:74:12:74:58 | []type{args} [array] | provenance | | +| new-tests.go:74:49:74:57 | selection of word | new-tests.go:74:12:74:58 | call to Sprintf | provenance | | +| new-tests.go:78:18:78:24 | selection of URL | new-tests.go:78:18:78:32 | call to Query | provenance | | +| new-tests.go:78:18:78:32 | call to Query | new-tests.go:78:18:78:46 | call to Get | provenance | | +| new-tests.go:78:18:78:46 | call to Get | new-tests.go:79:11:79:46 | ...+... | provenance | | +| new-tests.go:81:18:81:67 | call to TrimPrefix | new-tests.go:82:11:82:46 | ...+... | provenance | | +| new-tests.go:81:37:81:43 | selection of URL | new-tests.go:81:37:81:48 | selection of Path | provenance | | +| new-tests.go:81:37:81:48 | selection of Path | new-tests.go:81:18:81:67 | call to TrimPrefix | provenance | | +| new-tests.go:86:10:86:20 | call to Vars | new-tests.go:88:11:88:46 | ...+... | provenance | | +| new-tests.go:95:18:95:45 | call to URLParam | new-tests.go:96:11:96:46 | ...+... | provenance | | nodes | builtin.go:19:12:19:34 | call to FormValue | semmle.label | call to FormValue | | builtin.go:22:21:22:62 | ...+... | semmle.label | ...+... | diff --git a/go/ql/test/experimental/Unsafe/WrongUsageOfUnsafe.expected b/go/ql/test/experimental/Unsafe/WrongUsageOfUnsafe.expected index 612c6ef1e511..3c7e02eea265 100644 --- a/go/ql/test/experimental/Unsafe/WrongUsageOfUnsafe.expected +++ b/go/ql/test/experimental/Unsafe/WrongUsageOfUnsafe.expected @@ -1,20 +1,20 @@ edges -| WrongUsageOfUnsafe.go:17:24:17:48 | type conversion | WrongUsageOfUnsafe.go:17:13:17:49 | type conversion | -| WrongUsageOfUnsafe.go:34:24:34:51 | type conversion | WrongUsageOfUnsafe.go:34:13:34:52 | type conversion | -| WrongUsageOfUnsafe.go:55:24:55:51 | type conversion | WrongUsageOfUnsafe.go:55:13:55:52 | type conversion | -| WrongUsageOfUnsafe.go:77:27:77:54 | type conversion | WrongUsageOfUnsafe.go:77:16:77:55 | type conversion | -| WrongUsageOfUnsafe.go:93:20:93:44 | type conversion | WrongUsageOfUnsafe.go:93:13:93:45 | type conversion | -| WrongUsageOfUnsafe.go:111:31:111:58 | type conversion | WrongUsageOfUnsafe.go:111:16:111:59 | type conversion | -| WrongUsageOfUnsafe.go:129:31:129:55 | type conversion | WrongUsageOfUnsafe.go:129:16:129:56 | type conversion | -| WrongUsageOfUnsafe.go:149:31:149:55 | type conversion | WrongUsageOfUnsafe.go:149:16:149:56 | type conversion | -| WrongUsageOfUnsafe.go:166:33:166:57 | type conversion | WrongUsageOfUnsafe.go:166:16:166:58 | type conversion | -| WrongUsageOfUnsafe.go:189:31:189:55 | type conversion | WrongUsageOfUnsafe.go:189:16:189:56 | type conversion | -| WrongUsageOfUnsafe.go:211:31:211:60 | type conversion | WrongUsageOfUnsafe.go:211:16:211:61 | type conversion | -| WrongUsageOfUnsafe.go:227:31:227:55 | type conversion | WrongUsageOfUnsafe.go:236:21:236:23 | definition of req | -| WrongUsageOfUnsafe.go:236:21:236:23 | definition of req | WrongUsageOfUnsafe.go:243:9:243:27 | type conversion | -| WrongUsageOfUnsafe.go:256:28:256:52 | type conversion | WrongUsageOfUnsafe.go:256:16:256:53 | type conversion | -| WrongUsageOfUnsafe.go:274:25:274:49 | type conversion | WrongUsageOfUnsafe.go:274:16:274:50 | type conversion | -| WrongUsageOfUnsafe.go:292:23:292:47 | type conversion | WrongUsageOfUnsafe.go:292:16:292:48 | type conversion | +| WrongUsageOfUnsafe.go:17:24:17:48 | type conversion | WrongUsageOfUnsafe.go:17:13:17:49 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:34:24:34:51 | type conversion | WrongUsageOfUnsafe.go:34:13:34:52 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:55:24:55:51 | type conversion | WrongUsageOfUnsafe.go:55:13:55:52 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:77:27:77:54 | type conversion | WrongUsageOfUnsafe.go:77:16:77:55 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:93:20:93:44 | type conversion | WrongUsageOfUnsafe.go:93:13:93:45 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:111:31:111:58 | type conversion | WrongUsageOfUnsafe.go:111:16:111:59 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:129:31:129:55 | type conversion | WrongUsageOfUnsafe.go:129:16:129:56 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:149:31:149:55 | type conversion | WrongUsageOfUnsafe.go:149:16:149:56 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:166:33:166:57 | type conversion | WrongUsageOfUnsafe.go:166:16:166:58 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:189:31:189:55 | type conversion | WrongUsageOfUnsafe.go:189:16:189:56 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:211:31:211:60 | type conversion | WrongUsageOfUnsafe.go:211:16:211:61 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:227:31:227:55 | type conversion | WrongUsageOfUnsafe.go:236:21:236:23 | definition of req | provenance | | +| WrongUsageOfUnsafe.go:236:21:236:23 | definition of req | WrongUsageOfUnsafe.go:243:9:243:27 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:256:28:256:52 | type conversion | WrongUsageOfUnsafe.go:256:16:256:53 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:274:25:274:49 | type conversion | WrongUsageOfUnsafe.go:274:16:274:50 | type conversion | provenance | | +| WrongUsageOfUnsafe.go:292:23:292:47 | type conversion | WrongUsageOfUnsafe.go:292:16:292:48 | type conversion | provenance | | nodes | WrongUsageOfUnsafe.go:17:13:17:49 | type conversion | semmle.label | type conversion | | WrongUsageOfUnsafe.go:17:24:17:48 | type conversion | semmle.label | type conversion | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ChannelField/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/ChannelField/test.expected index 523d27be2506..315e8f2ceab6 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ChannelField/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ChannelField/test.expected @@ -1,13 +1,13 @@ edges -| test.go:9:9:9:11 | selection of c [collection] | test.go:9:7:9:11 | <-... | -| test.go:13:16:13:16 | definition of s [pointer, c, collection] | test.go:16:2:16:2 | s [pointer, c, collection] | -| test.go:15:10:15:17 | call to source | test.go:16:9:16:12 | data | -| test.go:16:2:16:2 | implicit dereference [c, collection] | test.go:13:16:13:16 | definition of s [pointer, c, collection] | -| test.go:16:2:16:2 | implicit dereference [c, collection] | test.go:16:2:16:4 | selection of c [collection] | -| test.go:16:2:16:2 | s [pointer, c, collection] | test.go:16:2:16:2 | implicit dereference [c, collection] | -| test.go:16:2:16:4 | selection of c [collection] | test.go:9:9:9:11 | selection of c [collection] | -| test.go:16:2:16:4 | selection of c [collection] | test.go:16:2:16:2 | implicit dereference [c, collection] | -| test.go:16:9:16:12 | data | test.go:16:2:16:4 | selection of c [collection] | +| test.go:9:9:9:11 | selection of c [collection] | test.go:9:7:9:11 | <-... | provenance | | +| test.go:13:16:13:16 | definition of s [pointer, c, collection] | test.go:16:2:16:2 | s [pointer, c, collection] | provenance | | +| test.go:15:10:15:17 | call to source | test.go:16:9:16:12 | data | provenance | | +| test.go:16:2:16:2 | implicit dereference [c, collection] | test.go:13:16:13:16 | definition of s [pointer, c, collection] | provenance | | +| test.go:16:2:16:2 | implicit dereference [c, collection] | test.go:16:2:16:4 | selection of c [collection] | provenance | | +| test.go:16:2:16:2 | s [pointer, c, collection] | test.go:16:2:16:2 | implicit dereference [c, collection] | provenance | | +| test.go:16:2:16:4 | selection of c [collection] | test.go:9:9:9:11 | selection of c [collection] | provenance | | +| test.go:16:2:16:4 | selection of c [collection] | test.go:16:2:16:2 | implicit dereference [c, collection] | provenance | | +| test.go:16:9:16:12 | data | test.go:16:2:16:4 | selection of c [collection] | provenance | | nodes | test.go:9:7:9:11 | <-... | semmle.label | <-... | | test.go:9:9:9:11 | selection of c [collection] | semmle.label | selection of c [collection] | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected b/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected index a7ab7fc63a42..c126e70195b3 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected @@ -1,6 +1,6 @@ edges -| Builtin.go:6:2:6:2 | definition of b | Builtin.go:8:9:8:17 | type conversion | -| Builtin.go:7:2:7:15 | selection of Body | Builtin.go:6:2:6:2 | definition of b | +| Builtin.go:6:2:6:2 | definition of b | Builtin.go:8:9:8:17 | type conversion | provenance | | +| Builtin.go:7:2:7:15 | selection of Body | Builtin.go:6:2:6:2 | definition of b | provenance | | nodes | Builtin.go:6:2:6:2 | definition of b | semmle.label | definition of b | | Builtin.go:7:2:7:15 | selection of Body | semmle.label | selection of Body | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected index 2c7583cacb43..1bd17817463b 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/HiddenNodes/test.expected @@ -1,7 +1,7 @@ edges -| test.go:14:8:14:15 | call to source | test.go:15:34:15:35 | fi | -| test.go:15:2:15:44 | ... := ...[0] | test.go:16:7:16:12 | header | -| test.go:15:34:15:35 | fi | test.go:15:2:15:44 | ... := ...[0] | +| test.go:14:8:14:15 | call to source | test.go:15:34:15:35 | fi | provenance | | +| test.go:15:2:15:44 | ... := ...[0] | test.go:16:7:16:12 | header | provenance | | +| test.go:15:34:15:35 | fi | test.go:15:2:15:44 | ... := ...[0] | provenance | | nodes | test.go:14:8:14:15 | call to source | semmle.label | call to source | | test.go:15:2:15:44 | ... := ...[0] | semmle.label | ... := ...[0] | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected index 3c14fdfadeb4..5825fcdfcd69 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected @@ -1,105 +1,105 @@ edges -| test.go:33:6:33:10 | definition of bound | test.go:35:13:35:30 | type conversion | -| test.go:33:6:33:10 | definition of bound | test.go:36:13:36:27 | type conversion | -| test.go:33:6:33:10 | definition of bound | test.go:37:13:37:29 | type conversion | -| test.go:42:20:42:42 | call to Cookie | test.go:42:13:42:43 | type conversion | -| test.go:47:20:47:31 | call to Data | test.go:47:13:47:52 | type conversion | -| test.go:52:20:52:43 | call to GetData | test.go:52:13:52:53 | type conversion | -| test.go:57:20:57:42 | call to Header | test.go:57:13:57:43 | type conversion | -| test.go:62:20:62:41 | call to Param | test.go:62:13:62:42 | type conversion | -| test.go:67:20:67:33 | call to Params | test.go:67:13:67:45 | type conversion | -| test.go:72:20:72:41 | call to Query | test.go:72:13:72:42 | type conversion | -| test.go:77:20:77:32 | call to Refer | test.go:77:13:77:33 | type conversion | -| test.go:82:20:82:34 | call to Referer | test.go:82:13:82:35 | type conversion | -| test.go:87:20:87:30 | call to URI | test.go:87:13:87:31 | type conversion | -| test.go:92:20:92:30 | call to URL | test.go:92:13:92:31 | type conversion | -| test.go:97:20:97:36 | call to UserAgent | test.go:97:13:97:37 | type conversion | -| test.go:102:14:102:25 | call to Data | test.go:102:14:102:45 | type assertion | -| test.go:114:14:114:25 | call to Data | test.go:114:14:114:45 | type assertion | -| test.go:126:14:126:25 | call to Data | test.go:126:14:126:45 | type assertion | -| test.go:143:23:143:42 | call to Data | test.go:143:23:143:62 | type assertion | -| test.go:199:15:199:26 | call to Data | test.go:200:36:200:53 | type assertion | -| test.go:199:15:199:26 | call to Data | test.go:201:39:201:56 | type assertion | -| test.go:199:15:199:26 | call to Data | test.go:202:28:202:56 | type assertion | -| test.go:199:15:199:26 | call to Data | test.go:204:36:204:53 | type assertion | -| test.go:199:15:199:26 | call to Data | test.go:205:34:205:51 | type assertion | -| test.go:200:21:200:54 | call to HTML2str | test.go:200:14:200:55 | type conversion | -| test.go:200:36:200:53 | type assertion | test.go:200:21:200:54 | call to HTML2str | -| test.go:201:21:201:57 | call to Htmlunquote | test.go:201:14:201:58 | type conversion | -| test.go:201:39:201:56 | type assertion | test.go:201:21:201:57 | call to Htmlunquote | -| test.go:202:2:202:68 | ... := ...[0] | test.go:203:14:203:28 | type assertion | -| test.go:202:28:202:56 | type assertion | test.go:202:2:202:68 | ... := ...[0] | -| test.go:204:21:204:54 | call to Str2html | test.go:204:14:204:55 | type conversion | -| test.go:204:36:204:53 | type assertion | test.go:204:21:204:54 | call to Str2html | -| test.go:205:21:205:58 | call to Substr | test.go:205:14:205:59 | type conversion | -| test.go:205:34:205:51 | type assertion | test.go:205:21:205:58 | call to Substr | -| test.go:207:6:207:6 | definition of s | test.go:209:14:209:28 | type conversion | -| test.go:208:18:208:33 | selection of Form | test.go:207:6:207:6 | definition of s | -| test.go:223:2:223:34 | ... := ...[0] | test.go:225:31:225:31 | f | -| test.go:223:2:223:34 | ... := ...[1] | test.go:224:14:224:32 | type conversion | -| test.go:225:2:225:32 | ... := ...[0] | test.go:226:14:226:20 | content | -| test.go:225:31:225:31 | f | test.go:225:2:225:32 | ... := ...[0] | -| test.go:228:2:228:40 | ... := ...[0] | test.go:229:14:229:38 | type conversion | -| test.go:231:7:231:28 | call to GetString | test.go:232:14:232:22 | type conversion | -| test.go:234:8:234:35 | call to GetStrings | test.go:235:14:235:26 | type conversion | -| test.go:237:9:237:17 | call to Input | test.go:238:14:238:27 | type conversion | -| test.go:240:6:240:8 | definition of str | test.go:242:14:242:30 | type conversion | -| test.go:246:15:246:36 | call to GetString | test.go:249:21:249:29 | untrusted | -| test.go:259:23:259:44 | call to GetCookie | test.go:259:16:259:45 | type conversion | -| test.go:270:62:270:83 | call to GetCookie | test.go:270:55:270:84 | type conversion | -| test.go:275:2:275:40 | ... := ...[0] | test.go:278:21:278:28 | index expression | -| test.go:275:2:275:40 | ... := ...[0] | test.go:283:44:283:60 | selection of Filename | -| test.go:275:2:275:40 | ... := ...[0] | test.go:284:38:284:49 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:285:37:285:48 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:291:4:291:15 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:293:42:293:53 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:294:53:294:64 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:295:38:295:49 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:296:49:296:60 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:297:51:297:65 | index expression | -| test.go:275:2:275:40 | ... := ...[0] | test.go:298:36:298:47 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:299:37:299:48 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:301:39:301:50 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:302:40:302:51 | genericFiles | -| test.go:275:2:275:40 | ... := ...[0] | test.go:303:39:303:50 | genericFiles | -| test.go:276:2:276:13 | definition of genericFiles [array] | test.go:297:51:297:62 | genericFiles [array] | -| test.go:278:21:278:28 | index expression | test.go:276:2:276:13 | definition of genericFiles [array] | -| test.go:283:44:283:60 | selection of Filename | test.go:283:21:283:61 | call to GetDisplayString | -| test.go:284:21:284:53 | call to SliceChunk | test.go:284:21:284:92 | selection of Filename | -| test.go:284:38:284:49 | genericFiles | test.go:284:21:284:53 | call to SliceChunk | -| test.go:285:21:285:60 | call to SliceDiff | test.go:285:21:285:96 | selection of Filename | -| test.go:285:37:285:48 | genericFiles | test.go:285:21:285:60 | call to SliceDiff | -| test.go:290:3:292:44 | call to SliceFilter | test.go:290:3:292:80 | selection of Filename | -| test.go:291:4:291:15 | genericFiles | test.go:290:3:292:44 | call to SliceFilter | -| test.go:293:21:293:65 | call to SliceIntersect | test.go:293:21:293:101 | selection of Filename | -| test.go:293:42:293:53 | genericFiles | test.go:293:21:293:65 | call to SliceIntersect | -| test.go:294:21:294:65 | call to SliceIntersect | test.go:294:21:294:101 | selection of Filename | -| test.go:294:53:294:64 | genericFiles | test.go:294:21:294:65 | call to SliceIntersect | -| test.go:295:21:295:61 | call to SliceMerge | test.go:295:21:295:97 | selection of Filename | -| test.go:295:38:295:49 | genericFiles | test.go:295:21:295:61 | call to SliceMerge | -| test.go:296:21:296:61 | call to SliceMerge | test.go:296:21:296:97 | selection of Filename | -| test.go:296:49:296:60 | genericFiles | test.go:296:21:296:61 | call to SliceMerge | -| test.go:297:21:297:66 | call to SlicePad | test.go:297:21:297:102 | selection of Filename | -| test.go:297:51:297:62 | genericFiles [array] | test.go:297:51:297:65 | index expression | -| test.go:297:51:297:65 | index expression | test.go:297:21:297:66 | call to SlicePad | -| test.go:298:21:298:66 | call to SlicePad | test.go:298:21:298:102 | selection of Filename | -| test.go:298:36:298:47 | genericFiles | test.go:298:21:298:66 | call to SlicePad | -| test.go:299:21:299:49 | call to SliceRand | test.go:299:21:299:82 | selection of Filename | -| test.go:299:37:299:48 | genericFiles | test.go:299:21:299:49 | call to SliceRand | -| test.go:301:21:301:97 | call to SliceReduce | test.go:301:21:301:133 | selection of Filename | -| test.go:301:39:301:50 | genericFiles | test.go:301:21:301:97 | call to SliceReduce | -| test.go:302:21:302:52 | call to SliceShuffle | test.go:302:21:302:88 | selection of Filename | -| test.go:302:40:302:51 | genericFiles | test.go:302:21:302:52 | call to SliceShuffle | -| test.go:303:21:303:51 | call to SliceUnique | test.go:303:21:303:87 | selection of Filename | -| test.go:303:39:303:50 | genericFiles | test.go:303:21:303:51 | call to SliceUnique | -| test.go:308:2:308:5 | definition of bMap | test.go:311:21:311:24 | bMap | -| test.go:308:2:308:5 | definition of bMap | test.go:312:21:312:24 | bMap | -| test.go:309:15:309:36 | call to GetString | test.go:310:22:310:30 | untrusted | -| test.go:310:22:310:30 | untrusted | test.go:308:2:308:5 | definition of bMap | -| test.go:311:21:311:24 | bMap | test.go:311:21:311:39 | call to Get | -| test.go:311:21:311:39 | call to Get | test.go:311:21:311:48 | type assertion | -| test.go:312:21:312:24 | bMap | test.go:312:21:312:32 | call to Items | -| test.go:312:21:312:32 | call to Items | test.go:312:21:312:52 | type assertion | +| test.go:33:6:33:10 | definition of bound | test.go:35:13:35:30 | type conversion | provenance | | +| test.go:33:6:33:10 | definition of bound | test.go:36:13:36:27 | type conversion | provenance | | +| test.go:33:6:33:10 | definition of bound | test.go:37:13:37:29 | type conversion | provenance | | +| test.go:42:20:42:42 | call to Cookie | test.go:42:13:42:43 | type conversion | provenance | | +| test.go:47:20:47:31 | call to Data | test.go:47:13:47:52 | type conversion | provenance | | +| test.go:52:20:52:43 | call to GetData | test.go:52:13:52:53 | type conversion | provenance | | +| test.go:57:20:57:42 | call to Header | test.go:57:13:57:43 | type conversion | provenance | | +| test.go:62:20:62:41 | call to Param | test.go:62:13:62:42 | type conversion | provenance | | +| test.go:67:20:67:33 | call to Params | test.go:67:13:67:45 | type conversion | provenance | | +| test.go:72:20:72:41 | call to Query | test.go:72:13:72:42 | type conversion | provenance | | +| test.go:77:20:77:32 | call to Refer | test.go:77:13:77:33 | type conversion | provenance | | +| test.go:82:20:82:34 | call to Referer | test.go:82:13:82:35 | type conversion | provenance | | +| test.go:87:20:87:30 | call to URI | test.go:87:13:87:31 | type conversion | provenance | | +| test.go:92:20:92:30 | call to URL | test.go:92:13:92:31 | type conversion | provenance | | +| test.go:97:20:97:36 | call to UserAgent | test.go:97:13:97:37 | type conversion | provenance | | +| test.go:102:14:102:25 | call to Data | test.go:102:14:102:45 | type assertion | provenance | | +| test.go:114:14:114:25 | call to Data | test.go:114:14:114:45 | type assertion | provenance | | +| test.go:126:14:126:25 | call to Data | test.go:126:14:126:45 | type assertion | provenance | | +| test.go:143:23:143:42 | call to Data | test.go:143:23:143:62 | type assertion | provenance | | +| test.go:199:15:199:26 | call to Data | test.go:200:36:200:53 | type assertion | provenance | | +| test.go:199:15:199:26 | call to Data | test.go:201:39:201:56 | type assertion | provenance | | +| test.go:199:15:199:26 | call to Data | test.go:202:28:202:56 | type assertion | provenance | | +| test.go:199:15:199:26 | call to Data | test.go:204:36:204:53 | type assertion | provenance | | +| test.go:199:15:199:26 | call to Data | test.go:205:34:205:51 | type assertion | provenance | | +| test.go:200:21:200:54 | call to HTML2str | test.go:200:14:200:55 | type conversion | provenance | | +| test.go:200:36:200:53 | type assertion | test.go:200:21:200:54 | call to HTML2str | provenance | | +| test.go:201:21:201:57 | call to Htmlunquote | test.go:201:14:201:58 | type conversion | provenance | | +| test.go:201:39:201:56 | type assertion | test.go:201:21:201:57 | call to Htmlunquote | provenance | | +| test.go:202:2:202:68 | ... := ...[0] | test.go:203:14:203:28 | type assertion | provenance | | +| test.go:202:28:202:56 | type assertion | test.go:202:2:202:68 | ... := ...[0] | provenance | | +| test.go:204:21:204:54 | call to Str2html | test.go:204:14:204:55 | type conversion | provenance | | +| test.go:204:36:204:53 | type assertion | test.go:204:21:204:54 | call to Str2html | provenance | | +| test.go:205:21:205:58 | call to Substr | test.go:205:14:205:59 | type conversion | provenance | | +| test.go:205:34:205:51 | type assertion | test.go:205:21:205:58 | call to Substr | provenance | | +| test.go:207:6:207:6 | definition of s | test.go:209:14:209:28 | type conversion | provenance | | +| test.go:208:18:208:33 | selection of Form | test.go:207:6:207:6 | definition of s | provenance | | +| test.go:223:2:223:34 | ... := ...[0] | test.go:225:31:225:31 | f | provenance | | +| test.go:223:2:223:34 | ... := ...[1] | test.go:224:14:224:32 | type conversion | provenance | | +| test.go:225:2:225:32 | ... := ...[0] | test.go:226:14:226:20 | content | provenance | | +| test.go:225:31:225:31 | f | test.go:225:2:225:32 | ... := ...[0] | provenance | | +| test.go:228:2:228:40 | ... := ...[0] | test.go:229:14:229:38 | type conversion | provenance | | +| test.go:231:7:231:28 | call to GetString | test.go:232:14:232:22 | type conversion | provenance | | +| test.go:234:8:234:35 | call to GetStrings | test.go:235:14:235:26 | type conversion | provenance | | +| test.go:237:9:237:17 | call to Input | test.go:238:14:238:27 | type conversion | provenance | | +| test.go:240:6:240:8 | definition of str | test.go:242:14:242:30 | type conversion | provenance | | +| test.go:246:15:246:36 | call to GetString | test.go:249:21:249:29 | untrusted | provenance | | +| test.go:259:23:259:44 | call to GetCookie | test.go:259:16:259:45 | type conversion | provenance | | +| test.go:270:62:270:83 | call to GetCookie | test.go:270:55:270:84 | type conversion | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:278:21:278:28 | index expression | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:283:44:283:60 | selection of Filename | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:284:38:284:49 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:285:37:285:48 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:291:4:291:15 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:293:42:293:53 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:294:53:294:64 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:295:38:295:49 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:296:49:296:60 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:297:51:297:65 | index expression | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:298:36:298:47 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:299:37:299:48 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:301:39:301:50 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:302:40:302:51 | genericFiles | provenance | | +| test.go:275:2:275:40 | ... := ...[0] | test.go:303:39:303:50 | genericFiles | provenance | | +| test.go:276:2:276:13 | definition of genericFiles [array] | test.go:297:51:297:62 | genericFiles [array] | provenance | | +| test.go:278:21:278:28 | index expression | test.go:276:2:276:13 | definition of genericFiles [array] | provenance | | +| test.go:283:44:283:60 | selection of Filename | test.go:283:21:283:61 | call to GetDisplayString | provenance | | +| test.go:284:21:284:53 | call to SliceChunk | test.go:284:21:284:92 | selection of Filename | provenance | | +| test.go:284:38:284:49 | genericFiles | test.go:284:21:284:53 | call to SliceChunk | provenance | | +| test.go:285:21:285:60 | call to SliceDiff | test.go:285:21:285:96 | selection of Filename | provenance | | +| test.go:285:37:285:48 | genericFiles | test.go:285:21:285:60 | call to SliceDiff | provenance | | +| test.go:290:3:292:44 | call to SliceFilter | test.go:290:3:292:80 | selection of Filename | provenance | | +| test.go:291:4:291:15 | genericFiles | test.go:290:3:292:44 | call to SliceFilter | provenance | | +| test.go:293:21:293:65 | call to SliceIntersect | test.go:293:21:293:101 | selection of Filename | provenance | | +| test.go:293:42:293:53 | genericFiles | test.go:293:21:293:65 | call to SliceIntersect | provenance | | +| test.go:294:21:294:65 | call to SliceIntersect | test.go:294:21:294:101 | selection of Filename | provenance | | +| test.go:294:53:294:64 | genericFiles | test.go:294:21:294:65 | call to SliceIntersect | provenance | | +| test.go:295:21:295:61 | call to SliceMerge | test.go:295:21:295:97 | selection of Filename | provenance | | +| test.go:295:38:295:49 | genericFiles | test.go:295:21:295:61 | call to SliceMerge | provenance | | +| test.go:296:21:296:61 | call to SliceMerge | test.go:296:21:296:97 | selection of Filename | provenance | | +| test.go:296:49:296:60 | genericFiles | test.go:296:21:296:61 | call to SliceMerge | provenance | | +| test.go:297:21:297:66 | call to SlicePad | test.go:297:21:297:102 | selection of Filename | provenance | | +| test.go:297:51:297:62 | genericFiles [array] | test.go:297:51:297:65 | index expression | provenance | | +| test.go:297:51:297:65 | index expression | test.go:297:21:297:66 | call to SlicePad | provenance | | +| test.go:298:21:298:66 | call to SlicePad | test.go:298:21:298:102 | selection of Filename | provenance | | +| test.go:298:36:298:47 | genericFiles | test.go:298:21:298:66 | call to SlicePad | provenance | | +| test.go:299:21:299:49 | call to SliceRand | test.go:299:21:299:82 | selection of Filename | provenance | | +| test.go:299:37:299:48 | genericFiles | test.go:299:21:299:49 | call to SliceRand | provenance | | +| test.go:301:21:301:97 | call to SliceReduce | test.go:301:21:301:133 | selection of Filename | provenance | | +| test.go:301:39:301:50 | genericFiles | test.go:301:21:301:97 | call to SliceReduce | provenance | | +| test.go:302:21:302:52 | call to SliceShuffle | test.go:302:21:302:88 | selection of Filename | provenance | | +| test.go:302:40:302:51 | genericFiles | test.go:302:21:302:52 | call to SliceShuffle | provenance | | +| test.go:303:21:303:51 | call to SliceUnique | test.go:303:21:303:87 | selection of Filename | provenance | | +| test.go:303:39:303:50 | genericFiles | test.go:303:21:303:51 | call to SliceUnique | provenance | | +| test.go:308:2:308:5 | definition of bMap | test.go:311:21:311:24 | bMap | provenance | | +| test.go:308:2:308:5 | definition of bMap | test.go:312:21:312:24 | bMap | provenance | | +| test.go:309:15:309:36 | call to GetString | test.go:310:22:310:30 | untrusted | provenance | | +| test.go:310:22:310:30 | untrusted | test.go:308:2:308:5 | definition of bMap | provenance | | +| test.go:311:21:311:24 | bMap | test.go:311:21:311:39 | call to Get | provenance | | +| test.go:311:21:311:39 | call to Get | test.go:311:21:311:48 | type assertion | provenance | | +| test.go:312:21:312:24 | bMap | test.go:312:21:312:32 | call to Items | provenance | | +| test.go:312:21:312:32 | call to Items | test.go:312:21:312:52 | type assertion | provenance | | nodes | test.go:33:6:33:10 | definition of bound | semmle.label | definition of bound | | test.go:35:13:35:30 | type conversion | semmle.label | type conversion | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Beego/TaintedPath.expected b/go/ql/test/library-tests/semmle/go/frameworks/Beego/TaintedPath.expected index 714f03bdcec1..c0deba242e08 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Beego/TaintedPath.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Beego/TaintedPath.expected @@ -1,12 +1,12 @@ edges -| test.go:215:15:215:26 | call to Data | test.go:216:18:216:26 | untrusted | -| test.go:215:15:215:26 | call to Data | test.go:217:10:217:18 | untrusted | -| test.go:215:15:215:26 | call to Data | test.go:218:35:218:43 | untrusted | -| test.go:324:17:324:37 | selection of RequestBody | test.go:324:40:324:43 | &... | -| test.go:324:40:324:43 | &... | test.go:326:35:326:43 | untrusted | -| test.go:332:15:332:26 | call to Data | test.go:334:23:334:31 | untrusted | -| test.go:340:15:340:26 | call to Data | test.go:342:53:342:61 | untrusted | -| test.go:340:15:340:26 | call to Data | test.go:344:23:344:31 | untrusted | +| test.go:215:15:215:26 | call to Data | test.go:216:18:216:26 | untrusted | provenance | | +| test.go:215:15:215:26 | call to Data | test.go:217:10:217:18 | untrusted | provenance | | +| test.go:215:15:215:26 | call to Data | test.go:218:35:218:43 | untrusted | provenance | | +| test.go:324:17:324:37 | selection of RequestBody | test.go:324:40:324:43 | &... | provenance | | +| test.go:324:40:324:43 | &... | test.go:326:35:326:43 | untrusted | provenance | | +| test.go:332:15:332:26 | call to Data | test.go:334:23:334:31 | untrusted | provenance | | +| test.go:340:15:340:26 | call to Data | test.go:342:53:342:61 | untrusted | provenance | | +| test.go:340:15:340:26 | call to Data | test.go:344:23:344:31 | untrusted | provenance | | nodes | test.go:215:15:215:26 | call to Data | semmle.label | call to Data | | test.go:216:18:216:26 | untrusted | semmle.label | untrusted | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected b/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected index f9668a6f7230..ccaac4425ff5 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/SqlInjection.expected @@ -1,36 +1,36 @@ edges -| test.go:10:15:10:41 | call to UserAgent | test.go:12:11:12:19 | untrusted | -| test.go:10:15:10:41 | call to UserAgent | test.go:13:23:13:31 | untrusted | -| test.go:10:15:10:41 | call to UserAgent | test.go:14:14:14:22 | untrusted | -| test.go:10:15:10:41 | call to UserAgent | test.go:15:26:15:34 | untrusted | -| test.go:10:15:10:41 | call to UserAgent | test.go:16:12:16:20 | untrusted | -| test.go:10:15:10:41 | call to UserAgent | test.go:17:24:17:32 | untrusted | -| test.go:10:15:10:41 | call to UserAgent | test.go:18:15:18:23 | untrusted | -| test.go:10:15:10:41 | call to UserAgent | test.go:19:27:19:35 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:26:12:26:20 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:27:10:27:18 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:28:15:28:23 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:29:14:29:22 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:30:15:30:23 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:31:8:31:16 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:32:11:32:19 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:33:9:33:17 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:34:8:34:16 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:35:8:35:16 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:36:13:36:21 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:37:13:37:21 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:38:12:38:20 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:39:12:39:20 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:40:9:40:17 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:41:12:41:20 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:42:16:42:24 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:42:27:42:35 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:43:12:43:20 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:44:14:44:22 | untrusted | -| test.go:24:15:24:41 | call to UserAgent | test.go:44:25:44:33 | untrusted | -| test.go:48:15:48:41 | call to UserAgent | test.go:49:12:49:20 | untrusted | -| test.go:54:15:54:41 | call to UserAgent | test.go:56:31:56:39 | untrusted | -| test.go:60:15:60:41 | call to UserAgent | test.go:62:19:62:27 | untrusted | +| test.go:10:15:10:41 | call to UserAgent | test.go:12:11:12:19 | untrusted | provenance | | +| test.go:10:15:10:41 | call to UserAgent | test.go:13:23:13:31 | untrusted | provenance | | +| test.go:10:15:10:41 | call to UserAgent | test.go:14:14:14:22 | untrusted | provenance | | +| test.go:10:15:10:41 | call to UserAgent | test.go:15:26:15:34 | untrusted | provenance | | +| test.go:10:15:10:41 | call to UserAgent | test.go:16:12:16:20 | untrusted | provenance | | +| test.go:10:15:10:41 | call to UserAgent | test.go:17:24:17:32 | untrusted | provenance | | +| test.go:10:15:10:41 | call to UserAgent | test.go:18:15:18:23 | untrusted | provenance | | +| test.go:10:15:10:41 | call to UserAgent | test.go:19:27:19:35 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:26:12:26:20 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:27:10:27:18 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:28:15:28:23 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:29:14:29:22 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:30:15:30:23 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:31:8:31:16 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:32:11:32:19 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:33:9:33:17 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:34:8:34:16 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:35:8:35:16 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:36:13:36:21 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:37:13:37:21 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:38:12:38:20 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:39:12:39:20 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:40:9:40:17 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:41:12:41:20 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:42:16:42:24 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:42:27:42:35 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:43:12:43:20 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:44:14:44:22 | untrusted | provenance | | +| test.go:24:15:24:41 | call to UserAgent | test.go:44:25:44:33 | untrusted | provenance | | +| test.go:48:15:48:41 | call to UserAgent | test.go:49:12:49:20 | untrusted | provenance | | +| test.go:54:15:54:41 | call to UserAgent | test.go:56:31:56:39 | untrusted | provenance | | +| test.go:60:15:60:41 | call to UserAgent | test.go:62:19:62:27 | untrusted | provenance | | nodes | test.go:10:15:10:41 | call to UserAgent | semmle.label | call to UserAgent | | test.go:12:11:12:19 | untrusted | semmle.label | untrusted | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/StoredXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/StoredXss.expected index 09a41c42fb20..363a42b91d7d 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/StoredXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/BeegoOrm/StoredXss.expected @@ -1,31 +1,31 @@ edges -| test.go:77:13:77:16 | &... | test.go:78:13:78:29 | type conversion | -| test.go:77:13:77:16 | &... | test.go:79:13:79:43 | type conversion | -| test.go:82:22:82:26 | &... | test.go:83:13:83:30 | type conversion | -| test.go:86:21:86:25 | &... | test.go:87:13:87:30 | type conversion | -| test.go:92:20:92:36 | call to Value | test.go:92:13:92:37 | type conversion | -| test.go:93:20:93:39 | call to RawValue | test.go:93:13:93:49 | type conversion | -| test.go:94:20:94:37 | call to String | test.go:94:13:94:38 | type conversion | -| test.go:95:20:95:36 | call to Value | test.go:95:13:95:37 | type conversion | -| test.go:96:20:96:39 | call to RawValue | test.go:96:13:96:49 | type conversion | -| test.go:97:20:97:37 | call to String | test.go:97:13:97:38 | type conversion | -| test.go:98:20:98:37 | call to Value | test.go:98:13:98:38 | type conversion | -| test.go:99:20:99:40 | call to RawValue | test.go:99:13:99:50 | type conversion | -| test.go:100:20:100:38 | call to String | test.go:100:13:100:39 | type conversion | -| test.go:106:9:106:13 | &... | test.go:107:13:107:33 | type conversion | -| test.go:110:9:110:12 | &... | test.go:111:13:111:29 | type conversion | -| test.go:114:12:114:19 | &... | test.go:115:13:115:48 | type conversion | -| test.go:118:16:118:24 | &... | test.go:119:13:119:43 | type conversion | -| test.go:122:16:122:23 | &... | test.go:123:13:123:39 | type conversion | -| test.go:126:15:126:24 | &... | test.go:127:13:127:47 | type conversion | -| test.go:130:18:130:30 | &... | test.go:131:13:131:38 | type conversion | -| test.go:137:12:137:19 | &... | test.go:138:13:138:48 | type conversion | -| test.go:141:16:141:24 | &... | test.go:142:13:142:43 | type conversion | -| test.go:145:16:145:23 | &... | test.go:146:13:146:39 | type conversion | -| test.go:149:15:149:24 | &... | test.go:150:13:150:47 | type conversion | -| test.go:153:18:153:30 | &... | test.go:154:13:154:38 | type conversion | -| test.go:157:14:157:22 | &... | test.go:158:13:158:28 | type conversion | -| test.go:161:15:161:24 | &... | test.go:162:13:162:32 | type conversion | +| test.go:77:13:77:16 | &... | test.go:78:13:78:29 | type conversion | provenance | | +| test.go:77:13:77:16 | &... | test.go:79:13:79:43 | type conversion | provenance | | +| test.go:82:22:82:26 | &... | test.go:83:13:83:30 | type conversion | provenance | | +| test.go:86:21:86:25 | &... | test.go:87:13:87:30 | type conversion | provenance | | +| test.go:92:20:92:36 | call to Value | test.go:92:13:92:37 | type conversion | provenance | | +| test.go:93:20:93:39 | call to RawValue | test.go:93:13:93:49 | type conversion | provenance | | +| test.go:94:20:94:37 | call to String | test.go:94:13:94:38 | type conversion | provenance | | +| test.go:95:20:95:36 | call to Value | test.go:95:13:95:37 | type conversion | provenance | | +| test.go:96:20:96:39 | call to RawValue | test.go:96:13:96:49 | type conversion | provenance | | +| test.go:97:20:97:37 | call to String | test.go:97:13:97:38 | type conversion | provenance | | +| test.go:98:20:98:37 | call to Value | test.go:98:13:98:38 | type conversion | provenance | | +| test.go:99:20:99:40 | call to RawValue | test.go:99:13:99:50 | type conversion | provenance | | +| test.go:100:20:100:38 | call to String | test.go:100:13:100:39 | type conversion | provenance | | +| test.go:106:9:106:13 | &... | test.go:107:13:107:33 | type conversion | provenance | | +| test.go:110:9:110:12 | &... | test.go:111:13:111:29 | type conversion | provenance | | +| test.go:114:12:114:19 | &... | test.go:115:13:115:48 | type conversion | provenance | | +| test.go:118:16:118:24 | &... | test.go:119:13:119:43 | type conversion | provenance | | +| test.go:122:16:122:23 | &... | test.go:123:13:123:39 | type conversion | provenance | | +| test.go:126:15:126:24 | &... | test.go:127:13:127:47 | type conversion | provenance | | +| test.go:130:18:130:30 | &... | test.go:131:13:131:38 | type conversion | provenance | | +| test.go:137:12:137:19 | &... | test.go:138:13:138:48 | type conversion | provenance | | +| test.go:141:16:141:24 | &... | test.go:142:13:142:43 | type conversion | provenance | | +| test.go:145:16:145:23 | &... | test.go:146:13:146:39 | type conversion | provenance | | +| test.go:149:15:149:24 | &... | test.go:150:13:150:47 | type conversion | provenance | | +| test.go:153:18:153:30 | &... | test.go:154:13:154:38 | type conversion | provenance | | +| test.go:157:14:157:22 | &... | test.go:158:13:158:28 | type conversion | provenance | | +| test.go:161:15:161:24 | &... | test.go:162:13:162:32 | type conversion | provenance | | nodes | test.go:77:13:77:16 | &... | semmle.label | &... | | test.go:78:13:78:29 | type conversion | semmle.label | type conversion | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Chi/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Chi/ReflectedXss.expected index cc6d95f87178..d422436065c1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Chi/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Chi/ReflectedXss.expected @@ -1,10 +1,10 @@ edges -| test.go:13:12:13:16 | selection of URL | test.go:13:12:13:21 | selection of Path | -| test.go:13:12:13:21 | selection of Path | test.go:21:18:21:23 | hidden | -| test.go:21:18:21:23 | hidden | test.go:21:11:21:24 | type conversion | -| test.go:22:18:22:45 | call to URLParam | test.go:22:11:22:46 | type conversion | -| test.go:23:18:23:60 | call to URLParamFromCtx | test.go:23:11:23:61 | type conversion | -| test.go:24:18:24:71 | call to URLParam | test.go:24:11:24:72 | type conversion | +| test.go:13:12:13:16 | selection of URL | test.go:13:12:13:21 | selection of Path | provenance | | +| test.go:13:12:13:21 | selection of Path | test.go:21:18:21:23 | hidden | provenance | | +| test.go:21:18:21:23 | hidden | test.go:21:11:21:24 | type conversion | provenance | | +| test.go:22:18:22:45 | call to URLParam | test.go:22:11:22:46 | type conversion | provenance | | +| test.go:23:18:23:60 | call to URLParamFromCtx | test.go:23:11:23:61 | type conversion | provenance | | +| test.go:24:18:24:71 | call to URLParam | test.go:24:11:24:72 | type conversion | provenance | | nodes | test.go:13:12:13:16 | selection of URL | semmle.label | selection of URL | | test.go:13:12:13:21 | selection of Path | semmle.label | selection of Path | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Echo/OpenRedirect.expected b/go/ql/test/library-tests/semmle/go/frameworks/Echo/OpenRedirect.expected index 12bab8f680e5..77425f059c87 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Echo/OpenRedirect.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Echo/OpenRedirect.expected @@ -1,14 +1,14 @@ edges -| test.go:172:2:172:6 | definition of param | test.go:173:20:173:24 | param | -| test.go:172:11:172:32 | call to Param | test.go:172:2:172:6 | definition of param | -| test.go:178:2:178:6 | definition of param | test.go:182:24:182:28 | param | -| test.go:178:11:178:32 | call to Param | test.go:178:2:178:6 | definition of param | -| test.go:182:24:182:28 | param | test.go:182:20:182:28 | ...+... | -| test.go:190:2:190:4 | definition of url | test.go:193:21:193:23 | url | -| test.go:190:9:190:26 | star expression | test.go:190:2:190:4 | definition of url | -| test.go:190:9:190:26 | star expression | test.go:190:10:190:26 | selection of URL | -| test.go:190:10:190:26 | selection of URL | test.go:190:9:190:26 | star expression | -| test.go:193:21:193:23 | url | test.go:193:21:193:32 | call to String | +| test.go:172:2:172:6 | definition of param | test.go:173:20:173:24 | param | provenance | | +| test.go:172:11:172:32 | call to Param | test.go:172:2:172:6 | definition of param | provenance | | +| test.go:178:2:178:6 | definition of param | test.go:182:24:182:28 | param | provenance | | +| test.go:178:11:178:32 | call to Param | test.go:178:2:178:6 | definition of param | provenance | | +| test.go:182:24:182:28 | param | test.go:182:20:182:28 | ...+... | provenance | | +| test.go:190:2:190:4 | definition of url | test.go:193:21:193:23 | url | provenance | | +| test.go:190:9:190:26 | star expression | test.go:190:2:190:4 | definition of url | provenance | | +| test.go:190:9:190:26 | star expression | test.go:190:10:190:26 | selection of URL | provenance | | +| test.go:190:10:190:26 | selection of URL | test.go:190:9:190:26 | star expression | provenance | | +| test.go:193:21:193:23 | url | test.go:193:21:193:32 | call to String | provenance | | nodes | test.go:172:2:172:6 | definition of param | semmle.label | definition of param | | test.go:172:11:172:32 | call to Param | semmle.label | call to Param | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected index 05a6ac2869b0..f76e5fb42cdf 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected @@ -1,36 +1,36 @@ edges -| test.go:15:11:15:32 | call to Param | test.go:16:16:16:20 | param | -| test.go:21:11:21:27 | call to ParamValues | test.go:22:16:22:20 | param | -| test.go:27:11:27:37 | call to QueryParam | test.go:28:16:28:20 | param | -| test.go:33:11:33:27 | call to QueryParams | test.go:34:16:34:20 | param | -| test.go:39:10:39:26 | call to QueryString | test.go:40:16:40:19 | qstr | -| test.go:45:9:45:34 | call to FormValue | test.go:46:16:46:18 | val | -| test.go:51:2:51:30 | ... := ...[0] | test.go:52:16:52:37 | index expression | -| test.go:57:2:57:46 | ... := ...[0] | test.go:58:13:58:22 | fileHeader | -| test.go:58:2:58:29 | ... := ...[0] | test.go:60:2:60:5 | file | -| test.go:58:13:58:22 | fileHeader | test.go:58:2:58:29 | ... := ...[0] | -| test.go:59:2:59:7 | definition of buffer | test.go:61:20:61:25 | buffer | -| test.go:60:2:60:5 | file | test.go:59:2:59:7 | definition of buffer | -| test.go:66:2:66:31 | ... := ...[0] | test.go:67:16:67:41 | index expression | -| test.go:72:2:72:31 | ... := ...[0] | test.go:74:13:74:22 | fileHeader | -| test.go:74:2:74:29 | ... := ...[0] | test.go:76:2:76:5 | file | -| test.go:74:13:74:22 | fileHeader | test.go:74:2:74:29 | ... := ...[0] | -| test.go:75:2:75:7 | definition of buffer | test.go:77:20:77:25 | buffer | -| test.go:76:2:76:5 | file | test.go:75:2:75:7 | definition of buffer | -| test.go:82:2:82:32 | ... := ...[0] | test.go:83:16:83:24 | selection of Value | -| test.go:88:13:88:25 | call to Cookies | test.go:89:16:89:31 | selection of Value | -| test.go:99:11:99:15 | &... | test.go:100:16:100:21 | selection of s | -| test.go:112:17:112:19 | definition of ctx | test.go:114:16:114:18 | ctx | -| test.go:113:21:113:42 | call to Param | test.go:112:17:112:19 | definition of ctx | -| test.go:114:16:114:18 | ctx | test.go:114:16:114:33 | call to Get | -| test.go:114:16:114:33 | call to Get | test.go:114:16:114:42 | type assertion | -| test.go:124:11:124:32 | call to Param | test.go:125:16:125:20 | param | -| test.go:130:11:130:32 | call to Param | test.go:131:20:131:32 | type conversion | -| test.go:136:11:136:32 | call to Param | test.go:137:29:137:41 | type conversion | -| test.go:148:11:148:32 | call to Param | test.go:149:30:149:34 | param | -| test.go:149:12:149:35 | call to NewReader | test.go:150:31:150:36 | reader | -| test.go:149:30:149:34 | param | test.go:149:12:149:35 | call to NewReader | -| test.go:164:11:164:32 | call to Param | test.go:165:23:165:35 | type conversion | +| test.go:15:11:15:32 | call to Param | test.go:16:16:16:20 | param | provenance | | +| test.go:21:11:21:27 | call to ParamValues | test.go:22:16:22:20 | param | provenance | | +| test.go:27:11:27:37 | call to QueryParam | test.go:28:16:28:20 | param | provenance | | +| test.go:33:11:33:27 | call to QueryParams | test.go:34:16:34:20 | param | provenance | | +| test.go:39:10:39:26 | call to QueryString | test.go:40:16:40:19 | qstr | provenance | | +| test.go:45:9:45:34 | call to FormValue | test.go:46:16:46:18 | val | provenance | | +| test.go:51:2:51:30 | ... := ...[0] | test.go:52:16:52:37 | index expression | provenance | | +| test.go:57:2:57:46 | ... := ...[0] | test.go:58:13:58:22 | fileHeader | provenance | | +| test.go:58:2:58:29 | ... := ...[0] | test.go:60:2:60:5 | file | provenance | | +| test.go:58:13:58:22 | fileHeader | test.go:58:2:58:29 | ... := ...[0] | provenance | | +| test.go:59:2:59:7 | definition of buffer | test.go:61:20:61:25 | buffer | provenance | | +| test.go:60:2:60:5 | file | test.go:59:2:59:7 | definition of buffer | provenance | | +| test.go:66:2:66:31 | ... := ...[0] | test.go:67:16:67:41 | index expression | provenance | | +| test.go:72:2:72:31 | ... := ...[0] | test.go:74:13:74:22 | fileHeader | provenance | | +| test.go:74:2:74:29 | ... := ...[0] | test.go:76:2:76:5 | file | provenance | | +| test.go:74:13:74:22 | fileHeader | test.go:74:2:74:29 | ... := ...[0] | provenance | | +| test.go:75:2:75:7 | definition of buffer | test.go:77:20:77:25 | buffer | provenance | | +| test.go:76:2:76:5 | file | test.go:75:2:75:7 | definition of buffer | provenance | | +| test.go:82:2:82:32 | ... := ...[0] | test.go:83:16:83:24 | selection of Value | provenance | | +| test.go:88:13:88:25 | call to Cookies | test.go:89:16:89:31 | selection of Value | provenance | | +| test.go:99:11:99:15 | &... | test.go:100:16:100:21 | selection of s | provenance | | +| test.go:112:17:112:19 | definition of ctx | test.go:114:16:114:18 | ctx | provenance | | +| test.go:113:21:113:42 | call to Param | test.go:112:17:112:19 | definition of ctx | provenance | | +| test.go:114:16:114:18 | ctx | test.go:114:16:114:33 | call to Get | provenance | | +| test.go:114:16:114:33 | call to Get | test.go:114:16:114:42 | type assertion | provenance | | +| test.go:124:11:124:32 | call to Param | test.go:125:16:125:20 | param | provenance | | +| test.go:130:11:130:32 | call to Param | test.go:131:20:131:32 | type conversion | provenance | | +| test.go:136:11:136:32 | call to Param | test.go:137:29:137:41 | type conversion | provenance | | +| test.go:148:11:148:32 | call to Param | test.go:149:30:149:34 | param | provenance | | +| test.go:149:12:149:35 | call to NewReader | test.go:150:31:150:36 | reader | provenance | | +| test.go:149:30:149:34 | param | test.go:149:12:149:35 | call to NewReader | provenance | | +| test.go:164:11:164:32 | call to Param | test.go:165:23:165:35 | type conversion | provenance | | nodes | test.go:15:11:15:32 | call to Param | semmle.label | call to Param | | test.go:16:16:16:20 | param | semmle.label | param | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Echo/TaintedPath.expected b/go/ql/test/library-tests/semmle/go/frameworks/Echo/TaintedPath.expected index 5c43259a2b64..04bcfdedcb0c 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Echo/TaintedPath.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Echo/TaintedPath.expected @@ -1,6 +1,6 @@ edges -| test.go:221:15:221:38 | call to QueryParam | test.go:222:17:222:24 | filepath | -| test.go:225:15:225:38 | call to QueryParam | test.go:226:23:226:30 | filepath | +| test.go:221:15:221:38 | call to QueryParam | test.go:222:17:222:24 | filepath | provenance | | +| test.go:225:15:225:38 | call to QueryParam | test.go:226:23:226:30 | filepath | provenance | | nodes | test.go:221:15:221:38 | call to QueryParam | semmle.label | call to QueryParam | | test.go:222:17:222:24 | filepath | semmle.label | filepath | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Encoding/jsoniter.expected b/go/ql/test/library-tests/semmle/go/frameworks/Encoding/jsoniter.expected index 5161978daeb3..ffbde6355cbc 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Encoding/jsoniter.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Encoding/jsoniter.expected @@ -1,16 +1,16 @@ edges -| jsoniter.go:23:20:23:38 | call to getUntrustedBytes | jsoniter.go:27:17:27:30 | untrustedInput | -| jsoniter.go:23:20:23:38 | call to getUntrustedBytes | jsoniter.go:31:21:31:34 | untrustedInput | -| jsoniter.go:24:21:24:40 | call to getUntrustedString | jsoniter.go:35:27:35:41 | untrustedString | -| jsoniter.go:24:21:24:40 | call to getUntrustedString | jsoniter.go:39:31:39:45 | untrustedString | -| jsoniter.go:27:17:27:30 | untrustedInput | jsoniter.go:27:33:27:37 | &... | -| jsoniter.go:27:33:27:37 | &... | jsoniter.go:28:15:28:24 | selection of field | -| jsoniter.go:31:21:31:34 | untrustedInput | jsoniter.go:31:37:31:42 | &... | -| jsoniter.go:31:37:31:42 | &... | jsoniter.go:32:15:32:25 | selection of field | -| jsoniter.go:35:27:35:41 | untrustedString | jsoniter.go:35:44:35:49 | &... | -| jsoniter.go:35:44:35:49 | &... | jsoniter.go:36:15:36:25 | selection of field | -| jsoniter.go:39:31:39:45 | untrustedString | jsoniter.go:39:48:39:53 | &... | -| jsoniter.go:39:48:39:53 | &... | jsoniter.go:40:15:40:25 | selection of field | +| jsoniter.go:23:20:23:38 | call to getUntrustedBytes | jsoniter.go:27:17:27:30 | untrustedInput | provenance | | +| jsoniter.go:23:20:23:38 | call to getUntrustedBytes | jsoniter.go:31:21:31:34 | untrustedInput | provenance | | +| jsoniter.go:24:21:24:40 | call to getUntrustedString | jsoniter.go:35:27:35:41 | untrustedString | provenance | | +| jsoniter.go:24:21:24:40 | call to getUntrustedString | jsoniter.go:39:31:39:45 | untrustedString | provenance | | +| jsoniter.go:27:17:27:30 | untrustedInput | jsoniter.go:27:33:27:37 | &... | provenance | | +| jsoniter.go:27:33:27:37 | &... | jsoniter.go:28:15:28:24 | selection of field | provenance | | +| jsoniter.go:31:21:31:34 | untrustedInput | jsoniter.go:31:37:31:42 | &... | provenance | | +| jsoniter.go:31:37:31:42 | &... | jsoniter.go:32:15:32:25 | selection of field | provenance | | +| jsoniter.go:35:27:35:41 | untrustedString | jsoniter.go:35:44:35:49 | &... | provenance | | +| jsoniter.go:35:44:35:49 | &... | jsoniter.go:36:15:36:25 | selection of field | provenance | | +| jsoniter.go:39:31:39:45 | untrustedString | jsoniter.go:39:48:39:53 | &... | provenance | | +| jsoniter.go:39:48:39:53 | &... | jsoniter.go:40:15:40:25 | selection of field | provenance | | nodes | jsoniter.go:23:20:23:38 | call to getUntrustedBytes | semmle.label | call to getUntrustedBytes | | jsoniter.go:24:21:24:40 | call to getUntrustedString | semmle.label | call to getUntrustedString | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Gin/TaintedPath.expected b/go/ql/test/library-tests/semmle/go/frameworks/Gin/TaintedPath.expected index b53ceb0281e1..45d417ca8128 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Gin/TaintedPath.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Gin/TaintedPath.expected @@ -1,8 +1,8 @@ edges -| Gin.go:24:15:24:33 | call to Query | Gin.go:25:10:25:17 | filepath | -| Gin.go:24:15:24:33 | call to Query | Gin.go:26:39:26:46 | filepath | -| Gin.go:24:15:24:33 | call to Query | Gin.go:27:20:27:27 | filepath | -| Gin.go:24:15:24:33 | call to Query | Gin.go:29:32:29:39 | filepath | +| Gin.go:24:15:24:33 | call to Query | Gin.go:25:10:25:17 | filepath | provenance | | +| Gin.go:24:15:24:33 | call to Query | Gin.go:26:39:26:46 | filepath | provenance | | +| Gin.go:24:15:24:33 | call to Query | Gin.go:27:20:27:27 | filepath | provenance | | +| Gin.go:24:15:24:33 | call to Query | Gin.go:29:32:29:39 | filepath | provenance | | nodes | Gin.go:24:15:24:33 | call to Query | semmle.label | call to Query | | Gin.go:25:10:25:17 | filepath | semmle.label | filepath | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/LogInjection.expected b/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/LogInjection.expected index d23496fe4c5e..7e8cdc288f17 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/LogInjection.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/GoMicro/LogInjection.expected @@ -1,16 +1,16 @@ edges -| main.go:18:46:18:48 | definition of req | main.go:18:46:18:48 | definition of req | -| main.go:18:46:18:48 | definition of req | main.go:18:46:18:48 | definition of req | -| main.go:18:46:18:48 | definition of req | main.go:21:28:21:31 | name | -| main.go:18:46:18:48 | definition of req | main.go:21:28:21:31 | name | -| main.go:18:46:18:48 | definition of req | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | -| proto/Hello.pb.micro.go:85:53:85:54 | definition of in | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | -| proto/Hello.pb.micro.go:85:53:85:54 | definition of in | proto/Hello.pb.micro.go:86:37:86:38 | in | -| proto/Hello.pb.micro.go:85:53:85:54 | definition of in | proto/Hello.pb.micro.go:86:37:86:38 | in | -| proto/Hello.pb.micro.go:86:37:86:38 | in | main.go:18:46:18:48 | definition of req | -| proto/Hello.pb.micro.go:86:37:86:38 | in | main.go:18:46:18:48 | definition of req | -| proto/Hello.pb.micro.go:86:37:86:38 | in | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | -| proto/Hello.pb.micro.go:86:37:86:38 | in | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | +| main.go:18:46:18:48 | definition of req | main.go:18:46:18:48 | definition of req | provenance | | +| main.go:18:46:18:48 | definition of req | main.go:18:46:18:48 | definition of req | provenance | | +| main.go:18:46:18:48 | definition of req | main.go:21:28:21:31 | name | provenance | | +| main.go:18:46:18:48 | definition of req | main.go:21:28:21:31 | name | provenance | | +| main.go:18:46:18:48 | definition of req | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | provenance | | +| proto/Hello.pb.micro.go:85:53:85:54 | definition of in | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | provenance | | +| proto/Hello.pb.micro.go:85:53:85:54 | definition of in | proto/Hello.pb.micro.go:86:37:86:38 | in | provenance | | +| proto/Hello.pb.micro.go:85:53:85:54 | definition of in | proto/Hello.pb.micro.go:86:37:86:38 | in | provenance | | +| proto/Hello.pb.micro.go:86:37:86:38 | in | main.go:18:46:18:48 | definition of req | provenance | | +| proto/Hello.pb.micro.go:86:37:86:38 | in | main.go:18:46:18:48 | definition of req | provenance | | +| proto/Hello.pb.micro.go:86:37:86:38 | in | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | provenance | | +| proto/Hello.pb.micro.go:86:37:86:38 | in | proto/Hello.pb.micro.go:85:53:85:54 | definition of in | provenance | | nodes | main.go:18:46:18:48 | definition of req | semmle.label | definition of req | | main.go:18:46:18:48 | definition of req | semmle.label | definition of req | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected b/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected index b299a773b061..e64858732ed4 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Gorestful/gorestful.expected @@ -1,12 +1,12 @@ edges -| gorestful.go:15:15:15:44 | call to QueryParameters | gorestful.go:15:15:15:47 | index expression | -| gorestful.go:17:12:17:39 | call to BodyParameter | gorestful.go:18:15:18:17 | val | -| gorestful.go:21:15:21:38 | call to PathParameters | gorestful.go:21:15:21:45 | index expression | -| gorestful.go:23:21:23:24 | &... | gorestful.go:24:15:24:21 | selection of cmd | -| gorestful_v2.go:15:15:15:44 | call to QueryParameters | gorestful_v2.go:15:15:15:47 | index expression | -| gorestful_v2.go:17:12:17:39 | call to BodyParameter | gorestful_v2.go:18:15:18:17 | val | -| gorestful_v2.go:21:15:21:38 | call to PathParameters | gorestful_v2.go:21:15:21:45 | index expression | -| gorestful_v2.go:23:21:23:24 | &... | gorestful_v2.go:24:15:24:21 | selection of cmd | +| gorestful.go:15:15:15:44 | call to QueryParameters | gorestful.go:15:15:15:47 | index expression | provenance | | +| gorestful.go:17:12:17:39 | call to BodyParameter | gorestful.go:18:15:18:17 | val | provenance | | +| gorestful.go:21:15:21:38 | call to PathParameters | gorestful.go:21:15:21:45 | index expression | provenance | | +| gorestful.go:23:21:23:24 | &... | gorestful.go:24:15:24:21 | selection of cmd | provenance | | +| gorestful_v2.go:15:15:15:44 | call to QueryParameters | gorestful_v2.go:15:15:15:47 | index expression | provenance | | +| gorestful_v2.go:17:12:17:39 | call to BodyParameter | gorestful_v2.go:18:15:18:17 | val | provenance | | +| gorestful_v2.go:21:15:21:38 | call to PathParameters | gorestful_v2.go:21:15:21:45 | index expression | provenance | | +| gorestful_v2.go:23:21:23:24 | &... | gorestful_v2.go:24:15:24:21 | selection of cmd | provenance | | nodes | gorestful.go:15:15:15:44 | call to QueryParameters | semmle.label | call to QueryParameters | | gorestful.go:15:15:15:47 | index expression | semmle.label | index expression | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected b/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected index d3215df275d8..e0eb8c6cc08f 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/OpenRedirect.expected @@ -1,9 +1,9 @@ edges -| EndToEnd.go:94:20:94:27 | implicit dereference | EndToEnd.go:94:20:94:27 | selection of Params | -| EndToEnd.go:94:20:94:27 | implicit dereference | EndToEnd.go:94:20:94:32 | selection of Form | -| EndToEnd.go:94:20:94:27 | selection of Params | EndToEnd.go:94:20:94:27 | implicit dereference | -| EndToEnd.go:94:20:94:27 | selection of Params | EndToEnd.go:94:20:94:32 | selection of Form | -| EndToEnd.go:94:20:94:32 | selection of Form | EndToEnd.go:94:20:94:49 | call to Get | +| EndToEnd.go:94:20:94:27 | implicit dereference | EndToEnd.go:94:20:94:27 | selection of Params | provenance | | +| EndToEnd.go:94:20:94:27 | implicit dereference | EndToEnd.go:94:20:94:32 | selection of Form | provenance | | +| EndToEnd.go:94:20:94:27 | selection of Params | EndToEnd.go:94:20:94:27 | implicit dereference | provenance | | +| EndToEnd.go:94:20:94:27 | selection of Params | EndToEnd.go:94:20:94:32 | selection of Form | provenance | | +| EndToEnd.go:94:20:94:32 | selection of Form | EndToEnd.go:94:20:94:49 | call to Get | provenance | | nodes | EndToEnd.go:94:20:94:27 | implicit dereference | semmle.label | implicit dereference | | EndToEnd.go:94:20:94:27 | selection of Params | semmle.label | selection of Params | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Revel/ReflectedXss.expected index 5352f0569bd9..b9725fae820d 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/ReflectedXss.expected @@ -1,13 +1,13 @@ edges -| EndToEnd.go:35:2:35:4 | definition of buf | EndToEnd.go:37:24:37:26 | buf | -| EndToEnd.go:36:18:36:25 | selection of Params | EndToEnd.go:36:18:36:30 | selection of Form | -| EndToEnd.go:36:18:36:30 | selection of Form | EndToEnd.go:36:18:36:47 | call to Get | -| EndToEnd.go:36:18:36:47 | call to Get | EndToEnd.go:35:2:35:4 | definition of buf | -| EndToEnd.go:69:22:69:29 | selection of Params | EndToEnd.go:69:22:69:34 | selection of Form | -| EndToEnd.go:69:22:69:34 | selection of Form | EndToEnd.go:69:22:69:51 | call to Get | -| Revel.go:70:22:70:29 | selection of Params | Revel.go:70:22:70:35 | selection of Query | -| examples/booking/app/init.go:36:44:36:48 | selection of URL | examples/booking/app/init.go:36:44:36:53 | selection of Path | -| examples/booking/app/init.go:40:49:40:53 | selection of URL | examples/booking/app/init.go:40:49:40:58 | selection of Path | +| EndToEnd.go:35:2:35:4 | definition of buf | EndToEnd.go:37:24:37:26 | buf | provenance | | +| EndToEnd.go:36:18:36:25 | selection of Params | EndToEnd.go:36:18:36:30 | selection of Form | provenance | | +| EndToEnd.go:36:18:36:30 | selection of Form | EndToEnd.go:36:18:36:47 | call to Get | provenance | | +| EndToEnd.go:36:18:36:47 | call to Get | EndToEnd.go:35:2:35:4 | definition of buf | provenance | | +| EndToEnd.go:69:22:69:29 | selection of Params | EndToEnd.go:69:22:69:34 | selection of Form | provenance | | +| EndToEnd.go:69:22:69:34 | selection of Form | EndToEnd.go:69:22:69:51 | call to Get | provenance | | +| Revel.go:70:22:70:29 | selection of Params | Revel.go:70:22:70:35 | selection of Query | provenance | | +| examples/booking/app/init.go:36:44:36:48 | selection of URL | examples/booking/app/init.go:36:44:36:53 | selection of Path | provenance | | +| examples/booking/app/init.go:40:49:40:53 | selection of URL | examples/booking/app/init.go:40:49:40:58 | selection of Path | provenance | | nodes | EndToEnd.go:35:2:35:4 | definition of buf | semmle.label | definition of buf | | EndToEnd.go:36:18:36:25 | selection of Params | semmle.label | selection of Params | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/TaintedPath.expected b/go/ql/test/library-tests/semmle/go/frameworks/Revel/TaintedPath.expected index c9b3a4bbe584..ad3ca2e44dcb 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/TaintedPath.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/TaintedPath.expected @@ -1,8 +1,8 @@ edges -| EndToEnd.go:58:18:58:25 | selection of Params | EndToEnd.go:58:18:58:30 | selection of Form | -| EndToEnd.go:58:18:58:30 | selection of Form | EndToEnd.go:58:18:58:47 | call to Get | -| EndToEnd.go:64:26:64:33 | selection of Params | EndToEnd.go:64:26:64:38 | selection of Form | -| EndToEnd.go:64:26:64:38 | selection of Form | EndToEnd.go:64:26:64:55 | call to Get | +| EndToEnd.go:58:18:58:25 | selection of Params | EndToEnd.go:58:18:58:30 | selection of Form | provenance | | +| EndToEnd.go:58:18:58:30 | selection of Form | EndToEnd.go:58:18:58:47 | call to Get | provenance | | +| EndToEnd.go:64:26:64:33 | selection of Params | EndToEnd.go:64:26:64:38 | selection of Form | provenance | | +| EndToEnd.go:64:26:64:38 | selection of Form | EndToEnd.go:64:26:64:55 | call to Get | provenance | | nodes | EndToEnd.go:58:18:58:25 | selection of Params | semmle.label | selection of Params | | EndToEnd.go:58:18:58:30 | selection of Form | semmle.label | selection of Form | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected index 14e97ebe357b..90e6b42ec51d 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Twirp/RequestForgery.expected @@ -1,27 +1,27 @@ edges -| client/main.go:16:35:16:78 | &... | client/main.go:16:35:16:78 | &... | -| client/main.go:16:35:16:78 | &... | server/main.go:19:56:19:61 | definition of params | -| rpc/notes/service.twirp.go:473:6:473:13 | definition of typedReq | rpc/notes/service.twirp.go:477:44:477:51 | typedReq | -| rpc/notes/service.twirp.go:477:44:477:51 | typedReq | server/main.go:19:56:19:61 | definition of params | -| rpc/notes/service.twirp.go:493:2:493:2 | capture variable reqContent | rpc/notes/service.twirp.go:495:35:495:44 | reqContent | -| rpc/notes/service.twirp.go:495:35:495:44 | reqContent | server/main.go:19:56:19:61 | definition of params | -| rpc/notes/service.twirp.go:538:2:538:33 | ... := ...[0] | rpc/notes/service.twirp.go:544:27:544:29 | buf | -| rpc/notes/service.twirp.go:538:25:538:32 | selection of Body | rpc/notes/service.twirp.go:538:2:538:33 | ... := ...[0] | -| rpc/notes/service.twirp.go:543:2:543:11 | definition of reqContent | rpc/notes/service.twirp.go:574:2:574:2 | capture variable reqContent | -| rpc/notes/service.twirp.go:544:27:544:29 | buf | rpc/notes/service.twirp.go:543:2:543:11 | definition of reqContent | -| rpc/notes/service.twirp.go:554:6:554:13 | definition of typedReq | rpc/notes/service.twirp.go:558:44:558:51 | typedReq | -| rpc/notes/service.twirp.go:558:44:558:51 | typedReq | server/main.go:19:56:19:61 | definition of params | -| rpc/notes/service.twirp.go:574:2:574:2 | capture variable reqContent | rpc/notes/service.twirp.go:576:35:576:44 | reqContent | -| rpc/notes/service.twirp.go:576:35:576:44 | reqContent | server/main.go:19:56:19:61 | definition of params | -| server/main.go:19:56:19:61 | definition of params | client/main.go:16:35:16:78 | &... | -| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:473:6:473:13 | definition of typedReq | -| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:493:2:493:2 | capture variable reqContent | -| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:554:6:554:13 | definition of typedReq | -| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:574:2:574:2 | capture variable reqContent | -| server/main.go:19:56:19:61 | definition of params | server/main.go:19:56:19:61 | definition of params | -| server/main.go:19:56:19:61 | definition of params | server/main.go:19:56:19:61 | definition of params | -| server/main.go:19:56:19:61 | definition of params | server/main.go:30:38:30:48 | selection of Text | -| server/main.go:19:56:19:61 | definition of params | server/main.go:30:38:30:48 | selection of Text | +| client/main.go:16:35:16:78 | &... | client/main.go:16:35:16:78 | &... | provenance | | +| client/main.go:16:35:16:78 | &... | server/main.go:19:56:19:61 | definition of params | provenance | | +| rpc/notes/service.twirp.go:473:6:473:13 | definition of typedReq | rpc/notes/service.twirp.go:477:44:477:51 | typedReq | provenance | | +| rpc/notes/service.twirp.go:477:44:477:51 | typedReq | server/main.go:19:56:19:61 | definition of params | provenance | | +| rpc/notes/service.twirp.go:493:2:493:2 | capture variable reqContent | rpc/notes/service.twirp.go:495:35:495:44 | reqContent | provenance | | +| rpc/notes/service.twirp.go:495:35:495:44 | reqContent | server/main.go:19:56:19:61 | definition of params | provenance | | +| rpc/notes/service.twirp.go:538:2:538:33 | ... := ...[0] | rpc/notes/service.twirp.go:544:27:544:29 | buf | provenance | | +| rpc/notes/service.twirp.go:538:25:538:32 | selection of Body | rpc/notes/service.twirp.go:538:2:538:33 | ... := ...[0] | provenance | | +| rpc/notes/service.twirp.go:543:2:543:11 | definition of reqContent | rpc/notes/service.twirp.go:574:2:574:2 | capture variable reqContent | provenance | | +| rpc/notes/service.twirp.go:544:27:544:29 | buf | rpc/notes/service.twirp.go:543:2:543:11 | definition of reqContent | provenance | | +| rpc/notes/service.twirp.go:554:6:554:13 | definition of typedReq | rpc/notes/service.twirp.go:558:44:558:51 | typedReq | provenance | | +| rpc/notes/service.twirp.go:558:44:558:51 | typedReq | server/main.go:19:56:19:61 | definition of params | provenance | | +| rpc/notes/service.twirp.go:574:2:574:2 | capture variable reqContent | rpc/notes/service.twirp.go:576:35:576:44 | reqContent | provenance | | +| rpc/notes/service.twirp.go:576:35:576:44 | reqContent | server/main.go:19:56:19:61 | definition of params | provenance | | +| server/main.go:19:56:19:61 | definition of params | client/main.go:16:35:16:78 | &... | provenance | | +| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:473:6:473:13 | definition of typedReq | provenance | | +| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:493:2:493:2 | capture variable reqContent | provenance | | +| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:554:6:554:13 | definition of typedReq | provenance | | +| server/main.go:19:56:19:61 | definition of params | rpc/notes/service.twirp.go:574:2:574:2 | capture variable reqContent | provenance | | +| server/main.go:19:56:19:61 | definition of params | server/main.go:19:56:19:61 | definition of params | provenance | | +| server/main.go:19:56:19:61 | definition of params | server/main.go:19:56:19:61 | definition of params | provenance | | +| server/main.go:19:56:19:61 | definition of params | server/main.go:30:38:30:48 | selection of Text | provenance | | +| server/main.go:19:56:19:61 | definition of params | server/main.go:30:38:30:48 | selection of Text | provenance | | nodes | client/main.go:16:35:16:78 | &... | semmle.label | &... | | rpc/notes/service.twirp.go:473:6:473:13 | definition of typedReq | semmle.label | definition of typedReq | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected index 1124ca22b055..341e2cf46abf 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/ReflectedXss.expected @@ -1,60 +1,60 @@ edges -| test.go:12:12:12:22 | selection of URL | test.go:12:12:12:30 | call to Query | -| test.go:12:12:12:30 | call to Query | test.go:12:12:12:44 | call to Get | -| test.go:12:12:12:44 | call to Get | test.go:15:42:15:47 | param1 | -| test.go:15:22:15:48 | call to UnescapeString | test.go:15:15:15:49 | type conversion | -| test.go:15:42:15:47 | param1 | test.go:15:22:15:48 | call to UnescapeString | -| test.go:17:2:17:36 | ... := ...[0] | test.go:18:15:18:31 | type conversion | -| test.go:17:2:17:36 | ... := ...[0] | test.go:29:22:29:25 | node | -| test.go:17:24:17:35 | selection of Body | test.go:17:2:17:36 | ... := ...[0] | -| test.go:20:2:20:48 | ... := ...[0] | test.go:21:15:21:32 | type conversion | -| test.go:20:36:20:47 | selection of Body | test.go:20:2:20:48 | ... := ...[0] | -| test.go:23:2:23:50 | ... := ...[0] | test.go:24:15:24:35 | type conversion | -| test.go:23:33:23:44 | selection of Body | test.go:23:2:23:50 | ... := ...[0] | -| test.go:26:2:26:62 | ... := ...[0] | test.go:27:15:27:36 | type conversion | -| test.go:26:45:26:56 | selection of Body | test.go:26:2:26:62 | ... := ...[0] | -| test.go:31:15:31:45 | call to NewTokenizer | test.go:32:15:32:23 | tokenizer | -| test.go:31:15:31:45 | call to NewTokenizer | test.go:33:15:33:23 | tokenizer | -| test.go:31:15:31:45 | call to NewTokenizer | test.go:34:17:34:25 | tokenizer | -| test.go:31:15:31:45 | call to NewTokenizer | test.go:36:15:36:23 | tokenizer | -| test.go:31:15:31:45 | call to NewTokenizer | test.go:37:22:37:30 | tokenizer | -| test.go:31:33:31:44 | selection of Body | test.go:31:15:31:45 | call to NewTokenizer | -| test.go:32:15:32:23 | tokenizer | test.go:32:15:32:34 | call to Buffered | -| test.go:33:15:33:23 | tokenizer | test.go:33:15:33:29 | call to Raw | -| test.go:34:2:34:35 | ... := ...[1] | test.go:35:15:35:19 | value | -| test.go:34:17:34:25 | tokenizer | test.go:34:2:34:35 | ... := ...[1] | -| test.go:36:15:36:23 | tokenizer | test.go:36:15:36:30 | call to Text | -| test.go:37:22:37:30 | tokenizer | test.go:37:22:37:38 | call to Token | -| test.go:37:22:37:38 | call to Token | test.go:37:15:37:44 | type conversion | -| test.go:39:23:39:77 | call to NewTokenizerFragment | test.go:40:15:40:31 | tokenizerFragment | -| test.go:39:49:39:60 | selection of Body | test.go:39:23:39:77 | call to NewTokenizerFragment | -| test.go:40:15:40:31 | tokenizerFragment | test.go:40:15:40:42 | call to Buffered | -| test.go:42:6:42:14 | definition of cleanNode | test.go:45:22:45:31 | &... | -| test.go:42:6:42:14 | definition of cleanNode | test.go:45:22:45:31 | &... | -| test.go:42:6:42:14 | definition of cleanNode | test.go:45:23:45:31 | cleanNode | -| test.go:43:2:43:43 | ... := ...[0] | test.go:44:24:44:34 | taintedNode | -| test.go:43:31:43:42 | selection of Body | test.go:43:2:43:43 | ... := ...[0] | -| test.go:44:24:44:34 | taintedNode | test.go:42:6:42:14 | definition of cleanNode | -| test.go:45:22:45:31 | &... | test.go:45:22:45:31 | &... | -| test.go:45:22:45:31 | &... | test.go:45:22:45:31 | &... | -| test.go:45:22:45:31 | &... | test.go:45:23:45:31 | cleanNode | -| test.go:45:22:45:31 | &... [pointer] | test.go:45:22:45:31 | &... | -| test.go:45:22:45:31 | &... [pointer] | test.go:45:22:45:31 | &... | -| test.go:45:22:45:31 | &... [pointer] | test.go:45:23:45:31 | cleanNode | -| test.go:45:23:45:31 | cleanNode | test.go:45:22:45:31 | &... [pointer] | -| test.go:47:6:47:15 | definition of cleanNode2 | test.go:50:22:50:32 | &... | -| test.go:47:6:47:15 | definition of cleanNode2 | test.go:50:22:50:32 | &... | -| test.go:47:6:47:15 | definition of cleanNode2 | test.go:50:23:50:32 | cleanNode2 | -| test.go:48:2:48:44 | ... := ...[0] | test.go:49:26:49:37 | taintedNode2 | -| test.go:48:32:48:43 | selection of Body | test.go:48:2:48:44 | ... := ...[0] | -| test.go:49:26:49:37 | taintedNode2 | test.go:47:6:47:15 | definition of cleanNode2 | -| test.go:50:22:50:32 | &... | test.go:50:22:50:32 | &... | -| test.go:50:22:50:32 | &... | test.go:50:22:50:32 | &... | -| test.go:50:22:50:32 | &... | test.go:50:23:50:32 | cleanNode2 | -| test.go:50:22:50:32 | &... [pointer] | test.go:50:22:50:32 | &... | -| test.go:50:22:50:32 | &... [pointer] | test.go:50:22:50:32 | &... | -| test.go:50:22:50:32 | &... [pointer] | test.go:50:23:50:32 | cleanNode2 | -| test.go:50:23:50:32 | cleanNode2 | test.go:50:22:50:32 | &... [pointer] | +| test.go:12:12:12:22 | selection of URL | test.go:12:12:12:30 | call to Query | provenance | | +| test.go:12:12:12:30 | call to Query | test.go:12:12:12:44 | call to Get | provenance | | +| test.go:12:12:12:44 | call to Get | test.go:15:42:15:47 | param1 | provenance | | +| test.go:15:22:15:48 | call to UnescapeString | test.go:15:15:15:49 | type conversion | provenance | | +| test.go:15:42:15:47 | param1 | test.go:15:22:15:48 | call to UnescapeString | provenance | | +| test.go:17:2:17:36 | ... := ...[0] | test.go:18:15:18:31 | type conversion | provenance | | +| test.go:17:2:17:36 | ... := ...[0] | test.go:29:22:29:25 | node | provenance | | +| test.go:17:24:17:35 | selection of Body | test.go:17:2:17:36 | ... := ...[0] | provenance | | +| test.go:20:2:20:48 | ... := ...[0] | test.go:21:15:21:32 | type conversion | provenance | | +| test.go:20:36:20:47 | selection of Body | test.go:20:2:20:48 | ... := ...[0] | provenance | | +| test.go:23:2:23:50 | ... := ...[0] | test.go:24:15:24:35 | type conversion | provenance | | +| test.go:23:33:23:44 | selection of Body | test.go:23:2:23:50 | ... := ...[0] | provenance | | +| test.go:26:2:26:62 | ... := ...[0] | test.go:27:15:27:36 | type conversion | provenance | | +| test.go:26:45:26:56 | selection of Body | test.go:26:2:26:62 | ... := ...[0] | provenance | | +| test.go:31:15:31:45 | call to NewTokenizer | test.go:32:15:32:23 | tokenizer | provenance | | +| test.go:31:15:31:45 | call to NewTokenizer | test.go:33:15:33:23 | tokenizer | provenance | | +| test.go:31:15:31:45 | call to NewTokenizer | test.go:34:17:34:25 | tokenizer | provenance | | +| test.go:31:15:31:45 | call to NewTokenizer | test.go:36:15:36:23 | tokenizer | provenance | | +| test.go:31:15:31:45 | call to NewTokenizer | test.go:37:22:37:30 | tokenizer | provenance | | +| test.go:31:33:31:44 | selection of Body | test.go:31:15:31:45 | call to NewTokenizer | provenance | | +| test.go:32:15:32:23 | tokenizer | test.go:32:15:32:34 | call to Buffered | provenance | | +| test.go:33:15:33:23 | tokenizer | test.go:33:15:33:29 | call to Raw | provenance | | +| test.go:34:2:34:35 | ... := ...[1] | test.go:35:15:35:19 | value | provenance | | +| test.go:34:17:34:25 | tokenizer | test.go:34:2:34:35 | ... := ...[1] | provenance | | +| test.go:36:15:36:23 | tokenizer | test.go:36:15:36:30 | call to Text | provenance | | +| test.go:37:22:37:30 | tokenizer | test.go:37:22:37:38 | call to Token | provenance | | +| test.go:37:22:37:38 | call to Token | test.go:37:15:37:44 | type conversion | provenance | | +| test.go:39:23:39:77 | call to NewTokenizerFragment | test.go:40:15:40:31 | tokenizerFragment | provenance | | +| test.go:39:49:39:60 | selection of Body | test.go:39:23:39:77 | call to NewTokenizerFragment | provenance | | +| test.go:40:15:40:31 | tokenizerFragment | test.go:40:15:40:42 | call to Buffered | provenance | | +| test.go:42:6:42:14 | definition of cleanNode | test.go:45:22:45:31 | &... | provenance | | +| test.go:42:6:42:14 | definition of cleanNode | test.go:45:22:45:31 | &... | provenance | | +| test.go:42:6:42:14 | definition of cleanNode | test.go:45:23:45:31 | cleanNode | provenance | | +| test.go:43:2:43:43 | ... := ...[0] | test.go:44:24:44:34 | taintedNode | provenance | | +| test.go:43:31:43:42 | selection of Body | test.go:43:2:43:43 | ... := ...[0] | provenance | | +| test.go:44:24:44:34 | taintedNode | test.go:42:6:42:14 | definition of cleanNode | provenance | | +| test.go:45:22:45:31 | &... | test.go:45:22:45:31 | &... | provenance | | +| test.go:45:22:45:31 | &... | test.go:45:22:45:31 | &... | provenance | | +| test.go:45:22:45:31 | &... | test.go:45:23:45:31 | cleanNode | provenance | | +| test.go:45:22:45:31 | &... [pointer] | test.go:45:22:45:31 | &... | provenance | | +| test.go:45:22:45:31 | &... [pointer] | test.go:45:22:45:31 | &... | provenance | | +| test.go:45:22:45:31 | &... [pointer] | test.go:45:23:45:31 | cleanNode | provenance | | +| test.go:45:23:45:31 | cleanNode | test.go:45:22:45:31 | &... [pointer] | provenance | | +| test.go:47:6:47:15 | definition of cleanNode2 | test.go:50:22:50:32 | &... | provenance | | +| test.go:47:6:47:15 | definition of cleanNode2 | test.go:50:22:50:32 | &... | provenance | | +| test.go:47:6:47:15 | definition of cleanNode2 | test.go:50:23:50:32 | cleanNode2 | provenance | | +| test.go:48:2:48:44 | ... := ...[0] | test.go:49:26:49:37 | taintedNode2 | provenance | | +| test.go:48:32:48:43 | selection of Body | test.go:48:2:48:44 | ... := ...[0] | provenance | | +| test.go:49:26:49:37 | taintedNode2 | test.go:47:6:47:15 | definition of cleanNode2 | provenance | | +| test.go:50:22:50:32 | &... | test.go:50:22:50:32 | &... | provenance | | +| test.go:50:22:50:32 | &... | test.go:50:22:50:32 | &... | provenance | | +| test.go:50:22:50:32 | &... | test.go:50:23:50:32 | cleanNode2 | provenance | | +| test.go:50:22:50:32 | &... [pointer] | test.go:50:22:50:32 | &... | provenance | | +| test.go:50:22:50:32 | &... [pointer] | test.go:50:22:50:32 | &... | provenance | | +| test.go:50:22:50:32 | &... [pointer] | test.go:50:23:50:32 | cleanNode2 | provenance | | +| test.go:50:23:50:32 | cleanNode2 | test.go:50:22:50:32 | &... [pointer] | provenance | | nodes | test.go:12:12:12:22 | selection of URL | semmle.label | selection of URL | | test.go:12:12:12:30 | call to Query | semmle.label | call to Query | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected index a36880faf24e..9171f32e84db 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/XNetHtml/SqlInjection.expected @@ -1,6 +1,6 @@ edges -| test.go:56:2:56:42 | ... := ...[0] | test.go:57:29:57:40 | selection of Value | -| test.go:57:29:57:40 | selection of Value | test.go:57:11:57:41 | call to EscapeString | +| test.go:56:2:56:42 | ... := ...[0] | test.go:57:29:57:40 | selection of Value | provenance | | +| test.go:57:29:57:40 | selection of Value | test.go:57:11:57:41 | call to EscapeString | provenance | | nodes | test.go:56:2:56:42 | ... := ...[0] | semmle.label | ... := ...[0] | | test.go:57:11:57:41 | call to EscapeString | semmle.label | call to EscapeString | diff --git a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected index 3a0c58c7ee94..e5ad074d25d3 100644 --- a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected +++ b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected @@ -1,19 +1,19 @@ edges -| tests.go:8:24:8:24 | definition of f | tests.go:9:8:9:8 | f | -| tests.go:12:32:12:32 | definition of f | tests.go:13:13:13:13 | capture variable f | -| tests.go:13:13:13:13 | capture variable f | tests.go:14:3:14:3 | f | -| tests.go:31:5:31:78 | ... := ...[0] | tests.go:32:21:32:21 | f | -| tests.go:31:5:31:78 | ... := ...[0] | tests.go:33:29:33:29 | f | -| tests.go:32:21:32:21 | f | tests.go:8:24:8:24 | definition of f | -| tests.go:33:29:33:29 | f | tests.go:12:32:12:32 | definition of f | -| tests.go:45:5:45:76 | ... := ...[0] | tests.go:46:21:46:21 | f | -| tests.go:45:5:45:76 | ... := ...[0] | tests.go:47:29:47:29 | f | -| tests.go:46:21:46:21 | f | tests.go:8:24:8:24 | definition of f | -| tests.go:47:29:47:29 | f | tests.go:12:32:12:32 | definition of f | -| tests.go:54:5:54:78 | ... := ...[0] | tests.go:56:3:56:3 | f | -| tests.go:66:5:66:76 | ... := ...[0] | tests.go:68:3:68:3 | f | -| tests.go:108:5:108:78 | ... := ...[0] | tests.go:110:9:110:9 | f | -| tests.go:125:5:125:78 | ... := ...[0] | tests.go:129:3:129:3 | f | +| tests.go:8:24:8:24 | definition of f | tests.go:9:8:9:8 | f | provenance | | +| tests.go:12:32:12:32 | definition of f | tests.go:13:13:13:13 | capture variable f | provenance | | +| tests.go:13:13:13:13 | capture variable f | tests.go:14:3:14:3 | f | provenance | | +| tests.go:31:5:31:78 | ... := ...[0] | tests.go:32:21:32:21 | f | provenance | | +| tests.go:31:5:31:78 | ... := ...[0] | tests.go:33:29:33:29 | f | provenance | | +| tests.go:32:21:32:21 | f | tests.go:8:24:8:24 | definition of f | provenance | | +| tests.go:33:29:33:29 | f | tests.go:12:32:12:32 | definition of f | provenance | | +| tests.go:45:5:45:76 | ... := ...[0] | tests.go:46:21:46:21 | f | provenance | | +| tests.go:45:5:45:76 | ... := ...[0] | tests.go:47:29:47:29 | f | provenance | | +| tests.go:46:21:46:21 | f | tests.go:8:24:8:24 | definition of f | provenance | | +| tests.go:47:29:47:29 | f | tests.go:12:32:12:32 | definition of f | provenance | | +| tests.go:54:5:54:78 | ... := ...[0] | tests.go:56:3:56:3 | f | provenance | | +| tests.go:66:5:66:76 | ... := ...[0] | tests.go:68:3:68:3 | f | provenance | | +| tests.go:108:5:108:78 | ... := ...[0] | tests.go:110:9:110:9 | f | provenance | | +| tests.go:125:5:125:78 | ... := ...[0] | tests.go:129:3:129:3 | f | provenance | | nodes | tests.go:8:24:8:24 | definition of f | semmle.label | definition of f | | tests.go:9:8:9:8 | f | semmle.label | f | diff --git a/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexp.expected b/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexp.expected index 029366069d24..4486b4e0962f 100644 --- a/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexp.expected +++ b/go/ql/test/query-tests/Security/CWE-020/IncompleteHostnameRegexp/IncompleteHostnameRegexp.expected @@ -1,5 +1,5 @@ edges -| IncompleteHostnameRegexp.go:11:8:11:36 | "^((www\|beta).)?example.com/" | IncompleteHostnameRegexp.go:12:38:12:39 | re | +| IncompleteHostnameRegexp.go:11:8:11:36 | "^((www\|beta).)?example.com/" | IncompleteHostnameRegexp.go:12:38:12:39 | re | provenance | | nodes | IncompleteHostnameRegexp.go:11:8:11:36 | "^((www\|beta).)?example.com/" | semmle.label | "^((www\|beta).)?example.com/" | | IncompleteHostnameRegexp.go:12:38:12:39 | re | semmle.label | re | diff --git a/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected b/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected index 307906f7e9b7..34d4180a8498 100644 --- a/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected +++ b/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected @@ -1,9 +1,9 @@ edges -| TaintedPath.go:13:18:13:22 | selection of URL | TaintedPath.go:13:18:13:30 | call to Query | -| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:16:29:16:40 | tainted_path | -| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:20:57:20:68 | tainted_path | -| TaintedPath.go:20:57:20:68 | tainted_path | TaintedPath.go:20:28:20:69 | call to Join | -| tst.go:14:2:14:39 | ... := ...[1] | tst.go:17:41:17:56 | selection of Filename | +| TaintedPath.go:13:18:13:22 | selection of URL | TaintedPath.go:13:18:13:30 | call to Query | provenance | | +| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:16:29:16:40 | tainted_path | provenance | | +| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:20:57:20:68 | tainted_path | provenance | | +| TaintedPath.go:20:57:20:68 | tainted_path | TaintedPath.go:20:28:20:69 | call to Join | provenance | | +| tst.go:14:2:14:39 | ... := ...[1] | tst.go:17:41:17:56 | selection of Filename | provenance | | nodes | TaintedPath.go:13:18:13:22 | selection of URL | semmle.label | selection of URL | | TaintedPath.go:13:18:13:30 | call to Query | semmle.label | call to Query | diff --git a/go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlink.expected b/go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlink.expected index da8dc7ed50ed..bddeaf06e627 100644 --- a/go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlink.expected +++ b/go/ql/test/query-tests/Security/CWE-022/UnsafeUnzipSymlink.expected @@ -1,8 +1,8 @@ edges -| UnsafeUnzipSymlink.go:111:19:111:26 | definition of linkName | UnsafeUnzipSymlink.go:112:13:112:20 | linkName | -| UnsafeUnzipSymlink.go:111:29:111:36 | definition of fileName | UnsafeUnzipSymlink.go:112:23:112:30 | fileName | -| UnsafeUnzipSymlink.go:126:17:126:31 | selection of Linkname | UnsafeUnzipSymlink.go:111:19:111:26 | definition of linkName | -| UnsafeUnzipSymlink.go:126:34:126:44 | selection of Name | UnsafeUnzipSymlink.go:111:29:111:36 | definition of fileName | +| UnsafeUnzipSymlink.go:111:19:111:26 | definition of linkName | UnsafeUnzipSymlink.go:112:13:112:20 | linkName | provenance | | +| UnsafeUnzipSymlink.go:111:29:111:36 | definition of fileName | UnsafeUnzipSymlink.go:112:23:112:30 | fileName | provenance | | +| UnsafeUnzipSymlink.go:126:17:126:31 | selection of Linkname | UnsafeUnzipSymlink.go:111:19:111:26 | definition of linkName | provenance | | +| UnsafeUnzipSymlink.go:126:34:126:44 | selection of Name | UnsafeUnzipSymlink.go:111:29:111:36 | definition of fileName | provenance | | nodes | UnsafeUnzipSymlink.go:31:15:31:29 | selection of Linkname | semmle.label | selection of Linkname | | UnsafeUnzipSymlink.go:31:32:31:42 | selection of Name | semmle.label | selection of Name | diff --git a/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected b/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected index f10f103c9635..5ff0ca886c2f 100644 --- a/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected +++ b/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected @@ -1,16 +1,16 @@ edges -| UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | -| UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | -| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | -| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | -| UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | -| UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | -| ZipSlip.go:11:2:15:2 | range statement[1] | ZipSlip.go:12:24:12:29 | selection of Name | -| ZipSlip.go:12:3:12:30 | ... := ...[0] | ZipSlip.go:14:20:14:20 | p | -| ZipSlip.go:12:24:12:29 | selection of Name | ZipSlip.go:12:3:12:30 | ... := ...[0] | -| tarslip.go:15:2:15:30 | ... := ...[0] | tarslip.go:16:23:16:33 | selection of Name | -| tarslip.go:16:23:16:33 | selection of Name | tarslip.go:16:14:16:34 | call to Dir | -| tst.go:23:2:43:2 | range statement[1] | tst.go:29:20:29:23 | path | +| UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | provenance | | +| UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | provenance | | +| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | provenance | | +| UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | provenance | | +| UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | provenance | | +| UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | provenance | | +| ZipSlip.go:11:2:15:2 | range statement[1] | ZipSlip.go:12:24:12:29 | selection of Name | provenance | | +| ZipSlip.go:12:3:12:30 | ... := ...[0] | ZipSlip.go:14:20:14:20 | p | provenance | | +| ZipSlip.go:12:24:12:29 | selection of Name | ZipSlip.go:12:3:12:30 | ... := ...[0] | provenance | | +| tarslip.go:15:2:15:30 | ... := ...[0] | tarslip.go:16:23:16:33 | selection of Name | provenance | | +| tarslip.go:16:23:16:33 | selection of Name | tarslip.go:16:14:16:34 | call to Dir | provenance | | +| tst.go:23:2:43:2 | range statement[1] | tst.go:29:20:29:23 | path | provenance | | nodes | UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | semmle.label | definition of candidate | | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | semmle.label | call to Join | diff --git a/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index 01f6d0a17f66..06df5262ca20 100644 --- a/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -1,75 +1,75 @@ edges -| ArgumentInjection.go:9:10:9:16 | selection of URL | ArgumentInjection.go:9:10:9:24 | call to Query | -| ArgumentInjection.go:9:10:9:24 | call to Query | ArgumentInjection.go:10:31:10:34 | path | -| CommandInjection.go:9:13:9:19 | selection of URL | CommandInjection.go:9:13:9:27 | call to Query | -| CommandInjection.go:9:13:9:27 | call to Query | CommandInjection.go:10:22:10:28 | cmdName | -| GitSubcommands.go:10:13:10:19 | selection of URL | GitSubcommands.go:10:13:10:27 | call to Query | -| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:12:31:12:37 | tainted | -| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:13:31:13:37 | tainted | -| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:14:30:14:36 | tainted | -| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:15:35:15:41 | tainted | -| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:16:36:16:42 | tainted | -| SanitizingDoubleDash.go:9:13:9:19 | selection of URL | SanitizingDoubleDash.go:9:13:9:27 | call to Query | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:13:25:13:31 | tainted | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:14:23:14:33 | slice expression | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:39:31:39:37 | tainted | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:53:21:53:28 | arrayLit | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:68:31:68:37 | tainted | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:80:23:80:29 | tainted | -| SanitizingDoubleDash.go:13:15:13:32 | array literal [array] | SanitizingDoubleDash.go:14:23:14:30 | arrayLit [array] | -| SanitizingDoubleDash.go:13:25:13:31 | tainted | SanitizingDoubleDash.go:13:15:13:32 | array literal [array] | -| SanitizingDoubleDash.go:14:23:14:30 | arrayLit [array] | SanitizingDoubleDash.go:14:23:14:33 | slice element node | -| SanitizingDoubleDash.go:14:23:14:33 | slice element node | SanitizingDoubleDash.go:14:23:14:33 | slice expression [array] | -| SanitizingDoubleDash.go:14:23:14:33 | slice expression [array] | SanitizingDoubleDash.go:14:23:14:33 | slice expression | -| SanitizingDoubleDash.go:39:14:39:44 | call to append | SanitizingDoubleDash.go:40:23:40:30 | arrayLit | -| SanitizingDoubleDash.go:39:31:39:37 | tainted | SanitizingDoubleDash.go:39:14:39:44 | call to append | -| SanitizingDoubleDash.go:53:14:53:35 | call to append | SanitizingDoubleDash.go:54:23:54:30 | arrayLit | -| SanitizingDoubleDash.go:53:21:53:28 | arrayLit | SanitizingDoubleDash.go:53:14:53:35 | call to append | -| SanitizingDoubleDash.go:68:14:68:38 | call to append | SanitizingDoubleDash.go:69:21:69:28 | arrayLit | -| SanitizingDoubleDash.go:68:31:68:37 | tainted | SanitizingDoubleDash.go:68:14:68:38 | call to append | -| SanitizingDoubleDash.go:69:14:69:35 | call to append | SanitizingDoubleDash.go:70:23:70:30 | arrayLit | -| SanitizingDoubleDash.go:69:21:69:28 | arrayLit | SanitizingDoubleDash.go:69:14:69:35 | call to append | -| SanitizingDoubleDash.go:92:13:92:19 | selection of URL | SanitizingDoubleDash.go:92:13:92:27 | call to Query | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:95:25:95:31 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:96:24:96:34 | slice expression | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:100:31:100:37 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:101:24:101:34 | slice expression | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:105:30:105:36 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:106:24:106:31 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:111:37:111:43 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:117:31:117:37 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:123:31:123:37 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:129:21:129:28 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:136:31:136:37 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:142:31:142:37 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:148:30:148:36 | tainted | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:152:24:152:30 | tainted | -| SanitizingDoubleDash.go:95:15:95:32 | array literal [array] | SanitizingDoubleDash.go:96:24:96:31 | arrayLit [array] | -| SanitizingDoubleDash.go:95:25:95:31 | tainted | SanitizingDoubleDash.go:95:15:95:32 | array literal [array] | -| SanitizingDoubleDash.go:96:24:96:31 | arrayLit [array] | SanitizingDoubleDash.go:96:24:96:34 | slice element node | -| SanitizingDoubleDash.go:96:24:96:34 | slice element node | SanitizingDoubleDash.go:96:24:96:34 | slice expression [array] | -| SanitizingDoubleDash.go:96:24:96:34 | slice expression [array] | SanitizingDoubleDash.go:96:24:96:34 | slice expression | -| SanitizingDoubleDash.go:100:15:100:38 | array literal [array] | SanitizingDoubleDash.go:101:24:101:31 | arrayLit [array] | -| SanitizingDoubleDash.go:100:31:100:37 | tainted | SanitizingDoubleDash.go:100:15:100:38 | array literal [array] | -| SanitizingDoubleDash.go:101:24:101:31 | arrayLit [array] | SanitizingDoubleDash.go:101:24:101:34 | slice element node | -| SanitizingDoubleDash.go:101:24:101:34 | slice element node | SanitizingDoubleDash.go:101:24:101:34 | slice expression [array] | -| SanitizingDoubleDash.go:101:24:101:34 | slice expression [array] | SanitizingDoubleDash.go:101:24:101:34 | slice expression | -| SanitizingDoubleDash.go:105:15:105:37 | slice literal [array] | SanitizingDoubleDash.go:106:24:106:31 | arrayLit | -| SanitizingDoubleDash.go:105:30:105:36 | tainted | SanitizingDoubleDash.go:105:15:105:37 | slice literal [array] | -| SanitizingDoubleDash.go:111:14:111:44 | call to append | SanitizingDoubleDash.go:112:24:112:31 | arrayLit | -| SanitizingDoubleDash.go:111:37:111:43 | tainted | SanitizingDoubleDash.go:111:14:111:44 | call to append | -| SanitizingDoubleDash.go:117:14:117:44 | call to append | SanitizingDoubleDash.go:118:24:118:31 | arrayLit | -| SanitizingDoubleDash.go:117:31:117:37 | tainted | SanitizingDoubleDash.go:117:14:117:44 | call to append | -| SanitizingDoubleDash.go:123:14:123:38 | call to append | SanitizingDoubleDash.go:124:24:124:31 | arrayLit | -| SanitizingDoubleDash.go:123:31:123:37 | tainted | SanitizingDoubleDash.go:123:14:123:38 | call to append | -| SanitizingDoubleDash.go:129:14:129:35 | call to append | SanitizingDoubleDash.go:130:24:130:31 | arrayLit | -| SanitizingDoubleDash.go:129:21:129:28 | arrayLit | SanitizingDoubleDash.go:129:14:129:35 | call to append | -| SanitizingDoubleDash.go:136:14:136:38 | call to append | SanitizingDoubleDash.go:137:24:137:31 | arrayLit | -| SanitizingDoubleDash.go:136:31:136:37 | tainted | SanitizingDoubleDash.go:136:14:136:38 | call to append | -| SanitizingDoubleDash.go:142:14:142:38 | call to append | SanitizingDoubleDash.go:143:21:143:28 | arrayLit | -| SanitizingDoubleDash.go:142:31:142:37 | tainted | SanitizingDoubleDash.go:142:14:142:38 | call to append | -| SanitizingDoubleDash.go:143:14:143:35 | call to append | SanitizingDoubleDash.go:144:24:144:31 | arrayLit | -| SanitizingDoubleDash.go:143:21:143:28 | arrayLit | SanitizingDoubleDash.go:143:14:143:35 | call to append | +| ArgumentInjection.go:9:10:9:16 | selection of URL | ArgumentInjection.go:9:10:9:24 | call to Query | provenance | | +| ArgumentInjection.go:9:10:9:24 | call to Query | ArgumentInjection.go:10:31:10:34 | path | provenance | | +| CommandInjection.go:9:13:9:19 | selection of URL | CommandInjection.go:9:13:9:27 | call to Query | provenance | | +| CommandInjection.go:9:13:9:27 | call to Query | CommandInjection.go:10:22:10:28 | cmdName | provenance | | +| GitSubcommands.go:10:13:10:19 | selection of URL | GitSubcommands.go:10:13:10:27 | call to Query | provenance | | +| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:12:31:12:37 | tainted | provenance | | +| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:13:31:13:37 | tainted | provenance | | +| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:14:30:14:36 | tainted | provenance | | +| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:15:35:15:41 | tainted | provenance | | +| GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:16:36:16:42 | tainted | provenance | | +| SanitizingDoubleDash.go:9:13:9:19 | selection of URL | SanitizingDoubleDash.go:9:13:9:27 | call to Query | provenance | | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:13:25:13:31 | tainted | provenance | | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:14:23:14:33 | slice expression | provenance | | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:39:31:39:37 | tainted | provenance | | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:53:21:53:28 | arrayLit | provenance | | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:68:31:68:37 | tainted | provenance | | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:80:23:80:29 | tainted | provenance | | +| SanitizingDoubleDash.go:13:15:13:32 | array literal [array] | SanitizingDoubleDash.go:14:23:14:30 | arrayLit [array] | provenance | | +| SanitizingDoubleDash.go:13:25:13:31 | tainted | SanitizingDoubleDash.go:13:15:13:32 | array literal [array] | provenance | | +| SanitizingDoubleDash.go:14:23:14:30 | arrayLit [array] | SanitizingDoubleDash.go:14:23:14:33 | slice element node | provenance | | +| SanitizingDoubleDash.go:14:23:14:33 | slice element node | SanitizingDoubleDash.go:14:23:14:33 | slice expression [array] | provenance | | +| SanitizingDoubleDash.go:14:23:14:33 | slice expression [array] | SanitizingDoubleDash.go:14:23:14:33 | slice expression | provenance | | +| SanitizingDoubleDash.go:39:14:39:44 | call to append | SanitizingDoubleDash.go:40:23:40:30 | arrayLit | provenance | | +| SanitizingDoubleDash.go:39:31:39:37 | tainted | SanitizingDoubleDash.go:39:14:39:44 | call to append | provenance | | +| SanitizingDoubleDash.go:53:14:53:35 | call to append | SanitizingDoubleDash.go:54:23:54:30 | arrayLit | provenance | | +| SanitizingDoubleDash.go:53:21:53:28 | arrayLit | SanitizingDoubleDash.go:53:14:53:35 | call to append | provenance | | +| SanitizingDoubleDash.go:68:14:68:38 | call to append | SanitizingDoubleDash.go:69:21:69:28 | arrayLit | provenance | | +| SanitizingDoubleDash.go:68:31:68:37 | tainted | SanitizingDoubleDash.go:68:14:68:38 | call to append | provenance | | +| SanitizingDoubleDash.go:69:14:69:35 | call to append | SanitizingDoubleDash.go:70:23:70:30 | arrayLit | provenance | | +| SanitizingDoubleDash.go:69:21:69:28 | arrayLit | SanitizingDoubleDash.go:69:14:69:35 | call to append | provenance | | +| SanitizingDoubleDash.go:92:13:92:19 | selection of URL | SanitizingDoubleDash.go:92:13:92:27 | call to Query | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:95:25:95:31 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:96:24:96:34 | slice expression | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:100:31:100:37 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:101:24:101:34 | slice expression | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:105:30:105:36 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:106:24:106:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:111:37:111:43 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:117:31:117:37 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:123:31:123:37 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:129:21:129:28 | arrayLit | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:136:31:136:37 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:142:31:142:37 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:148:30:148:36 | tainted | provenance | | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:152:24:152:30 | tainted | provenance | | +| SanitizingDoubleDash.go:95:15:95:32 | array literal [array] | SanitizingDoubleDash.go:96:24:96:31 | arrayLit [array] | provenance | | +| SanitizingDoubleDash.go:95:25:95:31 | tainted | SanitizingDoubleDash.go:95:15:95:32 | array literal [array] | provenance | | +| SanitizingDoubleDash.go:96:24:96:31 | arrayLit [array] | SanitizingDoubleDash.go:96:24:96:34 | slice element node | provenance | | +| SanitizingDoubleDash.go:96:24:96:34 | slice element node | SanitizingDoubleDash.go:96:24:96:34 | slice expression [array] | provenance | | +| SanitizingDoubleDash.go:96:24:96:34 | slice expression [array] | SanitizingDoubleDash.go:96:24:96:34 | slice expression | provenance | | +| SanitizingDoubleDash.go:100:15:100:38 | array literal [array] | SanitizingDoubleDash.go:101:24:101:31 | arrayLit [array] | provenance | | +| SanitizingDoubleDash.go:100:31:100:37 | tainted | SanitizingDoubleDash.go:100:15:100:38 | array literal [array] | provenance | | +| SanitizingDoubleDash.go:101:24:101:31 | arrayLit [array] | SanitizingDoubleDash.go:101:24:101:34 | slice element node | provenance | | +| SanitizingDoubleDash.go:101:24:101:34 | slice element node | SanitizingDoubleDash.go:101:24:101:34 | slice expression [array] | provenance | | +| SanitizingDoubleDash.go:101:24:101:34 | slice expression [array] | SanitizingDoubleDash.go:101:24:101:34 | slice expression | provenance | | +| SanitizingDoubleDash.go:105:15:105:37 | slice literal [array] | SanitizingDoubleDash.go:106:24:106:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:105:30:105:36 | tainted | SanitizingDoubleDash.go:105:15:105:37 | slice literal [array] | provenance | | +| SanitizingDoubleDash.go:111:14:111:44 | call to append | SanitizingDoubleDash.go:112:24:112:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:111:37:111:43 | tainted | SanitizingDoubleDash.go:111:14:111:44 | call to append | provenance | | +| SanitizingDoubleDash.go:117:14:117:44 | call to append | SanitizingDoubleDash.go:118:24:118:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:117:31:117:37 | tainted | SanitizingDoubleDash.go:117:14:117:44 | call to append | provenance | | +| SanitizingDoubleDash.go:123:14:123:38 | call to append | SanitizingDoubleDash.go:124:24:124:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:123:31:123:37 | tainted | SanitizingDoubleDash.go:123:14:123:38 | call to append | provenance | | +| SanitizingDoubleDash.go:129:14:129:35 | call to append | SanitizingDoubleDash.go:130:24:130:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:129:21:129:28 | arrayLit | SanitizingDoubleDash.go:129:14:129:35 | call to append | provenance | | +| SanitizingDoubleDash.go:136:14:136:38 | call to append | SanitizingDoubleDash.go:137:24:137:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:136:31:136:37 | tainted | SanitizingDoubleDash.go:136:14:136:38 | call to append | provenance | | +| SanitizingDoubleDash.go:142:14:142:38 | call to append | SanitizingDoubleDash.go:143:21:143:28 | arrayLit | provenance | | +| SanitizingDoubleDash.go:142:31:142:37 | tainted | SanitizingDoubleDash.go:142:14:142:38 | call to append | provenance | | +| SanitizingDoubleDash.go:143:14:143:35 | call to append | SanitizingDoubleDash.go:144:24:144:31 | arrayLit | provenance | | +| SanitizingDoubleDash.go:143:21:143:28 | arrayLit | SanitizingDoubleDash.go:143:14:143:35 | call to append | provenance | | nodes | ArgumentInjection.go:9:10:9:16 | selection of URL | semmle.label | selection of URL | | ArgumentInjection.go:9:10:9:24 | call to Query | semmle.label | call to Query | diff --git a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected index e0e028fff91b..4bdeaa67be01 100644 --- a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected +++ b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected @@ -1,8 +1,8 @@ edges -| StoredCommand.go:11:2:11:27 | ... := ...[0] | StoredCommand.go:13:2:13:5 | rows | -| StoredCommand.go:13:2:13:5 | rows | StoredCommand.go:13:12:13:19 | &... | -| StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:13:12:13:19 | &... | -| StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:14:22:14:28 | cmdName | +| StoredCommand.go:11:2:11:27 | ... := ...[0] | StoredCommand.go:13:2:13:5 | rows | provenance | | +| StoredCommand.go:13:2:13:5 | rows | StoredCommand.go:13:12:13:19 | &... | provenance | | +| StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:13:12:13:19 | &... | provenance | | +| StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:14:22:14:28 | cmdName | provenance | | nodes | StoredCommand.go:11:2:11:27 | ... := ...[0] | semmle.label | ... := ...[0] | | StoredCommand.go:13:2:13:5 | rows | semmle.label | rows | diff --git a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected index 81144cc3c86f..634c21befb31 100644 --- a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected @@ -1,52 +1,52 @@ edges -| ReflectedXss.go:11:15:11:20 | selection of Form | ReflectedXss.go:11:15:11:36 | call to Get | -| ReflectedXss.go:11:15:11:36 | call to Get | ReflectedXss.go:14:44:14:51 | username | -| contenttype.go:11:11:11:16 | selection of Form | contenttype.go:11:11:11:28 | call to Get | -| contenttype.go:11:11:11:28 | call to Get | contenttype.go:17:11:17:22 | type conversion | -| contenttype.go:49:11:49:16 | selection of Form | contenttype.go:49:11:49:28 | call to Get | -| contenttype.go:49:11:49:28 | call to Get | contenttype.go:53:34:53:37 | data | -| contenttype.go:63:10:63:28 | call to FormValue | contenttype.go:64:52:64:55 | data | -| contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | -| contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | -| contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | -| reflectedxsstest.go:31:2:31:44 | ... := ...[0] | reflectedxsstest.go:32:34:32:37 | file | -| reflectedxsstest.go:31:2:31:44 | ... := ...[1] | reflectedxsstest.go:34:46:34:60 | selection of Filename | -| reflectedxsstest.go:32:2:32:38 | ... := ...[0] | reflectedxsstest.go:33:49:33:55 | content | -| reflectedxsstest.go:32:34:32:37 | file | reflectedxsstest.go:32:2:32:38 | ... := ...[0] | -| reflectedxsstest.go:33:17:33:56 | []type{args} [array] | reflectedxsstest.go:33:17:33:56 | call to Sprintf | -| reflectedxsstest.go:33:17:33:56 | call to Sprintf | reflectedxsstest.go:33:10:33:57 | type conversion | -| reflectedxsstest.go:33:49:33:55 | content | reflectedxsstest.go:33:17:33:56 | []type{args} [array] | -| reflectedxsstest.go:33:49:33:55 | content | reflectedxsstest.go:33:17:33:56 | call to Sprintf | -| reflectedxsstest.go:34:17:34:61 | []type{args} [array] | reflectedxsstest.go:34:17:34:61 | call to Sprintf | -| reflectedxsstest.go:34:17:34:61 | call to Sprintf | reflectedxsstest.go:34:10:34:62 | type conversion | -| reflectedxsstest.go:34:46:34:60 | selection of Filename | reflectedxsstest.go:34:17:34:61 | []type{args} [array] | -| reflectedxsstest.go:34:46:34:60 | selection of Filename | reflectedxsstest.go:34:17:34:61 | call to Sprintf | -| reflectedxsstest.go:38:2:38:35 | ... := ...[0] | reflectedxsstest.go:39:16:39:21 | reader | -| reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:40:14:40:17 | part | -| reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:42:2:42:5 | part | -| reflectedxsstest.go:39:16:39:21 | reader | reflectedxsstest.go:39:2:39:32 | ... := ...[0] | -| reflectedxsstest.go:40:14:40:17 | part | reflectedxsstest.go:40:14:40:28 | call to FileName | -| reflectedxsstest.go:40:14:40:28 | call to FileName | reflectedxsstest.go:44:46:44:53 | partName | -| reflectedxsstest.go:41:2:41:10 | definition of byteSlice | reflectedxsstest.go:45:10:45:18 | byteSlice | -| reflectedxsstest.go:42:2:42:5 | part | reflectedxsstest.go:41:2:41:10 | definition of byteSlice | -| reflectedxsstest.go:44:17:44:54 | []type{args} [array] | reflectedxsstest.go:44:17:44:54 | call to Sprintf | -| reflectedxsstest.go:44:17:44:54 | call to Sprintf | reflectedxsstest.go:44:10:44:55 | type conversion | -| reflectedxsstest.go:44:46:44:53 | partName | reflectedxsstest.go:44:17:44:54 | []type{args} [array] | -| reflectedxsstest.go:44:46:44:53 | partName | reflectedxsstest.go:44:17:44:54 | call to Sprintf | -| reflectedxsstest.go:51:14:51:18 | selection of URL | reflectedxsstest.go:51:14:51:26 | call to Query | -| reflectedxsstest.go:51:14:51:26 | call to Query | reflectedxsstest.go:54:11:54:21 | type conversion | -| tst.go:14:15:14:20 | selection of Form | tst.go:14:15:14:36 | call to Get | -| tst.go:14:15:14:36 | call to Get | tst.go:18:32:18:32 | a | -| tst.go:18:19:18:38 | call to Join | tst.go:18:12:18:39 | type conversion | -| tst.go:18:32:18:32 | a | tst.go:18:19:18:38 | call to Join | -| tst.go:48:14:48:19 | selection of Form | tst.go:48:14:48:34 | call to Get | -| tst.go:48:14:48:34 | call to Get | tst.go:53:12:53:26 | type conversion | -| websocketXss.go:30:7:30:10 | definition of xnet | websocketXss.go:32:24:32:27 | xnet | -| websocketXss.go:34:3:34:7 | definition of xnet2 | websocketXss.go:36:24:36:28 | xnet2 | -| websocketXss.go:40:3:40:40 | ... := ...[1] | websocketXss.go:41:24:41:29 | nhooyr | -| websocketXss.go:46:7:46:16 | definition of gorillaMsg | websocketXss.go:48:24:48:33 | gorillaMsg | -| websocketXss.go:50:3:50:10 | definition of gorilla2 | websocketXss.go:52:24:52:31 | gorilla2 | -| websocketXss.go:54:3:54:38 | ... := ...[1] | websocketXss.go:55:24:55:31 | gorilla3 | +| ReflectedXss.go:11:15:11:20 | selection of Form | ReflectedXss.go:11:15:11:36 | call to Get | provenance | | +| ReflectedXss.go:11:15:11:36 | call to Get | ReflectedXss.go:14:44:14:51 | username | provenance | | +| contenttype.go:11:11:11:16 | selection of Form | contenttype.go:11:11:11:28 | call to Get | provenance | | +| contenttype.go:11:11:11:28 | call to Get | contenttype.go:17:11:17:22 | type conversion | provenance | | +| contenttype.go:49:11:49:16 | selection of Form | contenttype.go:49:11:49:28 | call to Get | provenance | | +| contenttype.go:49:11:49:28 | call to Get | contenttype.go:53:34:53:37 | data | provenance | | +| contenttype.go:63:10:63:28 | call to FormValue | contenttype.go:64:52:64:55 | data | provenance | | +| contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | provenance | | +| contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | provenance | | +| contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | provenance | | +| reflectedxsstest.go:31:2:31:44 | ... := ...[0] | reflectedxsstest.go:32:34:32:37 | file | provenance | | +| reflectedxsstest.go:31:2:31:44 | ... := ...[1] | reflectedxsstest.go:34:46:34:60 | selection of Filename | provenance | | +| reflectedxsstest.go:32:2:32:38 | ... := ...[0] | reflectedxsstest.go:33:49:33:55 | content | provenance | | +| reflectedxsstest.go:32:34:32:37 | file | reflectedxsstest.go:32:2:32:38 | ... := ...[0] | provenance | | +| reflectedxsstest.go:33:17:33:56 | []type{args} [array] | reflectedxsstest.go:33:17:33:56 | call to Sprintf | provenance | | +| reflectedxsstest.go:33:17:33:56 | call to Sprintf | reflectedxsstest.go:33:10:33:57 | type conversion | provenance | | +| reflectedxsstest.go:33:49:33:55 | content | reflectedxsstest.go:33:17:33:56 | []type{args} [array] | provenance | | +| reflectedxsstest.go:33:49:33:55 | content | reflectedxsstest.go:33:17:33:56 | call to Sprintf | provenance | | +| reflectedxsstest.go:34:17:34:61 | []type{args} [array] | reflectedxsstest.go:34:17:34:61 | call to Sprintf | provenance | | +| reflectedxsstest.go:34:17:34:61 | call to Sprintf | reflectedxsstest.go:34:10:34:62 | type conversion | provenance | | +| reflectedxsstest.go:34:46:34:60 | selection of Filename | reflectedxsstest.go:34:17:34:61 | []type{args} [array] | provenance | | +| reflectedxsstest.go:34:46:34:60 | selection of Filename | reflectedxsstest.go:34:17:34:61 | call to Sprintf | provenance | | +| reflectedxsstest.go:38:2:38:35 | ... := ...[0] | reflectedxsstest.go:39:16:39:21 | reader | provenance | | +| reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:40:14:40:17 | part | provenance | | +| reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:42:2:42:5 | part | provenance | | +| reflectedxsstest.go:39:16:39:21 | reader | reflectedxsstest.go:39:2:39:32 | ... := ...[0] | provenance | | +| reflectedxsstest.go:40:14:40:17 | part | reflectedxsstest.go:40:14:40:28 | call to FileName | provenance | | +| reflectedxsstest.go:40:14:40:28 | call to FileName | reflectedxsstest.go:44:46:44:53 | partName | provenance | | +| reflectedxsstest.go:41:2:41:10 | definition of byteSlice | reflectedxsstest.go:45:10:45:18 | byteSlice | provenance | | +| reflectedxsstest.go:42:2:42:5 | part | reflectedxsstest.go:41:2:41:10 | definition of byteSlice | provenance | | +| reflectedxsstest.go:44:17:44:54 | []type{args} [array] | reflectedxsstest.go:44:17:44:54 | call to Sprintf | provenance | | +| reflectedxsstest.go:44:17:44:54 | call to Sprintf | reflectedxsstest.go:44:10:44:55 | type conversion | provenance | | +| reflectedxsstest.go:44:46:44:53 | partName | reflectedxsstest.go:44:17:44:54 | []type{args} [array] | provenance | | +| reflectedxsstest.go:44:46:44:53 | partName | reflectedxsstest.go:44:17:44:54 | call to Sprintf | provenance | | +| reflectedxsstest.go:51:14:51:18 | selection of URL | reflectedxsstest.go:51:14:51:26 | call to Query | provenance | | +| reflectedxsstest.go:51:14:51:26 | call to Query | reflectedxsstest.go:54:11:54:21 | type conversion | provenance | | +| tst.go:14:15:14:20 | selection of Form | tst.go:14:15:14:36 | call to Get | provenance | | +| tst.go:14:15:14:36 | call to Get | tst.go:18:32:18:32 | a | provenance | | +| tst.go:18:19:18:38 | call to Join | tst.go:18:12:18:39 | type conversion | provenance | | +| tst.go:18:32:18:32 | a | tst.go:18:19:18:38 | call to Join | provenance | | +| tst.go:48:14:48:19 | selection of Form | tst.go:48:14:48:34 | call to Get | provenance | | +| tst.go:48:14:48:34 | call to Get | tst.go:53:12:53:26 | type conversion | provenance | | +| websocketXss.go:30:7:30:10 | definition of xnet | websocketXss.go:32:24:32:27 | xnet | provenance | | +| websocketXss.go:34:3:34:7 | definition of xnet2 | websocketXss.go:36:24:36:28 | xnet2 | provenance | | +| websocketXss.go:40:3:40:40 | ... := ...[1] | websocketXss.go:41:24:41:29 | nhooyr | provenance | | +| websocketXss.go:46:7:46:16 | definition of gorillaMsg | websocketXss.go:48:24:48:33 | gorillaMsg | provenance | | +| websocketXss.go:50:3:50:10 | definition of gorilla2 | websocketXss.go:52:24:52:31 | gorilla2 | provenance | | +| websocketXss.go:54:3:54:38 | ... := ...[1] | websocketXss.go:55:24:55:31 | gorilla3 | provenance | | nodes | ReflectedXss.go:11:15:11:20 | selection of Form | semmle.label | selection of Form | | ReflectedXss.go:11:15:11:36 | call to Get | semmle.label | call to Get | diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected index f51eda4c93c6..c399840db9ac 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected @@ -1,10 +1,10 @@ edges -| StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | -| stored.go:18:3:18:28 | ... := ...[0] | stored.go:25:14:25:17 | rows | -| stored.go:25:14:25:17 | rows | stored.go:25:29:25:33 | &... | -| stored.go:25:29:25:33 | &... | stored.go:25:29:25:33 | &... | -| stored.go:25:29:25:33 | &... | stored.go:30:22:30:25 | name | -| stored.go:59:30:59:33 | definition of path | stored.go:61:22:61:25 | path | +| StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | provenance | | +| stored.go:18:3:18:28 | ... := ...[0] | stored.go:25:14:25:17 | rows | provenance | | +| stored.go:25:14:25:17 | rows | stored.go:25:29:25:33 | &... | provenance | | +| stored.go:25:29:25:33 | &... | stored.go:25:29:25:33 | &... | provenance | | +| stored.go:25:29:25:33 | &... | stored.go:30:22:30:25 | name | provenance | | +| stored.go:59:30:59:33 | definition of path | stored.go:61:22:61:25 | path | provenance | | nodes | StoredXss.go:13:21:13:31 | call to Name | semmle.label | call to Name | | StoredXss.go:13:21:13:36 | ...+... | semmle.label | ...+... | diff --git a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected index 43bbd3a3fe78..066f4a272f0d 100644 --- a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected @@ -1,112 +1,112 @@ edges -| SqlInjection.go:10:7:11:30 | []type{args} [array] | SqlInjection.go:10:7:11:30 | call to Sprintf | -| SqlInjection.go:10:7:11:30 | call to Sprintf | SqlInjection.go:12:11:12:11 | q | -| SqlInjection.go:11:3:11:9 | selection of URL | SqlInjection.go:11:3:11:17 | call to Query | -| SqlInjection.go:11:3:11:17 | call to Query | SqlInjection.go:11:3:11:29 | index expression | -| SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | []type{args} [array] | -| SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | call to Sprintf | -| issue48.go:17:2:17:33 | ... := ...[0] | issue48.go:18:17:18:17 | b | -| issue48.go:17:25:17:32 | selection of Body | issue48.go:17:2:17:33 | ... := ...[0] | -| issue48.go:18:17:18:17 | b | issue48.go:18:20:18:39 | &... | -| issue48.go:18:20:18:39 | &... | issue48.go:21:3:21:33 | index expression | -| issue48.go:20:8:21:34 | []type{args} [array] | issue48.go:20:8:21:34 | call to Sprintf | -| issue48.go:20:8:21:34 | call to Sprintf | issue48.go:22:11:22:12 | q3 | -| issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | []type{args} [array] | -| issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | call to Sprintf | -| issue48.go:27:2:27:34 | ... := ...[0] | issue48.go:28:17:28:18 | b2 | -| issue48.go:27:26:27:33 | selection of Body | issue48.go:27:2:27:34 | ... := ...[0] | -| issue48.go:28:17:28:18 | b2 | issue48.go:28:21:28:41 | &... | -| issue48.go:28:21:28:41 | &... | issue48.go:31:3:31:31 | selection of Category | -| issue48.go:30:8:31:32 | []type{args} [array] | issue48.go:30:8:31:32 | call to Sprintf | -| issue48.go:30:8:31:32 | call to Sprintf | issue48.go:32:11:32:12 | q4 | -| issue48.go:31:3:31:31 | selection of Category | issue48.go:30:8:31:32 | []type{args} [array] | -| issue48.go:31:3:31:31 | selection of Category | issue48.go:30:8:31:32 | call to Sprintf | -| issue48.go:37:17:37:50 | type conversion | issue48.go:37:53:37:73 | &... | -| issue48.go:37:24:37:30 | selection of URL | issue48.go:37:24:37:38 | call to Query | -| issue48.go:37:24:37:38 | call to Query | issue48.go:37:17:37:50 | type conversion | -| issue48.go:37:53:37:73 | &... | issue48.go:40:3:40:31 | selection of Category | -| issue48.go:39:8:40:32 | []type{args} [array] | issue48.go:39:8:40:32 | call to Sprintf | -| issue48.go:39:8:40:32 | call to Sprintf | issue48.go:41:11:41:12 | q5 | -| issue48.go:40:3:40:31 | selection of Category | issue48.go:39:8:40:32 | []type{args} [array] | -| issue48.go:40:3:40:31 | selection of Category | issue48.go:39:8:40:32 | call to Sprintf | -| main.go:11:11:11:16 | selection of Form | main.go:11:11:11:28 | index expression | -| main.go:15:11:15:84 | []type{args} [array] | main.go:15:11:15:84 | call to Sprintf | -| main.go:15:63:15:67 | selection of URL | main.go:15:63:15:75 | call to Query | -| main.go:15:63:15:75 | call to Query | main.go:15:63:15:83 | index expression | -| main.go:15:63:15:83 | index expression | main.go:15:11:15:84 | []type{args} [array] | -| main.go:15:63:15:83 | index expression | main.go:15:11:15:84 | call to Sprintf | -| main.go:16:11:16:85 | []type{args} [array] | main.go:16:11:16:85 | call to Sprintf | -| main.go:16:63:16:70 | selection of Header | main.go:16:63:16:84 | call to Get | -| main.go:16:63:16:84 | call to Get | main.go:16:11:16:85 | []type{args} [array] | -| main.go:16:63:16:84 | call to Get | main.go:16:11:16:85 | call to Sprintf | -| main.go:28:17:31:2 | &... [pointer, Category] | main.go:34:3:34:13 | RequestData [pointer, Category] | -| main.go:28:18:31:2 | struct literal [Category] | main.go:28:17:31:2 | &... [pointer, Category] | -| main.go:30:13:30:19 | selection of URL | main.go:30:13:30:27 | call to Query | -| main.go:30:13:30:27 | call to Query | main.go:30:13:30:39 | index expression | -| main.go:30:13:30:39 | index expression | main.go:28:18:31:2 | struct literal [Category] | -| main.go:33:7:34:23 | []type{args} [array] | main.go:33:7:34:23 | call to Sprintf | -| main.go:33:7:34:23 | call to Sprintf | main.go:35:11:35:11 | q | -| main.go:34:3:34:13 | RequestData [pointer, Category] | main.go:34:3:34:13 | implicit dereference [Category] | -| main.go:34:3:34:13 | implicit dereference [Category] | main.go:34:3:34:22 | selection of Category | -| main.go:34:3:34:22 | selection of Category | main.go:33:7:34:23 | []type{args} [array] | -| main.go:34:3:34:22 | selection of Category | main.go:33:7:34:23 | call to Sprintf | -| main.go:39:2:39:12 | definition of RequestData [pointer, Category] | main.go:40:2:40:12 | RequestData [pointer, Category] | -| main.go:39:2:39:12 | definition of RequestData [pointer, Category] | main.go:43:3:43:13 | RequestData [pointer, Category] | -| main.go:40:2:40:12 | RequestData [pointer, Category] | main.go:40:2:40:12 | implicit dereference [Category] | -| main.go:40:2:40:12 | implicit dereference [Category] | main.go:39:2:39:12 | definition of RequestData [pointer, Category] | -| main.go:40:25:40:31 | selection of URL | main.go:40:25:40:39 | call to Query | -| main.go:40:25:40:39 | call to Query | main.go:40:25:40:51 | index expression | -| main.go:40:25:40:51 | index expression | main.go:40:2:40:12 | implicit dereference [Category] | -| main.go:42:7:43:23 | []type{args} [array] | main.go:42:7:43:23 | call to Sprintf | -| main.go:42:7:43:23 | call to Sprintf | main.go:44:11:44:11 | q | -| main.go:43:3:43:13 | RequestData [pointer, Category] | main.go:43:3:43:13 | implicit dereference [Category] | -| main.go:43:3:43:13 | implicit dereference [Category] | main.go:43:3:43:22 | selection of Category | -| main.go:43:3:43:22 | selection of Category | main.go:42:7:43:23 | []type{args} [array] | -| main.go:43:3:43:22 | selection of Category | main.go:42:7:43:23 | call to Sprintf | -| main.go:48:2:48:12 | definition of RequestData [pointer, Category] | main.go:49:4:49:14 | RequestData [pointer, Category] | -| main.go:48:2:48:12 | definition of RequestData [pointer, Category] | main.go:52:3:52:13 | RequestData [pointer, Category] | -| main.go:49:3:49:14 | star expression [Category] | main.go:48:2:48:12 | definition of RequestData [pointer, Category] | -| main.go:49:4:49:14 | RequestData [pointer, Category] | main.go:49:3:49:14 | star expression [Category] | -| main.go:49:28:49:34 | selection of URL | main.go:49:28:49:42 | call to Query | -| main.go:49:28:49:42 | call to Query | main.go:49:28:49:54 | index expression | -| main.go:49:28:49:54 | index expression | main.go:49:3:49:14 | star expression [Category] | -| main.go:51:7:52:23 | []type{args} [array] | main.go:51:7:52:23 | call to Sprintf | -| main.go:51:7:52:23 | call to Sprintf | main.go:53:11:53:11 | q | -| main.go:52:3:52:13 | RequestData [pointer, Category] | main.go:52:3:52:13 | implicit dereference [Category] | -| main.go:52:3:52:13 | implicit dereference [Category] | main.go:52:3:52:22 | selection of Category | -| main.go:52:3:52:22 | selection of Category | main.go:51:7:52:23 | []type{args} [array] | -| main.go:52:3:52:22 | selection of Category | main.go:51:7:52:23 | call to Sprintf | -| main.go:57:2:57:12 | definition of RequestData [pointer, Category] | main.go:58:4:58:14 | RequestData [pointer, Category] | -| main.go:57:2:57:12 | definition of RequestData [pointer, Category] | main.go:61:5:61:15 | RequestData [pointer, Category] | -| main.go:58:3:58:14 | star expression [Category] | main.go:57:2:57:12 | definition of RequestData [pointer, Category] | -| main.go:58:4:58:14 | RequestData [pointer, Category] | main.go:58:3:58:14 | star expression [Category] | -| main.go:58:28:58:34 | selection of URL | main.go:58:28:58:42 | call to Query | -| main.go:58:28:58:42 | call to Query | main.go:58:28:58:54 | index expression | -| main.go:58:28:58:54 | index expression | main.go:58:3:58:14 | star expression [Category] | -| main.go:60:7:61:26 | []type{args} [array] | main.go:60:7:61:26 | call to Sprintf | -| main.go:60:7:61:26 | call to Sprintf | main.go:62:11:62:11 | q | -| main.go:61:3:61:25 | selection of Category | main.go:60:7:61:26 | []type{args} [array] | -| main.go:61:3:61:25 | selection of Category | main.go:60:7:61:26 | call to Sprintf | -| main.go:61:4:61:15 | star expression [Category] | main.go:61:3:61:25 | selection of Category | -| main.go:61:5:61:15 | RequestData [pointer, Category] | main.go:61:4:61:15 | star expression [Category] | -| mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:42:28:42:41 | untrustedInput | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:50:34:50:39 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:61:27:61:32 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:63:23:63:28 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:64:22:64:27 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:66:32:66:37 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:69:17:69:22 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:70:20:70:25 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:71:29:71:34 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:72:30:72:35 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:73:29:73:34 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:78:23:78:28 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:79:23:79:28 | filter | -| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:80:22:80:27 | filter | -| mongoDB.go:42:28:42:41 | untrustedInput | mongoDB.go:42:19:42:42 | struct literal | -| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:57:22:57:29 | pipeline | -| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:81:18:81:25 | pipeline | -| mongoDB.go:50:34:50:39 | filter | mongoDB.go:50:23:50:40 | struct literal | +| SqlInjection.go:10:7:11:30 | []type{args} [array] | SqlInjection.go:10:7:11:30 | call to Sprintf | provenance | | +| SqlInjection.go:10:7:11:30 | call to Sprintf | SqlInjection.go:12:11:12:11 | q | provenance | | +| SqlInjection.go:11:3:11:9 | selection of URL | SqlInjection.go:11:3:11:17 | call to Query | provenance | | +| SqlInjection.go:11:3:11:17 | call to Query | SqlInjection.go:11:3:11:29 | index expression | provenance | | +| SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | []type{args} [array] | provenance | | +| SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | call to Sprintf | provenance | | +| issue48.go:17:2:17:33 | ... := ...[0] | issue48.go:18:17:18:17 | b | provenance | | +| issue48.go:17:25:17:32 | selection of Body | issue48.go:17:2:17:33 | ... := ...[0] | provenance | | +| issue48.go:18:17:18:17 | b | issue48.go:18:20:18:39 | &... | provenance | | +| issue48.go:18:20:18:39 | &... | issue48.go:21:3:21:33 | index expression | provenance | | +| issue48.go:20:8:21:34 | []type{args} [array] | issue48.go:20:8:21:34 | call to Sprintf | provenance | | +| issue48.go:20:8:21:34 | call to Sprintf | issue48.go:22:11:22:12 | q3 | provenance | | +| issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | []type{args} [array] | provenance | | +| issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | call to Sprintf | provenance | | +| issue48.go:27:2:27:34 | ... := ...[0] | issue48.go:28:17:28:18 | b2 | provenance | | +| issue48.go:27:26:27:33 | selection of Body | issue48.go:27:2:27:34 | ... := ...[0] | provenance | | +| issue48.go:28:17:28:18 | b2 | issue48.go:28:21:28:41 | &... | provenance | | +| issue48.go:28:21:28:41 | &... | issue48.go:31:3:31:31 | selection of Category | provenance | | +| issue48.go:30:8:31:32 | []type{args} [array] | issue48.go:30:8:31:32 | call to Sprintf | provenance | | +| issue48.go:30:8:31:32 | call to Sprintf | issue48.go:32:11:32:12 | q4 | provenance | | +| issue48.go:31:3:31:31 | selection of Category | issue48.go:30:8:31:32 | []type{args} [array] | provenance | | +| issue48.go:31:3:31:31 | selection of Category | issue48.go:30:8:31:32 | call to Sprintf | provenance | | +| issue48.go:37:17:37:50 | type conversion | issue48.go:37:53:37:73 | &... | provenance | | +| issue48.go:37:24:37:30 | selection of URL | issue48.go:37:24:37:38 | call to Query | provenance | | +| issue48.go:37:24:37:38 | call to Query | issue48.go:37:17:37:50 | type conversion | provenance | | +| issue48.go:37:53:37:73 | &... | issue48.go:40:3:40:31 | selection of Category | provenance | | +| issue48.go:39:8:40:32 | []type{args} [array] | issue48.go:39:8:40:32 | call to Sprintf | provenance | | +| issue48.go:39:8:40:32 | call to Sprintf | issue48.go:41:11:41:12 | q5 | provenance | | +| issue48.go:40:3:40:31 | selection of Category | issue48.go:39:8:40:32 | []type{args} [array] | provenance | | +| issue48.go:40:3:40:31 | selection of Category | issue48.go:39:8:40:32 | call to Sprintf | provenance | | +| main.go:11:11:11:16 | selection of Form | main.go:11:11:11:28 | index expression | provenance | | +| main.go:15:11:15:84 | []type{args} [array] | main.go:15:11:15:84 | call to Sprintf | provenance | | +| main.go:15:63:15:67 | selection of URL | main.go:15:63:15:75 | call to Query | provenance | | +| main.go:15:63:15:75 | call to Query | main.go:15:63:15:83 | index expression | provenance | | +| main.go:15:63:15:83 | index expression | main.go:15:11:15:84 | []type{args} [array] | provenance | | +| main.go:15:63:15:83 | index expression | main.go:15:11:15:84 | call to Sprintf | provenance | | +| main.go:16:11:16:85 | []type{args} [array] | main.go:16:11:16:85 | call to Sprintf | provenance | | +| main.go:16:63:16:70 | selection of Header | main.go:16:63:16:84 | call to Get | provenance | | +| main.go:16:63:16:84 | call to Get | main.go:16:11:16:85 | []type{args} [array] | provenance | | +| main.go:16:63:16:84 | call to Get | main.go:16:11:16:85 | call to Sprintf | provenance | | +| main.go:28:17:31:2 | &... [pointer, Category] | main.go:34:3:34:13 | RequestData [pointer, Category] | provenance | | +| main.go:28:18:31:2 | struct literal [Category] | main.go:28:17:31:2 | &... [pointer, Category] | provenance | | +| main.go:30:13:30:19 | selection of URL | main.go:30:13:30:27 | call to Query | provenance | | +| main.go:30:13:30:27 | call to Query | main.go:30:13:30:39 | index expression | provenance | | +| main.go:30:13:30:39 | index expression | main.go:28:18:31:2 | struct literal [Category] | provenance | | +| main.go:33:7:34:23 | []type{args} [array] | main.go:33:7:34:23 | call to Sprintf | provenance | | +| main.go:33:7:34:23 | call to Sprintf | main.go:35:11:35:11 | q | provenance | | +| main.go:34:3:34:13 | RequestData [pointer, Category] | main.go:34:3:34:13 | implicit dereference [Category] | provenance | | +| main.go:34:3:34:13 | implicit dereference [Category] | main.go:34:3:34:22 | selection of Category | provenance | | +| main.go:34:3:34:22 | selection of Category | main.go:33:7:34:23 | []type{args} [array] | provenance | | +| main.go:34:3:34:22 | selection of Category | main.go:33:7:34:23 | call to Sprintf | provenance | | +| main.go:39:2:39:12 | definition of RequestData [pointer, Category] | main.go:40:2:40:12 | RequestData [pointer, Category] | provenance | | +| main.go:39:2:39:12 | definition of RequestData [pointer, Category] | main.go:43:3:43:13 | RequestData [pointer, Category] | provenance | | +| main.go:40:2:40:12 | RequestData [pointer, Category] | main.go:40:2:40:12 | implicit dereference [Category] | provenance | | +| main.go:40:2:40:12 | implicit dereference [Category] | main.go:39:2:39:12 | definition of RequestData [pointer, Category] | provenance | | +| main.go:40:25:40:31 | selection of URL | main.go:40:25:40:39 | call to Query | provenance | | +| main.go:40:25:40:39 | call to Query | main.go:40:25:40:51 | index expression | provenance | | +| main.go:40:25:40:51 | index expression | main.go:40:2:40:12 | implicit dereference [Category] | provenance | | +| main.go:42:7:43:23 | []type{args} [array] | main.go:42:7:43:23 | call to Sprintf | provenance | | +| main.go:42:7:43:23 | call to Sprintf | main.go:44:11:44:11 | q | provenance | | +| main.go:43:3:43:13 | RequestData [pointer, Category] | main.go:43:3:43:13 | implicit dereference [Category] | provenance | | +| main.go:43:3:43:13 | implicit dereference [Category] | main.go:43:3:43:22 | selection of Category | provenance | | +| main.go:43:3:43:22 | selection of Category | main.go:42:7:43:23 | []type{args} [array] | provenance | | +| main.go:43:3:43:22 | selection of Category | main.go:42:7:43:23 | call to Sprintf | provenance | | +| main.go:48:2:48:12 | definition of RequestData [pointer, Category] | main.go:49:4:49:14 | RequestData [pointer, Category] | provenance | | +| main.go:48:2:48:12 | definition of RequestData [pointer, Category] | main.go:52:3:52:13 | RequestData [pointer, Category] | provenance | | +| main.go:49:3:49:14 | star expression [Category] | main.go:48:2:48:12 | definition of RequestData [pointer, Category] | provenance | | +| main.go:49:4:49:14 | RequestData [pointer, Category] | main.go:49:3:49:14 | star expression [Category] | provenance | | +| main.go:49:28:49:34 | selection of URL | main.go:49:28:49:42 | call to Query | provenance | | +| main.go:49:28:49:42 | call to Query | main.go:49:28:49:54 | index expression | provenance | | +| main.go:49:28:49:54 | index expression | main.go:49:3:49:14 | star expression [Category] | provenance | | +| main.go:51:7:52:23 | []type{args} [array] | main.go:51:7:52:23 | call to Sprintf | provenance | | +| main.go:51:7:52:23 | call to Sprintf | main.go:53:11:53:11 | q | provenance | | +| main.go:52:3:52:13 | RequestData [pointer, Category] | main.go:52:3:52:13 | implicit dereference [Category] | provenance | | +| main.go:52:3:52:13 | implicit dereference [Category] | main.go:52:3:52:22 | selection of Category | provenance | | +| main.go:52:3:52:22 | selection of Category | main.go:51:7:52:23 | []type{args} [array] | provenance | | +| main.go:52:3:52:22 | selection of Category | main.go:51:7:52:23 | call to Sprintf | provenance | | +| main.go:57:2:57:12 | definition of RequestData [pointer, Category] | main.go:58:4:58:14 | RequestData [pointer, Category] | provenance | | +| main.go:57:2:57:12 | definition of RequestData [pointer, Category] | main.go:61:5:61:15 | RequestData [pointer, Category] | provenance | | +| main.go:58:3:58:14 | star expression [Category] | main.go:57:2:57:12 | definition of RequestData [pointer, Category] | provenance | | +| main.go:58:4:58:14 | RequestData [pointer, Category] | main.go:58:3:58:14 | star expression [Category] | provenance | | +| main.go:58:28:58:34 | selection of URL | main.go:58:28:58:42 | call to Query | provenance | | +| main.go:58:28:58:42 | call to Query | main.go:58:28:58:54 | index expression | provenance | | +| main.go:58:28:58:54 | index expression | main.go:58:3:58:14 | star expression [Category] | provenance | | +| main.go:60:7:61:26 | []type{args} [array] | main.go:60:7:61:26 | call to Sprintf | provenance | | +| main.go:60:7:61:26 | call to Sprintf | main.go:62:11:62:11 | q | provenance | | +| main.go:61:3:61:25 | selection of Category | main.go:60:7:61:26 | []type{args} [array] | provenance | | +| main.go:61:3:61:25 | selection of Category | main.go:60:7:61:26 | call to Sprintf | provenance | | +| main.go:61:4:61:15 | star expression [Category] | main.go:61:3:61:25 | selection of Category | provenance | | +| main.go:61:5:61:15 | RequestData [pointer, Category] | main.go:61:4:61:15 | star expression [Category] | provenance | | +| mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:42:28:42:41 | untrustedInput | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:50:34:50:39 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:61:27:61:32 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:63:23:63:28 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:64:22:64:27 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:66:32:66:37 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:69:17:69:22 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:70:20:70:25 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:71:29:71:34 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:72:30:72:35 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:73:29:73:34 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:78:23:78:28 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:79:23:79:28 | filter | provenance | | +| mongoDB.go:42:19:42:42 | struct literal | mongoDB.go:80:22:80:27 | filter | provenance | | +| mongoDB.go:42:28:42:41 | untrustedInput | mongoDB.go:42:19:42:42 | struct literal | provenance | | +| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:57:22:57:29 | pipeline | provenance | | +| mongoDB.go:50:23:50:40 | struct literal | mongoDB.go:81:18:81:25 | pipeline | provenance | | +| mongoDB.go:50:34:50:39 | filter | mongoDB.go:50:23:50:40 | struct literal | provenance | | nodes | SqlInjection.go:10:7:11:30 | []type{args} [array] | semmle.label | []type{args} [array] | | SqlInjection.go:10:7:11:30 | call to Sprintf | semmle.label | call to Sprintf | diff --git a/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected b/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected index de5b7c7a833b..05147badb067 100644 --- a/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected +++ b/go/ql/test/query-tests/Security/CWE-089/StringBreak.expected @@ -1,11 +1,11 @@ edges -| StringBreak.go:10:2:10:40 | ... := ...[0] | StringBreak.go:14:47:14:57 | versionJSON | -| StringBreakMismatched.go:12:2:12:40 | ... := ...[0] | StringBreakMismatched.go:13:29:13:47 | type conversion | -| StringBreakMismatched.go:13:13:13:62 | call to Replace | StringBreakMismatched.go:17:26:17:32 | escaped | -| StringBreakMismatched.go:13:29:13:47 | type conversion | StringBreakMismatched.go:13:13:13:62 | call to Replace | -| StringBreakMismatched.go:24:2:24:40 | ... := ...[0] | StringBreakMismatched.go:25:29:25:47 | type conversion | -| StringBreakMismatched.go:25:13:25:61 | call to Replace | StringBreakMismatched.go:29:27:29:33 | escaped | -| StringBreakMismatched.go:25:29:25:47 | type conversion | StringBreakMismatched.go:25:13:25:61 | call to Replace | +| StringBreak.go:10:2:10:40 | ... := ...[0] | StringBreak.go:14:47:14:57 | versionJSON | provenance | | +| StringBreakMismatched.go:12:2:12:40 | ... := ...[0] | StringBreakMismatched.go:13:29:13:47 | type conversion | provenance | | +| StringBreakMismatched.go:13:13:13:62 | call to Replace | StringBreakMismatched.go:17:26:17:32 | escaped | provenance | | +| StringBreakMismatched.go:13:29:13:47 | type conversion | StringBreakMismatched.go:13:13:13:62 | call to Replace | provenance | | +| StringBreakMismatched.go:24:2:24:40 | ... := ...[0] | StringBreakMismatched.go:25:29:25:47 | type conversion | provenance | | +| StringBreakMismatched.go:25:13:25:61 | call to Replace | StringBreakMismatched.go:29:27:29:33 | escaped | provenance | | +| StringBreakMismatched.go:25:29:25:47 | type conversion | StringBreakMismatched.go:25:13:25:61 | call to Replace | provenance | | nodes | StringBreak.go:10:2:10:40 | ... := ...[0] | semmle.label | ... := ...[0] | | StringBreak.go:14:47:14:57 | versionJSON | semmle.label | versionJSON | diff --git a/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected index 036c11ff51e7..e139ab4f5e54 100644 --- a/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected +++ b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected @@ -1,24 +1,24 @@ edges -| AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | AllocationSizeOverflow.go:10:14:10:21 | jsonData | -| AllocationSizeOverflow.go:10:14:10:21 | jsonData | AllocationSizeOverflow.go:10:10:10:22 | call to len | -| tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:26:10:29 | data | -| tst2.go:10:26:10:29 | data | tst2.go:10:22:10:30 | call to len | -| tst2.go:14:2:14:29 | ... := ...[0] | tst2.go:15:26:15:29 | data | -| tst2.go:15:26:15:29 | data | tst2.go:15:22:15:30 | call to len | -| tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:7:26:7:33 | jsonData | -| tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:24:20:24:27 | jsonData | -| tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:32:20:32:27 | jsonData | -| tst3.go:7:26:7:33 | jsonData | tst3.go:7:22:7:34 | call to len | -| tst3.go:24:20:24:27 | jsonData | tst3.go:24:16:24:28 | call to len | -| tst3.go:32:20:32:27 | jsonData | tst3.go:32:16:32:28 | call to len | -| tst.go:14:2:14:30 | ... = ...[0] | tst.go:15:26:15:33 | jsonData | -| tst.go:15:26:15:33 | jsonData | tst.go:15:22:15:34 | call to len | -| tst.go:20:2:20:31 | ... = ...[0] | tst.go:21:26:21:33 | jsonData | -| tst.go:21:26:21:33 | jsonData | tst.go:21:22:21:34 | call to len | -| tst.go:26:2:26:31 | ... = ...[0] | tst.go:27:30:27:37 | jsonData | -| tst.go:27:30:27:37 | jsonData | tst.go:27:26:27:38 | call to len | -| tst.go:34:2:34:30 | ... = ...[0] | tst.go:35:26:35:33 | jsonData | -| tst.go:35:26:35:33 | jsonData | tst.go:35:22:35:34 | call to len | +| AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | AllocationSizeOverflow.go:10:14:10:21 | jsonData | provenance | | +| AllocationSizeOverflow.go:10:14:10:21 | jsonData | AllocationSizeOverflow.go:10:10:10:22 | call to len | provenance | | +| tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:26:10:29 | data | provenance | | +| tst2.go:10:26:10:29 | data | tst2.go:10:22:10:30 | call to len | provenance | | +| tst2.go:14:2:14:29 | ... := ...[0] | tst2.go:15:26:15:29 | data | provenance | | +| tst2.go:15:26:15:29 | data | tst2.go:15:22:15:30 | call to len | provenance | | +| tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:7:26:7:33 | jsonData | provenance | | +| tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:24:20:24:27 | jsonData | provenance | | +| tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:32:20:32:27 | jsonData | provenance | | +| tst3.go:7:26:7:33 | jsonData | tst3.go:7:22:7:34 | call to len | provenance | | +| tst3.go:24:20:24:27 | jsonData | tst3.go:24:16:24:28 | call to len | provenance | | +| tst3.go:32:20:32:27 | jsonData | tst3.go:32:16:32:28 | call to len | provenance | | +| tst.go:14:2:14:30 | ... = ...[0] | tst.go:15:26:15:33 | jsonData | provenance | | +| tst.go:15:26:15:33 | jsonData | tst.go:15:22:15:34 | call to len | provenance | | +| tst.go:20:2:20:31 | ... = ...[0] | tst.go:21:26:21:33 | jsonData | provenance | | +| tst.go:21:26:21:33 | jsonData | tst.go:21:22:21:34 | call to len | provenance | | +| tst.go:26:2:26:31 | ... = ...[0] | tst.go:27:30:27:37 | jsonData | provenance | | +| tst.go:27:30:27:37 | jsonData | tst.go:27:26:27:38 | call to len | provenance | | +| tst.go:34:2:34:30 | ... = ...[0] | tst.go:35:26:35:33 | jsonData | provenance | | +| tst.go:35:26:35:33 | jsonData | tst.go:35:22:35:34 | call to len | provenance | | nodes | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | semmle.label | ... := ...[0] | | AllocationSizeOverflow.go:10:10:10:22 | call to len | semmle.label | call to len | diff --git a/go/ql/test/query-tests/Security/CWE-209/StackTraceExposure.expected b/go/ql/test/query-tests/Security/CWE-209/StackTraceExposure.expected index 99042f7a497c..c62c6126648c 100644 --- a/go/ql/test/query-tests/Security/CWE-209/StackTraceExposure.expected +++ b/go/ql/test/query-tests/Security/CWE-209/StackTraceExposure.expected @@ -1,5 +1,5 @@ edges -| test.go:14:2:14:4 | definition of buf | test.go:17:10:17:12 | buf | +| test.go:14:2:14:4 | definition of buf | test.go:17:10:17:12 | buf | provenance | | nodes | test.go:14:2:14:4 | definition of buf | semmle.label | definition of buf | | test.go:17:10:17:12 | buf | semmle.label | buf | diff --git a/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected b/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected index c58d2d26d5e7..98daffabbaf8 100644 --- a/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected +++ b/go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected @@ -1,56 +1,56 @@ edges -| klog.go:20:3:25:3 | range statement[1] | klog.go:20:13:20:19 | definition of headers | -| klog.go:20:13:20:19 | definition of headers | klog.go:21:27:21:33 | headers | -| klog.go:20:30:20:37 | selection of Header | klog.go:20:3:25:3 | range statement[1] | -| klog.go:21:4:24:4 | range statement[1] | klog.go:21:11:21:16 | definition of header | -| klog.go:21:11:21:16 | definition of header | klog.go:22:15:22:20 | header | -| klog.go:21:27:21:33 | headers | klog.go:21:4:24:4 | range statement[1] | -| klog.go:28:13:28:20 | selection of Header | klog.go:28:13:28:41 | call to Get | -| overrides.go:9:9:9:16 | password | overrides.go:13:14:13:23 | call to String | -| passwords.go:8:12:8:12 | definition of x | passwords.go:9:14:9:14 | x | -| passwords.go:30:8:30:15 | password | passwords.go:8:12:8:12 | definition of x | -| passwords.go:34:28:34:35 | password | passwords.go:34:14:34:35 | ...+... | -| passwords.go:36:2:36:5 | definition of obj1 | passwords.go:39:14:39:17 | obj1 | -| passwords.go:36:10:38:2 | struct literal | passwords.go:36:2:36:5 | definition of obj1 | -| passwords.go:37:13:37:13 | x | passwords.go:36:10:38:2 | struct literal | -| passwords.go:41:2:41:5 | definition of obj2 | passwords.go:44:14:44:17 | obj2 | -| passwords.go:41:10:43:2 | struct literal | passwords.go:41:2:41:5 | definition of obj2 | -| passwords.go:42:6:42:13 | password | passwords.go:41:10:43:2 | struct literal | -| passwords.go:46:6:46:9 | definition of obj3 | passwords.go:47:14:47:17 | obj3 | -| passwords.go:48:11:48:18 | password | passwords.go:46:6:46:9 | definition of obj3 | -| passwords.go:85:2:85:14 | definition of utilityObject | passwords.go:88:14:88:26 | utilityObject | -| passwords.go:85:19:87:2 | struct literal | passwords.go:85:2:85:14 | definition of utilityObject | -| passwords.go:86:16:86:36 | call to make | passwords.go:85:19:87:2 | struct literal | -| passwords.go:90:2:90:7 | definition of secret | passwords.go:91:23:91:28 | secret | -| passwords.go:90:12:90:19 | password | passwords.go:90:2:90:7 | definition of secret | -| passwords.go:101:33:101:40 | password | passwords.go:101:15:101:40 | ...+... | -| passwords.go:107:34:107:41 | password | passwords.go:107:16:107:41 | ...+... | -| passwords.go:112:33:112:40 | password | passwords.go:112:15:112:40 | ...+... | -| passwords.go:116:28:116:36 | password1 | passwords.go:116:28:116:45 | call to String | -| passwords.go:116:28:116:45 | call to String | passwords.go:116:14:116:45 | ...+... | -| passwords.go:118:2:118:7 | definition of config | passwords.go:125:14:125:19 | config | -| passwords.go:118:2:118:7 | definition of config [x] | passwords.go:126:14:126:19 | config [x] | -| passwords.go:118:2:118:7 | definition of config [y] | passwords.go:127:14:127:19 | config [y] | -| passwords.go:118:12:123:2 | struct literal | passwords.go:118:2:118:7 | definition of config | -| passwords.go:118:12:123:2 | struct literal [x] | passwords.go:118:2:118:7 | definition of config [x] | -| passwords.go:118:12:123:2 | struct literal [y] | passwords.go:118:2:118:7 | definition of config [y] | -| passwords.go:119:13:119:13 | x | passwords.go:118:12:123:2 | struct literal | -| passwords.go:121:13:121:20 | password | passwords.go:118:12:123:2 | struct literal | -| passwords.go:121:13:121:20 | password | passwords.go:118:12:123:2 | struct literal [x] | -| passwords.go:122:13:122:25 | call to getPassword | passwords.go:118:12:123:2 | struct literal | -| passwords.go:122:13:122:25 | call to getPassword | passwords.go:118:12:123:2 | struct literal [y] | -| passwords.go:126:14:126:19 | config [x] | passwords.go:126:14:126:21 | selection of x | -| passwords.go:127:14:127:19 | config [y] | passwords.go:127:14:127:21 | selection of y | -| protobuf.go:11:2:11:6 | definition of query [pointer, Description] | protobuf.go:12:2:12:6 | query [pointer, Description] | -| protobuf.go:11:2:11:6 | definition of query [pointer, Description] | protobuf.go:14:14:14:18 | query [pointer, Description] | -| protobuf.go:12:2:12:6 | implicit dereference [Description] | protobuf.go:11:2:11:6 | definition of query [pointer, Description] | -| protobuf.go:12:2:12:6 | query [pointer, Description] | protobuf.go:12:2:12:6 | implicit dereference [Description] | -| protobuf.go:12:22:12:29 | password | protobuf.go:12:2:12:6 | implicit dereference [Description] | -| protobuf.go:14:14:14:18 | query [pointer, Description] | protobuf.go:14:14:14:35 | call to GetDescription | -| protobuf.go:14:14:14:18 | query [pointer, Description] | protos/query/query.pb.go:117:7:117:7 | definition of x [pointer, Description] | -| protos/query/query.pb.go:117:7:117:7 | definition of x [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | -| protos/query/query.pb.go:119:10:119:10 | implicit dereference [Description] | protos/query/query.pb.go:119:10:119:22 | selection of Description | -| protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | implicit dereference [Description] | +| klog.go:20:3:25:3 | range statement[1] | klog.go:20:13:20:19 | definition of headers | provenance | | +| klog.go:20:13:20:19 | definition of headers | klog.go:21:27:21:33 | headers | provenance | | +| klog.go:20:30:20:37 | selection of Header | klog.go:20:3:25:3 | range statement[1] | provenance | | +| klog.go:21:4:24:4 | range statement[1] | klog.go:21:11:21:16 | definition of header | provenance | | +| klog.go:21:11:21:16 | definition of header | klog.go:22:15:22:20 | header | provenance | | +| klog.go:21:27:21:33 | headers | klog.go:21:4:24:4 | range statement[1] | provenance | | +| klog.go:28:13:28:20 | selection of Header | klog.go:28:13:28:41 | call to Get | provenance | | +| overrides.go:9:9:9:16 | password | overrides.go:13:14:13:23 | call to String | provenance | | +| passwords.go:8:12:8:12 | definition of x | passwords.go:9:14:9:14 | x | provenance | | +| passwords.go:30:8:30:15 | password | passwords.go:8:12:8:12 | definition of x | provenance | | +| passwords.go:34:28:34:35 | password | passwords.go:34:14:34:35 | ...+... | provenance | | +| passwords.go:36:2:36:5 | definition of obj1 | passwords.go:39:14:39:17 | obj1 | provenance | | +| passwords.go:36:10:38:2 | struct literal | passwords.go:36:2:36:5 | definition of obj1 | provenance | | +| passwords.go:37:13:37:13 | x | passwords.go:36:10:38:2 | struct literal | provenance | | +| passwords.go:41:2:41:5 | definition of obj2 | passwords.go:44:14:44:17 | obj2 | provenance | | +| passwords.go:41:10:43:2 | struct literal | passwords.go:41:2:41:5 | definition of obj2 | provenance | | +| passwords.go:42:6:42:13 | password | passwords.go:41:10:43:2 | struct literal | provenance | | +| passwords.go:46:6:46:9 | definition of obj3 | passwords.go:47:14:47:17 | obj3 | provenance | | +| passwords.go:48:11:48:18 | password | passwords.go:46:6:46:9 | definition of obj3 | provenance | | +| passwords.go:85:2:85:14 | definition of utilityObject | passwords.go:88:14:88:26 | utilityObject | provenance | | +| passwords.go:85:19:87:2 | struct literal | passwords.go:85:2:85:14 | definition of utilityObject | provenance | | +| passwords.go:86:16:86:36 | call to make | passwords.go:85:19:87:2 | struct literal | provenance | | +| passwords.go:90:2:90:7 | definition of secret | passwords.go:91:23:91:28 | secret | provenance | | +| passwords.go:90:12:90:19 | password | passwords.go:90:2:90:7 | definition of secret | provenance | | +| passwords.go:101:33:101:40 | password | passwords.go:101:15:101:40 | ...+... | provenance | | +| passwords.go:107:34:107:41 | password | passwords.go:107:16:107:41 | ...+... | provenance | | +| passwords.go:112:33:112:40 | password | passwords.go:112:15:112:40 | ...+... | provenance | | +| passwords.go:116:28:116:36 | password1 | passwords.go:116:28:116:45 | call to String | provenance | | +| passwords.go:116:28:116:45 | call to String | passwords.go:116:14:116:45 | ...+... | provenance | | +| passwords.go:118:2:118:7 | definition of config | passwords.go:125:14:125:19 | config | provenance | | +| passwords.go:118:2:118:7 | definition of config [x] | passwords.go:126:14:126:19 | config [x] | provenance | | +| passwords.go:118:2:118:7 | definition of config [y] | passwords.go:127:14:127:19 | config [y] | provenance | | +| passwords.go:118:12:123:2 | struct literal | passwords.go:118:2:118:7 | definition of config | provenance | | +| passwords.go:118:12:123:2 | struct literal [x] | passwords.go:118:2:118:7 | definition of config [x] | provenance | | +| passwords.go:118:12:123:2 | struct literal [y] | passwords.go:118:2:118:7 | definition of config [y] | provenance | | +| passwords.go:119:13:119:13 | x | passwords.go:118:12:123:2 | struct literal | provenance | | +| passwords.go:121:13:121:20 | password | passwords.go:118:12:123:2 | struct literal | provenance | | +| passwords.go:121:13:121:20 | password | passwords.go:118:12:123:2 | struct literal [x] | provenance | | +| passwords.go:122:13:122:25 | call to getPassword | passwords.go:118:12:123:2 | struct literal | provenance | | +| passwords.go:122:13:122:25 | call to getPassword | passwords.go:118:12:123:2 | struct literal [y] | provenance | | +| passwords.go:126:14:126:19 | config [x] | passwords.go:126:14:126:21 | selection of x | provenance | | +| passwords.go:127:14:127:19 | config [y] | passwords.go:127:14:127:21 | selection of y | provenance | | +| protobuf.go:11:2:11:6 | definition of query [pointer, Description] | protobuf.go:12:2:12:6 | query [pointer, Description] | provenance | | +| protobuf.go:11:2:11:6 | definition of query [pointer, Description] | protobuf.go:14:14:14:18 | query [pointer, Description] | provenance | | +| protobuf.go:12:2:12:6 | implicit dereference [Description] | protobuf.go:11:2:11:6 | definition of query [pointer, Description] | provenance | | +| protobuf.go:12:2:12:6 | query [pointer, Description] | protobuf.go:12:2:12:6 | implicit dereference [Description] | provenance | | +| protobuf.go:12:22:12:29 | password | protobuf.go:12:2:12:6 | implicit dereference [Description] | provenance | | +| protobuf.go:14:14:14:18 | query [pointer, Description] | protobuf.go:14:14:14:35 | call to GetDescription | provenance | | +| protobuf.go:14:14:14:18 | query [pointer, Description] | protos/query/query.pb.go:117:7:117:7 | definition of x [pointer, Description] | provenance | | +| protos/query/query.pb.go:117:7:117:7 | definition of x [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | provenance | | +| protos/query/query.pb.go:119:10:119:10 | implicit dereference [Description] | protos/query/query.pb.go:119:10:119:22 | selection of Description | provenance | | +| protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | implicit dereference [Description] | provenance | | nodes | klog.go:20:3:25:3 | range statement[1] | semmle.label | range statement[1] | | klog.go:20:13:20:19 | definition of headers | semmle.label | definition of headers | diff --git a/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected b/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected index 2376ab7a7cf4..b81d24f26654 100644 --- a/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected +++ b/go/ql/test/query-tests/Security/CWE-322/InsecureHostKeyCallback.expected @@ -1,20 +1,20 @@ edges -| InsecureHostKeyCallbackExample.go:16:4:18:4 | function literal | InsecureHostKeyCallbackExample.go:15:20:18:5 | type conversion | -| InsecureHostKeyCallbackExample.go:31:14:34:4 | type conversion | InsecureHostKeyCallbackExample.go:39:20:39:27 | callback | -| InsecureHostKeyCallbackExample.go:32:3:34:3 | function literal | InsecureHostKeyCallbackExample.go:31:14:34:4 | type conversion | -| InsecureHostKeyCallbackExample.go:45:3:47:3 | function literal | InsecureHostKeyCallbackExample.go:52:20:52:48 | type conversion | -| InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | InsecureHostKeyCallbackExample.go:62:20:62:27 | callback | -| InsecureHostKeyCallbackExample.go:68:48:68:55 | definition of callback | InsecureHostKeyCallbackExample.go:78:28:78:35 | callback | -| InsecureHostKeyCallbackExample.go:94:3:94:43 | ... := ...[0] | InsecureHostKeyCallbackExample.go:95:28:95:35 | callback | -| InsecureHostKeyCallbackExample.go:102:22:105:4 | type conversion | InsecureHostKeyCallbackExample.go:107:35:107:50 | insecureCallback | -| InsecureHostKeyCallbackExample.go:103:3:105:3 | function literal | InsecureHostKeyCallbackExample.go:102:22:105:4 | type conversion | -| InsecureHostKeyCallbackExample.go:107:35:107:50 | insecureCallback | InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | -| InsecureHostKeyCallbackExample.go:109:31:115:4 | type conversion | InsecureHostKeyCallbackExample.go:117:35:117:59 | potentiallySecureCallback | -| InsecureHostKeyCallbackExample.go:109:31:115:4 | type conversion | InsecureHostKeyCallbackExample.go:120:44:120:68 | potentiallySecureCallback | -| InsecureHostKeyCallbackExample.go:110:3:115:3 | function literal | InsecureHostKeyCallbackExample.go:109:31:115:4 | type conversion | -| InsecureHostKeyCallbackExample.go:117:35:117:59 | potentiallySecureCallback | InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | -| InsecureHostKeyCallbackExample.go:118:35:118:61 | call to InsecureIgnoreHostKey | InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | -| InsecureHostKeyCallbackExample.go:120:44:120:68 | potentiallySecureCallback | InsecureHostKeyCallbackExample.go:68:48:68:55 | definition of callback | +| InsecureHostKeyCallbackExample.go:16:4:18:4 | function literal | InsecureHostKeyCallbackExample.go:15:20:18:5 | type conversion | provenance | | +| InsecureHostKeyCallbackExample.go:31:14:34:4 | type conversion | InsecureHostKeyCallbackExample.go:39:20:39:27 | callback | provenance | | +| InsecureHostKeyCallbackExample.go:32:3:34:3 | function literal | InsecureHostKeyCallbackExample.go:31:14:34:4 | type conversion | provenance | | +| InsecureHostKeyCallbackExample.go:45:3:47:3 | function literal | InsecureHostKeyCallbackExample.go:52:20:52:48 | type conversion | provenance | | +| InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | InsecureHostKeyCallbackExample.go:62:20:62:27 | callback | provenance | | +| InsecureHostKeyCallbackExample.go:68:48:68:55 | definition of callback | InsecureHostKeyCallbackExample.go:78:28:78:35 | callback | provenance | | +| InsecureHostKeyCallbackExample.go:94:3:94:43 | ... := ...[0] | InsecureHostKeyCallbackExample.go:95:28:95:35 | callback | provenance | | +| InsecureHostKeyCallbackExample.go:102:22:105:4 | type conversion | InsecureHostKeyCallbackExample.go:107:35:107:50 | insecureCallback | provenance | | +| InsecureHostKeyCallbackExample.go:103:3:105:3 | function literal | InsecureHostKeyCallbackExample.go:102:22:105:4 | type conversion | provenance | | +| InsecureHostKeyCallbackExample.go:107:35:107:50 | insecureCallback | InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | provenance | | +| InsecureHostKeyCallbackExample.go:109:31:115:4 | type conversion | InsecureHostKeyCallbackExample.go:117:35:117:59 | potentiallySecureCallback | provenance | | +| InsecureHostKeyCallbackExample.go:109:31:115:4 | type conversion | InsecureHostKeyCallbackExample.go:120:44:120:68 | potentiallySecureCallback | provenance | | +| InsecureHostKeyCallbackExample.go:110:3:115:3 | function literal | InsecureHostKeyCallbackExample.go:109:31:115:4 | type conversion | provenance | | +| InsecureHostKeyCallbackExample.go:117:35:117:59 | potentiallySecureCallback | InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | provenance | | +| InsecureHostKeyCallbackExample.go:118:35:118:61 | call to InsecureIgnoreHostKey | InsecureHostKeyCallbackExample.go:58:39:58:46 | definition of callback | provenance | | +| InsecureHostKeyCallbackExample.go:120:44:120:68 | potentiallySecureCallback | InsecureHostKeyCallbackExample.go:68:48:68:55 | definition of callback | provenance | | nodes | InsecureHostKeyCallbackExample.go:15:20:18:5 | type conversion | semmle.label | type conversion | | InsecureHostKeyCallbackExample.go:16:4:18:4 | function literal | semmle.label | function literal | diff --git a/go/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected b/go/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected index fb1058af01ce..556b1722b59b 100644 --- a/go/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected +++ b/go/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected @@ -1,10 +1,10 @@ edges -| InsufficientKeySize.go:13:10:13:13 | 1024 | InsufficientKeySize.go:14:31:14:34 | size | -| InsufficientKeySize.go:18:7:18:10 | 1024 | InsufficientKeySize.go:25:11:25:14 | definition of size | -| InsufficientKeySize.go:25:11:25:14 | definition of size | InsufficientKeySize.go:26:31:26:34 | size | -| InsufficientKeySize.go:30:13:30:16 | 1024 | InsufficientKeySize.go:32:32:32:38 | keyBits | -| InsufficientKeySize.go:44:13:44:16 | 1024 | InsufficientKeySize.go:47:32:47:38 | keyBits | -| InsufficientKeySize.go:61:21:61:24 | 1024 | InsufficientKeySize.go:67:31:67:37 | keyBits | +| InsufficientKeySize.go:13:10:13:13 | 1024 | InsufficientKeySize.go:14:31:14:34 | size | provenance | | +| InsufficientKeySize.go:18:7:18:10 | 1024 | InsufficientKeySize.go:25:11:25:14 | definition of size | provenance | | +| InsufficientKeySize.go:25:11:25:14 | definition of size | InsufficientKeySize.go:26:31:26:34 | size | provenance | | +| InsufficientKeySize.go:30:13:30:16 | 1024 | InsufficientKeySize.go:32:32:32:38 | keyBits | provenance | | +| InsufficientKeySize.go:44:13:44:16 | 1024 | InsufficientKeySize.go:47:32:47:38 | keyBits | provenance | | +| InsufficientKeySize.go:61:21:61:24 | 1024 | InsufficientKeySize.go:67:31:67:37 | keyBits | provenance | | nodes | InsufficientKeySize.go:9:31:9:34 | 1024 | semmle.label | 1024 | | InsufficientKeySize.go:13:10:13:13 | 1024 | semmle.label | 1024 | diff --git a/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected b/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected index e47a47684655..c0dc967a16f1 100644 --- a/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected +++ b/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected @@ -1,44 +1,44 @@ edges -| UnsafeTLS.go:131:14:131:29 | selection of VersionTLS13 | UnsafeTLS.go:136:16:136:22 | version | -| UnsafeTLS.go:133:14:133:29 | selection of VersionSSL30 | UnsafeTLS.go:136:16:136:22 | version | -| UnsafeTLS.go:260:5:260:32 | selection of TLS_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:259:18:266:4 | slice literal | -| UnsafeTLS.go:261:5:261:39 | selection of TLS_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:259:18:266:4 | slice literal | -| UnsafeTLS.go:262:5:262:40 | selection of TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | UnsafeTLS.go:259:18:266:4 | slice literal | -| UnsafeTLS.go:263:5:263:38 | selection of TLS_ECDHE_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:259:18:266:4 | slice literal | -| UnsafeTLS.go:264:5:264:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:259:18:266:4 | slice literal | -| UnsafeTLS.go:265:5:265:45 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:259:18:266:4 | slice literal | -| UnsafeTLS.go:273:5:273:32 | selection of TLS_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:272:18:274:4 | slice literal | -| UnsafeTLS.go:281:5:281:39 | selection of TLS_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:280:18:282:4 | slice literal | -| UnsafeTLS.go:289:5:289:40 | selection of TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | UnsafeTLS.go:288:18:290:4 | slice literal | -| UnsafeTLS.go:297:5:297:38 | selection of TLS_ECDHE_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:296:18:298:4 | slice literal | -| UnsafeTLS.go:305:5:305:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:304:18:306:4 | slice literal | -| UnsafeTLS.go:313:5:313:45 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:312:18:314:4 | slice literal | -| UnsafeTLS.go:329:53:329:93 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:329:25:329:94 | call to append | -| UnsafeTLS.go:334:13:334:38 | call to InsecureCipherSuites | UnsafeTLS.go:336:54:336:57 | selection of ID | -| UnsafeTLS.go:336:54:336:57 | selection of ID | UnsafeTLS.go:336:26:336:58 | call to append | -| UnsafeTLS.go:342:13:342:38 | call to InsecureCipherSuites | UnsafeTLS.go:344:40:344:43 | selection of ID | -| UnsafeTLS.go:344:19:344:44 | call to append | UnsafeTLS.go:344:26:344:37 | cipherSuites | -| UnsafeTLS.go:344:19:344:44 | call to append | UnsafeTLS.go:346:25:346:36 | cipherSuites | -| UnsafeTLS.go:344:26:344:37 | cipherSuites | UnsafeTLS.go:344:19:344:44 | call to append | -| UnsafeTLS.go:344:40:344:43 | selection of ID | UnsafeTLS.go:344:19:344:44 | call to append | -| UnsafeTLS.go:351:13:351:38 | call to InsecureCipherSuites | UnsafeTLS.go:353:40:353:51 | selection of ID | -| UnsafeTLS.go:353:19:353:52 | call to append | UnsafeTLS.go:353:26:353:37 | cipherSuites | -| UnsafeTLS.go:353:19:353:52 | call to append | UnsafeTLS.go:355:25:355:36 | cipherSuites | -| UnsafeTLS.go:353:26:353:37 | cipherSuites | UnsafeTLS.go:353:19:353:52 | call to append | -| UnsafeTLS.go:353:40:353:51 | selection of ID | UnsafeTLS.go:353:19:353:52 | call to append | -| UnsafeTLS.go:363:5:363:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:362:18:364:4 | slice literal | -| UnsafeTLS.go:371:5:371:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:370:18:372:4 | slice literal | -| UnsafeTLS.go:379:5:379:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:378:18:380:4 | slice literal | -| UnsafeTLS.go:387:5:387:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:386:18:388:4 | slice literal | -| UnsafeTLS.go:395:5:395:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:394:18:396:4 | slice literal | -| UnsafeTLS.go:403:4:403:46 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:402:33:404:3 | slice literal | -| UnsafeTLS.go:410:4:410:46 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:409:31:411:3 | slice literal | -| UnsafeTLS.go:419:6:419:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:418:19:420:5 | slice literal | -| UnsafeTLS.go:426:6:426:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:425:19:427:5 | slice literal | -| UnsafeTLS.go:433:6:433:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:432:19:434:5 | slice literal | -| UnsafeTLS.go:443:6:443:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:442:19:444:5 | slice literal | -| UnsafeTLS.go:450:6:450:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:449:19:451:5 | slice literal | -| UnsafeTLS.go:457:6:457:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:456:19:458:5 | slice literal | +| UnsafeTLS.go:131:14:131:29 | selection of VersionTLS13 | UnsafeTLS.go:136:16:136:22 | version | provenance | | +| UnsafeTLS.go:133:14:133:29 | selection of VersionSSL30 | UnsafeTLS.go:136:16:136:22 | version | provenance | | +| UnsafeTLS.go:260:5:260:32 | selection of TLS_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:259:18:266:4 | slice literal | provenance | | +| UnsafeTLS.go:261:5:261:39 | selection of TLS_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:259:18:266:4 | slice literal | provenance | | +| UnsafeTLS.go:262:5:262:40 | selection of TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | UnsafeTLS.go:259:18:266:4 | slice literal | provenance | | +| UnsafeTLS.go:263:5:263:38 | selection of TLS_ECDHE_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:259:18:266:4 | slice literal | provenance | | +| UnsafeTLS.go:264:5:264:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:259:18:266:4 | slice literal | provenance | | +| UnsafeTLS.go:265:5:265:45 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:259:18:266:4 | slice literal | provenance | | +| UnsafeTLS.go:273:5:273:32 | selection of TLS_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:272:18:274:4 | slice literal | provenance | | +| UnsafeTLS.go:281:5:281:39 | selection of TLS_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:280:18:282:4 | slice literal | provenance | | +| UnsafeTLS.go:289:5:289:40 | selection of TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | UnsafeTLS.go:288:18:290:4 | slice literal | provenance | | +| UnsafeTLS.go:297:5:297:38 | selection of TLS_ECDHE_RSA_WITH_RC4_128_SHA | UnsafeTLS.go:296:18:298:4 | slice literal | provenance | | +| UnsafeTLS.go:305:5:305:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:304:18:306:4 | slice literal | provenance | | +| UnsafeTLS.go:313:5:313:45 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:312:18:314:4 | slice literal | provenance | | +| UnsafeTLS.go:329:53:329:93 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:329:25:329:94 | call to append | provenance | | +| UnsafeTLS.go:334:13:334:38 | call to InsecureCipherSuites | UnsafeTLS.go:336:54:336:57 | selection of ID | provenance | | +| UnsafeTLS.go:336:54:336:57 | selection of ID | UnsafeTLS.go:336:26:336:58 | call to append | provenance | | +| UnsafeTLS.go:342:13:342:38 | call to InsecureCipherSuites | UnsafeTLS.go:344:40:344:43 | selection of ID | provenance | | +| UnsafeTLS.go:344:19:344:44 | call to append | UnsafeTLS.go:344:26:344:37 | cipherSuites | provenance | | +| UnsafeTLS.go:344:19:344:44 | call to append | UnsafeTLS.go:346:25:346:36 | cipherSuites | provenance | | +| UnsafeTLS.go:344:26:344:37 | cipherSuites | UnsafeTLS.go:344:19:344:44 | call to append | provenance | | +| UnsafeTLS.go:344:40:344:43 | selection of ID | UnsafeTLS.go:344:19:344:44 | call to append | provenance | | +| UnsafeTLS.go:351:13:351:38 | call to InsecureCipherSuites | UnsafeTLS.go:353:40:353:51 | selection of ID | provenance | | +| UnsafeTLS.go:353:19:353:52 | call to append | UnsafeTLS.go:353:26:353:37 | cipherSuites | provenance | | +| UnsafeTLS.go:353:19:353:52 | call to append | UnsafeTLS.go:355:25:355:36 | cipherSuites | provenance | | +| UnsafeTLS.go:353:26:353:37 | cipherSuites | UnsafeTLS.go:353:19:353:52 | call to append | provenance | | +| UnsafeTLS.go:353:40:353:51 | selection of ID | UnsafeTLS.go:353:19:353:52 | call to append | provenance | | +| UnsafeTLS.go:363:5:363:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:362:18:364:4 | slice literal | provenance | | +| UnsafeTLS.go:371:5:371:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:370:18:372:4 | slice literal | provenance | | +| UnsafeTLS.go:379:5:379:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:378:18:380:4 | slice literal | provenance | | +| UnsafeTLS.go:387:5:387:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:386:18:388:4 | slice literal | provenance | | +| UnsafeTLS.go:395:5:395:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:394:18:396:4 | slice literal | provenance | | +| UnsafeTLS.go:403:4:403:46 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:402:33:404:3 | slice literal | provenance | | +| UnsafeTLS.go:410:4:410:46 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:409:31:411:3 | slice literal | provenance | | +| UnsafeTLS.go:419:6:419:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:418:19:420:5 | slice literal | provenance | | +| UnsafeTLS.go:426:6:426:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:425:19:427:5 | slice literal | provenance | | +| UnsafeTLS.go:433:6:433:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:432:19:434:5 | slice literal | provenance | | +| UnsafeTLS.go:443:6:443:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:442:19:444:5 | slice literal | provenance | | +| UnsafeTLS.go:450:6:450:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:449:19:451:5 | slice literal | provenance | | +| UnsafeTLS.go:457:6:457:48 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:456:19:458:5 | slice literal | provenance | | nodes | UnsafeTLS.go:21:23:21:23 | 0 | semmle.label | 0 | | UnsafeTLS.go:25:23:25:23 | 0 | semmle.label | 0 | diff --git a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected b/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected index a107cd75df01..53cfd40145d3 100644 --- a/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected +++ b/go/ql/test/query-tests/Security/CWE-327/WeakCryptoAlgorithm.expected @@ -1,8 +1,8 @@ edges -| Crypto.go:16:9:16:16 | password | Crypto.go:19:25:19:27 | buf | -| Crypto.go:16:9:16:16 | password | Crypto.go:22:10:22:12 | buf | -| Crypto.go:16:9:16:16 | password | Crypto.go:25:16:25:18 | buf | -| Crypto.go:16:9:16:16 | password | Crypto.go:28:11:28:13 | buf | +| Crypto.go:16:9:16:16 | password | Crypto.go:19:25:19:27 | buf | provenance | | +| Crypto.go:16:9:16:16 | password | Crypto.go:22:10:22:12 | buf | provenance | | +| Crypto.go:16:9:16:16 | password | Crypto.go:25:16:25:18 | buf | provenance | | +| Crypto.go:16:9:16:16 | password | Crypto.go:28:11:28:13 | buf | provenance | | nodes | Crypto.go:16:9:16:16 | password | semmle.label | password | | Crypto.go:19:25:19:27 | buf | semmle.label | buf | diff --git a/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected b/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected index 2ba01cedce0f..2e92d105daae 100644 --- a/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected +++ b/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected @@ -1,19 +1,19 @@ edges -| sample.go:15:10:15:64 | call to Sum256 | sample.go:16:9:16:15 | slice expression | -| sample.go:15:24:15:63 | type conversion | sample.go:15:10:15:64 | call to Sum256 | -| sample.go:15:31:15:62 | []type{args} [array] | sample.go:15:31:15:62 | call to Sprintf | -| sample.go:15:31:15:62 | call to Sprintf | sample.go:15:24:15:63 | type conversion | -| sample.go:15:49:15:61 | call to Uint32 | sample.go:15:31:15:62 | []type{args} [array] | -| sample.go:15:49:15:61 | call to Uint32 | sample.go:15:31:15:62 | call to Sprintf | -| sample.go:16:9:16:15 | slice expression | sample.go:26:25:26:30 | call to Guid | -| sample.go:33:2:33:6 | definition of nonce | sample.go:37:25:37:29 | nonce | -| sample.go:33:2:33:6 | definition of nonce | sample.go:37:32:37:36 | nonce | -| sample.go:34:12:34:40 | call to New | sample.go:35:14:35:19 | random | -| sample.go:35:14:35:19 | random | sample.go:33:2:33:6 | definition of nonce | -| sample.go:55:17:55:42 | call to Intn | sample.go:56:29:56:38 | randNumber | -| sample.go:56:11:56:40 | type conversion | sample.go:58:32:58:43 | type conversion | -| sample.go:56:18:56:39 | index expression | sample.go:56:11:56:40 | type conversion | -| sample.go:56:29:56:38 | randNumber | sample.go:56:18:56:39 | index expression | +| sample.go:15:10:15:64 | call to Sum256 | sample.go:16:9:16:15 | slice expression | provenance | | +| sample.go:15:24:15:63 | type conversion | sample.go:15:10:15:64 | call to Sum256 | provenance | | +| sample.go:15:31:15:62 | []type{args} [array] | sample.go:15:31:15:62 | call to Sprintf | provenance | | +| sample.go:15:31:15:62 | call to Sprintf | sample.go:15:24:15:63 | type conversion | provenance | | +| sample.go:15:49:15:61 | call to Uint32 | sample.go:15:31:15:62 | []type{args} [array] | provenance | | +| sample.go:15:49:15:61 | call to Uint32 | sample.go:15:31:15:62 | call to Sprintf | provenance | | +| sample.go:16:9:16:15 | slice expression | sample.go:26:25:26:30 | call to Guid | provenance | | +| sample.go:33:2:33:6 | definition of nonce | sample.go:37:25:37:29 | nonce | provenance | | +| sample.go:33:2:33:6 | definition of nonce | sample.go:37:32:37:36 | nonce | provenance | | +| sample.go:34:12:34:40 | call to New | sample.go:35:14:35:19 | random | provenance | | +| sample.go:35:14:35:19 | random | sample.go:33:2:33:6 | definition of nonce | provenance | | +| sample.go:55:17:55:42 | call to Intn | sample.go:56:29:56:38 | randNumber | provenance | | +| sample.go:56:11:56:40 | type conversion | sample.go:58:32:58:43 | type conversion | provenance | | +| sample.go:56:18:56:39 | index expression | sample.go:56:11:56:40 | type conversion | provenance | | +| sample.go:56:29:56:38 | randNumber | sample.go:56:18:56:39 | index expression | provenance | | nodes | InsecureRandomness.go:12:18:12:40 | call to Intn | semmle.label | call to Intn | | sample.go:15:10:15:64 | call to Sum256 | semmle.label | call to Sum256 | diff --git a/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected b/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected index 9ef4c6d850ed..d1c82f01713f 100644 --- a/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected +++ b/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected @@ -1,16 +1,16 @@ edges -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:50:26:50:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:147:26:147:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:169:26:169:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:191:26:191:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:210:26:210:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:232:26:232:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:249:26:249:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:266:26:266:41 | stateStringConst | -| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:282:26:282:41 | stateStringConst | -| ConstantOauth2State.go:22:22:22:28 | "state" | ConstantOauth2State.go:65:26:65:39 | stateStringVar | -| ConstantOauth2State.go:80:11:80:25 | call to newFixedState | ConstantOauth2State.go:81:26:81:30 | state | -| ConstantOauth2State.go:86:9:86:15 | "state" | ConstantOauth2State.go:80:11:80:25 | call to newFixedState | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:50:26:50:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:147:26:147:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:169:26:169:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:191:26:191:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:210:26:210:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:232:26:232:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:249:26:249:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:266:26:266:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:20:26:20:32 | "state" | ConstantOauth2State.go:282:26:282:41 | stateStringConst | provenance | | +| ConstantOauth2State.go:22:22:22:28 | "state" | ConstantOauth2State.go:65:26:65:39 | stateStringVar | provenance | | +| ConstantOauth2State.go:80:11:80:25 | call to newFixedState | ConstantOauth2State.go:81:26:81:30 | state | provenance | | +| ConstantOauth2State.go:86:9:86:15 | "state" | ConstantOauth2State.go:80:11:80:25 | call to newFixedState | provenance | | nodes | ConstantOauth2State.go:20:26:20:32 | "state" | semmle.label | "state" | | ConstantOauth2State.go:22:22:22:28 | "state" | semmle.label | "state" | diff --git a/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected b/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected index da1b8886574b..20569426bfac 100644 --- a/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected +++ b/go/ql/test/query-tests/Security/CWE-601/BadRedirectCheck/BadRedirectCheck.expected @@ -1,23 +1,23 @@ edges -| BadRedirectCheck.go:3:18:3:22 | argument corresponding to redir | BadRedirectCheck.go:5:10:5:14 | redir | -| BadRedirectCheck.go:3:18:3:22 | definition of redir | BadRedirectCheck.go:5:10:5:14 | redir | -| BadRedirectCheck.go:5:10:5:14 | redir | main.go:11:25:11:45 | call to sanitizeUrl | -| cves.go:14:23:14:25 | argument corresponding to url | cves.go:16:26:16:28 | url | -| cves.go:33:14:33:34 | call to Get | cves.go:37:25:37:32 | redirect | -| cves.go:41:14:41:34 | call to Get | cves.go:45:25:45:32 | redirect | -| main.go:10:18:10:25 | argument corresponding to redirect | main.go:11:37:11:44 | redirect | -| main.go:11:37:11:44 | redirect | BadRedirectCheck.go:3:18:3:22 | definition of redir | -| main.go:11:37:11:44 | redirect | main.go:11:25:11:45 | call to sanitizeUrl | -| main.go:32:24:32:26 | argument corresponding to url | main.go:34:26:34:28 | url | -| main.go:68:17:68:24 | argument corresponding to redirect | main.go:73:20:73:27 | redirect | -| main.go:68:17:68:24 | definition of redirect | main.go:73:20:73:27 | redirect | -| main.go:73:9:73:28 | call to Clean | main.go:77:25:77:39 | call to getTarget1 | -| main.go:73:20:73:27 | redirect | main.go:73:9:73:28 | call to Clean | -| main.go:73:20:73:27 | redirect | main.go:73:9:73:28 | call to Clean | -| main.go:76:19:76:21 | argument corresponding to url | main.go:77:36:77:38 | url | -| main.go:77:36:77:38 | url | main.go:68:17:68:24 | definition of redirect | -| main.go:77:36:77:38 | url | main.go:77:25:77:39 | call to getTarget1 | -| main.go:87:9:87:14 | selection of Path | main.go:91:25:91:39 | call to getTarget2 | +| BadRedirectCheck.go:3:18:3:22 | argument corresponding to redir | BadRedirectCheck.go:5:10:5:14 | redir | provenance | | +| BadRedirectCheck.go:3:18:3:22 | definition of redir | BadRedirectCheck.go:5:10:5:14 | redir | provenance | | +| BadRedirectCheck.go:5:10:5:14 | redir | main.go:11:25:11:45 | call to sanitizeUrl | provenance | | +| cves.go:14:23:14:25 | argument corresponding to url | cves.go:16:26:16:28 | url | provenance | | +| cves.go:33:14:33:34 | call to Get | cves.go:37:25:37:32 | redirect | provenance | | +| cves.go:41:14:41:34 | call to Get | cves.go:45:25:45:32 | redirect | provenance | | +| main.go:10:18:10:25 | argument corresponding to redirect | main.go:11:37:11:44 | redirect | provenance | | +| main.go:11:37:11:44 | redirect | BadRedirectCheck.go:3:18:3:22 | definition of redir | provenance | | +| main.go:11:37:11:44 | redirect | main.go:11:25:11:45 | call to sanitizeUrl | provenance | | +| main.go:32:24:32:26 | argument corresponding to url | main.go:34:26:34:28 | url | provenance | | +| main.go:68:17:68:24 | argument corresponding to redirect | main.go:73:20:73:27 | redirect | provenance | | +| main.go:68:17:68:24 | definition of redirect | main.go:73:20:73:27 | redirect | provenance | | +| main.go:73:9:73:28 | call to Clean | main.go:77:25:77:39 | call to getTarget1 | provenance | | +| main.go:73:20:73:27 | redirect | main.go:73:9:73:28 | call to Clean | provenance | | +| main.go:73:20:73:27 | redirect | main.go:73:9:73:28 | call to Clean | provenance | | +| main.go:76:19:76:21 | argument corresponding to url | main.go:77:36:77:38 | url | provenance | | +| main.go:77:36:77:38 | url | main.go:68:17:68:24 | definition of redirect | provenance | | +| main.go:77:36:77:38 | url | main.go:77:25:77:39 | call to getTarget1 | provenance | | +| main.go:87:9:87:14 | selection of Path | main.go:91:25:91:39 | call to getTarget2 | provenance | | nodes | BadRedirectCheck.go:3:18:3:22 | argument corresponding to redir | semmle.label | argument corresponding to redir | | BadRedirectCheck.go:3:18:3:22 | definition of redir | semmle.label | definition of redir | diff --git a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected index d56e1f9c68b5..edbdc8b6e8db 100644 --- a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected +++ b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirect.expected @@ -1,69 +1,69 @@ edges -| OpenUrlRedirect.go:10:23:10:28 | selection of Form | OpenUrlRedirect.go:10:23:10:42 | call to Get | -| stdlib.go:13:3:13:8 | definition of target | stdlib.go:15:30:15:35 | target | -| stdlib.go:13:13:13:18 | selection of Form | stdlib.go:13:13:13:32 | call to Get | -| stdlib.go:13:13:13:32 | call to Get | stdlib.go:13:3:13:8 | definition of target | -| stdlib.go:22:3:22:8 | definition of target | stdlib.go:24:30:24:35 | target | -| stdlib.go:22:13:22:18 | selection of Form | stdlib.go:22:13:22:32 | call to Get | -| stdlib.go:22:13:22:32 | call to Get | stdlib.go:22:3:22:8 | definition of target | -| stdlib.go:31:3:31:8 | definition of target | stdlib.go:35:34:35:39 | target | -| stdlib.go:31:13:31:18 | selection of Form | stdlib.go:31:13:31:32 | call to Get | -| stdlib.go:31:13:31:32 | call to Get | stdlib.go:31:3:31:8 | definition of target | -| stdlib.go:35:34:35:39 | target | stdlib.go:35:30:35:39 | ...+... | -| stdlib.go:44:3:44:8 | definition of target | stdlib.go:46:23:46:28 | target | -| stdlib.go:44:13:44:18 | selection of Form | stdlib.go:44:13:44:32 | call to Get | -| stdlib.go:44:13:44:32 | call to Get | stdlib.go:44:3:44:8 | definition of target | -| stdlib.go:64:3:64:8 | definition of target | stdlib.go:67:23:67:28 | target | -| stdlib.go:64:13:64:18 | selection of Form | stdlib.go:64:13:64:32 | call to Get | -| stdlib.go:64:13:64:32 | call to Get | stdlib.go:64:3:64:8 | definition of target | -| stdlib.go:67:23:67:28 | target | stdlib.go:67:23:67:37 | ...+... | -| stdlib.go:67:23:67:37 | ...+... | stdlib.go:67:23:67:40 | ...+... | -| stdlib.go:89:3:89:8 | definition of target | stdlib.go:90:3:90:8 | target | -| stdlib.go:89:13:89:18 | selection of Form | stdlib.go:89:13:89:32 | call to Get | -| stdlib.go:89:13:89:32 | call to Get | stdlib.go:89:3:89:8 | definition of target | -| stdlib.go:90:3:90:8 | definition of target | stdlib.go:92:23:92:28 | target | -| stdlib.go:90:3:90:8 | target | stdlib.go:90:3:90:25 | ... += ... | -| stdlib.go:90:3:90:25 | ... += ... | stdlib.go:90:3:90:8 | definition of target | -| stdlib.go:107:54:107:54 | definition of r [pointer, URL, pointer] | stdlib.go:112:4:112:4 | r [pointer, URL, pointer] | -| stdlib.go:107:54:107:54 | definition of r [pointer, URL] | stdlib.go:112:4:112:4 | r [pointer, URL] | -| stdlib.go:107:54:107:54 | definition of r [pointer, URL] | stdlib.go:113:24:113:24 | r [pointer, URL] | -| stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | stdlib.go:107:54:107:54 | definition of r [pointer, URL, pointer] | -| stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | stdlib.go:112:4:112:8 | selection of URL [pointer] | -| stdlib.go:112:4:112:4 | implicit dereference [URL] | stdlib.go:107:54:107:54 | definition of r [pointer, URL] | -| stdlib.go:112:4:112:4 | implicit dereference [URL] | stdlib.go:112:4:112:8 | selection of URL | -| stdlib.go:112:4:112:4 | r [pointer, URL, pointer] | stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | -| stdlib.go:112:4:112:4 | r [pointer, URL] | stdlib.go:112:4:112:4 | implicit dereference [URL] | -| stdlib.go:112:4:112:8 | implicit dereference | stdlib.go:112:4:112:8 | selection of URL | -| stdlib.go:112:4:112:8 | implicit dereference | stdlib.go:112:4:112:8 | selection of URL [pointer] | -| stdlib.go:112:4:112:8 | selection of URL | stdlib.go:112:4:112:4 | implicit dereference [URL] | -| stdlib.go:112:4:112:8 | selection of URL | stdlib.go:112:4:112:8 | implicit dereference | -| stdlib.go:112:4:112:8 | selection of URL [pointer] | stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | -| stdlib.go:112:4:112:8 | selection of URL [pointer] | stdlib.go:112:4:112:8 | implicit dereference | -| stdlib.go:113:24:113:24 | implicit dereference [URL] | stdlib.go:113:24:113:28 | selection of URL | -| stdlib.go:113:24:113:24 | r [pointer, URL] | stdlib.go:113:24:113:24 | implicit dereference [URL] | -| stdlib.go:113:24:113:28 | selection of URL | stdlib.go:113:24:113:37 | call to String | -| stdlib.go:146:3:146:8 | definition of target | stdlib.go:152:3:152:3 | target = phi(def@146:3, def@149:4) | -| stdlib.go:146:13:146:18 | selection of Form | stdlib.go:146:13:146:32 | call to Get | -| stdlib.go:146:13:146:32 | call to Get | stdlib.go:146:3:146:8 | definition of target | -| stdlib.go:152:3:152:3 | target = phi(def@146:3, def@149:4) | stdlib.go:152:23:152:28 | target | -| stdlib.go:159:3:159:5 | definition of url | stdlib.go:162:24:162:26 | url | -| stdlib.go:159:10:159:15 | star expression | stdlib.go:159:3:159:5 | definition of url | -| stdlib.go:159:10:159:15 | star expression | stdlib.go:159:11:159:15 | selection of URL | -| stdlib.go:159:11:159:15 | selection of URL | stdlib.go:159:10:159:15 | star expression | -| stdlib.go:162:24:162:26 | url | stdlib.go:162:24:162:35 | call to String | -| stdlib.go:173:35:173:39 | selection of URL | stdlib.go:173:35:173:52 | call to RequestURI | -| stdlib.go:173:35:173:52 | call to RequestURI | stdlib.go:173:24:173:52 | ...+... | -| stdlib.go:182:3:182:8 | definition of target | stdlib.go:184:23:184:28 | target | -| stdlib.go:182:13:182:33 | call to FormValue | stdlib.go:182:3:182:8 | definition of target | -| stdlib.go:190:3:190:8 | definition of target | stdlib.go:192:23:192:28 | target | -| stdlib.go:190:3:190:8 | definition of target | stdlib.go:194:23:194:28 | target | -| stdlib.go:190:3:190:57 | ... := ...[0] | stdlib.go:190:3:190:8 | definition of target | -| stdlib.go:190:36:190:56 | call to FormValue | stdlib.go:190:3:190:57 | ... := ...[0] | -| stdlib.go:192:23:192:28 | implicit dereference | stdlib.go:190:3:190:8 | definition of target | -| stdlib.go:192:23:192:28 | implicit dereference | stdlib.go:192:23:192:33 | selection of Path | -| stdlib.go:192:23:192:28 | target | stdlib.go:192:23:192:28 | implicit dereference | -| stdlib.go:192:23:192:28 | target | stdlib.go:192:23:192:33 | selection of Path | -| stdlib.go:194:23:194:28 | target | stdlib.go:194:23:194:42 | call to EscapedPath | +| OpenUrlRedirect.go:10:23:10:28 | selection of Form | OpenUrlRedirect.go:10:23:10:42 | call to Get | provenance | | +| stdlib.go:13:3:13:8 | definition of target | stdlib.go:15:30:15:35 | target | provenance | | +| stdlib.go:13:13:13:18 | selection of Form | stdlib.go:13:13:13:32 | call to Get | provenance | | +| stdlib.go:13:13:13:32 | call to Get | stdlib.go:13:3:13:8 | definition of target | provenance | | +| stdlib.go:22:3:22:8 | definition of target | stdlib.go:24:30:24:35 | target | provenance | | +| stdlib.go:22:13:22:18 | selection of Form | stdlib.go:22:13:22:32 | call to Get | provenance | | +| stdlib.go:22:13:22:32 | call to Get | stdlib.go:22:3:22:8 | definition of target | provenance | | +| stdlib.go:31:3:31:8 | definition of target | stdlib.go:35:34:35:39 | target | provenance | | +| stdlib.go:31:13:31:18 | selection of Form | stdlib.go:31:13:31:32 | call to Get | provenance | | +| stdlib.go:31:13:31:32 | call to Get | stdlib.go:31:3:31:8 | definition of target | provenance | | +| stdlib.go:35:34:35:39 | target | stdlib.go:35:30:35:39 | ...+... | provenance | | +| stdlib.go:44:3:44:8 | definition of target | stdlib.go:46:23:46:28 | target | provenance | | +| stdlib.go:44:13:44:18 | selection of Form | stdlib.go:44:13:44:32 | call to Get | provenance | | +| stdlib.go:44:13:44:32 | call to Get | stdlib.go:44:3:44:8 | definition of target | provenance | | +| stdlib.go:64:3:64:8 | definition of target | stdlib.go:67:23:67:28 | target | provenance | | +| stdlib.go:64:13:64:18 | selection of Form | stdlib.go:64:13:64:32 | call to Get | provenance | | +| stdlib.go:64:13:64:32 | call to Get | stdlib.go:64:3:64:8 | definition of target | provenance | | +| stdlib.go:67:23:67:28 | target | stdlib.go:67:23:67:37 | ...+... | provenance | | +| stdlib.go:67:23:67:37 | ...+... | stdlib.go:67:23:67:40 | ...+... | provenance | | +| stdlib.go:89:3:89:8 | definition of target | stdlib.go:90:3:90:8 | target | provenance | | +| stdlib.go:89:13:89:18 | selection of Form | stdlib.go:89:13:89:32 | call to Get | provenance | | +| stdlib.go:89:13:89:32 | call to Get | stdlib.go:89:3:89:8 | definition of target | provenance | | +| stdlib.go:90:3:90:8 | definition of target | stdlib.go:92:23:92:28 | target | provenance | | +| stdlib.go:90:3:90:8 | target | stdlib.go:90:3:90:25 | ... += ... | provenance | | +| stdlib.go:90:3:90:25 | ... += ... | stdlib.go:90:3:90:8 | definition of target | provenance | | +| stdlib.go:107:54:107:54 | definition of r [pointer, URL, pointer] | stdlib.go:112:4:112:4 | r [pointer, URL, pointer] | provenance | | +| stdlib.go:107:54:107:54 | definition of r [pointer, URL] | stdlib.go:112:4:112:4 | r [pointer, URL] | provenance | | +| stdlib.go:107:54:107:54 | definition of r [pointer, URL] | stdlib.go:113:24:113:24 | r [pointer, URL] | provenance | | +| stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | stdlib.go:107:54:107:54 | definition of r [pointer, URL, pointer] | provenance | | +| stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | stdlib.go:112:4:112:8 | selection of URL [pointer] | provenance | | +| stdlib.go:112:4:112:4 | implicit dereference [URL] | stdlib.go:107:54:107:54 | definition of r [pointer, URL] | provenance | | +| stdlib.go:112:4:112:4 | implicit dereference [URL] | stdlib.go:112:4:112:8 | selection of URL | provenance | | +| stdlib.go:112:4:112:4 | r [pointer, URL, pointer] | stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | provenance | | +| stdlib.go:112:4:112:4 | r [pointer, URL] | stdlib.go:112:4:112:4 | implicit dereference [URL] | provenance | | +| stdlib.go:112:4:112:8 | implicit dereference | stdlib.go:112:4:112:8 | selection of URL | provenance | | +| stdlib.go:112:4:112:8 | implicit dereference | stdlib.go:112:4:112:8 | selection of URL [pointer] | provenance | | +| stdlib.go:112:4:112:8 | selection of URL | stdlib.go:112:4:112:4 | implicit dereference [URL] | provenance | | +| stdlib.go:112:4:112:8 | selection of URL | stdlib.go:112:4:112:8 | implicit dereference | provenance | | +| stdlib.go:112:4:112:8 | selection of URL [pointer] | stdlib.go:112:4:112:4 | implicit dereference [URL, pointer] | provenance | | +| stdlib.go:112:4:112:8 | selection of URL [pointer] | stdlib.go:112:4:112:8 | implicit dereference | provenance | | +| stdlib.go:113:24:113:24 | implicit dereference [URL] | stdlib.go:113:24:113:28 | selection of URL | provenance | | +| stdlib.go:113:24:113:24 | r [pointer, URL] | stdlib.go:113:24:113:24 | implicit dereference [URL] | provenance | | +| stdlib.go:113:24:113:28 | selection of URL | stdlib.go:113:24:113:37 | call to String | provenance | | +| stdlib.go:146:3:146:8 | definition of target | stdlib.go:152:3:152:3 | target = phi(def@146:3, def@149:4) | provenance | | +| stdlib.go:146:13:146:18 | selection of Form | stdlib.go:146:13:146:32 | call to Get | provenance | | +| stdlib.go:146:13:146:32 | call to Get | stdlib.go:146:3:146:8 | definition of target | provenance | | +| stdlib.go:152:3:152:3 | target = phi(def@146:3, def@149:4) | stdlib.go:152:23:152:28 | target | provenance | | +| stdlib.go:159:3:159:5 | definition of url | stdlib.go:162:24:162:26 | url | provenance | | +| stdlib.go:159:10:159:15 | star expression | stdlib.go:159:3:159:5 | definition of url | provenance | | +| stdlib.go:159:10:159:15 | star expression | stdlib.go:159:11:159:15 | selection of URL | provenance | | +| stdlib.go:159:11:159:15 | selection of URL | stdlib.go:159:10:159:15 | star expression | provenance | | +| stdlib.go:162:24:162:26 | url | stdlib.go:162:24:162:35 | call to String | provenance | | +| stdlib.go:173:35:173:39 | selection of URL | stdlib.go:173:35:173:52 | call to RequestURI | provenance | | +| stdlib.go:173:35:173:52 | call to RequestURI | stdlib.go:173:24:173:52 | ...+... | provenance | | +| stdlib.go:182:3:182:8 | definition of target | stdlib.go:184:23:184:28 | target | provenance | | +| stdlib.go:182:13:182:33 | call to FormValue | stdlib.go:182:3:182:8 | definition of target | provenance | | +| stdlib.go:190:3:190:8 | definition of target | stdlib.go:192:23:192:28 | target | provenance | | +| stdlib.go:190:3:190:8 | definition of target | stdlib.go:194:23:194:28 | target | provenance | | +| stdlib.go:190:3:190:57 | ... := ...[0] | stdlib.go:190:3:190:8 | definition of target | provenance | | +| stdlib.go:190:36:190:56 | call to FormValue | stdlib.go:190:3:190:57 | ... := ...[0] | provenance | | +| stdlib.go:192:23:192:28 | implicit dereference | stdlib.go:190:3:190:8 | definition of target | provenance | | +| stdlib.go:192:23:192:28 | implicit dereference | stdlib.go:192:23:192:33 | selection of Path | provenance | | +| stdlib.go:192:23:192:28 | target | stdlib.go:192:23:192:28 | implicit dereference | provenance | | +| stdlib.go:192:23:192:28 | target | stdlib.go:192:23:192:33 | selection of Path | provenance | | +| stdlib.go:194:23:194:28 | target | stdlib.go:194:23:194:42 | call to EscapedPath | provenance | | nodes | OpenUrlRedirect.go:10:23:10:28 | selection of Form | semmle.label | selection of Form | | OpenUrlRedirect.go:10:23:10:42 | call to Get | semmle.label | call to Get | diff --git a/go/ql/test/query-tests/Security/CWE-640/EmailInjection.expected b/go/ql/test/query-tests/Security/CWE-640/EmailInjection.expected index ec7b13e00eb5..fa8adec48fee 100644 --- a/go/ql/test/query-tests/Security/CWE-640/EmailInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-640/EmailInjection.expected @@ -1,23 +1,23 @@ edges -| EmailBad.go:9:10:9:17 | selection of Header | EmailBad.go:9:10:9:29 | call to Get | -| EmailBad.go:9:10:9:29 | call to Get | EmailBad.go:12:56:12:67 | type conversion | -| main.go:29:21:29:31 | call to Referer | main.go:31:57:31:78 | type conversion | -| main.go:37:21:37:31 | call to Referer | main.go:41:25:41:38 | untrustedInput | -| main.go:41:25:41:38 | untrustedInput | main.go:40:3:40:7 | definition of write | -| main.go:46:21:46:31 | call to Referer | main.go:52:46:52:59 | untrustedInput | -| main.go:46:21:46:31 | call to Referer | main.go:53:52:53:65 | untrustedInput | -| main.go:58:21:58:31 | call to Referer | main.go:60:47:60:60 | untrustedInput | -| main.go:60:14:60:61 | call to NewContent | main.go:63:16:63:22 | content | -| main.go:60:47:60:60 | untrustedInput | main.go:60:14:60:61 | call to NewContent | -| main.go:68:21:68:31 | call to Referer | main.go:74:47:74:60 | untrustedInput | -| main.go:74:14:74:61 | call to NewContent | main.go:76:50:76:56 | content | -| main.go:74:14:74:61 | call to NewContent | main.go:76:59:76:65 | content | -| main.go:74:14:74:61 | call to NewContent | main.go:77:16:77:22 | content | -| main.go:74:47:74:60 | untrustedInput | main.go:74:14:74:61 | call to NewContent | -| main.go:82:21:82:31 | call to Referer | main.go:89:37:89:50 | untrustedInput | -| main.go:82:21:82:31 | call to Referer | main.go:91:48:91:61 | untrustedInput | -| main.go:91:15:91:62 | call to NewContent | main.go:93:16:93:23 | content2 | -| main.go:91:48:91:61 | untrustedInput | main.go:91:15:91:62 | call to NewContent | +| EmailBad.go:9:10:9:17 | selection of Header | EmailBad.go:9:10:9:29 | call to Get | provenance | | +| EmailBad.go:9:10:9:29 | call to Get | EmailBad.go:12:56:12:67 | type conversion | provenance | | +| main.go:29:21:29:31 | call to Referer | main.go:31:57:31:78 | type conversion | provenance | | +| main.go:37:21:37:31 | call to Referer | main.go:41:25:41:38 | untrustedInput | provenance | | +| main.go:41:25:41:38 | untrustedInput | main.go:40:3:40:7 | definition of write | provenance | | +| main.go:46:21:46:31 | call to Referer | main.go:52:46:52:59 | untrustedInput | provenance | | +| main.go:46:21:46:31 | call to Referer | main.go:53:52:53:65 | untrustedInput | provenance | | +| main.go:58:21:58:31 | call to Referer | main.go:60:47:60:60 | untrustedInput | provenance | | +| main.go:60:14:60:61 | call to NewContent | main.go:63:16:63:22 | content | provenance | | +| main.go:60:47:60:60 | untrustedInput | main.go:60:14:60:61 | call to NewContent | provenance | | +| main.go:68:21:68:31 | call to Referer | main.go:74:47:74:60 | untrustedInput | provenance | | +| main.go:74:14:74:61 | call to NewContent | main.go:76:50:76:56 | content | provenance | | +| main.go:74:14:74:61 | call to NewContent | main.go:76:59:76:65 | content | provenance | | +| main.go:74:14:74:61 | call to NewContent | main.go:77:16:77:22 | content | provenance | | +| main.go:74:47:74:60 | untrustedInput | main.go:74:14:74:61 | call to NewContent | provenance | | +| main.go:82:21:82:31 | call to Referer | main.go:89:37:89:50 | untrustedInput | provenance | | +| main.go:82:21:82:31 | call to Referer | main.go:91:48:91:61 | untrustedInput | provenance | | +| main.go:91:15:91:62 | call to NewContent | main.go:93:16:93:23 | content2 | provenance | | +| main.go:91:48:91:61 | untrustedInput | main.go:91:15:91:62 | call to NewContent | provenance | | nodes | EmailBad.go:9:10:9:17 | selection of Header | semmle.label | selection of Header | | EmailBad.go:9:10:9:29 | call to Get | semmle.label | call to Get | diff --git a/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected b/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected index 34fbf42f85f2..753444333d9c 100644 --- a/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-643/XPathInjection.expected @@ -1,57 +1,57 @@ edges -| XPathInjection.go:13:14:13:19 | selection of Form | XPathInjection.go:13:14:13:35 | call to Get | -| XPathInjection.go:13:14:13:35 | call to Get | XPathInjection.go:16:29:16:91 | ...+... | -| tst.go:34:14:34:19 | selection of Form | tst.go:34:14:34:35 | call to Get | -| tst.go:34:14:34:35 | call to Get | tst.go:37:23:37:85 | ...+... | -| tst.go:34:14:34:35 | call to Get | tst.go:40:24:40:86 | ...+... | -| tst.go:34:14:34:35 | call to Get | tst.go:43:24:43:82 | ...+... | -| tst.go:48:14:48:19 | selection of Form | tst.go:48:14:48:35 | call to Get | -| tst.go:48:14:48:35 | call to Get | tst.go:51:26:51:84 | ...+... | -| tst.go:48:14:48:35 | call to Get | tst.go:54:29:54:87 | ...+... | -| tst.go:48:14:48:35 | call to Get | tst.go:57:33:57:91 | ...+... | -| tst.go:48:14:48:35 | call to Get | tst.go:60:30:60:88 | ...+... | -| tst.go:65:14:65:19 | selection of Form | tst.go:65:14:65:35 | call to Get | -| tst.go:65:14:65:35 | call to Get | tst.go:68:25:68:83 | ...+... | -| tst.go:65:14:65:35 | call to Get | tst.go:71:28:71:86 | ...+... | -| tst.go:65:14:65:35 | call to Get | tst.go:74:25:74:83 | ...+... | -| tst.go:65:14:65:35 | call to Get | tst.go:77:34:77:92 | ...+... | -| tst.go:65:14:65:35 | call to Get | tst.go:80:32:80:90 | ...+... | -| tst.go:65:14:65:35 | call to Get | tst.go:83:29:83:87 | ...+... | -| tst.go:65:14:65:35 | call to Get | tst.go:86:23:86:85 | ...+... | -| tst.go:65:14:65:35 | call to Get | tst.go:89:22:89:84 | ...+... | -| tst.go:94:14:94:19 | selection of Form | tst.go:94:14:94:35 | call to Get | -| tst.go:94:14:94:35 | call to Get | tst.go:97:26:97:84 | ...+... | -| tst.go:94:14:94:35 | call to Get | tst.go:100:29:100:87 | ...+... | -| tst.go:94:14:94:35 | call to Get | tst.go:103:33:103:91 | ...+... | -| tst.go:94:14:94:35 | call to Get | tst.go:106:30:106:88 | ...+... | -| tst.go:111:14:111:19 | selection of Form | tst.go:111:14:111:35 | call to Get | -| tst.go:111:14:111:35 | call to Get | tst.go:114:25:114:87 | ...+... | -| tst.go:111:14:111:35 | call to Get | tst.go:117:26:117:88 | ...+... | -| tst.go:122:14:122:19 | selection of Form | tst.go:122:14:122:35 | call to Get | -| tst.go:122:14:122:35 | call to Get | tst.go:126:23:126:126 | ...+... | -| tst.go:122:14:122:35 | call to Get | tst.go:129:24:129:127 | ...+... | -| tst.go:122:14:122:35 | call to Get | tst.go:132:27:132:122 | ...+... | -| tst.go:123:14:123:19 | selection of Form | tst.go:123:14:123:35 | call to Get | -| tst.go:123:14:123:35 | call to Get | tst.go:126:23:126:126 | ...+... | -| tst.go:123:14:123:35 | call to Get | tst.go:129:24:129:127 | ...+... | -| tst.go:123:14:123:35 | call to Get | tst.go:132:27:132:122 | ...+... | -| tst.go:140:14:140:19 | selection of Form | tst.go:140:14:140:35 | call to Get | -| tst.go:140:14:140:35 | call to Get | tst.go:143:27:143:89 | ...+... | -| tst.go:140:14:140:35 | call to Get | tst.go:146:28:146:90 | ...+... | -| tst.go:151:14:151:19 | selection of Form | tst.go:151:14:151:35 | call to Get | -| tst.go:151:14:151:35 | call to Get | tst.go:155:33:155:136 | ...+... | -| tst.go:151:14:151:35 | call to Get | tst.go:158:18:158:121 | ...+... | -| tst.go:151:14:151:35 | call to Get | tst.go:164:31:164:126 | ...+... | -| tst.go:151:14:151:35 | call to Get | tst.go:173:21:173:116 | ...+... | -| tst.go:151:14:151:35 | call to Get | tst.go:182:27:182:122 | ...+... | -| tst.go:152:14:152:19 | selection of Form | tst.go:152:14:152:35 | call to Get | -| tst.go:152:14:152:35 | call to Get | tst.go:155:33:155:136 | ...+... | -| tst.go:152:14:152:35 | call to Get | tst.go:158:18:158:121 | ...+... | -| tst.go:152:14:152:35 | call to Get | tst.go:164:31:164:126 | ...+... | -| tst.go:152:14:152:35 | call to Get | tst.go:173:21:173:116 | ...+... | -| tst.go:152:14:152:35 | call to Get | tst.go:182:27:182:122 | ...+... | -| tst.go:193:14:193:19 | selection of Form | tst.go:193:14:193:35 | call to Get | -| tst.go:193:14:193:35 | call to Get | tst.go:198:23:198:85 | ...+... | +| XPathInjection.go:13:14:13:19 | selection of Form | XPathInjection.go:13:14:13:35 | call to Get | provenance | | +| XPathInjection.go:13:14:13:35 | call to Get | XPathInjection.go:16:29:16:91 | ...+... | provenance | | +| tst.go:34:14:34:19 | selection of Form | tst.go:34:14:34:35 | call to Get | provenance | | +| tst.go:34:14:34:35 | call to Get | tst.go:37:23:37:85 | ...+... | provenance | | +| tst.go:34:14:34:35 | call to Get | tst.go:40:24:40:86 | ...+... | provenance | | +| tst.go:34:14:34:35 | call to Get | tst.go:43:24:43:82 | ...+... | provenance | | +| tst.go:48:14:48:19 | selection of Form | tst.go:48:14:48:35 | call to Get | provenance | | +| tst.go:48:14:48:35 | call to Get | tst.go:51:26:51:84 | ...+... | provenance | | +| tst.go:48:14:48:35 | call to Get | tst.go:54:29:54:87 | ...+... | provenance | | +| tst.go:48:14:48:35 | call to Get | tst.go:57:33:57:91 | ...+... | provenance | | +| tst.go:48:14:48:35 | call to Get | tst.go:60:30:60:88 | ...+... | provenance | | +| tst.go:65:14:65:19 | selection of Form | tst.go:65:14:65:35 | call to Get | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:68:25:68:83 | ...+... | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:71:28:71:86 | ...+... | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:74:25:74:83 | ...+... | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:77:34:77:92 | ...+... | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:80:32:80:90 | ...+... | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:83:29:83:87 | ...+... | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:86:23:86:85 | ...+... | provenance | | +| tst.go:65:14:65:35 | call to Get | tst.go:89:22:89:84 | ...+... | provenance | | +| tst.go:94:14:94:19 | selection of Form | tst.go:94:14:94:35 | call to Get | provenance | | +| tst.go:94:14:94:35 | call to Get | tst.go:97:26:97:84 | ...+... | provenance | | +| tst.go:94:14:94:35 | call to Get | tst.go:100:29:100:87 | ...+... | provenance | | +| tst.go:94:14:94:35 | call to Get | tst.go:103:33:103:91 | ...+... | provenance | | +| tst.go:94:14:94:35 | call to Get | tst.go:106:30:106:88 | ...+... | provenance | | +| tst.go:111:14:111:19 | selection of Form | tst.go:111:14:111:35 | call to Get | provenance | | +| tst.go:111:14:111:35 | call to Get | tst.go:114:25:114:87 | ...+... | provenance | | +| tst.go:111:14:111:35 | call to Get | tst.go:117:26:117:88 | ...+... | provenance | | +| tst.go:122:14:122:19 | selection of Form | tst.go:122:14:122:35 | call to Get | provenance | | +| tst.go:122:14:122:35 | call to Get | tst.go:126:23:126:126 | ...+... | provenance | | +| tst.go:122:14:122:35 | call to Get | tst.go:129:24:129:127 | ...+... | provenance | | +| tst.go:122:14:122:35 | call to Get | tst.go:132:27:132:122 | ...+... | provenance | | +| tst.go:123:14:123:19 | selection of Form | tst.go:123:14:123:35 | call to Get | provenance | | +| tst.go:123:14:123:35 | call to Get | tst.go:126:23:126:126 | ...+... | provenance | | +| tst.go:123:14:123:35 | call to Get | tst.go:129:24:129:127 | ...+... | provenance | | +| tst.go:123:14:123:35 | call to Get | tst.go:132:27:132:122 | ...+... | provenance | | +| tst.go:140:14:140:19 | selection of Form | tst.go:140:14:140:35 | call to Get | provenance | | +| tst.go:140:14:140:35 | call to Get | tst.go:143:27:143:89 | ...+... | provenance | | +| tst.go:140:14:140:35 | call to Get | tst.go:146:28:146:90 | ...+... | provenance | | +| tst.go:151:14:151:19 | selection of Form | tst.go:151:14:151:35 | call to Get | provenance | | +| tst.go:151:14:151:35 | call to Get | tst.go:155:33:155:136 | ...+... | provenance | | +| tst.go:151:14:151:35 | call to Get | tst.go:158:18:158:121 | ...+... | provenance | | +| tst.go:151:14:151:35 | call to Get | tst.go:164:31:164:126 | ...+... | provenance | | +| tst.go:151:14:151:35 | call to Get | tst.go:173:21:173:116 | ...+... | provenance | | +| tst.go:151:14:151:35 | call to Get | tst.go:182:27:182:122 | ...+... | provenance | | +| tst.go:152:14:152:19 | selection of Form | tst.go:152:14:152:35 | call to Get | provenance | | +| tst.go:152:14:152:35 | call to Get | tst.go:155:33:155:136 | ...+... | provenance | | +| tst.go:152:14:152:35 | call to Get | tst.go:158:18:158:121 | ...+... | provenance | | +| tst.go:152:14:152:35 | call to Get | tst.go:164:31:164:126 | ...+... | provenance | | +| tst.go:152:14:152:35 | call to Get | tst.go:173:21:173:116 | ...+... | provenance | | +| tst.go:152:14:152:35 | call to Get | tst.go:182:27:182:122 | ...+... | provenance | | +| tst.go:193:14:193:19 | selection of Form | tst.go:193:14:193:35 | call to Get | provenance | | +| tst.go:193:14:193:35 | call to Get | tst.go:198:23:198:85 | ...+... | provenance | | nodes | XPathInjection.go:13:14:13:19 | selection of Form | semmle.label | selection of Form | | XPathInjection.go:13:14:13:35 | call to Get | semmle.label | call to Get | diff --git a/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected b/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected index b843de1c0b1e..c3d6015d7484 100644 --- a/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected +++ b/go/ql/test/query-tests/Security/CWE-918/RequestForgery.expected @@ -1,32 +1,32 @@ edges -| RequestForgery.go:8:12:8:34 | call to FormValue | RequestForgery.go:11:24:11:65 | ...+... | -| tst.go:10:13:10:35 | call to FormValue | tst.go:14:11:14:17 | tainted | -| tst.go:10:13:10:35 | call to FormValue | tst.go:18:12:18:18 | tainted | -| tst.go:10:13:10:35 | call to FormValue | tst.go:21:34:21:40 | tainted | -| tst.go:10:13:10:35 | call to FormValue | tst.go:24:66:24:72 | tainted | -| tst.go:10:13:10:35 | call to FormValue | tst.go:27:11:27:29 | ...+... | -| tst.go:10:13:10:35 | call to FormValue | tst.go:29:11:29:40 | ...+... | -| tst.go:10:13:10:35 | call to FormValue | tst.go:36:11:36:17 | tainted | -| tst.go:35:2:35:2 | definition of u [pointer] | tst.go:36:2:36:2 | u [pointer] | -| tst.go:36:2:36:2 | implicit dereference | tst.go:35:2:35:2 | definition of u [pointer] | -| tst.go:36:2:36:2 | implicit dereference | tst.go:36:2:36:2 | u | -| tst.go:36:2:36:2 | implicit dereference | tst.go:37:11:37:11 | u | -| tst.go:36:2:36:2 | u | tst.go:36:2:36:2 | implicit dereference | -| tst.go:36:2:36:2 | u | tst.go:36:2:36:2 | u | -| tst.go:36:2:36:2 | u | tst.go:37:11:37:11 | u | -| tst.go:36:2:36:2 | u [pointer] | tst.go:36:2:36:2 | implicit dereference | -| tst.go:36:11:36:17 | tainted | tst.go:36:2:36:2 | u | -| tst.go:36:11:36:17 | tainted | tst.go:37:11:37:11 | u | -| tst.go:37:11:37:11 | u | tst.go:37:11:37:20 | call to String | -| websocket.go:60:21:60:31 | call to Referer | websocket.go:65:27:65:40 | untrustedInput | -| websocket.go:74:21:74:31 | call to Referer | websocket.go:78:36:78:49 | untrustedInput | -| websocket.go:88:21:88:31 | call to Referer | websocket.go:91:31:91:44 | untrustedInput | -| websocket.go:107:21:107:31 | call to Referer | websocket.go:110:15:110:28 | untrustedInput | -| websocket.go:126:21:126:31 | call to Referer | websocket.go:129:38:129:51 | untrustedInput | -| websocket.go:154:21:154:31 | call to Referer | websocket.go:155:31:155:44 | untrustedInput | -| websocket.go:160:21:160:31 | call to Referer | websocket.go:162:31:162:44 | untrustedInput | -| websocket.go:195:21:195:31 | call to Referer | websocket.go:197:18:197:31 | untrustedInput | -| websocket.go:202:21:202:31 | call to Referer | websocket.go:204:11:204:24 | untrustedInput | +| RequestForgery.go:8:12:8:34 | call to FormValue | RequestForgery.go:11:24:11:65 | ...+... | provenance | | +| tst.go:10:13:10:35 | call to FormValue | tst.go:14:11:14:17 | tainted | provenance | | +| tst.go:10:13:10:35 | call to FormValue | tst.go:18:12:18:18 | tainted | provenance | | +| tst.go:10:13:10:35 | call to FormValue | tst.go:21:34:21:40 | tainted | provenance | | +| tst.go:10:13:10:35 | call to FormValue | tst.go:24:66:24:72 | tainted | provenance | | +| tst.go:10:13:10:35 | call to FormValue | tst.go:27:11:27:29 | ...+... | provenance | | +| tst.go:10:13:10:35 | call to FormValue | tst.go:29:11:29:40 | ...+... | provenance | | +| tst.go:10:13:10:35 | call to FormValue | tst.go:36:11:36:17 | tainted | provenance | | +| tst.go:35:2:35:2 | definition of u [pointer] | tst.go:36:2:36:2 | u [pointer] | provenance | | +| tst.go:36:2:36:2 | implicit dereference | tst.go:35:2:35:2 | definition of u [pointer] | provenance | | +| tst.go:36:2:36:2 | implicit dereference | tst.go:36:2:36:2 | u | provenance | | +| tst.go:36:2:36:2 | implicit dereference | tst.go:37:11:37:11 | u | provenance | | +| tst.go:36:2:36:2 | u | tst.go:36:2:36:2 | implicit dereference | provenance | | +| tst.go:36:2:36:2 | u | tst.go:36:2:36:2 | u | provenance | | +| tst.go:36:2:36:2 | u | tst.go:37:11:37:11 | u | provenance | | +| tst.go:36:2:36:2 | u [pointer] | tst.go:36:2:36:2 | implicit dereference | provenance | | +| tst.go:36:11:36:17 | tainted | tst.go:36:2:36:2 | u | provenance | | +| tst.go:36:11:36:17 | tainted | tst.go:37:11:37:11 | u | provenance | | +| tst.go:37:11:37:11 | u | tst.go:37:11:37:20 | call to String | provenance | | +| websocket.go:60:21:60:31 | call to Referer | websocket.go:65:27:65:40 | untrustedInput | provenance | | +| websocket.go:74:21:74:31 | call to Referer | websocket.go:78:36:78:49 | untrustedInput | provenance | | +| websocket.go:88:21:88:31 | call to Referer | websocket.go:91:31:91:44 | untrustedInput | provenance | | +| websocket.go:107:21:107:31 | call to Referer | websocket.go:110:15:110:28 | untrustedInput | provenance | | +| websocket.go:126:21:126:31 | call to Referer | websocket.go:129:38:129:51 | untrustedInput | provenance | | +| websocket.go:154:21:154:31 | call to Referer | websocket.go:155:31:155:44 | untrustedInput | provenance | | +| websocket.go:160:21:160:31 | call to Referer | websocket.go:162:31:162:44 | untrustedInput | provenance | | +| websocket.go:195:21:195:31 | call to Referer | websocket.go:197:18:197:31 | untrustedInput | provenance | | +| websocket.go:202:21:202:31 | call to Referer | websocket.go:204:11:204:24 | untrustedInput | provenance | | nodes | RequestForgery.go:8:12:8:34 | call to FormValue | semmle.label | call to FormValue | | RequestForgery.go:11:24:11:65 | ...+... | semmle.label | ...+... | diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 05fc3c67adac..5b3af5e90401 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -76,13 +76,13 @@ jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3 java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -java.io,50,1,46,,,,,,,,,22,,,,,,,,,,,,,,,28,,,,,,,,,,,,,,,,,,,,,1,,44,2 -java.lang,33,3,101,,13,,,,,,1,,,,,,,,,,,,8,,,,6,,,4,,,1,,,,,,,,,,,,,,3,,,58,43 -java.net,21,3,23,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,3,23, -java.nio,49,,36,,,,,,,,,5,,,,,,,,,,,,,,,43,,,,,,,,,1,,,,,,,,,,,,,,36, +java.io,51,1,46,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,1,,44,2 +java.lang,38,3,101,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,3,,,58,43 +java.net,22,3,24,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,,3,24, +java.nio,44,,38,,,,,,,,,5,,,,,,,,,,,,,,,38,,,,,,,,,1,,,,,,,,,,,,,,38, java.security,21,,,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,1,,,,2, -java.util,47,2,519,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,45,474 +java.util,47,2,520,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,46,474 javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,7, javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, @@ -125,7 +125,7 @@ org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.commons.io,117,,562,,,,,,,,,4,,,,,,,,,,,,,,,98,,,,,,,,,15,,,,,,,,,,,,,,548,14 +org.apache.commons.io,118,,562,,,,,,,,,4,,,,,,,,,,,,,,,99,,,,,,,,,15,,,,,,,,,,,,,,548,14 org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,, org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @@ -147,7 +147,7 @@ org.apache.cxf.tools.corba.utils,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,, org.apache.cxf.tools.util,10,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,, org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,, org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hadoop.fs,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10, +org.apache.hadoop.fs,3,,11,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,11, org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,, org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1, org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, @@ -178,10 +178,10 @@ org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,, org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,, org.codehaus.groovy.control,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,, -org.eclipse.jetty.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, +org.eclipse.jetty.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,, org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, -org.gradle.api.file,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2, +org.gradle.api.file,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,, org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, org.jboss.logging,324,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 78130e9d9c26..3e0edb7dfacd 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -10,7 +10,7 @@ Java framework & library support Android,``android.*``,52,481,180,,3,67,,, Android extensions,``androidx.*``,5,183,60,,,,,, `Apache Commons Collections `_,"``org.apache.commons.collections``, ``org.apache.commons.collections4``",,1600,,,,,,, - `Apache Commons IO `_,``org.apache.commons.io``,,562,117,98,,,,,15 + `Apache Commons IO `_,``org.apache.commons.io``,,562,118,99,,,,,15 `Apache Commons Lang `_,``org.apache.commons.lang3``,,425,6,,,,,, `Apache Commons Text `_,``org.apache.commons.text``,,272,,,,,,, `Apache HttpComponents `_,"``org.apache.hc.core5.*``, ``org.apache.http``",5,183,122,,3,,,,119 @@ -18,10 +18,10 @@ Java framework & library support `Google Guava `_,``com.google.common.*``,,730,43,9,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,10,731,237,79,,9,,,24 + Java Standard Library,``java.*``,10,735,239,80,,9,,,25 Java extensions,"``javax.*``, ``jakarta.*``",67,688,80,5,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 `Spring `_,``org.springframework.*``,38,481,118,5,,28,14,,35 - Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10516,889,121,6,22,18,,208 - Totals,,308,18945,2551,331,16,128,33,1,407 + Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,124,6,22,18,,209 + Totals,,308,18951,2558,336,16,128,33,1,409 diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 6cd3611af52e..472883949047 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -1617,8 +1617,9 @@ open class KotlinFileExtractor( cls.origin != IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB private fun needsInterfaceForwarder(f: IrFunction) = - // forAllMethodsWithBody means -Xjvm-default=all or all-compatibility, in which case real - // Java default interfaces are used, and we don't need to do anything. + // jvmDefaultModeEnabledIsEnabled means that -Xjvm-default=all or all-compatibility was + // used, in which case real Java default interfaces are used, and we don't need to do + // anything. // Otherwise, for a Kotlin-defined method inheriting a Kotlin-defined default, we need to // create a synthetic method like // `int f(int x) { return super.InterfaceWithDefault.f(x); }`, because kotlinc will generate @@ -1626,9 +1627,9 @@ open class KotlinFileExtractor( // (NB. kotlinc's actual implementation strategy is different -- it makes an inner class // called InterfaceWithDefault$DefaultImpls and stores the default methods // there to allow default method usage in Java < 8, but this is hopefully niche. - !pluginContext.languageVersionSettings - .getFlag(JvmAnalysisFlags.jvmDefaultMode) - .forAllMethodsWithBody && + !jvmDefaultModeEnabledIsEnabled( + pluginContext.languageVersionSettings + .getFlag(JvmAnalysisFlags.jvmDefaultMode)) && f.parentClassOrNull.let { it != null && it.origin != IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB && diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JvmDefaultModeEnabled.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JvmDefaultModeEnabled.kt new file mode 100644 index 000000000000..cd8496526137 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JvmDefaultModeEnabled.kt @@ -0,0 +1,7 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.config.JvmDefaultMode + +fun jvmDefaultModeEnabledIsEnabled(jdm: JvmDefaultMode): Boolean { + return jdm.forAllMethodsWithBody +} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_255-SNAPSHOT/JvmDefaultModeEnabled.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_255-SNAPSHOT/JvmDefaultModeEnabled.kt new file mode 100644 index 000000000000..10a936ed9096 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_255-SNAPSHOT/JvmDefaultModeEnabled.kt @@ -0,0 +1,7 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.config.JvmDefaultMode + +fun jvmDefaultModeEnabledIsEnabled(jdm: JvmDefaultMode): Boolean { + return jdm.isEnabled +} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_255-SNAPSHOT/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_255-SNAPSHOT/Psi2Ir.kt new file mode 100644 index 000000000000..09c4f42e021a --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_255-SNAPSHOT/Psi2Ir.kt @@ -0,0 +1,21 @@ +package com.github.codeql.utils.versions + +import com.github.codeql.utils.Psi2IrFacade +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.ir.PsiSourceManager +import org.jetbrains.kotlin.backend.jvm.ir.getKtFile +import org.jetbrains.kotlin.ir.IrElement +import org.jetbrains.kotlin.ir.declarations.IrFile +import org.jetbrains.kotlin.psi.KtFile + +fun getPsi2Ir(): Psi2IrFacade? = Psi2Ir() + +private class Psi2Ir() : Psi2IrFacade { + override fun getKtFile(irFile: IrFile): KtFile? { + return irFile.getKtFile() + } + + override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? { + return PsiSourceManager.findPsiElement(irElement, irFile) + } +} diff --git a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.expected b/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.expected index 9f16308bdfc6..68f05e908f6f 100644 --- a/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.expected +++ b/java/ql/integration-tests/all-platforms/kotlin/kotlin_java_static_fields/test.expected @@ -1,12 +1,12 @@ edges -| hasFields.kt:5:5:5:34 | constField : String | ReadsFields.java:5:10:5:29 | HasFields.constField | -| hasFields.kt:5:28:5:34 | "taint" : String | hasFields.kt:5:5:5:34 | constField : String | -| hasFields.kt:7:5:7:38 | lateinitField : String | ReadsFields.java:6:10:6:32 | HasFields.lateinitField | -| hasFields.kt:7:14:7:38 | : String | hasFields.kt:7:5:7:38 | lateinitField : String | -| hasFields.kt:7:14:7:38 | : String | hasFields.kt:7:14:7:38 | : String | -| hasFields.kt:9:5:9:50 | jvmFieldAnnotatedField : String | ReadsFields.java:7:10:7:41 | HasFields.jvmFieldAnnotatedField | -| hasFields.kt:9:44:9:50 | "taint" : String | hasFields.kt:9:5:9:50 | jvmFieldAnnotatedField : String | -| hasFields.kt:14:22:14:26 | "taint" : String | hasFields.kt:7:14:7:38 | : String | +| hasFields.kt:5:5:5:34 | constField : String | ReadsFields.java:5:10:5:29 | HasFields.constField | provenance | | +| hasFields.kt:5:28:5:34 | "taint" : String | hasFields.kt:5:5:5:34 | constField : String | provenance | | +| hasFields.kt:7:5:7:38 | lateinitField : String | ReadsFields.java:6:10:6:32 | HasFields.lateinitField | provenance | | +| hasFields.kt:7:14:7:38 | : String | hasFields.kt:7:5:7:38 | lateinitField : String | provenance | | +| hasFields.kt:7:14:7:38 | : String | hasFields.kt:7:14:7:38 | : String | provenance | | +| hasFields.kt:9:5:9:50 | jvmFieldAnnotatedField : String | ReadsFields.java:7:10:7:41 | HasFields.jvmFieldAnnotatedField | provenance | | +| hasFields.kt:9:44:9:50 | "taint" : String | hasFields.kt:9:5:9:50 | jvmFieldAnnotatedField : String | provenance | | +| hasFields.kt:14:22:14:26 | "taint" : String | hasFields.kt:7:14:7:38 | : String | provenance | | nodes | ReadsFields.java:5:10:5:29 | HasFields.constField | semmle.label | HasFields.constField | | ReadsFields.java:6:10:6:32 | HasFields.lateinitField | semmle.label | HasFields.lateinitField | diff --git a/java/ql/lib/change-notes/2024-01-26-deprecated-path-creation.md b/java/ql/lib/change-notes/2024-01-26-deprecated-path-creation.md new file mode 100644 index 000000000000..c955a459ca08 --- /dev/null +++ b/java/ql/lib/change-notes/2024-01-26-deprecated-path-creation.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `PathCreation` class in `PathCreation.qll` has been deprecated. diff --git a/java/ql/lib/change-notes/2024-01-31-new-models.md b/java/ql/lib/change-notes/2024-01-31-new-models.md new file mode 100644 index 000000000000..bdb588f3bc38 --- /dev/null +++ b/java/ql/lib/change-notes/2024-01-31-new-models.md @@ -0,0 +1,17 @@ +--- +category: minorAnalysis +--- +* Added models for the following packages: + + * java.io + * java.lang + * java.net + * java.net.http + * java.nio.file + * java.util.zip + * javax.servlet + * org.apache.commons.io + * org.apache.hadoop.fs + * org.apache.hadoop.fs.s3a + * org.eclipse.jetty.client + * org.gradle.api.file diff --git a/java/ql/lib/change-notes/2024-02-09-url-redirect-sanitizer.md b/java/ql/lib/change-notes/2024-02-09-url-redirect-sanitizer.md new file mode 100644 index 000000000000..a4a81de3a024 --- /dev/null +++ b/java/ql/lib/change-notes/2024-02-09-url-redirect-sanitizer.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* An extension point for sanitizers of the query `java/unvalidated-url-redirection` has been added. diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index 1bd9251c29d8..ef0f4dbb0a6f 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -3,18 +3,19 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.io", "File", False, "File", "(File,String)", "", "Argument[1]", "path-injection", "manual"] # old PathCreation - - ["java.io", "File", False, "File", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - - ["java.io", "File", False, "File", "(String,String)", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation - - ["java.io", "File", False, "File", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - ["java.io", "File", True, "createNewFile", "()", "", "Argument[this]", "path-injection", "ai-manual"] - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["java.io", "File", True, "exists", "()", "", "Argument[this]", "path-injection", "manual"] - ["java.io", "File", True, "renameTo", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "File", True, "renameTo", "(File)", "", "Argument[this]", "path-injection", "ai-manual"] - ["java.io", "FileInputStream", True, "FileInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "FileInputStream", True, "FileInputStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileOutputStream", False, "FileOutputStream", "", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "FileOutputStream", False, "write", "", "", "Argument[0]", "file-content-store", "manual"] - ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileReader", True, "FileReader", "(FileDescriptor)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "FileReader", True, "FileReader", "(File,Charset)", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileReader", True, "FileReader", "(String,Charset)", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "FileSystem", True, "createDirectory", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] @@ -127,9 +128,8 @@ extensions: - ["java.io", "DataOutput", "writeLong", "(long)", "summary", "manual"] # taint-numeric # sink neutrals - ["java.io", "File", "compareTo", "", "sink", "hq-manual"] - - ["java.io", "File", "exists", "()", "sink", "hq-manual"] - addsTo: pack: codeql/java-all extensible: sourceModel data: - - ["java.io", "FileInputStream", True, "FileInputStream", "", "", "Argument[this]", "file", "manual"] \ No newline at end of file + - ["java.io", "FileInputStream", True, "FileInputStream", "", "", "Argument[this]", "file", "manual"] diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 0d09247f4c19..183ed225303f 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -5,6 +5,10 @@ extensions: data: - ["java.lang", "Class", False, "getResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "Class", False, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "ClassLoader", False, "getSystemResources", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getResources", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "ClassLoader", True, "getSystemResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "Module", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] @@ -14,6 +18,7 @@ extensions: - ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(List)", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(String[])", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "ProcessBuilder", False, "redirectError", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "ProcessBuilder", False, "redirectOutput", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.lang", "Runtime", True, "exec", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "Runtime", True, "exec", "(String[])", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "Runtime", True, "exec", "(String[],String[])", "", "Argument[0]", "command-injection", "ai-manual"] diff --git a/java/ql/lib/ext/java.net.http.model.yml b/java/ql/lib/ext/java.net.http.model.yml index 9fc18d2eaab3..b920eb3da086 100644 --- a/java/ql/lib/ext/java.net.http.model.yml +++ b/java/ql/lib/ext/java.net.http.model.yml @@ -8,5 +8,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["java.net.http", "HttpClient", True, "send", "(HttpRequest,HttpResponse$BodyHandler)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["java.net.http", "HttpRequest", False, "newBuilder", "", "", "Argument[0]", "request-forgery", "manual"] - ["java.net.http", "HttpRequest$Builder", False, "uri", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 521d42b9c0fa..afdf3320b088 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -44,6 +44,7 @@ extensions: - ["java.net", "InetSocketAddress", True, "InetSocketAddress", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] - ["java.net", "URI", False, "resolve", "(URI)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - ["java.net", "URI", False, "URI", "(String,String,String,int,String,String,String)", "", "Argument[5]", "Argument[this].SyntheticField[java.net.URI.query]", "taint", "ai-manual"] + - ["java.net", "URI", False, "URI", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] - ["java.net", "URI", False, "URI", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.net", "URI", False, "create", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.net", "URI", False, "resolve", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index 3c77c876eee1..39a83291fc03 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -18,6 +18,7 @@ extensions: - ["java.nio.file", "Files", False, "delete", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "getFileStore", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # the FileStore class is unlikely to be used for later sanitization + - ["java.nio.file", "Files", False, "exists", "(Path,LinkOption[])", "", "Argument[0]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "lines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "lines", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "move", "", "", "Argument[1]", "path-injection", "manual"] @@ -27,6 +28,7 @@ extensions: - ["java.nio.file", "Files", False, "newBufferedWriter", "", "", "Argument[0]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "newOutputStream", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "notExists", "(Path,LinkOption[])", "", "Argument[0]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "probeContentType", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # accesses the file based on user input, but only reads its content type from it - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] @@ -37,15 +39,8 @@ extensions: - ["java.nio.file", "Files", False, "write", "", "", "Argument[1]", "file-content-store", "manual"] - ["java.nio.file", "Files", False, "writeString", "", "", "Argument[0]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "writeString", "", "", "Argument[1]", "file-content-store", "manual"] - - ["java.nio.file", "FileSystem", False, "getPath", "", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map)", "", "Argument[0]", "request-forgery", "ai-manual"] - - ["java.nio.file", "Path", False, "of", "(String,String[])", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation - - ["java.nio.file", "Path", False, "of", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - - ["java.nio.file", "Path", False, "resolve", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - - ["java.nio.file", "Path", False, "resolveSibling", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - - ["java.nio.file", "Paths", False, "get", "(String,String[])", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation - - ["java.nio.file", "Paths", False, "get", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation - ["java.nio.file", "SecureDirectoryStream", True, "deleteDirectory", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "SecureDirectoryStream", True, "deleteFile", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - addsTo: @@ -63,10 +58,11 @@ extensions: - ["java.nio.file", "Files", True, "newDirectoryStream", "(Path,DirectoryStream$Filter)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Files", True, "newDirectoryStream", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Files", True, "walk", "(Path,FileVisitOption[])", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - - ["java.nio.file", "FileSystem", True, "getPath", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio.file", "FileSystem", True, "getPath", "(String,String[])", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "FileSystem", True, "getPath", "(String,String[])", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "FileSystem", True, "getPathMatcher", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "FileSystem", True, "getRootDirectories", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio.file", "FileSystems", False, "getFileSystem", "(URI)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Path", True, "getFileName", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "getParent", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "normalize", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] @@ -76,7 +72,8 @@ extensions: - ["java.nio.file", "Path", True, "relativize", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.nio.file", "Path", True, "resolveSibling", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["java.nio.file", "Path", True, "resolveSibling", "", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["java.nio.file", "Path", True, "resolveSibling", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toAbsolutePath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", False, "toFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] @@ -95,7 +92,6 @@ extensions: # summary neutrals - ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "summary", "manual"] # sink neutrals - - ["java.nio.file", "Files", "exists", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "getLastModifiedTime", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "getOwner", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "getPosixFilePermissions", "", "sink", "hq-manual"] @@ -107,6 +103,5 @@ extensions: - ["java.nio.file", "Files", "isSameFile", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "isSymbolicLink", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "isWritable", "", "sink", "hq-manual"] - - ["java.nio.file", "Files", "notExists", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "setLastModifiedTime", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "size", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.util.zip.model.yml b/java/ql/lib/ext/java.util.zip.model.yml index 577e6b357235..611fc7804ef1 100644 --- a/java/ql/lib/ext/java.util.zip.model.yml +++ b/java/ql/lib/ext/java.util.zip.model.yml @@ -5,6 +5,7 @@ extensions: data: - ["java.util.zip", "GZIPInputStream", False, "GZIPInputStream", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.util.zip", "ZipEntry", True, "ZipEntry", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["java.util.zip", "ZipFile", True, "getInputStream", "(ZipEntry)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.util.zip", "ZipInputStream", False, "ZipInputStream", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] - addsTo: pack: codeql/java-all diff --git a/java/ql/lib/ext/org.apache.commons.io.model.yml b/java/ql/lib/ext/org.apache.commons.io.model.yml index 20de13c5366a..fccecd72912b 100644 --- a/java/ql/lib/ext/org.apache.commons.io.model.yml +++ b/java/ql/lib/ext/org.apache.commons.io.model.yml @@ -21,6 +21,7 @@ extensions: - ["org.apache.commons.io", "FileUtils", False, "forceMkdir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "moveDirectory", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "readFileToByteArray", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", False, "readFileToString", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "writeLines", "(File,String,Collection,String)", "", "Argument[3]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "writeStringToFile", "(File,String,Charset,boolean)", "", "Argument[1]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[0]", "file-content-store", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.hadoop.fs.model.yml b/java/ql/lib/ext/org.apache.hadoop.fs.model.yml index ba819b737766..d8b6febd1f88 100644 --- a/java/ql/lib/ext/org.apache.hadoop.fs.model.yml +++ b/java/ql/lib/ext/org.apache.hadoop.fs.model.yml @@ -3,6 +3,7 @@ extensions: pack: codeql/java-all extensible: summaryModel data: + - ["org.apache.hadoop.fs", "FileSystem", True, "makeQualified", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["org.apache.hadoop.fs", "Path", True, "Path", "(Path,Path)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] - ["org.apache.hadoop.fs", "Path", True, "Path", "(Path,Path)", "", "Argument[1]", "Argument[this]", "taint", "ai-manual"] - ["org.apache.hadoop.fs", "Path", True, "Path", "(Path,String)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] @@ -13,3 +14,9 @@ extensions: - ["org.apache.hadoop.fs", "Path", True, "Path", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "ai-manual"] - ["org.apache.hadoop.fs", "Path", True, "Path", "(String)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] - ["org.apache.hadoop.fs", "Path", True, "Path", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.apache.hadoop.fs", "FileSystem", True, "rename", "(Path,Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.hadoop.fs", "FileSystem", True, "rename", "(Path,Path)", "", "Argument[1]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.hadoop.fs.s3a.model.yml b/java/ql/lib/ext/org.apache.hadoop.fs.s3a.model.yml new file mode 100644 index 000000000000..4d5d9484335e --- /dev/null +++ b/java/ql/lib/ext/org.apache.hadoop.fs.s3a.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.apache.hadoop.fs.s3a", "WriteOperationHelper", True, "createPutObjectRequest", "(String,File)", "", "Argument[1]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.eclipse.jetty.client.model.yml b/java/ql/lib/ext/org.eclipse.jetty.client.model.yml index 28c3430e8184..bd3b4f58e722 100644 --- a/java/ql/lib/ext/org.eclipse.jetty.client.model.yml +++ b/java/ql/lib/ext/org.eclipse.jetty.client.model.yml @@ -3,4 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["org.eclipse.jetty.client", "HttpClient", True, "GET", "(String)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["org.eclipse.jetty.client", "HttpClient", True, "newRequest", "(String)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/org.gradle.api.file.model.yml b/java/ql/lib/ext/org.gradle.api.file.model.yml index 4f492cdbcbc1..c3d202aab39c 100644 --- a/java/ql/lib/ext/org.gradle.api.file.model.yml +++ b/java/ql/lib/ext/org.gradle.api.file.model.yml @@ -4,4 +4,5 @@ extensions: extensible: summaryModel data: - ["org.gradle.api.file", "Directory", True, "getAsFile", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["org.gradle.api.file", "DirectoryProperty", True, "dir", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["org.gradle.api.file", "DirectoryProperty", True, "file", "(String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index be3976b84588..74f37a4a4514 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -378,7 +378,17 @@ class ArrayInit extends Expr, @arrayinit { override string getAPrimaryQlClass() { result = "ArrayInit" } } -/** A common super-class that represents all varieties of assignments. */ +/** + * A common super-class that represents many varieties of assignments. + * + * This does not cover unary assignments such as `i++`, and initialization of + * local variables at their declaration such as `int i = 0;`. + * + * To cover more cases of variable updates, see the classes `VariableAssign`, + * `VariableUpdate` and `VarWrite`. But consider that they don't cover array + * element assignments since there the assignment destination is not directly + * the array variable but instead an `ArrayAccess`. + */ class Assignment extends Expr, @assignment { /** Gets the destination (left-hand side) of the assignment. */ Expr getDest() { result.isNthChildOf(this, 0) } @@ -1781,6 +1791,9 @@ class VariableUpdate extends Expr { /** * An assignment to a variable or an initialization of the variable. + * + * This does not cover compound assignments such as `i += 1`, or unary + * assignments such as `i++`; use the class `VariableUpdate` for that. */ class VariableAssign extends VariableUpdate { VariableAssign() { @@ -1979,6 +1992,9 @@ class ExtensionReceiverAccess extends VarAccess { /** * A write access to a variable, which occurs as the destination of an assignment. + * + * This does not cover the initialization of local variables at their declaration, + * use the class `VariableUpdate` if you want to cover that as well. */ class VarWrite extends VarAccess { VarWrite() { this.isVarWrite() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 2442671ac523..b14bbb0ab9be 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -178,6 +178,10 @@ private predicate captureReadStep(Node node1, CapturedVariableContent c, Node no CaptureFlow::readStep(asClosureNode(node1), c.getVariable(), asClosureNode(node2)) } +private predicate captureClearsContent(Node node, CapturedVariableContent c) { + CaptureFlow::clearsContent(asClosureNode(node), c.getVariable()) +} + predicate captureValueStep(Node node1, Node node2) { CaptureFlow::localFlowStep(asClosureNode(node1), asClosureNode(node2)) } @@ -311,6 +315,8 @@ predicate clearsContent(Node n, ContentSet c) { ) or FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) + or + captureClearsContent(n, c) } /** diff --git a/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll new file mode 100644 index 000000000000..ca725a041d56 --- /dev/null +++ b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll @@ -0,0 +1,42 @@ +/** Definitions for the insecure local authentication query. */ + +import java + +/** A base class that is used as a callback for biometric authentication. */ +private class AuthenticationCallbackClass extends Class { + AuthenticationCallbackClass() { + this.hasQualifiedName("android.hardware.fingerprint", + "FingerprintManager$AuthenticationCallback") + or + this.hasQualifiedName("android.hardware.biometrics", "BiometricPrompt$AuthenticationCallback") + or + this.hasQualifiedName("androidx.biometric", "BiometricPrompt$AuthenticationCallback") + } +} + +/** An implementation of the `onAuthenticationSucceeded` method for an authentication callback. */ +class AuthenticationSuccessCallback extends Method { + AuthenticationSuccessCallback() { + this.getDeclaringType().getASupertype+() instanceof AuthenticationCallbackClass and + this.hasName("onAuthenticationSucceeded") + } + + /** Gets the parameter containing the `authenticationResult`. */ + Parameter getResultParameter() { result = this.getParameter(0) } + + /** Gets a use of the result parameter that's used in a `super` call to the base `AuthenticationCallback` class. */ + private VarAccess getASuperResultUse() { + exists(SuperMethodCall sup | + sup.getEnclosingCallable() = this and + result = sup.getArgument(0) and + result = this.getResultParameter().getAnAccess() and + this.getDeclaringType().getASupertype() instanceof AuthenticationCallbackClass + ) + } + + /** Gets a use of the result parameter, other than one used in a `super` call. */ + VarAccess getAResultUse() { + result = this.getResultParameter().getAnAccess() and + not result = this.getASuperResultUse() + } +} diff --git a/java/ql/lib/semmle/code/java/security/PathCreation.qll b/java/ql/lib/semmle/code/java/security/PathCreation.qll index 924d42674fbb..3d40a1d4fdb5 100644 --- a/java/ql/lib/semmle/code/java/security/PathCreation.qll +++ b/java/ql/lib/semmle/code/java/security/PathCreation.qll @@ -1,11 +1,13 @@ /** + * DEPRECATED. + * * Models the different ways to create paths. Either by using `java.io.File`-related APIs or `java.nio.file.Path`-related APIs. */ import java -/** Models the creation of a path. */ -abstract class PathCreation extends Expr { +/** DEPRECATED: Models the creation of a path. */ +abstract deprecated class PathCreation extends Expr { /** * Gets an input that is used in the creation of this path. * This excludes inputs of type `File` and `Path`. @@ -14,7 +16,7 @@ abstract class PathCreation extends Expr { } /** Models the `java.nio.file.Paths.get` method. */ -private class PathsGet extends PathCreation, MethodCall { +deprecated private class PathsGet extends PathCreation, MethodCall { PathsGet() { exists(Method m | m = this.getMethod() | m.getDeclaringType() instanceof TypePaths and @@ -26,7 +28,7 @@ private class PathsGet extends PathCreation, MethodCall { } /** Models the `java.nio.file.FileSystem.getPath` method. */ -private class FileSystemGetPath extends PathCreation, MethodCall { +deprecated private class FileSystemGetPath extends PathCreation, MethodCall { FileSystemGetPath() { exists(Method m | m = this.getMethod() | m.getDeclaringType() instanceof TypeFileSystem and @@ -38,7 +40,7 @@ private class FileSystemGetPath extends PathCreation, MethodCall { } /** Models the `new java.io.File(...)` constructor. */ -private class FileCreation extends PathCreation, ClassInstanceExpr { +deprecated private class FileCreation extends PathCreation, ClassInstanceExpr { FileCreation() { this.getConstructedType() instanceof TypeFile } override Expr getAnInput() { @@ -49,7 +51,7 @@ private class FileCreation extends PathCreation, ClassInstanceExpr { } /** Models the `java.nio.file.Path.resolveSibling` method. */ -private class PathResolveSiblingCreation extends PathCreation, MethodCall { +deprecated private class PathResolveSiblingCreation extends PathCreation, MethodCall { PathResolveSiblingCreation() { exists(Method m | m = this.getMethod() | m.getDeclaringType() instanceof TypePath and @@ -65,7 +67,7 @@ private class PathResolveSiblingCreation extends PathCreation, MethodCall { } /** Models the `java.nio.file.Path.resolve` method. */ -private class PathResolveCreation extends PathCreation, MethodCall { +deprecated private class PathResolveCreation extends PathCreation, MethodCall { PathResolveCreation() { exists(Method m | m = this.getMethod() | m.getDeclaringType() instanceof TypePath and @@ -81,7 +83,7 @@ private class PathResolveCreation extends PathCreation, MethodCall { } /** Models the `java.nio.file.Path.of` method. */ -private class PathOfCreation extends PathCreation, MethodCall { +deprecated private class PathOfCreation extends PathCreation, MethodCall { PathOfCreation() { exists(Method m | m = this.getMethod() | m.getDeclaringType() instanceof TypePath and @@ -93,7 +95,7 @@ private class PathOfCreation extends PathCreation, MethodCall { } /** Models the `new java.io.FileWriter(...)` constructor. */ -private class FileWriterCreation extends PathCreation, ClassInstanceExpr { +deprecated private class FileWriterCreation extends PathCreation, ClassInstanceExpr { FileWriterCreation() { this.getConstructedType().hasQualifiedName("java.io", "FileWriter") } override Expr getAnInput() { @@ -104,7 +106,7 @@ private class FileWriterCreation extends PathCreation, ClassInstanceExpr { } /** Models the `new java.io.FileReader(...)` constructor. */ -private class FileReaderCreation extends PathCreation, ClassInstanceExpr { +deprecated private class FileReaderCreation extends PathCreation, ClassInstanceExpr { FileReaderCreation() { this.getConstructedType().hasQualifiedName("java.io", "FileReader") } override Expr getAnInput() { @@ -115,7 +117,7 @@ private class FileReaderCreation extends PathCreation, ClassInstanceExpr { } /** Models the `new java.io.FileInputStream(...)` constructor. */ -private class FileInputStreamCreation extends PathCreation, ClassInstanceExpr { +deprecated private class FileInputStreamCreation extends PathCreation, ClassInstanceExpr { FileInputStreamCreation() { this.getConstructedType().hasQualifiedName("java.io", "FileInputStream") } @@ -128,7 +130,7 @@ private class FileInputStreamCreation extends PathCreation, ClassInstanceExpr { } /** Models the `new java.io.FileOutputStream(...)` constructor. */ -private class FileOutputStreamCreation extends PathCreation, ClassInstanceExpr { +deprecated private class FileOutputStreamCreation extends PathCreation, ClassInstanceExpr { FileOutputStreamCreation() { this.getConstructedType().hasQualifiedName("java.io", "FileOutputStream") } diff --git a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll index 85265f6b169b..63bd4949699a 100644 --- a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll @@ -8,6 +8,13 @@ private import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.security.PathSanitizer private import semmle.code.java.security.Sanitizers +/** A sink for tainted path flow configurations. */ +abstract class TaintedPathSink extends DataFlow::Node { } + +private class DefaultTaintedPathSink extends TaintedPathSink { + DefaultTaintedPathSink() { sinkNode(this, "path-injection") } +} + /** * A unit class for adding additional taint steps. * @@ -55,7 +62,7 @@ private class TaintPreservingUriCtorParam extends Parameter { module TaintedPathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } - predicate isSink(DataFlow::Node sink) { sinkNode(sink, "path-injection") } + predicate isSink(DataFlow::Node sink) { sink instanceof TaintedPathSink } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof SimpleTypeSanitizer or @@ -76,7 +83,7 @@ module TaintedPathFlow = TaintTracking::Global; module TaintedPathLocalConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - predicate isSink(DataFlow::Node sink) { sinkNode(sink, "path-injection") } + predicate isSink(DataFlow::Node sink) { sink instanceof TaintedPathSink } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof SimpleTypeSanitizer or diff --git a/java/ql/lib/semmle/code/java/security/UrlRedirect.qll b/java/ql/lib/semmle/code/java/security/UrlRedirect.qll index 5877358eaf09..e806905c1674 100644 --- a/java/ql/lib/semmle/code/java/security/UrlRedirect.qll +++ b/java/ql/lib/semmle/code/java/security/UrlRedirect.qll @@ -6,10 +6,14 @@ private import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.frameworks.Servlets import semmle.code.java.frameworks.ApacheHttp private import semmle.code.java.frameworks.JaxWS +private import semmle.code.java.security.RequestForgery /** A URL redirection sink. */ abstract class UrlRedirectSink extends DataFlow::Node { } +/** A URL redirection sanitizer. */ +abstract class UrlRedirectSanitizer extends DataFlow::Node { } + /** A default sink represeting methods susceptible to URL redirection attacks. */ private class DefaultUrlRedirectSink extends UrlRedirectSink { DefaultUrlRedirectSink() { sinkNode(this, "url-redirection") } @@ -42,3 +46,6 @@ private class ApacheUrlRedirectSink extends UrlRedirectSink { ) } } + +private class DefaultUrlRedirectSanitizer extends UrlRedirectSanitizer instanceof RequestForgerySanitizer +{ } diff --git a/java/ql/lib/semmle/code/java/security/UrlRedirectQuery.qll b/java/ql/lib/semmle/code/java/security/UrlRedirectQuery.qll index cdae78393665..675937985c48 100644 --- a/java/ql/lib/semmle/code/java/security/UrlRedirectQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlRedirectQuery.qll @@ -11,6 +11,8 @@ module UrlRedirectConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } predicate isSink(DataFlow::Node sink) { sink instanceof UrlRedirectSink } + + predicate isBarrier(DataFlow::Node node) { node instanceof UrlRedirectSanitizer } } /** diff --git a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll index 10db2997bef1..7ba99a31e268 100644 --- a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll @@ -41,28 +41,5 @@ module ZipSlipFlow = TaintTracking::Global; * A sink that represents a file creation, such as a file write, copy or move operation. */ private class FileCreationSink extends DataFlow::Node { - FileCreationSink() { - sinkNode(this, "path-injection") and - not isPathCreation(this) - } -} - -/** - * Holds if `sink` is a path creation node that doesn't imply a read/write filesystem operation. - * This is to avoid creating new spurious alerts, since `PathCreation` sinks weren't - * previously part of this query. - */ -private predicate isPathCreation(DataFlow::Node sink) { - exists(PathCreation pc | - pc.getAnInput() = sink.asExpr() - or - pc.getAnInput().(Argument).isVararg() and sink.(DataFlow::ImplicitVarargsArray).getCall() = pc - | - // exclude actual read/write operations included in `PathCreation` - not pc.(Call) - .getCallee() - .getDeclaringType() - .hasQualifiedName("java.io", - ["FileInputStream", "FileOutputStream", "FileReader", "FileWriter"]) - ) + FileCreationSink() { sinkNode(this, "path-injection") } } diff --git a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql index 96e8e66c7cdb..3963442d6489 100644 --- a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql +++ b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql @@ -18,21 +18,7 @@ import semmle.code.java.security.PathCreation import semmle.code.java.security.TaintedPathQuery import TaintedPathFlow::PathGraph -/** - * Gets the data-flow node at which to report a path ending at `sink`. - * - * Previously this query flagged alerts exclusively at `PathCreation` sites, - * so to avoid perturbing existing alerts, where a `PathCreation` exists we - * continue to report there; otherwise we report directly at `sink`. - */ -DataFlow::Node getReportingNode(DataFlow::Node sink) { - TaintedPathFlow::flowTo(sink) and - if exists(PathCreation pc | pc.getAnInput() = sink.asExpr()) - then result.asExpr() = any(PathCreation pc | pc.getAnInput() = sink.asExpr()) - else result = sink -} - from TaintedPathFlow::PathNode source, TaintedPathFlow::PathNode sink where TaintedPathFlow::flowPath(source, sink) -select getReportingNode(sink.getNode()), source, sink, "This path depends on a $@.", - source.getNode(), "user-provided value" +select sink.getNode(), source, sink, "This path depends on a $@.", source.getNode(), + "user-provided value" diff --git a/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql index 8e56121883f5..60dc6b54be85 100644 --- a/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql +++ b/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql @@ -18,21 +18,7 @@ import semmle.code.java.security.PathCreation import semmle.code.java.security.TaintedPathQuery import TaintedPathLocalFlow::PathGraph -/** - * Gets the data-flow node at which to report a path ending at `sink`. - * - * Previously this query flagged alerts exclusively at `PathCreation` sites, - * so to avoid perturbing existing alerts, where a `PathCreation` exists we - * continue to report there; otherwise we report directly at `sink`. - */ -DataFlow::Node getReportingNode(DataFlow::Node sink) { - TaintedPathLocalFlow::flowTo(sink) and - if exists(PathCreation pc | pc.getAnInput() = sink.asExpr()) - then result.asExpr() = any(PathCreation pc | pc.getAnInput() = sink.asExpr()) - else result = sink -} - from TaintedPathLocalFlow::PathNode source, TaintedPathLocalFlow::PathNode sink where TaintedPathLocalFlow::flowPath(source, sink) -select getReportingNode(sink.getNode()), source, sink, "This path depends on a $@.", - source.getNode(), "user-provided value" +select sink.getNode(), source, sink, "This path depends on a $@.", source.getNode(), + "user-provided value" diff --git a/java/ql/src/Security/CWE/CWE-078/ExecRelative.ql b/java/ql/src/Security/CWE/CWE-078/ExecRelative.ql index 501826c6426f..533980a3f0a4 100644 --- a/java/ql/src/Security/CWE/CWE-078/ExecRelative.ql +++ b/java/ql/src/Security/CWE/CWE-078/ExecRelative.ql @@ -4,7 +4,7 @@ * malicious changes in the PATH environment variable. * @kind problem * @problem.severity warning - * @security-severity 9.8 + * @security-severity 5.4 * @precision medium * @id java/relative-path-command * @tags security diff --git a/java/ql/src/Security/CWE/CWE-200/TempDirLocalInformationDisclosure.ql b/java/ql/src/Security/CWE/CWE-200/TempDirLocalInformationDisclosure.ql index 6efb7e9104c6..6e0aa9e9cd9e 100644 --- a/java/ql/src/Security/CWE/CWE-200/TempDirLocalInformationDisclosure.ql +++ b/java/ql/src/Security/CWE/CWE-200/TempDirLocalInformationDisclosure.ql @@ -25,7 +25,11 @@ import semmle.code.java.security.TempDirLocalInformationDisclosureQuery * resulting in a zero-length paths. */ module InsecureMethodPathGraph implements DataFlow::PathGraphSig { - predicate edges(MethodCallInsecureFileCreation n1, MethodCallInsecureFileCreation n2) { none() } + predicate edges( + MethodCallInsecureFileCreation n1, MethodCallInsecureFileCreation n2, string key, string value + ) { + none() + } predicate nodes(MethodCallInsecureFileCreation n, string key, string val) { key = "semmle.label" and val = n.toString() diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp new file mode 100644 index 000000000000..672e1a1a1ab8 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp @@ -0,0 +1,42 @@ + + + + +

+Biometric local authentication such as fingerprint recognition can be used to protect sensitive data or actions within an application. +However, if this authentication does not use a KeyStore-backed key, it can be bypassed by a privileged malicious application, or by an attacker with physical access using application hooking tools such as Frida. +

+
+ + +

+Generate a secure key in the Android KeyStore. Ensure that the onAuthenticationSuccess callback for a biometric prompt uses it +in a way that is required for the sensitive parts of the application to function, such as by using it to decrypt sensitive data or credentials. +

+
+ + +

In the following (bad) case, no CryptoObject is required for the biometric prompt to grant access, so it can be bypassed.

+ +

In the following (good) case, a secret key is generated in the Android KeyStore. The application requires this secret key for access, using it to decrypt data.

+ +
+ + +
  • +OWASP Mobile Application Security: Android Local Authentication +
  • +
  • +OWASP Mobile Application Security: Testing Biometric Authentication +
  • +
  • +WithSecure: How Secure is your Android Keystore Authentication? +
  • +
  • +Android Developers: Biometric Authentication +
  • + +
    +
    diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql new file mode 100644 index 000000000000..92256a2b779c --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql @@ -0,0 +1,18 @@ +/** + * @name Insecure local authentication + * @description Local authentication that does not make use of a `CryptoObject` can be bypassed. + * @kind problem + * @problem.severity warning + * @security-severity 4.4 + * @precision high + * @id java/android/insecure-local-authentication + * @tags security + * external/cwe/cwe-287 + */ + +import java +import semmle.code.java.security.AndroidLocalAuthQuery + +from AuthenticationSuccessCallback c +where not exists(c.getAResultUse()) +select c, "This authentication callback does not use its result for a cryptographic operation." diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationBad.java b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationBad.java new file mode 100644 index 000000000000..464153ccbee8 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationBad.java @@ -0,0 +1,11 @@ +biometricPrompt.authenticate( + cancellationSignal, + executor, + new BiometricPrompt.AuthenticationCallback { + @Override + // BAD: This authentication callback does not make use of a `CryptoObject` from the `result`. + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + grantAccess() + } + } +) \ No newline at end of file diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java new file mode 100644 index 000000000000..2ffcbbb6e261 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java @@ -0,0 +1,48 @@ +private void generateSecretKey() { + KeyGenParameterSpec keyGenParameterSpec = new KeyGenParameterSpec.Builder( + "MySecretKey", + KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT) + .setBlockModes(KeyProperties.BLOCK_MODE_CBC) + .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) + .setUserAuthenticationRequired(true) + .setInvalidatedByBiometricEnrollment(true) + .build(); + KeyGenerator keyGenerator = KeyGenerator.getInstance( + KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore"); + keyGenerator.init(keyGenParameterSpec); + keyGenerator.generateKey(); +} + + +private SecretKey getSecretKey() { + KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore"); + keyStore.load(null); + return ((SecretKey)keyStore.getKey("MySecretKey", null)); +} + +private Cipher getCipher() { + return Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + + KeyProperties.BLOCK_MODE_CBC + "/" + + KeyProperties.ENCRYPTION_PADDING_PKCS7); +} + +public prompt(byte[] encryptedData) { + Cipher cipher = getCipher(); + SecretKey secretKey = getSecretKey(); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + + biometricPrompt.authenticate( + new BiometricPrompt.CryptoObject(cipher), + cancellationSignal, + executor, + new BiometricPrompt.AuthenticationCallback() { + @Override + // GOOD: This authentication callback uses the result to decrypt some data. + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + Cipher cipher = result.getCryptoObject().getCipher(); + byte[] decryptedData = cipher.doFinal(encryptedData); + grantAccessWithData(decryptedData); + } + } + ); +} \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-01-26-path-injection-precision-improved.md b/java/ql/src/change-notes/2024-01-26-path-injection-precision-improved.md new file mode 100644 index 000000000000..763cedea45da --- /dev/null +++ b/java/ql/src/change-notes/2024-01-26-path-injection-precision-improved.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The sinks of the queries `java/path-injection` and `java/path-injection-local` have been reworked. Path creation sinks have been converted to summaries instead, while sinks now are actual file read/write operations only. This has reduced the false positive ratio of both queries. diff --git a/java/ql/src/change-notes/2024-02-02-android-insecure-local-auth.md b/java/ql/src/change-notes/2024-02-02-android-insecure-local-auth.md new file mode 100644 index 000000000000..dc7ebcaade3b --- /dev/null +++ b/java/ql/src/change-notes/2024-02-02-android-insecure-local-auth.md @@ -0,0 +1,5 @@ + +--- +category: newQuery +--- +* Added a new query `java/android/insecure-local-authentication` for finding uses of biometric authentication APIs that do not make use of a `KeyStore`-backed key and thus may be bypassed. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-02-09-url-redirect-sanitizer.md b/java/ql/src/change-notes/2024-02-09-url-redirect-sanitizer.md new file mode 100644 index 000000000000..f06978c82117 --- /dev/null +++ b/java/ql/src/change-notes/2024-02-09-url-redirect-sanitizer.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `java/unvalidated-url-redirection` now sanitizes results following the same logic as the query `java/ssrf`. URLs the destination of which cannot be externally controlled will not be reported anymore. diff --git a/java/ql/src/change-notes/2024-02-12-relative-exec-severity.md b/java/ql/src/change-notes/2024-02-12-relative-exec-severity.md new file mode 100644 index 000000000000..ce54d7fc6450 --- /dev/null +++ b/java/ql/src/change-notes/2024-02-12-relative-exec-severity.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* The `security-severity` score of the query `java/relative-path-command` has been reduced to better adjust it to the specific conditions needed for exploitation. diff --git a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql index d0b59bf1136d..6fab554ac672 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql @@ -16,6 +16,7 @@ import java import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.FlowSources +import semmle.code.java.security.TaintedPathQuery import JFinalController import semmle.code.java.security.PathSanitizer private import semmle.code.java.security.Sanitizers @@ -52,7 +53,7 @@ module InjectFilePathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } predicate isSink(DataFlow::Node sink) { - sinkNode(sink, "path-injection") and + sink instanceof TaintedPathSink and not sink instanceof NormalizedPathNode } diff --git a/java/ql/test-kotlin2/library-tests/interface-delegate/test.expected b/java/ql/test-kotlin2/library-tests/interface-delegate/test.expected index a5576a6c0837..8fef9ecf8ff2 100644 --- a/java/ql/test-kotlin2/library-tests/interface-delegate/test.expected +++ b/java/ql/test-kotlin2/library-tests/interface-delegate/test.expected @@ -1,8 +1,8 @@ fields | intfDelegate.kt:7:18:9:1 | $$delegate_0 | intfDelegate.kt:7:26:9:1 | | #select -| intfDelegate.kt:0:0:0:0 | f | intfDelegate.kt:7:1:10:1 | Concrete | | intfDelegate.kt:3:3:3:15 | f | intfDelegate.kt:1:1:5:1 | Intf | | intfDelegate.kt:7:1:10:1 | Concrete | intfDelegate.kt:7:1:10:1 | Concrete | +| intfDelegate.kt:7:1:10:1 | f | intfDelegate.kt:7:1:10:1 | Concrete | | intfDelegate.kt:7:26:9:1 | | intfDelegate.kt:7:26:9:1 | new Intf(...) { ... } | | intfDelegate.kt:8:3:8:28 | f | intfDelegate.kt:7:26:9:1 | new Intf(...) { ... } | diff --git a/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected b/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected index 4ccb82a3d0dd..0fe94ff8a25a 100644 --- a/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected +++ b/java/ql/test-kotlin2/library-tests/java-kotlin-collection-type-generic-methods/test.expected @@ -54,7 +54,7 @@ methodWithDuplicate | AbstractList | set | int | | AbstractList | subList | int | | AbstractList | subListRangeCheck | int | -| AbstractMap | containsEntry$kotlin_stdlib | Entry | +| AbstractMap | containsEntry$main | Entry | | AbstractMap | containsKey | Object | | AbstractMap | containsValue | Object | | AbstractMap | equals | Object | @@ -79,7 +79,7 @@ methodWithDuplicate | AbstractMap | put | V | | AbstractMap | putAll | Map | | AbstractMap | remove | Object | -| AbstractMap | containsEntry$kotlin_stdlib | Entry | +| AbstractMap | containsEntry$main | Entry | | AbstractMap | containsKey | Object | | AbstractMap | containsValue | Object | | AbstractMap | equals | Object | @@ -121,7 +121,6 @@ methodWithDuplicate | Collection> | addAll | Collection> | | Collection> | contains | Object | | Collection> | containsAll | Collection | -| Collection> | equals | Object | | Collection> | remove | Object | | Collection> | removeAll | Collection | | Collection> | removeIf | Predicate> | @@ -132,7 +131,6 @@ methodWithDuplicate | Collection | addAll | Collection | | Collection | contains | Object | | Collection | containsAll | Collection | -| Collection | equals | Object | | Collection | remove | Object | | Collection | removeAll | Collection | | Collection | removeIf | Predicate | @@ -154,7 +152,6 @@ methodWithDuplicate | Collection | addAll | Collection | | Collection | contains | Object | | Collection | containsAll | Collection | -| Collection | equals | Object | | Collection | remove | Object | | Collection | removeAll | Collection | | Collection | removeIf | Predicate | @@ -194,7 +191,6 @@ methodWithDuplicate | List | contains | Object | | List | containsAll | Collection | | List | copyOf | Collection | -| List | equals | Object | | List | get | int | | List | indexOf | Object | | List | lastIndexOf | Object | @@ -279,7 +275,6 @@ methodWithDuplicate | Map> | copyOf | Map | | Map> | entry | K | | Map> | entry | V | -| Map> | equals | Object | | Map> | forEach | BiConsumer> | | Map> | get | Object | | Map> | getOrDefault | Entry | @@ -310,7 +305,6 @@ methodWithDuplicate | Map | copyOf | Map | | Map | entry | K | | Map | entry | V | -| Map | equals | Object | | Map | forEach | BiConsumer | | Map | get | Object | | Map | getOrDefault | Object | @@ -341,7 +335,6 @@ methodWithDuplicate | Map | copyOf | Map | | Map | entry | K | | Map | entry | V | -| Map | equals | Object | | Map | forEach | BiConsumer | | Map | get | Object | | Map | getOrDefault | Object | diff --git a/java/ql/test-kotlin2/library-tests/methods/exprs.expected b/java/ql/test-kotlin2/library-tests/methods/exprs.expected index 7c494f6e3926..83068826c197 100644 --- a/java/ql/test-kotlin2/library-tests/methods/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/methods/exprs.expected @@ -277,19 +277,19 @@ | enumClass.kt:8:3:11:4 | VAL | TypeAccess | | enumClass.kt:8:3:11:4 | new EnumWithFunctions(...) | ClassInstanceExpr | | enumClass.kt:8:3:11:4 | new VAL(...) | ClassInstanceExpr | -| enumClass.kt:9:14:9:30 | int | TypeAccess | +| enumClass.kt:9:5:9:30 | int | TypeAccess | | enumClass.kt:9:20:9:25 | int | TypeAccess | | enumClass.kt:9:30:9:30 | i | VarAccess | -| enumClass.kt:10:14:10:42 | int | TypeAccess | +| enumClass.kt:10:5:10:42 | int | TypeAccess | | enumClass.kt:10:20:10:25 | int | TypeAccess | | enumClass.kt:10:30:10:33 | this | ThisAccess | | enumClass.kt:10:30:10:38 | f(...) | MethodCall | | enumClass.kt:10:30:10:42 | ... + ... | AddExpr | | enumClass.kt:10:37:10:37 | i | VarAccess | | enumClass.kt:10:42:10:42 | i | VarAccess | -| enumClass.kt:13:12:13:29 | int | TypeAccess | +| enumClass.kt:13:3:13:29 | int | TypeAccess | | enumClass.kt:13:18:13:23 | int | TypeAccess | -| enumClass.kt:14:12:14:29 | int | TypeAccess | +| enumClass.kt:14:3:14:29 | int | TypeAccess | | enumClass.kt:14:18:14:23 | int | TypeAccess | | methods2.kt:4:1:5:1 | Unit | TypeAccess | | methods2.kt:4:26:4:31 | int | TypeAccess | @@ -341,15 +341,15 @@ | methods4.kt:7:5:7:34 | Unit | TypeAccess | | methods4.kt:7:11:7:29 | InsideNestedTest | TypeAccess | | methods5.kt:3:1:11:1 | Unit | TypeAccess | -| methods5.kt:4:7:4:7 | x | LocalVariableDeclExpr | +| methods5.kt:4:3:4:11 | x | LocalVariableDeclExpr | | methods5.kt:4:11:4:11 | 5 | IntegerLiteral | | methods5.kt:5:3:5:27 | int | TypeAccess | | methods5.kt:5:13:5:18 | int | TypeAccess | | methods5.kt:5:23:5:23 | i | VarAccess | | methods5.kt:5:23:5:27 | ... + ... | AddExpr | | methods5.kt:5:27:5:27 | x | VarAccess | -| methods5.kt:6:3:6:3 | x | VarAccess | | methods5.kt:6:3:6:7 | ...=... | AssignExpr | +| methods5.kt:6:3:6:7 | x | VarAccess | | methods5.kt:6:7:6:7 | 6 | IntegerLiteral | | methods5.kt:7:3:7:15 | | ImplicitCoercionToUnitExpr | | methods5.kt:7:3:7:15 | Object | TypeAccess | @@ -358,8 +358,8 @@ | methods5.kt:7:3:7:15 | a(...) | MethodCall | | methods5.kt:7:3:7:15 | new (...) | ClassInstanceExpr | | methods5.kt:7:13:7:14 | 42 | IntegerLiteral | -| methods5.kt:8:3:8:3 | x | VarAccess | | methods5.kt:8:3:8:7 | ...=... | AssignExpr | +| methods5.kt:8:3:8:7 | x | VarAccess | | methods5.kt:8:7:8:7 | 7 | IntegerLiteral | | methods5.kt:9:3:9:32 | int | TypeAccess | | methods5.kt:9:12:9:17 | C1 | TypeAccess | @@ -376,7 +376,7 @@ | methods5.kt:10:13:10:18 | | ImplicitCoercionToUnitExpr | | methods5.kt:10:13:10:18 | Unit | TypeAccess | | methods5.kt:10:16:10:17 | 42 | IntegerLiteral | -| methods6.kt:3:9:4:1 | Unit | TypeAccess | +| methods6.kt:3:1:4:1 | Unit | TypeAccess | | methods.kt:2:1:3:1 | Unit | TypeAccess | | methods.kt:2:20:2:25 | int | TypeAccess | | methods.kt:2:28:2:33 | int | TypeAccess | @@ -394,9 +394,9 @@ | methods.kt:11:9:11:28 | topLevelMethod(...) | MethodCall | | methods.kt:11:24:11:24 | b | VarAccess | | methods.kt:11:27:11:27 | 4 | IntegerLiteral | -| methods.kt:14:12:14:29 | Unit | TypeAccess | -| methods.kt:15:15:15:35 | Unit | TypeAccess | -| methods.kt:16:13:16:31 | Unit | TypeAccess | -| methods.kt:17:14:17:33 | Unit | TypeAccess | +| methods.kt:14:5:14:29 | Unit | TypeAccess | +| methods.kt:15:5:15:35 | Unit | TypeAccess | +| methods.kt:16:5:16:31 | Unit | TypeAccess | +| methods.kt:17:5:17:33 | Unit | TypeAccess | | methods.kt:18:5:18:36 | Unit | TypeAccess | -| methods.kt:19:12:19:29 | Unit | TypeAccess | +| methods.kt:19:5:19:29 | Unit | TypeAccess | diff --git a/java/ql/test-kotlin2/library-tests/methods/methods.expected b/java/ql/test-kotlin2/library-tests/methods/methods.expected index b1550468e0a8..330c5b2f9199 100644 --- a/java/ql/test-kotlin2/library-tests/methods/methods.expected +++ b/java/ql/test-kotlin2/library-tests/methods/methods.expected @@ -2,19 +2,19 @@ methods | clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:0:0:0:0 | | () | static | Compiler generated | | clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:3:1:3:24 | getTopLevelInt | getTopLevelInt() | final, public, static | Compiler generated | | clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:3:1:3:24 | setTopLevelInt | setTopLevelInt(int) | final, public, static | Compiler generated | +| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | component1 | component1() | final, public | Compiler generated | +| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | component2 | component2() | final, public | Compiler generated | +| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | copy | copy(int,java.lang.String) | final, public | Compiler generated | +| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | copy$default | copy$default(DataClass,int,java.lang.String,int,java.lang.Object) | public, static | Compiler generated | | dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | equals | equals(java.lang.Object) | override, public | Compiler generated | | dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | hashCode | hashCode() | override, public | Compiler generated | | dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | toString | toString() | override, public | Compiler generated | -| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:1:1:47 | copy | copy(int,java.lang.String) | final, public | Compiler generated | -| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:1:1:47 | copy$default | copy$default(DataClass,int,java.lang.String,int,java.lang.Object) | public, static | Compiler generated | -| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:22:1:31 | component1 | component1() | final, public | Compiler generated | | dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:22:1:31 | getX | getX() | final, public | Compiler generated | -| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:34:1:46 | component2 | component2() | final, public | Compiler generated | | dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:34:1:46 | getY | getY() | final, public | Compiler generated | | dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:34:1:46 | setY | setY(java.lang.String) | final, public | Compiler generated | -| delegates.kt:3:1:12:1 | MyClass | delegates.kt:4:5:6:5 | getLazyProp | getLazyProp() | final, public | Compiler generated | -| delegates.kt:3:1:12:1 | MyClass | delegates.kt:8:5:11:5 | getObservableProp | getObservableProp() | final, public | Compiler generated | +| delegates.kt:3:1:12:1 | MyClass | delegates.kt:4:21:6:5 | getLazyProp | getLazyProp() | final, public | Compiler generated | | delegates.kt:3:1:12:1 | MyClass | delegates.kt:8:5:11:5 | setObservableProp | setObservableProp(java.lang.String) | final, public | Compiler generated | +| delegates.kt:3:1:12:1 | MyClass | delegates.kt:8:35:11:5 | getObservableProp | getObservableProp() | final, public | Compiler generated | | delegates.kt:4:21:6:5 | new KProperty1(...) { ... } | delegates.kt:4:21:6:5 | get | get(MyClass) | override, public | | | delegates.kt:4:21:6:5 | new KProperty1(...) { ... } | delegates.kt:4:21:6:5 | invoke | invoke(MyClass) | override, public | | | delegates.kt:4:26:6:5 | new Function0(...) { ... } | delegates.kt:4:26:6:5 | invoke | invoke() | final, override, public | | diff --git a/java/ql/test-kotlin2/library-tests/methods/parameters.expected b/java/ql/test-kotlin2/library-tests/methods/parameters.expected index f4c60ab6ac4f..76538cae775c 100644 --- a/java/ql/test-kotlin2/library-tests/methods/parameters.expected +++ b/java/ql/test-kotlin2/library-tests/methods/parameters.expected @@ -1,12 +1,12 @@ | clinit.kt:3:1:3:24 | setTopLevelInt | clinit.kt:3:1:3:24 | | 0 | +| dataClass.kt:0:0:0:0 | copy | dataClass.kt:0:0:0:0 | x | 0 | +| dataClass.kt:0:0:0:0 | copy | dataClass.kt:0:0:0:0 | y | 1 | +| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p0 | 0 | +| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p1 | 1 | +| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p2 | 2 | +| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p3 | 3 | +| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p4 | 4 | | dataClass.kt:0:0:0:0 | equals | dataClass.kt:0:0:0:0 | other | 0 | -| dataClass.kt:1:1:1:47 | copy | dataClass.kt:1:22:1:31 | x | 0 | -| dataClass.kt:1:1:1:47 | copy | dataClass.kt:1:34:1:46 | y | 1 | -| dataClass.kt:1:1:1:47 | copy$default | dataClass.kt:1:1:1:47 | p0 | 0 | -| dataClass.kt:1:1:1:47 | copy$default | dataClass.kt:1:1:1:47 | p1 | 1 | -| dataClass.kt:1:1:1:47 | copy$default | dataClass.kt:1:1:1:47 | p2 | 2 | -| dataClass.kt:1:1:1:47 | copy$default | dataClass.kt:1:1:1:47 | p3 | 3 | -| dataClass.kt:1:1:1:47 | copy$default | dataClass.kt:1:1:1:47 | p4 | 4 | | dataClass.kt:1:34:1:46 | setY | dataClass.kt:1:34:1:46 | | 0 | | delegates.kt:4:21:6:5 | get | delegates.kt:4:21:6:5 | a0 | 0 | | delegates.kt:4:21:6:5 | invoke | delegates.kt:4:21:6:5 | a0 | 0 | diff --git a/java/ql/test-kotlin2/library-tests/parameter-defaults/defaults.expected b/java/ql/test-kotlin2/library-tests/parameter-defaults/defaults.expected index 5648ac7cf005..2e7d2920d78d 100644 --- a/java/ql/test-kotlin2/library-tests/parameter-defaults/defaults.expected +++ b/java/ql/test-kotlin2/library-tests/parameter-defaults/defaults.expected @@ -1,17 +1,17 @@ | test.kt:5:3:7:3 | f | test.kt:5:3:7:3 | f$default | | test.kt:19:3:22:3 | f | test.kt:19:3:22:3 | f$default | -| test.kt:34:14:36:3 | f | test.kt:34:14:36:3 | f$default | +| test.kt:34:3:36:3 | f | test.kt:34:3:36:3 | f$default | | test.kt:56:3:58:3 | test | test.kt:56:3:58:3 | test$default | -| test.kt:68:1:80:1 | TestConstructor | test.kt:68:1:80:1 | TestConstructor | +| test.kt:68:22:68:75 | TestConstructor | test.kt:68:22:68:75 | TestConstructor | | test.kt:86:5:88:5 | f | test.kt:86:5:88:5 | f$default | | test.kt:106:7:108:7 | f | test.kt:106:7:108:7 | f$default | | test.kt:124:3:126:3 | f | test.kt:124:3:126:3 | f$default | | test.kt:135:3:135:43 | testReturn | test.kt:135:3:135:43 | testReturn$default | | test.kt:145:3:147:3 | f | test.kt:145:3:147:3 | f$default | | test.kt:158:3:158:35 | f | test.kt:158:3:158:35 | f$default | -| test.kt:159:12:159:44 | g$main | test.kt:159:12:159:44 | g$main$default | -| test.kt:160:13:160:45 | h | test.kt:160:13:160:45 | h$default | -| test.kt:161:11:161:43 | i | test.kt:161:11:161:43 | i$default | +| test.kt:159:3:159:44 | g$main | test.kt:159:3:159:44 | g$main$default | +| test.kt:160:3:160:45 | h | test.kt:160:3:160:45 | h$default | +| test.kt:161:3:161:43 | i | test.kt:161:3:161:43 | i$default | | test.kt:171:3:171:97 | f | test.kt:171:3:171:97 | f$default | | test.kt:179:3:179:46 | f | test.kt:179:3:179:46 | f$default | | test.kt:180:3:180:34 | f | test.kt:180:3:180:34 | f$default | diff --git a/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected b/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected index 93b2b0606859..c88d2e2284c2 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected @@ -1,2103 +1,2103 @@ edges -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:31:41:31:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:32:41:32:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:33:56:33:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:34:56:34:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:35:51:35:58 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:36:59:36:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:37:59:37:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:38:41:38:48 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:39:50:39:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:40:50:40:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:41:70:41:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:42:65:42:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:43:50:43:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:44:80:44:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:45:65:45:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:46:50:46:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:47:95:47:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:48:80:48:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:49:65:49:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:50:50:50:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:51:110:51:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:52:95:52:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:53:80:53:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:54:65:54:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:55:50:55:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:56:125:56:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:57:110:57:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:58:95:58:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:59:80:59:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:60:65:60:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:61:50:61:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:62:140:62:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:63:125:63:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:64:110:64:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:65:95:65:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:66:80:66:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:67:65:67:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:68:50:68:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:69:155:69:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:70:140:70:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:71:125:71:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:72:110:72:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:73:95:73:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:74:80:74:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:75:65:75:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:76:50:76:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:77:170:77:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:78:155:78:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:79:140:79:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:80:125:80:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:81:110:81:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:82:95:82:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:83:80:83:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:84:65:84:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:85:50:85:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:86:185:86:192 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:87:170:87:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:88:155:88:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:89:140:89:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:90:125:90:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:91:110:91:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:92:95:92:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:93:80:93:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:94:65:94:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:95:50:95:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:96:50:96:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:97:70:97:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:98:50:98:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:99:55:99:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:100:55:100:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:101:44:101:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:102:44:102:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:103:36:103:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:104:36:104:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:105:26:105:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:106:26:106:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:107:35:107:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:108:35:108:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:109:55:109:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:110:50:110:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:111:35:111:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:112:65:112:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:113:50:113:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:114:35:114:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:115:80:115:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:116:65:116:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:117:50:117:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:118:35:118:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:119:95:119:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:120:80:120:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:121:65:121:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:122:50:122:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:123:35:123:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:124:110:124:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:125:95:125:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:126:80:126:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:127:65:127:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:128:50:128:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:129:35:129:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:130:125:130:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:131:110:131:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:132:95:132:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:133:80:133:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:134:65:134:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:135:50:135:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:136:35:136:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:137:140:137:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:138:125:138:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:139:110:139:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:140:95:140:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:141:80:141:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:142:65:142:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:143:50:143:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:144:35:144:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:145:155:145:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:146:140:146:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:147:125:147:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:148:110:148:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:149:95:149:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:150:80:150:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:151:65:151:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:152:50:152:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:153:35:153:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:154:170:154:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:155:155:155:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:156:140:156:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:157:125:157:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:158:110:158:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:159:95:159:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:160:80:160:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:161:65:161:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:162:50:162:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:163:35:163:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:164:35:164:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:165:55:165:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:166:35:166:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:167:40:167:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:168:40:168:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:169:41:169:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:170:41:170:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:171:56:171:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:172:56:172:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:173:51:173:58 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:174:59:174:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:175:59:175:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:176:41:176:48 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:177:50:177:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:178:50:178:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:179:70:179:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:180:65:180:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:181:50:181:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:182:80:182:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:183:65:183:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:184:50:184:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:185:95:185:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:186:80:186:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:187:65:187:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:188:50:188:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:189:110:189:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:190:95:190:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:191:80:191:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:192:65:192:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:193:50:193:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:194:125:194:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:195:110:195:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:196:95:196:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:197:80:197:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:198:65:198:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:199:50:199:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:200:140:200:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:201:125:201:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:202:110:202:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:203:95:203:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:204:80:204:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:205:65:205:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:206:50:206:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:207:155:207:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:208:140:208:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:209:125:209:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:210:110:210:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:211:95:211:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:212:80:212:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:213:65:213:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:214:50:214:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:215:170:215:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:216:155:216:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:217:140:217:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:218:125:218:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:219:110:219:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:220:95:220:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:221:80:221:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:222:65:222:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:223:50:223:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:224:185:224:192 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:225:170:225:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:226:155:226:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:227:140:227:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:228:125:228:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:229:110:229:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:230:95:230:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:231:80:231:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:232:65:232:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:233:50:233:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:234:50:234:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:235:70:235:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:236:50:236:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:237:55:237:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:238:55:238:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:239:44:239:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:240:44:240:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:241:36:241:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:242:36:242:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:243:26:243:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:244:26:244:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:245:35:245:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:246:35:246:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:247:55:247:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:248:50:248:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:249:35:249:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:250:65:250:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:251:50:251:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:252:35:252:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:253:80:253:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:254:65:254:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:255:50:255:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:256:35:256:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:257:95:257:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:258:80:258:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:259:65:259:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:260:50:260:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:261:35:261:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:262:110:262:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:263:95:263:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:264:80:264:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:265:65:265:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:266:50:266:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:267:35:267:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:268:125:268:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:269:110:269:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:270:95:270:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:271:80:271:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:272:65:272:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:273:50:273:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:274:35:274:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:275:140:275:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:276:125:276:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:277:110:277:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:278:95:278:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:279:80:279:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:280:65:280:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:281:50:281:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:282:35:282:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:283:155:283:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:284:140:284:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:285:125:285:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:286:110:286:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:287:95:287:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:288:80:288:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:289:65:289:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:290:50:290:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:291:35:291:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:292:170:292:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:293:155:293:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:294:140:294:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:295:125:295:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:296:110:296:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:297:95:297:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:298:80:298:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:299:65:299:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:300:50:300:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:301:35:301:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:302:35:302:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:303:55:303:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:304:35:304:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:305:40:305:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:306:40:306:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:307:41:307:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:308:41:308:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:309:56:309:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:310:56:310:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:311:51:311:58 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:312:59:312:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:313:59:313:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:314:41:314:48 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:315:50:315:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:316:50:316:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:317:70:317:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:318:65:318:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:319:50:319:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:320:80:320:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:321:65:321:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:322:50:322:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:323:95:323:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:324:80:324:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:325:65:325:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:326:50:326:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:327:110:327:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:328:95:328:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:329:80:329:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:330:65:330:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:331:50:331:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:332:125:332:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:333:110:333:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:334:95:334:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:335:80:335:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:336:65:336:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:337:50:337:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:338:140:338:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:339:125:339:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:340:110:340:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:341:95:341:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:342:80:342:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:343:65:343:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:344:50:344:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:345:155:345:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:346:140:346:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:347:125:347:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:348:110:348:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:349:95:349:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:350:80:350:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:351:65:351:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:352:50:352:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:353:170:353:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:354:155:354:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:355:140:355:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:356:125:356:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:357:110:357:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:358:95:358:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:359:80:359:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:360:65:360:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:361:50:361:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:362:185:362:192 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:363:170:363:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:364:155:364:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:365:140:365:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:366:125:366:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:367:110:367:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:368:95:368:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:369:80:369:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:370:65:370:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:371:50:371:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:372:50:372:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:373:70:373:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:374:50:374:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:375:55:375:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:376:55:376:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:377:44:377:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:378:44:378:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:379:36:379:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:380:36:380:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:381:26:381:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:382:26:382:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:383:35:383:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:384:35:384:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:385:55:385:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:386:50:386:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:387:35:387:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:388:65:388:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:389:50:389:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:390:35:390:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:391:80:391:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:392:65:392:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:393:50:393:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:394:35:394:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:395:95:395:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:396:80:396:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:397:65:397:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:398:50:398:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:399:35:399:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:400:110:400:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:401:95:401:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:402:80:402:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:403:65:403:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:404:50:404:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:405:35:405:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:406:125:406:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:407:110:407:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:408:95:408:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:409:80:409:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:410:65:410:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:411:50:411:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:412:35:412:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:413:140:413:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:414:125:414:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:415:110:415:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:416:95:416:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:417:80:417:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:418:65:418:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:419:50:419:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:420:35:420:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:421:155:421:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:422:140:422:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:423:125:423:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:424:110:424:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:425:95:425:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:426:80:426:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:427:65:427:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:428:50:428:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:429:35:429:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:430:170:430:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:431:155:431:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:432:140:432:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:433:125:433:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:434:110:434:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:435:95:435:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:436:80:436:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:437:65:437:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:438:50:438:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:439:35:439:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:440:35:440:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:441:55:441:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:442:35:442:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:443:40:443:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:444:40:444:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:445:40:445:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:446:40:446:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:447:55:447:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:448:55:448:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:449:50:449:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:450:58:450:65 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:451:58:451:65 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:452:40:452:47 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:453:49:453:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:454:49:454:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:455:69:455:76 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:456:64:456:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:457:49:457:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:458:79:458:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:459:64:459:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:460:49:460:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:461:94:461:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:462:79:462:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:463:64:463:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:464:49:464:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:465:109:465:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:466:94:466:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:467:79:467:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:468:64:468:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:469:49:469:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:470:124:470:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:471:109:471:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:472:94:472:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:473:79:473:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:474:64:474:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:475:49:475:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:476:139:476:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:477:124:477:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:478:109:478:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:479:94:479:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:480:79:480:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:481:64:481:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:482:49:482:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:483:154:483:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:484:139:484:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:485:124:485:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:486:109:486:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:487:94:487:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:488:79:488:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:489:64:489:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:490:49:490:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:491:169:491:176 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:492:154:492:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:493:139:493:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:494:124:494:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:495:109:495:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:496:94:496:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:497:79:497:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:498:64:498:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:499:49:499:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:500:184:500:191 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:501:169:501:176 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:502:154:502:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:503:139:503:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:504:124:504:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:505:109:505:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:506:94:506:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:507:79:507:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:508:64:508:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:509:49:509:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:510:49:510:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:511:69:511:76 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:512:49:512:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:513:54:513:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:514:54:514:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:515:43:515:50 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:516:43:516:50 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:517:35:517:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:518:35:518:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:519:25:519:32 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:520:25:520:32 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:521:34:521:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:522:34:522:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:523:54:523:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:524:49:524:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:525:34:525:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:526:64:526:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:527:49:527:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:528:34:528:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:529:79:529:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:530:64:530:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:531:49:531:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:532:34:532:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:533:94:533:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:534:79:534:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:535:64:535:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:536:49:536:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:537:34:537:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:538:109:538:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:539:94:539:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:540:79:540:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:541:64:541:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:542:49:542:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:543:34:543:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:544:124:544:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:545:109:545:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:546:94:546:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:547:79:547:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:548:64:548:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:549:49:549:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:550:34:550:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:551:139:551:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:552:124:552:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:553:109:553:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:554:94:554:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:555:79:555:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:556:64:556:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:557:49:557:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:558:34:558:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:559:154:559:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:560:139:560:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:561:124:561:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:562:109:562:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:563:94:563:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:564:79:564:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:565:64:565:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:566:49:566:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:567:34:567:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:568:169:568:176 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:569:154:569:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:570:139:570:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:571:124:571:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:572:109:572:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:573:94:573:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:574:79:574:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:575:64:575:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:576:49:576:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:577:34:577:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:578:34:578:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:579:54:579:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:580:34:580:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:581:39:581:46 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:582:39:582:46 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:583:53:583:60 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:584:53:584:60 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:585:68:585:75 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:586:68:586:75 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:587:63:587:70 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:588:71:588:78 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:589:71:589:78 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:590:53:590:60 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:591:62:591:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:592:62:592:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:593:82:593:89 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:594:77:594:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:595:62:595:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:596:92:596:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:597:77:597:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:598:62:598:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:599:107:599:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:600:92:600:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:601:77:601:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:602:62:602:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:603:122:603:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:604:107:604:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:605:92:605:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:606:77:606:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:607:62:607:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:608:137:608:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:609:122:609:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:610:107:610:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:611:92:611:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:612:77:612:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:613:62:613:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:614:152:614:159 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:615:137:615:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:616:122:616:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:617:107:617:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:618:92:618:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:619:77:619:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:620:62:620:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:621:167:621:174 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:622:152:622:159 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:623:137:623:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:624:122:624:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:625:107:625:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:626:92:626:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:627:77:627:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:628:62:628:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:629:182:629:189 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:630:167:630:174 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:631:152:631:159 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:632:137:632:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:633:122:633:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:634:107:634:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:635:92:635:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:636:77:636:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:637:62:637:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:638:197:638:204 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:639:182:639:189 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:640:167:640:174 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:641:152:641:159 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:642:137:642:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:643:122:643:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:644:107:644:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:645:92:645:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:646:77:646:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:647:62:647:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:648:62:648:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:649:82:649:89 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:650:62:650:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:651:67:651:74 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:652:67:652:74 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:653:56:653:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:654:56:654:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:655:48:655:55 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:656:48:656:55 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:657:38:657:45 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:658:38:658:45 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:659:47:659:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:660:47:660:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:661:67:661:74 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:662:62:662:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:663:47:663:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:664:77:664:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:665:62:665:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:666:47:666:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:667:92:667:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:668:77:668:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:669:62:669:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:670:47:670:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:671:107:671:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:672:92:672:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:673:77:673:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:674:62:674:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:675:47:675:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:676:122:676:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:677:107:677:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:678:92:678:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:679:77:679:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:680:62:680:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:681:47:681:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:682:137:682:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:683:122:683:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:684:107:684:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:685:92:685:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:686:77:686:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:687:62:687:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:688:47:688:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:689:152:689:159 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:690:137:690:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:691:122:691:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:692:107:692:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:693:92:693:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:694:77:694:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:695:62:695:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:696:47:696:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:697:167:697:174 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:698:152:698:159 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:699:137:699:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:700:122:700:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:701:107:701:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:702:92:702:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:703:77:703:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:704:62:704:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:705:47:705:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:706:182:706:189 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:707:167:707:174 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:708:152:708:159 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:709:137:709:144 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:710:122:710:129 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:711:107:711:114 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:712:92:712:99 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:713:77:713:84 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:714:62:714:69 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:715:47:715:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:716:47:716:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:717:67:717:74 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:718:47:718:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:719:52:719:59 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:720:52:720:59 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:721:41:721:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:722:41:722:48 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:723:56:723:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:724:56:724:63 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:725:51:725:58 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:726:59:726:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:727:59:727:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:728:41:728:48 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:729:50:729:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:730:50:730:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:731:70:731:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:732:65:732:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:733:50:733:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:734:80:734:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:735:65:735:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:736:50:736:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:737:95:737:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:738:80:738:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:739:65:739:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:740:50:740:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:741:110:741:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:742:95:742:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:743:80:743:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:744:65:744:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:745:50:745:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:746:125:746:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:747:110:747:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:748:95:748:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:749:80:749:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:750:65:750:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:751:50:751:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:752:140:752:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:753:125:753:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:754:110:754:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:755:95:755:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:756:80:756:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:757:65:757:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:758:50:758:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:759:155:759:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:760:140:760:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:761:125:761:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:762:110:762:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:763:95:763:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:764:80:764:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:765:65:765:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:766:50:766:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:767:170:767:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:768:155:768:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:769:140:769:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:770:125:770:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:771:110:771:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:772:95:772:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:773:80:773:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:774:65:774:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:775:50:775:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:776:185:776:192 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:777:170:777:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:778:155:778:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:779:140:779:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:780:125:780:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:781:110:781:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:782:95:782:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:783:80:783:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:784:65:784:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:785:50:785:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:786:50:786:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:787:70:787:77 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:788:50:788:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:789:55:789:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:790:55:790:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:791:44:791:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:792:44:792:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:793:36:793:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:794:36:794:43 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:795:26:795:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:796:26:796:33 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:797:35:797:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:798:35:798:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:799:55:799:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:800:50:800:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:801:35:801:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:802:65:802:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:803:50:803:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:804:35:804:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:805:80:805:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:806:65:806:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:807:50:807:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:808:35:808:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:809:95:809:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:810:80:810:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:811:65:811:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:812:50:812:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:813:35:813:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:814:110:814:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:815:95:815:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:816:80:816:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:817:65:817:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:818:50:818:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:819:35:819:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:820:125:820:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:821:110:821:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:822:95:822:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:823:80:823:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:824:65:824:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:825:50:825:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:826:35:826:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:827:140:827:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:828:125:828:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:829:110:829:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:830:95:830:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:831:80:831:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:832:65:832:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:833:50:833:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:834:35:834:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:835:155:835:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:836:140:836:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:837:125:837:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:838:110:838:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:839:95:839:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:840:80:840:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:841:65:841:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:842:50:842:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:843:35:843:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:844:170:844:177 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:845:155:845:162 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:846:140:846:147 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:847:125:847:132 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:848:110:848:117 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:849:95:849:102 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:850:80:850:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:851:65:851:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:852:50:852:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:853:35:853:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:854:35:854:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:855:55:855:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:856:35:856:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:857:40:857:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:858:40:858:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:859:40:859:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:860:40:860:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:861:55:861:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:862:55:862:62 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:863:50:863:57 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:864:58:864:65 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:865:58:865:65 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:866:40:866:47 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:867:49:867:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:868:49:868:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:869:69:869:76 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:870:64:870:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:871:49:871:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:872:79:872:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:873:64:873:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:874:49:874:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:875:94:875:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:876:79:876:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:877:64:877:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:878:49:878:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:879:109:879:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:880:94:880:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:881:79:881:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:882:64:882:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:883:49:883:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:884:124:884:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:885:109:885:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:886:94:886:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:887:79:887:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:888:64:888:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:889:49:889:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:890:139:890:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:891:124:891:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:892:109:892:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:893:94:893:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:894:79:894:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:895:64:895:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:896:49:896:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:897:154:897:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:898:139:898:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:899:124:899:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:900:109:900:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:901:94:901:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:902:79:902:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:903:64:903:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:904:49:904:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:905:169:905:176 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:906:154:906:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:907:139:907:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:908:124:908:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:909:109:909:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:910:94:910:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:911:79:911:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:912:64:912:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:913:49:913:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:914:184:914:191 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:915:169:915:176 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:916:154:916:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:917:139:917:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:918:124:918:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:919:109:919:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:920:94:920:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:921:79:921:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:922:64:922:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:923:49:923:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:924:49:924:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:925:69:925:76 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:926:49:926:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:927:54:927:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:928:54:928:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:929:43:929:50 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:930:43:930:50 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:931:35:931:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:932:35:932:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:933:25:933:32 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:934:25:934:32 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:935:34:935:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:936:34:936:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:937:54:937:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:938:49:938:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:939:34:939:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:940:64:940:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:941:49:941:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:942:34:942:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:943:79:943:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:944:64:944:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:945:49:945:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:946:34:946:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:947:94:947:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:948:79:948:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:949:64:949:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:950:49:950:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:951:34:951:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:952:109:952:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:953:94:953:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:954:79:954:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:955:64:955:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:956:49:956:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:957:34:957:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:958:124:958:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:959:109:959:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:960:94:960:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:961:79:961:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:962:64:962:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:963:49:963:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:964:34:964:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:965:139:965:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:966:124:966:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:967:109:967:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:968:94:968:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:969:79:969:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:970:64:970:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:971:49:971:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:972:34:972:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:973:154:973:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:974:139:974:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:975:124:975:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:976:109:976:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:977:94:977:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:978:79:978:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:979:64:979:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:980:49:980:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:981:34:981:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:982:169:982:176 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:983:154:983:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:984:139:984:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:985:124:985:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:986:109:986:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:987:94:987:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:988:79:988:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:989:64:989:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:990:49:990:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:991:34:991:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:992:34:992:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:993:54:993:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:994:34:994:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:995:39:995:46 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:996:39:996:46 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:998:65:998:72 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:999:48:999:55 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1000:59:1000:66 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1001:42:1001:49 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1002:53:1002:60 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1020:40:1020:47 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1021:35:1021:42 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1022:25:1022:32 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1023:34:1023:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1024:34:1024:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1025:54:1025:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1026:40:1026:47 | source(...) | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1028:49:1028:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1029:34:1029:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1030:64:1030:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1031:49:1031:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1032:34:1032:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1033:79:1033:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1034:64:1034:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1035:49:1035:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1036:34:1036:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1037:94:1037:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1038:79:1038:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1039:64:1039:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1040:49:1040:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1041:34:1041:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1042:109:1042:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1043:94:1043:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1044:79:1044:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1045:64:1045:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1046:49:1046:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1047:34:1047:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1048:124:1048:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1049:109:1049:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1050:94:1050:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1051:79:1051:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1052:64:1052:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1053:49:1053:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1054:34:1054:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1055:139:1055:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1056:124:1056:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1057:109:1057:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1058:94:1058:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1059:79:1059:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1060:64:1060:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1061:49:1061:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1062:34:1062:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1063:154:1063:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1064:139:1064:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1065:124:1065:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1066:109:1066:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1067:94:1067:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1068:79:1068:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1069:64:1069:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1070:49:1070:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1071:34:1071:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1072:169:1072:176 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1073:154:1073:161 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1074:139:1074:146 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1075:124:1075:131 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1076:109:1076:116 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1077:94:1077:101 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1078:79:1078:86 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1079:64:1079:71 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1080:49:1080:56 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1081:34:1081:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1083:34:1083:41 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1084:54:1084:61 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1085:39:1085:46 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | -| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | -| Log4jJndiInjectionTest.java:31:41:31:48 | source(...) : String | Log4jJndiInjectionTest.java:31:26:31:48 | (...)... | -| Log4jJndiInjectionTest.java:32:41:32:48 | source(...) : String | Log4jJndiInjectionTest.java:32:26:32:48 | (...)... | -| Log4jJndiInjectionTest.java:33:56:33:63 | source(...) : String | Log4jJndiInjectionTest.java:33:41:33:63 | (...)... | -| Log4jJndiInjectionTest.java:34:56:34:63 | source(...) : String | Log4jJndiInjectionTest.java:34:41:34:63 | (...)... | -| Log4jJndiInjectionTest.java:35:51:35:58 | source(...) : String | Log4jJndiInjectionTest.java:35:41:35:58 | (...)... | -| Log4jJndiInjectionTest.java:36:59:36:66 | source(...) : String | Log4jJndiInjectionTest.java:36:41:36:66 | (...)... | -| Log4jJndiInjectionTest.java:37:59:37:66 | source(...) : String | Log4jJndiInjectionTest.java:37:41:37:66 | (...)... | -| Log4jJndiInjectionTest.java:39:50:39:57 | source(...) : String | Log4jJndiInjectionTest.java:39:41:39:57 | (...)... | -| Log4jJndiInjectionTest.java:40:50:40:57 | source(...) : String | Log4jJndiInjectionTest.java:40:41:40:57 | (...)... | -| Log4jJndiInjectionTest.java:41:56:41:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:41:56:41:78 | new Object[] | -| Log4jJndiInjectionTest.java:41:70:41:77 | source(...) : String | Log4jJndiInjectionTest.java:41:56:41:78 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:42:65:42:72 | source(...) : String | Log4jJndiInjectionTest.java:42:56:42:72 | (...)... | -| Log4jJndiInjectionTest.java:43:50:43:57 | source(...) : String | Log4jJndiInjectionTest.java:43:41:43:57 | (...)... | -| Log4jJndiInjectionTest.java:44:80:44:87 | source(...) : String | Log4jJndiInjectionTest.java:44:71:44:87 | (...)... | -| Log4jJndiInjectionTest.java:45:65:45:72 | source(...) : String | Log4jJndiInjectionTest.java:45:56:45:72 | (...)... | -| Log4jJndiInjectionTest.java:46:50:46:57 | source(...) : String | Log4jJndiInjectionTest.java:46:41:46:57 | (...)... | -| Log4jJndiInjectionTest.java:47:95:47:102 | source(...) : String | Log4jJndiInjectionTest.java:47:86:47:102 | (...)... | -| Log4jJndiInjectionTest.java:48:80:48:87 | source(...) : String | Log4jJndiInjectionTest.java:48:71:48:87 | (...)... | -| Log4jJndiInjectionTest.java:49:65:49:72 | source(...) : String | Log4jJndiInjectionTest.java:49:56:49:72 | (...)... | -| Log4jJndiInjectionTest.java:50:50:50:57 | source(...) : String | Log4jJndiInjectionTest.java:50:41:50:57 | (...)... | -| Log4jJndiInjectionTest.java:51:110:51:117 | source(...) : String | Log4jJndiInjectionTest.java:51:101:51:117 | (...)... | -| Log4jJndiInjectionTest.java:52:95:52:102 | source(...) : String | Log4jJndiInjectionTest.java:52:86:52:102 | (...)... | -| Log4jJndiInjectionTest.java:53:80:53:87 | source(...) : String | Log4jJndiInjectionTest.java:53:71:53:87 | (...)... | -| Log4jJndiInjectionTest.java:54:65:54:72 | source(...) : String | Log4jJndiInjectionTest.java:54:56:54:72 | (...)... | -| Log4jJndiInjectionTest.java:55:50:55:57 | source(...) : String | Log4jJndiInjectionTest.java:55:41:55:57 | (...)... | -| Log4jJndiInjectionTest.java:56:125:56:132 | source(...) : String | Log4jJndiInjectionTest.java:56:116:56:132 | (...)... | -| Log4jJndiInjectionTest.java:57:110:57:117 | source(...) : String | Log4jJndiInjectionTest.java:57:101:57:117 | (...)... | -| Log4jJndiInjectionTest.java:58:95:58:102 | source(...) : String | Log4jJndiInjectionTest.java:58:86:58:102 | (...)... | -| Log4jJndiInjectionTest.java:59:80:59:87 | source(...) : String | Log4jJndiInjectionTest.java:59:71:59:87 | (...)... | -| Log4jJndiInjectionTest.java:60:65:60:72 | source(...) : String | Log4jJndiInjectionTest.java:60:56:60:72 | (...)... | -| Log4jJndiInjectionTest.java:61:50:61:57 | source(...) : String | Log4jJndiInjectionTest.java:61:41:61:57 | (...)... | -| Log4jJndiInjectionTest.java:62:140:62:147 | source(...) : String | Log4jJndiInjectionTest.java:62:131:62:147 | (...)... | -| Log4jJndiInjectionTest.java:63:125:63:132 | source(...) : String | Log4jJndiInjectionTest.java:63:116:63:132 | (...)... | -| Log4jJndiInjectionTest.java:64:110:64:117 | source(...) : String | Log4jJndiInjectionTest.java:64:101:64:117 | (...)... | -| Log4jJndiInjectionTest.java:65:95:65:102 | source(...) : String | Log4jJndiInjectionTest.java:65:86:65:102 | (...)... | -| Log4jJndiInjectionTest.java:66:80:66:87 | source(...) : String | Log4jJndiInjectionTest.java:66:71:66:87 | (...)... | -| Log4jJndiInjectionTest.java:67:65:67:72 | source(...) : String | Log4jJndiInjectionTest.java:67:56:67:72 | (...)... | -| Log4jJndiInjectionTest.java:68:50:68:57 | source(...) : String | Log4jJndiInjectionTest.java:68:41:68:57 | (...)... | -| Log4jJndiInjectionTest.java:69:155:69:162 | source(...) : String | Log4jJndiInjectionTest.java:69:146:69:162 | (...)... | -| Log4jJndiInjectionTest.java:70:140:70:147 | source(...) : String | Log4jJndiInjectionTest.java:70:131:70:147 | (...)... | -| Log4jJndiInjectionTest.java:71:125:71:132 | source(...) : String | Log4jJndiInjectionTest.java:71:116:71:132 | (...)... | -| Log4jJndiInjectionTest.java:72:110:72:117 | source(...) : String | Log4jJndiInjectionTest.java:72:101:72:117 | (...)... | -| Log4jJndiInjectionTest.java:73:95:73:102 | source(...) : String | Log4jJndiInjectionTest.java:73:86:73:102 | (...)... | -| Log4jJndiInjectionTest.java:74:80:74:87 | source(...) : String | Log4jJndiInjectionTest.java:74:71:74:87 | (...)... | -| Log4jJndiInjectionTest.java:75:65:75:72 | source(...) : String | Log4jJndiInjectionTest.java:75:56:75:72 | (...)... | -| Log4jJndiInjectionTest.java:76:50:76:57 | source(...) : String | Log4jJndiInjectionTest.java:76:41:76:57 | (...)... | -| Log4jJndiInjectionTest.java:77:170:77:177 | source(...) : String | Log4jJndiInjectionTest.java:77:161:77:177 | (...)... | -| Log4jJndiInjectionTest.java:78:155:78:162 | source(...) : String | Log4jJndiInjectionTest.java:78:146:78:162 | (...)... | -| Log4jJndiInjectionTest.java:79:140:79:147 | source(...) : String | Log4jJndiInjectionTest.java:79:131:79:147 | (...)... | -| Log4jJndiInjectionTest.java:80:125:80:132 | source(...) : String | Log4jJndiInjectionTest.java:80:116:80:132 | (...)... | -| Log4jJndiInjectionTest.java:81:110:81:117 | source(...) : String | Log4jJndiInjectionTest.java:81:101:81:117 | (...)... | -| Log4jJndiInjectionTest.java:82:95:82:102 | source(...) : String | Log4jJndiInjectionTest.java:82:86:82:102 | (...)... | -| Log4jJndiInjectionTest.java:83:80:83:87 | source(...) : String | Log4jJndiInjectionTest.java:83:71:83:87 | (...)... | -| Log4jJndiInjectionTest.java:84:65:84:72 | source(...) : String | Log4jJndiInjectionTest.java:84:56:84:72 | (...)... | -| Log4jJndiInjectionTest.java:85:50:85:57 | source(...) : String | Log4jJndiInjectionTest.java:85:41:85:57 | (...)... | -| Log4jJndiInjectionTest.java:86:185:86:192 | source(...) : String | Log4jJndiInjectionTest.java:86:176:86:192 | (...)... | -| Log4jJndiInjectionTest.java:87:170:87:177 | source(...) : String | Log4jJndiInjectionTest.java:87:161:87:177 | (...)... | -| Log4jJndiInjectionTest.java:88:155:88:162 | source(...) : String | Log4jJndiInjectionTest.java:88:146:88:162 | (...)... | -| Log4jJndiInjectionTest.java:89:140:89:147 | source(...) : String | Log4jJndiInjectionTest.java:89:131:89:147 | (...)... | -| Log4jJndiInjectionTest.java:90:125:90:132 | source(...) : String | Log4jJndiInjectionTest.java:90:116:90:132 | (...)... | -| Log4jJndiInjectionTest.java:91:110:91:117 | source(...) : String | Log4jJndiInjectionTest.java:91:101:91:117 | (...)... | -| Log4jJndiInjectionTest.java:92:95:92:102 | source(...) : String | Log4jJndiInjectionTest.java:92:86:92:102 | (...)... | -| Log4jJndiInjectionTest.java:93:80:93:87 | source(...) : String | Log4jJndiInjectionTest.java:93:71:93:87 | (...)... | -| Log4jJndiInjectionTest.java:94:65:94:72 | source(...) : String | Log4jJndiInjectionTest.java:94:56:94:72 | (...)... | -| Log4jJndiInjectionTest.java:95:50:95:57 | source(...) : String | Log4jJndiInjectionTest.java:95:41:95:57 | (...)... | -| Log4jJndiInjectionTest.java:96:50:96:57 | source(...) : String | Log4jJndiInjectionTest.java:96:41:96:57 | (...)... | -| Log4jJndiInjectionTest.java:97:70:97:77 | source(...) : String | Log4jJndiInjectionTest.java:97:56:97:77 | (...)... | -| Log4jJndiInjectionTest.java:98:50:98:57 | source(...) : String | Log4jJndiInjectionTest.java:98:41:98:57 | (...)... | -| Log4jJndiInjectionTest.java:99:55:99:62 | source(...) : String | Log4jJndiInjectionTest.java:99:41:99:62 | (...)... | -| Log4jJndiInjectionTest.java:100:55:100:62 | source(...) : String | Log4jJndiInjectionTest.java:100:41:100:62 | (...)... | -| Log4jJndiInjectionTest.java:101:44:101:51 | source(...) : String | Log4jJndiInjectionTest.java:101:26:101:51 | (...)... | -| Log4jJndiInjectionTest.java:102:44:102:51 | source(...) : String | Log4jJndiInjectionTest.java:102:26:102:51 | (...)... | -| Log4jJndiInjectionTest.java:103:36:103:43 | source(...) : String | Log4jJndiInjectionTest.java:103:26:103:43 | (...)... | -| Log4jJndiInjectionTest.java:104:36:104:43 | source(...) : String | Log4jJndiInjectionTest.java:104:26:104:43 | (...)... | -| Log4jJndiInjectionTest.java:107:35:107:42 | source(...) : String | Log4jJndiInjectionTest.java:107:26:107:42 | (...)... | -| Log4jJndiInjectionTest.java:108:35:108:42 | source(...) : String | Log4jJndiInjectionTest.java:108:26:108:42 | (...)... | -| Log4jJndiInjectionTest.java:109:41:109:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:109:41:109:63 | new Object[] | -| Log4jJndiInjectionTest.java:109:55:109:62 | source(...) : String | Log4jJndiInjectionTest.java:109:41:109:63 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:110:50:110:57 | source(...) : String | Log4jJndiInjectionTest.java:110:41:110:57 | (...)... | -| Log4jJndiInjectionTest.java:111:35:111:42 | source(...) : String | Log4jJndiInjectionTest.java:111:26:111:42 | (...)... | -| Log4jJndiInjectionTest.java:112:65:112:72 | source(...) : String | Log4jJndiInjectionTest.java:112:56:112:72 | (...)... | -| Log4jJndiInjectionTest.java:113:50:113:57 | source(...) : String | Log4jJndiInjectionTest.java:113:41:113:57 | (...)... | -| Log4jJndiInjectionTest.java:114:35:114:42 | source(...) : String | Log4jJndiInjectionTest.java:114:26:114:42 | (...)... | -| Log4jJndiInjectionTest.java:115:80:115:87 | source(...) : String | Log4jJndiInjectionTest.java:115:71:115:87 | (...)... | -| Log4jJndiInjectionTest.java:116:65:116:72 | source(...) : String | Log4jJndiInjectionTest.java:116:56:116:72 | (...)... | -| Log4jJndiInjectionTest.java:117:50:117:57 | source(...) : String | Log4jJndiInjectionTest.java:117:41:117:57 | (...)... | -| Log4jJndiInjectionTest.java:118:35:118:42 | source(...) : String | Log4jJndiInjectionTest.java:118:26:118:42 | (...)... | -| Log4jJndiInjectionTest.java:119:95:119:102 | source(...) : String | Log4jJndiInjectionTest.java:119:86:119:102 | (...)... | -| Log4jJndiInjectionTest.java:120:80:120:87 | source(...) : String | Log4jJndiInjectionTest.java:120:71:120:87 | (...)... | -| Log4jJndiInjectionTest.java:121:65:121:72 | source(...) : String | Log4jJndiInjectionTest.java:121:56:121:72 | (...)... | -| Log4jJndiInjectionTest.java:122:50:122:57 | source(...) : String | Log4jJndiInjectionTest.java:122:41:122:57 | (...)... | -| Log4jJndiInjectionTest.java:123:35:123:42 | source(...) : String | Log4jJndiInjectionTest.java:123:26:123:42 | (...)... | -| Log4jJndiInjectionTest.java:124:110:124:117 | source(...) : String | Log4jJndiInjectionTest.java:124:101:124:117 | (...)... | -| Log4jJndiInjectionTest.java:125:95:125:102 | source(...) : String | Log4jJndiInjectionTest.java:125:86:125:102 | (...)... | -| Log4jJndiInjectionTest.java:126:80:126:87 | source(...) : String | Log4jJndiInjectionTest.java:126:71:126:87 | (...)... | -| Log4jJndiInjectionTest.java:127:65:127:72 | source(...) : String | Log4jJndiInjectionTest.java:127:56:127:72 | (...)... | -| Log4jJndiInjectionTest.java:128:50:128:57 | source(...) : String | Log4jJndiInjectionTest.java:128:41:128:57 | (...)... | -| Log4jJndiInjectionTest.java:129:35:129:42 | source(...) : String | Log4jJndiInjectionTest.java:129:26:129:42 | (...)... | -| Log4jJndiInjectionTest.java:130:125:130:132 | source(...) : String | Log4jJndiInjectionTest.java:130:116:130:132 | (...)... | -| Log4jJndiInjectionTest.java:131:110:131:117 | source(...) : String | Log4jJndiInjectionTest.java:131:101:131:117 | (...)... | -| Log4jJndiInjectionTest.java:132:95:132:102 | source(...) : String | Log4jJndiInjectionTest.java:132:86:132:102 | (...)... | -| Log4jJndiInjectionTest.java:133:80:133:87 | source(...) : String | Log4jJndiInjectionTest.java:133:71:133:87 | (...)... | -| Log4jJndiInjectionTest.java:134:65:134:72 | source(...) : String | Log4jJndiInjectionTest.java:134:56:134:72 | (...)... | -| Log4jJndiInjectionTest.java:135:50:135:57 | source(...) : String | Log4jJndiInjectionTest.java:135:41:135:57 | (...)... | -| Log4jJndiInjectionTest.java:136:35:136:42 | source(...) : String | Log4jJndiInjectionTest.java:136:26:136:42 | (...)... | -| Log4jJndiInjectionTest.java:137:140:137:147 | source(...) : String | Log4jJndiInjectionTest.java:137:131:137:147 | (...)... | -| Log4jJndiInjectionTest.java:138:125:138:132 | source(...) : String | Log4jJndiInjectionTest.java:138:116:138:132 | (...)... | -| Log4jJndiInjectionTest.java:139:110:139:117 | source(...) : String | Log4jJndiInjectionTest.java:139:101:139:117 | (...)... | -| Log4jJndiInjectionTest.java:140:95:140:102 | source(...) : String | Log4jJndiInjectionTest.java:140:86:140:102 | (...)... | -| Log4jJndiInjectionTest.java:141:80:141:87 | source(...) : String | Log4jJndiInjectionTest.java:141:71:141:87 | (...)... | -| Log4jJndiInjectionTest.java:142:65:142:72 | source(...) : String | Log4jJndiInjectionTest.java:142:56:142:72 | (...)... | -| Log4jJndiInjectionTest.java:143:50:143:57 | source(...) : String | Log4jJndiInjectionTest.java:143:41:143:57 | (...)... | -| Log4jJndiInjectionTest.java:144:35:144:42 | source(...) : String | Log4jJndiInjectionTest.java:144:26:144:42 | (...)... | -| Log4jJndiInjectionTest.java:145:155:145:162 | source(...) : String | Log4jJndiInjectionTest.java:145:146:145:162 | (...)... | -| Log4jJndiInjectionTest.java:146:140:146:147 | source(...) : String | Log4jJndiInjectionTest.java:146:131:146:147 | (...)... | -| Log4jJndiInjectionTest.java:147:125:147:132 | source(...) : String | Log4jJndiInjectionTest.java:147:116:147:132 | (...)... | -| Log4jJndiInjectionTest.java:148:110:148:117 | source(...) : String | Log4jJndiInjectionTest.java:148:101:148:117 | (...)... | -| Log4jJndiInjectionTest.java:149:95:149:102 | source(...) : String | Log4jJndiInjectionTest.java:149:86:149:102 | (...)... | -| Log4jJndiInjectionTest.java:150:80:150:87 | source(...) : String | Log4jJndiInjectionTest.java:150:71:150:87 | (...)... | -| Log4jJndiInjectionTest.java:151:65:151:72 | source(...) : String | Log4jJndiInjectionTest.java:151:56:151:72 | (...)... | -| Log4jJndiInjectionTest.java:152:50:152:57 | source(...) : String | Log4jJndiInjectionTest.java:152:41:152:57 | (...)... | -| Log4jJndiInjectionTest.java:153:35:153:42 | source(...) : String | Log4jJndiInjectionTest.java:153:26:153:42 | (...)... | -| Log4jJndiInjectionTest.java:154:170:154:177 | source(...) : String | Log4jJndiInjectionTest.java:154:161:154:177 | (...)... | -| Log4jJndiInjectionTest.java:155:155:155:162 | source(...) : String | Log4jJndiInjectionTest.java:155:146:155:162 | (...)... | -| Log4jJndiInjectionTest.java:156:140:156:147 | source(...) : String | Log4jJndiInjectionTest.java:156:131:156:147 | (...)... | -| Log4jJndiInjectionTest.java:157:125:157:132 | source(...) : String | Log4jJndiInjectionTest.java:157:116:157:132 | (...)... | -| Log4jJndiInjectionTest.java:158:110:158:117 | source(...) : String | Log4jJndiInjectionTest.java:158:101:158:117 | (...)... | -| Log4jJndiInjectionTest.java:159:95:159:102 | source(...) : String | Log4jJndiInjectionTest.java:159:86:159:102 | (...)... | -| Log4jJndiInjectionTest.java:160:80:160:87 | source(...) : String | Log4jJndiInjectionTest.java:160:71:160:87 | (...)... | -| Log4jJndiInjectionTest.java:161:65:161:72 | source(...) : String | Log4jJndiInjectionTest.java:161:56:161:72 | (...)... | -| Log4jJndiInjectionTest.java:162:50:162:57 | source(...) : String | Log4jJndiInjectionTest.java:162:41:162:57 | (...)... | -| Log4jJndiInjectionTest.java:163:35:163:42 | source(...) : String | Log4jJndiInjectionTest.java:163:26:163:42 | (...)... | -| Log4jJndiInjectionTest.java:164:35:164:42 | source(...) : String | Log4jJndiInjectionTest.java:164:26:164:42 | (...)... | -| Log4jJndiInjectionTest.java:165:55:165:62 | source(...) : String | Log4jJndiInjectionTest.java:165:41:165:62 | (...)... | -| Log4jJndiInjectionTest.java:166:35:166:42 | source(...) : String | Log4jJndiInjectionTest.java:166:26:166:42 | (...)... | -| Log4jJndiInjectionTest.java:167:40:167:47 | source(...) : String | Log4jJndiInjectionTest.java:167:26:167:47 | (...)... | -| Log4jJndiInjectionTest.java:168:40:168:47 | source(...) : String | Log4jJndiInjectionTest.java:168:26:168:47 | (...)... | -| Log4jJndiInjectionTest.java:169:41:169:48 | source(...) : String | Log4jJndiInjectionTest.java:169:26:169:48 | (...)... | -| Log4jJndiInjectionTest.java:170:41:170:48 | source(...) : String | Log4jJndiInjectionTest.java:170:26:170:48 | (...)... | -| Log4jJndiInjectionTest.java:171:56:171:63 | source(...) : String | Log4jJndiInjectionTest.java:171:41:171:63 | (...)... | -| Log4jJndiInjectionTest.java:172:56:172:63 | source(...) : String | Log4jJndiInjectionTest.java:172:41:172:63 | (...)... | -| Log4jJndiInjectionTest.java:173:51:173:58 | source(...) : String | Log4jJndiInjectionTest.java:173:41:173:58 | (...)... | -| Log4jJndiInjectionTest.java:174:59:174:66 | source(...) : String | Log4jJndiInjectionTest.java:174:41:174:66 | (...)... | -| Log4jJndiInjectionTest.java:175:59:175:66 | source(...) : String | Log4jJndiInjectionTest.java:175:41:175:66 | (...)... | -| Log4jJndiInjectionTest.java:177:50:177:57 | source(...) : String | Log4jJndiInjectionTest.java:177:41:177:57 | (...)... | -| Log4jJndiInjectionTest.java:178:50:178:57 | source(...) : String | Log4jJndiInjectionTest.java:178:41:178:57 | (...)... | -| Log4jJndiInjectionTest.java:179:56:179:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:179:56:179:78 | new Object[] | -| Log4jJndiInjectionTest.java:179:70:179:77 | source(...) : String | Log4jJndiInjectionTest.java:179:56:179:78 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:180:65:180:72 | source(...) : String | Log4jJndiInjectionTest.java:180:56:180:72 | (...)... | -| Log4jJndiInjectionTest.java:181:50:181:57 | source(...) : String | Log4jJndiInjectionTest.java:181:41:181:57 | (...)... | -| Log4jJndiInjectionTest.java:182:80:182:87 | source(...) : String | Log4jJndiInjectionTest.java:182:71:182:87 | (...)... | -| Log4jJndiInjectionTest.java:183:65:183:72 | source(...) : String | Log4jJndiInjectionTest.java:183:56:183:72 | (...)... | -| Log4jJndiInjectionTest.java:184:50:184:57 | source(...) : String | Log4jJndiInjectionTest.java:184:41:184:57 | (...)... | -| Log4jJndiInjectionTest.java:185:95:185:102 | source(...) : String | Log4jJndiInjectionTest.java:185:86:185:102 | (...)... | -| Log4jJndiInjectionTest.java:186:80:186:87 | source(...) : String | Log4jJndiInjectionTest.java:186:71:186:87 | (...)... | -| Log4jJndiInjectionTest.java:187:65:187:72 | source(...) : String | Log4jJndiInjectionTest.java:187:56:187:72 | (...)... | -| Log4jJndiInjectionTest.java:188:50:188:57 | source(...) : String | Log4jJndiInjectionTest.java:188:41:188:57 | (...)... | -| Log4jJndiInjectionTest.java:189:110:189:117 | source(...) : String | Log4jJndiInjectionTest.java:189:101:189:117 | (...)... | -| Log4jJndiInjectionTest.java:190:95:190:102 | source(...) : String | Log4jJndiInjectionTest.java:190:86:190:102 | (...)... | -| Log4jJndiInjectionTest.java:191:80:191:87 | source(...) : String | Log4jJndiInjectionTest.java:191:71:191:87 | (...)... | -| Log4jJndiInjectionTest.java:192:65:192:72 | source(...) : String | Log4jJndiInjectionTest.java:192:56:192:72 | (...)... | -| Log4jJndiInjectionTest.java:193:50:193:57 | source(...) : String | Log4jJndiInjectionTest.java:193:41:193:57 | (...)... | -| Log4jJndiInjectionTest.java:194:125:194:132 | source(...) : String | Log4jJndiInjectionTest.java:194:116:194:132 | (...)... | -| Log4jJndiInjectionTest.java:195:110:195:117 | source(...) : String | Log4jJndiInjectionTest.java:195:101:195:117 | (...)... | -| Log4jJndiInjectionTest.java:196:95:196:102 | source(...) : String | Log4jJndiInjectionTest.java:196:86:196:102 | (...)... | -| Log4jJndiInjectionTest.java:197:80:197:87 | source(...) : String | Log4jJndiInjectionTest.java:197:71:197:87 | (...)... | -| Log4jJndiInjectionTest.java:198:65:198:72 | source(...) : String | Log4jJndiInjectionTest.java:198:56:198:72 | (...)... | -| Log4jJndiInjectionTest.java:199:50:199:57 | source(...) : String | Log4jJndiInjectionTest.java:199:41:199:57 | (...)... | -| Log4jJndiInjectionTest.java:200:140:200:147 | source(...) : String | Log4jJndiInjectionTest.java:200:131:200:147 | (...)... | -| Log4jJndiInjectionTest.java:201:125:201:132 | source(...) : String | Log4jJndiInjectionTest.java:201:116:201:132 | (...)... | -| Log4jJndiInjectionTest.java:202:110:202:117 | source(...) : String | Log4jJndiInjectionTest.java:202:101:202:117 | (...)... | -| Log4jJndiInjectionTest.java:203:95:203:102 | source(...) : String | Log4jJndiInjectionTest.java:203:86:203:102 | (...)... | -| Log4jJndiInjectionTest.java:204:80:204:87 | source(...) : String | Log4jJndiInjectionTest.java:204:71:204:87 | (...)... | -| Log4jJndiInjectionTest.java:205:65:205:72 | source(...) : String | Log4jJndiInjectionTest.java:205:56:205:72 | (...)... | -| Log4jJndiInjectionTest.java:206:50:206:57 | source(...) : String | Log4jJndiInjectionTest.java:206:41:206:57 | (...)... | -| Log4jJndiInjectionTest.java:207:155:207:162 | source(...) : String | Log4jJndiInjectionTest.java:207:146:207:162 | (...)... | -| Log4jJndiInjectionTest.java:208:140:208:147 | source(...) : String | Log4jJndiInjectionTest.java:208:131:208:147 | (...)... | -| Log4jJndiInjectionTest.java:209:125:209:132 | source(...) : String | Log4jJndiInjectionTest.java:209:116:209:132 | (...)... | -| Log4jJndiInjectionTest.java:210:110:210:117 | source(...) : String | Log4jJndiInjectionTest.java:210:101:210:117 | (...)... | -| Log4jJndiInjectionTest.java:211:95:211:102 | source(...) : String | Log4jJndiInjectionTest.java:211:86:211:102 | (...)... | -| Log4jJndiInjectionTest.java:212:80:212:87 | source(...) : String | Log4jJndiInjectionTest.java:212:71:212:87 | (...)... | -| Log4jJndiInjectionTest.java:213:65:213:72 | source(...) : String | Log4jJndiInjectionTest.java:213:56:213:72 | (...)... | -| Log4jJndiInjectionTest.java:214:50:214:57 | source(...) : String | Log4jJndiInjectionTest.java:214:41:214:57 | (...)... | -| Log4jJndiInjectionTest.java:215:170:215:177 | source(...) : String | Log4jJndiInjectionTest.java:215:161:215:177 | (...)... | -| Log4jJndiInjectionTest.java:216:155:216:162 | source(...) : String | Log4jJndiInjectionTest.java:216:146:216:162 | (...)... | -| Log4jJndiInjectionTest.java:217:140:217:147 | source(...) : String | Log4jJndiInjectionTest.java:217:131:217:147 | (...)... | -| Log4jJndiInjectionTest.java:218:125:218:132 | source(...) : String | Log4jJndiInjectionTest.java:218:116:218:132 | (...)... | -| Log4jJndiInjectionTest.java:219:110:219:117 | source(...) : String | Log4jJndiInjectionTest.java:219:101:219:117 | (...)... | -| Log4jJndiInjectionTest.java:220:95:220:102 | source(...) : String | Log4jJndiInjectionTest.java:220:86:220:102 | (...)... | -| Log4jJndiInjectionTest.java:221:80:221:87 | source(...) : String | Log4jJndiInjectionTest.java:221:71:221:87 | (...)... | -| Log4jJndiInjectionTest.java:222:65:222:72 | source(...) : String | Log4jJndiInjectionTest.java:222:56:222:72 | (...)... | -| Log4jJndiInjectionTest.java:223:50:223:57 | source(...) : String | Log4jJndiInjectionTest.java:223:41:223:57 | (...)... | -| Log4jJndiInjectionTest.java:224:185:224:192 | source(...) : String | Log4jJndiInjectionTest.java:224:176:224:192 | (...)... | -| Log4jJndiInjectionTest.java:225:170:225:177 | source(...) : String | Log4jJndiInjectionTest.java:225:161:225:177 | (...)... | -| Log4jJndiInjectionTest.java:226:155:226:162 | source(...) : String | Log4jJndiInjectionTest.java:226:146:226:162 | (...)... | -| Log4jJndiInjectionTest.java:227:140:227:147 | source(...) : String | Log4jJndiInjectionTest.java:227:131:227:147 | (...)... | -| Log4jJndiInjectionTest.java:228:125:228:132 | source(...) : String | Log4jJndiInjectionTest.java:228:116:228:132 | (...)... | -| Log4jJndiInjectionTest.java:229:110:229:117 | source(...) : String | Log4jJndiInjectionTest.java:229:101:229:117 | (...)... | -| Log4jJndiInjectionTest.java:230:95:230:102 | source(...) : String | Log4jJndiInjectionTest.java:230:86:230:102 | (...)... | -| Log4jJndiInjectionTest.java:231:80:231:87 | source(...) : String | Log4jJndiInjectionTest.java:231:71:231:87 | (...)... | -| Log4jJndiInjectionTest.java:232:65:232:72 | source(...) : String | Log4jJndiInjectionTest.java:232:56:232:72 | (...)... | -| Log4jJndiInjectionTest.java:233:50:233:57 | source(...) : String | Log4jJndiInjectionTest.java:233:41:233:57 | (...)... | -| Log4jJndiInjectionTest.java:234:50:234:57 | source(...) : String | Log4jJndiInjectionTest.java:234:41:234:57 | (...)... | -| Log4jJndiInjectionTest.java:235:70:235:77 | source(...) : String | Log4jJndiInjectionTest.java:235:56:235:77 | (...)... | -| Log4jJndiInjectionTest.java:236:50:236:57 | source(...) : String | Log4jJndiInjectionTest.java:236:41:236:57 | (...)... | -| Log4jJndiInjectionTest.java:237:55:237:62 | source(...) : String | Log4jJndiInjectionTest.java:237:41:237:62 | (...)... | -| Log4jJndiInjectionTest.java:238:55:238:62 | source(...) : String | Log4jJndiInjectionTest.java:238:41:238:62 | (...)... | -| Log4jJndiInjectionTest.java:239:44:239:51 | source(...) : String | Log4jJndiInjectionTest.java:239:26:239:51 | (...)... | -| Log4jJndiInjectionTest.java:240:44:240:51 | source(...) : String | Log4jJndiInjectionTest.java:240:26:240:51 | (...)... | -| Log4jJndiInjectionTest.java:241:36:241:43 | source(...) : String | Log4jJndiInjectionTest.java:241:26:241:43 | (...)... | -| Log4jJndiInjectionTest.java:242:36:242:43 | source(...) : String | Log4jJndiInjectionTest.java:242:26:242:43 | (...)... | -| Log4jJndiInjectionTest.java:245:35:245:42 | source(...) : String | Log4jJndiInjectionTest.java:245:26:245:42 | (...)... | -| Log4jJndiInjectionTest.java:246:35:246:42 | source(...) : String | Log4jJndiInjectionTest.java:246:26:246:42 | (...)... | -| Log4jJndiInjectionTest.java:247:41:247:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:247:41:247:63 | new Object[] | -| Log4jJndiInjectionTest.java:247:55:247:62 | source(...) : String | Log4jJndiInjectionTest.java:247:41:247:63 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:248:50:248:57 | source(...) : String | Log4jJndiInjectionTest.java:248:41:248:57 | (...)... | -| Log4jJndiInjectionTest.java:249:35:249:42 | source(...) : String | Log4jJndiInjectionTest.java:249:26:249:42 | (...)... | -| Log4jJndiInjectionTest.java:250:65:250:72 | source(...) : String | Log4jJndiInjectionTest.java:250:56:250:72 | (...)... | -| Log4jJndiInjectionTest.java:251:50:251:57 | source(...) : String | Log4jJndiInjectionTest.java:251:41:251:57 | (...)... | -| Log4jJndiInjectionTest.java:252:35:252:42 | source(...) : String | Log4jJndiInjectionTest.java:252:26:252:42 | (...)... | -| Log4jJndiInjectionTest.java:253:80:253:87 | source(...) : String | Log4jJndiInjectionTest.java:253:71:253:87 | (...)... | -| Log4jJndiInjectionTest.java:254:65:254:72 | source(...) : String | Log4jJndiInjectionTest.java:254:56:254:72 | (...)... | -| Log4jJndiInjectionTest.java:255:50:255:57 | source(...) : String | Log4jJndiInjectionTest.java:255:41:255:57 | (...)... | -| Log4jJndiInjectionTest.java:256:35:256:42 | source(...) : String | Log4jJndiInjectionTest.java:256:26:256:42 | (...)... | -| Log4jJndiInjectionTest.java:257:95:257:102 | source(...) : String | Log4jJndiInjectionTest.java:257:86:257:102 | (...)... | -| Log4jJndiInjectionTest.java:258:80:258:87 | source(...) : String | Log4jJndiInjectionTest.java:258:71:258:87 | (...)... | -| Log4jJndiInjectionTest.java:259:65:259:72 | source(...) : String | Log4jJndiInjectionTest.java:259:56:259:72 | (...)... | -| Log4jJndiInjectionTest.java:260:50:260:57 | source(...) : String | Log4jJndiInjectionTest.java:260:41:260:57 | (...)... | -| Log4jJndiInjectionTest.java:261:35:261:42 | source(...) : String | Log4jJndiInjectionTest.java:261:26:261:42 | (...)... | -| Log4jJndiInjectionTest.java:262:110:262:117 | source(...) : String | Log4jJndiInjectionTest.java:262:101:262:117 | (...)... | -| Log4jJndiInjectionTest.java:263:95:263:102 | source(...) : String | Log4jJndiInjectionTest.java:263:86:263:102 | (...)... | -| Log4jJndiInjectionTest.java:264:80:264:87 | source(...) : String | Log4jJndiInjectionTest.java:264:71:264:87 | (...)... | -| Log4jJndiInjectionTest.java:265:65:265:72 | source(...) : String | Log4jJndiInjectionTest.java:265:56:265:72 | (...)... | -| Log4jJndiInjectionTest.java:266:50:266:57 | source(...) : String | Log4jJndiInjectionTest.java:266:41:266:57 | (...)... | -| Log4jJndiInjectionTest.java:267:35:267:42 | source(...) : String | Log4jJndiInjectionTest.java:267:26:267:42 | (...)... | -| Log4jJndiInjectionTest.java:268:125:268:132 | source(...) : String | Log4jJndiInjectionTest.java:268:116:268:132 | (...)... | -| Log4jJndiInjectionTest.java:269:110:269:117 | source(...) : String | Log4jJndiInjectionTest.java:269:101:269:117 | (...)... | -| Log4jJndiInjectionTest.java:270:95:270:102 | source(...) : String | Log4jJndiInjectionTest.java:270:86:270:102 | (...)... | -| Log4jJndiInjectionTest.java:271:80:271:87 | source(...) : String | Log4jJndiInjectionTest.java:271:71:271:87 | (...)... | -| Log4jJndiInjectionTest.java:272:65:272:72 | source(...) : String | Log4jJndiInjectionTest.java:272:56:272:72 | (...)... | -| Log4jJndiInjectionTest.java:273:50:273:57 | source(...) : String | Log4jJndiInjectionTest.java:273:41:273:57 | (...)... | -| Log4jJndiInjectionTest.java:274:35:274:42 | source(...) : String | Log4jJndiInjectionTest.java:274:26:274:42 | (...)... | -| Log4jJndiInjectionTest.java:275:140:275:147 | source(...) : String | Log4jJndiInjectionTest.java:275:131:275:147 | (...)... | -| Log4jJndiInjectionTest.java:276:125:276:132 | source(...) : String | Log4jJndiInjectionTest.java:276:116:276:132 | (...)... | -| Log4jJndiInjectionTest.java:277:110:277:117 | source(...) : String | Log4jJndiInjectionTest.java:277:101:277:117 | (...)... | -| Log4jJndiInjectionTest.java:278:95:278:102 | source(...) : String | Log4jJndiInjectionTest.java:278:86:278:102 | (...)... | -| Log4jJndiInjectionTest.java:279:80:279:87 | source(...) : String | Log4jJndiInjectionTest.java:279:71:279:87 | (...)... | -| Log4jJndiInjectionTest.java:280:65:280:72 | source(...) : String | Log4jJndiInjectionTest.java:280:56:280:72 | (...)... | -| Log4jJndiInjectionTest.java:281:50:281:57 | source(...) : String | Log4jJndiInjectionTest.java:281:41:281:57 | (...)... | -| Log4jJndiInjectionTest.java:282:35:282:42 | source(...) : String | Log4jJndiInjectionTest.java:282:26:282:42 | (...)... | -| Log4jJndiInjectionTest.java:283:155:283:162 | source(...) : String | Log4jJndiInjectionTest.java:283:146:283:162 | (...)... | -| Log4jJndiInjectionTest.java:284:140:284:147 | source(...) : String | Log4jJndiInjectionTest.java:284:131:284:147 | (...)... | -| Log4jJndiInjectionTest.java:285:125:285:132 | source(...) : String | Log4jJndiInjectionTest.java:285:116:285:132 | (...)... | -| Log4jJndiInjectionTest.java:286:110:286:117 | source(...) : String | Log4jJndiInjectionTest.java:286:101:286:117 | (...)... | -| Log4jJndiInjectionTest.java:287:95:287:102 | source(...) : String | Log4jJndiInjectionTest.java:287:86:287:102 | (...)... | -| Log4jJndiInjectionTest.java:288:80:288:87 | source(...) : String | Log4jJndiInjectionTest.java:288:71:288:87 | (...)... | -| Log4jJndiInjectionTest.java:289:65:289:72 | source(...) : String | Log4jJndiInjectionTest.java:289:56:289:72 | (...)... | -| Log4jJndiInjectionTest.java:290:50:290:57 | source(...) : String | Log4jJndiInjectionTest.java:290:41:290:57 | (...)... | -| Log4jJndiInjectionTest.java:291:35:291:42 | source(...) : String | Log4jJndiInjectionTest.java:291:26:291:42 | (...)... | -| Log4jJndiInjectionTest.java:292:170:292:177 | source(...) : String | Log4jJndiInjectionTest.java:292:161:292:177 | (...)... | -| Log4jJndiInjectionTest.java:293:155:293:162 | source(...) : String | Log4jJndiInjectionTest.java:293:146:293:162 | (...)... | -| Log4jJndiInjectionTest.java:294:140:294:147 | source(...) : String | Log4jJndiInjectionTest.java:294:131:294:147 | (...)... | -| Log4jJndiInjectionTest.java:295:125:295:132 | source(...) : String | Log4jJndiInjectionTest.java:295:116:295:132 | (...)... | -| Log4jJndiInjectionTest.java:296:110:296:117 | source(...) : String | Log4jJndiInjectionTest.java:296:101:296:117 | (...)... | -| Log4jJndiInjectionTest.java:297:95:297:102 | source(...) : String | Log4jJndiInjectionTest.java:297:86:297:102 | (...)... | -| Log4jJndiInjectionTest.java:298:80:298:87 | source(...) : String | Log4jJndiInjectionTest.java:298:71:298:87 | (...)... | -| Log4jJndiInjectionTest.java:299:65:299:72 | source(...) : String | Log4jJndiInjectionTest.java:299:56:299:72 | (...)... | -| Log4jJndiInjectionTest.java:300:50:300:57 | source(...) : String | Log4jJndiInjectionTest.java:300:41:300:57 | (...)... | -| Log4jJndiInjectionTest.java:301:35:301:42 | source(...) : String | Log4jJndiInjectionTest.java:301:26:301:42 | (...)... | -| Log4jJndiInjectionTest.java:302:35:302:42 | source(...) : String | Log4jJndiInjectionTest.java:302:26:302:42 | (...)... | -| Log4jJndiInjectionTest.java:303:55:303:62 | source(...) : String | Log4jJndiInjectionTest.java:303:41:303:62 | (...)... | -| Log4jJndiInjectionTest.java:304:35:304:42 | source(...) : String | Log4jJndiInjectionTest.java:304:26:304:42 | (...)... | -| Log4jJndiInjectionTest.java:305:40:305:47 | source(...) : String | Log4jJndiInjectionTest.java:305:26:305:47 | (...)... | -| Log4jJndiInjectionTest.java:306:40:306:47 | source(...) : String | Log4jJndiInjectionTest.java:306:26:306:47 | (...)... | -| Log4jJndiInjectionTest.java:307:41:307:48 | source(...) : String | Log4jJndiInjectionTest.java:307:26:307:48 | (...)... | -| Log4jJndiInjectionTest.java:308:41:308:48 | source(...) : String | Log4jJndiInjectionTest.java:308:26:308:48 | (...)... | -| Log4jJndiInjectionTest.java:309:56:309:63 | source(...) : String | Log4jJndiInjectionTest.java:309:41:309:63 | (...)... | -| Log4jJndiInjectionTest.java:310:56:310:63 | source(...) : String | Log4jJndiInjectionTest.java:310:41:310:63 | (...)... | -| Log4jJndiInjectionTest.java:311:51:311:58 | source(...) : String | Log4jJndiInjectionTest.java:311:41:311:58 | (...)... | -| Log4jJndiInjectionTest.java:312:59:312:66 | source(...) : String | Log4jJndiInjectionTest.java:312:41:312:66 | (...)... | -| Log4jJndiInjectionTest.java:313:59:313:66 | source(...) : String | Log4jJndiInjectionTest.java:313:41:313:66 | (...)... | -| Log4jJndiInjectionTest.java:315:50:315:57 | source(...) : String | Log4jJndiInjectionTest.java:315:41:315:57 | (...)... | -| Log4jJndiInjectionTest.java:316:50:316:57 | source(...) : String | Log4jJndiInjectionTest.java:316:41:316:57 | (...)... | -| Log4jJndiInjectionTest.java:317:56:317:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:317:56:317:78 | new Object[] | -| Log4jJndiInjectionTest.java:317:70:317:77 | source(...) : String | Log4jJndiInjectionTest.java:317:56:317:78 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:318:65:318:72 | source(...) : String | Log4jJndiInjectionTest.java:318:56:318:72 | (...)... | -| Log4jJndiInjectionTest.java:319:50:319:57 | source(...) : String | Log4jJndiInjectionTest.java:319:41:319:57 | (...)... | -| Log4jJndiInjectionTest.java:320:80:320:87 | source(...) : String | Log4jJndiInjectionTest.java:320:71:320:87 | (...)... | -| Log4jJndiInjectionTest.java:321:65:321:72 | source(...) : String | Log4jJndiInjectionTest.java:321:56:321:72 | (...)... | -| Log4jJndiInjectionTest.java:322:50:322:57 | source(...) : String | Log4jJndiInjectionTest.java:322:41:322:57 | (...)... | -| Log4jJndiInjectionTest.java:323:95:323:102 | source(...) : String | Log4jJndiInjectionTest.java:323:86:323:102 | (...)... | -| Log4jJndiInjectionTest.java:324:80:324:87 | source(...) : String | Log4jJndiInjectionTest.java:324:71:324:87 | (...)... | -| Log4jJndiInjectionTest.java:325:65:325:72 | source(...) : String | Log4jJndiInjectionTest.java:325:56:325:72 | (...)... | -| Log4jJndiInjectionTest.java:326:50:326:57 | source(...) : String | Log4jJndiInjectionTest.java:326:41:326:57 | (...)... | -| Log4jJndiInjectionTest.java:327:110:327:117 | source(...) : String | Log4jJndiInjectionTest.java:327:101:327:117 | (...)... | -| Log4jJndiInjectionTest.java:328:95:328:102 | source(...) : String | Log4jJndiInjectionTest.java:328:86:328:102 | (...)... | -| Log4jJndiInjectionTest.java:329:80:329:87 | source(...) : String | Log4jJndiInjectionTest.java:329:71:329:87 | (...)... | -| Log4jJndiInjectionTest.java:330:65:330:72 | source(...) : String | Log4jJndiInjectionTest.java:330:56:330:72 | (...)... | -| Log4jJndiInjectionTest.java:331:50:331:57 | source(...) : String | Log4jJndiInjectionTest.java:331:41:331:57 | (...)... | -| Log4jJndiInjectionTest.java:332:125:332:132 | source(...) : String | Log4jJndiInjectionTest.java:332:116:332:132 | (...)... | -| Log4jJndiInjectionTest.java:333:110:333:117 | source(...) : String | Log4jJndiInjectionTest.java:333:101:333:117 | (...)... | -| Log4jJndiInjectionTest.java:334:95:334:102 | source(...) : String | Log4jJndiInjectionTest.java:334:86:334:102 | (...)... | -| Log4jJndiInjectionTest.java:335:80:335:87 | source(...) : String | Log4jJndiInjectionTest.java:335:71:335:87 | (...)... | -| Log4jJndiInjectionTest.java:336:65:336:72 | source(...) : String | Log4jJndiInjectionTest.java:336:56:336:72 | (...)... | -| Log4jJndiInjectionTest.java:337:50:337:57 | source(...) : String | Log4jJndiInjectionTest.java:337:41:337:57 | (...)... | -| Log4jJndiInjectionTest.java:338:140:338:147 | source(...) : String | Log4jJndiInjectionTest.java:338:131:338:147 | (...)... | -| Log4jJndiInjectionTest.java:339:125:339:132 | source(...) : String | Log4jJndiInjectionTest.java:339:116:339:132 | (...)... | -| Log4jJndiInjectionTest.java:340:110:340:117 | source(...) : String | Log4jJndiInjectionTest.java:340:101:340:117 | (...)... | -| Log4jJndiInjectionTest.java:341:95:341:102 | source(...) : String | Log4jJndiInjectionTest.java:341:86:341:102 | (...)... | -| Log4jJndiInjectionTest.java:342:80:342:87 | source(...) : String | Log4jJndiInjectionTest.java:342:71:342:87 | (...)... | -| Log4jJndiInjectionTest.java:343:65:343:72 | source(...) : String | Log4jJndiInjectionTest.java:343:56:343:72 | (...)... | -| Log4jJndiInjectionTest.java:344:50:344:57 | source(...) : String | Log4jJndiInjectionTest.java:344:41:344:57 | (...)... | -| Log4jJndiInjectionTest.java:345:155:345:162 | source(...) : String | Log4jJndiInjectionTest.java:345:146:345:162 | (...)... | -| Log4jJndiInjectionTest.java:346:140:346:147 | source(...) : String | Log4jJndiInjectionTest.java:346:131:346:147 | (...)... | -| Log4jJndiInjectionTest.java:347:125:347:132 | source(...) : String | Log4jJndiInjectionTest.java:347:116:347:132 | (...)... | -| Log4jJndiInjectionTest.java:348:110:348:117 | source(...) : String | Log4jJndiInjectionTest.java:348:101:348:117 | (...)... | -| Log4jJndiInjectionTest.java:349:95:349:102 | source(...) : String | Log4jJndiInjectionTest.java:349:86:349:102 | (...)... | -| Log4jJndiInjectionTest.java:350:80:350:87 | source(...) : String | Log4jJndiInjectionTest.java:350:71:350:87 | (...)... | -| Log4jJndiInjectionTest.java:351:65:351:72 | source(...) : String | Log4jJndiInjectionTest.java:351:56:351:72 | (...)... | -| Log4jJndiInjectionTest.java:352:50:352:57 | source(...) : String | Log4jJndiInjectionTest.java:352:41:352:57 | (...)... | -| Log4jJndiInjectionTest.java:353:170:353:177 | source(...) : String | Log4jJndiInjectionTest.java:353:161:353:177 | (...)... | -| Log4jJndiInjectionTest.java:354:155:354:162 | source(...) : String | Log4jJndiInjectionTest.java:354:146:354:162 | (...)... | -| Log4jJndiInjectionTest.java:355:140:355:147 | source(...) : String | Log4jJndiInjectionTest.java:355:131:355:147 | (...)... | -| Log4jJndiInjectionTest.java:356:125:356:132 | source(...) : String | Log4jJndiInjectionTest.java:356:116:356:132 | (...)... | -| Log4jJndiInjectionTest.java:357:110:357:117 | source(...) : String | Log4jJndiInjectionTest.java:357:101:357:117 | (...)... | -| Log4jJndiInjectionTest.java:358:95:358:102 | source(...) : String | Log4jJndiInjectionTest.java:358:86:358:102 | (...)... | -| Log4jJndiInjectionTest.java:359:80:359:87 | source(...) : String | Log4jJndiInjectionTest.java:359:71:359:87 | (...)... | -| Log4jJndiInjectionTest.java:360:65:360:72 | source(...) : String | Log4jJndiInjectionTest.java:360:56:360:72 | (...)... | -| Log4jJndiInjectionTest.java:361:50:361:57 | source(...) : String | Log4jJndiInjectionTest.java:361:41:361:57 | (...)... | -| Log4jJndiInjectionTest.java:362:185:362:192 | source(...) : String | Log4jJndiInjectionTest.java:362:176:362:192 | (...)... | -| Log4jJndiInjectionTest.java:363:170:363:177 | source(...) : String | Log4jJndiInjectionTest.java:363:161:363:177 | (...)... | -| Log4jJndiInjectionTest.java:364:155:364:162 | source(...) : String | Log4jJndiInjectionTest.java:364:146:364:162 | (...)... | -| Log4jJndiInjectionTest.java:365:140:365:147 | source(...) : String | Log4jJndiInjectionTest.java:365:131:365:147 | (...)... | -| Log4jJndiInjectionTest.java:366:125:366:132 | source(...) : String | Log4jJndiInjectionTest.java:366:116:366:132 | (...)... | -| Log4jJndiInjectionTest.java:367:110:367:117 | source(...) : String | Log4jJndiInjectionTest.java:367:101:367:117 | (...)... | -| Log4jJndiInjectionTest.java:368:95:368:102 | source(...) : String | Log4jJndiInjectionTest.java:368:86:368:102 | (...)... | -| Log4jJndiInjectionTest.java:369:80:369:87 | source(...) : String | Log4jJndiInjectionTest.java:369:71:369:87 | (...)... | -| Log4jJndiInjectionTest.java:370:65:370:72 | source(...) : String | Log4jJndiInjectionTest.java:370:56:370:72 | (...)... | -| Log4jJndiInjectionTest.java:371:50:371:57 | source(...) : String | Log4jJndiInjectionTest.java:371:41:371:57 | (...)... | -| Log4jJndiInjectionTest.java:372:50:372:57 | source(...) : String | Log4jJndiInjectionTest.java:372:41:372:57 | (...)... | -| Log4jJndiInjectionTest.java:373:70:373:77 | source(...) : String | Log4jJndiInjectionTest.java:373:56:373:77 | (...)... | -| Log4jJndiInjectionTest.java:374:50:374:57 | source(...) : String | Log4jJndiInjectionTest.java:374:41:374:57 | (...)... | -| Log4jJndiInjectionTest.java:375:55:375:62 | source(...) : String | Log4jJndiInjectionTest.java:375:41:375:62 | (...)... | -| Log4jJndiInjectionTest.java:376:55:376:62 | source(...) : String | Log4jJndiInjectionTest.java:376:41:376:62 | (...)... | -| Log4jJndiInjectionTest.java:377:44:377:51 | source(...) : String | Log4jJndiInjectionTest.java:377:26:377:51 | (...)... | -| Log4jJndiInjectionTest.java:378:44:378:51 | source(...) : String | Log4jJndiInjectionTest.java:378:26:378:51 | (...)... | -| Log4jJndiInjectionTest.java:379:36:379:43 | source(...) : String | Log4jJndiInjectionTest.java:379:26:379:43 | (...)... | -| Log4jJndiInjectionTest.java:380:36:380:43 | source(...) : String | Log4jJndiInjectionTest.java:380:26:380:43 | (...)... | -| Log4jJndiInjectionTest.java:383:35:383:42 | source(...) : String | Log4jJndiInjectionTest.java:383:26:383:42 | (...)... | -| Log4jJndiInjectionTest.java:384:35:384:42 | source(...) : String | Log4jJndiInjectionTest.java:384:26:384:42 | (...)... | -| Log4jJndiInjectionTest.java:385:41:385:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:385:41:385:63 | new Object[] | -| Log4jJndiInjectionTest.java:385:55:385:62 | source(...) : String | Log4jJndiInjectionTest.java:385:41:385:63 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:386:50:386:57 | source(...) : String | Log4jJndiInjectionTest.java:386:41:386:57 | (...)... | -| Log4jJndiInjectionTest.java:387:35:387:42 | source(...) : String | Log4jJndiInjectionTest.java:387:26:387:42 | (...)... | -| Log4jJndiInjectionTest.java:388:65:388:72 | source(...) : String | Log4jJndiInjectionTest.java:388:56:388:72 | (...)... | -| Log4jJndiInjectionTest.java:389:50:389:57 | source(...) : String | Log4jJndiInjectionTest.java:389:41:389:57 | (...)... | -| Log4jJndiInjectionTest.java:390:35:390:42 | source(...) : String | Log4jJndiInjectionTest.java:390:26:390:42 | (...)... | -| Log4jJndiInjectionTest.java:391:80:391:87 | source(...) : String | Log4jJndiInjectionTest.java:391:71:391:87 | (...)... | -| Log4jJndiInjectionTest.java:392:65:392:72 | source(...) : String | Log4jJndiInjectionTest.java:392:56:392:72 | (...)... | -| Log4jJndiInjectionTest.java:393:50:393:57 | source(...) : String | Log4jJndiInjectionTest.java:393:41:393:57 | (...)... | -| Log4jJndiInjectionTest.java:394:35:394:42 | source(...) : String | Log4jJndiInjectionTest.java:394:26:394:42 | (...)... | -| Log4jJndiInjectionTest.java:395:95:395:102 | source(...) : String | Log4jJndiInjectionTest.java:395:86:395:102 | (...)... | -| Log4jJndiInjectionTest.java:396:80:396:87 | source(...) : String | Log4jJndiInjectionTest.java:396:71:396:87 | (...)... | -| Log4jJndiInjectionTest.java:397:65:397:72 | source(...) : String | Log4jJndiInjectionTest.java:397:56:397:72 | (...)... | -| Log4jJndiInjectionTest.java:398:50:398:57 | source(...) : String | Log4jJndiInjectionTest.java:398:41:398:57 | (...)... | -| Log4jJndiInjectionTest.java:399:35:399:42 | source(...) : String | Log4jJndiInjectionTest.java:399:26:399:42 | (...)... | -| Log4jJndiInjectionTest.java:400:110:400:117 | source(...) : String | Log4jJndiInjectionTest.java:400:101:400:117 | (...)... | -| Log4jJndiInjectionTest.java:401:95:401:102 | source(...) : String | Log4jJndiInjectionTest.java:401:86:401:102 | (...)... | -| Log4jJndiInjectionTest.java:402:80:402:87 | source(...) : String | Log4jJndiInjectionTest.java:402:71:402:87 | (...)... | -| Log4jJndiInjectionTest.java:403:65:403:72 | source(...) : String | Log4jJndiInjectionTest.java:403:56:403:72 | (...)... | -| Log4jJndiInjectionTest.java:404:50:404:57 | source(...) : String | Log4jJndiInjectionTest.java:404:41:404:57 | (...)... | -| Log4jJndiInjectionTest.java:405:35:405:42 | source(...) : String | Log4jJndiInjectionTest.java:405:26:405:42 | (...)... | -| Log4jJndiInjectionTest.java:406:125:406:132 | source(...) : String | Log4jJndiInjectionTest.java:406:116:406:132 | (...)... | -| Log4jJndiInjectionTest.java:407:110:407:117 | source(...) : String | Log4jJndiInjectionTest.java:407:101:407:117 | (...)... | -| Log4jJndiInjectionTest.java:408:95:408:102 | source(...) : String | Log4jJndiInjectionTest.java:408:86:408:102 | (...)... | -| Log4jJndiInjectionTest.java:409:80:409:87 | source(...) : String | Log4jJndiInjectionTest.java:409:71:409:87 | (...)... | -| Log4jJndiInjectionTest.java:410:65:410:72 | source(...) : String | Log4jJndiInjectionTest.java:410:56:410:72 | (...)... | -| Log4jJndiInjectionTest.java:411:50:411:57 | source(...) : String | Log4jJndiInjectionTest.java:411:41:411:57 | (...)... | -| Log4jJndiInjectionTest.java:412:35:412:42 | source(...) : String | Log4jJndiInjectionTest.java:412:26:412:42 | (...)... | -| Log4jJndiInjectionTest.java:413:140:413:147 | source(...) : String | Log4jJndiInjectionTest.java:413:131:413:147 | (...)... | -| Log4jJndiInjectionTest.java:414:125:414:132 | source(...) : String | Log4jJndiInjectionTest.java:414:116:414:132 | (...)... | -| Log4jJndiInjectionTest.java:415:110:415:117 | source(...) : String | Log4jJndiInjectionTest.java:415:101:415:117 | (...)... | -| Log4jJndiInjectionTest.java:416:95:416:102 | source(...) : String | Log4jJndiInjectionTest.java:416:86:416:102 | (...)... | -| Log4jJndiInjectionTest.java:417:80:417:87 | source(...) : String | Log4jJndiInjectionTest.java:417:71:417:87 | (...)... | -| Log4jJndiInjectionTest.java:418:65:418:72 | source(...) : String | Log4jJndiInjectionTest.java:418:56:418:72 | (...)... | -| Log4jJndiInjectionTest.java:419:50:419:57 | source(...) : String | Log4jJndiInjectionTest.java:419:41:419:57 | (...)... | -| Log4jJndiInjectionTest.java:420:35:420:42 | source(...) : String | Log4jJndiInjectionTest.java:420:26:420:42 | (...)... | -| Log4jJndiInjectionTest.java:421:155:421:162 | source(...) : String | Log4jJndiInjectionTest.java:421:146:421:162 | (...)... | -| Log4jJndiInjectionTest.java:422:140:422:147 | source(...) : String | Log4jJndiInjectionTest.java:422:131:422:147 | (...)... | -| Log4jJndiInjectionTest.java:423:125:423:132 | source(...) : String | Log4jJndiInjectionTest.java:423:116:423:132 | (...)... | -| Log4jJndiInjectionTest.java:424:110:424:117 | source(...) : String | Log4jJndiInjectionTest.java:424:101:424:117 | (...)... | -| Log4jJndiInjectionTest.java:425:95:425:102 | source(...) : String | Log4jJndiInjectionTest.java:425:86:425:102 | (...)... | -| Log4jJndiInjectionTest.java:426:80:426:87 | source(...) : String | Log4jJndiInjectionTest.java:426:71:426:87 | (...)... | -| Log4jJndiInjectionTest.java:427:65:427:72 | source(...) : String | Log4jJndiInjectionTest.java:427:56:427:72 | (...)... | -| Log4jJndiInjectionTest.java:428:50:428:57 | source(...) : String | Log4jJndiInjectionTest.java:428:41:428:57 | (...)... | -| Log4jJndiInjectionTest.java:429:35:429:42 | source(...) : String | Log4jJndiInjectionTest.java:429:26:429:42 | (...)... | -| Log4jJndiInjectionTest.java:430:170:430:177 | source(...) : String | Log4jJndiInjectionTest.java:430:161:430:177 | (...)... | -| Log4jJndiInjectionTest.java:431:155:431:162 | source(...) : String | Log4jJndiInjectionTest.java:431:146:431:162 | (...)... | -| Log4jJndiInjectionTest.java:432:140:432:147 | source(...) : String | Log4jJndiInjectionTest.java:432:131:432:147 | (...)... | -| Log4jJndiInjectionTest.java:433:125:433:132 | source(...) : String | Log4jJndiInjectionTest.java:433:116:433:132 | (...)... | -| Log4jJndiInjectionTest.java:434:110:434:117 | source(...) : String | Log4jJndiInjectionTest.java:434:101:434:117 | (...)... | -| Log4jJndiInjectionTest.java:435:95:435:102 | source(...) : String | Log4jJndiInjectionTest.java:435:86:435:102 | (...)... | -| Log4jJndiInjectionTest.java:436:80:436:87 | source(...) : String | Log4jJndiInjectionTest.java:436:71:436:87 | (...)... | -| Log4jJndiInjectionTest.java:437:65:437:72 | source(...) : String | Log4jJndiInjectionTest.java:437:56:437:72 | (...)... | -| Log4jJndiInjectionTest.java:438:50:438:57 | source(...) : String | Log4jJndiInjectionTest.java:438:41:438:57 | (...)... | -| Log4jJndiInjectionTest.java:439:35:439:42 | source(...) : String | Log4jJndiInjectionTest.java:439:26:439:42 | (...)... | -| Log4jJndiInjectionTest.java:440:35:440:42 | source(...) : String | Log4jJndiInjectionTest.java:440:26:440:42 | (...)... | -| Log4jJndiInjectionTest.java:441:55:441:62 | source(...) : String | Log4jJndiInjectionTest.java:441:41:441:62 | (...)... | -| Log4jJndiInjectionTest.java:442:35:442:42 | source(...) : String | Log4jJndiInjectionTest.java:442:26:442:42 | (...)... | -| Log4jJndiInjectionTest.java:443:40:443:47 | source(...) : String | Log4jJndiInjectionTest.java:443:26:443:47 | (...)... | -| Log4jJndiInjectionTest.java:444:40:444:47 | source(...) : String | Log4jJndiInjectionTest.java:444:26:444:47 | (...)... | -| Log4jJndiInjectionTest.java:445:40:445:47 | source(...) : String | Log4jJndiInjectionTest.java:445:25:445:47 | (...)... | -| Log4jJndiInjectionTest.java:446:40:446:47 | source(...) : String | Log4jJndiInjectionTest.java:446:25:446:47 | (...)... | -| Log4jJndiInjectionTest.java:447:55:447:62 | source(...) : String | Log4jJndiInjectionTest.java:447:40:447:62 | (...)... | -| Log4jJndiInjectionTest.java:448:55:448:62 | source(...) : String | Log4jJndiInjectionTest.java:448:40:448:62 | (...)... | -| Log4jJndiInjectionTest.java:449:50:449:57 | source(...) : String | Log4jJndiInjectionTest.java:449:40:449:57 | (...)... | -| Log4jJndiInjectionTest.java:450:58:450:65 | source(...) : String | Log4jJndiInjectionTest.java:450:40:450:65 | (...)... | -| Log4jJndiInjectionTest.java:451:58:451:65 | source(...) : String | Log4jJndiInjectionTest.java:451:40:451:65 | (...)... | -| Log4jJndiInjectionTest.java:453:49:453:56 | source(...) : String | Log4jJndiInjectionTest.java:453:40:453:56 | (...)... | -| Log4jJndiInjectionTest.java:454:49:454:56 | source(...) : String | Log4jJndiInjectionTest.java:454:40:454:56 | (...)... | -| Log4jJndiInjectionTest.java:455:55:455:77 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:455:55:455:77 | new Object[] | -| Log4jJndiInjectionTest.java:455:69:455:76 | source(...) : String | Log4jJndiInjectionTest.java:455:55:455:77 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:456:64:456:71 | source(...) : String | Log4jJndiInjectionTest.java:456:55:456:71 | (...)... | -| Log4jJndiInjectionTest.java:457:49:457:56 | source(...) : String | Log4jJndiInjectionTest.java:457:40:457:56 | (...)... | -| Log4jJndiInjectionTest.java:458:79:458:86 | source(...) : String | Log4jJndiInjectionTest.java:458:70:458:86 | (...)... | -| Log4jJndiInjectionTest.java:459:64:459:71 | source(...) : String | Log4jJndiInjectionTest.java:459:55:459:71 | (...)... | -| Log4jJndiInjectionTest.java:460:49:460:56 | source(...) : String | Log4jJndiInjectionTest.java:460:40:460:56 | (...)... | -| Log4jJndiInjectionTest.java:461:94:461:101 | source(...) : String | Log4jJndiInjectionTest.java:461:85:461:101 | (...)... | -| Log4jJndiInjectionTest.java:462:79:462:86 | source(...) : String | Log4jJndiInjectionTest.java:462:70:462:86 | (...)... | -| Log4jJndiInjectionTest.java:463:64:463:71 | source(...) : String | Log4jJndiInjectionTest.java:463:55:463:71 | (...)... | -| Log4jJndiInjectionTest.java:464:49:464:56 | source(...) : String | Log4jJndiInjectionTest.java:464:40:464:56 | (...)... | -| Log4jJndiInjectionTest.java:465:109:465:116 | source(...) : String | Log4jJndiInjectionTest.java:465:100:465:116 | (...)... | -| Log4jJndiInjectionTest.java:466:94:466:101 | source(...) : String | Log4jJndiInjectionTest.java:466:85:466:101 | (...)... | -| Log4jJndiInjectionTest.java:467:79:467:86 | source(...) : String | Log4jJndiInjectionTest.java:467:70:467:86 | (...)... | -| Log4jJndiInjectionTest.java:468:64:468:71 | source(...) : String | Log4jJndiInjectionTest.java:468:55:468:71 | (...)... | -| Log4jJndiInjectionTest.java:469:49:469:56 | source(...) : String | Log4jJndiInjectionTest.java:469:40:469:56 | (...)... | -| Log4jJndiInjectionTest.java:470:124:470:131 | source(...) : String | Log4jJndiInjectionTest.java:470:115:470:131 | (...)... | -| Log4jJndiInjectionTest.java:471:109:471:116 | source(...) : String | Log4jJndiInjectionTest.java:471:100:471:116 | (...)... | -| Log4jJndiInjectionTest.java:472:94:472:101 | source(...) : String | Log4jJndiInjectionTest.java:472:85:472:101 | (...)... | -| Log4jJndiInjectionTest.java:473:79:473:86 | source(...) : String | Log4jJndiInjectionTest.java:473:70:473:86 | (...)... | -| Log4jJndiInjectionTest.java:474:64:474:71 | source(...) : String | Log4jJndiInjectionTest.java:474:55:474:71 | (...)... | -| Log4jJndiInjectionTest.java:475:49:475:56 | source(...) : String | Log4jJndiInjectionTest.java:475:40:475:56 | (...)... | -| Log4jJndiInjectionTest.java:476:139:476:146 | source(...) : String | Log4jJndiInjectionTest.java:476:130:476:146 | (...)... | -| Log4jJndiInjectionTest.java:477:124:477:131 | source(...) : String | Log4jJndiInjectionTest.java:477:115:477:131 | (...)... | -| Log4jJndiInjectionTest.java:478:109:478:116 | source(...) : String | Log4jJndiInjectionTest.java:478:100:478:116 | (...)... | -| Log4jJndiInjectionTest.java:479:94:479:101 | source(...) : String | Log4jJndiInjectionTest.java:479:85:479:101 | (...)... | -| Log4jJndiInjectionTest.java:480:79:480:86 | source(...) : String | Log4jJndiInjectionTest.java:480:70:480:86 | (...)... | -| Log4jJndiInjectionTest.java:481:64:481:71 | source(...) : String | Log4jJndiInjectionTest.java:481:55:481:71 | (...)... | -| Log4jJndiInjectionTest.java:482:49:482:56 | source(...) : String | Log4jJndiInjectionTest.java:482:40:482:56 | (...)... | -| Log4jJndiInjectionTest.java:483:154:483:161 | source(...) : String | Log4jJndiInjectionTest.java:483:145:483:161 | (...)... | -| Log4jJndiInjectionTest.java:484:139:484:146 | source(...) : String | Log4jJndiInjectionTest.java:484:130:484:146 | (...)... | -| Log4jJndiInjectionTest.java:485:124:485:131 | source(...) : String | Log4jJndiInjectionTest.java:485:115:485:131 | (...)... | -| Log4jJndiInjectionTest.java:486:109:486:116 | source(...) : String | Log4jJndiInjectionTest.java:486:100:486:116 | (...)... | -| Log4jJndiInjectionTest.java:487:94:487:101 | source(...) : String | Log4jJndiInjectionTest.java:487:85:487:101 | (...)... | -| Log4jJndiInjectionTest.java:488:79:488:86 | source(...) : String | Log4jJndiInjectionTest.java:488:70:488:86 | (...)... | -| Log4jJndiInjectionTest.java:489:64:489:71 | source(...) : String | Log4jJndiInjectionTest.java:489:55:489:71 | (...)... | -| Log4jJndiInjectionTest.java:490:49:490:56 | source(...) : String | Log4jJndiInjectionTest.java:490:40:490:56 | (...)... | -| Log4jJndiInjectionTest.java:491:169:491:176 | source(...) : String | Log4jJndiInjectionTest.java:491:160:491:176 | (...)... | -| Log4jJndiInjectionTest.java:492:154:492:161 | source(...) : String | Log4jJndiInjectionTest.java:492:145:492:161 | (...)... | -| Log4jJndiInjectionTest.java:493:139:493:146 | source(...) : String | Log4jJndiInjectionTest.java:493:130:493:146 | (...)... | -| Log4jJndiInjectionTest.java:494:124:494:131 | source(...) : String | Log4jJndiInjectionTest.java:494:115:494:131 | (...)... | -| Log4jJndiInjectionTest.java:495:109:495:116 | source(...) : String | Log4jJndiInjectionTest.java:495:100:495:116 | (...)... | -| Log4jJndiInjectionTest.java:496:94:496:101 | source(...) : String | Log4jJndiInjectionTest.java:496:85:496:101 | (...)... | -| Log4jJndiInjectionTest.java:497:79:497:86 | source(...) : String | Log4jJndiInjectionTest.java:497:70:497:86 | (...)... | -| Log4jJndiInjectionTest.java:498:64:498:71 | source(...) : String | Log4jJndiInjectionTest.java:498:55:498:71 | (...)... | -| Log4jJndiInjectionTest.java:499:49:499:56 | source(...) : String | Log4jJndiInjectionTest.java:499:40:499:56 | (...)... | -| Log4jJndiInjectionTest.java:500:184:500:191 | source(...) : String | Log4jJndiInjectionTest.java:500:175:500:191 | (...)... | -| Log4jJndiInjectionTest.java:501:169:501:176 | source(...) : String | Log4jJndiInjectionTest.java:501:160:501:176 | (...)... | -| Log4jJndiInjectionTest.java:502:154:502:161 | source(...) : String | Log4jJndiInjectionTest.java:502:145:502:161 | (...)... | -| Log4jJndiInjectionTest.java:503:139:503:146 | source(...) : String | Log4jJndiInjectionTest.java:503:130:503:146 | (...)... | -| Log4jJndiInjectionTest.java:504:124:504:131 | source(...) : String | Log4jJndiInjectionTest.java:504:115:504:131 | (...)... | -| Log4jJndiInjectionTest.java:505:109:505:116 | source(...) : String | Log4jJndiInjectionTest.java:505:100:505:116 | (...)... | -| Log4jJndiInjectionTest.java:506:94:506:101 | source(...) : String | Log4jJndiInjectionTest.java:506:85:506:101 | (...)... | -| Log4jJndiInjectionTest.java:507:79:507:86 | source(...) : String | Log4jJndiInjectionTest.java:507:70:507:86 | (...)... | -| Log4jJndiInjectionTest.java:508:64:508:71 | source(...) : String | Log4jJndiInjectionTest.java:508:55:508:71 | (...)... | -| Log4jJndiInjectionTest.java:509:49:509:56 | source(...) : String | Log4jJndiInjectionTest.java:509:40:509:56 | (...)... | -| Log4jJndiInjectionTest.java:510:49:510:56 | source(...) : String | Log4jJndiInjectionTest.java:510:40:510:56 | (...)... | -| Log4jJndiInjectionTest.java:511:69:511:76 | source(...) : String | Log4jJndiInjectionTest.java:511:55:511:76 | (...)... | -| Log4jJndiInjectionTest.java:512:49:512:56 | source(...) : String | Log4jJndiInjectionTest.java:512:40:512:56 | (...)... | -| Log4jJndiInjectionTest.java:513:54:513:61 | source(...) : String | Log4jJndiInjectionTest.java:513:40:513:61 | (...)... | -| Log4jJndiInjectionTest.java:514:54:514:61 | source(...) : String | Log4jJndiInjectionTest.java:514:40:514:61 | (...)... | -| Log4jJndiInjectionTest.java:515:43:515:50 | source(...) : String | Log4jJndiInjectionTest.java:515:25:515:50 | (...)... | -| Log4jJndiInjectionTest.java:516:43:516:50 | source(...) : String | Log4jJndiInjectionTest.java:516:25:516:50 | (...)... | -| Log4jJndiInjectionTest.java:517:35:517:42 | source(...) : String | Log4jJndiInjectionTest.java:517:25:517:42 | (...)... | -| Log4jJndiInjectionTest.java:518:35:518:42 | source(...) : String | Log4jJndiInjectionTest.java:518:25:518:42 | (...)... | -| Log4jJndiInjectionTest.java:521:34:521:41 | source(...) : String | Log4jJndiInjectionTest.java:521:25:521:41 | (...)... | -| Log4jJndiInjectionTest.java:522:34:522:41 | source(...) : String | Log4jJndiInjectionTest.java:522:25:522:41 | (...)... | -| Log4jJndiInjectionTest.java:523:40:523:62 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:523:40:523:62 | new Object[] | -| Log4jJndiInjectionTest.java:523:54:523:61 | source(...) : String | Log4jJndiInjectionTest.java:523:40:523:62 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:524:49:524:56 | source(...) : String | Log4jJndiInjectionTest.java:524:40:524:56 | (...)... | -| Log4jJndiInjectionTest.java:525:34:525:41 | source(...) : String | Log4jJndiInjectionTest.java:525:25:525:41 | (...)... | -| Log4jJndiInjectionTest.java:526:64:526:71 | source(...) : String | Log4jJndiInjectionTest.java:526:55:526:71 | (...)... | -| Log4jJndiInjectionTest.java:527:49:527:56 | source(...) : String | Log4jJndiInjectionTest.java:527:40:527:56 | (...)... | -| Log4jJndiInjectionTest.java:528:34:528:41 | source(...) : String | Log4jJndiInjectionTest.java:528:25:528:41 | (...)... | -| Log4jJndiInjectionTest.java:529:79:529:86 | source(...) : String | Log4jJndiInjectionTest.java:529:70:529:86 | (...)... | -| Log4jJndiInjectionTest.java:530:64:530:71 | source(...) : String | Log4jJndiInjectionTest.java:530:55:530:71 | (...)... | -| Log4jJndiInjectionTest.java:531:49:531:56 | source(...) : String | Log4jJndiInjectionTest.java:531:40:531:56 | (...)... | -| Log4jJndiInjectionTest.java:532:34:532:41 | source(...) : String | Log4jJndiInjectionTest.java:532:25:532:41 | (...)... | -| Log4jJndiInjectionTest.java:533:94:533:101 | source(...) : String | Log4jJndiInjectionTest.java:533:85:533:101 | (...)... | -| Log4jJndiInjectionTest.java:534:79:534:86 | source(...) : String | Log4jJndiInjectionTest.java:534:70:534:86 | (...)... | -| Log4jJndiInjectionTest.java:535:64:535:71 | source(...) : String | Log4jJndiInjectionTest.java:535:55:535:71 | (...)... | -| Log4jJndiInjectionTest.java:536:49:536:56 | source(...) : String | Log4jJndiInjectionTest.java:536:40:536:56 | (...)... | -| Log4jJndiInjectionTest.java:537:34:537:41 | source(...) : String | Log4jJndiInjectionTest.java:537:25:537:41 | (...)... | -| Log4jJndiInjectionTest.java:538:109:538:116 | source(...) : String | Log4jJndiInjectionTest.java:538:100:538:116 | (...)... | -| Log4jJndiInjectionTest.java:539:94:539:101 | source(...) : String | Log4jJndiInjectionTest.java:539:85:539:101 | (...)... | -| Log4jJndiInjectionTest.java:540:79:540:86 | source(...) : String | Log4jJndiInjectionTest.java:540:70:540:86 | (...)... | -| Log4jJndiInjectionTest.java:541:64:541:71 | source(...) : String | Log4jJndiInjectionTest.java:541:55:541:71 | (...)... | -| Log4jJndiInjectionTest.java:542:49:542:56 | source(...) : String | Log4jJndiInjectionTest.java:542:40:542:56 | (...)... | -| Log4jJndiInjectionTest.java:543:34:543:41 | source(...) : String | Log4jJndiInjectionTest.java:543:25:543:41 | (...)... | -| Log4jJndiInjectionTest.java:544:124:544:131 | source(...) : String | Log4jJndiInjectionTest.java:544:115:544:131 | (...)... | -| Log4jJndiInjectionTest.java:545:109:545:116 | source(...) : String | Log4jJndiInjectionTest.java:545:100:545:116 | (...)... | -| Log4jJndiInjectionTest.java:546:94:546:101 | source(...) : String | Log4jJndiInjectionTest.java:546:85:546:101 | (...)... | -| Log4jJndiInjectionTest.java:547:79:547:86 | source(...) : String | Log4jJndiInjectionTest.java:547:70:547:86 | (...)... | -| Log4jJndiInjectionTest.java:548:64:548:71 | source(...) : String | Log4jJndiInjectionTest.java:548:55:548:71 | (...)... | -| Log4jJndiInjectionTest.java:549:49:549:56 | source(...) : String | Log4jJndiInjectionTest.java:549:40:549:56 | (...)... | -| Log4jJndiInjectionTest.java:550:34:550:41 | source(...) : String | Log4jJndiInjectionTest.java:550:25:550:41 | (...)... | -| Log4jJndiInjectionTest.java:551:139:551:146 | source(...) : String | Log4jJndiInjectionTest.java:551:130:551:146 | (...)... | -| Log4jJndiInjectionTest.java:552:124:552:131 | source(...) : String | Log4jJndiInjectionTest.java:552:115:552:131 | (...)... | -| Log4jJndiInjectionTest.java:553:109:553:116 | source(...) : String | Log4jJndiInjectionTest.java:553:100:553:116 | (...)... | -| Log4jJndiInjectionTest.java:554:94:554:101 | source(...) : String | Log4jJndiInjectionTest.java:554:85:554:101 | (...)... | -| Log4jJndiInjectionTest.java:555:79:555:86 | source(...) : String | Log4jJndiInjectionTest.java:555:70:555:86 | (...)... | -| Log4jJndiInjectionTest.java:556:64:556:71 | source(...) : String | Log4jJndiInjectionTest.java:556:55:556:71 | (...)... | -| Log4jJndiInjectionTest.java:557:49:557:56 | source(...) : String | Log4jJndiInjectionTest.java:557:40:557:56 | (...)... | -| Log4jJndiInjectionTest.java:558:34:558:41 | source(...) : String | Log4jJndiInjectionTest.java:558:25:558:41 | (...)... | -| Log4jJndiInjectionTest.java:559:154:559:161 | source(...) : String | Log4jJndiInjectionTest.java:559:145:559:161 | (...)... | -| Log4jJndiInjectionTest.java:560:139:560:146 | source(...) : String | Log4jJndiInjectionTest.java:560:130:560:146 | (...)... | -| Log4jJndiInjectionTest.java:561:124:561:131 | source(...) : String | Log4jJndiInjectionTest.java:561:115:561:131 | (...)... | -| Log4jJndiInjectionTest.java:562:109:562:116 | source(...) : String | Log4jJndiInjectionTest.java:562:100:562:116 | (...)... | -| Log4jJndiInjectionTest.java:563:94:563:101 | source(...) : String | Log4jJndiInjectionTest.java:563:85:563:101 | (...)... | -| Log4jJndiInjectionTest.java:564:79:564:86 | source(...) : String | Log4jJndiInjectionTest.java:564:70:564:86 | (...)... | -| Log4jJndiInjectionTest.java:565:64:565:71 | source(...) : String | Log4jJndiInjectionTest.java:565:55:565:71 | (...)... | -| Log4jJndiInjectionTest.java:566:49:566:56 | source(...) : String | Log4jJndiInjectionTest.java:566:40:566:56 | (...)... | -| Log4jJndiInjectionTest.java:567:34:567:41 | source(...) : String | Log4jJndiInjectionTest.java:567:25:567:41 | (...)... | -| Log4jJndiInjectionTest.java:568:169:568:176 | source(...) : String | Log4jJndiInjectionTest.java:568:160:568:176 | (...)... | -| Log4jJndiInjectionTest.java:569:154:569:161 | source(...) : String | Log4jJndiInjectionTest.java:569:145:569:161 | (...)... | -| Log4jJndiInjectionTest.java:570:139:570:146 | source(...) : String | Log4jJndiInjectionTest.java:570:130:570:146 | (...)... | -| Log4jJndiInjectionTest.java:571:124:571:131 | source(...) : String | Log4jJndiInjectionTest.java:571:115:571:131 | (...)... | -| Log4jJndiInjectionTest.java:572:109:572:116 | source(...) : String | Log4jJndiInjectionTest.java:572:100:572:116 | (...)... | -| Log4jJndiInjectionTest.java:573:94:573:101 | source(...) : String | Log4jJndiInjectionTest.java:573:85:573:101 | (...)... | -| Log4jJndiInjectionTest.java:574:79:574:86 | source(...) : String | Log4jJndiInjectionTest.java:574:70:574:86 | (...)... | -| Log4jJndiInjectionTest.java:575:64:575:71 | source(...) : String | Log4jJndiInjectionTest.java:575:55:575:71 | (...)... | -| Log4jJndiInjectionTest.java:576:49:576:56 | source(...) : String | Log4jJndiInjectionTest.java:576:40:576:56 | (...)... | -| Log4jJndiInjectionTest.java:577:34:577:41 | source(...) : String | Log4jJndiInjectionTest.java:577:25:577:41 | (...)... | -| Log4jJndiInjectionTest.java:578:34:578:41 | source(...) : String | Log4jJndiInjectionTest.java:578:25:578:41 | (...)... | -| Log4jJndiInjectionTest.java:579:54:579:61 | source(...) : String | Log4jJndiInjectionTest.java:579:40:579:61 | (...)... | -| Log4jJndiInjectionTest.java:580:34:580:41 | source(...) : String | Log4jJndiInjectionTest.java:580:25:580:41 | (...)... | -| Log4jJndiInjectionTest.java:581:39:581:46 | source(...) : String | Log4jJndiInjectionTest.java:581:25:581:46 | (...)... | -| Log4jJndiInjectionTest.java:582:39:582:46 | source(...) : String | Log4jJndiInjectionTest.java:582:25:582:46 | (...)... | -| Log4jJndiInjectionTest.java:583:53:583:60 | source(...) : String | Log4jJndiInjectionTest.java:583:38:583:60 | (...)... | -| Log4jJndiInjectionTest.java:584:53:584:60 | source(...) : String | Log4jJndiInjectionTest.java:584:38:584:60 | (...)... | -| Log4jJndiInjectionTest.java:585:68:585:75 | source(...) : String | Log4jJndiInjectionTest.java:585:53:585:75 | (...)... | -| Log4jJndiInjectionTest.java:586:68:586:75 | source(...) : String | Log4jJndiInjectionTest.java:586:53:586:75 | (...)... | -| Log4jJndiInjectionTest.java:587:63:587:70 | source(...) : String | Log4jJndiInjectionTest.java:587:53:587:70 | (...)... | -| Log4jJndiInjectionTest.java:588:71:588:78 | source(...) : String | Log4jJndiInjectionTest.java:588:53:588:78 | (...)... | -| Log4jJndiInjectionTest.java:589:71:589:78 | source(...) : String | Log4jJndiInjectionTest.java:589:53:589:78 | (...)... | -| Log4jJndiInjectionTest.java:591:62:591:69 | source(...) : String | Log4jJndiInjectionTest.java:591:53:591:69 | (...)... | -| Log4jJndiInjectionTest.java:592:62:592:69 | source(...) : String | Log4jJndiInjectionTest.java:592:53:592:69 | (...)... | -| Log4jJndiInjectionTest.java:593:68:593:90 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:593:68:593:90 | new Object[] | -| Log4jJndiInjectionTest.java:593:82:593:89 | source(...) : String | Log4jJndiInjectionTest.java:593:68:593:90 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:594:77:594:84 | source(...) : String | Log4jJndiInjectionTest.java:594:68:594:84 | (...)... | -| Log4jJndiInjectionTest.java:595:62:595:69 | source(...) : String | Log4jJndiInjectionTest.java:595:53:595:69 | (...)... | -| Log4jJndiInjectionTest.java:596:92:596:99 | source(...) : String | Log4jJndiInjectionTest.java:596:83:596:99 | (...)... | -| Log4jJndiInjectionTest.java:597:77:597:84 | source(...) : String | Log4jJndiInjectionTest.java:597:68:597:84 | (...)... | -| Log4jJndiInjectionTest.java:598:62:598:69 | source(...) : String | Log4jJndiInjectionTest.java:598:53:598:69 | (...)... | -| Log4jJndiInjectionTest.java:599:107:599:114 | source(...) : String | Log4jJndiInjectionTest.java:599:98:599:114 | (...)... | -| Log4jJndiInjectionTest.java:600:92:600:99 | source(...) : String | Log4jJndiInjectionTest.java:600:83:600:99 | (...)... | -| Log4jJndiInjectionTest.java:601:77:601:84 | source(...) : String | Log4jJndiInjectionTest.java:601:68:601:84 | (...)... | -| Log4jJndiInjectionTest.java:602:62:602:69 | source(...) : String | Log4jJndiInjectionTest.java:602:53:602:69 | (...)... | -| Log4jJndiInjectionTest.java:603:122:603:129 | source(...) : String | Log4jJndiInjectionTest.java:603:113:603:129 | (...)... | -| Log4jJndiInjectionTest.java:604:107:604:114 | source(...) : String | Log4jJndiInjectionTest.java:604:98:604:114 | (...)... | -| Log4jJndiInjectionTest.java:605:92:605:99 | source(...) : String | Log4jJndiInjectionTest.java:605:83:605:99 | (...)... | -| Log4jJndiInjectionTest.java:606:77:606:84 | source(...) : String | Log4jJndiInjectionTest.java:606:68:606:84 | (...)... | -| Log4jJndiInjectionTest.java:607:62:607:69 | source(...) : String | Log4jJndiInjectionTest.java:607:53:607:69 | (...)... | -| Log4jJndiInjectionTest.java:608:137:608:144 | source(...) : String | Log4jJndiInjectionTest.java:608:128:608:144 | (...)... | -| Log4jJndiInjectionTest.java:609:122:609:129 | source(...) : String | Log4jJndiInjectionTest.java:609:113:609:129 | (...)... | -| Log4jJndiInjectionTest.java:610:107:610:114 | source(...) : String | Log4jJndiInjectionTest.java:610:98:610:114 | (...)... | -| Log4jJndiInjectionTest.java:611:92:611:99 | source(...) : String | Log4jJndiInjectionTest.java:611:83:611:99 | (...)... | -| Log4jJndiInjectionTest.java:612:77:612:84 | source(...) : String | Log4jJndiInjectionTest.java:612:68:612:84 | (...)... | -| Log4jJndiInjectionTest.java:613:62:613:69 | source(...) : String | Log4jJndiInjectionTest.java:613:53:613:69 | (...)... | -| Log4jJndiInjectionTest.java:614:152:614:159 | source(...) : String | Log4jJndiInjectionTest.java:614:143:614:159 | (...)... | -| Log4jJndiInjectionTest.java:615:137:615:144 | source(...) : String | Log4jJndiInjectionTest.java:615:128:615:144 | (...)... | -| Log4jJndiInjectionTest.java:616:122:616:129 | source(...) : String | Log4jJndiInjectionTest.java:616:113:616:129 | (...)... | -| Log4jJndiInjectionTest.java:617:107:617:114 | source(...) : String | Log4jJndiInjectionTest.java:617:98:617:114 | (...)... | -| Log4jJndiInjectionTest.java:618:92:618:99 | source(...) : String | Log4jJndiInjectionTest.java:618:83:618:99 | (...)... | -| Log4jJndiInjectionTest.java:619:77:619:84 | source(...) : String | Log4jJndiInjectionTest.java:619:68:619:84 | (...)... | -| Log4jJndiInjectionTest.java:620:62:620:69 | source(...) : String | Log4jJndiInjectionTest.java:620:53:620:69 | (...)... | -| Log4jJndiInjectionTest.java:621:167:621:174 | source(...) : String | Log4jJndiInjectionTest.java:621:158:621:174 | (...)... | -| Log4jJndiInjectionTest.java:622:152:622:159 | source(...) : String | Log4jJndiInjectionTest.java:622:143:622:159 | (...)... | -| Log4jJndiInjectionTest.java:623:137:623:144 | source(...) : String | Log4jJndiInjectionTest.java:623:128:623:144 | (...)... | -| Log4jJndiInjectionTest.java:624:122:624:129 | source(...) : String | Log4jJndiInjectionTest.java:624:113:624:129 | (...)... | -| Log4jJndiInjectionTest.java:625:107:625:114 | source(...) : String | Log4jJndiInjectionTest.java:625:98:625:114 | (...)... | -| Log4jJndiInjectionTest.java:626:92:626:99 | source(...) : String | Log4jJndiInjectionTest.java:626:83:626:99 | (...)... | -| Log4jJndiInjectionTest.java:627:77:627:84 | source(...) : String | Log4jJndiInjectionTest.java:627:68:627:84 | (...)... | -| Log4jJndiInjectionTest.java:628:62:628:69 | source(...) : String | Log4jJndiInjectionTest.java:628:53:628:69 | (...)... | -| Log4jJndiInjectionTest.java:629:182:629:189 | source(...) : String | Log4jJndiInjectionTest.java:629:173:629:189 | (...)... | -| Log4jJndiInjectionTest.java:630:167:630:174 | source(...) : String | Log4jJndiInjectionTest.java:630:158:630:174 | (...)... | -| Log4jJndiInjectionTest.java:631:152:631:159 | source(...) : String | Log4jJndiInjectionTest.java:631:143:631:159 | (...)... | -| Log4jJndiInjectionTest.java:632:137:632:144 | source(...) : String | Log4jJndiInjectionTest.java:632:128:632:144 | (...)... | -| Log4jJndiInjectionTest.java:633:122:633:129 | source(...) : String | Log4jJndiInjectionTest.java:633:113:633:129 | (...)... | -| Log4jJndiInjectionTest.java:634:107:634:114 | source(...) : String | Log4jJndiInjectionTest.java:634:98:634:114 | (...)... | -| Log4jJndiInjectionTest.java:635:92:635:99 | source(...) : String | Log4jJndiInjectionTest.java:635:83:635:99 | (...)... | -| Log4jJndiInjectionTest.java:636:77:636:84 | source(...) : String | Log4jJndiInjectionTest.java:636:68:636:84 | (...)... | -| Log4jJndiInjectionTest.java:637:62:637:69 | source(...) : String | Log4jJndiInjectionTest.java:637:53:637:69 | (...)... | -| Log4jJndiInjectionTest.java:638:197:638:204 | source(...) : String | Log4jJndiInjectionTest.java:638:188:638:204 | (...)... | -| Log4jJndiInjectionTest.java:639:182:639:189 | source(...) : String | Log4jJndiInjectionTest.java:639:173:639:189 | (...)... | -| Log4jJndiInjectionTest.java:640:167:640:174 | source(...) : String | Log4jJndiInjectionTest.java:640:158:640:174 | (...)... | -| Log4jJndiInjectionTest.java:641:152:641:159 | source(...) : String | Log4jJndiInjectionTest.java:641:143:641:159 | (...)... | -| Log4jJndiInjectionTest.java:642:137:642:144 | source(...) : String | Log4jJndiInjectionTest.java:642:128:642:144 | (...)... | -| Log4jJndiInjectionTest.java:643:122:643:129 | source(...) : String | Log4jJndiInjectionTest.java:643:113:643:129 | (...)... | -| Log4jJndiInjectionTest.java:644:107:644:114 | source(...) : String | Log4jJndiInjectionTest.java:644:98:644:114 | (...)... | -| Log4jJndiInjectionTest.java:645:92:645:99 | source(...) : String | Log4jJndiInjectionTest.java:645:83:645:99 | (...)... | -| Log4jJndiInjectionTest.java:646:77:646:84 | source(...) : String | Log4jJndiInjectionTest.java:646:68:646:84 | (...)... | -| Log4jJndiInjectionTest.java:647:62:647:69 | source(...) : String | Log4jJndiInjectionTest.java:647:53:647:69 | (...)... | -| Log4jJndiInjectionTest.java:648:62:648:69 | source(...) : String | Log4jJndiInjectionTest.java:648:53:648:69 | (...)... | -| Log4jJndiInjectionTest.java:649:82:649:89 | source(...) : String | Log4jJndiInjectionTest.java:649:68:649:89 | (...)... | -| Log4jJndiInjectionTest.java:650:62:650:69 | source(...) : String | Log4jJndiInjectionTest.java:650:53:650:69 | (...)... | -| Log4jJndiInjectionTest.java:651:67:651:74 | source(...) : String | Log4jJndiInjectionTest.java:651:53:651:74 | (...)... | -| Log4jJndiInjectionTest.java:652:67:652:74 | source(...) : String | Log4jJndiInjectionTest.java:652:53:652:74 | (...)... | -| Log4jJndiInjectionTest.java:653:56:653:63 | source(...) : String | Log4jJndiInjectionTest.java:653:38:653:63 | (...)... | -| Log4jJndiInjectionTest.java:654:56:654:63 | source(...) : String | Log4jJndiInjectionTest.java:654:38:654:63 | (...)... | -| Log4jJndiInjectionTest.java:655:48:655:55 | source(...) : String | Log4jJndiInjectionTest.java:655:38:655:55 | (...)... | -| Log4jJndiInjectionTest.java:656:48:656:55 | source(...) : String | Log4jJndiInjectionTest.java:656:38:656:55 | (...)... | -| Log4jJndiInjectionTest.java:659:47:659:54 | source(...) : String | Log4jJndiInjectionTest.java:659:38:659:54 | (...)... | -| Log4jJndiInjectionTest.java:660:47:660:54 | source(...) : String | Log4jJndiInjectionTest.java:660:38:660:54 | (...)... | -| Log4jJndiInjectionTest.java:661:53:661:75 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:661:53:661:75 | new Object[] | -| Log4jJndiInjectionTest.java:661:67:661:74 | source(...) : String | Log4jJndiInjectionTest.java:661:53:661:75 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:662:62:662:69 | source(...) : String | Log4jJndiInjectionTest.java:662:53:662:69 | (...)... | -| Log4jJndiInjectionTest.java:663:47:663:54 | source(...) : String | Log4jJndiInjectionTest.java:663:38:663:54 | (...)... | -| Log4jJndiInjectionTest.java:664:77:664:84 | source(...) : String | Log4jJndiInjectionTest.java:664:68:664:84 | (...)... | -| Log4jJndiInjectionTest.java:665:62:665:69 | source(...) : String | Log4jJndiInjectionTest.java:665:53:665:69 | (...)... | -| Log4jJndiInjectionTest.java:666:47:666:54 | source(...) : String | Log4jJndiInjectionTest.java:666:38:666:54 | (...)... | -| Log4jJndiInjectionTest.java:667:92:667:99 | source(...) : String | Log4jJndiInjectionTest.java:667:83:667:99 | (...)... | -| Log4jJndiInjectionTest.java:668:77:668:84 | source(...) : String | Log4jJndiInjectionTest.java:668:68:668:84 | (...)... | -| Log4jJndiInjectionTest.java:669:62:669:69 | source(...) : String | Log4jJndiInjectionTest.java:669:53:669:69 | (...)... | -| Log4jJndiInjectionTest.java:670:47:670:54 | source(...) : String | Log4jJndiInjectionTest.java:670:38:670:54 | (...)... | -| Log4jJndiInjectionTest.java:671:107:671:114 | source(...) : String | Log4jJndiInjectionTest.java:671:98:671:114 | (...)... | -| Log4jJndiInjectionTest.java:672:92:672:99 | source(...) : String | Log4jJndiInjectionTest.java:672:83:672:99 | (...)... | -| Log4jJndiInjectionTest.java:673:77:673:84 | source(...) : String | Log4jJndiInjectionTest.java:673:68:673:84 | (...)... | -| Log4jJndiInjectionTest.java:674:62:674:69 | source(...) : String | Log4jJndiInjectionTest.java:674:53:674:69 | (...)... | -| Log4jJndiInjectionTest.java:675:47:675:54 | source(...) : String | Log4jJndiInjectionTest.java:675:38:675:54 | (...)... | -| Log4jJndiInjectionTest.java:676:122:676:129 | source(...) : String | Log4jJndiInjectionTest.java:676:113:676:129 | (...)... | -| Log4jJndiInjectionTest.java:677:107:677:114 | source(...) : String | Log4jJndiInjectionTest.java:677:98:677:114 | (...)... | -| Log4jJndiInjectionTest.java:678:92:678:99 | source(...) : String | Log4jJndiInjectionTest.java:678:83:678:99 | (...)... | -| Log4jJndiInjectionTest.java:679:77:679:84 | source(...) : String | Log4jJndiInjectionTest.java:679:68:679:84 | (...)... | -| Log4jJndiInjectionTest.java:680:62:680:69 | source(...) : String | Log4jJndiInjectionTest.java:680:53:680:69 | (...)... | -| Log4jJndiInjectionTest.java:681:47:681:54 | source(...) : String | Log4jJndiInjectionTest.java:681:38:681:54 | (...)... | -| Log4jJndiInjectionTest.java:682:137:682:144 | source(...) : String | Log4jJndiInjectionTest.java:682:128:682:144 | (...)... | -| Log4jJndiInjectionTest.java:683:122:683:129 | source(...) : String | Log4jJndiInjectionTest.java:683:113:683:129 | (...)... | -| Log4jJndiInjectionTest.java:684:107:684:114 | source(...) : String | Log4jJndiInjectionTest.java:684:98:684:114 | (...)... | -| Log4jJndiInjectionTest.java:685:92:685:99 | source(...) : String | Log4jJndiInjectionTest.java:685:83:685:99 | (...)... | -| Log4jJndiInjectionTest.java:686:77:686:84 | source(...) : String | Log4jJndiInjectionTest.java:686:68:686:84 | (...)... | -| Log4jJndiInjectionTest.java:687:62:687:69 | source(...) : String | Log4jJndiInjectionTest.java:687:53:687:69 | (...)... | -| Log4jJndiInjectionTest.java:688:47:688:54 | source(...) : String | Log4jJndiInjectionTest.java:688:38:688:54 | (...)... | -| Log4jJndiInjectionTest.java:689:152:689:159 | source(...) : String | Log4jJndiInjectionTest.java:689:143:689:159 | (...)... | -| Log4jJndiInjectionTest.java:690:137:690:144 | source(...) : String | Log4jJndiInjectionTest.java:690:128:690:144 | (...)... | -| Log4jJndiInjectionTest.java:691:122:691:129 | source(...) : String | Log4jJndiInjectionTest.java:691:113:691:129 | (...)... | -| Log4jJndiInjectionTest.java:692:107:692:114 | source(...) : String | Log4jJndiInjectionTest.java:692:98:692:114 | (...)... | -| Log4jJndiInjectionTest.java:693:92:693:99 | source(...) : String | Log4jJndiInjectionTest.java:693:83:693:99 | (...)... | -| Log4jJndiInjectionTest.java:694:77:694:84 | source(...) : String | Log4jJndiInjectionTest.java:694:68:694:84 | (...)... | -| Log4jJndiInjectionTest.java:695:62:695:69 | source(...) : String | Log4jJndiInjectionTest.java:695:53:695:69 | (...)... | -| Log4jJndiInjectionTest.java:696:47:696:54 | source(...) : String | Log4jJndiInjectionTest.java:696:38:696:54 | (...)... | -| Log4jJndiInjectionTest.java:697:167:697:174 | source(...) : String | Log4jJndiInjectionTest.java:697:158:697:174 | (...)... | -| Log4jJndiInjectionTest.java:698:152:698:159 | source(...) : String | Log4jJndiInjectionTest.java:698:143:698:159 | (...)... | -| Log4jJndiInjectionTest.java:699:137:699:144 | source(...) : String | Log4jJndiInjectionTest.java:699:128:699:144 | (...)... | -| Log4jJndiInjectionTest.java:700:122:700:129 | source(...) : String | Log4jJndiInjectionTest.java:700:113:700:129 | (...)... | -| Log4jJndiInjectionTest.java:701:107:701:114 | source(...) : String | Log4jJndiInjectionTest.java:701:98:701:114 | (...)... | -| Log4jJndiInjectionTest.java:702:92:702:99 | source(...) : String | Log4jJndiInjectionTest.java:702:83:702:99 | (...)... | -| Log4jJndiInjectionTest.java:703:77:703:84 | source(...) : String | Log4jJndiInjectionTest.java:703:68:703:84 | (...)... | -| Log4jJndiInjectionTest.java:704:62:704:69 | source(...) : String | Log4jJndiInjectionTest.java:704:53:704:69 | (...)... | -| Log4jJndiInjectionTest.java:705:47:705:54 | source(...) : String | Log4jJndiInjectionTest.java:705:38:705:54 | (...)... | -| Log4jJndiInjectionTest.java:706:182:706:189 | source(...) : String | Log4jJndiInjectionTest.java:706:173:706:189 | (...)... | -| Log4jJndiInjectionTest.java:707:167:707:174 | source(...) : String | Log4jJndiInjectionTest.java:707:158:707:174 | (...)... | -| Log4jJndiInjectionTest.java:708:152:708:159 | source(...) : String | Log4jJndiInjectionTest.java:708:143:708:159 | (...)... | -| Log4jJndiInjectionTest.java:709:137:709:144 | source(...) : String | Log4jJndiInjectionTest.java:709:128:709:144 | (...)... | -| Log4jJndiInjectionTest.java:710:122:710:129 | source(...) : String | Log4jJndiInjectionTest.java:710:113:710:129 | (...)... | -| Log4jJndiInjectionTest.java:711:107:711:114 | source(...) : String | Log4jJndiInjectionTest.java:711:98:711:114 | (...)... | -| Log4jJndiInjectionTest.java:712:92:712:99 | source(...) : String | Log4jJndiInjectionTest.java:712:83:712:99 | (...)... | -| Log4jJndiInjectionTest.java:713:77:713:84 | source(...) : String | Log4jJndiInjectionTest.java:713:68:713:84 | (...)... | -| Log4jJndiInjectionTest.java:714:62:714:69 | source(...) : String | Log4jJndiInjectionTest.java:714:53:714:69 | (...)... | -| Log4jJndiInjectionTest.java:715:47:715:54 | source(...) : String | Log4jJndiInjectionTest.java:715:38:715:54 | (...)... | -| Log4jJndiInjectionTest.java:716:47:716:54 | source(...) : String | Log4jJndiInjectionTest.java:716:38:716:54 | (...)... | -| Log4jJndiInjectionTest.java:717:67:717:74 | source(...) : String | Log4jJndiInjectionTest.java:717:53:717:74 | (...)... | -| Log4jJndiInjectionTest.java:718:47:718:54 | source(...) : String | Log4jJndiInjectionTest.java:718:38:718:54 | (...)... | -| Log4jJndiInjectionTest.java:719:52:719:59 | source(...) : String | Log4jJndiInjectionTest.java:719:38:719:59 | (...)... | -| Log4jJndiInjectionTest.java:720:52:720:59 | source(...) : String | Log4jJndiInjectionTest.java:720:38:720:59 | (...)... | -| Log4jJndiInjectionTest.java:721:41:721:48 | source(...) : String | Log4jJndiInjectionTest.java:721:26:721:48 | (...)... | -| Log4jJndiInjectionTest.java:722:41:722:48 | source(...) : String | Log4jJndiInjectionTest.java:722:26:722:48 | (...)... | -| Log4jJndiInjectionTest.java:723:56:723:63 | source(...) : String | Log4jJndiInjectionTest.java:723:41:723:63 | (...)... | -| Log4jJndiInjectionTest.java:724:56:724:63 | source(...) : String | Log4jJndiInjectionTest.java:724:41:724:63 | (...)... | -| Log4jJndiInjectionTest.java:725:51:725:58 | source(...) : String | Log4jJndiInjectionTest.java:725:41:725:58 | (...)... | -| Log4jJndiInjectionTest.java:726:59:726:66 | source(...) : String | Log4jJndiInjectionTest.java:726:41:726:66 | (...)... | -| Log4jJndiInjectionTest.java:727:59:727:66 | source(...) : String | Log4jJndiInjectionTest.java:727:41:727:66 | (...)... | -| Log4jJndiInjectionTest.java:729:50:729:57 | source(...) : String | Log4jJndiInjectionTest.java:729:41:729:57 | (...)... | -| Log4jJndiInjectionTest.java:730:50:730:57 | source(...) : String | Log4jJndiInjectionTest.java:730:41:730:57 | (...)... | -| Log4jJndiInjectionTest.java:731:56:731:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:731:56:731:78 | new Object[] | -| Log4jJndiInjectionTest.java:731:70:731:77 | source(...) : String | Log4jJndiInjectionTest.java:731:56:731:78 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:732:65:732:72 | source(...) : String | Log4jJndiInjectionTest.java:732:56:732:72 | (...)... | -| Log4jJndiInjectionTest.java:733:50:733:57 | source(...) : String | Log4jJndiInjectionTest.java:733:41:733:57 | (...)... | -| Log4jJndiInjectionTest.java:734:80:734:87 | source(...) : String | Log4jJndiInjectionTest.java:734:71:734:87 | (...)... | -| Log4jJndiInjectionTest.java:735:65:735:72 | source(...) : String | Log4jJndiInjectionTest.java:735:56:735:72 | (...)... | -| Log4jJndiInjectionTest.java:736:50:736:57 | source(...) : String | Log4jJndiInjectionTest.java:736:41:736:57 | (...)... | -| Log4jJndiInjectionTest.java:737:95:737:102 | source(...) : String | Log4jJndiInjectionTest.java:737:86:737:102 | (...)... | -| Log4jJndiInjectionTest.java:738:80:738:87 | source(...) : String | Log4jJndiInjectionTest.java:738:71:738:87 | (...)... | -| Log4jJndiInjectionTest.java:739:65:739:72 | source(...) : String | Log4jJndiInjectionTest.java:739:56:739:72 | (...)... | -| Log4jJndiInjectionTest.java:740:50:740:57 | source(...) : String | Log4jJndiInjectionTest.java:740:41:740:57 | (...)... | -| Log4jJndiInjectionTest.java:741:110:741:117 | source(...) : String | Log4jJndiInjectionTest.java:741:101:741:117 | (...)... | -| Log4jJndiInjectionTest.java:742:95:742:102 | source(...) : String | Log4jJndiInjectionTest.java:742:86:742:102 | (...)... | -| Log4jJndiInjectionTest.java:743:80:743:87 | source(...) : String | Log4jJndiInjectionTest.java:743:71:743:87 | (...)... | -| Log4jJndiInjectionTest.java:744:65:744:72 | source(...) : String | Log4jJndiInjectionTest.java:744:56:744:72 | (...)... | -| Log4jJndiInjectionTest.java:745:50:745:57 | source(...) : String | Log4jJndiInjectionTest.java:745:41:745:57 | (...)... | -| Log4jJndiInjectionTest.java:746:125:746:132 | source(...) : String | Log4jJndiInjectionTest.java:746:116:746:132 | (...)... | -| Log4jJndiInjectionTest.java:747:110:747:117 | source(...) : String | Log4jJndiInjectionTest.java:747:101:747:117 | (...)... | -| Log4jJndiInjectionTest.java:748:95:748:102 | source(...) : String | Log4jJndiInjectionTest.java:748:86:748:102 | (...)... | -| Log4jJndiInjectionTest.java:749:80:749:87 | source(...) : String | Log4jJndiInjectionTest.java:749:71:749:87 | (...)... | -| Log4jJndiInjectionTest.java:750:65:750:72 | source(...) : String | Log4jJndiInjectionTest.java:750:56:750:72 | (...)... | -| Log4jJndiInjectionTest.java:751:50:751:57 | source(...) : String | Log4jJndiInjectionTest.java:751:41:751:57 | (...)... | -| Log4jJndiInjectionTest.java:752:140:752:147 | source(...) : String | Log4jJndiInjectionTest.java:752:131:752:147 | (...)... | -| Log4jJndiInjectionTest.java:753:125:753:132 | source(...) : String | Log4jJndiInjectionTest.java:753:116:753:132 | (...)... | -| Log4jJndiInjectionTest.java:754:110:754:117 | source(...) : String | Log4jJndiInjectionTest.java:754:101:754:117 | (...)... | -| Log4jJndiInjectionTest.java:755:95:755:102 | source(...) : String | Log4jJndiInjectionTest.java:755:86:755:102 | (...)... | -| Log4jJndiInjectionTest.java:756:80:756:87 | source(...) : String | Log4jJndiInjectionTest.java:756:71:756:87 | (...)... | -| Log4jJndiInjectionTest.java:757:65:757:72 | source(...) : String | Log4jJndiInjectionTest.java:757:56:757:72 | (...)... | -| Log4jJndiInjectionTest.java:758:50:758:57 | source(...) : String | Log4jJndiInjectionTest.java:758:41:758:57 | (...)... | -| Log4jJndiInjectionTest.java:759:155:759:162 | source(...) : String | Log4jJndiInjectionTest.java:759:146:759:162 | (...)... | -| Log4jJndiInjectionTest.java:760:140:760:147 | source(...) : String | Log4jJndiInjectionTest.java:760:131:760:147 | (...)... | -| Log4jJndiInjectionTest.java:761:125:761:132 | source(...) : String | Log4jJndiInjectionTest.java:761:116:761:132 | (...)... | -| Log4jJndiInjectionTest.java:762:110:762:117 | source(...) : String | Log4jJndiInjectionTest.java:762:101:762:117 | (...)... | -| Log4jJndiInjectionTest.java:763:95:763:102 | source(...) : String | Log4jJndiInjectionTest.java:763:86:763:102 | (...)... | -| Log4jJndiInjectionTest.java:764:80:764:87 | source(...) : String | Log4jJndiInjectionTest.java:764:71:764:87 | (...)... | -| Log4jJndiInjectionTest.java:765:65:765:72 | source(...) : String | Log4jJndiInjectionTest.java:765:56:765:72 | (...)... | -| Log4jJndiInjectionTest.java:766:50:766:57 | source(...) : String | Log4jJndiInjectionTest.java:766:41:766:57 | (...)... | -| Log4jJndiInjectionTest.java:767:170:767:177 | source(...) : String | Log4jJndiInjectionTest.java:767:161:767:177 | (...)... | -| Log4jJndiInjectionTest.java:768:155:768:162 | source(...) : String | Log4jJndiInjectionTest.java:768:146:768:162 | (...)... | -| Log4jJndiInjectionTest.java:769:140:769:147 | source(...) : String | Log4jJndiInjectionTest.java:769:131:769:147 | (...)... | -| Log4jJndiInjectionTest.java:770:125:770:132 | source(...) : String | Log4jJndiInjectionTest.java:770:116:770:132 | (...)... | -| Log4jJndiInjectionTest.java:771:110:771:117 | source(...) : String | Log4jJndiInjectionTest.java:771:101:771:117 | (...)... | -| Log4jJndiInjectionTest.java:772:95:772:102 | source(...) : String | Log4jJndiInjectionTest.java:772:86:772:102 | (...)... | -| Log4jJndiInjectionTest.java:773:80:773:87 | source(...) : String | Log4jJndiInjectionTest.java:773:71:773:87 | (...)... | -| Log4jJndiInjectionTest.java:774:65:774:72 | source(...) : String | Log4jJndiInjectionTest.java:774:56:774:72 | (...)... | -| Log4jJndiInjectionTest.java:775:50:775:57 | source(...) : String | Log4jJndiInjectionTest.java:775:41:775:57 | (...)... | -| Log4jJndiInjectionTest.java:776:185:776:192 | source(...) : String | Log4jJndiInjectionTest.java:776:176:776:192 | (...)... | -| Log4jJndiInjectionTest.java:777:170:777:177 | source(...) : String | Log4jJndiInjectionTest.java:777:161:777:177 | (...)... | -| Log4jJndiInjectionTest.java:778:155:778:162 | source(...) : String | Log4jJndiInjectionTest.java:778:146:778:162 | (...)... | -| Log4jJndiInjectionTest.java:779:140:779:147 | source(...) : String | Log4jJndiInjectionTest.java:779:131:779:147 | (...)... | -| Log4jJndiInjectionTest.java:780:125:780:132 | source(...) : String | Log4jJndiInjectionTest.java:780:116:780:132 | (...)... | -| Log4jJndiInjectionTest.java:781:110:781:117 | source(...) : String | Log4jJndiInjectionTest.java:781:101:781:117 | (...)... | -| Log4jJndiInjectionTest.java:782:95:782:102 | source(...) : String | Log4jJndiInjectionTest.java:782:86:782:102 | (...)... | -| Log4jJndiInjectionTest.java:783:80:783:87 | source(...) : String | Log4jJndiInjectionTest.java:783:71:783:87 | (...)... | -| Log4jJndiInjectionTest.java:784:65:784:72 | source(...) : String | Log4jJndiInjectionTest.java:784:56:784:72 | (...)... | -| Log4jJndiInjectionTest.java:785:50:785:57 | source(...) : String | Log4jJndiInjectionTest.java:785:41:785:57 | (...)... | -| Log4jJndiInjectionTest.java:786:50:786:57 | source(...) : String | Log4jJndiInjectionTest.java:786:41:786:57 | (...)... | -| Log4jJndiInjectionTest.java:787:70:787:77 | source(...) : String | Log4jJndiInjectionTest.java:787:56:787:77 | (...)... | -| Log4jJndiInjectionTest.java:788:50:788:57 | source(...) : String | Log4jJndiInjectionTest.java:788:41:788:57 | (...)... | -| Log4jJndiInjectionTest.java:789:55:789:62 | source(...) : String | Log4jJndiInjectionTest.java:789:41:789:62 | (...)... | -| Log4jJndiInjectionTest.java:790:55:790:62 | source(...) : String | Log4jJndiInjectionTest.java:790:41:790:62 | (...)... | -| Log4jJndiInjectionTest.java:791:44:791:51 | source(...) : String | Log4jJndiInjectionTest.java:791:26:791:51 | (...)... | -| Log4jJndiInjectionTest.java:792:44:792:51 | source(...) : String | Log4jJndiInjectionTest.java:792:26:792:51 | (...)... | -| Log4jJndiInjectionTest.java:793:36:793:43 | source(...) : String | Log4jJndiInjectionTest.java:793:26:793:43 | (...)... | -| Log4jJndiInjectionTest.java:794:36:794:43 | source(...) : String | Log4jJndiInjectionTest.java:794:26:794:43 | (...)... | -| Log4jJndiInjectionTest.java:797:35:797:42 | source(...) : String | Log4jJndiInjectionTest.java:797:26:797:42 | (...)... | -| Log4jJndiInjectionTest.java:798:35:798:42 | source(...) : String | Log4jJndiInjectionTest.java:798:26:798:42 | (...)... | -| Log4jJndiInjectionTest.java:799:41:799:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:799:41:799:63 | new Object[] | -| Log4jJndiInjectionTest.java:799:55:799:62 | source(...) : String | Log4jJndiInjectionTest.java:799:41:799:63 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:800:50:800:57 | source(...) : String | Log4jJndiInjectionTest.java:800:41:800:57 | (...)... | -| Log4jJndiInjectionTest.java:801:35:801:42 | source(...) : String | Log4jJndiInjectionTest.java:801:26:801:42 | (...)... | -| Log4jJndiInjectionTest.java:802:65:802:72 | source(...) : String | Log4jJndiInjectionTest.java:802:56:802:72 | (...)... | -| Log4jJndiInjectionTest.java:803:50:803:57 | source(...) : String | Log4jJndiInjectionTest.java:803:41:803:57 | (...)... | -| Log4jJndiInjectionTest.java:804:35:804:42 | source(...) : String | Log4jJndiInjectionTest.java:804:26:804:42 | (...)... | -| Log4jJndiInjectionTest.java:805:80:805:87 | source(...) : String | Log4jJndiInjectionTest.java:805:71:805:87 | (...)... | -| Log4jJndiInjectionTest.java:806:65:806:72 | source(...) : String | Log4jJndiInjectionTest.java:806:56:806:72 | (...)... | -| Log4jJndiInjectionTest.java:807:50:807:57 | source(...) : String | Log4jJndiInjectionTest.java:807:41:807:57 | (...)... | -| Log4jJndiInjectionTest.java:808:35:808:42 | source(...) : String | Log4jJndiInjectionTest.java:808:26:808:42 | (...)... | -| Log4jJndiInjectionTest.java:809:95:809:102 | source(...) : String | Log4jJndiInjectionTest.java:809:86:809:102 | (...)... | -| Log4jJndiInjectionTest.java:810:80:810:87 | source(...) : String | Log4jJndiInjectionTest.java:810:71:810:87 | (...)... | -| Log4jJndiInjectionTest.java:811:65:811:72 | source(...) : String | Log4jJndiInjectionTest.java:811:56:811:72 | (...)... | -| Log4jJndiInjectionTest.java:812:50:812:57 | source(...) : String | Log4jJndiInjectionTest.java:812:41:812:57 | (...)... | -| Log4jJndiInjectionTest.java:813:35:813:42 | source(...) : String | Log4jJndiInjectionTest.java:813:26:813:42 | (...)... | -| Log4jJndiInjectionTest.java:814:110:814:117 | source(...) : String | Log4jJndiInjectionTest.java:814:101:814:117 | (...)... | -| Log4jJndiInjectionTest.java:815:95:815:102 | source(...) : String | Log4jJndiInjectionTest.java:815:86:815:102 | (...)... | -| Log4jJndiInjectionTest.java:816:80:816:87 | source(...) : String | Log4jJndiInjectionTest.java:816:71:816:87 | (...)... | -| Log4jJndiInjectionTest.java:817:65:817:72 | source(...) : String | Log4jJndiInjectionTest.java:817:56:817:72 | (...)... | -| Log4jJndiInjectionTest.java:818:50:818:57 | source(...) : String | Log4jJndiInjectionTest.java:818:41:818:57 | (...)... | -| Log4jJndiInjectionTest.java:819:35:819:42 | source(...) : String | Log4jJndiInjectionTest.java:819:26:819:42 | (...)... | -| Log4jJndiInjectionTest.java:820:125:820:132 | source(...) : String | Log4jJndiInjectionTest.java:820:116:820:132 | (...)... | -| Log4jJndiInjectionTest.java:821:110:821:117 | source(...) : String | Log4jJndiInjectionTest.java:821:101:821:117 | (...)... | -| Log4jJndiInjectionTest.java:822:95:822:102 | source(...) : String | Log4jJndiInjectionTest.java:822:86:822:102 | (...)... | -| Log4jJndiInjectionTest.java:823:80:823:87 | source(...) : String | Log4jJndiInjectionTest.java:823:71:823:87 | (...)... | -| Log4jJndiInjectionTest.java:824:65:824:72 | source(...) : String | Log4jJndiInjectionTest.java:824:56:824:72 | (...)... | -| Log4jJndiInjectionTest.java:825:50:825:57 | source(...) : String | Log4jJndiInjectionTest.java:825:41:825:57 | (...)... | -| Log4jJndiInjectionTest.java:826:35:826:42 | source(...) : String | Log4jJndiInjectionTest.java:826:26:826:42 | (...)... | -| Log4jJndiInjectionTest.java:827:140:827:147 | source(...) : String | Log4jJndiInjectionTest.java:827:131:827:147 | (...)... | -| Log4jJndiInjectionTest.java:828:125:828:132 | source(...) : String | Log4jJndiInjectionTest.java:828:116:828:132 | (...)... | -| Log4jJndiInjectionTest.java:829:110:829:117 | source(...) : String | Log4jJndiInjectionTest.java:829:101:829:117 | (...)... | -| Log4jJndiInjectionTest.java:830:95:830:102 | source(...) : String | Log4jJndiInjectionTest.java:830:86:830:102 | (...)... | -| Log4jJndiInjectionTest.java:831:80:831:87 | source(...) : String | Log4jJndiInjectionTest.java:831:71:831:87 | (...)... | -| Log4jJndiInjectionTest.java:832:65:832:72 | source(...) : String | Log4jJndiInjectionTest.java:832:56:832:72 | (...)... | -| Log4jJndiInjectionTest.java:833:50:833:57 | source(...) : String | Log4jJndiInjectionTest.java:833:41:833:57 | (...)... | -| Log4jJndiInjectionTest.java:834:35:834:42 | source(...) : String | Log4jJndiInjectionTest.java:834:26:834:42 | (...)... | -| Log4jJndiInjectionTest.java:835:155:835:162 | source(...) : String | Log4jJndiInjectionTest.java:835:146:835:162 | (...)... | -| Log4jJndiInjectionTest.java:836:140:836:147 | source(...) : String | Log4jJndiInjectionTest.java:836:131:836:147 | (...)... | -| Log4jJndiInjectionTest.java:837:125:837:132 | source(...) : String | Log4jJndiInjectionTest.java:837:116:837:132 | (...)... | -| Log4jJndiInjectionTest.java:838:110:838:117 | source(...) : String | Log4jJndiInjectionTest.java:838:101:838:117 | (...)... | -| Log4jJndiInjectionTest.java:839:95:839:102 | source(...) : String | Log4jJndiInjectionTest.java:839:86:839:102 | (...)... | -| Log4jJndiInjectionTest.java:840:80:840:87 | source(...) : String | Log4jJndiInjectionTest.java:840:71:840:87 | (...)... | -| Log4jJndiInjectionTest.java:841:65:841:72 | source(...) : String | Log4jJndiInjectionTest.java:841:56:841:72 | (...)... | -| Log4jJndiInjectionTest.java:842:50:842:57 | source(...) : String | Log4jJndiInjectionTest.java:842:41:842:57 | (...)... | -| Log4jJndiInjectionTest.java:843:35:843:42 | source(...) : String | Log4jJndiInjectionTest.java:843:26:843:42 | (...)... | -| Log4jJndiInjectionTest.java:844:170:844:177 | source(...) : String | Log4jJndiInjectionTest.java:844:161:844:177 | (...)... | -| Log4jJndiInjectionTest.java:845:155:845:162 | source(...) : String | Log4jJndiInjectionTest.java:845:146:845:162 | (...)... | -| Log4jJndiInjectionTest.java:846:140:846:147 | source(...) : String | Log4jJndiInjectionTest.java:846:131:846:147 | (...)... | -| Log4jJndiInjectionTest.java:847:125:847:132 | source(...) : String | Log4jJndiInjectionTest.java:847:116:847:132 | (...)... | -| Log4jJndiInjectionTest.java:848:110:848:117 | source(...) : String | Log4jJndiInjectionTest.java:848:101:848:117 | (...)... | -| Log4jJndiInjectionTest.java:849:95:849:102 | source(...) : String | Log4jJndiInjectionTest.java:849:86:849:102 | (...)... | -| Log4jJndiInjectionTest.java:850:80:850:87 | source(...) : String | Log4jJndiInjectionTest.java:850:71:850:87 | (...)... | -| Log4jJndiInjectionTest.java:851:65:851:72 | source(...) : String | Log4jJndiInjectionTest.java:851:56:851:72 | (...)... | -| Log4jJndiInjectionTest.java:852:50:852:57 | source(...) : String | Log4jJndiInjectionTest.java:852:41:852:57 | (...)... | -| Log4jJndiInjectionTest.java:853:35:853:42 | source(...) : String | Log4jJndiInjectionTest.java:853:26:853:42 | (...)... | -| Log4jJndiInjectionTest.java:854:35:854:42 | source(...) : String | Log4jJndiInjectionTest.java:854:26:854:42 | (...)... | -| Log4jJndiInjectionTest.java:855:55:855:62 | source(...) : String | Log4jJndiInjectionTest.java:855:41:855:62 | (...)... | -| Log4jJndiInjectionTest.java:856:35:856:42 | source(...) : String | Log4jJndiInjectionTest.java:856:26:856:42 | (...)... | -| Log4jJndiInjectionTest.java:857:40:857:47 | source(...) : String | Log4jJndiInjectionTest.java:857:26:857:47 | (...)... | -| Log4jJndiInjectionTest.java:858:40:858:47 | source(...) : String | Log4jJndiInjectionTest.java:858:26:858:47 | (...)... | -| Log4jJndiInjectionTest.java:859:40:859:47 | source(...) : String | Log4jJndiInjectionTest.java:859:25:859:47 | (...)... | -| Log4jJndiInjectionTest.java:860:40:860:47 | source(...) : String | Log4jJndiInjectionTest.java:860:25:860:47 | (...)... | -| Log4jJndiInjectionTest.java:861:55:861:62 | source(...) : String | Log4jJndiInjectionTest.java:861:40:861:62 | (...)... | -| Log4jJndiInjectionTest.java:862:55:862:62 | source(...) : String | Log4jJndiInjectionTest.java:862:40:862:62 | (...)... | -| Log4jJndiInjectionTest.java:863:50:863:57 | source(...) : String | Log4jJndiInjectionTest.java:863:40:863:57 | (...)... | -| Log4jJndiInjectionTest.java:864:58:864:65 | source(...) : String | Log4jJndiInjectionTest.java:864:40:864:65 | (...)... | -| Log4jJndiInjectionTest.java:865:58:865:65 | source(...) : String | Log4jJndiInjectionTest.java:865:40:865:65 | (...)... | -| Log4jJndiInjectionTest.java:867:49:867:56 | source(...) : String | Log4jJndiInjectionTest.java:867:40:867:56 | (...)... | -| Log4jJndiInjectionTest.java:868:49:868:56 | source(...) : String | Log4jJndiInjectionTest.java:868:40:868:56 | (...)... | -| Log4jJndiInjectionTest.java:869:55:869:77 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:869:55:869:77 | new Object[] | -| Log4jJndiInjectionTest.java:869:69:869:76 | source(...) : String | Log4jJndiInjectionTest.java:869:55:869:77 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:870:64:870:71 | source(...) : String | Log4jJndiInjectionTest.java:870:55:870:71 | (...)... | -| Log4jJndiInjectionTest.java:871:49:871:56 | source(...) : String | Log4jJndiInjectionTest.java:871:40:871:56 | (...)... | -| Log4jJndiInjectionTest.java:872:79:872:86 | source(...) : String | Log4jJndiInjectionTest.java:872:70:872:86 | (...)... | -| Log4jJndiInjectionTest.java:873:64:873:71 | source(...) : String | Log4jJndiInjectionTest.java:873:55:873:71 | (...)... | -| Log4jJndiInjectionTest.java:874:49:874:56 | source(...) : String | Log4jJndiInjectionTest.java:874:40:874:56 | (...)... | -| Log4jJndiInjectionTest.java:875:94:875:101 | source(...) : String | Log4jJndiInjectionTest.java:875:85:875:101 | (...)... | -| Log4jJndiInjectionTest.java:876:79:876:86 | source(...) : String | Log4jJndiInjectionTest.java:876:70:876:86 | (...)... | -| Log4jJndiInjectionTest.java:877:64:877:71 | source(...) : String | Log4jJndiInjectionTest.java:877:55:877:71 | (...)... | -| Log4jJndiInjectionTest.java:878:49:878:56 | source(...) : String | Log4jJndiInjectionTest.java:878:40:878:56 | (...)... | -| Log4jJndiInjectionTest.java:879:109:879:116 | source(...) : String | Log4jJndiInjectionTest.java:879:100:879:116 | (...)... | -| Log4jJndiInjectionTest.java:880:94:880:101 | source(...) : String | Log4jJndiInjectionTest.java:880:85:880:101 | (...)... | -| Log4jJndiInjectionTest.java:881:79:881:86 | source(...) : String | Log4jJndiInjectionTest.java:881:70:881:86 | (...)... | -| Log4jJndiInjectionTest.java:882:64:882:71 | source(...) : String | Log4jJndiInjectionTest.java:882:55:882:71 | (...)... | -| Log4jJndiInjectionTest.java:883:49:883:56 | source(...) : String | Log4jJndiInjectionTest.java:883:40:883:56 | (...)... | -| Log4jJndiInjectionTest.java:884:124:884:131 | source(...) : String | Log4jJndiInjectionTest.java:884:115:884:131 | (...)... | -| Log4jJndiInjectionTest.java:885:109:885:116 | source(...) : String | Log4jJndiInjectionTest.java:885:100:885:116 | (...)... | -| Log4jJndiInjectionTest.java:886:94:886:101 | source(...) : String | Log4jJndiInjectionTest.java:886:85:886:101 | (...)... | -| Log4jJndiInjectionTest.java:887:79:887:86 | source(...) : String | Log4jJndiInjectionTest.java:887:70:887:86 | (...)... | -| Log4jJndiInjectionTest.java:888:64:888:71 | source(...) : String | Log4jJndiInjectionTest.java:888:55:888:71 | (...)... | -| Log4jJndiInjectionTest.java:889:49:889:56 | source(...) : String | Log4jJndiInjectionTest.java:889:40:889:56 | (...)... | -| Log4jJndiInjectionTest.java:890:139:890:146 | source(...) : String | Log4jJndiInjectionTest.java:890:130:890:146 | (...)... | -| Log4jJndiInjectionTest.java:891:124:891:131 | source(...) : String | Log4jJndiInjectionTest.java:891:115:891:131 | (...)... | -| Log4jJndiInjectionTest.java:892:109:892:116 | source(...) : String | Log4jJndiInjectionTest.java:892:100:892:116 | (...)... | -| Log4jJndiInjectionTest.java:893:94:893:101 | source(...) : String | Log4jJndiInjectionTest.java:893:85:893:101 | (...)... | -| Log4jJndiInjectionTest.java:894:79:894:86 | source(...) : String | Log4jJndiInjectionTest.java:894:70:894:86 | (...)... | -| Log4jJndiInjectionTest.java:895:64:895:71 | source(...) : String | Log4jJndiInjectionTest.java:895:55:895:71 | (...)... | -| Log4jJndiInjectionTest.java:896:49:896:56 | source(...) : String | Log4jJndiInjectionTest.java:896:40:896:56 | (...)... | -| Log4jJndiInjectionTest.java:897:154:897:161 | source(...) : String | Log4jJndiInjectionTest.java:897:145:897:161 | (...)... | -| Log4jJndiInjectionTest.java:898:139:898:146 | source(...) : String | Log4jJndiInjectionTest.java:898:130:898:146 | (...)... | -| Log4jJndiInjectionTest.java:899:124:899:131 | source(...) : String | Log4jJndiInjectionTest.java:899:115:899:131 | (...)... | -| Log4jJndiInjectionTest.java:900:109:900:116 | source(...) : String | Log4jJndiInjectionTest.java:900:100:900:116 | (...)... | -| Log4jJndiInjectionTest.java:901:94:901:101 | source(...) : String | Log4jJndiInjectionTest.java:901:85:901:101 | (...)... | -| Log4jJndiInjectionTest.java:902:79:902:86 | source(...) : String | Log4jJndiInjectionTest.java:902:70:902:86 | (...)... | -| Log4jJndiInjectionTest.java:903:64:903:71 | source(...) : String | Log4jJndiInjectionTest.java:903:55:903:71 | (...)... | -| Log4jJndiInjectionTest.java:904:49:904:56 | source(...) : String | Log4jJndiInjectionTest.java:904:40:904:56 | (...)... | -| Log4jJndiInjectionTest.java:905:169:905:176 | source(...) : String | Log4jJndiInjectionTest.java:905:160:905:176 | (...)... | -| Log4jJndiInjectionTest.java:906:154:906:161 | source(...) : String | Log4jJndiInjectionTest.java:906:145:906:161 | (...)... | -| Log4jJndiInjectionTest.java:907:139:907:146 | source(...) : String | Log4jJndiInjectionTest.java:907:130:907:146 | (...)... | -| Log4jJndiInjectionTest.java:908:124:908:131 | source(...) : String | Log4jJndiInjectionTest.java:908:115:908:131 | (...)... | -| Log4jJndiInjectionTest.java:909:109:909:116 | source(...) : String | Log4jJndiInjectionTest.java:909:100:909:116 | (...)... | -| Log4jJndiInjectionTest.java:910:94:910:101 | source(...) : String | Log4jJndiInjectionTest.java:910:85:910:101 | (...)... | -| Log4jJndiInjectionTest.java:911:79:911:86 | source(...) : String | Log4jJndiInjectionTest.java:911:70:911:86 | (...)... | -| Log4jJndiInjectionTest.java:912:64:912:71 | source(...) : String | Log4jJndiInjectionTest.java:912:55:912:71 | (...)... | -| Log4jJndiInjectionTest.java:913:49:913:56 | source(...) : String | Log4jJndiInjectionTest.java:913:40:913:56 | (...)... | -| Log4jJndiInjectionTest.java:914:184:914:191 | source(...) : String | Log4jJndiInjectionTest.java:914:175:914:191 | (...)... | -| Log4jJndiInjectionTest.java:915:169:915:176 | source(...) : String | Log4jJndiInjectionTest.java:915:160:915:176 | (...)... | -| Log4jJndiInjectionTest.java:916:154:916:161 | source(...) : String | Log4jJndiInjectionTest.java:916:145:916:161 | (...)... | -| Log4jJndiInjectionTest.java:917:139:917:146 | source(...) : String | Log4jJndiInjectionTest.java:917:130:917:146 | (...)... | -| Log4jJndiInjectionTest.java:918:124:918:131 | source(...) : String | Log4jJndiInjectionTest.java:918:115:918:131 | (...)... | -| Log4jJndiInjectionTest.java:919:109:919:116 | source(...) : String | Log4jJndiInjectionTest.java:919:100:919:116 | (...)... | -| Log4jJndiInjectionTest.java:920:94:920:101 | source(...) : String | Log4jJndiInjectionTest.java:920:85:920:101 | (...)... | -| Log4jJndiInjectionTest.java:921:79:921:86 | source(...) : String | Log4jJndiInjectionTest.java:921:70:921:86 | (...)... | -| Log4jJndiInjectionTest.java:922:64:922:71 | source(...) : String | Log4jJndiInjectionTest.java:922:55:922:71 | (...)... | -| Log4jJndiInjectionTest.java:923:49:923:56 | source(...) : String | Log4jJndiInjectionTest.java:923:40:923:56 | (...)... | -| Log4jJndiInjectionTest.java:924:49:924:56 | source(...) : String | Log4jJndiInjectionTest.java:924:40:924:56 | (...)... | -| Log4jJndiInjectionTest.java:925:69:925:76 | source(...) : String | Log4jJndiInjectionTest.java:925:55:925:76 | (...)... | -| Log4jJndiInjectionTest.java:926:49:926:56 | source(...) : String | Log4jJndiInjectionTest.java:926:40:926:56 | (...)... | -| Log4jJndiInjectionTest.java:927:54:927:61 | source(...) : String | Log4jJndiInjectionTest.java:927:40:927:61 | (...)... | -| Log4jJndiInjectionTest.java:928:54:928:61 | source(...) : String | Log4jJndiInjectionTest.java:928:40:928:61 | (...)... | -| Log4jJndiInjectionTest.java:929:43:929:50 | source(...) : String | Log4jJndiInjectionTest.java:929:25:929:50 | (...)... | -| Log4jJndiInjectionTest.java:930:43:930:50 | source(...) : String | Log4jJndiInjectionTest.java:930:25:930:50 | (...)... | -| Log4jJndiInjectionTest.java:931:35:931:42 | source(...) : String | Log4jJndiInjectionTest.java:931:25:931:42 | (...)... | -| Log4jJndiInjectionTest.java:932:35:932:42 | source(...) : String | Log4jJndiInjectionTest.java:932:25:932:42 | (...)... | -| Log4jJndiInjectionTest.java:935:34:935:41 | source(...) : String | Log4jJndiInjectionTest.java:935:25:935:41 | (...)... | -| Log4jJndiInjectionTest.java:936:34:936:41 | source(...) : String | Log4jJndiInjectionTest.java:936:25:936:41 | (...)... | -| Log4jJndiInjectionTest.java:937:40:937:62 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:937:40:937:62 | new Object[] | -| Log4jJndiInjectionTest.java:937:54:937:61 | source(...) : String | Log4jJndiInjectionTest.java:937:40:937:62 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:938:49:938:56 | source(...) : String | Log4jJndiInjectionTest.java:938:40:938:56 | (...)... | -| Log4jJndiInjectionTest.java:939:34:939:41 | source(...) : String | Log4jJndiInjectionTest.java:939:25:939:41 | (...)... | -| Log4jJndiInjectionTest.java:940:64:940:71 | source(...) : String | Log4jJndiInjectionTest.java:940:55:940:71 | (...)... | -| Log4jJndiInjectionTest.java:941:49:941:56 | source(...) : String | Log4jJndiInjectionTest.java:941:40:941:56 | (...)... | -| Log4jJndiInjectionTest.java:942:34:942:41 | source(...) : String | Log4jJndiInjectionTest.java:942:25:942:41 | (...)... | -| Log4jJndiInjectionTest.java:943:79:943:86 | source(...) : String | Log4jJndiInjectionTest.java:943:70:943:86 | (...)... | -| Log4jJndiInjectionTest.java:944:64:944:71 | source(...) : String | Log4jJndiInjectionTest.java:944:55:944:71 | (...)... | -| Log4jJndiInjectionTest.java:945:49:945:56 | source(...) : String | Log4jJndiInjectionTest.java:945:40:945:56 | (...)... | -| Log4jJndiInjectionTest.java:946:34:946:41 | source(...) : String | Log4jJndiInjectionTest.java:946:25:946:41 | (...)... | -| Log4jJndiInjectionTest.java:947:94:947:101 | source(...) : String | Log4jJndiInjectionTest.java:947:85:947:101 | (...)... | -| Log4jJndiInjectionTest.java:948:79:948:86 | source(...) : String | Log4jJndiInjectionTest.java:948:70:948:86 | (...)... | -| Log4jJndiInjectionTest.java:949:64:949:71 | source(...) : String | Log4jJndiInjectionTest.java:949:55:949:71 | (...)... | -| Log4jJndiInjectionTest.java:950:49:950:56 | source(...) : String | Log4jJndiInjectionTest.java:950:40:950:56 | (...)... | -| Log4jJndiInjectionTest.java:951:34:951:41 | source(...) : String | Log4jJndiInjectionTest.java:951:25:951:41 | (...)... | -| Log4jJndiInjectionTest.java:952:109:952:116 | source(...) : String | Log4jJndiInjectionTest.java:952:100:952:116 | (...)... | -| Log4jJndiInjectionTest.java:953:94:953:101 | source(...) : String | Log4jJndiInjectionTest.java:953:85:953:101 | (...)... | -| Log4jJndiInjectionTest.java:954:79:954:86 | source(...) : String | Log4jJndiInjectionTest.java:954:70:954:86 | (...)... | -| Log4jJndiInjectionTest.java:955:64:955:71 | source(...) : String | Log4jJndiInjectionTest.java:955:55:955:71 | (...)... | -| Log4jJndiInjectionTest.java:956:49:956:56 | source(...) : String | Log4jJndiInjectionTest.java:956:40:956:56 | (...)... | -| Log4jJndiInjectionTest.java:957:34:957:41 | source(...) : String | Log4jJndiInjectionTest.java:957:25:957:41 | (...)... | -| Log4jJndiInjectionTest.java:958:124:958:131 | source(...) : String | Log4jJndiInjectionTest.java:958:115:958:131 | (...)... | -| Log4jJndiInjectionTest.java:959:109:959:116 | source(...) : String | Log4jJndiInjectionTest.java:959:100:959:116 | (...)... | -| Log4jJndiInjectionTest.java:960:94:960:101 | source(...) : String | Log4jJndiInjectionTest.java:960:85:960:101 | (...)... | -| Log4jJndiInjectionTest.java:961:79:961:86 | source(...) : String | Log4jJndiInjectionTest.java:961:70:961:86 | (...)... | -| Log4jJndiInjectionTest.java:962:64:962:71 | source(...) : String | Log4jJndiInjectionTest.java:962:55:962:71 | (...)... | -| Log4jJndiInjectionTest.java:963:49:963:56 | source(...) : String | Log4jJndiInjectionTest.java:963:40:963:56 | (...)... | -| Log4jJndiInjectionTest.java:964:34:964:41 | source(...) : String | Log4jJndiInjectionTest.java:964:25:964:41 | (...)... | -| Log4jJndiInjectionTest.java:965:139:965:146 | source(...) : String | Log4jJndiInjectionTest.java:965:130:965:146 | (...)... | -| Log4jJndiInjectionTest.java:966:124:966:131 | source(...) : String | Log4jJndiInjectionTest.java:966:115:966:131 | (...)... | -| Log4jJndiInjectionTest.java:967:109:967:116 | source(...) : String | Log4jJndiInjectionTest.java:967:100:967:116 | (...)... | -| Log4jJndiInjectionTest.java:968:94:968:101 | source(...) : String | Log4jJndiInjectionTest.java:968:85:968:101 | (...)... | -| Log4jJndiInjectionTest.java:969:79:969:86 | source(...) : String | Log4jJndiInjectionTest.java:969:70:969:86 | (...)... | -| Log4jJndiInjectionTest.java:970:64:970:71 | source(...) : String | Log4jJndiInjectionTest.java:970:55:970:71 | (...)... | -| Log4jJndiInjectionTest.java:971:49:971:56 | source(...) : String | Log4jJndiInjectionTest.java:971:40:971:56 | (...)... | -| Log4jJndiInjectionTest.java:972:34:972:41 | source(...) : String | Log4jJndiInjectionTest.java:972:25:972:41 | (...)... | -| Log4jJndiInjectionTest.java:973:154:973:161 | source(...) : String | Log4jJndiInjectionTest.java:973:145:973:161 | (...)... | -| Log4jJndiInjectionTest.java:974:139:974:146 | source(...) : String | Log4jJndiInjectionTest.java:974:130:974:146 | (...)... | -| Log4jJndiInjectionTest.java:975:124:975:131 | source(...) : String | Log4jJndiInjectionTest.java:975:115:975:131 | (...)... | -| Log4jJndiInjectionTest.java:976:109:976:116 | source(...) : String | Log4jJndiInjectionTest.java:976:100:976:116 | (...)... | -| Log4jJndiInjectionTest.java:977:94:977:101 | source(...) : String | Log4jJndiInjectionTest.java:977:85:977:101 | (...)... | -| Log4jJndiInjectionTest.java:978:79:978:86 | source(...) : String | Log4jJndiInjectionTest.java:978:70:978:86 | (...)... | -| Log4jJndiInjectionTest.java:979:64:979:71 | source(...) : String | Log4jJndiInjectionTest.java:979:55:979:71 | (...)... | -| Log4jJndiInjectionTest.java:980:49:980:56 | source(...) : String | Log4jJndiInjectionTest.java:980:40:980:56 | (...)... | -| Log4jJndiInjectionTest.java:981:34:981:41 | source(...) : String | Log4jJndiInjectionTest.java:981:25:981:41 | (...)... | -| Log4jJndiInjectionTest.java:982:169:982:176 | source(...) : String | Log4jJndiInjectionTest.java:982:160:982:176 | (...)... | -| Log4jJndiInjectionTest.java:983:154:983:161 | source(...) : String | Log4jJndiInjectionTest.java:983:145:983:161 | (...)... | -| Log4jJndiInjectionTest.java:984:139:984:146 | source(...) : String | Log4jJndiInjectionTest.java:984:130:984:146 | (...)... | -| Log4jJndiInjectionTest.java:985:124:985:131 | source(...) : String | Log4jJndiInjectionTest.java:985:115:985:131 | (...)... | -| Log4jJndiInjectionTest.java:986:109:986:116 | source(...) : String | Log4jJndiInjectionTest.java:986:100:986:116 | (...)... | -| Log4jJndiInjectionTest.java:987:94:987:101 | source(...) : String | Log4jJndiInjectionTest.java:987:85:987:101 | (...)... | -| Log4jJndiInjectionTest.java:988:79:988:86 | source(...) : String | Log4jJndiInjectionTest.java:988:70:988:86 | (...)... | -| Log4jJndiInjectionTest.java:989:64:989:71 | source(...) : String | Log4jJndiInjectionTest.java:989:55:989:71 | (...)... | -| Log4jJndiInjectionTest.java:990:49:990:56 | source(...) : String | Log4jJndiInjectionTest.java:990:40:990:56 | (...)... | -| Log4jJndiInjectionTest.java:991:34:991:41 | source(...) : String | Log4jJndiInjectionTest.java:991:25:991:41 | (...)... | -| Log4jJndiInjectionTest.java:992:34:992:41 | source(...) : String | Log4jJndiInjectionTest.java:992:25:992:41 | (...)... | -| Log4jJndiInjectionTest.java:993:54:993:61 | source(...) : String | Log4jJndiInjectionTest.java:993:40:993:61 | (...)... | -| Log4jJndiInjectionTest.java:994:34:994:41 | source(...) : String | Log4jJndiInjectionTest.java:994:25:994:41 | (...)... | -| Log4jJndiInjectionTest.java:995:39:995:46 | source(...) : String | Log4jJndiInjectionTest.java:995:25:995:46 | (...)... | -| Log4jJndiInjectionTest.java:996:39:996:46 | source(...) : String | Log4jJndiInjectionTest.java:996:25:996:46 | (...)... | -| Log4jJndiInjectionTest.java:998:65:998:72 | source(...) : String | Log4jJndiInjectionTest.java:998:55:998:72 | (...)... | -| Log4jJndiInjectionTest.java:999:48:999:55 | source(...) : String | Log4jJndiInjectionTest.java:999:39:999:55 | (...)... | -| Log4jJndiInjectionTest.java:1000:45:1000:67 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:1000:45:1000:67 | new Object[] | -| Log4jJndiInjectionTest.java:1000:59:1000:66 | source(...) : String | Log4jJndiInjectionTest.java:1000:45:1000:67 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:1001:42:1001:49 | source(...) : String | Log4jJndiInjectionTest.java:1001:33:1001:49 | (...)... | -| Log4jJndiInjectionTest.java:1002:39:1002:61 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:1002:39:1002:61 | new Object[] | -| Log4jJndiInjectionTest.java:1002:53:1002:60 | source(...) : String | Log4jJndiInjectionTest.java:1002:39:1002:61 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:1020:40:1020:47 | source(...) : String | Log4jJndiInjectionTest.java:1020:25:1020:47 | (...)... | -| Log4jJndiInjectionTest.java:1021:35:1021:42 | source(...) : String | Log4jJndiInjectionTest.java:1021:25:1021:42 | (...)... | -| Log4jJndiInjectionTest.java:1023:34:1023:41 | source(...) : String | Log4jJndiInjectionTest.java:1023:25:1023:41 | (...)... | -| Log4jJndiInjectionTest.java:1024:34:1024:41 | source(...) : String | Log4jJndiInjectionTest.java:1024:25:1024:41 | (...)... | -| Log4jJndiInjectionTest.java:1025:40:1025:62 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:1025:40:1025:62 | new Object[] | -| Log4jJndiInjectionTest.java:1025:54:1025:61 | source(...) : String | Log4jJndiInjectionTest.java:1025:40:1025:62 | {...} : Object[] [[]] : String | -| Log4jJndiInjectionTest.java:1028:49:1028:56 | source(...) : String | Log4jJndiInjectionTest.java:1028:40:1028:56 | (...)... | -| Log4jJndiInjectionTest.java:1029:34:1029:41 | source(...) : String | Log4jJndiInjectionTest.java:1029:25:1029:41 | (...)... | -| Log4jJndiInjectionTest.java:1030:64:1030:71 | source(...) : String | Log4jJndiInjectionTest.java:1030:55:1030:71 | (...)... | -| Log4jJndiInjectionTest.java:1031:49:1031:56 | source(...) : String | Log4jJndiInjectionTest.java:1031:40:1031:56 | (...)... | -| Log4jJndiInjectionTest.java:1032:34:1032:41 | source(...) : String | Log4jJndiInjectionTest.java:1032:25:1032:41 | (...)... | -| Log4jJndiInjectionTest.java:1033:79:1033:86 | source(...) : String | Log4jJndiInjectionTest.java:1033:70:1033:86 | (...)... | -| Log4jJndiInjectionTest.java:1034:64:1034:71 | source(...) : String | Log4jJndiInjectionTest.java:1034:55:1034:71 | (...)... | -| Log4jJndiInjectionTest.java:1035:49:1035:56 | source(...) : String | Log4jJndiInjectionTest.java:1035:40:1035:56 | (...)... | -| Log4jJndiInjectionTest.java:1036:34:1036:41 | source(...) : String | Log4jJndiInjectionTest.java:1036:25:1036:41 | (...)... | -| Log4jJndiInjectionTest.java:1037:94:1037:101 | source(...) : String | Log4jJndiInjectionTest.java:1037:85:1037:101 | (...)... | -| Log4jJndiInjectionTest.java:1038:79:1038:86 | source(...) : String | Log4jJndiInjectionTest.java:1038:70:1038:86 | (...)... | -| Log4jJndiInjectionTest.java:1039:64:1039:71 | source(...) : String | Log4jJndiInjectionTest.java:1039:55:1039:71 | (...)... | -| Log4jJndiInjectionTest.java:1040:49:1040:56 | source(...) : String | Log4jJndiInjectionTest.java:1040:40:1040:56 | (...)... | -| Log4jJndiInjectionTest.java:1041:34:1041:41 | source(...) : String | Log4jJndiInjectionTest.java:1041:25:1041:41 | (...)... | -| Log4jJndiInjectionTest.java:1042:109:1042:116 | source(...) : String | Log4jJndiInjectionTest.java:1042:100:1042:116 | (...)... | -| Log4jJndiInjectionTest.java:1043:94:1043:101 | source(...) : String | Log4jJndiInjectionTest.java:1043:85:1043:101 | (...)... | -| Log4jJndiInjectionTest.java:1044:79:1044:86 | source(...) : String | Log4jJndiInjectionTest.java:1044:70:1044:86 | (...)... | -| Log4jJndiInjectionTest.java:1045:64:1045:71 | source(...) : String | Log4jJndiInjectionTest.java:1045:55:1045:71 | (...)... | -| Log4jJndiInjectionTest.java:1046:49:1046:56 | source(...) : String | Log4jJndiInjectionTest.java:1046:40:1046:56 | (...)... | -| Log4jJndiInjectionTest.java:1047:34:1047:41 | source(...) : String | Log4jJndiInjectionTest.java:1047:25:1047:41 | (...)... | -| Log4jJndiInjectionTest.java:1048:124:1048:131 | source(...) : String | Log4jJndiInjectionTest.java:1048:115:1048:131 | (...)... | -| Log4jJndiInjectionTest.java:1049:109:1049:116 | source(...) : String | Log4jJndiInjectionTest.java:1049:100:1049:116 | (...)... | -| Log4jJndiInjectionTest.java:1050:94:1050:101 | source(...) : String | Log4jJndiInjectionTest.java:1050:85:1050:101 | (...)... | -| Log4jJndiInjectionTest.java:1051:79:1051:86 | source(...) : String | Log4jJndiInjectionTest.java:1051:70:1051:86 | (...)... | -| Log4jJndiInjectionTest.java:1052:64:1052:71 | source(...) : String | Log4jJndiInjectionTest.java:1052:55:1052:71 | (...)... | -| Log4jJndiInjectionTest.java:1053:49:1053:56 | source(...) : String | Log4jJndiInjectionTest.java:1053:40:1053:56 | (...)... | -| Log4jJndiInjectionTest.java:1054:34:1054:41 | source(...) : String | Log4jJndiInjectionTest.java:1054:25:1054:41 | (...)... | -| Log4jJndiInjectionTest.java:1055:139:1055:146 | source(...) : String | Log4jJndiInjectionTest.java:1055:130:1055:146 | (...)... | -| Log4jJndiInjectionTest.java:1056:124:1056:131 | source(...) : String | Log4jJndiInjectionTest.java:1056:115:1056:131 | (...)... | -| Log4jJndiInjectionTest.java:1057:109:1057:116 | source(...) : String | Log4jJndiInjectionTest.java:1057:100:1057:116 | (...)... | -| Log4jJndiInjectionTest.java:1058:94:1058:101 | source(...) : String | Log4jJndiInjectionTest.java:1058:85:1058:101 | (...)... | -| Log4jJndiInjectionTest.java:1059:79:1059:86 | source(...) : String | Log4jJndiInjectionTest.java:1059:70:1059:86 | (...)... | -| Log4jJndiInjectionTest.java:1060:64:1060:71 | source(...) : String | Log4jJndiInjectionTest.java:1060:55:1060:71 | (...)... | -| Log4jJndiInjectionTest.java:1061:49:1061:56 | source(...) : String | Log4jJndiInjectionTest.java:1061:40:1061:56 | (...)... | -| Log4jJndiInjectionTest.java:1062:34:1062:41 | source(...) : String | Log4jJndiInjectionTest.java:1062:25:1062:41 | (...)... | -| Log4jJndiInjectionTest.java:1063:154:1063:161 | source(...) : String | Log4jJndiInjectionTest.java:1063:145:1063:161 | (...)... | -| Log4jJndiInjectionTest.java:1064:139:1064:146 | source(...) : String | Log4jJndiInjectionTest.java:1064:130:1064:146 | (...)... | -| Log4jJndiInjectionTest.java:1065:124:1065:131 | source(...) : String | Log4jJndiInjectionTest.java:1065:115:1065:131 | (...)... | -| Log4jJndiInjectionTest.java:1066:109:1066:116 | source(...) : String | Log4jJndiInjectionTest.java:1066:100:1066:116 | (...)... | -| Log4jJndiInjectionTest.java:1067:94:1067:101 | source(...) : String | Log4jJndiInjectionTest.java:1067:85:1067:101 | (...)... | -| Log4jJndiInjectionTest.java:1068:79:1068:86 | source(...) : String | Log4jJndiInjectionTest.java:1068:70:1068:86 | (...)... | -| Log4jJndiInjectionTest.java:1069:64:1069:71 | source(...) : String | Log4jJndiInjectionTest.java:1069:55:1069:71 | (...)... | -| Log4jJndiInjectionTest.java:1070:49:1070:56 | source(...) : String | Log4jJndiInjectionTest.java:1070:40:1070:56 | (...)... | -| Log4jJndiInjectionTest.java:1071:34:1071:41 | source(...) : String | Log4jJndiInjectionTest.java:1071:25:1071:41 | (...)... | -| Log4jJndiInjectionTest.java:1072:169:1072:176 | source(...) : String | Log4jJndiInjectionTest.java:1072:160:1072:176 | (...)... | -| Log4jJndiInjectionTest.java:1073:154:1073:161 | source(...) : String | Log4jJndiInjectionTest.java:1073:145:1073:161 | (...)... | -| Log4jJndiInjectionTest.java:1074:139:1074:146 | source(...) : String | Log4jJndiInjectionTest.java:1074:130:1074:146 | (...)... | -| Log4jJndiInjectionTest.java:1075:124:1075:131 | source(...) : String | Log4jJndiInjectionTest.java:1075:115:1075:131 | (...)... | -| Log4jJndiInjectionTest.java:1076:109:1076:116 | source(...) : String | Log4jJndiInjectionTest.java:1076:100:1076:116 | (...)... | -| Log4jJndiInjectionTest.java:1077:94:1077:101 | source(...) : String | Log4jJndiInjectionTest.java:1077:85:1077:101 | (...)... | -| Log4jJndiInjectionTest.java:1078:79:1078:86 | source(...) : String | Log4jJndiInjectionTest.java:1078:70:1078:86 | (...)... | -| Log4jJndiInjectionTest.java:1079:64:1079:71 | source(...) : String | Log4jJndiInjectionTest.java:1079:55:1079:71 | (...)... | -| Log4jJndiInjectionTest.java:1080:49:1080:56 | source(...) : String | Log4jJndiInjectionTest.java:1080:40:1080:56 | (...)... | -| Log4jJndiInjectionTest.java:1081:34:1081:41 | source(...) : String | Log4jJndiInjectionTest.java:1081:25:1081:41 | (...)... | -| Log4jJndiInjectionTest.java:1083:34:1083:41 | source(...) : String | Log4jJndiInjectionTest.java:1083:25:1083:41 | (...)... | -| Log4jJndiInjectionTest.java:1084:54:1084:61 | source(...) : String | Log4jJndiInjectionTest.java:1084:40:1084:61 | (...)... | -| Log4jJndiInjectionTest.java:1085:39:1085:46 | source(...) : String | Log4jJndiInjectionTest.java:1085:25:1085:46 | (...)... | -| Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | Log4jJndiInjectionTest.java:1088:38:1088:54 | (...)... | -| Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | Log4jJndiInjectionTest.java:1089:44:1089:60 | (...)... | -| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | -| Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | -| Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | -| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | -| Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | -| Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | -| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | -| Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | -| Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | -| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | -| Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | -| Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | -| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | -| Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | -| Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | -| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | -| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | -| Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | Log4jJndiInjectionTest.java:1116:52:1116:68 | (...)... | -| Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | Log4jJndiInjectionTest.java:1117:72:1117:88 | (...)... | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1121:63:1121:65 | map | -| Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | -| Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:31:41:31:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:32:41:32:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:33:56:33:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:34:56:34:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:35:51:35:58 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:36:59:36:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:37:59:37:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:38:41:38:48 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:39:50:39:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:40:50:40:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:41:70:41:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:42:65:42:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:43:50:43:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:44:80:44:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:45:65:45:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:46:50:46:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:47:95:47:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:48:80:48:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:49:65:49:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:50:50:50:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:51:110:51:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:52:95:52:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:53:80:53:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:54:65:54:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:55:50:55:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:56:125:56:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:57:110:57:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:58:95:58:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:59:80:59:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:60:65:60:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:61:50:61:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:62:140:62:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:63:125:63:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:64:110:64:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:65:95:65:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:66:80:66:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:67:65:67:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:68:50:68:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:69:155:69:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:70:140:70:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:71:125:71:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:72:110:72:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:73:95:73:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:74:80:74:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:75:65:75:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:76:50:76:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:77:170:77:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:78:155:78:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:79:140:79:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:80:125:80:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:81:110:81:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:82:95:82:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:83:80:83:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:84:65:84:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:85:50:85:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:86:185:86:192 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:87:170:87:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:88:155:88:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:89:140:89:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:90:125:90:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:91:110:91:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:92:95:92:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:93:80:93:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:94:65:94:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:95:50:95:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:96:50:96:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:97:70:97:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:98:50:98:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:99:55:99:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:100:55:100:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:101:44:101:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:102:44:102:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:103:36:103:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:104:36:104:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:105:26:105:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:106:26:106:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:107:35:107:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:108:35:108:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:109:55:109:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:110:50:110:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:111:35:111:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:112:65:112:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:113:50:113:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:114:35:114:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:115:80:115:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:116:65:116:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:117:50:117:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:118:35:118:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:119:95:119:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:120:80:120:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:121:65:121:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:122:50:122:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:123:35:123:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:124:110:124:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:125:95:125:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:126:80:126:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:127:65:127:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:128:50:128:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:129:35:129:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:130:125:130:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:131:110:131:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:132:95:132:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:133:80:133:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:134:65:134:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:135:50:135:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:136:35:136:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:137:140:137:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:138:125:138:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:139:110:139:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:140:95:140:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:141:80:141:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:142:65:142:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:143:50:143:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:144:35:144:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:145:155:145:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:146:140:146:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:147:125:147:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:148:110:148:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:149:95:149:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:150:80:150:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:151:65:151:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:152:50:152:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:153:35:153:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:154:170:154:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:155:155:155:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:156:140:156:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:157:125:157:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:158:110:158:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:159:95:159:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:160:80:160:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:161:65:161:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:162:50:162:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:163:35:163:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:164:35:164:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:165:55:165:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:166:35:166:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:167:40:167:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:168:40:168:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:169:41:169:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:170:41:170:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:171:56:171:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:172:56:172:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:173:51:173:58 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:174:59:174:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:175:59:175:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:176:41:176:48 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:177:50:177:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:178:50:178:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:179:70:179:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:180:65:180:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:181:50:181:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:182:80:182:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:183:65:183:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:184:50:184:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:185:95:185:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:186:80:186:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:187:65:187:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:188:50:188:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:189:110:189:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:190:95:190:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:191:80:191:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:192:65:192:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:193:50:193:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:194:125:194:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:195:110:195:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:196:95:196:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:197:80:197:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:198:65:198:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:199:50:199:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:200:140:200:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:201:125:201:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:202:110:202:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:203:95:203:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:204:80:204:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:205:65:205:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:206:50:206:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:207:155:207:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:208:140:208:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:209:125:209:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:210:110:210:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:211:95:211:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:212:80:212:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:213:65:213:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:214:50:214:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:215:170:215:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:216:155:216:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:217:140:217:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:218:125:218:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:219:110:219:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:220:95:220:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:221:80:221:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:222:65:222:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:223:50:223:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:224:185:224:192 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:225:170:225:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:226:155:226:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:227:140:227:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:228:125:228:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:229:110:229:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:230:95:230:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:231:80:231:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:232:65:232:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:233:50:233:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:234:50:234:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:235:70:235:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:236:50:236:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:237:55:237:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:238:55:238:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:239:44:239:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:240:44:240:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:241:36:241:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:242:36:242:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:243:26:243:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:244:26:244:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:245:35:245:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:246:35:246:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:247:55:247:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:248:50:248:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:249:35:249:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:250:65:250:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:251:50:251:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:252:35:252:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:253:80:253:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:254:65:254:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:255:50:255:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:256:35:256:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:257:95:257:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:258:80:258:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:259:65:259:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:260:50:260:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:261:35:261:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:262:110:262:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:263:95:263:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:264:80:264:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:265:65:265:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:266:50:266:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:267:35:267:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:268:125:268:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:269:110:269:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:270:95:270:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:271:80:271:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:272:65:272:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:273:50:273:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:274:35:274:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:275:140:275:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:276:125:276:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:277:110:277:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:278:95:278:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:279:80:279:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:280:65:280:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:281:50:281:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:282:35:282:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:283:155:283:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:284:140:284:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:285:125:285:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:286:110:286:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:287:95:287:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:288:80:288:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:289:65:289:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:290:50:290:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:291:35:291:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:292:170:292:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:293:155:293:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:294:140:294:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:295:125:295:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:296:110:296:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:297:95:297:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:298:80:298:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:299:65:299:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:300:50:300:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:301:35:301:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:302:35:302:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:303:55:303:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:304:35:304:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:305:40:305:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:306:40:306:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:307:41:307:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:308:41:308:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:309:56:309:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:310:56:310:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:311:51:311:58 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:312:59:312:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:313:59:313:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:314:41:314:48 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:315:50:315:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:316:50:316:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:317:70:317:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:318:65:318:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:319:50:319:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:320:80:320:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:321:65:321:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:322:50:322:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:323:95:323:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:324:80:324:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:325:65:325:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:326:50:326:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:327:110:327:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:328:95:328:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:329:80:329:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:330:65:330:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:331:50:331:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:332:125:332:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:333:110:333:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:334:95:334:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:335:80:335:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:336:65:336:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:337:50:337:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:338:140:338:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:339:125:339:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:340:110:340:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:341:95:341:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:342:80:342:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:343:65:343:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:344:50:344:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:345:155:345:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:346:140:346:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:347:125:347:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:348:110:348:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:349:95:349:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:350:80:350:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:351:65:351:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:352:50:352:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:353:170:353:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:354:155:354:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:355:140:355:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:356:125:356:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:357:110:357:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:358:95:358:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:359:80:359:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:360:65:360:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:361:50:361:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:362:185:362:192 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:363:170:363:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:364:155:364:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:365:140:365:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:366:125:366:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:367:110:367:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:368:95:368:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:369:80:369:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:370:65:370:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:371:50:371:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:372:50:372:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:373:70:373:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:374:50:374:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:375:55:375:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:376:55:376:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:377:44:377:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:378:44:378:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:379:36:379:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:380:36:380:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:381:26:381:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:382:26:382:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:383:35:383:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:384:35:384:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:385:55:385:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:386:50:386:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:387:35:387:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:388:65:388:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:389:50:389:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:390:35:390:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:391:80:391:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:392:65:392:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:393:50:393:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:394:35:394:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:395:95:395:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:396:80:396:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:397:65:397:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:398:50:398:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:399:35:399:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:400:110:400:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:401:95:401:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:402:80:402:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:403:65:403:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:404:50:404:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:405:35:405:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:406:125:406:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:407:110:407:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:408:95:408:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:409:80:409:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:410:65:410:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:411:50:411:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:412:35:412:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:413:140:413:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:414:125:414:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:415:110:415:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:416:95:416:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:417:80:417:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:418:65:418:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:419:50:419:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:420:35:420:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:421:155:421:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:422:140:422:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:423:125:423:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:424:110:424:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:425:95:425:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:426:80:426:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:427:65:427:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:428:50:428:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:429:35:429:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:430:170:430:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:431:155:431:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:432:140:432:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:433:125:433:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:434:110:434:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:435:95:435:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:436:80:436:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:437:65:437:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:438:50:438:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:439:35:439:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:440:35:440:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:441:55:441:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:442:35:442:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:443:40:443:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:444:40:444:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:445:40:445:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:446:40:446:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:447:55:447:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:448:55:448:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:449:50:449:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:450:58:450:65 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:451:58:451:65 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:452:40:452:47 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:453:49:453:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:454:49:454:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:455:69:455:76 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:456:64:456:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:457:49:457:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:458:79:458:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:459:64:459:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:460:49:460:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:461:94:461:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:462:79:462:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:463:64:463:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:464:49:464:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:465:109:465:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:466:94:466:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:467:79:467:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:468:64:468:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:469:49:469:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:470:124:470:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:471:109:471:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:472:94:472:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:473:79:473:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:474:64:474:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:475:49:475:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:476:139:476:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:477:124:477:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:478:109:478:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:479:94:479:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:480:79:480:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:481:64:481:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:482:49:482:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:483:154:483:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:484:139:484:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:485:124:485:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:486:109:486:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:487:94:487:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:488:79:488:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:489:64:489:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:490:49:490:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:491:169:491:176 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:492:154:492:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:493:139:493:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:494:124:494:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:495:109:495:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:496:94:496:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:497:79:497:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:498:64:498:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:499:49:499:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:500:184:500:191 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:501:169:501:176 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:502:154:502:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:503:139:503:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:504:124:504:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:505:109:505:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:506:94:506:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:507:79:507:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:508:64:508:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:509:49:509:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:510:49:510:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:511:69:511:76 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:512:49:512:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:513:54:513:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:514:54:514:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:515:43:515:50 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:516:43:516:50 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:517:35:517:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:518:35:518:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:519:25:519:32 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:520:25:520:32 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:521:34:521:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:522:34:522:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:523:54:523:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:524:49:524:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:525:34:525:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:526:64:526:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:527:49:527:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:528:34:528:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:529:79:529:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:530:64:530:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:531:49:531:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:532:34:532:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:533:94:533:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:534:79:534:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:535:64:535:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:536:49:536:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:537:34:537:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:538:109:538:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:539:94:539:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:540:79:540:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:541:64:541:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:542:49:542:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:543:34:543:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:544:124:544:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:545:109:545:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:546:94:546:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:547:79:547:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:548:64:548:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:549:49:549:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:550:34:550:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:551:139:551:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:552:124:552:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:553:109:553:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:554:94:554:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:555:79:555:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:556:64:556:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:557:49:557:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:558:34:558:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:559:154:559:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:560:139:560:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:561:124:561:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:562:109:562:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:563:94:563:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:564:79:564:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:565:64:565:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:566:49:566:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:567:34:567:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:568:169:568:176 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:569:154:569:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:570:139:570:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:571:124:571:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:572:109:572:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:573:94:573:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:574:79:574:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:575:64:575:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:576:49:576:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:577:34:577:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:578:34:578:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:579:54:579:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:580:34:580:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:581:39:581:46 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:582:39:582:46 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:583:53:583:60 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:584:53:584:60 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:585:68:585:75 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:586:68:586:75 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:587:63:587:70 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:588:71:588:78 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:589:71:589:78 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:590:53:590:60 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:591:62:591:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:592:62:592:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:593:82:593:89 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:594:77:594:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:595:62:595:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:596:92:596:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:597:77:597:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:598:62:598:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:599:107:599:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:600:92:600:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:601:77:601:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:602:62:602:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:603:122:603:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:604:107:604:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:605:92:605:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:606:77:606:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:607:62:607:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:608:137:608:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:609:122:609:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:610:107:610:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:611:92:611:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:612:77:612:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:613:62:613:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:614:152:614:159 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:615:137:615:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:616:122:616:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:617:107:617:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:618:92:618:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:619:77:619:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:620:62:620:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:621:167:621:174 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:622:152:622:159 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:623:137:623:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:624:122:624:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:625:107:625:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:626:92:626:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:627:77:627:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:628:62:628:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:629:182:629:189 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:630:167:630:174 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:631:152:631:159 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:632:137:632:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:633:122:633:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:634:107:634:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:635:92:635:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:636:77:636:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:637:62:637:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:638:197:638:204 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:639:182:639:189 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:640:167:640:174 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:641:152:641:159 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:642:137:642:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:643:122:643:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:644:107:644:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:645:92:645:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:646:77:646:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:647:62:647:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:648:62:648:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:649:82:649:89 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:650:62:650:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:651:67:651:74 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:652:67:652:74 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:653:56:653:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:654:56:654:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:655:48:655:55 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:656:48:656:55 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:657:38:657:45 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:658:38:658:45 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:659:47:659:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:660:47:660:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:661:67:661:74 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:662:62:662:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:663:47:663:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:664:77:664:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:665:62:665:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:666:47:666:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:667:92:667:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:668:77:668:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:669:62:669:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:670:47:670:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:671:107:671:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:672:92:672:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:673:77:673:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:674:62:674:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:675:47:675:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:676:122:676:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:677:107:677:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:678:92:678:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:679:77:679:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:680:62:680:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:681:47:681:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:682:137:682:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:683:122:683:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:684:107:684:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:685:92:685:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:686:77:686:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:687:62:687:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:688:47:688:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:689:152:689:159 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:690:137:690:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:691:122:691:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:692:107:692:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:693:92:693:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:694:77:694:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:695:62:695:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:696:47:696:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:697:167:697:174 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:698:152:698:159 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:699:137:699:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:700:122:700:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:701:107:701:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:702:92:702:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:703:77:703:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:704:62:704:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:705:47:705:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:706:182:706:189 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:707:167:707:174 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:708:152:708:159 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:709:137:709:144 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:710:122:710:129 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:711:107:711:114 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:712:92:712:99 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:713:77:713:84 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:714:62:714:69 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:715:47:715:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:716:47:716:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:717:67:717:74 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:718:47:718:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:719:52:719:59 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:720:52:720:59 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:721:41:721:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:722:41:722:48 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:723:56:723:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:724:56:724:63 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:725:51:725:58 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:726:59:726:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:727:59:727:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:728:41:728:48 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:729:50:729:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:730:50:730:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:731:70:731:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:732:65:732:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:733:50:733:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:734:80:734:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:735:65:735:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:736:50:736:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:737:95:737:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:738:80:738:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:739:65:739:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:740:50:740:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:741:110:741:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:742:95:742:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:743:80:743:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:744:65:744:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:745:50:745:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:746:125:746:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:747:110:747:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:748:95:748:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:749:80:749:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:750:65:750:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:751:50:751:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:752:140:752:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:753:125:753:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:754:110:754:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:755:95:755:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:756:80:756:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:757:65:757:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:758:50:758:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:759:155:759:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:760:140:760:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:761:125:761:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:762:110:762:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:763:95:763:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:764:80:764:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:765:65:765:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:766:50:766:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:767:170:767:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:768:155:768:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:769:140:769:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:770:125:770:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:771:110:771:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:772:95:772:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:773:80:773:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:774:65:774:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:775:50:775:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:776:185:776:192 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:777:170:777:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:778:155:778:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:779:140:779:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:780:125:780:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:781:110:781:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:782:95:782:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:783:80:783:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:784:65:784:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:785:50:785:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:786:50:786:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:787:70:787:77 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:788:50:788:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:789:55:789:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:790:55:790:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:791:44:791:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:792:44:792:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:793:36:793:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:794:36:794:43 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:795:26:795:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:796:26:796:33 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:797:35:797:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:798:35:798:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:799:55:799:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:800:50:800:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:801:35:801:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:802:65:802:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:803:50:803:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:804:35:804:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:805:80:805:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:806:65:806:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:807:50:807:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:808:35:808:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:809:95:809:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:810:80:810:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:811:65:811:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:812:50:812:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:813:35:813:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:814:110:814:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:815:95:815:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:816:80:816:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:817:65:817:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:818:50:818:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:819:35:819:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:820:125:820:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:821:110:821:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:822:95:822:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:823:80:823:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:824:65:824:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:825:50:825:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:826:35:826:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:827:140:827:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:828:125:828:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:829:110:829:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:830:95:830:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:831:80:831:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:832:65:832:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:833:50:833:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:834:35:834:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:835:155:835:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:836:140:836:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:837:125:837:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:838:110:838:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:839:95:839:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:840:80:840:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:841:65:841:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:842:50:842:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:843:35:843:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:844:170:844:177 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:845:155:845:162 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:846:140:846:147 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:847:125:847:132 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:848:110:848:117 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:849:95:849:102 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:850:80:850:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:851:65:851:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:852:50:852:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:853:35:853:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:854:35:854:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:855:55:855:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:856:35:856:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:857:40:857:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:858:40:858:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:859:40:859:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:860:40:860:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:861:55:861:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:862:55:862:62 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:863:50:863:57 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:864:58:864:65 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:865:58:865:65 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:866:40:866:47 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:867:49:867:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:868:49:868:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:869:69:869:76 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:870:64:870:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:871:49:871:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:872:79:872:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:873:64:873:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:874:49:874:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:875:94:875:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:876:79:876:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:877:64:877:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:878:49:878:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:879:109:879:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:880:94:880:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:881:79:881:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:882:64:882:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:883:49:883:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:884:124:884:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:885:109:885:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:886:94:886:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:887:79:887:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:888:64:888:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:889:49:889:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:890:139:890:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:891:124:891:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:892:109:892:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:893:94:893:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:894:79:894:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:895:64:895:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:896:49:896:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:897:154:897:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:898:139:898:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:899:124:899:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:900:109:900:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:901:94:901:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:902:79:902:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:903:64:903:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:904:49:904:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:905:169:905:176 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:906:154:906:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:907:139:907:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:908:124:908:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:909:109:909:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:910:94:910:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:911:79:911:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:912:64:912:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:913:49:913:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:914:184:914:191 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:915:169:915:176 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:916:154:916:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:917:139:917:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:918:124:918:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:919:109:919:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:920:94:920:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:921:79:921:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:922:64:922:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:923:49:923:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:924:49:924:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:925:69:925:76 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:926:49:926:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:927:54:927:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:928:54:928:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:929:43:929:50 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:930:43:930:50 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:931:35:931:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:932:35:932:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:933:25:933:32 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:934:25:934:32 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:935:34:935:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:936:34:936:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:937:54:937:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:938:49:938:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:939:34:939:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:940:64:940:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:941:49:941:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:942:34:942:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:943:79:943:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:944:64:944:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:945:49:945:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:946:34:946:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:947:94:947:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:948:79:948:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:949:64:949:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:950:49:950:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:951:34:951:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:952:109:952:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:953:94:953:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:954:79:954:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:955:64:955:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:956:49:956:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:957:34:957:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:958:124:958:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:959:109:959:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:960:94:960:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:961:79:961:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:962:64:962:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:963:49:963:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:964:34:964:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:965:139:965:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:966:124:966:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:967:109:967:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:968:94:968:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:969:79:969:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:970:64:970:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:971:49:971:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:972:34:972:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:973:154:973:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:974:139:974:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:975:124:975:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:976:109:976:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:977:94:977:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:978:79:978:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:979:64:979:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:980:49:980:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:981:34:981:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:982:169:982:176 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:983:154:983:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:984:139:984:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:985:124:985:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:986:109:986:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:987:94:987:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:988:79:988:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:989:64:989:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:990:49:990:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:991:34:991:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:992:34:992:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:993:54:993:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:994:34:994:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:995:39:995:46 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:996:39:996:46 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:998:65:998:72 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:999:48:999:55 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1000:59:1000:66 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1001:42:1001:49 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1002:53:1002:60 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1020:40:1020:47 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1021:35:1021:42 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1022:25:1022:32 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1023:34:1023:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1024:34:1024:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1025:54:1025:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1026:40:1026:47 | source(...) | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1028:49:1028:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1029:34:1029:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1030:64:1030:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1031:49:1031:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1032:34:1032:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1033:79:1033:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1034:64:1034:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1035:49:1035:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1036:34:1036:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1037:94:1037:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1038:79:1038:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1039:64:1039:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1040:49:1040:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1041:34:1041:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1042:109:1042:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1043:94:1043:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1044:79:1044:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1045:64:1045:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1046:49:1046:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1047:34:1047:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1048:124:1048:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1049:109:1049:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1050:94:1050:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1051:79:1051:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1052:64:1052:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1053:49:1053:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1054:34:1054:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1055:139:1055:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1056:124:1056:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1057:109:1057:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1058:94:1058:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1059:79:1059:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1060:64:1060:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1061:49:1061:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1062:34:1062:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1063:154:1063:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1064:139:1064:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1065:124:1065:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1066:109:1066:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1067:94:1067:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1068:79:1068:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1069:64:1069:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1070:49:1070:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1071:34:1071:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1072:169:1072:176 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1073:154:1073:161 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1074:139:1074:146 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1075:124:1075:131 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1076:109:1076:116 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1077:94:1077:101 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1078:79:1078:86 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1079:64:1079:71 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1080:49:1080:56 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1081:34:1081:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1083:34:1083:41 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1084:54:1084:61 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1085:39:1085:46 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | provenance | | +| Log4jJndiInjectionTest.java:31:41:31:48 | source(...) : String | Log4jJndiInjectionTest.java:31:26:31:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:32:41:32:48 | source(...) : String | Log4jJndiInjectionTest.java:32:26:32:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:33:56:33:63 | source(...) : String | Log4jJndiInjectionTest.java:33:41:33:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:34:56:34:63 | source(...) : String | Log4jJndiInjectionTest.java:34:41:34:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:35:51:35:58 | source(...) : String | Log4jJndiInjectionTest.java:35:41:35:58 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:36:59:36:66 | source(...) : String | Log4jJndiInjectionTest.java:36:41:36:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:37:59:37:66 | source(...) : String | Log4jJndiInjectionTest.java:37:41:37:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:39:50:39:57 | source(...) : String | Log4jJndiInjectionTest.java:39:41:39:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:40:50:40:57 | source(...) : String | Log4jJndiInjectionTest.java:40:41:40:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:41:56:41:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:41:56:41:78 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:41:70:41:77 | source(...) : String | Log4jJndiInjectionTest.java:41:56:41:78 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:42:65:42:72 | source(...) : String | Log4jJndiInjectionTest.java:42:56:42:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:43:50:43:57 | source(...) : String | Log4jJndiInjectionTest.java:43:41:43:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:44:80:44:87 | source(...) : String | Log4jJndiInjectionTest.java:44:71:44:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:45:65:45:72 | source(...) : String | Log4jJndiInjectionTest.java:45:56:45:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:46:50:46:57 | source(...) : String | Log4jJndiInjectionTest.java:46:41:46:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:47:95:47:102 | source(...) : String | Log4jJndiInjectionTest.java:47:86:47:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:48:80:48:87 | source(...) : String | Log4jJndiInjectionTest.java:48:71:48:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:49:65:49:72 | source(...) : String | Log4jJndiInjectionTest.java:49:56:49:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:50:50:50:57 | source(...) : String | Log4jJndiInjectionTest.java:50:41:50:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:51:110:51:117 | source(...) : String | Log4jJndiInjectionTest.java:51:101:51:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:52:95:52:102 | source(...) : String | Log4jJndiInjectionTest.java:52:86:52:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:53:80:53:87 | source(...) : String | Log4jJndiInjectionTest.java:53:71:53:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:54:65:54:72 | source(...) : String | Log4jJndiInjectionTest.java:54:56:54:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:55:50:55:57 | source(...) : String | Log4jJndiInjectionTest.java:55:41:55:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:56:125:56:132 | source(...) : String | Log4jJndiInjectionTest.java:56:116:56:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:57:110:57:117 | source(...) : String | Log4jJndiInjectionTest.java:57:101:57:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:58:95:58:102 | source(...) : String | Log4jJndiInjectionTest.java:58:86:58:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:59:80:59:87 | source(...) : String | Log4jJndiInjectionTest.java:59:71:59:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:60:65:60:72 | source(...) : String | Log4jJndiInjectionTest.java:60:56:60:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:61:50:61:57 | source(...) : String | Log4jJndiInjectionTest.java:61:41:61:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:62:140:62:147 | source(...) : String | Log4jJndiInjectionTest.java:62:131:62:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:63:125:63:132 | source(...) : String | Log4jJndiInjectionTest.java:63:116:63:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:64:110:64:117 | source(...) : String | Log4jJndiInjectionTest.java:64:101:64:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:65:95:65:102 | source(...) : String | Log4jJndiInjectionTest.java:65:86:65:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:66:80:66:87 | source(...) : String | Log4jJndiInjectionTest.java:66:71:66:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:67:65:67:72 | source(...) : String | Log4jJndiInjectionTest.java:67:56:67:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:68:50:68:57 | source(...) : String | Log4jJndiInjectionTest.java:68:41:68:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:69:155:69:162 | source(...) : String | Log4jJndiInjectionTest.java:69:146:69:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:70:140:70:147 | source(...) : String | Log4jJndiInjectionTest.java:70:131:70:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:71:125:71:132 | source(...) : String | Log4jJndiInjectionTest.java:71:116:71:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:72:110:72:117 | source(...) : String | Log4jJndiInjectionTest.java:72:101:72:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:73:95:73:102 | source(...) : String | Log4jJndiInjectionTest.java:73:86:73:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:74:80:74:87 | source(...) : String | Log4jJndiInjectionTest.java:74:71:74:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:75:65:75:72 | source(...) : String | Log4jJndiInjectionTest.java:75:56:75:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:76:50:76:57 | source(...) : String | Log4jJndiInjectionTest.java:76:41:76:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:77:170:77:177 | source(...) : String | Log4jJndiInjectionTest.java:77:161:77:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:78:155:78:162 | source(...) : String | Log4jJndiInjectionTest.java:78:146:78:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:79:140:79:147 | source(...) : String | Log4jJndiInjectionTest.java:79:131:79:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:80:125:80:132 | source(...) : String | Log4jJndiInjectionTest.java:80:116:80:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:81:110:81:117 | source(...) : String | Log4jJndiInjectionTest.java:81:101:81:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:82:95:82:102 | source(...) : String | Log4jJndiInjectionTest.java:82:86:82:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:83:80:83:87 | source(...) : String | Log4jJndiInjectionTest.java:83:71:83:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:84:65:84:72 | source(...) : String | Log4jJndiInjectionTest.java:84:56:84:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:85:50:85:57 | source(...) : String | Log4jJndiInjectionTest.java:85:41:85:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:86:185:86:192 | source(...) : String | Log4jJndiInjectionTest.java:86:176:86:192 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:87:170:87:177 | source(...) : String | Log4jJndiInjectionTest.java:87:161:87:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:88:155:88:162 | source(...) : String | Log4jJndiInjectionTest.java:88:146:88:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:89:140:89:147 | source(...) : String | Log4jJndiInjectionTest.java:89:131:89:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:90:125:90:132 | source(...) : String | Log4jJndiInjectionTest.java:90:116:90:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:91:110:91:117 | source(...) : String | Log4jJndiInjectionTest.java:91:101:91:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:92:95:92:102 | source(...) : String | Log4jJndiInjectionTest.java:92:86:92:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:93:80:93:87 | source(...) : String | Log4jJndiInjectionTest.java:93:71:93:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:94:65:94:72 | source(...) : String | Log4jJndiInjectionTest.java:94:56:94:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:95:50:95:57 | source(...) : String | Log4jJndiInjectionTest.java:95:41:95:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:96:50:96:57 | source(...) : String | Log4jJndiInjectionTest.java:96:41:96:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:97:70:97:77 | source(...) : String | Log4jJndiInjectionTest.java:97:56:97:77 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:98:50:98:57 | source(...) : String | Log4jJndiInjectionTest.java:98:41:98:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:99:55:99:62 | source(...) : String | Log4jJndiInjectionTest.java:99:41:99:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:100:55:100:62 | source(...) : String | Log4jJndiInjectionTest.java:100:41:100:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:101:44:101:51 | source(...) : String | Log4jJndiInjectionTest.java:101:26:101:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:102:44:102:51 | source(...) : String | Log4jJndiInjectionTest.java:102:26:102:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:103:36:103:43 | source(...) : String | Log4jJndiInjectionTest.java:103:26:103:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:104:36:104:43 | source(...) : String | Log4jJndiInjectionTest.java:104:26:104:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:107:35:107:42 | source(...) : String | Log4jJndiInjectionTest.java:107:26:107:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:108:35:108:42 | source(...) : String | Log4jJndiInjectionTest.java:108:26:108:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:109:41:109:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:109:41:109:63 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:109:55:109:62 | source(...) : String | Log4jJndiInjectionTest.java:109:41:109:63 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:110:50:110:57 | source(...) : String | Log4jJndiInjectionTest.java:110:41:110:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:111:35:111:42 | source(...) : String | Log4jJndiInjectionTest.java:111:26:111:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:112:65:112:72 | source(...) : String | Log4jJndiInjectionTest.java:112:56:112:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:113:50:113:57 | source(...) : String | Log4jJndiInjectionTest.java:113:41:113:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:114:35:114:42 | source(...) : String | Log4jJndiInjectionTest.java:114:26:114:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:115:80:115:87 | source(...) : String | Log4jJndiInjectionTest.java:115:71:115:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:116:65:116:72 | source(...) : String | Log4jJndiInjectionTest.java:116:56:116:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:117:50:117:57 | source(...) : String | Log4jJndiInjectionTest.java:117:41:117:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:118:35:118:42 | source(...) : String | Log4jJndiInjectionTest.java:118:26:118:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:119:95:119:102 | source(...) : String | Log4jJndiInjectionTest.java:119:86:119:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:120:80:120:87 | source(...) : String | Log4jJndiInjectionTest.java:120:71:120:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:121:65:121:72 | source(...) : String | Log4jJndiInjectionTest.java:121:56:121:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:122:50:122:57 | source(...) : String | Log4jJndiInjectionTest.java:122:41:122:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:123:35:123:42 | source(...) : String | Log4jJndiInjectionTest.java:123:26:123:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:124:110:124:117 | source(...) : String | Log4jJndiInjectionTest.java:124:101:124:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:125:95:125:102 | source(...) : String | Log4jJndiInjectionTest.java:125:86:125:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:126:80:126:87 | source(...) : String | Log4jJndiInjectionTest.java:126:71:126:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:127:65:127:72 | source(...) : String | Log4jJndiInjectionTest.java:127:56:127:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:128:50:128:57 | source(...) : String | Log4jJndiInjectionTest.java:128:41:128:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:129:35:129:42 | source(...) : String | Log4jJndiInjectionTest.java:129:26:129:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:130:125:130:132 | source(...) : String | Log4jJndiInjectionTest.java:130:116:130:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:131:110:131:117 | source(...) : String | Log4jJndiInjectionTest.java:131:101:131:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:132:95:132:102 | source(...) : String | Log4jJndiInjectionTest.java:132:86:132:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:133:80:133:87 | source(...) : String | Log4jJndiInjectionTest.java:133:71:133:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:134:65:134:72 | source(...) : String | Log4jJndiInjectionTest.java:134:56:134:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:135:50:135:57 | source(...) : String | Log4jJndiInjectionTest.java:135:41:135:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:136:35:136:42 | source(...) : String | Log4jJndiInjectionTest.java:136:26:136:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:137:140:137:147 | source(...) : String | Log4jJndiInjectionTest.java:137:131:137:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:138:125:138:132 | source(...) : String | Log4jJndiInjectionTest.java:138:116:138:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:139:110:139:117 | source(...) : String | Log4jJndiInjectionTest.java:139:101:139:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:140:95:140:102 | source(...) : String | Log4jJndiInjectionTest.java:140:86:140:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:141:80:141:87 | source(...) : String | Log4jJndiInjectionTest.java:141:71:141:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:142:65:142:72 | source(...) : String | Log4jJndiInjectionTest.java:142:56:142:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:143:50:143:57 | source(...) : String | Log4jJndiInjectionTest.java:143:41:143:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:144:35:144:42 | source(...) : String | Log4jJndiInjectionTest.java:144:26:144:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:145:155:145:162 | source(...) : String | Log4jJndiInjectionTest.java:145:146:145:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:146:140:146:147 | source(...) : String | Log4jJndiInjectionTest.java:146:131:146:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:147:125:147:132 | source(...) : String | Log4jJndiInjectionTest.java:147:116:147:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:148:110:148:117 | source(...) : String | Log4jJndiInjectionTest.java:148:101:148:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:149:95:149:102 | source(...) : String | Log4jJndiInjectionTest.java:149:86:149:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:150:80:150:87 | source(...) : String | Log4jJndiInjectionTest.java:150:71:150:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:151:65:151:72 | source(...) : String | Log4jJndiInjectionTest.java:151:56:151:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:152:50:152:57 | source(...) : String | Log4jJndiInjectionTest.java:152:41:152:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:153:35:153:42 | source(...) : String | Log4jJndiInjectionTest.java:153:26:153:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:154:170:154:177 | source(...) : String | Log4jJndiInjectionTest.java:154:161:154:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:155:155:155:162 | source(...) : String | Log4jJndiInjectionTest.java:155:146:155:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:156:140:156:147 | source(...) : String | Log4jJndiInjectionTest.java:156:131:156:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:157:125:157:132 | source(...) : String | Log4jJndiInjectionTest.java:157:116:157:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:158:110:158:117 | source(...) : String | Log4jJndiInjectionTest.java:158:101:158:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:159:95:159:102 | source(...) : String | Log4jJndiInjectionTest.java:159:86:159:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:160:80:160:87 | source(...) : String | Log4jJndiInjectionTest.java:160:71:160:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:161:65:161:72 | source(...) : String | Log4jJndiInjectionTest.java:161:56:161:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:162:50:162:57 | source(...) : String | Log4jJndiInjectionTest.java:162:41:162:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:163:35:163:42 | source(...) : String | Log4jJndiInjectionTest.java:163:26:163:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:164:35:164:42 | source(...) : String | Log4jJndiInjectionTest.java:164:26:164:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:165:55:165:62 | source(...) : String | Log4jJndiInjectionTest.java:165:41:165:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:166:35:166:42 | source(...) : String | Log4jJndiInjectionTest.java:166:26:166:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:167:40:167:47 | source(...) : String | Log4jJndiInjectionTest.java:167:26:167:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:168:40:168:47 | source(...) : String | Log4jJndiInjectionTest.java:168:26:168:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:169:41:169:48 | source(...) : String | Log4jJndiInjectionTest.java:169:26:169:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:170:41:170:48 | source(...) : String | Log4jJndiInjectionTest.java:170:26:170:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:171:56:171:63 | source(...) : String | Log4jJndiInjectionTest.java:171:41:171:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:172:56:172:63 | source(...) : String | Log4jJndiInjectionTest.java:172:41:172:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:173:51:173:58 | source(...) : String | Log4jJndiInjectionTest.java:173:41:173:58 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:174:59:174:66 | source(...) : String | Log4jJndiInjectionTest.java:174:41:174:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:175:59:175:66 | source(...) : String | Log4jJndiInjectionTest.java:175:41:175:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:177:50:177:57 | source(...) : String | Log4jJndiInjectionTest.java:177:41:177:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:178:50:178:57 | source(...) : String | Log4jJndiInjectionTest.java:178:41:178:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:179:56:179:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:179:56:179:78 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:179:70:179:77 | source(...) : String | Log4jJndiInjectionTest.java:179:56:179:78 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:180:65:180:72 | source(...) : String | Log4jJndiInjectionTest.java:180:56:180:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:181:50:181:57 | source(...) : String | Log4jJndiInjectionTest.java:181:41:181:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:182:80:182:87 | source(...) : String | Log4jJndiInjectionTest.java:182:71:182:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:183:65:183:72 | source(...) : String | Log4jJndiInjectionTest.java:183:56:183:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:184:50:184:57 | source(...) : String | Log4jJndiInjectionTest.java:184:41:184:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:185:95:185:102 | source(...) : String | Log4jJndiInjectionTest.java:185:86:185:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:186:80:186:87 | source(...) : String | Log4jJndiInjectionTest.java:186:71:186:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:187:65:187:72 | source(...) : String | Log4jJndiInjectionTest.java:187:56:187:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:188:50:188:57 | source(...) : String | Log4jJndiInjectionTest.java:188:41:188:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:189:110:189:117 | source(...) : String | Log4jJndiInjectionTest.java:189:101:189:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:190:95:190:102 | source(...) : String | Log4jJndiInjectionTest.java:190:86:190:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:191:80:191:87 | source(...) : String | Log4jJndiInjectionTest.java:191:71:191:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:192:65:192:72 | source(...) : String | Log4jJndiInjectionTest.java:192:56:192:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:193:50:193:57 | source(...) : String | Log4jJndiInjectionTest.java:193:41:193:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:194:125:194:132 | source(...) : String | Log4jJndiInjectionTest.java:194:116:194:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:195:110:195:117 | source(...) : String | Log4jJndiInjectionTest.java:195:101:195:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:196:95:196:102 | source(...) : String | Log4jJndiInjectionTest.java:196:86:196:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:197:80:197:87 | source(...) : String | Log4jJndiInjectionTest.java:197:71:197:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:198:65:198:72 | source(...) : String | Log4jJndiInjectionTest.java:198:56:198:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:199:50:199:57 | source(...) : String | Log4jJndiInjectionTest.java:199:41:199:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:200:140:200:147 | source(...) : String | Log4jJndiInjectionTest.java:200:131:200:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:201:125:201:132 | source(...) : String | Log4jJndiInjectionTest.java:201:116:201:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:202:110:202:117 | source(...) : String | Log4jJndiInjectionTest.java:202:101:202:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:203:95:203:102 | source(...) : String | Log4jJndiInjectionTest.java:203:86:203:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:204:80:204:87 | source(...) : String | Log4jJndiInjectionTest.java:204:71:204:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:205:65:205:72 | source(...) : String | Log4jJndiInjectionTest.java:205:56:205:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:206:50:206:57 | source(...) : String | Log4jJndiInjectionTest.java:206:41:206:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:207:155:207:162 | source(...) : String | Log4jJndiInjectionTest.java:207:146:207:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:208:140:208:147 | source(...) : String | Log4jJndiInjectionTest.java:208:131:208:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:209:125:209:132 | source(...) : String | Log4jJndiInjectionTest.java:209:116:209:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:210:110:210:117 | source(...) : String | Log4jJndiInjectionTest.java:210:101:210:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:211:95:211:102 | source(...) : String | Log4jJndiInjectionTest.java:211:86:211:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:212:80:212:87 | source(...) : String | Log4jJndiInjectionTest.java:212:71:212:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:213:65:213:72 | source(...) : String | Log4jJndiInjectionTest.java:213:56:213:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:214:50:214:57 | source(...) : String | Log4jJndiInjectionTest.java:214:41:214:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:215:170:215:177 | source(...) : String | Log4jJndiInjectionTest.java:215:161:215:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:216:155:216:162 | source(...) : String | Log4jJndiInjectionTest.java:216:146:216:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:217:140:217:147 | source(...) : String | Log4jJndiInjectionTest.java:217:131:217:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:218:125:218:132 | source(...) : String | Log4jJndiInjectionTest.java:218:116:218:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:219:110:219:117 | source(...) : String | Log4jJndiInjectionTest.java:219:101:219:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:220:95:220:102 | source(...) : String | Log4jJndiInjectionTest.java:220:86:220:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:221:80:221:87 | source(...) : String | Log4jJndiInjectionTest.java:221:71:221:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:222:65:222:72 | source(...) : String | Log4jJndiInjectionTest.java:222:56:222:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:223:50:223:57 | source(...) : String | Log4jJndiInjectionTest.java:223:41:223:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:224:185:224:192 | source(...) : String | Log4jJndiInjectionTest.java:224:176:224:192 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:225:170:225:177 | source(...) : String | Log4jJndiInjectionTest.java:225:161:225:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:226:155:226:162 | source(...) : String | Log4jJndiInjectionTest.java:226:146:226:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:227:140:227:147 | source(...) : String | Log4jJndiInjectionTest.java:227:131:227:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:228:125:228:132 | source(...) : String | Log4jJndiInjectionTest.java:228:116:228:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:229:110:229:117 | source(...) : String | Log4jJndiInjectionTest.java:229:101:229:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:230:95:230:102 | source(...) : String | Log4jJndiInjectionTest.java:230:86:230:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:231:80:231:87 | source(...) : String | Log4jJndiInjectionTest.java:231:71:231:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:232:65:232:72 | source(...) : String | Log4jJndiInjectionTest.java:232:56:232:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:233:50:233:57 | source(...) : String | Log4jJndiInjectionTest.java:233:41:233:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:234:50:234:57 | source(...) : String | Log4jJndiInjectionTest.java:234:41:234:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:235:70:235:77 | source(...) : String | Log4jJndiInjectionTest.java:235:56:235:77 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:236:50:236:57 | source(...) : String | Log4jJndiInjectionTest.java:236:41:236:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:237:55:237:62 | source(...) : String | Log4jJndiInjectionTest.java:237:41:237:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:238:55:238:62 | source(...) : String | Log4jJndiInjectionTest.java:238:41:238:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:239:44:239:51 | source(...) : String | Log4jJndiInjectionTest.java:239:26:239:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:240:44:240:51 | source(...) : String | Log4jJndiInjectionTest.java:240:26:240:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:241:36:241:43 | source(...) : String | Log4jJndiInjectionTest.java:241:26:241:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:242:36:242:43 | source(...) : String | Log4jJndiInjectionTest.java:242:26:242:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:245:35:245:42 | source(...) : String | Log4jJndiInjectionTest.java:245:26:245:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:246:35:246:42 | source(...) : String | Log4jJndiInjectionTest.java:246:26:246:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:247:41:247:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:247:41:247:63 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:247:55:247:62 | source(...) : String | Log4jJndiInjectionTest.java:247:41:247:63 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:248:50:248:57 | source(...) : String | Log4jJndiInjectionTest.java:248:41:248:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:249:35:249:42 | source(...) : String | Log4jJndiInjectionTest.java:249:26:249:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:250:65:250:72 | source(...) : String | Log4jJndiInjectionTest.java:250:56:250:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:251:50:251:57 | source(...) : String | Log4jJndiInjectionTest.java:251:41:251:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:252:35:252:42 | source(...) : String | Log4jJndiInjectionTest.java:252:26:252:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:253:80:253:87 | source(...) : String | Log4jJndiInjectionTest.java:253:71:253:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:254:65:254:72 | source(...) : String | Log4jJndiInjectionTest.java:254:56:254:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:255:50:255:57 | source(...) : String | Log4jJndiInjectionTest.java:255:41:255:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:256:35:256:42 | source(...) : String | Log4jJndiInjectionTest.java:256:26:256:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:257:95:257:102 | source(...) : String | Log4jJndiInjectionTest.java:257:86:257:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:258:80:258:87 | source(...) : String | Log4jJndiInjectionTest.java:258:71:258:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:259:65:259:72 | source(...) : String | Log4jJndiInjectionTest.java:259:56:259:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:260:50:260:57 | source(...) : String | Log4jJndiInjectionTest.java:260:41:260:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:261:35:261:42 | source(...) : String | Log4jJndiInjectionTest.java:261:26:261:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:262:110:262:117 | source(...) : String | Log4jJndiInjectionTest.java:262:101:262:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:263:95:263:102 | source(...) : String | Log4jJndiInjectionTest.java:263:86:263:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:264:80:264:87 | source(...) : String | Log4jJndiInjectionTest.java:264:71:264:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:265:65:265:72 | source(...) : String | Log4jJndiInjectionTest.java:265:56:265:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:266:50:266:57 | source(...) : String | Log4jJndiInjectionTest.java:266:41:266:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:267:35:267:42 | source(...) : String | Log4jJndiInjectionTest.java:267:26:267:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:268:125:268:132 | source(...) : String | Log4jJndiInjectionTest.java:268:116:268:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:269:110:269:117 | source(...) : String | Log4jJndiInjectionTest.java:269:101:269:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:270:95:270:102 | source(...) : String | Log4jJndiInjectionTest.java:270:86:270:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:271:80:271:87 | source(...) : String | Log4jJndiInjectionTest.java:271:71:271:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:272:65:272:72 | source(...) : String | Log4jJndiInjectionTest.java:272:56:272:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:273:50:273:57 | source(...) : String | Log4jJndiInjectionTest.java:273:41:273:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:274:35:274:42 | source(...) : String | Log4jJndiInjectionTest.java:274:26:274:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:275:140:275:147 | source(...) : String | Log4jJndiInjectionTest.java:275:131:275:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:276:125:276:132 | source(...) : String | Log4jJndiInjectionTest.java:276:116:276:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:277:110:277:117 | source(...) : String | Log4jJndiInjectionTest.java:277:101:277:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:278:95:278:102 | source(...) : String | Log4jJndiInjectionTest.java:278:86:278:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:279:80:279:87 | source(...) : String | Log4jJndiInjectionTest.java:279:71:279:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:280:65:280:72 | source(...) : String | Log4jJndiInjectionTest.java:280:56:280:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:281:50:281:57 | source(...) : String | Log4jJndiInjectionTest.java:281:41:281:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:282:35:282:42 | source(...) : String | Log4jJndiInjectionTest.java:282:26:282:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:283:155:283:162 | source(...) : String | Log4jJndiInjectionTest.java:283:146:283:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:284:140:284:147 | source(...) : String | Log4jJndiInjectionTest.java:284:131:284:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:285:125:285:132 | source(...) : String | Log4jJndiInjectionTest.java:285:116:285:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:286:110:286:117 | source(...) : String | Log4jJndiInjectionTest.java:286:101:286:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:287:95:287:102 | source(...) : String | Log4jJndiInjectionTest.java:287:86:287:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:288:80:288:87 | source(...) : String | Log4jJndiInjectionTest.java:288:71:288:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:289:65:289:72 | source(...) : String | Log4jJndiInjectionTest.java:289:56:289:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:290:50:290:57 | source(...) : String | Log4jJndiInjectionTest.java:290:41:290:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:291:35:291:42 | source(...) : String | Log4jJndiInjectionTest.java:291:26:291:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:292:170:292:177 | source(...) : String | Log4jJndiInjectionTest.java:292:161:292:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:293:155:293:162 | source(...) : String | Log4jJndiInjectionTest.java:293:146:293:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:294:140:294:147 | source(...) : String | Log4jJndiInjectionTest.java:294:131:294:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:295:125:295:132 | source(...) : String | Log4jJndiInjectionTest.java:295:116:295:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:296:110:296:117 | source(...) : String | Log4jJndiInjectionTest.java:296:101:296:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:297:95:297:102 | source(...) : String | Log4jJndiInjectionTest.java:297:86:297:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:298:80:298:87 | source(...) : String | Log4jJndiInjectionTest.java:298:71:298:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:299:65:299:72 | source(...) : String | Log4jJndiInjectionTest.java:299:56:299:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:300:50:300:57 | source(...) : String | Log4jJndiInjectionTest.java:300:41:300:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:301:35:301:42 | source(...) : String | Log4jJndiInjectionTest.java:301:26:301:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:302:35:302:42 | source(...) : String | Log4jJndiInjectionTest.java:302:26:302:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:303:55:303:62 | source(...) : String | Log4jJndiInjectionTest.java:303:41:303:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:304:35:304:42 | source(...) : String | Log4jJndiInjectionTest.java:304:26:304:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:305:40:305:47 | source(...) : String | Log4jJndiInjectionTest.java:305:26:305:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:306:40:306:47 | source(...) : String | Log4jJndiInjectionTest.java:306:26:306:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:307:41:307:48 | source(...) : String | Log4jJndiInjectionTest.java:307:26:307:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:308:41:308:48 | source(...) : String | Log4jJndiInjectionTest.java:308:26:308:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:309:56:309:63 | source(...) : String | Log4jJndiInjectionTest.java:309:41:309:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:310:56:310:63 | source(...) : String | Log4jJndiInjectionTest.java:310:41:310:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:311:51:311:58 | source(...) : String | Log4jJndiInjectionTest.java:311:41:311:58 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:312:59:312:66 | source(...) : String | Log4jJndiInjectionTest.java:312:41:312:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:313:59:313:66 | source(...) : String | Log4jJndiInjectionTest.java:313:41:313:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:315:50:315:57 | source(...) : String | Log4jJndiInjectionTest.java:315:41:315:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:316:50:316:57 | source(...) : String | Log4jJndiInjectionTest.java:316:41:316:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:317:56:317:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:317:56:317:78 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:317:70:317:77 | source(...) : String | Log4jJndiInjectionTest.java:317:56:317:78 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:318:65:318:72 | source(...) : String | Log4jJndiInjectionTest.java:318:56:318:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:319:50:319:57 | source(...) : String | Log4jJndiInjectionTest.java:319:41:319:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:320:80:320:87 | source(...) : String | Log4jJndiInjectionTest.java:320:71:320:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:321:65:321:72 | source(...) : String | Log4jJndiInjectionTest.java:321:56:321:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:322:50:322:57 | source(...) : String | Log4jJndiInjectionTest.java:322:41:322:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:323:95:323:102 | source(...) : String | Log4jJndiInjectionTest.java:323:86:323:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:324:80:324:87 | source(...) : String | Log4jJndiInjectionTest.java:324:71:324:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:325:65:325:72 | source(...) : String | Log4jJndiInjectionTest.java:325:56:325:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:326:50:326:57 | source(...) : String | Log4jJndiInjectionTest.java:326:41:326:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:327:110:327:117 | source(...) : String | Log4jJndiInjectionTest.java:327:101:327:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:328:95:328:102 | source(...) : String | Log4jJndiInjectionTest.java:328:86:328:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:329:80:329:87 | source(...) : String | Log4jJndiInjectionTest.java:329:71:329:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:330:65:330:72 | source(...) : String | Log4jJndiInjectionTest.java:330:56:330:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:331:50:331:57 | source(...) : String | Log4jJndiInjectionTest.java:331:41:331:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:332:125:332:132 | source(...) : String | Log4jJndiInjectionTest.java:332:116:332:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:333:110:333:117 | source(...) : String | Log4jJndiInjectionTest.java:333:101:333:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:334:95:334:102 | source(...) : String | Log4jJndiInjectionTest.java:334:86:334:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:335:80:335:87 | source(...) : String | Log4jJndiInjectionTest.java:335:71:335:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:336:65:336:72 | source(...) : String | Log4jJndiInjectionTest.java:336:56:336:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:337:50:337:57 | source(...) : String | Log4jJndiInjectionTest.java:337:41:337:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:338:140:338:147 | source(...) : String | Log4jJndiInjectionTest.java:338:131:338:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:339:125:339:132 | source(...) : String | Log4jJndiInjectionTest.java:339:116:339:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:340:110:340:117 | source(...) : String | Log4jJndiInjectionTest.java:340:101:340:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:341:95:341:102 | source(...) : String | Log4jJndiInjectionTest.java:341:86:341:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:342:80:342:87 | source(...) : String | Log4jJndiInjectionTest.java:342:71:342:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:343:65:343:72 | source(...) : String | Log4jJndiInjectionTest.java:343:56:343:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:344:50:344:57 | source(...) : String | Log4jJndiInjectionTest.java:344:41:344:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:345:155:345:162 | source(...) : String | Log4jJndiInjectionTest.java:345:146:345:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:346:140:346:147 | source(...) : String | Log4jJndiInjectionTest.java:346:131:346:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:347:125:347:132 | source(...) : String | Log4jJndiInjectionTest.java:347:116:347:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:348:110:348:117 | source(...) : String | Log4jJndiInjectionTest.java:348:101:348:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:349:95:349:102 | source(...) : String | Log4jJndiInjectionTest.java:349:86:349:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:350:80:350:87 | source(...) : String | Log4jJndiInjectionTest.java:350:71:350:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:351:65:351:72 | source(...) : String | Log4jJndiInjectionTest.java:351:56:351:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:352:50:352:57 | source(...) : String | Log4jJndiInjectionTest.java:352:41:352:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:353:170:353:177 | source(...) : String | Log4jJndiInjectionTest.java:353:161:353:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:354:155:354:162 | source(...) : String | Log4jJndiInjectionTest.java:354:146:354:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:355:140:355:147 | source(...) : String | Log4jJndiInjectionTest.java:355:131:355:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:356:125:356:132 | source(...) : String | Log4jJndiInjectionTest.java:356:116:356:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:357:110:357:117 | source(...) : String | Log4jJndiInjectionTest.java:357:101:357:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:358:95:358:102 | source(...) : String | Log4jJndiInjectionTest.java:358:86:358:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:359:80:359:87 | source(...) : String | Log4jJndiInjectionTest.java:359:71:359:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:360:65:360:72 | source(...) : String | Log4jJndiInjectionTest.java:360:56:360:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:361:50:361:57 | source(...) : String | Log4jJndiInjectionTest.java:361:41:361:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:362:185:362:192 | source(...) : String | Log4jJndiInjectionTest.java:362:176:362:192 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:363:170:363:177 | source(...) : String | Log4jJndiInjectionTest.java:363:161:363:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:364:155:364:162 | source(...) : String | Log4jJndiInjectionTest.java:364:146:364:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:365:140:365:147 | source(...) : String | Log4jJndiInjectionTest.java:365:131:365:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:366:125:366:132 | source(...) : String | Log4jJndiInjectionTest.java:366:116:366:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:367:110:367:117 | source(...) : String | Log4jJndiInjectionTest.java:367:101:367:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:368:95:368:102 | source(...) : String | Log4jJndiInjectionTest.java:368:86:368:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:369:80:369:87 | source(...) : String | Log4jJndiInjectionTest.java:369:71:369:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:370:65:370:72 | source(...) : String | Log4jJndiInjectionTest.java:370:56:370:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:371:50:371:57 | source(...) : String | Log4jJndiInjectionTest.java:371:41:371:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:372:50:372:57 | source(...) : String | Log4jJndiInjectionTest.java:372:41:372:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:373:70:373:77 | source(...) : String | Log4jJndiInjectionTest.java:373:56:373:77 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:374:50:374:57 | source(...) : String | Log4jJndiInjectionTest.java:374:41:374:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:375:55:375:62 | source(...) : String | Log4jJndiInjectionTest.java:375:41:375:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:376:55:376:62 | source(...) : String | Log4jJndiInjectionTest.java:376:41:376:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:377:44:377:51 | source(...) : String | Log4jJndiInjectionTest.java:377:26:377:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:378:44:378:51 | source(...) : String | Log4jJndiInjectionTest.java:378:26:378:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:379:36:379:43 | source(...) : String | Log4jJndiInjectionTest.java:379:26:379:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:380:36:380:43 | source(...) : String | Log4jJndiInjectionTest.java:380:26:380:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:383:35:383:42 | source(...) : String | Log4jJndiInjectionTest.java:383:26:383:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:384:35:384:42 | source(...) : String | Log4jJndiInjectionTest.java:384:26:384:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:385:41:385:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:385:41:385:63 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:385:55:385:62 | source(...) : String | Log4jJndiInjectionTest.java:385:41:385:63 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:386:50:386:57 | source(...) : String | Log4jJndiInjectionTest.java:386:41:386:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:387:35:387:42 | source(...) : String | Log4jJndiInjectionTest.java:387:26:387:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:388:65:388:72 | source(...) : String | Log4jJndiInjectionTest.java:388:56:388:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:389:50:389:57 | source(...) : String | Log4jJndiInjectionTest.java:389:41:389:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:390:35:390:42 | source(...) : String | Log4jJndiInjectionTest.java:390:26:390:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:391:80:391:87 | source(...) : String | Log4jJndiInjectionTest.java:391:71:391:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:392:65:392:72 | source(...) : String | Log4jJndiInjectionTest.java:392:56:392:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:393:50:393:57 | source(...) : String | Log4jJndiInjectionTest.java:393:41:393:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:394:35:394:42 | source(...) : String | Log4jJndiInjectionTest.java:394:26:394:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:395:95:395:102 | source(...) : String | Log4jJndiInjectionTest.java:395:86:395:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:396:80:396:87 | source(...) : String | Log4jJndiInjectionTest.java:396:71:396:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:397:65:397:72 | source(...) : String | Log4jJndiInjectionTest.java:397:56:397:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:398:50:398:57 | source(...) : String | Log4jJndiInjectionTest.java:398:41:398:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:399:35:399:42 | source(...) : String | Log4jJndiInjectionTest.java:399:26:399:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:400:110:400:117 | source(...) : String | Log4jJndiInjectionTest.java:400:101:400:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:401:95:401:102 | source(...) : String | Log4jJndiInjectionTest.java:401:86:401:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:402:80:402:87 | source(...) : String | Log4jJndiInjectionTest.java:402:71:402:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:403:65:403:72 | source(...) : String | Log4jJndiInjectionTest.java:403:56:403:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:404:50:404:57 | source(...) : String | Log4jJndiInjectionTest.java:404:41:404:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:405:35:405:42 | source(...) : String | Log4jJndiInjectionTest.java:405:26:405:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:406:125:406:132 | source(...) : String | Log4jJndiInjectionTest.java:406:116:406:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:407:110:407:117 | source(...) : String | Log4jJndiInjectionTest.java:407:101:407:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:408:95:408:102 | source(...) : String | Log4jJndiInjectionTest.java:408:86:408:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:409:80:409:87 | source(...) : String | Log4jJndiInjectionTest.java:409:71:409:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:410:65:410:72 | source(...) : String | Log4jJndiInjectionTest.java:410:56:410:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:411:50:411:57 | source(...) : String | Log4jJndiInjectionTest.java:411:41:411:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:412:35:412:42 | source(...) : String | Log4jJndiInjectionTest.java:412:26:412:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:413:140:413:147 | source(...) : String | Log4jJndiInjectionTest.java:413:131:413:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:414:125:414:132 | source(...) : String | Log4jJndiInjectionTest.java:414:116:414:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:415:110:415:117 | source(...) : String | Log4jJndiInjectionTest.java:415:101:415:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:416:95:416:102 | source(...) : String | Log4jJndiInjectionTest.java:416:86:416:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:417:80:417:87 | source(...) : String | Log4jJndiInjectionTest.java:417:71:417:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:418:65:418:72 | source(...) : String | Log4jJndiInjectionTest.java:418:56:418:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:419:50:419:57 | source(...) : String | Log4jJndiInjectionTest.java:419:41:419:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:420:35:420:42 | source(...) : String | Log4jJndiInjectionTest.java:420:26:420:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:421:155:421:162 | source(...) : String | Log4jJndiInjectionTest.java:421:146:421:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:422:140:422:147 | source(...) : String | Log4jJndiInjectionTest.java:422:131:422:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:423:125:423:132 | source(...) : String | Log4jJndiInjectionTest.java:423:116:423:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:424:110:424:117 | source(...) : String | Log4jJndiInjectionTest.java:424:101:424:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:425:95:425:102 | source(...) : String | Log4jJndiInjectionTest.java:425:86:425:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:426:80:426:87 | source(...) : String | Log4jJndiInjectionTest.java:426:71:426:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:427:65:427:72 | source(...) : String | Log4jJndiInjectionTest.java:427:56:427:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:428:50:428:57 | source(...) : String | Log4jJndiInjectionTest.java:428:41:428:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:429:35:429:42 | source(...) : String | Log4jJndiInjectionTest.java:429:26:429:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:430:170:430:177 | source(...) : String | Log4jJndiInjectionTest.java:430:161:430:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:431:155:431:162 | source(...) : String | Log4jJndiInjectionTest.java:431:146:431:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:432:140:432:147 | source(...) : String | Log4jJndiInjectionTest.java:432:131:432:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:433:125:433:132 | source(...) : String | Log4jJndiInjectionTest.java:433:116:433:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:434:110:434:117 | source(...) : String | Log4jJndiInjectionTest.java:434:101:434:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:435:95:435:102 | source(...) : String | Log4jJndiInjectionTest.java:435:86:435:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:436:80:436:87 | source(...) : String | Log4jJndiInjectionTest.java:436:71:436:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:437:65:437:72 | source(...) : String | Log4jJndiInjectionTest.java:437:56:437:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:438:50:438:57 | source(...) : String | Log4jJndiInjectionTest.java:438:41:438:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:439:35:439:42 | source(...) : String | Log4jJndiInjectionTest.java:439:26:439:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:440:35:440:42 | source(...) : String | Log4jJndiInjectionTest.java:440:26:440:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:441:55:441:62 | source(...) : String | Log4jJndiInjectionTest.java:441:41:441:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:442:35:442:42 | source(...) : String | Log4jJndiInjectionTest.java:442:26:442:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:443:40:443:47 | source(...) : String | Log4jJndiInjectionTest.java:443:26:443:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:444:40:444:47 | source(...) : String | Log4jJndiInjectionTest.java:444:26:444:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:445:40:445:47 | source(...) : String | Log4jJndiInjectionTest.java:445:25:445:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:446:40:446:47 | source(...) : String | Log4jJndiInjectionTest.java:446:25:446:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:447:55:447:62 | source(...) : String | Log4jJndiInjectionTest.java:447:40:447:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:448:55:448:62 | source(...) : String | Log4jJndiInjectionTest.java:448:40:448:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:449:50:449:57 | source(...) : String | Log4jJndiInjectionTest.java:449:40:449:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:450:58:450:65 | source(...) : String | Log4jJndiInjectionTest.java:450:40:450:65 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:451:58:451:65 | source(...) : String | Log4jJndiInjectionTest.java:451:40:451:65 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:453:49:453:56 | source(...) : String | Log4jJndiInjectionTest.java:453:40:453:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:454:49:454:56 | source(...) : String | Log4jJndiInjectionTest.java:454:40:454:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:455:55:455:77 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:455:55:455:77 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:455:69:455:76 | source(...) : String | Log4jJndiInjectionTest.java:455:55:455:77 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:456:64:456:71 | source(...) : String | Log4jJndiInjectionTest.java:456:55:456:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:457:49:457:56 | source(...) : String | Log4jJndiInjectionTest.java:457:40:457:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:458:79:458:86 | source(...) : String | Log4jJndiInjectionTest.java:458:70:458:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:459:64:459:71 | source(...) : String | Log4jJndiInjectionTest.java:459:55:459:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:460:49:460:56 | source(...) : String | Log4jJndiInjectionTest.java:460:40:460:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:461:94:461:101 | source(...) : String | Log4jJndiInjectionTest.java:461:85:461:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:462:79:462:86 | source(...) : String | Log4jJndiInjectionTest.java:462:70:462:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:463:64:463:71 | source(...) : String | Log4jJndiInjectionTest.java:463:55:463:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:464:49:464:56 | source(...) : String | Log4jJndiInjectionTest.java:464:40:464:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:465:109:465:116 | source(...) : String | Log4jJndiInjectionTest.java:465:100:465:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:466:94:466:101 | source(...) : String | Log4jJndiInjectionTest.java:466:85:466:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:467:79:467:86 | source(...) : String | Log4jJndiInjectionTest.java:467:70:467:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:468:64:468:71 | source(...) : String | Log4jJndiInjectionTest.java:468:55:468:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:469:49:469:56 | source(...) : String | Log4jJndiInjectionTest.java:469:40:469:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:470:124:470:131 | source(...) : String | Log4jJndiInjectionTest.java:470:115:470:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:471:109:471:116 | source(...) : String | Log4jJndiInjectionTest.java:471:100:471:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:472:94:472:101 | source(...) : String | Log4jJndiInjectionTest.java:472:85:472:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:473:79:473:86 | source(...) : String | Log4jJndiInjectionTest.java:473:70:473:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:474:64:474:71 | source(...) : String | Log4jJndiInjectionTest.java:474:55:474:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:475:49:475:56 | source(...) : String | Log4jJndiInjectionTest.java:475:40:475:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:476:139:476:146 | source(...) : String | Log4jJndiInjectionTest.java:476:130:476:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:477:124:477:131 | source(...) : String | Log4jJndiInjectionTest.java:477:115:477:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:478:109:478:116 | source(...) : String | Log4jJndiInjectionTest.java:478:100:478:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:479:94:479:101 | source(...) : String | Log4jJndiInjectionTest.java:479:85:479:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:480:79:480:86 | source(...) : String | Log4jJndiInjectionTest.java:480:70:480:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:481:64:481:71 | source(...) : String | Log4jJndiInjectionTest.java:481:55:481:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:482:49:482:56 | source(...) : String | Log4jJndiInjectionTest.java:482:40:482:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:483:154:483:161 | source(...) : String | Log4jJndiInjectionTest.java:483:145:483:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:484:139:484:146 | source(...) : String | Log4jJndiInjectionTest.java:484:130:484:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:485:124:485:131 | source(...) : String | Log4jJndiInjectionTest.java:485:115:485:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:486:109:486:116 | source(...) : String | Log4jJndiInjectionTest.java:486:100:486:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:487:94:487:101 | source(...) : String | Log4jJndiInjectionTest.java:487:85:487:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:488:79:488:86 | source(...) : String | Log4jJndiInjectionTest.java:488:70:488:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:489:64:489:71 | source(...) : String | Log4jJndiInjectionTest.java:489:55:489:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:490:49:490:56 | source(...) : String | Log4jJndiInjectionTest.java:490:40:490:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:491:169:491:176 | source(...) : String | Log4jJndiInjectionTest.java:491:160:491:176 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:492:154:492:161 | source(...) : String | Log4jJndiInjectionTest.java:492:145:492:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:493:139:493:146 | source(...) : String | Log4jJndiInjectionTest.java:493:130:493:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:494:124:494:131 | source(...) : String | Log4jJndiInjectionTest.java:494:115:494:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:495:109:495:116 | source(...) : String | Log4jJndiInjectionTest.java:495:100:495:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:496:94:496:101 | source(...) : String | Log4jJndiInjectionTest.java:496:85:496:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:497:79:497:86 | source(...) : String | Log4jJndiInjectionTest.java:497:70:497:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:498:64:498:71 | source(...) : String | Log4jJndiInjectionTest.java:498:55:498:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:499:49:499:56 | source(...) : String | Log4jJndiInjectionTest.java:499:40:499:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:500:184:500:191 | source(...) : String | Log4jJndiInjectionTest.java:500:175:500:191 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:501:169:501:176 | source(...) : String | Log4jJndiInjectionTest.java:501:160:501:176 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:502:154:502:161 | source(...) : String | Log4jJndiInjectionTest.java:502:145:502:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:503:139:503:146 | source(...) : String | Log4jJndiInjectionTest.java:503:130:503:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:504:124:504:131 | source(...) : String | Log4jJndiInjectionTest.java:504:115:504:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:505:109:505:116 | source(...) : String | Log4jJndiInjectionTest.java:505:100:505:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:506:94:506:101 | source(...) : String | Log4jJndiInjectionTest.java:506:85:506:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:507:79:507:86 | source(...) : String | Log4jJndiInjectionTest.java:507:70:507:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:508:64:508:71 | source(...) : String | Log4jJndiInjectionTest.java:508:55:508:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:509:49:509:56 | source(...) : String | Log4jJndiInjectionTest.java:509:40:509:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:510:49:510:56 | source(...) : String | Log4jJndiInjectionTest.java:510:40:510:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:511:69:511:76 | source(...) : String | Log4jJndiInjectionTest.java:511:55:511:76 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:512:49:512:56 | source(...) : String | Log4jJndiInjectionTest.java:512:40:512:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:513:54:513:61 | source(...) : String | Log4jJndiInjectionTest.java:513:40:513:61 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:514:54:514:61 | source(...) : String | Log4jJndiInjectionTest.java:514:40:514:61 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:515:43:515:50 | source(...) : String | Log4jJndiInjectionTest.java:515:25:515:50 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:516:43:516:50 | source(...) : String | Log4jJndiInjectionTest.java:516:25:516:50 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:517:35:517:42 | source(...) : String | Log4jJndiInjectionTest.java:517:25:517:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:518:35:518:42 | source(...) : String | Log4jJndiInjectionTest.java:518:25:518:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:521:34:521:41 | source(...) : String | Log4jJndiInjectionTest.java:521:25:521:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:522:34:522:41 | source(...) : String | Log4jJndiInjectionTest.java:522:25:522:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:523:40:523:62 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:523:40:523:62 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:523:54:523:61 | source(...) : String | Log4jJndiInjectionTest.java:523:40:523:62 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:524:49:524:56 | source(...) : String | Log4jJndiInjectionTest.java:524:40:524:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:525:34:525:41 | source(...) : String | Log4jJndiInjectionTest.java:525:25:525:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:526:64:526:71 | source(...) : String | Log4jJndiInjectionTest.java:526:55:526:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:527:49:527:56 | source(...) : String | Log4jJndiInjectionTest.java:527:40:527:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:528:34:528:41 | source(...) : String | Log4jJndiInjectionTest.java:528:25:528:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:529:79:529:86 | source(...) : String | Log4jJndiInjectionTest.java:529:70:529:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:530:64:530:71 | source(...) : String | Log4jJndiInjectionTest.java:530:55:530:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:531:49:531:56 | source(...) : String | Log4jJndiInjectionTest.java:531:40:531:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:532:34:532:41 | source(...) : String | Log4jJndiInjectionTest.java:532:25:532:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:533:94:533:101 | source(...) : String | Log4jJndiInjectionTest.java:533:85:533:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:534:79:534:86 | source(...) : String | Log4jJndiInjectionTest.java:534:70:534:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:535:64:535:71 | source(...) : String | Log4jJndiInjectionTest.java:535:55:535:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:536:49:536:56 | source(...) : String | Log4jJndiInjectionTest.java:536:40:536:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:537:34:537:41 | source(...) : String | Log4jJndiInjectionTest.java:537:25:537:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:538:109:538:116 | source(...) : String | Log4jJndiInjectionTest.java:538:100:538:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:539:94:539:101 | source(...) : String | Log4jJndiInjectionTest.java:539:85:539:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:540:79:540:86 | source(...) : String | Log4jJndiInjectionTest.java:540:70:540:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:541:64:541:71 | source(...) : String | Log4jJndiInjectionTest.java:541:55:541:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:542:49:542:56 | source(...) : String | Log4jJndiInjectionTest.java:542:40:542:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:543:34:543:41 | source(...) : String | Log4jJndiInjectionTest.java:543:25:543:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:544:124:544:131 | source(...) : String | Log4jJndiInjectionTest.java:544:115:544:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:545:109:545:116 | source(...) : String | Log4jJndiInjectionTest.java:545:100:545:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:546:94:546:101 | source(...) : String | Log4jJndiInjectionTest.java:546:85:546:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:547:79:547:86 | source(...) : String | Log4jJndiInjectionTest.java:547:70:547:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:548:64:548:71 | source(...) : String | Log4jJndiInjectionTest.java:548:55:548:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:549:49:549:56 | source(...) : String | Log4jJndiInjectionTest.java:549:40:549:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:550:34:550:41 | source(...) : String | Log4jJndiInjectionTest.java:550:25:550:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:551:139:551:146 | source(...) : String | Log4jJndiInjectionTest.java:551:130:551:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:552:124:552:131 | source(...) : String | Log4jJndiInjectionTest.java:552:115:552:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:553:109:553:116 | source(...) : String | Log4jJndiInjectionTest.java:553:100:553:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:554:94:554:101 | source(...) : String | Log4jJndiInjectionTest.java:554:85:554:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:555:79:555:86 | source(...) : String | Log4jJndiInjectionTest.java:555:70:555:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:556:64:556:71 | source(...) : String | Log4jJndiInjectionTest.java:556:55:556:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:557:49:557:56 | source(...) : String | Log4jJndiInjectionTest.java:557:40:557:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:558:34:558:41 | source(...) : String | Log4jJndiInjectionTest.java:558:25:558:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:559:154:559:161 | source(...) : String | Log4jJndiInjectionTest.java:559:145:559:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:560:139:560:146 | source(...) : String | Log4jJndiInjectionTest.java:560:130:560:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:561:124:561:131 | source(...) : String | Log4jJndiInjectionTest.java:561:115:561:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:562:109:562:116 | source(...) : String | Log4jJndiInjectionTest.java:562:100:562:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:563:94:563:101 | source(...) : String | Log4jJndiInjectionTest.java:563:85:563:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:564:79:564:86 | source(...) : String | Log4jJndiInjectionTest.java:564:70:564:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:565:64:565:71 | source(...) : String | Log4jJndiInjectionTest.java:565:55:565:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:566:49:566:56 | source(...) : String | Log4jJndiInjectionTest.java:566:40:566:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:567:34:567:41 | source(...) : String | Log4jJndiInjectionTest.java:567:25:567:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:568:169:568:176 | source(...) : String | Log4jJndiInjectionTest.java:568:160:568:176 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:569:154:569:161 | source(...) : String | Log4jJndiInjectionTest.java:569:145:569:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:570:139:570:146 | source(...) : String | Log4jJndiInjectionTest.java:570:130:570:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:571:124:571:131 | source(...) : String | Log4jJndiInjectionTest.java:571:115:571:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:572:109:572:116 | source(...) : String | Log4jJndiInjectionTest.java:572:100:572:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:573:94:573:101 | source(...) : String | Log4jJndiInjectionTest.java:573:85:573:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:574:79:574:86 | source(...) : String | Log4jJndiInjectionTest.java:574:70:574:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:575:64:575:71 | source(...) : String | Log4jJndiInjectionTest.java:575:55:575:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:576:49:576:56 | source(...) : String | Log4jJndiInjectionTest.java:576:40:576:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:577:34:577:41 | source(...) : String | Log4jJndiInjectionTest.java:577:25:577:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:578:34:578:41 | source(...) : String | Log4jJndiInjectionTest.java:578:25:578:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:579:54:579:61 | source(...) : String | Log4jJndiInjectionTest.java:579:40:579:61 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:580:34:580:41 | source(...) : String | Log4jJndiInjectionTest.java:580:25:580:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:581:39:581:46 | source(...) : String | Log4jJndiInjectionTest.java:581:25:581:46 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:582:39:582:46 | source(...) : String | Log4jJndiInjectionTest.java:582:25:582:46 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:583:53:583:60 | source(...) : String | Log4jJndiInjectionTest.java:583:38:583:60 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:584:53:584:60 | source(...) : String | Log4jJndiInjectionTest.java:584:38:584:60 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:585:68:585:75 | source(...) : String | Log4jJndiInjectionTest.java:585:53:585:75 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:586:68:586:75 | source(...) : String | Log4jJndiInjectionTest.java:586:53:586:75 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:587:63:587:70 | source(...) : String | Log4jJndiInjectionTest.java:587:53:587:70 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:588:71:588:78 | source(...) : String | Log4jJndiInjectionTest.java:588:53:588:78 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:589:71:589:78 | source(...) : String | Log4jJndiInjectionTest.java:589:53:589:78 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:591:62:591:69 | source(...) : String | Log4jJndiInjectionTest.java:591:53:591:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:592:62:592:69 | source(...) : String | Log4jJndiInjectionTest.java:592:53:592:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:593:68:593:90 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:593:68:593:90 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:593:82:593:89 | source(...) : String | Log4jJndiInjectionTest.java:593:68:593:90 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:594:77:594:84 | source(...) : String | Log4jJndiInjectionTest.java:594:68:594:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:595:62:595:69 | source(...) : String | Log4jJndiInjectionTest.java:595:53:595:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:596:92:596:99 | source(...) : String | Log4jJndiInjectionTest.java:596:83:596:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:597:77:597:84 | source(...) : String | Log4jJndiInjectionTest.java:597:68:597:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:598:62:598:69 | source(...) : String | Log4jJndiInjectionTest.java:598:53:598:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:599:107:599:114 | source(...) : String | Log4jJndiInjectionTest.java:599:98:599:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:600:92:600:99 | source(...) : String | Log4jJndiInjectionTest.java:600:83:600:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:601:77:601:84 | source(...) : String | Log4jJndiInjectionTest.java:601:68:601:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:602:62:602:69 | source(...) : String | Log4jJndiInjectionTest.java:602:53:602:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:603:122:603:129 | source(...) : String | Log4jJndiInjectionTest.java:603:113:603:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:604:107:604:114 | source(...) : String | Log4jJndiInjectionTest.java:604:98:604:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:605:92:605:99 | source(...) : String | Log4jJndiInjectionTest.java:605:83:605:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:606:77:606:84 | source(...) : String | Log4jJndiInjectionTest.java:606:68:606:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:607:62:607:69 | source(...) : String | Log4jJndiInjectionTest.java:607:53:607:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:608:137:608:144 | source(...) : String | Log4jJndiInjectionTest.java:608:128:608:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:609:122:609:129 | source(...) : String | Log4jJndiInjectionTest.java:609:113:609:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:610:107:610:114 | source(...) : String | Log4jJndiInjectionTest.java:610:98:610:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:611:92:611:99 | source(...) : String | Log4jJndiInjectionTest.java:611:83:611:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:612:77:612:84 | source(...) : String | Log4jJndiInjectionTest.java:612:68:612:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:613:62:613:69 | source(...) : String | Log4jJndiInjectionTest.java:613:53:613:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:614:152:614:159 | source(...) : String | Log4jJndiInjectionTest.java:614:143:614:159 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:615:137:615:144 | source(...) : String | Log4jJndiInjectionTest.java:615:128:615:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:616:122:616:129 | source(...) : String | Log4jJndiInjectionTest.java:616:113:616:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:617:107:617:114 | source(...) : String | Log4jJndiInjectionTest.java:617:98:617:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:618:92:618:99 | source(...) : String | Log4jJndiInjectionTest.java:618:83:618:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:619:77:619:84 | source(...) : String | Log4jJndiInjectionTest.java:619:68:619:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:620:62:620:69 | source(...) : String | Log4jJndiInjectionTest.java:620:53:620:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:621:167:621:174 | source(...) : String | Log4jJndiInjectionTest.java:621:158:621:174 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:622:152:622:159 | source(...) : String | Log4jJndiInjectionTest.java:622:143:622:159 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:623:137:623:144 | source(...) : String | Log4jJndiInjectionTest.java:623:128:623:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:624:122:624:129 | source(...) : String | Log4jJndiInjectionTest.java:624:113:624:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:625:107:625:114 | source(...) : String | Log4jJndiInjectionTest.java:625:98:625:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:626:92:626:99 | source(...) : String | Log4jJndiInjectionTest.java:626:83:626:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:627:77:627:84 | source(...) : String | Log4jJndiInjectionTest.java:627:68:627:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:628:62:628:69 | source(...) : String | Log4jJndiInjectionTest.java:628:53:628:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:629:182:629:189 | source(...) : String | Log4jJndiInjectionTest.java:629:173:629:189 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:630:167:630:174 | source(...) : String | Log4jJndiInjectionTest.java:630:158:630:174 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:631:152:631:159 | source(...) : String | Log4jJndiInjectionTest.java:631:143:631:159 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:632:137:632:144 | source(...) : String | Log4jJndiInjectionTest.java:632:128:632:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:633:122:633:129 | source(...) : String | Log4jJndiInjectionTest.java:633:113:633:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:634:107:634:114 | source(...) : String | Log4jJndiInjectionTest.java:634:98:634:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:635:92:635:99 | source(...) : String | Log4jJndiInjectionTest.java:635:83:635:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:636:77:636:84 | source(...) : String | Log4jJndiInjectionTest.java:636:68:636:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:637:62:637:69 | source(...) : String | Log4jJndiInjectionTest.java:637:53:637:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:638:197:638:204 | source(...) : String | Log4jJndiInjectionTest.java:638:188:638:204 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:639:182:639:189 | source(...) : String | Log4jJndiInjectionTest.java:639:173:639:189 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:640:167:640:174 | source(...) : String | Log4jJndiInjectionTest.java:640:158:640:174 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:641:152:641:159 | source(...) : String | Log4jJndiInjectionTest.java:641:143:641:159 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:642:137:642:144 | source(...) : String | Log4jJndiInjectionTest.java:642:128:642:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:643:122:643:129 | source(...) : String | Log4jJndiInjectionTest.java:643:113:643:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:644:107:644:114 | source(...) : String | Log4jJndiInjectionTest.java:644:98:644:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:645:92:645:99 | source(...) : String | Log4jJndiInjectionTest.java:645:83:645:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:646:77:646:84 | source(...) : String | Log4jJndiInjectionTest.java:646:68:646:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:647:62:647:69 | source(...) : String | Log4jJndiInjectionTest.java:647:53:647:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:648:62:648:69 | source(...) : String | Log4jJndiInjectionTest.java:648:53:648:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:649:82:649:89 | source(...) : String | Log4jJndiInjectionTest.java:649:68:649:89 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:650:62:650:69 | source(...) : String | Log4jJndiInjectionTest.java:650:53:650:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:651:67:651:74 | source(...) : String | Log4jJndiInjectionTest.java:651:53:651:74 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:652:67:652:74 | source(...) : String | Log4jJndiInjectionTest.java:652:53:652:74 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:653:56:653:63 | source(...) : String | Log4jJndiInjectionTest.java:653:38:653:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:654:56:654:63 | source(...) : String | Log4jJndiInjectionTest.java:654:38:654:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:655:48:655:55 | source(...) : String | Log4jJndiInjectionTest.java:655:38:655:55 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:656:48:656:55 | source(...) : String | Log4jJndiInjectionTest.java:656:38:656:55 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:659:47:659:54 | source(...) : String | Log4jJndiInjectionTest.java:659:38:659:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:660:47:660:54 | source(...) : String | Log4jJndiInjectionTest.java:660:38:660:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:661:53:661:75 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:661:53:661:75 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:661:67:661:74 | source(...) : String | Log4jJndiInjectionTest.java:661:53:661:75 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:662:62:662:69 | source(...) : String | Log4jJndiInjectionTest.java:662:53:662:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:663:47:663:54 | source(...) : String | Log4jJndiInjectionTest.java:663:38:663:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:664:77:664:84 | source(...) : String | Log4jJndiInjectionTest.java:664:68:664:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:665:62:665:69 | source(...) : String | Log4jJndiInjectionTest.java:665:53:665:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:666:47:666:54 | source(...) : String | Log4jJndiInjectionTest.java:666:38:666:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:667:92:667:99 | source(...) : String | Log4jJndiInjectionTest.java:667:83:667:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:668:77:668:84 | source(...) : String | Log4jJndiInjectionTest.java:668:68:668:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:669:62:669:69 | source(...) : String | Log4jJndiInjectionTest.java:669:53:669:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:670:47:670:54 | source(...) : String | Log4jJndiInjectionTest.java:670:38:670:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:671:107:671:114 | source(...) : String | Log4jJndiInjectionTest.java:671:98:671:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:672:92:672:99 | source(...) : String | Log4jJndiInjectionTest.java:672:83:672:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:673:77:673:84 | source(...) : String | Log4jJndiInjectionTest.java:673:68:673:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:674:62:674:69 | source(...) : String | Log4jJndiInjectionTest.java:674:53:674:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:675:47:675:54 | source(...) : String | Log4jJndiInjectionTest.java:675:38:675:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:676:122:676:129 | source(...) : String | Log4jJndiInjectionTest.java:676:113:676:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:677:107:677:114 | source(...) : String | Log4jJndiInjectionTest.java:677:98:677:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:678:92:678:99 | source(...) : String | Log4jJndiInjectionTest.java:678:83:678:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:679:77:679:84 | source(...) : String | Log4jJndiInjectionTest.java:679:68:679:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:680:62:680:69 | source(...) : String | Log4jJndiInjectionTest.java:680:53:680:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:681:47:681:54 | source(...) : String | Log4jJndiInjectionTest.java:681:38:681:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:682:137:682:144 | source(...) : String | Log4jJndiInjectionTest.java:682:128:682:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:683:122:683:129 | source(...) : String | Log4jJndiInjectionTest.java:683:113:683:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:684:107:684:114 | source(...) : String | Log4jJndiInjectionTest.java:684:98:684:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:685:92:685:99 | source(...) : String | Log4jJndiInjectionTest.java:685:83:685:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:686:77:686:84 | source(...) : String | Log4jJndiInjectionTest.java:686:68:686:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:687:62:687:69 | source(...) : String | Log4jJndiInjectionTest.java:687:53:687:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:688:47:688:54 | source(...) : String | Log4jJndiInjectionTest.java:688:38:688:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:689:152:689:159 | source(...) : String | Log4jJndiInjectionTest.java:689:143:689:159 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:690:137:690:144 | source(...) : String | Log4jJndiInjectionTest.java:690:128:690:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:691:122:691:129 | source(...) : String | Log4jJndiInjectionTest.java:691:113:691:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:692:107:692:114 | source(...) : String | Log4jJndiInjectionTest.java:692:98:692:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:693:92:693:99 | source(...) : String | Log4jJndiInjectionTest.java:693:83:693:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:694:77:694:84 | source(...) : String | Log4jJndiInjectionTest.java:694:68:694:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:695:62:695:69 | source(...) : String | Log4jJndiInjectionTest.java:695:53:695:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:696:47:696:54 | source(...) : String | Log4jJndiInjectionTest.java:696:38:696:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:697:167:697:174 | source(...) : String | Log4jJndiInjectionTest.java:697:158:697:174 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:698:152:698:159 | source(...) : String | Log4jJndiInjectionTest.java:698:143:698:159 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:699:137:699:144 | source(...) : String | Log4jJndiInjectionTest.java:699:128:699:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:700:122:700:129 | source(...) : String | Log4jJndiInjectionTest.java:700:113:700:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:701:107:701:114 | source(...) : String | Log4jJndiInjectionTest.java:701:98:701:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:702:92:702:99 | source(...) : String | Log4jJndiInjectionTest.java:702:83:702:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:703:77:703:84 | source(...) : String | Log4jJndiInjectionTest.java:703:68:703:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:704:62:704:69 | source(...) : String | Log4jJndiInjectionTest.java:704:53:704:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:705:47:705:54 | source(...) : String | Log4jJndiInjectionTest.java:705:38:705:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:706:182:706:189 | source(...) : String | Log4jJndiInjectionTest.java:706:173:706:189 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:707:167:707:174 | source(...) : String | Log4jJndiInjectionTest.java:707:158:707:174 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:708:152:708:159 | source(...) : String | Log4jJndiInjectionTest.java:708:143:708:159 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:709:137:709:144 | source(...) : String | Log4jJndiInjectionTest.java:709:128:709:144 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:710:122:710:129 | source(...) : String | Log4jJndiInjectionTest.java:710:113:710:129 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:711:107:711:114 | source(...) : String | Log4jJndiInjectionTest.java:711:98:711:114 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:712:92:712:99 | source(...) : String | Log4jJndiInjectionTest.java:712:83:712:99 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:713:77:713:84 | source(...) : String | Log4jJndiInjectionTest.java:713:68:713:84 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:714:62:714:69 | source(...) : String | Log4jJndiInjectionTest.java:714:53:714:69 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:715:47:715:54 | source(...) : String | Log4jJndiInjectionTest.java:715:38:715:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:716:47:716:54 | source(...) : String | Log4jJndiInjectionTest.java:716:38:716:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:717:67:717:74 | source(...) : String | Log4jJndiInjectionTest.java:717:53:717:74 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:718:47:718:54 | source(...) : String | Log4jJndiInjectionTest.java:718:38:718:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:719:52:719:59 | source(...) : String | Log4jJndiInjectionTest.java:719:38:719:59 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:720:52:720:59 | source(...) : String | Log4jJndiInjectionTest.java:720:38:720:59 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:721:41:721:48 | source(...) : String | Log4jJndiInjectionTest.java:721:26:721:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:722:41:722:48 | source(...) : String | Log4jJndiInjectionTest.java:722:26:722:48 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:723:56:723:63 | source(...) : String | Log4jJndiInjectionTest.java:723:41:723:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:724:56:724:63 | source(...) : String | Log4jJndiInjectionTest.java:724:41:724:63 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:725:51:725:58 | source(...) : String | Log4jJndiInjectionTest.java:725:41:725:58 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:726:59:726:66 | source(...) : String | Log4jJndiInjectionTest.java:726:41:726:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:727:59:727:66 | source(...) : String | Log4jJndiInjectionTest.java:727:41:727:66 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:729:50:729:57 | source(...) : String | Log4jJndiInjectionTest.java:729:41:729:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:730:50:730:57 | source(...) : String | Log4jJndiInjectionTest.java:730:41:730:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:731:56:731:78 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:731:56:731:78 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:731:70:731:77 | source(...) : String | Log4jJndiInjectionTest.java:731:56:731:78 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:732:65:732:72 | source(...) : String | Log4jJndiInjectionTest.java:732:56:732:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:733:50:733:57 | source(...) : String | Log4jJndiInjectionTest.java:733:41:733:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:734:80:734:87 | source(...) : String | Log4jJndiInjectionTest.java:734:71:734:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:735:65:735:72 | source(...) : String | Log4jJndiInjectionTest.java:735:56:735:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:736:50:736:57 | source(...) : String | Log4jJndiInjectionTest.java:736:41:736:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:737:95:737:102 | source(...) : String | Log4jJndiInjectionTest.java:737:86:737:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:738:80:738:87 | source(...) : String | Log4jJndiInjectionTest.java:738:71:738:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:739:65:739:72 | source(...) : String | Log4jJndiInjectionTest.java:739:56:739:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:740:50:740:57 | source(...) : String | Log4jJndiInjectionTest.java:740:41:740:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:741:110:741:117 | source(...) : String | Log4jJndiInjectionTest.java:741:101:741:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:742:95:742:102 | source(...) : String | Log4jJndiInjectionTest.java:742:86:742:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:743:80:743:87 | source(...) : String | Log4jJndiInjectionTest.java:743:71:743:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:744:65:744:72 | source(...) : String | Log4jJndiInjectionTest.java:744:56:744:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:745:50:745:57 | source(...) : String | Log4jJndiInjectionTest.java:745:41:745:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:746:125:746:132 | source(...) : String | Log4jJndiInjectionTest.java:746:116:746:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:747:110:747:117 | source(...) : String | Log4jJndiInjectionTest.java:747:101:747:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:748:95:748:102 | source(...) : String | Log4jJndiInjectionTest.java:748:86:748:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:749:80:749:87 | source(...) : String | Log4jJndiInjectionTest.java:749:71:749:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:750:65:750:72 | source(...) : String | Log4jJndiInjectionTest.java:750:56:750:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:751:50:751:57 | source(...) : String | Log4jJndiInjectionTest.java:751:41:751:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:752:140:752:147 | source(...) : String | Log4jJndiInjectionTest.java:752:131:752:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:753:125:753:132 | source(...) : String | Log4jJndiInjectionTest.java:753:116:753:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:754:110:754:117 | source(...) : String | Log4jJndiInjectionTest.java:754:101:754:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:755:95:755:102 | source(...) : String | Log4jJndiInjectionTest.java:755:86:755:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:756:80:756:87 | source(...) : String | Log4jJndiInjectionTest.java:756:71:756:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:757:65:757:72 | source(...) : String | Log4jJndiInjectionTest.java:757:56:757:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:758:50:758:57 | source(...) : String | Log4jJndiInjectionTest.java:758:41:758:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:759:155:759:162 | source(...) : String | Log4jJndiInjectionTest.java:759:146:759:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:760:140:760:147 | source(...) : String | Log4jJndiInjectionTest.java:760:131:760:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:761:125:761:132 | source(...) : String | Log4jJndiInjectionTest.java:761:116:761:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:762:110:762:117 | source(...) : String | Log4jJndiInjectionTest.java:762:101:762:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:763:95:763:102 | source(...) : String | Log4jJndiInjectionTest.java:763:86:763:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:764:80:764:87 | source(...) : String | Log4jJndiInjectionTest.java:764:71:764:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:765:65:765:72 | source(...) : String | Log4jJndiInjectionTest.java:765:56:765:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:766:50:766:57 | source(...) : String | Log4jJndiInjectionTest.java:766:41:766:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:767:170:767:177 | source(...) : String | Log4jJndiInjectionTest.java:767:161:767:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:768:155:768:162 | source(...) : String | Log4jJndiInjectionTest.java:768:146:768:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:769:140:769:147 | source(...) : String | Log4jJndiInjectionTest.java:769:131:769:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:770:125:770:132 | source(...) : String | Log4jJndiInjectionTest.java:770:116:770:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:771:110:771:117 | source(...) : String | Log4jJndiInjectionTest.java:771:101:771:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:772:95:772:102 | source(...) : String | Log4jJndiInjectionTest.java:772:86:772:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:773:80:773:87 | source(...) : String | Log4jJndiInjectionTest.java:773:71:773:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:774:65:774:72 | source(...) : String | Log4jJndiInjectionTest.java:774:56:774:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:775:50:775:57 | source(...) : String | Log4jJndiInjectionTest.java:775:41:775:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:776:185:776:192 | source(...) : String | Log4jJndiInjectionTest.java:776:176:776:192 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:777:170:777:177 | source(...) : String | Log4jJndiInjectionTest.java:777:161:777:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:778:155:778:162 | source(...) : String | Log4jJndiInjectionTest.java:778:146:778:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:779:140:779:147 | source(...) : String | Log4jJndiInjectionTest.java:779:131:779:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:780:125:780:132 | source(...) : String | Log4jJndiInjectionTest.java:780:116:780:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:781:110:781:117 | source(...) : String | Log4jJndiInjectionTest.java:781:101:781:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:782:95:782:102 | source(...) : String | Log4jJndiInjectionTest.java:782:86:782:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:783:80:783:87 | source(...) : String | Log4jJndiInjectionTest.java:783:71:783:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:784:65:784:72 | source(...) : String | Log4jJndiInjectionTest.java:784:56:784:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:785:50:785:57 | source(...) : String | Log4jJndiInjectionTest.java:785:41:785:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:786:50:786:57 | source(...) : String | Log4jJndiInjectionTest.java:786:41:786:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:787:70:787:77 | source(...) : String | Log4jJndiInjectionTest.java:787:56:787:77 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:788:50:788:57 | source(...) : String | Log4jJndiInjectionTest.java:788:41:788:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:789:55:789:62 | source(...) : String | Log4jJndiInjectionTest.java:789:41:789:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:790:55:790:62 | source(...) : String | Log4jJndiInjectionTest.java:790:41:790:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:791:44:791:51 | source(...) : String | Log4jJndiInjectionTest.java:791:26:791:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:792:44:792:51 | source(...) : String | Log4jJndiInjectionTest.java:792:26:792:51 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:793:36:793:43 | source(...) : String | Log4jJndiInjectionTest.java:793:26:793:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:794:36:794:43 | source(...) : String | Log4jJndiInjectionTest.java:794:26:794:43 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:797:35:797:42 | source(...) : String | Log4jJndiInjectionTest.java:797:26:797:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:798:35:798:42 | source(...) : String | Log4jJndiInjectionTest.java:798:26:798:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:799:41:799:63 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:799:41:799:63 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:799:55:799:62 | source(...) : String | Log4jJndiInjectionTest.java:799:41:799:63 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:800:50:800:57 | source(...) : String | Log4jJndiInjectionTest.java:800:41:800:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:801:35:801:42 | source(...) : String | Log4jJndiInjectionTest.java:801:26:801:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:802:65:802:72 | source(...) : String | Log4jJndiInjectionTest.java:802:56:802:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:803:50:803:57 | source(...) : String | Log4jJndiInjectionTest.java:803:41:803:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:804:35:804:42 | source(...) : String | Log4jJndiInjectionTest.java:804:26:804:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:805:80:805:87 | source(...) : String | Log4jJndiInjectionTest.java:805:71:805:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:806:65:806:72 | source(...) : String | Log4jJndiInjectionTest.java:806:56:806:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:807:50:807:57 | source(...) : String | Log4jJndiInjectionTest.java:807:41:807:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:808:35:808:42 | source(...) : String | Log4jJndiInjectionTest.java:808:26:808:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:809:95:809:102 | source(...) : String | Log4jJndiInjectionTest.java:809:86:809:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:810:80:810:87 | source(...) : String | Log4jJndiInjectionTest.java:810:71:810:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:811:65:811:72 | source(...) : String | Log4jJndiInjectionTest.java:811:56:811:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:812:50:812:57 | source(...) : String | Log4jJndiInjectionTest.java:812:41:812:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:813:35:813:42 | source(...) : String | Log4jJndiInjectionTest.java:813:26:813:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:814:110:814:117 | source(...) : String | Log4jJndiInjectionTest.java:814:101:814:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:815:95:815:102 | source(...) : String | Log4jJndiInjectionTest.java:815:86:815:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:816:80:816:87 | source(...) : String | Log4jJndiInjectionTest.java:816:71:816:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:817:65:817:72 | source(...) : String | Log4jJndiInjectionTest.java:817:56:817:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:818:50:818:57 | source(...) : String | Log4jJndiInjectionTest.java:818:41:818:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:819:35:819:42 | source(...) : String | Log4jJndiInjectionTest.java:819:26:819:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:820:125:820:132 | source(...) : String | Log4jJndiInjectionTest.java:820:116:820:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:821:110:821:117 | source(...) : String | Log4jJndiInjectionTest.java:821:101:821:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:822:95:822:102 | source(...) : String | Log4jJndiInjectionTest.java:822:86:822:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:823:80:823:87 | source(...) : String | Log4jJndiInjectionTest.java:823:71:823:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:824:65:824:72 | source(...) : String | Log4jJndiInjectionTest.java:824:56:824:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:825:50:825:57 | source(...) : String | Log4jJndiInjectionTest.java:825:41:825:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:826:35:826:42 | source(...) : String | Log4jJndiInjectionTest.java:826:26:826:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:827:140:827:147 | source(...) : String | Log4jJndiInjectionTest.java:827:131:827:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:828:125:828:132 | source(...) : String | Log4jJndiInjectionTest.java:828:116:828:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:829:110:829:117 | source(...) : String | Log4jJndiInjectionTest.java:829:101:829:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:830:95:830:102 | source(...) : String | Log4jJndiInjectionTest.java:830:86:830:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:831:80:831:87 | source(...) : String | Log4jJndiInjectionTest.java:831:71:831:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:832:65:832:72 | source(...) : String | Log4jJndiInjectionTest.java:832:56:832:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:833:50:833:57 | source(...) : String | Log4jJndiInjectionTest.java:833:41:833:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:834:35:834:42 | source(...) : String | Log4jJndiInjectionTest.java:834:26:834:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:835:155:835:162 | source(...) : String | Log4jJndiInjectionTest.java:835:146:835:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:836:140:836:147 | source(...) : String | Log4jJndiInjectionTest.java:836:131:836:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:837:125:837:132 | source(...) : String | Log4jJndiInjectionTest.java:837:116:837:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:838:110:838:117 | source(...) : String | Log4jJndiInjectionTest.java:838:101:838:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:839:95:839:102 | source(...) : String | Log4jJndiInjectionTest.java:839:86:839:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:840:80:840:87 | source(...) : String | Log4jJndiInjectionTest.java:840:71:840:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:841:65:841:72 | source(...) : String | Log4jJndiInjectionTest.java:841:56:841:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:842:50:842:57 | source(...) : String | Log4jJndiInjectionTest.java:842:41:842:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:843:35:843:42 | source(...) : String | Log4jJndiInjectionTest.java:843:26:843:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:844:170:844:177 | source(...) : String | Log4jJndiInjectionTest.java:844:161:844:177 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:845:155:845:162 | source(...) : String | Log4jJndiInjectionTest.java:845:146:845:162 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:846:140:846:147 | source(...) : String | Log4jJndiInjectionTest.java:846:131:846:147 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:847:125:847:132 | source(...) : String | Log4jJndiInjectionTest.java:847:116:847:132 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:848:110:848:117 | source(...) : String | Log4jJndiInjectionTest.java:848:101:848:117 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:849:95:849:102 | source(...) : String | Log4jJndiInjectionTest.java:849:86:849:102 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:850:80:850:87 | source(...) : String | Log4jJndiInjectionTest.java:850:71:850:87 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:851:65:851:72 | source(...) : String | Log4jJndiInjectionTest.java:851:56:851:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:852:50:852:57 | source(...) : String | Log4jJndiInjectionTest.java:852:41:852:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:853:35:853:42 | source(...) : String | Log4jJndiInjectionTest.java:853:26:853:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:854:35:854:42 | source(...) : String | Log4jJndiInjectionTest.java:854:26:854:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:855:55:855:62 | source(...) : String | Log4jJndiInjectionTest.java:855:41:855:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:856:35:856:42 | source(...) : String | Log4jJndiInjectionTest.java:856:26:856:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:857:40:857:47 | source(...) : String | Log4jJndiInjectionTest.java:857:26:857:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:858:40:858:47 | source(...) : String | Log4jJndiInjectionTest.java:858:26:858:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:859:40:859:47 | source(...) : String | Log4jJndiInjectionTest.java:859:25:859:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:860:40:860:47 | source(...) : String | Log4jJndiInjectionTest.java:860:25:860:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:861:55:861:62 | source(...) : String | Log4jJndiInjectionTest.java:861:40:861:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:862:55:862:62 | source(...) : String | Log4jJndiInjectionTest.java:862:40:862:62 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:863:50:863:57 | source(...) : String | Log4jJndiInjectionTest.java:863:40:863:57 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:864:58:864:65 | source(...) : String | Log4jJndiInjectionTest.java:864:40:864:65 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:865:58:865:65 | source(...) : String | Log4jJndiInjectionTest.java:865:40:865:65 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:867:49:867:56 | source(...) : String | Log4jJndiInjectionTest.java:867:40:867:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:868:49:868:56 | source(...) : String | Log4jJndiInjectionTest.java:868:40:868:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:869:55:869:77 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:869:55:869:77 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:869:69:869:76 | source(...) : String | Log4jJndiInjectionTest.java:869:55:869:77 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:870:64:870:71 | source(...) : String | Log4jJndiInjectionTest.java:870:55:870:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:871:49:871:56 | source(...) : String | Log4jJndiInjectionTest.java:871:40:871:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:872:79:872:86 | source(...) : String | Log4jJndiInjectionTest.java:872:70:872:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:873:64:873:71 | source(...) : String | Log4jJndiInjectionTest.java:873:55:873:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:874:49:874:56 | source(...) : String | Log4jJndiInjectionTest.java:874:40:874:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:875:94:875:101 | source(...) : String | Log4jJndiInjectionTest.java:875:85:875:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:876:79:876:86 | source(...) : String | Log4jJndiInjectionTest.java:876:70:876:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:877:64:877:71 | source(...) : String | Log4jJndiInjectionTest.java:877:55:877:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:878:49:878:56 | source(...) : String | Log4jJndiInjectionTest.java:878:40:878:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:879:109:879:116 | source(...) : String | Log4jJndiInjectionTest.java:879:100:879:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:880:94:880:101 | source(...) : String | Log4jJndiInjectionTest.java:880:85:880:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:881:79:881:86 | source(...) : String | Log4jJndiInjectionTest.java:881:70:881:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:882:64:882:71 | source(...) : String | Log4jJndiInjectionTest.java:882:55:882:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:883:49:883:56 | source(...) : String | Log4jJndiInjectionTest.java:883:40:883:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:884:124:884:131 | source(...) : String | Log4jJndiInjectionTest.java:884:115:884:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:885:109:885:116 | source(...) : String | Log4jJndiInjectionTest.java:885:100:885:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:886:94:886:101 | source(...) : String | Log4jJndiInjectionTest.java:886:85:886:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:887:79:887:86 | source(...) : String | Log4jJndiInjectionTest.java:887:70:887:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:888:64:888:71 | source(...) : String | Log4jJndiInjectionTest.java:888:55:888:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:889:49:889:56 | source(...) : String | Log4jJndiInjectionTest.java:889:40:889:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:890:139:890:146 | source(...) : String | Log4jJndiInjectionTest.java:890:130:890:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:891:124:891:131 | source(...) : String | Log4jJndiInjectionTest.java:891:115:891:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:892:109:892:116 | source(...) : String | Log4jJndiInjectionTest.java:892:100:892:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:893:94:893:101 | source(...) : String | Log4jJndiInjectionTest.java:893:85:893:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:894:79:894:86 | source(...) : String | Log4jJndiInjectionTest.java:894:70:894:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:895:64:895:71 | source(...) : String | Log4jJndiInjectionTest.java:895:55:895:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:896:49:896:56 | source(...) : String | Log4jJndiInjectionTest.java:896:40:896:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:897:154:897:161 | source(...) : String | Log4jJndiInjectionTest.java:897:145:897:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:898:139:898:146 | source(...) : String | Log4jJndiInjectionTest.java:898:130:898:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:899:124:899:131 | source(...) : String | Log4jJndiInjectionTest.java:899:115:899:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:900:109:900:116 | source(...) : String | Log4jJndiInjectionTest.java:900:100:900:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:901:94:901:101 | source(...) : String | Log4jJndiInjectionTest.java:901:85:901:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:902:79:902:86 | source(...) : String | Log4jJndiInjectionTest.java:902:70:902:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:903:64:903:71 | source(...) : String | Log4jJndiInjectionTest.java:903:55:903:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:904:49:904:56 | source(...) : String | Log4jJndiInjectionTest.java:904:40:904:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:905:169:905:176 | source(...) : String | Log4jJndiInjectionTest.java:905:160:905:176 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:906:154:906:161 | source(...) : String | Log4jJndiInjectionTest.java:906:145:906:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:907:139:907:146 | source(...) : String | Log4jJndiInjectionTest.java:907:130:907:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:908:124:908:131 | source(...) : String | Log4jJndiInjectionTest.java:908:115:908:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:909:109:909:116 | source(...) : String | Log4jJndiInjectionTest.java:909:100:909:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:910:94:910:101 | source(...) : String | Log4jJndiInjectionTest.java:910:85:910:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:911:79:911:86 | source(...) : String | Log4jJndiInjectionTest.java:911:70:911:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:912:64:912:71 | source(...) : String | Log4jJndiInjectionTest.java:912:55:912:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:913:49:913:56 | source(...) : String | Log4jJndiInjectionTest.java:913:40:913:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:914:184:914:191 | source(...) : String | Log4jJndiInjectionTest.java:914:175:914:191 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:915:169:915:176 | source(...) : String | Log4jJndiInjectionTest.java:915:160:915:176 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:916:154:916:161 | source(...) : String | Log4jJndiInjectionTest.java:916:145:916:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:917:139:917:146 | source(...) : String | Log4jJndiInjectionTest.java:917:130:917:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:918:124:918:131 | source(...) : String | Log4jJndiInjectionTest.java:918:115:918:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:919:109:919:116 | source(...) : String | Log4jJndiInjectionTest.java:919:100:919:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:920:94:920:101 | source(...) : String | Log4jJndiInjectionTest.java:920:85:920:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:921:79:921:86 | source(...) : String | Log4jJndiInjectionTest.java:921:70:921:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:922:64:922:71 | source(...) : String | Log4jJndiInjectionTest.java:922:55:922:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:923:49:923:56 | source(...) : String | Log4jJndiInjectionTest.java:923:40:923:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:924:49:924:56 | source(...) : String | Log4jJndiInjectionTest.java:924:40:924:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:925:69:925:76 | source(...) : String | Log4jJndiInjectionTest.java:925:55:925:76 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:926:49:926:56 | source(...) : String | Log4jJndiInjectionTest.java:926:40:926:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:927:54:927:61 | source(...) : String | Log4jJndiInjectionTest.java:927:40:927:61 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:928:54:928:61 | source(...) : String | Log4jJndiInjectionTest.java:928:40:928:61 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:929:43:929:50 | source(...) : String | Log4jJndiInjectionTest.java:929:25:929:50 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:930:43:930:50 | source(...) : String | Log4jJndiInjectionTest.java:930:25:930:50 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:931:35:931:42 | source(...) : String | Log4jJndiInjectionTest.java:931:25:931:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:932:35:932:42 | source(...) : String | Log4jJndiInjectionTest.java:932:25:932:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:935:34:935:41 | source(...) : String | Log4jJndiInjectionTest.java:935:25:935:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:936:34:936:41 | source(...) : String | Log4jJndiInjectionTest.java:936:25:936:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:937:40:937:62 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:937:40:937:62 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:937:54:937:61 | source(...) : String | Log4jJndiInjectionTest.java:937:40:937:62 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:938:49:938:56 | source(...) : String | Log4jJndiInjectionTest.java:938:40:938:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:939:34:939:41 | source(...) : String | Log4jJndiInjectionTest.java:939:25:939:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:940:64:940:71 | source(...) : String | Log4jJndiInjectionTest.java:940:55:940:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:941:49:941:56 | source(...) : String | Log4jJndiInjectionTest.java:941:40:941:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:942:34:942:41 | source(...) : String | Log4jJndiInjectionTest.java:942:25:942:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:943:79:943:86 | source(...) : String | Log4jJndiInjectionTest.java:943:70:943:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:944:64:944:71 | source(...) : String | Log4jJndiInjectionTest.java:944:55:944:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:945:49:945:56 | source(...) : String | Log4jJndiInjectionTest.java:945:40:945:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:946:34:946:41 | source(...) : String | Log4jJndiInjectionTest.java:946:25:946:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:947:94:947:101 | source(...) : String | Log4jJndiInjectionTest.java:947:85:947:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:948:79:948:86 | source(...) : String | Log4jJndiInjectionTest.java:948:70:948:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:949:64:949:71 | source(...) : String | Log4jJndiInjectionTest.java:949:55:949:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:950:49:950:56 | source(...) : String | Log4jJndiInjectionTest.java:950:40:950:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:951:34:951:41 | source(...) : String | Log4jJndiInjectionTest.java:951:25:951:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:952:109:952:116 | source(...) : String | Log4jJndiInjectionTest.java:952:100:952:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:953:94:953:101 | source(...) : String | Log4jJndiInjectionTest.java:953:85:953:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:954:79:954:86 | source(...) : String | Log4jJndiInjectionTest.java:954:70:954:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:955:64:955:71 | source(...) : String | Log4jJndiInjectionTest.java:955:55:955:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:956:49:956:56 | source(...) : String | Log4jJndiInjectionTest.java:956:40:956:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:957:34:957:41 | source(...) : String | Log4jJndiInjectionTest.java:957:25:957:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:958:124:958:131 | source(...) : String | Log4jJndiInjectionTest.java:958:115:958:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:959:109:959:116 | source(...) : String | Log4jJndiInjectionTest.java:959:100:959:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:960:94:960:101 | source(...) : String | Log4jJndiInjectionTest.java:960:85:960:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:961:79:961:86 | source(...) : String | Log4jJndiInjectionTest.java:961:70:961:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:962:64:962:71 | source(...) : String | Log4jJndiInjectionTest.java:962:55:962:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:963:49:963:56 | source(...) : String | Log4jJndiInjectionTest.java:963:40:963:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:964:34:964:41 | source(...) : String | Log4jJndiInjectionTest.java:964:25:964:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:965:139:965:146 | source(...) : String | Log4jJndiInjectionTest.java:965:130:965:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:966:124:966:131 | source(...) : String | Log4jJndiInjectionTest.java:966:115:966:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:967:109:967:116 | source(...) : String | Log4jJndiInjectionTest.java:967:100:967:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:968:94:968:101 | source(...) : String | Log4jJndiInjectionTest.java:968:85:968:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:969:79:969:86 | source(...) : String | Log4jJndiInjectionTest.java:969:70:969:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:970:64:970:71 | source(...) : String | Log4jJndiInjectionTest.java:970:55:970:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:971:49:971:56 | source(...) : String | Log4jJndiInjectionTest.java:971:40:971:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:972:34:972:41 | source(...) : String | Log4jJndiInjectionTest.java:972:25:972:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:973:154:973:161 | source(...) : String | Log4jJndiInjectionTest.java:973:145:973:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:974:139:974:146 | source(...) : String | Log4jJndiInjectionTest.java:974:130:974:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:975:124:975:131 | source(...) : String | Log4jJndiInjectionTest.java:975:115:975:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:976:109:976:116 | source(...) : String | Log4jJndiInjectionTest.java:976:100:976:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:977:94:977:101 | source(...) : String | Log4jJndiInjectionTest.java:977:85:977:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:978:79:978:86 | source(...) : String | Log4jJndiInjectionTest.java:978:70:978:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:979:64:979:71 | source(...) : String | Log4jJndiInjectionTest.java:979:55:979:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:980:49:980:56 | source(...) : String | Log4jJndiInjectionTest.java:980:40:980:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:981:34:981:41 | source(...) : String | Log4jJndiInjectionTest.java:981:25:981:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:982:169:982:176 | source(...) : String | Log4jJndiInjectionTest.java:982:160:982:176 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:983:154:983:161 | source(...) : String | Log4jJndiInjectionTest.java:983:145:983:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:984:139:984:146 | source(...) : String | Log4jJndiInjectionTest.java:984:130:984:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:985:124:985:131 | source(...) : String | Log4jJndiInjectionTest.java:985:115:985:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:986:109:986:116 | source(...) : String | Log4jJndiInjectionTest.java:986:100:986:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:987:94:987:101 | source(...) : String | Log4jJndiInjectionTest.java:987:85:987:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:988:79:988:86 | source(...) : String | Log4jJndiInjectionTest.java:988:70:988:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:989:64:989:71 | source(...) : String | Log4jJndiInjectionTest.java:989:55:989:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:990:49:990:56 | source(...) : String | Log4jJndiInjectionTest.java:990:40:990:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:991:34:991:41 | source(...) : String | Log4jJndiInjectionTest.java:991:25:991:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:992:34:992:41 | source(...) : String | Log4jJndiInjectionTest.java:992:25:992:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:993:54:993:61 | source(...) : String | Log4jJndiInjectionTest.java:993:40:993:61 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:994:34:994:41 | source(...) : String | Log4jJndiInjectionTest.java:994:25:994:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:995:39:995:46 | source(...) : String | Log4jJndiInjectionTest.java:995:25:995:46 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:996:39:996:46 | source(...) : String | Log4jJndiInjectionTest.java:996:25:996:46 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:998:65:998:72 | source(...) : String | Log4jJndiInjectionTest.java:998:55:998:72 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:999:48:999:55 | source(...) : String | Log4jJndiInjectionTest.java:999:39:999:55 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1000:45:1000:67 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:1000:45:1000:67 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:1000:59:1000:66 | source(...) : String | Log4jJndiInjectionTest.java:1000:45:1000:67 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:1001:42:1001:49 | source(...) : String | Log4jJndiInjectionTest.java:1001:33:1001:49 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1002:39:1002:61 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:1002:39:1002:61 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:1002:53:1002:60 | source(...) : String | Log4jJndiInjectionTest.java:1002:39:1002:61 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:1020:40:1020:47 | source(...) : String | Log4jJndiInjectionTest.java:1020:25:1020:47 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1021:35:1021:42 | source(...) : String | Log4jJndiInjectionTest.java:1021:25:1021:42 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1023:34:1023:41 | source(...) : String | Log4jJndiInjectionTest.java:1023:25:1023:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1024:34:1024:41 | source(...) : String | Log4jJndiInjectionTest.java:1024:25:1024:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1025:40:1025:62 | {...} : Object[] [[]] : String | Log4jJndiInjectionTest.java:1025:40:1025:62 | new Object[] | provenance | | +| Log4jJndiInjectionTest.java:1025:54:1025:61 | source(...) : String | Log4jJndiInjectionTest.java:1025:40:1025:62 | {...} : Object[] [[]] : String | provenance | | +| Log4jJndiInjectionTest.java:1028:49:1028:56 | source(...) : String | Log4jJndiInjectionTest.java:1028:40:1028:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1029:34:1029:41 | source(...) : String | Log4jJndiInjectionTest.java:1029:25:1029:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1030:64:1030:71 | source(...) : String | Log4jJndiInjectionTest.java:1030:55:1030:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1031:49:1031:56 | source(...) : String | Log4jJndiInjectionTest.java:1031:40:1031:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1032:34:1032:41 | source(...) : String | Log4jJndiInjectionTest.java:1032:25:1032:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1033:79:1033:86 | source(...) : String | Log4jJndiInjectionTest.java:1033:70:1033:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1034:64:1034:71 | source(...) : String | Log4jJndiInjectionTest.java:1034:55:1034:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1035:49:1035:56 | source(...) : String | Log4jJndiInjectionTest.java:1035:40:1035:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1036:34:1036:41 | source(...) : String | Log4jJndiInjectionTest.java:1036:25:1036:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1037:94:1037:101 | source(...) : String | Log4jJndiInjectionTest.java:1037:85:1037:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1038:79:1038:86 | source(...) : String | Log4jJndiInjectionTest.java:1038:70:1038:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1039:64:1039:71 | source(...) : String | Log4jJndiInjectionTest.java:1039:55:1039:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1040:49:1040:56 | source(...) : String | Log4jJndiInjectionTest.java:1040:40:1040:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1041:34:1041:41 | source(...) : String | Log4jJndiInjectionTest.java:1041:25:1041:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1042:109:1042:116 | source(...) : String | Log4jJndiInjectionTest.java:1042:100:1042:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1043:94:1043:101 | source(...) : String | Log4jJndiInjectionTest.java:1043:85:1043:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1044:79:1044:86 | source(...) : String | Log4jJndiInjectionTest.java:1044:70:1044:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1045:64:1045:71 | source(...) : String | Log4jJndiInjectionTest.java:1045:55:1045:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1046:49:1046:56 | source(...) : String | Log4jJndiInjectionTest.java:1046:40:1046:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1047:34:1047:41 | source(...) : String | Log4jJndiInjectionTest.java:1047:25:1047:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1048:124:1048:131 | source(...) : String | Log4jJndiInjectionTest.java:1048:115:1048:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1049:109:1049:116 | source(...) : String | Log4jJndiInjectionTest.java:1049:100:1049:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1050:94:1050:101 | source(...) : String | Log4jJndiInjectionTest.java:1050:85:1050:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1051:79:1051:86 | source(...) : String | Log4jJndiInjectionTest.java:1051:70:1051:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1052:64:1052:71 | source(...) : String | Log4jJndiInjectionTest.java:1052:55:1052:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1053:49:1053:56 | source(...) : String | Log4jJndiInjectionTest.java:1053:40:1053:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1054:34:1054:41 | source(...) : String | Log4jJndiInjectionTest.java:1054:25:1054:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1055:139:1055:146 | source(...) : String | Log4jJndiInjectionTest.java:1055:130:1055:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1056:124:1056:131 | source(...) : String | Log4jJndiInjectionTest.java:1056:115:1056:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1057:109:1057:116 | source(...) : String | Log4jJndiInjectionTest.java:1057:100:1057:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1058:94:1058:101 | source(...) : String | Log4jJndiInjectionTest.java:1058:85:1058:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1059:79:1059:86 | source(...) : String | Log4jJndiInjectionTest.java:1059:70:1059:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1060:64:1060:71 | source(...) : String | Log4jJndiInjectionTest.java:1060:55:1060:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1061:49:1061:56 | source(...) : String | Log4jJndiInjectionTest.java:1061:40:1061:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1062:34:1062:41 | source(...) : String | Log4jJndiInjectionTest.java:1062:25:1062:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1063:154:1063:161 | source(...) : String | Log4jJndiInjectionTest.java:1063:145:1063:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1064:139:1064:146 | source(...) : String | Log4jJndiInjectionTest.java:1064:130:1064:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1065:124:1065:131 | source(...) : String | Log4jJndiInjectionTest.java:1065:115:1065:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1066:109:1066:116 | source(...) : String | Log4jJndiInjectionTest.java:1066:100:1066:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1067:94:1067:101 | source(...) : String | Log4jJndiInjectionTest.java:1067:85:1067:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1068:79:1068:86 | source(...) : String | Log4jJndiInjectionTest.java:1068:70:1068:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1069:64:1069:71 | source(...) : String | Log4jJndiInjectionTest.java:1069:55:1069:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1070:49:1070:56 | source(...) : String | Log4jJndiInjectionTest.java:1070:40:1070:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1071:34:1071:41 | source(...) : String | Log4jJndiInjectionTest.java:1071:25:1071:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1072:169:1072:176 | source(...) : String | Log4jJndiInjectionTest.java:1072:160:1072:176 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1073:154:1073:161 | source(...) : String | Log4jJndiInjectionTest.java:1073:145:1073:161 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1074:139:1074:146 | source(...) : String | Log4jJndiInjectionTest.java:1074:130:1074:146 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1075:124:1075:131 | source(...) : String | Log4jJndiInjectionTest.java:1075:115:1075:131 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1076:109:1076:116 | source(...) : String | Log4jJndiInjectionTest.java:1076:100:1076:116 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1077:94:1077:101 | source(...) : String | Log4jJndiInjectionTest.java:1077:85:1077:101 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1078:79:1078:86 | source(...) : String | Log4jJndiInjectionTest.java:1078:70:1078:86 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1079:64:1079:71 | source(...) : String | Log4jJndiInjectionTest.java:1079:55:1079:71 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1080:49:1080:56 | source(...) : String | Log4jJndiInjectionTest.java:1080:40:1080:56 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1081:34:1081:41 | source(...) : String | Log4jJndiInjectionTest.java:1081:25:1081:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1083:34:1083:41 | source(...) : String | Log4jJndiInjectionTest.java:1083:25:1083:41 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1084:54:1084:61 | source(...) : String | Log4jJndiInjectionTest.java:1084:40:1084:61 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1085:39:1085:46 | source(...) : String | Log4jJndiInjectionTest.java:1085:25:1085:46 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | Log4jJndiInjectionTest.java:1088:38:1088:54 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | Log4jJndiInjectionTest.java:1089:44:1089:60 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | provenance | | +| Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | provenance | | +| Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | provenance | | +| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | provenance | | +| Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | provenance | | +| Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | provenance | | +| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | provenance | | +| Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | provenance | | +| Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | provenance | | +| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | provenance | | +| Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | provenance | | +| Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | provenance | | +| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | provenance | | +| Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | provenance | | +| Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | provenance | | +| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | provenance | | +| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | provenance | | +| Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | Log4jJndiInjectionTest.java:1116:52:1116:68 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | Log4jJndiInjectionTest.java:1117:72:1117:88 | (...)... | provenance | | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | provenance | | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1121:63:1121:65 | map | provenance | | +| Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | provenance | | +| Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | provenance | | nodes | Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | | Log4jJndiInjectionTest.java:31:26:31:48 | (...)... | semmle.label | (...)... | diff --git a/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected index cd2b49f28c1e..da71e407707e 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected @@ -1,13 +1,13 @@ edges -| FilePathInjection.java:21:21:21:34 | getPara(...) : String | FilePathInjection.java:26:47:26:59 | finalFilePath | -| FilePathInjection.java:64:21:64:34 | getPara(...) : String | FilePathInjection.java:72:47:72:59 | finalFilePath | -| FilePathInjection.java:87:21:87:34 | getPara(...) : String | FilePathInjection.java:95:47:95:59 | finalFilePath | -| FilePathInjection.java:177:50:177:58 | file : File | FilePathInjection.java:182:30:182:33 | file | -| FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath | -| FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath : String | -| FilePathInjection.java:209:15:209:32 | new File(...) : File | FilePathInjection.java:217:19:217:22 | file : File | -| FilePathInjection.java:209:24:209:31 | filePath : String | FilePathInjection.java:209:15:209:32 | new File(...) : File | -| FilePathInjection.java:217:19:217:22 | file : File | FilePathInjection.java:177:50:177:58 | file : File | +| FilePathInjection.java:21:21:21:34 | getPara(...) : String | FilePathInjection.java:26:47:26:59 | finalFilePath | provenance | | +| FilePathInjection.java:64:21:64:34 | getPara(...) : String | FilePathInjection.java:72:47:72:59 | finalFilePath | provenance | | +| FilePathInjection.java:87:21:87:34 | getPara(...) : String | FilePathInjection.java:95:47:95:59 | finalFilePath | provenance | | +| FilePathInjection.java:177:50:177:58 | file : File | FilePathInjection.java:182:30:182:33 | file | provenance | | +| FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath : String | provenance | | +| FilePathInjection.java:209:15:209:32 | new File(...) : File | FilePathInjection.java:210:23:210:26 | file | provenance | | +| FilePathInjection.java:209:15:209:32 | new File(...) : File | FilePathInjection.java:217:19:217:22 | file : File | provenance | | +| FilePathInjection.java:209:24:209:31 | filePath : String | FilePathInjection.java:209:15:209:32 | new File(...) : File | provenance | | +| FilePathInjection.java:217:19:217:22 | file : File | FilePathInjection.java:177:50:177:58 | file : File | provenance | | nodes | FilePathInjection.java:21:21:21:34 | getPara(...) : String | semmle.label | getPara(...) : String | | FilePathInjection.java:26:47:26:59 | finalFilePath | semmle.label | finalFilePath | @@ -19,8 +19,8 @@ nodes | FilePathInjection.java:182:30:182:33 | file | semmle.label | file | | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | | FilePathInjection.java:209:15:209:32 | new File(...) : File | semmle.label | new File(...) : File | -| FilePathInjection.java:209:24:209:31 | filePath | semmle.label | filePath | | FilePathInjection.java:209:24:209:31 | filePath : String | semmle.label | filePath : String | +| FilePathInjection.java:210:23:210:26 | file | semmle.label | file | | FilePathInjection.java:217:19:217:22 | file : File | semmle.label | file : File | subpaths #select @@ -28,4 +28,4 @@ subpaths | FilePathInjection.java:72:47:72:59 | finalFilePath | FilePathInjection.java:64:21:64:34 | getPara(...) : String | FilePathInjection.java:72:47:72:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:64:21:64:34 | getPara(...) | user-provided value | | FilePathInjection.java:95:47:95:59 | finalFilePath | FilePathInjection.java:87:21:87:34 | getPara(...) : String | FilePathInjection.java:95:47:95:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:87:21:87:34 | getPara(...) | user-provided value | | FilePathInjection.java:182:30:182:33 | file | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:182:30:182:33 | file | External control of file name or path due to $@. | FilePathInjection.java:205:17:205:44 | getParameter(...) | user-provided value | -| FilePathInjection.java:209:24:209:31 | filePath | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath | External control of file name or path due to $@. | FilePathInjection.java:205:17:205:44 | getParameter(...) | user-provided value | +| FilePathInjection.java:210:23:210:26 | file | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:210:23:210:26 | file | External control of file name or path due to $@. | FilePathInjection.java:205:17:205:44 | getParameter(...) | user-provided value | diff --git a/java/ql/test/experimental/query-tests/security/CWE-078/CommandInjectionRuntimeExecLocal.expected b/java/ql/test/experimental/query-tests/security/CWE-078/CommandInjectionRuntimeExecLocal.expected index 0baff0f6f218..926675f900a7 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-078/CommandInjectionRuntimeExecLocal.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-078/CommandInjectionRuntimeExecLocal.expected @@ -1,20 +1,20 @@ edges -| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:22:67:22:72 | script : String | -| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:25:66:25:71 | script : String | -| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:31:36:31:41 | script : String | -| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:38:52:38:57 | script : String | -| RuntimeExecTest.java:22:43:22:73 | {...} : String[] [[]] : String | RuntimeExecTest.java:22:43:22:73 | new String[] | -| RuntimeExecTest.java:22:67:22:72 | script : String | RuntimeExecTest.java:22:43:22:73 | {...} : String[] [[]] : String | -| RuntimeExecTest.java:25:42:25:72 | {...} : String[] [[]] : String | RuntimeExecTest.java:26:43:26:55 | commandArray1 | -| RuntimeExecTest.java:25:66:25:71 | script : String | RuntimeExecTest.java:25:42:25:72 | {...} : String[] [[]] : String | -| RuntimeExecTest.java:31:17:31:29 | commandArray2 [post update] : String[] [[]] : String | RuntimeExecTest.java:32:43:32:55 | commandArray2 | -| RuntimeExecTest.java:31:36:31:41 | script : String | RuntimeExecTest.java:31:17:31:29 | commandArray2 [post update] : String[] [[]] : String | -| RuntimeExecTest.java:36:21:39:21 | concat(...) : Stream [] : String | RuntimeExecTest.java:36:21:39:44 | toArray(...) : String[] [[]] : String | -| RuntimeExecTest.java:36:21:39:44 | toArray(...) : String[] [[]] : String | RuntimeExecTest.java:36:21:39:44 | toArray(...) | -| RuntimeExecTest.java:38:25:38:59 | stream(...) : Stream [] : String | RuntimeExecTest.java:36:21:39:21 | concat(...) : Stream [] : String | -| RuntimeExecTest.java:38:39:38:58 | new String[] : String[] [[]] : String | RuntimeExecTest.java:38:25:38:59 | stream(...) : Stream [] : String | -| RuntimeExecTest.java:38:39:38:58 | {...} : String[] [[]] : String | RuntimeExecTest.java:38:39:38:58 | new String[] : String[] [[]] : String | -| RuntimeExecTest.java:38:52:38:57 | script : String | RuntimeExecTest.java:38:39:38:58 | {...} : String[] [[]] : String | +| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:22:67:22:72 | script : String | provenance | | +| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:25:66:25:71 | script : String | provenance | | +| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:31:36:31:41 | script : String | provenance | | +| RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | RuntimeExecTest.java:38:52:38:57 | script : String | provenance | | +| RuntimeExecTest.java:22:43:22:73 | {...} : String[] [[]] : String | RuntimeExecTest.java:22:43:22:73 | new String[] | provenance | | +| RuntimeExecTest.java:22:67:22:72 | script : String | RuntimeExecTest.java:22:43:22:73 | {...} : String[] [[]] : String | provenance | | +| RuntimeExecTest.java:25:42:25:72 | {...} : String[] [[]] : String | RuntimeExecTest.java:26:43:26:55 | commandArray1 | provenance | | +| RuntimeExecTest.java:25:66:25:71 | script : String | RuntimeExecTest.java:25:42:25:72 | {...} : String[] [[]] : String | provenance | | +| RuntimeExecTest.java:31:17:31:29 | commandArray2 [post update] : String[] [[]] : String | RuntimeExecTest.java:32:43:32:55 | commandArray2 | provenance | | +| RuntimeExecTest.java:31:36:31:41 | script : String | RuntimeExecTest.java:31:17:31:29 | commandArray2 [post update] : String[] [[]] : String | provenance | | +| RuntimeExecTest.java:36:21:39:21 | concat(...) : Stream [] : String | RuntimeExecTest.java:36:21:39:44 | toArray(...) : String[] [[]] : String | provenance | | +| RuntimeExecTest.java:36:21:39:44 | toArray(...) : String[] [[]] : String | RuntimeExecTest.java:36:21:39:44 | toArray(...) | provenance | | +| RuntimeExecTest.java:38:25:38:59 | stream(...) : Stream [] : String | RuntimeExecTest.java:36:21:39:21 | concat(...) : Stream [] : String | provenance | | +| RuntimeExecTest.java:38:39:38:58 | new String[] : String[] [[]] : String | RuntimeExecTest.java:38:25:38:59 | stream(...) : Stream [] : String | provenance | | +| RuntimeExecTest.java:38:39:38:58 | {...} : String[] [[]] : String | RuntimeExecTest.java:38:39:38:58 | new String[] : String[] [[]] : String | provenance | | +| RuntimeExecTest.java:38:52:38:57 | script : String | RuntimeExecTest.java:38:39:38:58 | {...} : String[] [[]] : String | provenance | | nodes | RuntimeExecTest.java:17:25:17:51 | getenv(...) : String | semmle.label | getenv(...) : String | | RuntimeExecTest.java:22:43:22:73 | new String[] | semmle.label | new String[] | diff --git a/java/ql/test/experimental/query-tests/security/CWE-078/ExecTainted.expected b/java/ql/test/experimental/query-tests/security/CWE-078/ExecTainted.expected index befb327fc339..d27556a5ccb8 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-078/ExecTainted.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-078/ExecTainted.expected @@ -1,6 +1,6 @@ edges -| JSchOSInjectionTest.java:14:30:14:60 | getParameter(...) : String | JSchOSInjectionTest.java:27:52:27:68 | ... + ... | -| JSchOSInjectionTest.java:40:30:40:60 | getParameter(...) : String | JSchOSInjectionTest.java:53:36:53:52 | ... + ... | +| JSchOSInjectionTest.java:14:30:14:60 | getParameter(...) : String | JSchOSInjectionTest.java:27:52:27:68 | ... + ... | provenance | | +| JSchOSInjectionTest.java:40:30:40:60 | getParameter(...) : String | JSchOSInjectionTest.java:53:36:53:52 | ... + ... | provenance | | nodes | JSchOSInjectionTest.java:14:30:14:60 | getParameter(...) : String | semmle.label | getParameter(...) : String | | JSchOSInjectionTest.java:27:52:27:68 | ... + ... | semmle.label | ... + ... | diff --git a/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisAnnotationSqlInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisAnnotationSqlInjection.expected index 1c5ba31a97f6..9f043f8db51d 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisAnnotationSqlInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisAnnotationSqlInjection.expected @@ -1,21 +1,21 @@ edges -| MybatisSqlInjection.java:62:19:62:43 | name : String | MybatisSqlInjection.java:63:35:63:38 | name : String | -| MybatisSqlInjection.java:63:35:63:38 | name : String | MybatisSqlInjectionService.java:48:19:48:29 | name : String | -| MybatisSqlInjection.java:67:46:67:70 | name : String | MybatisSqlInjection.java:68:40:68:43 | name : String | -| MybatisSqlInjection.java:68:40:68:43 | name : String | MybatisSqlInjectionService.java:54:32:54:42 | name : String | -| MybatisSqlInjection.java:99:20:99:44 | name : String | MybatisSqlInjection.java:100:36:100:39 | name : String | -| MybatisSqlInjection.java:100:36:100:39 | name : String | MybatisSqlInjectionService.java:80:20:80:30 | name : String | -| MybatisSqlInjection.java:104:20:104:43 | age : String | MybatisSqlInjection.java:105:36:105:38 | age : String | -| MybatisSqlInjection.java:105:36:105:38 | age : String | MybatisSqlInjectionService.java:84:20:84:29 | age : String | -| MybatisSqlInjection.java:109:46:109:70 | name : String | MybatisSqlInjection.java:110:40:110:43 | name : String | -| MybatisSqlInjection.java:110:40:110:43 | name : String | MybatisSqlInjectionService.java:88:32:88:42 | name : String | -| MybatisSqlInjectionService.java:48:19:48:29 | name : String | MybatisSqlInjectionService.java:50:23:50:26 | name : String | -| MybatisSqlInjectionService.java:50:3:50:9 | hashMap [post update] : HashMap [] : String | MybatisSqlInjectionService.java:51:27:51:33 | hashMap | -| MybatisSqlInjectionService.java:50:23:50:26 | name : String | MybatisSqlInjectionService.java:50:3:50:9 | hashMap [post update] : HashMap [] : String | -| MybatisSqlInjectionService.java:54:32:54:42 | name : String | MybatisSqlInjectionService.java:55:32:55:35 | name | -| MybatisSqlInjectionService.java:80:20:80:30 | name : String | MybatisSqlInjectionService.java:81:28:81:31 | name | -| MybatisSqlInjectionService.java:84:20:84:29 | age : String | MybatisSqlInjectionService.java:85:28:85:30 | age | -| MybatisSqlInjectionService.java:88:32:88:42 | name : String | MybatisSqlInjectionService.java:89:32:89:35 | name | +| MybatisSqlInjection.java:62:19:62:43 | name : String | MybatisSqlInjection.java:63:35:63:38 | name : String | provenance | | +| MybatisSqlInjection.java:63:35:63:38 | name : String | MybatisSqlInjectionService.java:48:19:48:29 | name : String | provenance | | +| MybatisSqlInjection.java:67:46:67:70 | name : String | MybatisSqlInjection.java:68:40:68:43 | name : String | provenance | | +| MybatisSqlInjection.java:68:40:68:43 | name : String | MybatisSqlInjectionService.java:54:32:54:42 | name : String | provenance | | +| MybatisSqlInjection.java:99:20:99:44 | name : String | MybatisSqlInjection.java:100:36:100:39 | name : String | provenance | | +| MybatisSqlInjection.java:100:36:100:39 | name : String | MybatisSqlInjectionService.java:80:20:80:30 | name : String | provenance | | +| MybatisSqlInjection.java:104:20:104:43 | age : String | MybatisSqlInjection.java:105:36:105:38 | age : String | provenance | | +| MybatisSqlInjection.java:105:36:105:38 | age : String | MybatisSqlInjectionService.java:84:20:84:29 | age : String | provenance | | +| MybatisSqlInjection.java:109:46:109:70 | name : String | MybatisSqlInjection.java:110:40:110:43 | name : String | provenance | | +| MybatisSqlInjection.java:110:40:110:43 | name : String | MybatisSqlInjectionService.java:88:32:88:42 | name : String | provenance | | +| MybatisSqlInjectionService.java:48:19:48:29 | name : String | MybatisSqlInjectionService.java:50:23:50:26 | name : String | provenance | | +| MybatisSqlInjectionService.java:50:3:50:9 | hashMap [post update] : HashMap [] : String | MybatisSqlInjectionService.java:51:27:51:33 | hashMap | provenance | | +| MybatisSqlInjectionService.java:50:23:50:26 | name : String | MybatisSqlInjectionService.java:50:3:50:9 | hashMap [post update] : HashMap [] : String | provenance | | +| MybatisSqlInjectionService.java:54:32:54:42 | name : String | MybatisSqlInjectionService.java:55:32:55:35 | name | provenance | | +| MybatisSqlInjectionService.java:80:20:80:30 | name : String | MybatisSqlInjectionService.java:81:28:81:31 | name | provenance | | +| MybatisSqlInjectionService.java:84:20:84:29 | age : String | MybatisSqlInjectionService.java:85:28:85:30 | age | provenance | | +| MybatisSqlInjectionService.java:88:32:88:42 | name : String | MybatisSqlInjectionService.java:89:32:89:35 | name | provenance | | nodes | MybatisSqlInjection.java:62:19:62:43 | name : String | semmle.label | name : String | | MybatisSqlInjection.java:63:35:63:38 | name : String | semmle.label | name : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisMapperXmlSqlInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisMapperXmlSqlInjection.expected index 6d38949fc1ef..27ccbaad9296 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisMapperXmlSqlInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-089/src/main/MyBatisMapperXmlSqlInjection.expected @@ -1,28 +1,28 @@ edges -| MybatisSqlInjection.java:19:25:19:49 | name : String | MybatisSqlInjection.java:20:55:20:58 | name : String | -| MybatisSqlInjection.java:20:55:20:58 | name : String | MybatisSqlInjectionService.java:13:25:13:35 | name : String | -| MybatisSqlInjection.java:25:25:25:49 | name : String | MybatisSqlInjection.java:26:55:26:58 | name : String | -| MybatisSqlInjection.java:26:55:26:58 | name : String | MybatisSqlInjectionService.java:18:25:18:35 | name : String | -| MybatisSqlInjection.java:31:25:31:49 | test : Test | MybatisSqlInjection.java:32:55:32:58 | test : Test | -| MybatisSqlInjection.java:32:55:32:58 | test : Test | MybatisSqlInjectionService.java:23:25:23:33 | test : Test | -| MybatisSqlInjection.java:37:19:37:40 | test : Test | MybatisSqlInjection.java:38:35:38:38 | test : Test | -| MybatisSqlInjection.java:38:35:38:38 | test : Test | MybatisSqlInjectionService.java:28:19:28:27 | test : Test | -| MybatisSqlInjection.java:42:19:42:40 | test : Test | MybatisSqlInjection.java:43:35:43:38 | test : Test | -| MybatisSqlInjection.java:43:35:43:38 | test : Test | MybatisSqlInjectionService.java:32:19:32:27 | test : Test | -| MybatisSqlInjection.java:47:19:47:57 | params : Map | MybatisSqlInjection.java:48:35:48:40 | params : Map | -| MybatisSqlInjection.java:48:35:48:40 | params : Map | MybatisSqlInjectionService.java:36:19:36:44 | params : Map | -| MybatisSqlInjection.java:52:19:52:50 | params : List | MybatisSqlInjection.java:53:35:53:40 | params : List | -| MybatisSqlInjection.java:53:35:53:40 | params : List | MybatisSqlInjectionService.java:40:19:40:37 | params : List | -| MybatisSqlInjection.java:57:19:57:46 | params : String[] | MybatisSqlInjection.java:58:35:58:40 | params : String[] | -| MybatisSqlInjection.java:58:35:58:40 | params : String[] | MybatisSqlInjectionService.java:44:19:44:33 | params : String[] | -| MybatisSqlInjectionService.java:13:25:13:35 | name : String | MybatisSqlInjectionService.java:14:47:14:50 | name | -| MybatisSqlInjectionService.java:18:25:18:35 | name : String | MybatisSqlInjectionService.java:19:47:19:50 | name | -| MybatisSqlInjectionService.java:23:25:23:33 | test : Test | MybatisSqlInjectionService.java:24:47:24:50 | test | -| MybatisSqlInjectionService.java:28:19:28:27 | test : Test | MybatisSqlInjectionService.java:29:27:29:30 | test | -| MybatisSqlInjectionService.java:32:19:32:27 | test : Test | MybatisSqlInjectionService.java:33:27:33:30 | test | -| MybatisSqlInjectionService.java:36:19:36:44 | params : Map | MybatisSqlInjectionService.java:37:27:37:32 | params | -| MybatisSqlInjectionService.java:40:19:40:37 | params : List | MybatisSqlInjectionService.java:41:27:41:32 | params | -| MybatisSqlInjectionService.java:44:19:44:33 | params : String[] | MybatisSqlInjectionService.java:45:27:45:32 | params | +| MybatisSqlInjection.java:19:25:19:49 | name : String | MybatisSqlInjection.java:20:55:20:58 | name : String | provenance | | +| MybatisSqlInjection.java:20:55:20:58 | name : String | MybatisSqlInjectionService.java:13:25:13:35 | name : String | provenance | | +| MybatisSqlInjection.java:25:25:25:49 | name : String | MybatisSqlInjection.java:26:55:26:58 | name : String | provenance | | +| MybatisSqlInjection.java:26:55:26:58 | name : String | MybatisSqlInjectionService.java:18:25:18:35 | name : String | provenance | | +| MybatisSqlInjection.java:31:25:31:49 | test : Test | MybatisSqlInjection.java:32:55:32:58 | test : Test | provenance | | +| MybatisSqlInjection.java:32:55:32:58 | test : Test | MybatisSqlInjectionService.java:23:25:23:33 | test : Test | provenance | | +| MybatisSqlInjection.java:37:19:37:40 | test : Test | MybatisSqlInjection.java:38:35:38:38 | test : Test | provenance | | +| MybatisSqlInjection.java:38:35:38:38 | test : Test | MybatisSqlInjectionService.java:28:19:28:27 | test : Test | provenance | | +| MybatisSqlInjection.java:42:19:42:40 | test : Test | MybatisSqlInjection.java:43:35:43:38 | test : Test | provenance | | +| MybatisSqlInjection.java:43:35:43:38 | test : Test | MybatisSqlInjectionService.java:32:19:32:27 | test : Test | provenance | | +| MybatisSqlInjection.java:47:19:47:57 | params : Map | MybatisSqlInjection.java:48:35:48:40 | params : Map | provenance | | +| MybatisSqlInjection.java:48:35:48:40 | params : Map | MybatisSqlInjectionService.java:36:19:36:44 | params : Map | provenance | | +| MybatisSqlInjection.java:52:19:52:50 | params : List | MybatisSqlInjection.java:53:35:53:40 | params : List | provenance | | +| MybatisSqlInjection.java:53:35:53:40 | params : List | MybatisSqlInjectionService.java:40:19:40:37 | params : List | provenance | | +| MybatisSqlInjection.java:57:19:57:46 | params : String[] | MybatisSqlInjection.java:58:35:58:40 | params : String[] | provenance | | +| MybatisSqlInjection.java:58:35:58:40 | params : String[] | MybatisSqlInjectionService.java:44:19:44:33 | params : String[] | provenance | | +| MybatisSqlInjectionService.java:13:25:13:35 | name : String | MybatisSqlInjectionService.java:14:47:14:50 | name | provenance | | +| MybatisSqlInjectionService.java:18:25:18:35 | name : String | MybatisSqlInjectionService.java:19:47:19:50 | name | provenance | | +| MybatisSqlInjectionService.java:23:25:23:33 | test : Test | MybatisSqlInjectionService.java:24:47:24:50 | test | provenance | | +| MybatisSqlInjectionService.java:28:19:28:27 | test : Test | MybatisSqlInjectionService.java:29:27:29:30 | test | provenance | | +| MybatisSqlInjectionService.java:32:19:32:27 | test : Test | MybatisSqlInjectionService.java:33:27:33:30 | test | provenance | | +| MybatisSqlInjectionService.java:36:19:36:44 | params : Map | MybatisSqlInjectionService.java:37:27:37:32 | params | provenance | | +| MybatisSqlInjectionService.java:40:19:40:37 | params : List | MybatisSqlInjectionService.java:41:27:41:32 | params | provenance | | +| MybatisSqlInjectionService.java:44:19:44:33 | params : String[] | MybatisSqlInjectionService.java:45:27:45:32 | params | provenance | | nodes | MybatisSqlInjection.java:19:25:19:49 | name : String | semmle.label | name : String | | MybatisSqlInjection.java:20:55:20:58 | name : String | semmle.label | name : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-094/BeanShellInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-094/BeanShellInjection.expected index 62d42d57864f..2afdd9869d70 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-094/BeanShellInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-094/BeanShellInjection.expected @@ -1,10 +1,10 @@ edges -| BeanShellInjection.java:13:17:13:44 | getParameter(...) : String | BeanShellInjection.java:15:45:15:48 | code : String | -| BeanShellInjection.java:15:45:15:48 | code : String | BeanShellInjection.java:15:22:15:49 | new StaticScriptSource(...) | -| BeanShellInjection.java:20:17:20:44 | getParameter(...) : String | BeanShellInjection.java:22:20:22:23 | code | -| BeanShellInjection.java:27:17:27:44 | getParameter(...) : String | BeanShellInjection.java:29:32:29:35 | code : String | -| BeanShellInjection.java:29:3:29:20 | staticScriptSource : StaticScriptSource | BeanShellInjection.java:31:22:31:39 | staticScriptSource | -| BeanShellInjection.java:29:32:29:35 | code : String | BeanShellInjection.java:29:3:29:20 | staticScriptSource : StaticScriptSource | +| BeanShellInjection.java:13:17:13:44 | getParameter(...) : String | BeanShellInjection.java:15:45:15:48 | code : String | provenance | | +| BeanShellInjection.java:15:45:15:48 | code : String | BeanShellInjection.java:15:22:15:49 | new StaticScriptSource(...) | provenance | | +| BeanShellInjection.java:20:17:20:44 | getParameter(...) : String | BeanShellInjection.java:22:20:22:23 | code | provenance | | +| BeanShellInjection.java:27:17:27:44 | getParameter(...) : String | BeanShellInjection.java:29:32:29:35 | code : String | provenance | | +| BeanShellInjection.java:29:3:29:20 | staticScriptSource : StaticScriptSource | BeanShellInjection.java:31:22:31:39 | staticScriptSource | provenance | | +| BeanShellInjection.java:29:32:29:35 | code : String | BeanShellInjection.java:29:3:29:20 | staticScriptSource : StaticScriptSource | provenance | | nodes | BeanShellInjection.java:13:17:13:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | | BeanShellInjection.java:15:22:15:49 | new StaticScriptSource(...) | semmle.label | new StaticScriptSource(...) | diff --git a/java/ql/test/experimental/query-tests/security/CWE-094/JShellInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-094/JShellInjection.expected index f084660ced88..0f61156df132 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-094/JShellInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-094/JShellInjection.expected @@ -1,14 +1,14 @@ edges -| JShellInjection.java:12:18:12:45 | getParameter(...) : String | JShellInjection.java:15:15:15:19 | input | -| JShellInjection.java:20:18:20:45 | getParameter(...) : String | JShellInjection.java:24:31:24:35 | input | -| JShellInjection.java:29:18:29:45 | getParameter(...) : String | JShellInjection.java:33:37:33:41 | input : String | -| JShellInjection.java:33:15:33:42 | analyzeCompletion(...) : CompletionInfo | JShellInjection.java:37:16:37:19 | info : CompletionInfo | -| JShellInjection.java:33:37:33:41 | input : String | JShellInjection.java:33:15:33:42 | analyzeCompletion(...) : CompletionInfo | -| JShellInjection.java:35:12:35:50 | analyzeCompletion(...) : CompletionInfo | JShellInjection.java:37:16:37:19 | info : CompletionInfo | -| JShellInjection.java:35:34:35:37 | info : CompletionInfo | JShellInjection.java:35:34:35:49 | remaining(...) : String | -| JShellInjection.java:35:34:35:49 | remaining(...) : String | JShellInjection.java:35:12:35:50 | analyzeCompletion(...) : CompletionInfo | -| JShellInjection.java:37:16:37:19 | info : CompletionInfo | JShellInjection.java:35:34:35:37 | info : CompletionInfo | -| JShellInjection.java:37:16:37:19 | info : CompletionInfo | JShellInjection.java:37:16:37:28 | source(...) | +| JShellInjection.java:12:18:12:45 | getParameter(...) : String | JShellInjection.java:15:15:15:19 | input | provenance | | +| JShellInjection.java:20:18:20:45 | getParameter(...) : String | JShellInjection.java:24:31:24:35 | input | provenance | | +| JShellInjection.java:29:18:29:45 | getParameter(...) : String | JShellInjection.java:33:37:33:41 | input : String | provenance | | +| JShellInjection.java:33:15:33:42 | analyzeCompletion(...) : CompletionInfo | JShellInjection.java:37:16:37:19 | info : CompletionInfo | provenance | | +| JShellInjection.java:33:37:33:41 | input : String | JShellInjection.java:33:15:33:42 | analyzeCompletion(...) : CompletionInfo | provenance | | +| JShellInjection.java:35:12:35:50 | analyzeCompletion(...) : CompletionInfo | JShellInjection.java:37:16:37:19 | info : CompletionInfo | provenance | | +| JShellInjection.java:35:34:35:37 | info : CompletionInfo | JShellInjection.java:35:34:35:49 | remaining(...) : String | provenance | | +| JShellInjection.java:35:34:35:49 | remaining(...) : String | JShellInjection.java:35:12:35:50 | analyzeCompletion(...) : CompletionInfo | provenance | | +| JShellInjection.java:37:16:37:19 | info : CompletionInfo | JShellInjection.java:35:34:35:37 | info : CompletionInfo | provenance | | +| JShellInjection.java:37:16:37:19 | info : CompletionInfo | JShellInjection.java:37:16:37:28 | source(...) | provenance | | nodes | JShellInjection.java:12:18:12:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | | JShellInjection.java:15:15:15:19 | input | semmle.label | input | diff --git a/java/ql/test/experimental/query-tests/security/CWE-094/JakartaExpressionInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-094/JakartaExpressionInjection.expected index ef5fefa21a3f..dbf9191adad3 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-094/JakartaExpressionInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-094/JakartaExpressionInjection.expected @@ -1,34 +1,34 @@ edges -| JakartaExpressionInjection.java:23:25:23:47 | getInputStream(...) : InputStream | JakartaExpressionInjection.java:23:54:23:58 | bytes [post update] : byte[] | -| JakartaExpressionInjection.java:23:54:23:58 | bytes [post update] : byte[] | JakartaExpressionInjection.java:24:48:24:52 | bytes : byte[] | -| JakartaExpressionInjection.java:24:37:24:59 | new String(...) : String | JakartaExpressionInjection.java:25:31:25:40 | expression : String | -| JakartaExpressionInjection.java:24:48:24:52 | bytes : byte[] | JakartaExpressionInjection.java:24:37:24:59 | new String(...) : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:32:24:32:33 | expression : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:40:24:40:33 | expression : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:48:24:48:33 | expression : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:59:24:59:33 | expression : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:67:24:67:33 | expression : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:75:24:75:33 | expression : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:85:24:85:33 | expression : String | -| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:95:24:95:33 | expression : String | -| JakartaExpressionInjection.java:32:24:32:33 | expression : String | JakartaExpressionInjection.java:34:28:34:37 | expression | -| JakartaExpressionInjection.java:40:24:40:33 | expression : String | JakartaExpressionInjection.java:42:32:42:41 | expression | -| JakartaExpressionInjection.java:48:24:48:33 | expression : String | JakartaExpressionInjection.java:51:86:51:95 | expression : String | -| JakartaExpressionInjection.java:51:47:51:110 | createValueExpression(...) : ValueExpression | JakartaExpressionInjection.java:52:89:52:103 | valueExpression : ValueExpression | -| JakartaExpressionInjection.java:51:86:51:95 | expression : String | JakartaExpressionInjection.java:51:47:51:110 | createValueExpression(...) : ValueExpression | -| JakartaExpressionInjection.java:52:49:52:104 | new LambdaExpression(...) : LambdaExpression | JakartaExpressionInjection.java:53:13:53:28 | lambdaExpression | -| JakartaExpressionInjection.java:52:89:52:103 | valueExpression : ValueExpression | JakartaExpressionInjection.java:52:49:52:104 | new LambdaExpression(...) : LambdaExpression | -| JakartaExpressionInjection.java:59:24:59:33 | expression : String | JakartaExpressionInjection.java:61:32:61:41 | expression | -| JakartaExpressionInjection.java:67:24:67:33 | expression : String | JakartaExpressionInjection.java:69:43:69:52 | expression | -| JakartaExpressionInjection.java:75:24:75:33 | expression : String | JakartaExpressionInjection.java:78:72:78:81 | expression : String | -| JakartaExpressionInjection.java:78:33:78:96 | createValueExpression(...) : ValueExpression | JakartaExpressionInjection.java:79:13:79:13 | e | -| JakartaExpressionInjection.java:78:72:78:81 | expression : String | JakartaExpressionInjection.java:78:33:78:96 | createValueExpression(...) : ValueExpression | -| JakartaExpressionInjection.java:85:24:85:33 | expression : String | JakartaExpressionInjection.java:88:72:88:81 | expression : String | -| JakartaExpressionInjection.java:88:33:88:96 | createValueExpression(...) : ValueExpression | JakartaExpressionInjection.java:89:13:89:13 | e | -| JakartaExpressionInjection.java:88:72:88:81 | expression : String | JakartaExpressionInjection.java:88:33:88:96 | createValueExpression(...) : ValueExpression | -| JakartaExpressionInjection.java:95:24:95:33 | expression : String | JakartaExpressionInjection.java:98:74:98:83 | expression : String | -| JakartaExpressionInjection.java:98:34:98:112 | createMethodExpression(...) : MethodExpression | JakartaExpressionInjection.java:99:13:99:13 | e | -| JakartaExpressionInjection.java:98:74:98:83 | expression : String | JakartaExpressionInjection.java:98:34:98:112 | createMethodExpression(...) : MethodExpression | +| JakartaExpressionInjection.java:23:25:23:47 | getInputStream(...) : InputStream | JakartaExpressionInjection.java:23:54:23:58 | bytes [post update] : byte[] | provenance | | +| JakartaExpressionInjection.java:23:54:23:58 | bytes [post update] : byte[] | JakartaExpressionInjection.java:24:48:24:52 | bytes : byte[] | provenance | | +| JakartaExpressionInjection.java:24:37:24:59 | new String(...) : String | JakartaExpressionInjection.java:25:31:25:40 | expression : String | provenance | | +| JakartaExpressionInjection.java:24:48:24:52 | bytes : byte[] | JakartaExpressionInjection.java:24:37:24:59 | new String(...) : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:32:24:32:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:40:24:40:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:48:24:48:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:59:24:59:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:67:24:67:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:75:24:75:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:85:24:85:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:25:31:25:40 | expression : String | JakartaExpressionInjection.java:95:24:95:33 | expression : String | provenance | | +| JakartaExpressionInjection.java:32:24:32:33 | expression : String | JakartaExpressionInjection.java:34:28:34:37 | expression | provenance | | +| JakartaExpressionInjection.java:40:24:40:33 | expression : String | JakartaExpressionInjection.java:42:32:42:41 | expression | provenance | | +| JakartaExpressionInjection.java:48:24:48:33 | expression : String | JakartaExpressionInjection.java:51:86:51:95 | expression : String | provenance | | +| JakartaExpressionInjection.java:51:47:51:110 | createValueExpression(...) : ValueExpression | JakartaExpressionInjection.java:52:89:52:103 | valueExpression : ValueExpression | provenance | | +| JakartaExpressionInjection.java:51:86:51:95 | expression : String | JakartaExpressionInjection.java:51:47:51:110 | createValueExpression(...) : ValueExpression | provenance | | +| JakartaExpressionInjection.java:52:49:52:104 | new LambdaExpression(...) : LambdaExpression | JakartaExpressionInjection.java:53:13:53:28 | lambdaExpression | provenance | | +| JakartaExpressionInjection.java:52:89:52:103 | valueExpression : ValueExpression | JakartaExpressionInjection.java:52:49:52:104 | new LambdaExpression(...) : LambdaExpression | provenance | | +| JakartaExpressionInjection.java:59:24:59:33 | expression : String | JakartaExpressionInjection.java:61:32:61:41 | expression | provenance | | +| JakartaExpressionInjection.java:67:24:67:33 | expression : String | JakartaExpressionInjection.java:69:43:69:52 | expression | provenance | | +| JakartaExpressionInjection.java:75:24:75:33 | expression : String | JakartaExpressionInjection.java:78:72:78:81 | expression : String | provenance | | +| JakartaExpressionInjection.java:78:33:78:96 | createValueExpression(...) : ValueExpression | JakartaExpressionInjection.java:79:13:79:13 | e | provenance | | +| JakartaExpressionInjection.java:78:72:78:81 | expression : String | JakartaExpressionInjection.java:78:33:78:96 | createValueExpression(...) : ValueExpression | provenance | | +| JakartaExpressionInjection.java:85:24:85:33 | expression : String | JakartaExpressionInjection.java:88:72:88:81 | expression : String | provenance | | +| JakartaExpressionInjection.java:88:33:88:96 | createValueExpression(...) : ValueExpression | JakartaExpressionInjection.java:89:13:89:13 | e | provenance | | +| JakartaExpressionInjection.java:88:72:88:81 | expression : String | JakartaExpressionInjection.java:88:33:88:96 | createValueExpression(...) : ValueExpression | provenance | | +| JakartaExpressionInjection.java:95:24:95:33 | expression : String | JakartaExpressionInjection.java:98:74:98:83 | expression : String | provenance | | +| JakartaExpressionInjection.java:98:34:98:112 | createMethodExpression(...) : MethodExpression | JakartaExpressionInjection.java:99:13:99:13 | e | provenance | | +| JakartaExpressionInjection.java:98:74:98:83 | expression : String | JakartaExpressionInjection.java:98:34:98:112 | createMethodExpression(...) : MethodExpression | provenance | | nodes | JakartaExpressionInjection.java:23:25:23:47 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | | JakartaExpressionInjection.java:23:54:23:58 | bytes [post update] : byte[] | semmle.label | bytes [post update] : byte[] | diff --git a/java/ql/test/experimental/query-tests/security/CWE-094/JythonInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-094/JythonInjection.expected index 0fbbe43e3c63..0d090adbea60 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-094/JythonInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-094/JythonInjection.expected @@ -1,9 +1,9 @@ edges -| JythonInjection.java:28:23:28:50 | getParameter(...) : String | JythonInjection.java:36:30:36:33 | code | -| JythonInjection.java:53:23:53:50 | getParameter(...) : String | JythonInjection.java:58:44:58:47 | code | -| JythonInjection.java:73:23:73:50 | getParameter(...) : String | JythonInjection.java:81:35:81:38 | code | -| JythonInjection.java:97:23:97:50 | getParameter(...) : String | JythonInjection.java:106:61:106:64 | code : String | -| JythonInjection.java:106:61:106:64 | code : String | JythonInjection.java:106:61:106:75 | getBytes(...) | +| JythonInjection.java:28:23:28:50 | getParameter(...) : String | JythonInjection.java:36:30:36:33 | code | provenance | | +| JythonInjection.java:53:23:53:50 | getParameter(...) : String | JythonInjection.java:58:44:58:47 | code | provenance | | +| JythonInjection.java:73:23:73:50 | getParameter(...) : String | JythonInjection.java:81:35:81:38 | code | provenance | | +| JythonInjection.java:97:23:97:50 | getParameter(...) : String | JythonInjection.java:106:61:106:64 | code : String | provenance | | +| JythonInjection.java:106:61:106:64 | code : String | JythonInjection.java:106:61:106:75 | getBytes(...) | provenance | | nodes | JythonInjection.java:28:23:28:50 | getParameter(...) : String | semmle.label | getParameter(...) : String | | JythonInjection.java:36:30:36:33 | code | semmle.label | code | diff --git a/java/ql/test/experimental/query-tests/security/CWE-094/ScriptInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-094/ScriptInjection.expected index f7a626fca76a..d2119033cdf9 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-094/ScriptInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-094/ScriptInjection.expected @@ -1,26 +1,26 @@ edges -| RhinoServlet.java:28:23:28:50 | getParameter(...) : String | RhinoServlet.java:32:55:32:58 | code | -| RhinoServlet.java:81:23:81:50 | getParameter(...) : String | RhinoServlet.java:83:54:83:57 | code | -| RhinoServlet.java:88:23:88:50 | getParameter(...) : String | RhinoServlet.java:89:74:89:77 | code : String | -| RhinoServlet.java:89:74:89:77 | code : String | RhinoServlet.java:89:74:89:88 | getBytes(...) | -| ScriptEngineTest.java:20:44:20:55 | input : String | ScriptEngineTest.java:24:37:24:41 | input | -| ScriptEngineTest.java:27:51:27:62 | input : String | ScriptEngineTest.java:31:31:31:35 | input | -| ScriptEngineTest.java:35:58:35:69 | input : String | ScriptEngineTest.java:39:31:39:35 | input | -| ScriptEngineTest.java:42:46:42:57 | input : String | ScriptEngineTest.java:46:31:46:35 | input | -| ScriptEngineTest.java:49:41:49:52 | input : String | ScriptEngineTest.java:52:42:52:46 | input | -| ScriptEngineTest.java:56:41:56:52 | input : String | ScriptEngineTest.java:59:51:59:55 | input | -| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:93:57:93:60 | code : String | -| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:94:64:94:67 | code : String | -| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:95:71:95:74 | code : String | -| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:96:59:96:62 | code : String | -| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:97:54:97:57 | code : String | -| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:98:54:98:57 | code : String | -| ScriptEngineTest.java:93:57:93:60 | code : String | ScriptEngineTest.java:20:44:20:55 | input : String | -| ScriptEngineTest.java:94:64:94:67 | code : String | ScriptEngineTest.java:27:51:27:62 | input : String | -| ScriptEngineTest.java:95:71:95:74 | code : String | ScriptEngineTest.java:35:58:35:69 | input : String | -| ScriptEngineTest.java:96:59:96:62 | code : String | ScriptEngineTest.java:42:46:42:57 | input : String | -| ScriptEngineTest.java:97:54:97:57 | code : String | ScriptEngineTest.java:49:41:49:52 | input : String | -| ScriptEngineTest.java:98:54:98:57 | code : String | ScriptEngineTest.java:56:41:56:52 | input : String | +| RhinoServlet.java:28:23:28:50 | getParameter(...) : String | RhinoServlet.java:32:55:32:58 | code | provenance | | +| RhinoServlet.java:81:23:81:50 | getParameter(...) : String | RhinoServlet.java:83:54:83:57 | code | provenance | | +| RhinoServlet.java:88:23:88:50 | getParameter(...) : String | RhinoServlet.java:89:74:89:77 | code : String | provenance | | +| RhinoServlet.java:89:74:89:77 | code : String | RhinoServlet.java:89:74:89:88 | getBytes(...) | provenance | | +| ScriptEngineTest.java:20:44:20:55 | input : String | ScriptEngineTest.java:24:37:24:41 | input | provenance | | +| ScriptEngineTest.java:27:51:27:62 | input : String | ScriptEngineTest.java:31:31:31:35 | input | provenance | | +| ScriptEngineTest.java:35:58:35:69 | input : String | ScriptEngineTest.java:39:31:39:35 | input | provenance | | +| ScriptEngineTest.java:42:46:42:57 | input : String | ScriptEngineTest.java:46:31:46:35 | input | provenance | | +| ScriptEngineTest.java:49:41:49:52 | input : String | ScriptEngineTest.java:52:42:52:46 | input | provenance | | +| ScriptEngineTest.java:56:41:56:52 | input : String | ScriptEngineTest.java:59:51:59:55 | input | provenance | | +| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:93:57:93:60 | code : String | provenance | | +| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:94:64:94:67 | code : String | provenance | | +| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:95:71:95:74 | code : String | provenance | | +| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:96:59:96:62 | code : String | provenance | | +| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:97:54:97:57 | code : String | provenance | | +| ScriptEngineTest.java:91:18:91:45 | getParameter(...) : String | ScriptEngineTest.java:98:54:98:57 | code : String | provenance | | +| ScriptEngineTest.java:93:57:93:60 | code : String | ScriptEngineTest.java:20:44:20:55 | input : String | provenance | | +| ScriptEngineTest.java:94:64:94:67 | code : String | ScriptEngineTest.java:27:51:27:62 | input : String | provenance | | +| ScriptEngineTest.java:95:71:95:74 | code : String | ScriptEngineTest.java:35:58:35:69 | input : String | provenance | | +| ScriptEngineTest.java:96:59:96:62 | code : String | ScriptEngineTest.java:42:46:42:57 | input : String | provenance | | +| ScriptEngineTest.java:97:54:97:57 | code : String | ScriptEngineTest.java:49:41:49:52 | input : String | provenance | | +| ScriptEngineTest.java:98:54:98:57 | code : String | ScriptEngineTest.java:56:41:56:52 | input : String | provenance | | nodes | RhinoServlet.java:28:23:28:50 | getParameter(...) : String | semmle.label | getParameter(...) : String | | RhinoServlet.java:32:55:32:58 | code | semmle.label | code | diff --git a/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected b/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected index ca4eb5e9917f..5b1eefcc07ad 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-1004/SensitiveCookieNotHttpOnly.expected @@ -1,23 +1,23 @@ edges -| SensitiveCookieNotHttpOnly.java:24:33:24:43 | "jwt_token" : String | SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | -| SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | -| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | -| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | -| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | -| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | -| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | -| SensitiveCookieNotHttpOnly.java:63:37:63:115 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | -| SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:63:37:63:115 | new NewCookie(...) : NewCookie | -| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | -| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | -| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | -| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | -| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | -| SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | -| SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:91:16:91:21 | cookie : Cookie | -| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | -| SensitiveCookieNotHttpOnly.java:91:16:91:21 | cookie : Cookie | SensitiveCookieNotHttpOnly.java:110:25:110:64 | createAuthenticationCookie(...) : Cookie | -| SensitiveCookieNotHttpOnly.java:110:25:110:64 | createAuthenticationCookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | +| SensitiveCookieNotHttpOnly.java:24:33:24:43 | "jwt_token" : String | SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | provenance | | +| SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:31:28:31:36 | jwtCookie | provenance | | +| SensitiveCookieNotHttpOnly.java:25:39:25:52 | tokenCookieStr : String | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | provenance | | +| SensitiveCookieNotHttpOnly.java:42:42:42:49 | "token=" : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | | +| SensitiveCookieNotHttpOnly.java:42:42:42:57 | ... + ... : String | SensitiveCookieNotHttpOnly.java:42:42:42:69 | ... + ... | provenance | | +| SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:52:42:52:124 | toString(...) | provenance | | +| SensitiveCookieNotHttpOnly.java:52:56:52:75 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:52:42:52:113 | new NewCookie(...) : NewCookie | provenance | | +| SensitiveCookieNotHttpOnly.java:63:37:63:115 | new NewCookie(...) : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | provenance | | +| SensitiveCookieNotHttpOnly.java:63:51:63:70 | "session-access-key" : String | SensitiveCookieNotHttpOnly.java:63:37:63:115 | new NewCookie(...) : NewCookie | provenance | | +| SensitiveCookieNotHttpOnly.java:64:25:64:39 | accessKeyCookie : NewCookie | SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | provenance | | +| SensitiveCookieNotHttpOnly.java:64:25:64:50 | toString(...) : String | SensitiveCookieNotHttpOnly.java:65:42:65:47 | keyStr | provenance | | +| SensitiveCookieNotHttpOnly.java:70:28:70:35 | "token=" : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | | +| SensitiveCookieNotHttpOnly.java:70:28:70:43 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | | +| SensitiveCookieNotHttpOnly.java:70:28:70:55 | ... + ... : String | SensitiveCookieNotHttpOnly.java:71:42:71:50 | secString | provenance | | +| SensitiveCookieNotHttpOnly.java:88:35:88:51 | "Presto-UI-Token" : String | SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | provenance | | +| SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:91:16:91:21 | cookie : Cookie | provenance | | +| SensitiveCookieNotHttpOnly.java:89:36:89:51 | PRESTO_UI_COOKIE : String | SensitiveCookieNotHttpOnly.java:89:25:89:57 | new Cookie(...) : Cookie | provenance | | +| SensitiveCookieNotHttpOnly.java:91:16:91:21 | cookie : Cookie | SensitiveCookieNotHttpOnly.java:110:25:110:64 | createAuthenticationCookie(...) : Cookie | provenance | | +| SensitiveCookieNotHttpOnly.java:110:25:110:64 | createAuthenticationCookie(...) : Cookie | SensitiveCookieNotHttpOnly.java:111:28:111:33 | cookie | provenance | | nodes | SensitiveCookieNotHttpOnly.java:24:33:24:43 | "jwt_token" : String | semmle.label | "jwt_token" : String | | SensitiveCookieNotHttpOnly.java:25:28:25:64 | new Cookie(...) : Cookie | semmle.label | new Cookie(...) : Cookie | diff --git a/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected b/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected index 07ce59763ad3..a006cdd08b4a 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected @@ -1,117 +1,117 @@ edges -| InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | -| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | InsecureWebResourceResponse.java:59:34:59:43 | url : String | -| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | InsecureWebResourceResponse.java:80:34:80:43 | url : String | -| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | InsecureWebResourceResponse.java:106:34:106:43 | url : String | -| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | InsecureWebResourceResponse.java:131:36:131:45 | url : String | -| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | InsecureWebResourceResponse.java:156:35:156:44 | url : String | -| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | InsecureWebResourceResponse.java:181:34:181:43 | url : String | -| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | InsecureWebResourceResponse.java:188:34:188:43 | url : String | -| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | InsecureWebResourceResponse.java:217:35:217:44 | url : String | -| InsecureWebResourceResponse.java:59:34:59:43 | url : String | InsecureWebResourceResponse.java:75:20:75:22 | url : String | -| InsecureWebResourceResponse.java:63:77:63:86 | url : String | InsecureWebResourceResponse.java:65:41:65:43 | url : String | -| InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | -| InsecureWebResourceResponse.java:65:41:65:43 | url : String | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | -| InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:68:71:68:81 | inputStream | -| InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | -| InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:80:34:80:43 | url : String | InsecureWebResourceResponse.java:101:20:101:22 | url : String | -| InsecureWebResourceResponse.java:84:77:84:86 | url : String | InsecureWebResourceResponse.java:86:41:86:43 | url : String | -| InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | -| InsecureWebResourceResponse.java:86:41:86:43 | url : String | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | -| InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | -| InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | -| InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | -| InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:91:75:91:85 | inputStream | -| InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:106:34:106:43 | url : String | InsecureWebResourceResponse.java:127:20:127:22 | url : String | -| InsecureWebResourceResponse.java:110:77:110:86 | url : String | InsecureWebResourceResponse.java:112:41:112:43 | url : String | -| InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | -| InsecureWebResourceResponse.java:112:41:112:43 | url : String | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | -| InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | -| InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | -| InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | InsecureWebResourceResponse.java:115:75:115:78 | path : String | -| InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:117:75:117:85 | inputStream | -| InsecureWebResourceResponse.java:115:75:115:78 | path : String | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | -| InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:131:36:131:45 | url : String | InsecureWebResourceResponse.java:152:20:152:22 | url : String | -| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:156:35:156:44 | url : String | InsecureWebResourceResponse.java:177:20:177:22 | url : String | -| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:181:34:181:43 | url : String | InsecureWebResourceResponse.java:184:20:184:22 | url : String | -| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:188:34:188:43 | url : String | InsecureWebResourceResponse.java:209:20:209:22 | url : String | -| InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | -| InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | -| InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | -| InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | -| InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | -| InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:199:75:199:85 | inputStream | -| InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:217:35:217:44 | url : String | InsecureWebResourceResponse.java:226:20:226:22 | url : String | -| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | -| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | -| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | -| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | -| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | -| InsecureWebResourceResponse.java:232:69:232:78 | url : String | InsecureWebResourceResponse.java:234:33:234:35 | url : String | -| InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | -| InsecureWebResourceResponse.java:234:33:234:35 | url : String | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | -| InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:237:63:237:73 | inputStream | -| InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | -| InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | -| InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | -| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | -| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | InsecureWebViewActivity.java:42:28:42:37 | url : String | -| InsecureWebViewActivity.java:42:28:42:37 | url : String | InsecureWebViewActivity.java:43:25:43:27 | url : String | -| InsecureWebViewActivity.java:43:25:43:27 | url : String | InsecureWebViewActivity.java:53:77:53:86 | url : String | -| InsecureWebViewActivity.java:53:77:53:86 | url : String | InsecureWebViewActivity.java:55:41:55:43 | url : String | -| InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | -| InsecureWebViewActivity.java:55:41:55:43 | url : String | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | -| InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | InsecureWebViewActivity.java:58:71:58:81 | inputStream | -| InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | -| InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | +| InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | provenance | | +| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | InsecureWebResourceResponse.java:59:34:59:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | InsecureWebResourceResponse.java:80:34:80:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | InsecureWebResourceResponse.java:106:34:106:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | InsecureWebResourceResponse.java:131:36:131:45 | url : String | provenance | | +| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | InsecureWebResourceResponse.java:156:35:156:44 | url : String | provenance | | +| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | InsecureWebResourceResponse.java:181:34:181:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | InsecureWebResourceResponse.java:188:34:188:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | InsecureWebResourceResponse.java:217:35:217:44 | url : String | provenance | | +| InsecureWebResourceResponse.java:59:34:59:43 | url : String | InsecureWebResourceResponse.java:75:20:75:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:63:77:63:86 | url : String | InsecureWebResourceResponse.java:65:41:65:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | provenance | | +| InsecureWebResourceResponse.java:65:41:65:43 | url : String | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | provenance | | +| InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:68:71:68:81 | inputStream | provenance | | +| InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | provenance | | +| InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | provenance | | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:80:34:80:43 | url : String | InsecureWebResourceResponse.java:101:20:101:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:84:77:84:86 | url : String | InsecureWebResourceResponse.java:86:41:86:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | provenance | | +| InsecureWebResourceResponse.java:86:41:86:43 | url : String | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | provenance | | +| InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | provenance | | +| InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | provenance | | +| InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | provenance | | +| InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:91:75:91:85 | inputStream | provenance | | +| InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | provenance | | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:106:34:106:43 | url : String | InsecureWebResourceResponse.java:127:20:127:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:110:77:110:86 | url : String | InsecureWebResourceResponse.java:112:41:112:43 | url : String | provenance | | +| InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | provenance | | +| InsecureWebResourceResponse.java:112:41:112:43 | url : String | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | provenance | | +| InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | provenance | | +| InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | provenance | | +| InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | InsecureWebResourceResponse.java:115:75:115:78 | path : String | provenance | | +| InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:117:75:117:85 | inputStream | provenance | | +| InsecureWebResourceResponse.java:115:75:115:78 | path : String | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | provenance | | +| InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | provenance | | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:131:36:131:45 | url : String | InsecureWebResourceResponse.java:152:20:152:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:156:35:156:44 | url : String | InsecureWebResourceResponse.java:177:20:177:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:181:34:181:43 | url : String | InsecureWebResourceResponse.java:184:20:184:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:188:34:188:43 | url : String | InsecureWebResourceResponse.java:209:20:209:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | provenance | | +| InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | provenance | | +| InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | provenance | | +| InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | provenance | | +| InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | provenance | | +| InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:199:75:199:85 | inputStream | provenance | | +| InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | provenance | | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:217:35:217:44 | url : String | InsecureWebResourceResponse.java:226:20:226:22 | url : String | provenance | | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | provenance | | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | provenance | | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | provenance | | +| InsecureWebResourceResponse.java:232:69:232:78 | url : String | InsecureWebResourceResponse.java:234:33:234:35 | url : String | provenance | | +| InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | provenance | | +| InsecureWebResourceResponse.java:234:33:234:35 | url : String | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | provenance | | +| InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:237:63:237:73 | inputStream | provenance | | +| InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | provenance | | +| InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | provenance | | +| InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | provenance | | +| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | provenance | | +| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | InsecureWebViewActivity.java:42:28:42:37 | url : String | provenance | | +| InsecureWebViewActivity.java:42:28:42:37 | url : String | InsecureWebViewActivity.java:43:25:43:27 | url : String | provenance | | +| InsecureWebViewActivity.java:43:25:43:27 | url : String | InsecureWebViewActivity.java:53:77:53:86 | url : String | provenance | | +| InsecureWebViewActivity.java:53:77:53:86 | url : String | InsecureWebViewActivity.java:55:41:55:43 | url : String | provenance | | +| InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | provenance | | +| InsecureWebViewActivity.java:55:41:55:43 | url : String | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | provenance | | +| InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | InsecureWebViewActivity.java:58:71:58:81 | inputStream | provenance | | +| InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | provenance | | +| InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | provenance | | nodes | InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | | InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected index 9c5b6ce8b698..739a825664bf 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected @@ -1,23 +1,23 @@ edges -| FileService.java:20:31:20:43 | intent : Intent | FileService.java:21:28:21:33 | intent : Intent | -| FileService.java:21:28:21:33 | intent : Intent | FileService.java:21:28:21:64 | getStringExtra(...) : String | -| FileService.java:21:28:21:64 | getStringExtra(...) : String | FileService.java:25:42:25:50 | localPath : String | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | FileService.java:40:41:40:55 | params : Object[] | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | -| FileService.java:25:42:25:50 | localPath : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | -| FileService.java:25:42:25:50 | localPath : String | FileService.java:32:13:32:28 | sourceUri : String | -| FileService.java:32:13:32:28 | sourceUri : String | FileService.java:35:17:35:25 | sourceUri : String | -| FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | -| FileService.java:35:17:35:25 | sourceUri : String | FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | -| FileService.java:40:41:40:55 | params : Object[] | FileService.java:44:33:44:52 | (...)... : String[] | -| FileService.java:44:33:44:52 | (...)... : String[] | FileService.java:45:53:45:59 | ...[...] | -| LeakFileActivity2.java:15:13:15:18 | intent : Intent | LeakFileActivity2.java:16:26:16:31 | intent : Intent | -| LeakFileActivity2.java:16:26:16:31 | intent : Intent | FileService.java:20:31:20:43 | intent : Intent | -| LeakFileActivity.java:14:35:14:38 | data : Intent | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | -| LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | -| LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | -| LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | -| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | LeakFileActivity.java:21:58:21:82 | getPath(...) | +| FileService.java:20:31:20:43 | intent : Intent | FileService.java:21:28:21:33 | intent : Intent | provenance | | +| FileService.java:21:28:21:33 | intent : Intent | FileService.java:21:28:21:64 | getStringExtra(...) : String | provenance | | +| FileService.java:21:28:21:64 | getStringExtra(...) : String | FileService.java:25:42:25:50 | localPath : String | provenance | | +| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | FileService.java:40:41:40:55 | params : Object[] | provenance | | +| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | provenance | | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | provenance | | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:32:13:32:28 | sourceUri : String | provenance | | +| FileService.java:32:13:32:28 | sourceUri : String | FileService.java:35:17:35:25 | sourceUri : String | provenance | | +| FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | provenance | | +| FileService.java:35:17:35:25 | sourceUri : String | FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | provenance | | +| FileService.java:40:41:40:55 | params : Object[] | FileService.java:44:33:44:52 | (...)... : String[] | provenance | | +| FileService.java:44:33:44:52 | (...)... : String[] | FileService.java:45:53:45:59 | ...[...] | provenance | | +| LeakFileActivity2.java:15:13:15:18 | intent : Intent | LeakFileActivity2.java:16:26:16:31 | intent : Intent | provenance | | +| LeakFileActivity2.java:16:26:16:31 | intent : Intent | FileService.java:20:31:20:43 | intent : Intent | provenance | | +| LeakFileActivity.java:14:35:14:38 | data : Intent | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | provenance | | +| LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | provenance | | +| LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | provenance | | +| LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | provenance | | +| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | LeakFileActivity.java:21:58:21:82 | getPath(...) | provenance | | nodes | FileService.java:20:31:20:43 | intent : Intent | semmle.label | intent : Intent | | FileService.java:21:28:21:33 | intent : Intent | semmle.label | intent : Intent | diff --git a/java/ql/test/experimental/query-tests/security/CWE-208/NotConstantTimeCheckOnSignature/Test.expected b/java/ql/test/experimental/query-tests/security/CWE-208/NotConstantTimeCheckOnSignature/Test.expected index ec275d26d748..13c2a03ee2b4 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-208/NotConstantTimeCheckOnSignature/Test.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-208/NotConstantTimeCheckOnSignature/Test.expected @@ -1,7 +1,7 @@ edges -| Test.java:14:28:14:44 | doFinal(...) : byte[] | Test.java:15:43:15:51 | actualMac | -| Test.java:30:28:30:40 | sign(...) : byte[] | Test.java:31:40:31:48 | signature | -| Test.java:47:22:47:46 | doFinal(...) : byte[] | Test.java:48:40:48:42 | tag | +| Test.java:14:28:14:44 | doFinal(...) : byte[] | Test.java:15:43:15:51 | actualMac | provenance | | +| Test.java:30:28:30:40 | sign(...) : byte[] | Test.java:31:40:31:48 | signature | provenance | | +| Test.java:47:22:47:46 | doFinal(...) : byte[] | Test.java:48:40:48:42 | tag | provenance | | nodes | Test.java:14:28:14:44 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | | Test.java:15:43:15:51 | actualMac | semmle.label | actualMac | diff --git a/java/ql/test/experimental/query-tests/security/CWE-208/TimingAttackAgainstSignagure/Test.expected b/java/ql/test/experimental/query-tests/security/CWE-208/TimingAttackAgainstSignagure/Test.expected index c5d41465cb28..64b6414d2e02 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-208/TimingAttackAgainstSignagure/Test.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-208/TimingAttackAgainstSignagure/Test.expected @@ -1,15 +1,15 @@ edges -| Test.java:21:32:21:48 | doFinal(...) : byte[] | Test.java:23:47:23:55 | actualMac | -| Test.java:34:25:34:33 | actualMac : byte[] | Test.java:36:47:36:55 | actualMac | -| Test.java:59:32:59:44 | sign(...) : byte[] | Test.java:61:44:61:52 | signature | -| Test.java:73:25:73:33 | signature : byte[] | Test.java:75:44:75:52 | signature | -| Test.java:99:26:99:45 | doFinal(...) : byte[] | Test.java:101:49:101:51 | tag | -| Test.java:116:28:116:30 | tag : byte[] | Test.java:118:44:118:46 | tag | -| Test.java:134:56:134:58 | tag : ByteBuffer | Test.java:136:44:136:46 | tag : ByteBuffer | -| Test.java:136:44:136:46 | tag : ByteBuffer | Test.java:136:44:136:54 | array(...) | -| Test.java:148:56:148:58 | tag : ByteBuffer | Test.java:150:53:150:55 | tag | -| Test.java:174:26:174:50 | doFinal(...) : byte[] | Test.java:176:44:176:46 | tag | -| Test.java:201:34:201:50 | doFinal(...) : byte[] | Test.java:204:26:204:36 | computedTag | +| Test.java:21:32:21:48 | doFinal(...) : byte[] | Test.java:23:47:23:55 | actualMac | provenance | | +| Test.java:34:25:34:33 | actualMac : byte[] | Test.java:36:47:36:55 | actualMac | provenance | | +| Test.java:59:32:59:44 | sign(...) : byte[] | Test.java:61:44:61:52 | signature | provenance | | +| Test.java:73:25:73:33 | signature : byte[] | Test.java:75:44:75:52 | signature | provenance | | +| Test.java:99:26:99:45 | doFinal(...) : byte[] | Test.java:101:49:101:51 | tag | provenance | | +| Test.java:116:28:116:30 | tag : byte[] | Test.java:118:44:118:46 | tag | provenance | | +| Test.java:134:56:134:58 | tag : ByteBuffer | Test.java:136:44:136:46 | tag : ByteBuffer | provenance | | +| Test.java:136:44:136:46 | tag : ByteBuffer | Test.java:136:44:136:54 | array(...) | provenance | | +| Test.java:148:56:148:58 | tag : ByteBuffer | Test.java:150:53:150:55 | tag | provenance | | +| Test.java:174:26:174:50 | doFinal(...) : byte[] | Test.java:176:44:176:46 | tag | provenance | | +| Test.java:201:34:201:50 | doFinal(...) : byte[] | Test.java:204:26:204:36 | computedTag | provenance | | nodes | Test.java:21:32:21:48 | doFinal(...) : byte[] | semmle.label | doFinal(...) : byte[] | | Test.java:23:47:23:55 | actualMac | semmle.label | actualMac | diff --git a/java/ql/test/experimental/query-tests/security/CWE-299/DisabledRevocationChecking.expected b/java/ql/test/experimental/query-tests/security/CWE-299/DisabledRevocationChecking.expected index ab68d9578b4a..054956fdd2c1 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-299/DisabledRevocationChecking.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-299/DisabledRevocationChecking.expected @@ -1,10 +1,10 @@ edges -| DisabledRevocationChecking.java:17:5:17:8 | this <.field> [post update] : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:21:5:21:31 | this <.method> [post update] : DisabledRevocationChecking [flag] : Boolean | -| DisabledRevocationChecking.java:17:12:17:16 | false : Boolean | DisabledRevocationChecking.java:17:5:17:8 | this <.field> [post update] : DisabledRevocationChecking [flag] : Boolean | -| DisabledRevocationChecking.java:21:5:21:31 | this <.method> [post update] : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:22:5:22:31 | this <.method> : DisabledRevocationChecking [flag] : Boolean | -| DisabledRevocationChecking.java:22:5:22:31 | this <.method> : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:25:15:25:22 | parameter this : DisabledRevocationChecking [flag] : Boolean | -| DisabledRevocationChecking.java:25:15:25:22 | parameter this : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:28:33:28:36 | this <.field> : DisabledRevocationChecking [flag] : Boolean | -| DisabledRevocationChecking.java:28:33:28:36 | this <.field> : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:28:33:28:36 | flag | +| DisabledRevocationChecking.java:17:5:17:8 | this <.field> [post update] : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:21:5:21:31 | this <.method> [post update] : DisabledRevocationChecking [flag] : Boolean | provenance | | +| DisabledRevocationChecking.java:17:12:17:16 | false : Boolean | DisabledRevocationChecking.java:17:5:17:8 | this <.field> [post update] : DisabledRevocationChecking [flag] : Boolean | provenance | | +| DisabledRevocationChecking.java:21:5:21:31 | this <.method> [post update] : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:22:5:22:31 | this <.method> : DisabledRevocationChecking [flag] : Boolean | provenance | | +| DisabledRevocationChecking.java:22:5:22:31 | this <.method> : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:25:15:25:22 | parameter this : DisabledRevocationChecking [flag] : Boolean | provenance | | +| DisabledRevocationChecking.java:25:15:25:22 | parameter this : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:28:33:28:36 | this <.field> : DisabledRevocationChecking [flag] : Boolean | provenance | | +| DisabledRevocationChecking.java:28:33:28:36 | this <.field> : DisabledRevocationChecking [flag] : Boolean | DisabledRevocationChecking.java:28:33:28:36 | flag | provenance | | nodes | DisabledRevocationChecking.java:17:5:17:8 | this <.field> [post update] : DisabledRevocationChecking [flag] : Boolean | semmle.label | this <.field> [post update] : DisabledRevocationChecking [flag] : Boolean | | DisabledRevocationChecking.java:17:12:17:16 | false : Boolean | semmle.label | false : Boolean | diff --git a/java/ql/test/experimental/query-tests/security/CWE-327/UnsafeTlsVersion.expected b/java/ql/test/experimental/query-tests/security/CWE-327/UnsafeTlsVersion.expected index 53315833c147..af60203749cf 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-327/UnsafeTlsVersion.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-327/UnsafeTlsVersion.expected @@ -1,59 +1,59 @@ edges -| UnsafeTlsVersion.java:31:5:31:46 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:31:39:31:45 | "SSLv3" : String | UnsafeTlsVersion.java:31:5:31:46 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:32:5:32:44 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:32:39:32:43 | "TLS" : String | UnsafeTlsVersion.java:32:5:32:44 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:33:5:33:46 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:33:39:33:45 | "TLSv1" : String | UnsafeTlsVersion.java:33:5:33:46 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:34:5:34:48 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:34:39:34:47 | "TLSv1.1" : String | UnsafeTlsVersion.java:34:5:34:48 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:35:5:35:68 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:35:39:35:45 | "TLSv1" : String | UnsafeTlsVersion.java:35:5:35:68 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:35:48:35:56 | "TLSv1.1" : String | UnsafeTlsVersion.java:35:5:35:68 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:44:44:44:52 | protocols | -| UnsafeTlsVersion.java:50:38:50:61 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:50:38:50:61 | new String[] | -| UnsafeTlsVersion.java:50:53:50:59 | "SSLv3" : String | UnsafeTlsVersion.java:50:38:50:61 | {...} : String[] [[]] : String | -| UnsafeTlsVersion.java:51:38:51:59 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:51:38:51:59 | new String[] | -| UnsafeTlsVersion.java:51:53:51:57 | "TLS" : String | UnsafeTlsVersion.java:51:38:51:59 | {...} : String[] [[]] : String | -| UnsafeTlsVersion.java:52:38:52:61 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:52:38:52:61 | new String[] | -| UnsafeTlsVersion.java:52:53:52:59 | "TLSv1" : String | UnsafeTlsVersion.java:52:38:52:61 | {...} : String[] [[]] : String | -| UnsafeTlsVersion.java:53:38:53:63 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:53:38:53:63 | new String[] | -| UnsafeTlsVersion.java:53:53:53:61 | "TLSv1.1" : String | UnsafeTlsVersion.java:53:38:53:63 | {...} : String[] [[]] : String | -| UnsafeTlsVersion.java:56:29:56:65 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:56:29:56:65 | new String[] | -| UnsafeTlsVersion.java:56:44:56:52 | "TLSv1.1" : String | UnsafeTlsVersion.java:56:29:56:65 | {...} : String[] [[]] : String | -| UnsafeTlsVersion.java:68:5:68:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:68:21:68:27 | "SSLv3" : String | UnsafeTlsVersion.java:68:5:68:28 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:69:5:69:26 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:69:21:69:25 | "TLS" : String | UnsafeTlsVersion.java:69:5:69:26 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:70:5:70:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:70:21:70:27 | "TLSv1" : String | UnsafeTlsVersion.java:70:5:70:28 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:71:5:71:30 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:71:21:71:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:71:5:71:30 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:72:5:72:41 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:72:21:72:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:72:5:72:41 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:81:32:81:40 | protocols | -| UnsafeTlsVersion.java:88:5:88:34 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:88:27:88:33 | "SSLv3" : String | UnsafeTlsVersion.java:88:5:88:34 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:89:5:89:32 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:89:27:89:31 | "TLS" : String | UnsafeTlsVersion.java:89:5:89:32 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:90:5:90:34 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:90:27:90:33 | "TLSv1" : String | UnsafeTlsVersion.java:90:5:90:34 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:91:5:91:36 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:91:27:91:35 | "TLSv1.1" : String | UnsafeTlsVersion.java:91:5:91:36 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:92:5:92:47 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:92:27:92:35 | "TLSv1.1" : String | UnsafeTlsVersion.java:92:5:92:47 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:101:32:101:40 | protocols | -| UnsafeTlsVersion.java:108:5:108:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:108:21:108:27 | "SSLv3" : String | UnsafeTlsVersion.java:108:5:108:28 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:109:5:109:26 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:109:21:109:25 | "TLS" : String | UnsafeTlsVersion.java:109:5:109:26 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:110:5:110:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:110:21:110:27 | "TLSv1" : String | UnsafeTlsVersion.java:110:5:110:28 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:111:5:111:30 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:111:21:111:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:111:5:111:30 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:112:5:112:41 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | -| UnsafeTlsVersion.java:112:21:112:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:112:5:112:41 | new ..[] { .. } : String[] [[]] : String | -| UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:121:32:121:40 | protocols | +| UnsafeTlsVersion.java:31:5:31:46 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:31:39:31:45 | "SSLv3" : String | UnsafeTlsVersion.java:31:5:31:46 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:32:5:32:44 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:32:39:32:43 | "TLS" : String | UnsafeTlsVersion.java:32:5:32:44 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:33:5:33:46 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:33:39:33:45 | "TLSv1" : String | UnsafeTlsVersion.java:33:5:33:46 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:34:5:34:48 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:34:39:34:47 | "TLSv1.1" : String | UnsafeTlsVersion.java:34:5:34:48 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:35:5:35:68 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:35:39:35:45 | "TLSv1" : String | UnsafeTlsVersion.java:35:5:35:68 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:35:48:35:56 | "TLSv1.1" : String | UnsafeTlsVersion.java:35:5:35:68 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:43:74:43:92 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:44:44:44:52 | protocols | provenance | | +| UnsafeTlsVersion.java:50:38:50:61 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:50:38:50:61 | new String[] | provenance | | +| UnsafeTlsVersion.java:50:53:50:59 | "SSLv3" : String | UnsafeTlsVersion.java:50:38:50:61 | {...} : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:51:38:51:59 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:51:38:51:59 | new String[] | provenance | | +| UnsafeTlsVersion.java:51:53:51:57 | "TLS" : String | UnsafeTlsVersion.java:51:38:51:59 | {...} : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:52:38:52:61 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:52:38:52:61 | new String[] | provenance | | +| UnsafeTlsVersion.java:52:53:52:59 | "TLSv1" : String | UnsafeTlsVersion.java:52:38:52:61 | {...} : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:53:38:53:63 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:53:38:53:63 | new String[] | provenance | | +| UnsafeTlsVersion.java:53:53:53:61 | "TLSv1.1" : String | UnsafeTlsVersion.java:53:38:53:63 | {...} : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:56:29:56:65 | {...} : String[] [[]] : String | UnsafeTlsVersion.java:56:29:56:65 | new String[] | provenance | | +| UnsafeTlsVersion.java:56:44:56:52 | "TLSv1.1" : String | UnsafeTlsVersion.java:56:29:56:65 | {...} : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:68:5:68:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:68:21:68:27 | "SSLv3" : String | UnsafeTlsVersion.java:68:5:68:28 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:69:5:69:26 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:69:21:69:25 | "TLS" : String | UnsafeTlsVersion.java:69:5:69:26 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:70:5:70:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:70:21:70:27 | "TLSv1" : String | UnsafeTlsVersion.java:70:5:70:28 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:71:5:71:30 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:71:21:71:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:71:5:71:30 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:72:5:72:41 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:72:21:72:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:72:5:72:41 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:79:43:79:61 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:81:32:81:40 | protocols | provenance | | +| UnsafeTlsVersion.java:88:5:88:34 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:88:27:88:33 | "SSLv3" : String | UnsafeTlsVersion.java:88:5:88:34 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:89:5:89:32 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:89:27:89:31 | "TLS" : String | UnsafeTlsVersion.java:89:5:89:32 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:90:5:90:34 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:90:27:90:33 | "TLSv1" : String | UnsafeTlsVersion.java:90:5:90:34 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:91:5:91:36 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:91:27:91:35 | "TLSv1.1" : String | UnsafeTlsVersion.java:91:5:91:36 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:92:5:92:47 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:92:27:92:35 | "TLSv1.1" : String | UnsafeTlsVersion.java:92:5:92:47 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:99:55:99:73 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:101:32:101:40 | protocols | provenance | | +| UnsafeTlsVersion.java:108:5:108:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:108:21:108:27 | "SSLv3" : String | UnsafeTlsVersion.java:108:5:108:28 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:109:5:109:26 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:109:21:109:25 | "TLS" : String | UnsafeTlsVersion.java:109:5:109:26 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:110:5:110:28 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:110:21:110:27 | "TLSv1" : String | UnsafeTlsVersion.java:110:5:110:28 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:111:5:111:30 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:111:21:111:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:111:5:111:30 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:112:5:112:41 | new ..[] { .. } : String[] [[]] : String | UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:112:21:112:29 | "TLSv1.1" : String | UnsafeTlsVersion.java:112:5:112:41 | new ..[] { .. } : String[] [[]] : String | provenance | | +| UnsafeTlsVersion.java:119:43:119:61 | protocols : String[] [[]] : String | UnsafeTlsVersion.java:121:32:121:40 | protocols | provenance | | nodes | UnsafeTlsVersion.java:16:28:16:32 | "SSL" | semmle.label | "SSL" | | UnsafeTlsVersion.java:17:28:17:34 | "SSLv2" | semmle.label | "SSLv2" | diff --git a/java/ql/test/experimental/query-tests/security/CWE-346/UnvalidatedCors.expected b/java/ql/test/experimental/query-tests/security/CWE-346/UnvalidatedCors.expected index 845406aabe71..c803d30fa2fe 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-346/UnvalidatedCors.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-346/UnvalidatedCors.expected @@ -1,5 +1,5 @@ edges -| UnvalidatedCors.java:21:22:21:48 | getHeader(...) : String | UnvalidatedCors.java:27:67:27:69 | url | +| UnvalidatedCors.java:21:22:21:48 | getHeader(...) : String | UnvalidatedCors.java:27:67:27:69 | url | provenance | | nodes | UnvalidatedCors.java:21:22:21:48 | getHeader(...) : String | semmle.label | getHeader(...) : String | | UnvalidatedCors.java:27:67:27:69 | url | semmle.label | url | diff --git a/java/ql/test/experimental/query-tests/security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected b/java/ql/test/experimental/query-tests/security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected index e6589ba17872..1fa40af94f29 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected @@ -1,11 +1,11 @@ edges -| ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:17:37:17:38 | ip | -| ClientSuppliedIpUsedInSecurityCheck.java:24:21:24:33 | getClientIP(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:25:33:25:34 | ip | -| ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:23 | xfHeader : String | -| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:23 | xfHeader : String | ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:34 | split(...) : String[] | -| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:34 | split(...) : String[] | ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | -| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String | -| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | ClientSuppliedIpUsedInSecurityCheck.java:24:21:24:33 | getClientIP(...) : String | +| ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:17:37:17:38 | ip | provenance | | +| ClientSuppliedIpUsedInSecurityCheck.java:24:21:24:33 | getClientIP(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:25:33:25:34 | ip | provenance | | +| ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:23 | xfHeader : String | provenance | | +| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:23 | xfHeader : String | ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:34 | split(...) : String[] | provenance | | +| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:34 | split(...) : String[] | ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | provenance | | +| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String | provenance | | +| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | ClientSuppliedIpUsedInSecurityCheck.java:24:21:24:33 | getClientIP(...) : String | provenance | | nodes | ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String | semmle.label | getClientIP(...) : String | | ClientSuppliedIpUsedInSecurityCheck.java:17:37:17:38 | ip | semmle.label | ip | diff --git a/java/ql/test/experimental/query-tests/security/CWE-352/JsonpInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-352/JsonpInjection.expected index f9bcf7132a2f..3bd9825e18fd 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-352/JsonpInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-352/JsonpInjection.expected @@ -1,11 +1,11 @@ edges -| JsonpController.java:33:32:33:68 | getParameter(...) : String | JsonpController.java:37:16:37:24 | resultStr | -| JsonpController.java:44:32:44:68 | getParameter(...) : String | JsonpController.java:46:16:46:24 | resultStr | -| JsonpController.java:53:32:53:68 | getParameter(...) : String | JsonpController.java:56:16:56:24 | resultStr | -| JsonpController.java:63:32:63:68 | getParameter(...) : String | JsonpController.java:66:16:66:24 | resultStr | -| JsonpController.java:73:32:73:68 | getParameter(...) : String | JsonpController.java:80:20:80:28 | resultStr | -| JsonpController.java:87:32:87:68 | getParameter(...) : String | JsonpController.java:94:20:94:28 | resultStr | -| JsonpController.java:101:32:101:68 | getParameter(...) : String | JsonpController.java:105:16:105:24 | resultStr | +| JsonpController.java:33:32:33:68 | getParameter(...) : String | JsonpController.java:37:16:37:24 | resultStr | provenance | | +| JsonpController.java:44:32:44:68 | getParameter(...) : String | JsonpController.java:46:16:46:24 | resultStr | provenance | | +| JsonpController.java:53:32:53:68 | getParameter(...) : String | JsonpController.java:56:16:56:24 | resultStr | provenance | | +| JsonpController.java:63:32:63:68 | getParameter(...) : String | JsonpController.java:66:16:66:24 | resultStr | provenance | | +| JsonpController.java:73:32:73:68 | getParameter(...) : String | JsonpController.java:80:20:80:28 | resultStr | provenance | | +| JsonpController.java:87:32:87:68 | getParameter(...) : String | JsonpController.java:94:20:94:28 | resultStr | provenance | | +| JsonpController.java:101:32:101:68 | getParameter(...) : String | JsonpController.java:105:16:105:24 | resultStr | provenance | | nodes | JsonpController.java:33:32:33:68 | getParameter(...) : String | semmle.label | getParameter(...) : String | | JsonpController.java:37:16:37:24 | resultStr | semmle.label | resultStr | diff --git a/java/ql/test/experimental/query-tests/security/CWE-400/LocalThreadResourceAbuse.expected b/java/ql/test/experimental/query-tests/security/CWE-400/LocalThreadResourceAbuse.expected index 1f74227841b8..04c8147eac5a 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-400/LocalThreadResourceAbuse.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-400/LocalThreadResourceAbuse.expected @@ -1,12 +1,12 @@ edges -| ThreadResourceAbuse.java:37:25:37:73 | getInitParameter(...) : String | ThreadResourceAbuse.java:40:28:40:36 | delayTime : Number | -| ThreadResourceAbuse.java:40:4:40:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:40:28:40:36 | delayTime : Number | ThreadResourceAbuse.java:40:4:40:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:40:28:40:36 | delayTime : Number | ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | -| ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | -| ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | ThreadResourceAbuse.java:67:4:67:7 | this [post update] : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | waitTime | +| ThreadResourceAbuse.java:37:25:37:73 | getInitParameter(...) : String | ThreadResourceAbuse.java:40:28:40:36 | delayTime : Number | provenance | | +| ThreadResourceAbuse.java:40:4:40:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:40:28:40:36 | delayTime : Number | ThreadResourceAbuse.java:40:4:40:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:40:28:40:36 | delayTime : Number | ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | provenance | | +| ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | provenance | | +| ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | ThreadResourceAbuse.java:67:4:67:7 | this [post update] : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | waitTime | provenance | | nodes | ThreadResourceAbuse.java:37:25:37:73 | getInitParameter(...) : String | semmle.label | getInitParameter(...) : String | | ThreadResourceAbuse.java:40:4:40:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | semmle.label | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | diff --git a/java/ql/test/experimental/query-tests/security/CWE-400/ThreadResourceAbuse.expected b/java/ql/test/experimental/query-tests/security/CWE-400/ThreadResourceAbuse.expected index e79dbfee2d38..635ce2979ffe 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-400/ThreadResourceAbuse.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-400/ThreadResourceAbuse.expected @@ -1,36 +1,36 @@ edges -| ThreadResourceAbuse.java:18:25:18:57 | getParameter(...) : String | ThreadResourceAbuse.java:21:28:21:36 | delayTime : Number | -| ThreadResourceAbuse.java:21:4:21:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:21:28:21:36 | delayTime : Number | ThreadResourceAbuse.java:21:4:21:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:21:28:21:36 | delayTime : Number | ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | -| ThreadResourceAbuse.java:29:82:29:114 | getParameter(...) : String | ThreadResourceAbuse.java:30:28:30:36 | delayTime : Number | -| ThreadResourceAbuse.java:30:4:30:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:30:28:30:36 | delayTime : Number | ThreadResourceAbuse.java:30:4:30:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:30:28:30:36 | delayTime : Number | ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | -| ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | -| ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | ThreadResourceAbuse.java:67:4:67:7 | this [post update] : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | -| ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | waitTime | -| ThreadResourceAbuse.java:141:27:141:43 | getValue(...) : String | ThreadResourceAbuse.java:144:34:144:42 | delayTime | -| ThreadResourceAbuse.java:172:19:172:50 | getHeader(...) : String | ThreadResourceAbuse.java:176:17:176:26 | retryAfter | -| ThreadResourceAbuse.java:206:28:206:56 | getParameter(...) : String | ThreadResourceAbuse.java:209:49:209:59 | uploadDelay : Number | -| ThreadResourceAbuse.java:209:30:209:87 | new UploadListener(...) : UploadListener [slowUploads] : Number | UploadListener.java:28:14:28:19 | parameter this : UploadListener [slowUploads] : Number | -| ThreadResourceAbuse.java:209:49:209:59 | uploadDelay : Number | ThreadResourceAbuse.java:209:30:209:87 | new UploadListener(...) : UploadListener [slowUploads] : Number | -| ThreadResourceAbuse.java:209:49:209:59 | uploadDelay : Number | UploadListener.java:15:24:15:44 | sleepMilliseconds : Number | -| ThreadResourceAbuse.java:215:19:215:50 | getHeader(...) : String | ThreadResourceAbuse.java:219:17:219:26 | retryAfter : Number | -| ThreadResourceAbuse.java:219:17:219:26 | retryAfter : Number | ThreadResourceAbuse.java:219:17:219:33 | ... * ... | -| ThreadResourceAbuse.java:227:19:227:50 | getHeader(...) : String | ThreadResourceAbuse.java:230:3:230:12 | retryAfter : Number | -| ThreadResourceAbuse.java:230:3:230:12 | retryAfter : Number | ThreadResourceAbuse.java:230:3:230:20 | ...*=... : Number | -| ThreadResourceAbuse.java:230:3:230:20 | ...*=... : Number | ThreadResourceAbuse.java:233:17:233:26 | retryAfter | -| UploadListener.java:15:24:15:44 | sleepMilliseconds : Number | UploadListener.java:16:17:16:33 | sleepMilliseconds : Number | -| UploadListener.java:16:17:16:33 | sleepMilliseconds : Number | UploadListener.java:16:3:16:13 | this <.field> [post update] : UploadListener [slowUploads] : Number | -| UploadListener.java:28:14:28:19 | parameter this : UploadListener [slowUploads] : Number | UploadListener.java:29:3:29:11 | this <.field> : UploadListener [slowUploads] : Number | -| UploadListener.java:29:3:29:11 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:30:3:30:15 | this <.field> : UploadListener [slowUploads] : Number | -| UploadListener.java:30:3:30:15 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:33:7:33:17 | this <.field> : UploadListener [slowUploads] : Number | -| UploadListener.java:30:3:30:15 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:35:18:35:28 | this <.field> : UploadListener [slowUploads] : Number | -| UploadListener.java:33:7:33:17 | slowUploads : Number | UploadListener.java:35:18:35:28 | slowUploads | -| UploadListener.java:33:7:33:17 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:33:7:33:17 | slowUploads : Number | -| UploadListener.java:35:18:35:28 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:35:18:35:28 | slowUploads | +| ThreadResourceAbuse.java:18:25:18:57 | getParameter(...) : String | ThreadResourceAbuse.java:21:28:21:36 | delayTime : Number | provenance | | +| ThreadResourceAbuse.java:21:4:21:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:21:28:21:36 | delayTime : Number | ThreadResourceAbuse.java:21:4:21:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:21:28:21:36 | delayTime : Number | ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | provenance | | +| ThreadResourceAbuse.java:29:82:29:114 | getParameter(...) : String | ThreadResourceAbuse.java:30:28:30:36 | delayTime : Number | provenance | | +| ThreadResourceAbuse.java:30:4:30:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:30:28:30:36 | delayTime : Number | ThreadResourceAbuse.java:30:4:30:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:30:28:30:36 | delayTime : Number | ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | provenance | | +| ThreadResourceAbuse.java:66:30:66:41 | waitTime : Number | ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | provenance | | +| ThreadResourceAbuse.java:67:20:67:27 | waitTime : Number | ThreadResourceAbuse.java:67:4:67:7 | this [post update] : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:71:15:71:17 | parameter this : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | provenance | | +| ThreadResourceAbuse.java:74:18:74:25 | this <.field> : UncheckedSyncAction [waitTime] : Number | ThreadResourceAbuse.java:74:18:74:25 | waitTime | provenance | | +| ThreadResourceAbuse.java:141:27:141:43 | getValue(...) : String | ThreadResourceAbuse.java:144:34:144:42 | delayTime | provenance | | +| ThreadResourceAbuse.java:172:19:172:50 | getHeader(...) : String | ThreadResourceAbuse.java:176:17:176:26 | retryAfter | provenance | | +| ThreadResourceAbuse.java:206:28:206:56 | getParameter(...) : String | ThreadResourceAbuse.java:209:49:209:59 | uploadDelay : Number | provenance | | +| ThreadResourceAbuse.java:209:30:209:87 | new UploadListener(...) : UploadListener [slowUploads] : Number | UploadListener.java:28:14:28:19 | parameter this : UploadListener [slowUploads] : Number | provenance | | +| ThreadResourceAbuse.java:209:49:209:59 | uploadDelay : Number | ThreadResourceAbuse.java:209:30:209:87 | new UploadListener(...) : UploadListener [slowUploads] : Number | provenance | | +| ThreadResourceAbuse.java:209:49:209:59 | uploadDelay : Number | UploadListener.java:15:24:15:44 | sleepMilliseconds : Number | provenance | | +| ThreadResourceAbuse.java:215:19:215:50 | getHeader(...) : String | ThreadResourceAbuse.java:219:17:219:26 | retryAfter : Number | provenance | | +| ThreadResourceAbuse.java:219:17:219:26 | retryAfter : Number | ThreadResourceAbuse.java:219:17:219:33 | ... * ... | provenance | | +| ThreadResourceAbuse.java:227:19:227:50 | getHeader(...) : String | ThreadResourceAbuse.java:230:3:230:12 | retryAfter : Number | provenance | | +| ThreadResourceAbuse.java:230:3:230:12 | retryAfter : Number | ThreadResourceAbuse.java:230:3:230:20 | ...*=... : Number | provenance | | +| ThreadResourceAbuse.java:230:3:230:20 | ...*=... : Number | ThreadResourceAbuse.java:233:17:233:26 | retryAfter | provenance | | +| UploadListener.java:15:24:15:44 | sleepMilliseconds : Number | UploadListener.java:16:17:16:33 | sleepMilliseconds : Number | provenance | | +| UploadListener.java:16:17:16:33 | sleepMilliseconds : Number | UploadListener.java:16:3:16:13 | this <.field> [post update] : UploadListener [slowUploads] : Number | provenance | | +| UploadListener.java:28:14:28:19 | parameter this : UploadListener [slowUploads] : Number | UploadListener.java:29:3:29:11 | this <.field> : UploadListener [slowUploads] : Number | provenance | | +| UploadListener.java:29:3:29:11 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:30:3:30:15 | this <.field> : UploadListener [slowUploads] : Number | provenance | | +| UploadListener.java:30:3:30:15 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:33:7:33:17 | this <.field> : UploadListener [slowUploads] : Number | provenance | | +| UploadListener.java:30:3:30:15 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:35:18:35:28 | this <.field> : UploadListener [slowUploads] : Number | provenance | | +| UploadListener.java:33:7:33:17 | slowUploads : Number | UploadListener.java:35:18:35:28 | slowUploads | provenance | | +| UploadListener.java:33:7:33:17 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:33:7:33:17 | slowUploads : Number | provenance | | +| UploadListener.java:35:18:35:28 | this <.field> : UploadListener [slowUploads] : Number | UploadListener.java:35:18:35:28 | slowUploads | provenance | | nodes | ThreadResourceAbuse.java:18:25:18:57 | getParameter(...) : String | semmle.label | getParameter(...) : String | | ThreadResourceAbuse.java:21:4:21:37 | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | semmle.label | new UncheckedSyncAction(...) : UncheckedSyncAction [waitTime] : Number | diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.expected b/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.expected index 23d52993a914..cb7595fb0c3d 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-470/LoadClassNoSignatureCheck.expected @@ -1,7 +1,7 @@ edges -| BadClassLoader.java:15:42:16:75 | createPackageContext(...) : Context | BadClassLoader.java:17:47:17:56 | appContext : Context | -| BadClassLoader.java:17:47:17:56 | appContext : Context | BadClassLoader.java:17:47:17:73 | getClassLoader(...) : ClassLoader | -| BadClassLoader.java:17:47:17:73 | getClassLoader(...) : ClassLoader | BadClassLoader.java:18:37:18:47 | classLoader | +| BadClassLoader.java:15:42:16:75 | createPackageContext(...) : Context | BadClassLoader.java:17:47:17:56 | appContext : Context | provenance | | +| BadClassLoader.java:17:47:17:56 | appContext : Context | BadClassLoader.java:17:47:17:73 | getClassLoader(...) : ClassLoader | provenance | | +| BadClassLoader.java:17:47:17:73 | getClassLoader(...) : ClassLoader | BadClassLoader.java:18:37:18:47 | classLoader | provenance | | nodes | BadClassLoader.java:15:42:16:75 | createPackageContext(...) : Context | semmle.label | createPackageContext(...) : Context | | BadClassLoader.java:17:47:17:56 | appContext : Context | semmle.label | appContext : Context | diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected b/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected index 2e37b50f3f71..37a3e15ea7a1 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected @@ -1,39 +1,39 @@ edges -| UnsafeReflection.java:21:28:21:60 | getParameter(...) : String | UnsafeReflection.java:24:41:24:49 | className : String | -| UnsafeReflection.java:22:33:22:70 | getParameter(...) : String | UnsafeReflection.java:25:76:25:89 | parameterValue | -| UnsafeReflection.java:24:27:24:50 | forName(...) : Class | UnsafeReflection.java:25:29:25:33 | clazz : Class | -| UnsafeReflection.java:24:41:24:49 | className : String | UnsafeReflection.java:24:27:24:50 | forName(...) : Class | -| UnsafeReflection.java:25:29:25:33 | clazz : Class | UnsafeReflection.java:25:29:25:59 | getDeclaredConstructors(...) : Constructor[] | -| UnsafeReflection.java:25:29:25:59 | getDeclaredConstructors(...) : Constructor[] | UnsafeReflection.java:25:29:25:62 | ...[...] | -| UnsafeReflection.java:33:28:33:60 | getParameter(...) : String | UnsafeReflection.java:37:49:37:57 | className : String | -| UnsafeReflection.java:34:33:34:70 | getParameter(...) : String | UnsafeReflection.java:39:58:39:71 | parameterValue | -| UnsafeReflection.java:37:27:37:58 | loadClass(...) : Class | UnsafeReflection.java:38:29:38:33 | clazz : Class | -| UnsafeReflection.java:37:49:37:57 | className : String | UnsafeReflection.java:37:27:37:58 | loadClass(...) : Class | -| UnsafeReflection.java:38:29:38:33 | clazz : Class | UnsafeReflection.java:38:29:38:47 | newInstance(...) : Object | -| UnsafeReflection.java:38:29:38:33 | clazz : Class | UnsafeReflection.java:39:13:39:17 | clazz : Class | -| UnsafeReflection.java:38:29:38:47 | newInstance(...) : Object | UnsafeReflection.java:39:50:39:55 | object | -| UnsafeReflection.java:39:13:39:17 | clazz : Class | UnsafeReflection.java:39:13:39:38 | getDeclaredMethods(...) : Method[] | -| UnsafeReflection.java:39:13:39:38 | getDeclaredMethods(...) : Method[] | UnsafeReflection.java:39:13:39:41 | ...[...] | -| UnsafeReflection.java:46:24:46:82 | beanIdOrClassName : String | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | -| UnsafeReflection.java:46:132:46:168 | body : Map | UnsafeReflection.java:49:37:49:40 | body : Map | -| UnsafeReflection.java:49:23:49:59 | (...)... : List | UnsafeReflection.java:53:67:53:73 | rawData : List | -| UnsafeReflection.java:49:37:49:40 | body : Map | UnsafeReflection.java:49:37:49:59 | get(...) : Object | -| UnsafeReflection.java:49:37:49:59 | get(...) : Object | UnsafeReflection.java:49:23:49:59 | (...)... : List | -| UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | -| UnsafeReflection.java:53:67:53:73 | rawData : List | UnsafeReflection.java:104:102:104:118 | data : List | -| UnsafeReflection.java:62:33:62:70 | getParameter(...) : String | UnsafeReflection.java:68:76:68:89 | parameterValue | -| UnsafeReflection.java:77:33:77:70 | getParameter(...) : String | UnsafeReflection.java:83:76:83:89 | parameterValue | -| UnsafeReflection.java:92:33:92:70 | getParameter(...) : String | UnsafeReflection.java:98:76:98:89 | parameterValue | -| UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | UnsafeReflection.java:108:39:108:55 | beanIdOrClassName : String | -| UnsafeReflection.java:104:102:104:118 | data : List | UnsafeReflection.java:119:41:119:44 | data | -| UnsafeReflection.java:108:25:108:56 | forName(...) : Class | UnsafeReflection.java:109:31:109:39 | beanClass : Class | -| UnsafeReflection.java:108:39:108:55 | beanIdOrClassName : String | UnsafeReflection.java:108:25:108:56 | forName(...) : Class | -| UnsafeReflection.java:109:11:109:40 | getBean(...) : Object | UnsafeReflection.java:113:30:113:33 | bean : Object | -| UnsafeReflection.java:109:31:109:39 | beanClass : Class | UnsafeReflection.java:109:11:109:40 | getBean(...) : Object | -| UnsafeReflection.java:113:30:113:33 | bean : Object | UnsafeReflection.java:113:30:113:44 | getClass(...) : Class | -| UnsafeReflection.java:113:30:113:33 | bean : Object | UnsafeReflection.java:119:35:119:38 | bean | -| UnsafeReflection.java:113:30:113:44 | getClass(...) : Class | UnsafeReflection.java:113:30:113:57 | getMethods(...) : Method[] | -| UnsafeReflection.java:113:30:113:57 | getMethods(...) : Method[] | UnsafeReflection.java:119:21:119:26 | method | +| UnsafeReflection.java:21:28:21:60 | getParameter(...) : String | UnsafeReflection.java:24:41:24:49 | className : String | provenance | | +| UnsafeReflection.java:22:33:22:70 | getParameter(...) : String | UnsafeReflection.java:25:76:25:89 | parameterValue | provenance | | +| UnsafeReflection.java:24:27:24:50 | forName(...) : Class | UnsafeReflection.java:25:29:25:33 | clazz : Class | provenance | | +| UnsafeReflection.java:24:41:24:49 | className : String | UnsafeReflection.java:24:27:24:50 | forName(...) : Class | provenance | | +| UnsafeReflection.java:25:29:25:33 | clazz : Class | UnsafeReflection.java:25:29:25:59 | getDeclaredConstructors(...) : Constructor[] | provenance | | +| UnsafeReflection.java:25:29:25:59 | getDeclaredConstructors(...) : Constructor[] | UnsafeReflection.java:25:29:25:62 | ...[...] | provenance | | +| UnsafeReflection.java:33:28:33:60 | getParameter(...) : String | UnsafeReflection.java:37:49:37:57 | className : String | provenance | | +| UnsafeReflection.java:34:33:34:70 | getParameter(...) : String | UnsafeReflection.java:39:58:39:71 | parameterValue | provenance | | +| UnsafeReflection.java:37:27:37:58 | loadClass(...) : Class | UnsafeReflection.java:38:29:38:33 | clazz : Class | provenance | | +| UnsafeReflection.java:37:49:37:57 | className : String | UnsafeReflection.java:37:27:37:58 | loadClass(...) : Class | provenance | | +| UnsafeReflection.java:38:29:38:33 | clazz : Class | UnsafeReflection.java:38:29:38:47 | newInstance(...) : Object | provenance | | +| UnsafeReflection.java:38:29:38:33 | clazz : Class | UnsafeReflection.java:39:13:39:17 | clazz : Class | provenance | | +| UnsafeReflection.java:38:29:38:47 | newInstance(...) : Object | UnsafeReflection.java:39:50:39:55 | object | provenance | | +| UnsafeReflection.java:39:13:39:17 | clazz : Class | UnsafeReflection.java:39:13:39:38 | getDeclaredMethods(...) : Method[] | provenance | | +| UnsafeReflection.java:39:13:39:38 | getDeclaredMethods(...) : Method[] | UnsafeReflection.java:39:13:39:41 | ...[...] | provenance | | +| UnsafeReflection.java:46:24:46:82 | beanIdOrClassName : String | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | provenance | | +| UnsafeReflection.java:46:132:46:168 | body : Map | UnsafeReflection.java:49:37:49:40 | body : Map | provenance | | +| UnsafeReflection.java:49:23:49:59 | (...)... : List | UnsafeReflection.java:53:67:53:73 | rawData : List | provenance | | +| UnsafeReflection.java:49:37:49:40 | body : Map | UnsafeReflection.java:49:37:49:59 | get(...) : Object | provenance | | +| UnsafeReflection.java:49:37:49:59 | get(...) : Object | UnsafeReflection.java:49:23:49:59 | (...)... : List | provenance | | +| UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | provenance | | +| UnsafeReflection.java:53:67:53:73 | rawData : List | UnsafeReflection.java:104:102:104:118 | data : List | provenance | | +| UnsafeReflection.java:62:33:62:70 | getParameter(...) : String | UnsafeReflection.java:68:76:68:89 | parameterValue | provenance | | +| UnsafeReflection.java:77:33:77:70 | getParameter(...) : String | UnsafeReflection.java:83:76:83:89 | parameterValue | provenance | | +| UnsafeReflection.java:92:33:92:70 | getParameter(...) : String | UnsafeReflection.java:98:76:98:89 | parameterValue | provenance | | +| UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | UnsafeReflection.java:108:39:108:55 | beanIdOrClassName : String | provenance | | +| UnsafeReflection.java:104:102:104:118 | data : List | UnsafeReflection.java:119:41:119:44 | data | provenance | | +| UnsafeReflection.java:108:25:108:56 | forName(...) : Class | UnsafeReflection.java:109:31:109:39 | beanClass : Class | provenance | | +| UnsafeReflection.java:108:39:108:55 | beanIdOrClassName : String | UnsafeReflection.java:108:25:108:56 | forName(...) : Class | provenance | | +| UnsafeReflection.java:109:11:109:40 | getBean(...) : Object | UnsafeReflection.java:113:30:113:33 | bean : Object | provenance | | +| UnsafeReflection.java:109:31:109:39 | beanClass : Class | UnsafeReflection.java:109:11:109:40 | getBean(...) : Object | provenance | | +| UnsafeReflection.java:113:30:113:33 | bean : Object | UnsafeReflection.java:113:30:113:44 | getClass(...) : Class | provenance | | +| UnsafeReflection.java:113:30:113:33 | bean : Object | UnsafeReflection.java:119:35:119:38 | bean | provenance | | +| UnsafeReflection.java:113:30:113:44 | getClass(...) : Class | UnsafeReflection.java:113:30:113:57 | getMethods(...) : Method[] | provenance | | +| UnsafeReflection.java:113:30:113:57 | getMethods(...) : Method[] | UnsafeReflection.java:119:21:119:26 | method | provenance | | nodes | UnsafeReflection.java:21:28:21:60 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeReflection.java:22:33:22:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-502/UnsafeDeserializationRmi.expected b/java/ql/test/experimental/query-tests/security/CWE-502/UnsafeDeserializationRmi.expected index aaa0d3b04380..07b813d01faa 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-502/UnsafeDeserializationRmi.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-502/UnsafeDeserializationRmi.expected @@ -1,5 +1,5 @@ edges -| UnsafeDeserializationRmi.java:17:68:17:95 | new UnsafeRemoteObjectImpl(...) : UnsafeRemoteObjectImpl | UnsafeDeserializationRmi.java:17:35:17:96 | exportObject(...) | +| UnsafeDeserializationRmi.java:17:68:17:95 | new UnsafeRemoteObjectImpl(...) : UnsafeRemoteObjectImpl | UnsafeDeserializationRmi.java:17:35:17:96 | exportObject(...) | provenance | | nodes | UnsafeDeserializationRmi.java:15:33:15:60 | new UnsafeRemoteObjectImpl(...) | semmle.label | new UnsafeRemoteObjectImpl(...) | | UnsafeDeserializationRmi.java:16:35:16:62 | new UnsafeRemoteObjectImpl(...) | semmle.label | new UnsafeRemoteObjectImpl(...) | diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected index 5d809244fdba..545471868e76 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected @@ -1,44 +1,44 @@ edges -| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | -| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | UnsafeLoadSpringResource.java:35:31:35:33 | clr | -| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | -| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | -| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | -| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | -| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:17:20:17:25 | params : Map | -| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | -| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:33:20:33:25 | params : Map | -| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | -| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | UnsafeResourceGet2.java:37:20:37:22 | url | -| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | -| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | -| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | UnsafeResourceGet.java:41:20:41:22 | url | -| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | -| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | -| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | -| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | UnsafeResourceGet.java:150:20:150:22 | url | -| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | -| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | -| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | -| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | UnsafeResourceGet.java:226:20:226:22 | url | -| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | -| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:241:33:241:43 | requestPath : String | -| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | UnsafeResourceGet.java:245:21:245:22 | rs : Resource | -| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | -| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | -| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | -| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | -| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | -| UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | -| UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | -| UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | -| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | -| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | -| UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | -| UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | -| UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | +| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | provenance | | +| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | UnsafeLoadSpringResource.java:35:31:35:33 | clr | provenance | | +| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | provenance | | +| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | provenance | | +| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | provenance | | +| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | provenance | | +| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:17:20:17:25 | params : Map | provenance | | +| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | provenance | | +| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | provenance | | +| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:33:20:33:25 | params : Map | provenance | | +| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | provenance | | +| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | provenance | | +| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | UnsafeResourceGet2.java:37:20:37:22 | url | provenance | | +| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | provenance | | +| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | provenance | | +| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | UnsafeResourceGet.java:41:20:41:22 | url | provenance | | +| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | provenance | | +| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | provenance | | +| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | provenance | | +| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | UnsafeResourceGet.java:150:20:150:22 | url | provenance | | +| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | provenance | | +| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | provenance | | +| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | provenance | | +| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | UnsafeResourceGet.java:226:20:226:22 | url | provenance | | +| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | provenance | | +| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:241:33:241:43 | requestPath : String | provenance | | +| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | UnsafeResourceGet.java:245:21:245:22 | rs : Resource | provenance | | +| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | provenance | | +| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | provenance | | +| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | provenance | | +| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | provenance | | +| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | provenance | | +| UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | provenance | | +| UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | provenance | | +| UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | provenance | | +| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | provenance | | +| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | provenance | | +| UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | provenance | | +| UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | provenance | | +| UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | provenance | | nodes | UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | semmle.label | fileName : String | | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | semmle.label | new ClassPathResource(...) : ClassPathResource | diff --git a/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected b/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected index 284711443749..5d1bec7e0936 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected @@ -1,19 +1,19 @@ edges -| SensitiveGetQuery2.java:12:13:12:37 | getParameterMap(...) : Map | SensitiveGetQuery2.java:14:30:14:32 | map : Map | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password : String | -| SensitiveGetQuery2.java:14:30:14:32 | map : Map | SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | -| SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | -| SensitiveGetQuery2.java:15:29:15:36 | password : String | SensitiveGetQuery2.java:18:40:18:54 | password : String | -| SensitiveGetQuery2.java:18:40:18:54 | password : String | SensitiveGetQuery2.java:19:61:19:68 | password | -| SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | SensitiveGetQuery3.java:13:57:13:64 | password | -| SensitiveGetQuery3.java:17:10:17:40 | getParameter(...) : String | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | -| SensitiveGetQuery4.java:14:24:14:66 | getRequestParameter(...) : String | SensitiveGetQuery4.java:16:37:16:47 | accessToken | -| SensitiveGetQuery4.java:20:10:20:40 | getParameter(...) : String | SensitiveGetQuery4.java:14:24:14:66 | getRequestParameter(...) : String | -| SensitiveGetQuery.java:12:21:12:52 | getParameter(...) : String | SensitiveGetQuery.java:14:29:14:36 | password | -| SensitiveGetQuery.java:12:21:12:52 | getParameter(...) : String | SensitiveGetQuery.java:14:29:14:36 | password : String | -| SensitiveGetQuery.java:14:29:14:36 | password : String | SensitiveGetQuery.java:17:40:17:54 | password : String | -| SensitiveGetQuery.java:17:40:17:54 | password : String | SensitiveGetQuery.java:18:61:18:68 | password | +| SensitiveGetQuery2.java:12:13:12:37 | getParameterMap(...) : Map | SensitiveGetQuery2.java:14:30:14:32 | map : Map | provenance | | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password | provenance | | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password : String | provenance | | +| SensitiveGetQuery2.java:14:30:14:32 | map : Map | SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | provenance | | +| SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | provenance | | +| SensitiveGetQuery2.java:15:29:15:36 | password : String | SensitiveGetQuery2.java:18:40:18:54 | password : String | provenance | | +| SensitiveGetQuery2.java:18:40:18:54 | password : String | SensitiveGetQuery2.java:19:61:19:68 | password | provenance | | +| SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | SensitiveGetQuery3.java:13:57:13:64 | password | provenance | | +| SensitiveGetQuery3.java:17:10:17:40 | getParameter(...) : String | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | provenance | | +| SensitiveGetQuery4.java:14:24:14:66 | getRequestParameter(...) : String | SensitiveGetQuery4.java:16:37:16:47 | accessToken | provenance | | +| SensitiveGetQuery4.java:20:10:20:40 | getParameter(...) : String | SensitiveGetQuery4.java:14:24:14:66 | getRequestParameter(...) : String | provenance | | +| SensitiveGetQuery.java:12:21:12:52 | getParameter(...) : String | SensitiveGetQuery.java:14:29:14:36 | password | provenance | | +| SensitiveGetQuery.java:12:21:12:52 | getParameter(...) : String | SensitiveGetQuery.java:14:29:14:36 | password : String | provenance | | +| SensitiveGetQuery.java:14:29:14:36 | password : String | SensitiveGetQuery.java:17:40:17:54 | password : String | provenance | | +| SensitiveGetQuery.java:17:40:17:54 | password : String | SensitiveGetQuery.java:18:61:18:68 | password | provenance | | nodes | SensitiveGetQuery2.java:12:13:12:37 | getParameterMap(...) : Map | semmle.label | getParameterMap(...) : Map | | SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | semmle.label | (...)... : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-600/UncaughtServletException.expected b/java/ql/test/experimental/query-tests/security/CWE-600/UncaughtServletException.expected index c06301e37fb4..d257ae513247 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-600/UncaughtServletException.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-600/UncaughtServletException.expected @@ -1,8 +1,8 @@ edges -| UncaughtServletException.java:13:15:13:43 | getParameter(...) : String | UncaughtServletException.java:14:44:14:45 | ip | -| UncaughtServletException.java:16:19:16:41 | getRemoteUser(...) : String | UncaughtServletException.java:17:20:17:25 | userId | -| UncaughtServletException.java:54:16:54:44 | getParameter(...) : String | UncaughtServletException.java:55:45:55:46 | ip | -| UncaughtServletException.java:75:21:75:43 | getRemoteUser(...) : String | UncaughtServletException.java:76:22:76:27 | userId | +| UncaughtServletException.java:13:15:13:43 | getParameter(...) : String | UncaughtServletException.java:14:44:14:45 | ip | provenance | | +| UncaughtServletException.java:16:19:16:41 | getRemoteUser(...) : String | UncaughtServletException.java:17:20:17:25 | userId | provenance | | +| UncaughtServletException.java:54:16:54:44 | getParameter(...) : String | UncaughtServletException.java:55:45:55:46 | ip | provenance | | +| UncaughtServletException.java:75:21:75:43 | getRemoteUser(...) : String | UncaughtServletException.java:76:22:76:27 | userId | provenance | | nodes | UncaughtServletException.java:13:15:13:43 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UncaughtServletException.java:14:44:14:45 | ip | semmle.label | ip | diff --git a/java/ql/test/experimental/query-tests/security/CWE-601/SpringUrlRedirect.expected b/java/ql/test/experimental/query-tests/security/CWE-601/SpringUrlRedirect.expected index 2269d357ec61..8042fd3ddedc 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-601/SpringUrlRedirect.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-601/SpringUrlRedirect.expected @@ -1,40 +1,40 @@ edges -| SpringUrlRedirect.java:17:30:17:47 | redirectUrl : String | SpringUrlRedirect.java:19:19:19:29 | redirectUrl | -| SpringUrlRedirect.java:24:24:24:41 | redirectUrl : String | SpringUrlRedirect.java:25:36:25:46 | redirectUrl | -| SpringUrlRedirect.java:30:30:30:47 | redirectUrl : String | SpringUrlRedirect.java:31:44:31:54 | redirectUrl | -| SpringUrlRedirect.java:36:30:36:47 | redirectUrl : String | SpringUrlRedirect.java:37:47:37:57 | redirectUrl | -| SpringUrlRedirect.java:41:24:41:41 | redirectUrl : String | SpringUrlRedirect.java:44:29:44:39 | redirectUrl | -| SpringUrlRedirect.java:49:24:49:41 | redirectUrl : String | SpringUrlRedirect.java:52:30:52:40 | redirectUrl | -| SpringUrlRedirect.java:57:24:57:41 | redirectUrl : String | SpringUrlRedirect.java:58:55:58:65 | redirectUrl : String | -| SpringUrlRedirect.java:58:30:58:66 | new ..[] { .. } : Object[] [[]] : String | SpringUrlRedirect.java:58:30:58:66 | format(...) | -| SpringUrlRedirect.java:58:55:58:65 | redirectUrl : String | SpringUrlRedirect.java:58:30:58:66 | new ..[] { .. } : Object[] [[]] : String | -| SpringUrlRedirect.java:62:24:62:41 | redirectUrl : String | SpringUrlRedirect.java:63:44:63:68 | ... + ... : String | -| SpringUrlRedirect.java:63:44:63:68 | ... + ... : String | SpringUrlRedirect.java:63:30:63:76 | format(...) | -| SpringUrlRedirect.java:89:38:89:55 | redirectUrl : String | SpringUrlRedirect.java:91:38:91:48 | redirectUrl : String | -| SpringUrlRedirect.java:91:38:91:48 | redirectUrl : String | SpringUrlRedirect.java:91:27:91:49 | create(...) | -| SpringUrlRedirect.java:96:39:96:56 | redirectUrl : String | SpringUrlRedirect.java:98:44:98:54 | redirectUrl : String | -| SpringUrlRedirect.java:98:9:98:19 | httpHeaders : HttpHeaders | SpringUrlRedirect.java:100:37:100:47 | httpHeaders | -| SpringUrlRedirect.java:98:33:98:55 | create(...) : URI | SpringUrlRedirect.java:98:9:98:19 | httpHeaders : HttpHeaders | -| SpringUrlRedirect.java:98:44:98:54 | redirectUrl : String | SpringUrlRedirect.java:98:33:98:55 | create(...) : URI | -| SpringUrlRedirect.java:104:39:104:56 | redirectUrl : String | SpringUrlRedirect.java:106:37:106:47 | redirectUrl : String | -| SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders | SpringUrlRedirect.java:108:68:108:78 | httpHeaders | -| SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders [, ] : String | SpringUrlRedirect.java:108:68:108:78 | httpHeaders | -| SpringUrlRedirect.java:106:37:106:47 | redirectUrl : String | SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders | -| SpringUrlRedirect.java:106:37:106:47 | redirectUrl : String | SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders [, ] : String | -| SpringUrlRedirect.java:112:39:112:56 | redirectUrl : String | SpringUrlRedirect.java:114:37:114:47 | redirectUrl : String | -| SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders | SpringUrlRedirect.java:116:37:116:47 | httpHeaders | -| SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders [, ] : String | SpringUrlRedirect.java:116:37:116:47 | httpHeaders | -| SpringUrlRedirect.java:114:37:114:47 | redirectUrl : String | SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders | -| SpringUrlRedirect.java:114:37:114:47 | redirectUrl : String | SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders [, ] : String | -| SpringUrlRedirect.java:120:33:120:50 | redirectUrl : String | SpringUrlRedirect.java:122:37:122:47 | redirectUrl : String | -| SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders | SpringUrlRedirect.java:124:49:124:59 | httpHeaders | -| SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders [, ] : String | SpringUrlRedirect.java:124:49:124:59 | httpHeaders | -| SpringUrlRedirect.java:122:37:122:47 | redirectUrl : String | SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders | -| SpringUrlRedirect.java:122:37:122:47 | redirectUrl : String | SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders [, ] : String | -| SpringUrlRedirect.java:128:33:128:50 | redirectUrl : String | SpringUrlRedirect.java:130:44:130:54 | redirectUrl : String | -| SpringUrlRedirect.java:130:9:130:19 | httpHeaders : HttpHeaders | SpringUrlRedirect.java:132:49:132:59 | httpHeaders | -| SpringUrlRedirect.java:130:33:130:55 | create(...) : URI | SpringUrlRedirect.java:130:9:130:19 | httpHeaders : HttpHeaders | -| SpringUrlRedirect.java:130:44:130:54 | redirectUrl : String | SpringUrlRedirect.java:130:33:130:55 | create(...) : URI | +| SpringUrlRedirect.java:17:30:17:47 | redirectUrl : String | SpringUrlRedirect.java:19:19:19:29 | redirectUrl | provenance | | +| SpringUrlRedirect.java:24:24:24:41 | redirectUrl : String | SpringUrlRedirect.java:25:36:25:46 | redirectUrl | provenance | | +| SpringUrlRedirect.java:30:30:30:47 | redirectUrl : String | SpringUrlRedirect.java:31:44:31:54 | redirectUrl | provenance | | +| SpringUrlRedirect.java:36:30:36:47 | redirectUrl : String | SpringUrlRedirect.java:37:47:37:57 | redirectUrl | provenance | | +| SpringUrlRedirect.java:41:24:41:41 | redirectUrl : String | SpringUrlRedirect.java:44:29:44:39 | redirectUrl | provenance | | +| SpringUrlRedirect.java:49:24:49:41 | redirectUrl : String | SpringUrlRedirect.java:52:30:52:40 | redirectUrl | provenance | | +| SpringUrlRedirect.java:57:24:57:41 | redirectUrl : String | SpringUrlRedirect.java:58:55:58:65 | redirectUrl : String | provenance | | +| SpringUrlRedirect.java:58:30:58:66 | new ..[] { .. } : Object[] [[]] : String | SpringUrlRedirect.java:58:30:58:66 | format(...) | provenance | | +| SpringUrlRedirect.java:58:55:58:65 | redirectUrl : String | SpringUrlRedirect.java:58:30:58:66 | new ..[] { .. } : Object[] [[]] : String | provenance | | +| SpringUrlRedirect.java:62:24:62:41 | redirectUrl : String | SpringUrlRedirect.java:63:44:63:68 | ... + ... : String | provenance | | +| SpringUrlRedirect.java:63:44:63:68 | ... + ... : String | SpringUrlRedirect.java:63:30:63:76 | format(...) | provenance | | +| SpringUrlRedirect.java:89:38:89:55 | redirectUrl : String | SpringUrlRedirect.java:91:38:91:48 | redirectUrl : String | provenance | | +| SpringUrlRedirect.java:91:38:91:48 | redirectUrl : String | SpringUrlRedirect.java:91:27:91:49 | create(...) | provenance | | +| SpringUrlRedirect.java:96:39:96:56 | redirectUrl : String | SpringUrlRedirect.java:98:44:98:54 | redirectUrl : String | provenance | | +| SpringUrlRedirect.java:98:9:98:19 | httpHeaders : HttpHeaders | SpringUrlRedirect.java:100:37:100:47 | httpHeaders | provenance | | +| SpringUrlRedirect.java:98:33:98:55 | create(...) : URI | SpringUrlRedirect.java:98:9:98:19 | httpHeaders : HttpHeaders | provenance | | +| SpringUrlRedirect.java:98:44:98:54 | redirectUrl : String | SpringUrlRedirect.java:98:33:98:55 | create(...) : URI | provenance | | +| SpringUrlRedirect.java:104:39:104:56 | redirectUrl : String | SpringUrlRedirect.java:106:37:106:47 | redirectUrl : String | provenance | | +| SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders | SpringUrlRedirect.java:108:68:108:78 | httpHeaders | provenance | | +| SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders [, ] : String | SpringUrlRedirect.java:108:68:108:78 | httpHeaders | provenance | | +| SpringUrlRedirect.java:106:37:106:47 | redirectUrl : String | SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders | provenance | | +| SpringUrlRedirect.java:106:37:106:47 | redirectUrl : String | SpringUrlRedirect.java:106:9:106:19 | httpHeaders [post update] : HttpHeaders [, ] : String | provenance | | +| SpringUrlRedirect.java:112:39:112:56 | redirectUrl : String | SpringUrlRedirect.java:114:37:114:47 | redirectUrl : String | provenance | | +| SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders | SpringUrlRedirect.java:116:37:116:47 | httpHeaders | provenance | | +| SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders [, ] : String | SpringUrlRedirect.java:116:37:116:47 | httpHeaders | provenance | | +| SpringUrlRedirect.java:114:37:114:47 | redirectUrl : String | SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders | provenance | | +| SpringUrlRedirect.java:114:37:114:47 | redirectUrl : String | SpringUrlRedirect.java:114:9:114:19 | httpHeaders [post update] : HttpHeaders [, ] : String | provenance | | +| SpringUrlRedirect.java:120:33:120:50 | redirectUrl : String | SpringUrlRedirect.java:122:37:122:47 | redirectUrl : String | provenance | | +| SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders | SpringUrlRedirect.java:124:49:124:59 | httpHeaders | provenance | | +| SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders [, ] : String | SpringUrlRedirect.java:124:49:124:59 | httpHeaders | provenance | | +| SpringUrlRedirect.java:122:37:122:47 | redirectUrl : String | SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders | provenance | | +| SpringUrlRedirect.java:122:37:122:47 | redirectUrl : String | SpringUrlRedirect.java:122:9:122:19 | httpHeaders [post update] : HttpHeaders [, ] : String | provenance | | +| SpringUrlRedirect.java:128:33:128:50 | redirectUrl : String | SpringUrlRedirect.java:130:44:130:54 | redirectUrl : String | provenance | | +| SpringUrlRedirect.java:130:9:130:19 | httpHeaders : HttpHeaders | SpringUrlRedirect.java:132:49:132:59 | httpHeaders | provenance | | +| SpringUrlRedirect.java:130:33:130:55 | create(...) : URI | SpringUrlRedirect.java:130:9:130:19 | httpHeaders : HttpHeaders | provenance | | +| SpringUrlRedirect.java:130:44:130:54 | redirectUrl : String | SpringUrlRedirect.java:130:33:130:55 | create(...) : URI | provenance | | nodes | SpringUrlRedirect.java:17:30:17:47 | redirectUrl : String | semmle.label | redirectUrl : String | | SpringUrlRedirect.java:19:19:19:29 | redirectUrl | semmle.label | redirectUrl | diff --git a/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected b/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected index c8a387fa33d2..d6e5f12ec299 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected @@ -1,22 +1,22 @@ edges -| DotRegexFilter.java:29:19:29:43 | getPathInfo(...) : String | DotRegexFilter.java:32:25:32:30 | source | -| DotRegexServlet.java:19:19:19:39 | getPathInfo(...) : String | DotRegexServlet.java:22:25:22:30 | source | -| DotRegexServlet.java:57:19:57:41 | getRequestURI(...) : String | DotRegexServlet.java:59:21:59:26 | source | -| DotRegexServlet.java:75:19:75:39 | getPathInfo(...) : String | DotRegexServlet.java:77:56:77:61 | source | -| DotRegexServlet.java:112:19:112:39 | getPathInfo(...) : String | DotRegexServlet.java:115:25:115:30 | source | -| DotRegexSpring.java:20:26:20:50 | path : String | DotRegexSpring.java:22:21:22:24 | path : String | -| DotRegexSpring.java:22:10:22:25 | decodePath(...) : String | DotRegexSpring.java:23:25:23:28 | path | -| DotRegexSpring.java:22:21:22:24 | path : String | DotRegexSpring.java:22:10:22:25 | decodePath(...) : String | -| DotRegexSpring.java:22:21:22:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | -| DotRegexSpring.java:37:40:37:64 | path : String | DotRegexSpring.java:39:21:39:24 | path : String | -| DotRegexSpring.java:39:10:39:25 | decodePath(...) : String | DotRegexSpring.java:40:25:40:28 | path | -| DotRegexSpring.java:39:21:39:24 | path : String | DotRegexSpring.java:39:10:39:25 | decodePath(...) : String | -| DotRegexSpring.java:39:21:39:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | -| DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:71:29:71:32 | path : String | -| DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:73:10:73:13 | path : String | -| DotRegexSpring.java:71:11:71:42 | decode(...) : String | DotRegexSpring.java:71:29:71:32 | path : String | -| DotRegexSpring.java:71:11:71:42 | decode(...) : String | DotRegexSpring.java:73:10:73:13 | path : String | -| DotRegexSpring.java:71:29:71:32 | path : String | DotRegexSpring.java:71:11:71:42 | decode(...) : String | +| DotRegexFilter.java:29:19:29:43 | getPathInfo(...) : String | DotRegexFilter.java:32:25:32:30 | source | provenance | | +| DotRegexServlet.java:19:19:19:39 | getPathInfo(...) : String | DotRegexServlet.java:22:25:22:30 | source | provenance | | +| DotRegexServlet.java:57:19:57:41 | getRequestURI(...) : String | DotRegexServlet.java:59:21:59:26 | source | provenance | | +| DotRegexServlet.java:75:19:75:39 | getPathInfo(...) : String | DotRegexServlet.java:77:56:77:61 | source | provenance | | +| DotRegexServlet.java:112:19:112:39 | getPathInfo(...) : String | DotRegexServlet.java:115:25:115:30 | source | provenance | | +| DotRegexSpring.java:20:26:20:50 | path : String | DotRegexSpring.java:22:21:22:24 | path : String | provenance | | +| DotRegexSpring.java:22:10:22:25 | decodePath(...) : String | DotRegexSpring.java:23:25:23:28 | path | provenance | | +| DotRegexSpring.java:22:21:22:24 | path : String | DotRegexSpring.java:22:10:22:25 | decodePath(...) : String | provenance | | +| DotRegexSpring.java:22:21:22:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | provenance | | +| DotRegexSpring.java:37:40:37:64 | path : String | DotRegexSpring.java:39:21:39:24 | path : String | provenance | | +| DotRegexSpring.java:39:10:39:25 | decodePath(...) : String | DotRegexSpring.java:40:25:40:28 | path | provenance | | +| DotRegexSpring.java:39:21:39:24 | path : String | DotRegexSpring.java:39:10:39:25 | decodePath(...) : String | provenance | | +| DotRegexSpring.java:39:21:39:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | provenance | | +| DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:71:29:71:32 | path : String | provenance | | +| DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:73:10:73:13 | path : String | provenance | | +| DotRegexSpring.java:71:11:71:42 | decode(...) : String | DotRegexSpring.java:71:29:71:32 | path : String | provenance | | +| DotRegexSpring.java:71:11:71:42 | decode(...) : String | DotRegexSpring.java:73:10:73:13 | path : String | provenance | | +| DotRegexSpring.java:71:29:71:32 | path : String | DotRegexSpring.java:71:11:71:42 | decode(...) : String | provenance | | nodes | DotRegexFilter.java:29:19:29:43 | getPathInfo(...) : String | semmle.label | getPathInfo(...) : String | | DotRegexFilter.java:32:25:32:30 | source | semmle.label | source | diff --git a/java/ql/test/experimental/query-tests/security/CWE-652/XQueryInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-652/XQueryInjection.expected index 47dfb5f426e1..60b0f3977ee0 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-652/XQueryInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-652/XQueryInjection.expected @@ -1,31 +1,31 @@ edges -| XQueryInjection.java:45:23:45:50 | getParameter(...) : String | XQueryInjection.java:50:60:50:64 | query : String | -| XQueryInjection.java:50:37:50:65 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:51:35:51:38 | xqpe | -| XQueryInjection.java:50:60:50:64 | query : String | XQueryInjection.java:50:37:50:65 | prepareExpression(...) : XQPreparedExpression | -| XQueryInjection.java:59:23:59:50 | getParameter(...) : String | XQueryInjection.java:65:53:65:57 | query | -| XQueryInjection.java:73:32:73:59 | nameStr : String | XQueryInjection.java:78:60:78:64 | query : String | -| XQueryInjection.java:78:37:78:65 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:79:35:79:38 | xqpe | -| XQueryInjection.java:78:60:78:64 | query : String | XQueryInjection.java:78:37:78:65 | prepareExpression(...) : XQPreparedExpression | -| XQueryInjection.java:86:33:86:60 | nameStr : String | XQueryInjection.java:92:53:92:57 | query | -| XQueryInjection.java:100:28:100:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:103:60:103:63 | name : ServletInputStream | -| XQueryInjection.java:103:37:103:64 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:104:35:104:38 | xqpe | -| XQueryInjection.java:103:60:103:63 | name : ServletInputStream | XQueryInjection.java:103:37:103:64 | prepareExpression(...) : XQPreparedExpression | -| XQueryInjection.java:112:28:112:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:116:53:116:56 | name | -| XQueryInjection.java:124:28:124:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:125:70:125:73 | name : ServletInputStream | -| XQueryInjection.java:125:29:125:75 | new BufferedReader(...) : BufferedReader | XQueryInjection.java:128:60:128:61 | br : BufferedReader | -| XQueryInjection.java:125:48:125:74 | new InputStreamReader(...) : InputStreamReader | XQueryInjection.java:125:29:125:75 | new BufferedReader(...) : BufferedReader | -| XQueryInjection.java:125:70:125:73 | name : ServletInputStream | XQueryInjection.java:125:48:125:74 | new InputStreamReader(...) : InputStreamReader | -| XQueryInjection.java:128:37:128:62 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:129:35:129:38 | xqpe | -| XQueryInjection.java:128:60:128:61 | br : BufferedReader | XQueryInjection.java:128:37:128:62 | prepareExpression(...) : XQPreparedExpression | -| XQueryInjection.java:137:28:137:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:138:70:138:73 | name : ServletInputStream | -| XQueryInjection.java:138:29:138:75 | new BufferedReader(...) : BufferedReader | XQueryInjection.java:142:53:142:54 | br | -| XQueryInjection.java:138:48:138:74 | new InputStreamReader(...) : InputStreamReader | XQueryInjection.java:138:29:138:75 | new BufferedReader(...) : BufferedReader | -| XQueryInjection.java:138:70:138:73 | name : ServletInputStream | XQueryInjection.java:138:48:138:74 | new InputStreamReader(...) : InputStreamReader | -| XQueryInjection.java:150:23:150:50 | getParameter(...) : String | XQueryInjection.java:155:29:155:32 | name | -| XQueryInjection.java:157:26:157:49 | getInputStream(...) : ServletInputStream | XQueryInjection.java:158:70:158:71 | is : ServletInputStream | -| XQueryInjection.java:158:29:158:73 | new BufferedReader(...) : BufferedReader | XQueryInjection.java:159:29:159:30 | br | -| XQueryInjection.java:158:48:158:72 | new InputStreamReader(...) : InputStreamReader | XQueryInjection.java:158:29:158:73 | new BufferedReader(...) : BufferedReader | -| XQueryInjection.java:158:70:158:71 | is : ServletInputStream | XQueryInjection.java:158:48:158:72 | new InputStreamReader(...) : InputStreamReader | +| XQueryInjection.java:45:23:45:50 | getParameter(...) : String | XQueryInjection.java:50:60:50:64 | query : String | provenance | | +| XQueryInjection.java:50:37:50:65 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:51:35:51:38 | xqpe | provenance | | +| XQueryInjection.java:50:60:50:64 | query : String | XQueryInjection.java:50:37:50:65 | prepareExpression(...) : XQPreparedExpression | provenance | | +| XQueryInjection.java:59:23:59:50 | getParameter(...) : String | XQueryInjection.java:65:53:65:57 | query | provenance | | +| XQueryInjection.java:73:32:73:59 | nameStr : String | XQueryInjection.java:78:60:78:64 | query : String | provenance | | +| XQueryInjection.java:78:37:78:65 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:79:35:79:38 | xqpe | provenance | | +| XQueryInjection.java:78:60:78:64 | query : String | XQueryInjection.java:78:37:78:65 | prepareExpression(...) : XQPreparedExpression | provenance | | +| XQueryInjection.java:86:33:86:60 | nameStr : String | XQueryInjection.java:92:53:92:57 | query | provenance | | +| XQueryInjection.java:100:28:100:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:103:60:103:63 | name : ServletInputStream | provenance | | +| XQueryInjection.java:103:37:103:64 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:104:35:104:38 | xqpe | provenance | | +| XQueryInjection.java:103:60:103:63 | name : ServletInputStream | XQueryInjection.java:103:37:103:64 | prepareExpression(...) : XQPreparedExpression | provenance | | +| XQueryInjection.java:112:28:112:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:116:53:116:56 | name | provenance | | +| XQueryInjection.java:124:28:124:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:125:70:125:73 | name : ServletInputStream | provenance | | +| XQueryInjection.java:125:29:125:75 | new BufferedReader(...) : BufferedReader | XQueryInjection.java:128:60:128:61 | br : BufferedReader | provenance | | +| XQueryInjection.java:125:48:125:74 | new InputStreamReader(...) : InputStreamReader | XQueryInjection.java:125:29:125:75 | new BufferedReader(...) : BufferedReader | provenance | | +| XQueryInjection.java:125:70:125:73 | name : ServletInputStream | XQueryInjection.java:125:48:125:74 | new InputStreamReader(...) : InputStreamReader | provenance | | +| XQueryInjection.java:128:37:128:62 | prepareExpression(...) : XQPreparedExpression | XQueryInjection.java:129:35:129:38 | xqpe | provenance | | +| XQueryInjection.java:128:60:128:61 | br : BufferedReader | XQueryInjection.java:128:37:128:62 | prepareExpression(...) : XQPreparedExpression | provenance | | +| XQueryInjection.java:137:28:137:51 | getInputStream(...) : ServletInputStream | XQueryInjection.java:138:70:138:73 | name : ServletInputStream | provenance | | +| XQueryInjection.java:138:29:138:75 | new BufferedReader(...) : BufferedReader | XQueryInjection.java:142:53:142:54 | br | provenance | | +| XQueryInjection.java:138:48:138:74 | new InputStreamReader(...) : InputStreamReader | XQueryInjection.java:138:29:138:75 | new BufferedReader(...) : BufferedReader | provenance | | +| XQueryInjection.java:138:70:138:73 | name : ServletInputStream | XQueryInjection.java:138:48:138:74 | new InputStreamReader(...) : InputStreamReader | provenance | | +| XQueryInjection.java:150:23:150:50 | getParameter(...) : String | XQueryInjection.java:155:29:155:32 | name | provenance | | +| XQueryInjection.java:157:26:157:49 | getInputStream(...) : ServletInputStream | XQueryInjection.java:158:70:158:71 | is : ServletInputStream | provenance | | +| XQueryInjection.java:158:29:158:73 | new BufferedReader(...) : BufferedReader | XQueryInjection.java:159:29:159:30 | br | provenance | | +| XQueryInjection.java:158:48:158:72 | new InputStreamReader(...) : InputStreamReader | XQueryInjection.java:158:29:158:73 | new BufferedReader(...) : BufferedReader | provenance | | +| XQueryInjection.java:158:70:158:71 | is : ServletInputStream | XQueryInjection.java:158:48:158:72 | new InputStreamReader(...) : InputStreamReader | provenance | | nodes | XQueryInjection.java:45:23:45:50 | getParameter(...) : String | semmle.label | getParameter(...) : String | | XQueryInjection.java:50:37:50:65 | prepareExpression(...) : XQPreparedExpression | semmle.label | prepareExpression(...) : XQPreparedExpression | diff --git a/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected b/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected index 5f0e5b028f90..80df54d749a2 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected @@ -1,13 +1,13 @@ edges -| NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | -| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | -| NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | -| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | -| NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | -| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | -| NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | +| NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | provenance | | +| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | provenance | | +| NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | provenance | | +| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | provenance | | +| NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | provenance | | +| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | provenance | | +| NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | provenance | | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | provenance | | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | provenance | | nodes | NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | | NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-759/HashWithoutSalt.expected b/java/ql/test/experimental/query-tests/security/CWE-759/HashWithoutSalt.expected index 8681b437222a..9666029ebdc2 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-759/HashWithoutSalt.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-759/HashWithoutSalt.expected @@ -1,10 +1,10 @@ edges -| HashWithoutSalt.java:10:36:10:43 | password : String | HashWithoutSalt.java:10:36:10:54 | getBytes(...) | -| HashWithoutSalt.java:25:13:25:20 | password : String | HashWithoutSalt.java:25:13:25:31 | getBytes(...) | -| HashWithoutSalt.java:93:22:93:29 | password : String | HashWithoutSalt.java:93:22:93:40 | getBytes(...) : byte[] | -| HashWithoutSalt.java:93:22:93:40 | getBytes(...) : byte[] | HashWithoutSalt.java:94:17:94:25 | passBytes | -| HashWithoutSalt.java:111:22:111:29 | password : String | HashWithoutSalt.java:111:22:111:40 | getBytes(...) : byte[] | -| HashWithoutSalt.java:111:22:111:40 | getBytes(...) : byte[] | HashWithoutSalt.java:112:18:112:26 | passBytes | +| HashWithoutSalt.java:10:36:10:43 | password : String | HashWithoutSalt.java:10:36:10:54 | getBytes(...) | provenance | | +| HashWithoutSalt.java:25:13:25:20 | password : String | HashWithoutSalt.java:25:13:25:31 | getBytes(...) | provenance | | +| HashWithoutSalt.java:93:22:93:29 | password : String | HashWithoutSalt.java:93:22:93:40 | getBytes(...) : byte[] | provenance | | +| HashWithoutSalt.java:93:22:93:40 | getBytes(...) : byte[] | HashWithoutSalt.java:94:17:94:25 | passBytes | provenance | | +| HashWithoutSalt.java:111:22:111:29 | password : String | HashWithoutSalt.java:111:22:111:40 | getBytes(...) : byte[] | provenance | | +| HashWithoutSalt.java:111:22:111:40 | getBytes(...) : byte[] | HashWithoutSalt.java:112:18:112:26 | passBytes | provenance | | nodes | HashWithoutSalt.java:10:36:10:43 | password : String | semmle.label | password : String | | HashWithoutSalt.java:10:36:10:54 | getBytes(...) | semmle.label | getBytes(...) | diff --git a/java/ql/test/library-tests/dataflow/call-sensitivity/flow.expected b/java/ql/test/library-tests/dataflow/call-sensitivity/flow.expected index 05552beb5d9c..dc35379e71ee 100644 --- a/java/ql/test/library-tests/dataflow/call-sensitivity/flow.expected +++ b/java/ql/test/library-tests/dataflow/call-sensitivity/flow.expected @@ -1,37 +1,37 @@ edges -| A2.java:15:15:15:28 | new Integer(...) : Number | A2.java:27:27:27:34 | o : Number | -| A2.java:27:27:27:34 | o : Number | A2.java:29:9:29:9 | o | -| A.java:6:28:6:35 | o : Number | A.java:8:11:8:11 | o : Number | -| A.java:6:28:6:35 | o : Number | A.java:8:11:8:11 | o : Number | -| A.java:14:29:14:36 | o : Number | A.java:16:9:16:9 | o | -| A.java:20:30:20:37 | o : Number | A.java:22:9:22:9 | o | -| A.java:26:31:26:38 | o : Number | A.java:28:9:28:9 | o | -| A.java:32:35:32:42 | o : Number | A.java:40:8:40:9 | o3 | -| A.java:43:36:43:43 | o : Number | A.java:51:8:51:9 | o3 | -| A.java:43:36:43:43 | o : Number | A.java:51:8:51:9 | o3 | -| A.java:43:36:43:43 | o : Number | A.java:51:8:51:9 | o3 | -| A.java:62:18:62:31 | new Integer(...) : Number | A.java:14:29:14:36 | o : Number | -| A.java:63:19:63:32 | new Integer(...) : Number | A.java:20:30:20:37 | o : Number | -| A.java:64:20:64:33 | new Integer(...) : Number | A.java:26:31:26:38 | o : Number | -| A.java:65:24:65:37 | new Integer(...) : Number | A.java:32:35:32:42 | o : Number | -| A.java:66:25:66:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | -| A.java:67:25:67:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | -| A.java:68:25:68:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | -| A.java:69:20:69:33 | new Integer(...) : Number | A.java:6:28:6:35 | o : Number | -| A.java:69:20:69:33 | new Integer(...) : Number | A.java:69:8:69:40 | flowThrough(...) | -| A.java:71:25:71:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | -| A.java:84:18:84:31 | new Integer(...) : Number | A.java:14:29:14:36 | o : Number | -| A.java:85:19:85:32 | new Integer(...) : Number | A.java:20:30:20:37 | o : Number | -| A.java:86:20:86:33 | new Integer(...) : Number | A.java:26:31:26:38 | o : Number | -| A.java:87:24:87:37 | new Integer(...) : Number | A.java:32:35:32:42 | o : Number | -| A.java:88:20:88:33 | new Integer(...) : Number | A.java:6:28:6:35 | o : Number | -| A.java:88:20:88:33 | new Integer(...) : Number | A.java:88:8:88:37 | flowThrough(...) | -| A.java:99:20:99:33 | new Integer(...) : Number | A.java:106:30:106:37 | o : Number | -| A.java:100:21:100:34 | new Integer(...) : Number | A.java:113:31:113:38 | o : Number | -| A.java:101:26:101:39 | new Integer(...) : Number | A.java:120:36:120:43 | o : Number | -| A.java:106:30:106:37 | o : Number | A.java:108:10:108:10 | o | -| A.java:113:31:113:38 | o : Number | A.java:115:10:115:10 | o | -| A.java:120:36:120:43 | o : Number | A.java:128:9:128:10 | o3 | +| A2.java:15:15:15:28 | new Integer(...) : Number | A2.java:27:27:27:34 | o : Number | provenance | | +| A2.java:27:27:27:34 | o : Number | A2.java:29:9:29:9 | o | provenance | | +| A.java:6:28:6:35 | o : Number | A.java:8:11:8:11 | o : Number | provenance | | +| A.java:6:28:6:35 | o : Number | A.java:8:11:8:11 | o : Number | provenance | | +| A.java:14:29:14:36 | o : Number | A.java:16:9:16:9 | o | provenance | | +| A.java:20:30:20:37 | o : Number | A.java:22:9:22:9 | o | provenance | | +| A.java:26:31:26:38 | o : Number | A.java:28:9:28:9 | o | provenance | | +| A.java:32:35:32:42 | o : Number | A.java:40:8:40:9 | o3 | provenance | | +| A.java:43:36:43:43 | o : Number | A.java:51:8:51:9 | o3 | provenance | | +| A.java:43:36:43:43 | o : Number | A.java:51:8:51:9 | o3 | provenance | | +| A.java:43:36:43:43 | o : Number | A.java:51:8:51:9 | o3 | provenance | | +| A.java:62:18:62:31 | new Integer(...) : Number | A.java:14:29:14:36 | o : Number | provenance | | +| A.java:63:19:63:32 | new Integer(...) : Number | A.java:20:30:20:37 | o : Number | provenance | | +| A.java:64:20:64:33 | new Integer(...) : Number | A.java:26:31:26:38 | o : Number | provenance | | +| A.java:65:24:65:37 | new Integer(...) : Number | A.java:32:35:32:42 | o : Number | provenance | | +| A.java:66:25:66:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | provenance | | +| A.java:67:25:67:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | provenance | | +| A.java:68:25:68:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | provenance | | +| A.java:69:20:69:33 | new Integer(...) : Number | A.java:6:28:6:35 | o : Number | provenance | | +| A.java:69:20:69:33 | new Integer(...) : Number | A.java:69:8:69:40 | flowThrough(...) | provenance | | +| A.java:71:25:71:38 | new Integer(...) : Number | A.java:43:36:43:43 | o : Number | provenance | | +| A.java:84:18:84:31 | new Integer(...) : Number | A.java:14:29:14:36 | o : Number | provenance | | +| A.java:85:19:85:32 | new Integer(...) : Number | A.java:20:30:20:37 | o : Number | provenance | | +| A.java:86:20:86:33 | new Integer(...) : Number | A.java:26:31:26:38 | o : Number | provenance | | +| A.java:87:24:87:37 | new Integer(...) : Number | A.java:32:35:32:42 | o : Number | provenance | | +| A.java:88:20:88:33 | new Integer(...) : Number | A.java:6:28:6:35 | o : Number | provenance | | +| A.java:88:20:88:33 | new Integer(...) : Number | A.java:88:8:88:37 | flowThrough(...) | provenance | | +| A.java:99:20:99:33 | new Integer(...) : Number | A.java:106:30:106:37 | o : Number | provenance | | +| A.java:100:21:100:34 | new Integer(...) : Number | A.java:113:31:113:38 | o : Number | provenance | | +| A.java:101:26:101:39 | new Integer(...) : Number | A.java:120:36:120:43 | o : Number | provenance | | +| A.java:106:30:106:37 | o : Number | A.java:108:10:108:10 | o | provenance | | +| A.java:113:31:113:38 | o : Number | A.java:115:10:115:10 | o | provenance | | +| A.java:120:36:120:43 | o : Number | A.java:128:9:128:10 | o3 | provenance | | nodes | A2.java:15:15:15:28 | new Integer(...) : Number | semmle.label | new Integer(...) : Number | | A2.java:27:27:27:34 | o : Number | semmle.label | o : Number | diff --git a/java/ql/test/library-tests/dataflow/inoutbarriers/A.java b/java/ql/test/library-tests/dataflow/inoutbarriers/A.java index 51604991371b..692077018371 100644 --- a/java/ql/test/library-tests/dataflow/inoutbarriers/A.java +++ b/java/ql/test/library-tests/dataflow/inoutbarriers/A.java @@ -1,10 +1,17 @@ class A { static String fsrc = ""; + String fsink = ""; String src(String s) { return s; } void sink(String s) { } + static String flowThroughSink(String s) { + A obj = new A(); + obj.fsink = s; + return obj.fsink; + } + void foo() { String s = fsrc; sink(fsrc); @@ -13,5 +20,9 @@ void foo() { sink(s); sink(s); + + s = fsrc; + s = flowThroughSink(s); + sink(s); } } diff --git a/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected b/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected index de785df0a1d4..90f99161585a 100644 --- a/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected +++ b/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected @@ -1,7 +1,9 @@ inconsistentFlow #select -| A.java:9:16:9:19 | fsrc | A.java:13:10:13:10 | s | nobarrier, sinkbarrier | -| A.java:9:16:9:19 | fsrc | A.java:15:10:15:10 | s | nobarrier | -| A.java:10:10:10:13 | fsrc | A.java:10:10:10:13 | fsrc | both, nobarrier, sinkbarrier, srcbarrier | -| A.java:12:9:12:14 | src(...) | A.java:13:10:13:10 | s | both, nobarrier, sinkbarrier, srcbarrier | -| A.java:12:9:12:14 | src(...) | A.java:15:10:15:10 | s | nobarrier, srcbarrier | +| A.java:16:16:16:19 | fsrc | A.java:20:10:20:10 | s | nobarrier, sinkbarrier | +| A.java:16:16:16:19 | fsrc | A.java:22:10:22:10 | s | nobarrier | +| A.java:17:10:17:13 | fsrc | A.java:17:10:17:13 | fsrc | both, nobarrier, sinkbarrier, srcbarrier | +| A.java:19:9:19:14 | src(...) | A.java:20:10:20:10 | s | both, nobarrier, sinkbarrier, srcbarrier | +| A.java:19:9:19:14 | src(...) | A.java:22:10:22:10 | s | nobarrier, srcbarrier | +| A.java:24:9:24:12 | fsrc | A.java:11:17:11:17 | s | both, nobarrier, sinkbarrier, srcbarrier | +| A.java:24:9:24:12 | fsrc | A.java:26:10:26:10 | s | nobarrier, srcbarrier | diff --git a/java/ql/test/library-tests/dataflow/inoutbarriers/test.ql b/java/ql/test/library-tests/dataflow/inoutbarriers/test.ql index 82d35f0483cc..7972386a2dca 100644 --- a/java/ql/test/library-tests/dataflow/inoutbarriers/test.ql +++ b/java/ql/test/library-tests/dataflow/inoutbarriers/test.ql @@ -12,6 +12,11 @@ predicate sink0(Node n) { sink.getMethod().hasName("sink") and sink.getAnArgument() = n.asExpr() ) + or + exists(AssignExpr assign | + assign.getDest().(FieldAccess).getField().hasName("fsink") and + n.asExpr() = assign.getSource() + ) } module Conf1 implements ConfigSig { diff --git a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected index 9dbde2c728d9..9be77dca3332 100644 --- a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected +++ b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected @@ -1,14 +1,14 @@ edges -| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | -| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | -| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | -| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | -| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | +| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | provenance | | +| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | provenance | | +| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | provenance | | +| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | provenance | | nodes | Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] | | Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String | diff --git a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected index 69fad09766d4..c3d7b2f7a5f9 100644 --- a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected +++ b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest2.expected @@ -1,16 +1,16 @@ edges -| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | -| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | -| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | -| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | -| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | +| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | provenance | | +| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | provenance | | +| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | provenance | | +| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | provenance | | nodes | Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] | | Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String | diff --git a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected index 35b2d7049a22..301b7bdc9110 100644 --- a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected +++ b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest3.expected @@ -1,26 +1,26 @@ edges -| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | -| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | -| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | -| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | -| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | -| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... | -| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result | -| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | -| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | -| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | -| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | +| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | provenance | | +| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | provenance | | +| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | provenance | | +| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | provenance | | +| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... | provenance | | +| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result | provenance | | +| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | provenance | | +| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | provenance | | nodes | Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] | | Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String | diff --git a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected index 44f01c1485e6..0c536214b5ba 100644 --- a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected +++ b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest4.expected @@ -1,28 +1,28 @@ edges -| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | -| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | -| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | -| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | -| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | -| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... | -| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result | -| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:55:26:55:68 | ... + ... | -| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:58:36:58:41 | result | -| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | -| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | -| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | -| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | +| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | provenance | | +| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | provenance | | +| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | provenance | | +| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | provenance | | +| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... | provenance | | +| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result | provenance | | +| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:55:26:55:68 | ... + ... | provenance | | +| Test.java:52:21:52:47 | getCustom(...) : String | Test.java:58:36:58:41 | result | provenance | | +| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | provenance | | +| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | provenance | | nodes | Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] | | Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String | diff --git a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected index d535ba38f989..7a0b1572ac54 100644 --- a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected +++ b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest5.expected @@ -1,24 +1,24 @@ edges -| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | -| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | -| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | -| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | -| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | -| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... | -| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result | -| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | -| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | -| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | -| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | +| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | provenance | | +| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | provenance | | +| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | provenance | | +| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | provenance | | +| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:44:26:44:68 | ... + ... | provenance | | +| Test.java:41:21:41:49 | readEnv(...) : String | Test.java:47:36:47:41 | result | provenance | | +| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | provenance | | +| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | provenance | | nodes | Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] | | Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String | diff --git a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected index 9b5109ab7e97..ba132f5b7395 100644 --- a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected +++ b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest6.expected @@ -1,24 +1,24 @@ edges -| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | -| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | -| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | -| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | -| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | -| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | -| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | -| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | -| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | -| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | -| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | -| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | -| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | +| Test.java:10:31:10:41 | data : byte[] | Test.java:11:23:11:26 | data : byte[] | provenance | | +| Test.java:11:23:11:26 | data : byte[] | Test.java:11:12:11:51 | new String(...) : String | provenance | | +| Test.java:19:5:19:25 | getInputStream(...) : InputStream | Test.java:19:32:19:35 | data [post update] : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:22:49:22:52 | data : byte[] | provenance | | +| Test.java:19:32:19:35 | data [post update] : byte[] | Test.java:25:69:25:72 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:22:49:22:52 | data : byte[] | Test.java:22:36:22:53 | byteToString(...) | provenance | | +| Test.java:25:56:25:73 | byteToString(...) : String | Test.java:25:26:25:80 | ... + ... | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:25:69:25:72 | data : byte[] | Test.java:25:56:25:73 | byteToString(...) : String | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:33:26:33:68 | ... + ... | provenance | | +| Test.java:30:21:30:61 | executeQuery(...) : String | Test.java:36:36:36:41 | result | provenance | | +| Test.java:64:5:64:13 | System.in : InputStream | Test.java:64:20:64:23 | data [post update] : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:67:69:67:72 | data : byte[] | provenance | | +| Test.java:64:20:64:23 | data [post update] : byte[] | Test.java:70:49:70:52 | data : byte[] | provenance | | +| Test.java:67:56:67:73 | byteToString(...) : String | Test.java:67:26:67:80 | ... + ... | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:67:69:67:72 | data : byte[] | Test.java:67:56:67:73 | byteToString(...) : String | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:10:31:10:41 | data : byte[] | provenance | | +| Test.java:70:49:70:52 | data : byte[] | Test.java:70:36:70:53 | byteToString(...) | provenance | | nodes | Test.java:10:31:10:41 | data : byte[] | semmle.label | data : byte[] | | Test.java:11:12:11:51 | new String(...) : String | semmle.label | new String(...) : String | diff --git a/java/ql/test/library-tests/frameworks/JaxWs/UrlRedirect.expected b/java/ql/test/library-tests/frameworks/JaxWs/UrlRedirect.expected index 1c0986ada311..57aadbcee428 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/UrlRedirect.expected +++ b/java/ql/test/library-tests/frameworks/JaxWs/UrlRedirect.expected @@ -1,8 +1,8 @@ edges -| UrlRedirectJakarta.java:10:32:10:61 | getParameter(...) : String | UrlRedirectJakarta.java:10:24:10:62 | new URI(...) | -| UrlRedirectJakarta.java:13:41:13:70 | getParameter(...) : String | UrlRedirectJakarta.java:13:33:13:71 | new URI(...) | -| UrlRedirectJax.java:10:32:10:61 | getParameter(...) : String | UrlRedirectJax.java:10:24:10:62 | new URI(...) | -| UrlRedirectJax.java:13:41:13:70 | getParameter(...) : String | UrlRedirectJax.java:13:33:13:71 | new URI(...) | +| UrlRedirectJakarta.java:10:32:10:61 | getParameter(...) : String | UrlRedirectJakarta.java:10:24:10:62 | new URI(...) | provenance | | +| UrlRedirectJakarta.java:13:41:13:70 | getParameter(...) : String | UrlRedirectJakarta.java:13:33:13:71 | new URI(...) | provenance | | +| UrlRedirectJax.java:10:32:10:61 | getParameter(...) : String | UrlRedirectJax.java:10:24:10:62 | new URI(...) | provenance | | +| UrlRedirectJax.java:13:41:13:70 | getParameter(...) : String | UrlRedirectJax.java:13:33:13:71 | new URI(...) | provenance | | nodes | UrlRedirectJakarta.java:10:24:10:62 | new URI(...) | semmle.label | new URI(...) | | UrlRedirectJakarta.java:10:32:10:61 | getParameter(...) : String | semmle.label | getParameter(...) : String | diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/Test.java b/java/ql/test/library-tests/neutrals/neutralsinks/Test.java index a234132226f9..a563cb78de7c 100644 --- a/java/ql/test/library-tests/neutrals/neutralsinks/Test.java +++ b/java/ql/test/library-tests/neutrals/neutralsinks/Test.java @@ -14,11 +14,9 @@ public void test() throws Exception { // java.io File file = null; - file.exists(); // $ isNeutralSink file.compareTo(null); // $ isNeutralSink // java.nio.file - Files.exists(null, (LinkOption[])null); // $ isNeutralSink Files.getLastModifiedTime(null, (LinkOption[])null); // $ isNeutralSink Files.getOwner(null, (LinkOption[])null); // $ isNeutralSink Files.getPosixFilePermissions(null, (LinkOption[])null); // $ isNeutralSink @@ -30,7 +28,6 @@ public void test() throws Exception { Files.isSameFile(null, null); // $ isNeutralSink Files.isSymbolicLink(null); // $ isNeutralSink Files.isWritable(null); // $ isNeutralSink - Files.notExists(null, (LinkOption[])null); // $ isNeutralSink Files.setLastModifiedTime(null, null); // $ isNeutralSink Files.size(null); // $ isNeutralSink diff --git a/java/ql/test/library-tests/pathcreation/PathCreation.expected b/java/ql/test/library-tests/pathcreation/PathCreation.expected index c0ac69c7da42..41e10fb6aaf1 100644 --- a/java/ql/test/library-tests/pathcreation/PathCreation.expected +++ b/java/ql/test/library-tests/pathcreation/PathCreation.expected @@ -1,3 +1,4 @@ +WARNING: Type PathCreation has been deprecated and may be removed in future (PathCreation.ql:4,6-18) | PathCreation.java:13:18:13:32 | new File(...) | PathCreation.java:13:27:13:31 | "dir" | | PathCreation.java:14:19:14:40 | new File(...) | PathCreation.java:14:28:14:32 | "dir" | | PathCreation.java:14:19:14:40 | new File(...) | PathCreation.java:14:35:14:39 | "sub" | diff --git a/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected b/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected index 5f0ed7d05df2..6cb849601d5e 100644 --- a/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected +++ b/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected @@ -1,3 +1,2 @@ -| java.io.File#File(String) | 1 | | java.io.FileWriter#FileWriter(File) | 1 | | java.net.URL#openStream() | 1 | diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected index 0e2d90c3709c..e69de29bb2d1 100644 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.expected @@ -1,494 +0,0 @@ -edges -| TaintedPath.java:12:38:12:110 | new BufferedReader(...) : BufferedReader | TaintedPath.java:13:24:13:37 | filenameReader : BufferedReader | -| TaintedPath.java:12:57:12:109 | new InputStreamReader(...) : InputStreamReader | TaintedPath.java:12:38:12:110 | new BufferedReader(...) : BufferedReader | -| TaintedPath.java:12:79:12:99 | getInputStream(...) : InputStream | TaintedPath.java:12:57:12:109 | new InputStreamReader(...) : InputStreamReader | -| TaintedPath.java:13:24:13:37 | filenameReader : BufferedReader | TaintedPath.java:13:24:13:48 | readLine(...) : String | -| TaintedPath.java:13:24:13:48 | readLine(...) : String | TaintedPath.java:15:68:15:75 | filename | -| TaintedPath.java:38:41:39:70 | new BufferedReader(...) : BufferedReader | TaintedPath.java:40:27:40:40 | filenameReader : BufferedReader | -| TaintedPath.java:39:17:39:69 | new InputStreamReader(...) : InputStreamReader | TaintedPath.java:38:41:39:70 | new BufferedReader(...) : BufferedReader | -| TaintedPath.java:39:39:39:59 | getInputStream(...) : InputStream | TaintedPath.java:39:17:39:69 | new InputStreamReader(...) : InputStreamReader | -| TaintedPath.java:40:27:40:40 | filenameReader : BufferedReader | TaintedPath.java:40:27:40:51 | readLine(...) : String | -| TaintedPath.java:40:27:40:51 | readLine(...) : String | TaintedPath.java:43:46:43:53 | filename | -| Test.java:19:18:19:38 | getHostName(...) : String | Test.java:24:20:24:23 | temp | -| Test.java:19:18:19:38 | getHostName(...) : String | Test.java:27:21:27:24 | temp | -| Test.java:19:18:19:38 | getHostName(...) : String | Test.java:30:44:30:47 | temp | -| Test.java:19:18:19:38 | getHostName(...) : String | Test.java:34:21:34:24 | temp | -| Test.java:79:33:79:99 | new BufferedReader(...) : BufferedReader | Test.java:80:31:80:32 | br : BufferedReader | -| Test.java:79:52:79:98 | new InputStreamReader(...) : InputStreamReader | Test.java:79:33:79:99 | new BufferedReader(...) : BufferedReader | -| Test.java:79:74:79:97 | getInputStream(...) : ServletInputStream | Test.java:79:52:79:98 | new InputStreamReader(...) : InputStreamReader | -| Test.java:80:31:80:32 | br : BufferedReader | Test.java:80:31:80:43 | readLine(...) : String | -| Test.java:80:31:80:43 | readLine(...) : String | Test.java:82:67:82:81 | ... + ... | -| Test.java:88:17:88:37 | getHostName(...) : String | Test.java:90:26:90:29 | temp | -| Test.java:95:14:95:34 | getHostName(...) : String | Test.java:97:26:97:26 | t : String | -| Test.java:97:26:97:26 | t : String | Test.java:97:12:97:33 | new URI(...) | -| Test.java:97:26:97:26 | t : String | Test.java:98:23:98:23 | t : String | -| Test.java:98:23:98:23 | t : String | Test.java:98:12:98:33 | new URI(...) | -| Test.java:98:23:98:23 | t : String | Test.java:99:29:99:29 | t : String | -| Test.java:99:29:99:29 | t : String | Test.java:99:12:99:33 | new URI(...) | -| Test.java:99:29:99:29 | t : String | Test.java:100:32:100:32 | t : String | -| Test.java:100:32:100:32 | t : String | Test.java:100:12:100:45 | new URI(...) | -| Test.java:100:32:100:32 | t : String | Test.java:101:41:101:41 | t : String | -| Test.java:101:41:101:41 | t : String | Test.java:101:12:101:54 | new URI(...) | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:45:61:45:68 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:47:41:47:48 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:49:56:49:63 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:51:46:51:53 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:53:38:53:45 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:55:36:55:43 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:57:31:57:38 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:59:33:59:40 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:61:27:61:34 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:63:27:63:34 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:65:40:65:47 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:67:47:67:54 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:69:40:69:47 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:71:38:71:45 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:73:33:73:40 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:75:33:75:40 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:77:41:77:48 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:79:42:79:49 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:81:37:81:44 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:83:29:83:36 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:85:37:85:44 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:87:28:87:35 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:89:33:89:40 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:91:40:91:47 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:93:40:93:47 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:94:40:94:47 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:96:38:96:45 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:98:28:98:35 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:99:28:99:35 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:100:28:100:35 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:102:34:102:41 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:103:34:103:41 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:105:33:105:40 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:107:42:107:49 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:109:50:109:57 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:111:54:111:61 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:113:50:113:57 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:115:35:115:42 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:117:48:117:55 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:119:37:119:44 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:121:35:121:42 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:123:55:123:62 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:125:47:125:54 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:127:47:127:54 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:131:35:131:42 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:135:56:135:63 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:137:56:137:63 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:141:59:141:66 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:143:59:143:66 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:145:58:145:65 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:147:34:147:41 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:149:34:149:41 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:151:44:151:51 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:153:31:153:38 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:155:46:155:53 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:157:46:157:53 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:159:67:159:74 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:161:67:161:74 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:163:73:163:80 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:166:37:166:44 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:168:48:168:55 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:170:54:170:61 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:172:69:172:76 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:174:47:174:54 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:176:49:176:56 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:178:64:178:71 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:180:49:180:56 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:182:64:182:71 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:184:61:184:68 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:190:37:190:44 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:192:74:192:81 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:194:68:194:75 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:196:68:196:75 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:198:30:198:37 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:203:30:203:37 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:208:33:208:40 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:210:27:210:34 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:212:28:212:35 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:214:29:214:36 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:219:27:219:34 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:221:26:221:33 | source(...) : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:226:29:226:36 | source(...) : String | -| mad/Test.java:45:61:45:68 | source(...) : String | mad/Test.java:45:52:45:68 | (...)... | -| mad/Test.java:47:41:47:48 | source(...) : String | mad/Test.java:47:32:47:48 | (...)... | -| mad/Test.java:49:56:49:63 | source(...) : String | mad/Test.java:49:47:49:63 | (...)... | -| mad/Test.java:51:46:51:53 | source(...) : String | mad/Test.java:51:39:51:53 | (...)... | -| mad/Test.java:53:38:53:45 | source(...) : String | mad/Test.java:53:31:53:45 | (...)... | -| mad/Test.java:55:36:55:43 | source(...) : String | mad/Test.java:55:29:55:43 | (...)... | -| mad/Test.java:57:31:57:38 | source(...) : String | mad/Test.java:57:24:57:38 | (...)... | -| mad/Test.java:59:33:59:40 | source(...) : String | mad/Test.java:59:24:59:40 | (...)... | -| mad/Test.java:61:27:61:34 | source(...) : String | mad/Test.java:61:20:61:34 | (...)... | -| mad/Test.java:63:27:63:34 | source(...) : String | mad/Test.java:63:20:63:34 | (...)... | -| mad/Test.java:65:40:65:47 | source(...) : String | mad/Test.java:65:33:65:47 | (...)... | -| mad/Test.java:67:47:67:54 | source(...) : String | mad/Test.java:67:40:67:54 | (...)... | -| mad/Test.java:69:40:69:47 | source(...) : String | mad/Test.java:69:33:69:47 | (...)... | -| mad/Test.java:71:38:71:45 | source(...) : String | mad/Test.java:71:31:71:45 | (...)... | -| mad/Test.java:73:33:73:40 | source(...) : String | mad/Test.java:73:26:73:40 | (...)... | -| mad/Test.java:75:33:75:40 | source(...) : String | mad/Test.java:75:26:75:40 | (...)... | -| mad/Test.java:77:41:77:48 | source(...) : String | mad/Test.java:77:34:77:48 | (...)... | -| mad/Test.java:79:42:79:49 | source(...) : String | mad/Test.java:79:35:79:49 | (...)... | -| mad/Test.java:81:37:81:44 | source(...) : String | mad/Test.java:81:30:81:44 | (...)... | -| mad/Test.java:83:29:83:36 | source(...) : String | mad/Test.java:83:22:83:36 | (...)... | -| mad/Test.java:85:37:85:44 | source(...) : String | mad/Test.java:85:30:85:44 | (...)... | -| mad/Test.java:87:28:87:35 | source(...) : String | mad/Test.java:87:21:87:35 | (...)... | -| mad/Test.java:89:33:89:40 | source(...) : String | mad/Test.java:89:26:89:40 | (...)... | -| mad/Test.java:91:40:91:47 | source(...) : String | mad/Test.java:91:33:91:47 | (...)... | -| mad/Test.java:93:40:93:47 | source(...) : String | mad/Test.java:93:33:93:47 | (...)... | -| mad/Test.java:94:40:94:47 | source(...) : String | mad/Test.java:94:33:94:47 | (...)... | -| mad/Test.java:96:38:96:45 | source(...) : String | mad/Test.java:96:31:96:45 | (...)... | -| mad/Test.java:98:28:98:35 | source(...) : String | mad/Test.java:98:21:98:35 | (...)... | -| mad/Test.java:99:28:99:35 | source(...) : String | mad/Test.java:99:21:99:35 | (...)... | -| mad/Test.java:100:28:100:35 | source(...) : String | mad/Test.java:100:21:100:35 | (...)... | -| mad/Test.java:102:34:102:41 | source(...) : String | mad/Test.java:102:27:102:41 | (...)... | -| mad/Test.java:103:34:103:41 | source(...) : String | mad/Test.java:103:27:103:41 | (...)... | -| mad/Test.java:105:33:105:40 | source(...) : String | mad/Test.java:105:26:105:40 | (...)... | -| mad/Test.java:107:42:107:49 | source(...) : String | mad/Test.java:107:35:107:49 | (...)... | -| mad/Test.java:109:50:109:57 | source(...) : String | mad/Test.java:109:41:109:57 | (...)... | -| mad/Test.java:111:54:111:61 | source(...) : String | mad/Test.java:111:45:111:61 | (...)... | -| mad/Test.java:113:50:113:57 | source(...) : String | mad/Test.java:113:43:113:57 | (...)... | -| mad/Test.java:115:35:115:42 | source(...) : String | mad/Test.java:115:28:115:42 | (...)... | -| mad/Test.java:117:48:117:55 | source(...) : String | mad/Test.java:117:41:117:55 | (...)... | -| mad/Test.java:119:37:119:44 | source(...) : String | mad/Test.java:119:28:119:44 | (...)... | -| mad/Test.java:121:35:121:42 | source(...) : String | mad/Test.java:121:28:121:42 | (...)... | -| mad/Test.java:123:55:123:62 | source(...) : String | mad/Test.java:123:46:123:62 | (...)... | -| mad/Test.java:125:47:125:54 | source(...) : String | mad/Test.java:125:40:125:54 | (...)... | -| mad/Test.java:127:47:127:54 | source(...) : String | mad/Test.java:127:40:127:54 | (...)... | -| mad/Test.java:131:35:131:42 | source(...) : String | mad/Test.java:131:26:131:42 | (...)... | -| mad/Test.java:135:56:135:63 | source(...) : String | mad/Test.java:135:49:135:63 | (...)... | -| mad/Test.java:137:56:137:63 | source(...) : String | mad/Test.java:137:49:137:63 | (...)... | -| mad/Test.java:141:59:141:66 | source(...) : String | mad/Test.java:141:52:141:66 | (...)... | -| mad/Test.java:143:59:143:66 | source(...) : String | mad/Test.java:143:52:143:66 | (...)... | -| mad/Test.java:145:58:145:65 | source(...) : String | mad/Test.java:145:49:145:65 | (...)... | -| mad/Test.java:147:34:147:41 | source(...) : String | mad/Test.java:147:25:147:41 | (...)... | -| mad/Test.java:149:34:149:41 | source(...) : String | mad/Test.java:149:25:149:41 | (...)... | -| mad/Test.java:151:44:151:51 | source(...) : String | mad/Test.java:151:35:151:51 | (...)... | -| mad/Test.java:153:31:153:38 | source(...) : String | mad/Test.java:153:24:153:38 | (...)... | -| mad/Test.java:155:46:155:53 | source(...) : String | mad/Test.java:155:37:155:53 | (...)... | -| mad/Test.java:157:46:157:53 | source(...) : String | mad/Test.java:157:37:157:53 | (...)... | -| mad/Test.java:159:67:159:74 | source(...) : String | mad/Test.java:159:58:159:74 | (...)... | -| mad/Test.java:161:67:161:74 | source(...) : String | mad/Test.java:161:58:161:74 | (...)... | -| mad/Test.java:163:73:163:80 | source(...) : String | mad/Test.java:163:64:163:80 | (...)... | -| mad/Test.java:166:37:166:44 | source(...) : String | mad/Test.java:166:28:166:44 | (...)... | -| mad/Test.java:168:48:168:55 | source(...) : String | mad/Test.java:168:39:168:55 | (...)... | -| mad/Test.java:170:54:170:61 | source(...) : String | mad/Test.java:170:45:170:61 | (...)... | -| mad/Test.java:172:69:172:76 | source(...) : String | mad/Test.java:172:60:172:76 | (...)... | -| mad/Test.java:174:47:174:54 | source(...) : String | mad/Test.java:174:40:174:54 | (...)... | -| mad/Test.java:176:49:176:56 | source(...) : String | mad/Test.java:176:40:176:56 | (...)... | -| mad/Test.java:178:64:178:71 | source(...) : String | mad/Test.java:178:55:178:71 | (...)... | -| mad/Test.java:180:49:180:56 | source(...) : String | mad/Test.java:180:40:180:56 | (...)... | -| mad/Test.java:182:64:182:71 | source(...) : String | mad/Test.java:182:55:182:71 | (...)... | -| mad/Test.java:184:61:184:68 | source(...) : String | mad/Test.java:184:54:184:68 | (...)... | -| mad/Test.java:190:37:190:44 | source(...) : String | mad/Test.java:190:30:190:44 | (...)... | -| mad/Test.java:192:74:192:81 | source(...) : String | mad/Test.java:192:40:192:81 | (...)... | -| mad/Test.java:194:68:194:75 | source(...) : String | mad/Test.java:194:34:194:75 | (...)... | -| mad/Test.java:196:68:196:75 | source(...) : String | mad/Test.java:196:34:196:75 | (...)... | -| mad/Test.java:198:30:198:37 | source(...) : String | mad/Test.java:198:23:198:37 | (...)... | -| mad/Test.java:203:30:203:37 | source(...) : String | mad/Test.java:203:23:203:37 | (...)... | -| mad/Test.java:208:33:208:40 | source(...) : String | mad/Test.java:208:23:208:40 | (...)... | -| mad/Test.java:210:27:210:34 | source(...) : String | mad/Test.java:210:20:210:34 | (...)... | -| mad/Test.java:212:28:212:35 | source(...) : String | mad/Test.java:212:21:212:35 | (...)... | -| mad/Test.java:214:29:214:36 | source(...) : String | mad/Test.java:214:22:214:36 | (...)... | -| mad/Test.java:219:27:219:34 | source(...) : String | mad/Test.java:219:20:219:34 | (...)... | -| mad/Test.java:221:26:221:33 | source(...) : String | mad/Test.java:221:19:221:33 | (...)... | -| mad/Test.java:226:29:226:36 | source(...) : String | mad/Test.java:226:20:226:36 | (...)... | -nodes -| TaintedPath.java:12:38:12:110 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | -| TaintedPath.java:12:57:12:109 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | -| TaintedPath.java:12:79:12:99 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | -| TaintedPath.java:13:24:13:37 | filenameReader : BufferedReader | semmle.label | filenameReader : BufferedReader | -| TaintedPath.java:13:24:13:48 | readLine(...) : String | semmle.label | readLine(...) : String | -| TaintedPath.java:15:68:15:75 | filename | semmle.label | filename | -| TaintedPath.java:38:41:39:70 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | -| TaintedPath.java:39:17:39:69 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | -| TaintedPath.java:39:39:39:59 | getInputStream(...) : InputStream | semmle.label | getInputStream(...) : InputStream | -| TaintedPath.java:40:27:40:40 | filenameReader : BufferedReader | semmle.label | filenameReader : BufferedReader | -| TaintedPath.java:40:27:40:51 | readLine(...) : String | semmle.label | readLine(...) : String | -| TaintedPath.java:43:46:43:53 | filename | semmle.label | filename | -| Test.java:19:18:19:38 | getHostName(...) : String | semmle.label | getHostName(...) : String | -| Test.java:24:20:24:23 | temp | semmle.label | temp | -| Test.java:27:21:27:24 | temp | semmle.label | temp | -| Test.java:30:44:30:47 | temp | semmle.label | temp | -| Test.java:34:21:34:24 | temp | semmle.label | temp | -| Test.java:79:33:79:99 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | -| Test.java:79:52:79:98 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | -| Test.java:79:74:79:97 | getInputStream(...) : ServletInputStream | semmle.label | getInputStream(...) : ServletInputStream | -| Test.java:80:31:80:32 | br : BufferedReader | semmle.label | br : BufferedReader | -| Test.java:80:31:80:43 | readLine(...) : String | semmle.label | readLine(...) : String | -| Test.java:82:67:82:81 | ... + ... | semmle.label | ... + ... | -| Test.java:88:17:88:37 | getHostName(...) : String | semmle.label | getHostName(...) : String | -| Test.java:90:26:90:29 | temp | semmle.label | temp | -| Test.java:95:14:95:34 | getHostName(...) : String | semmle.label | getHostName(...) : String | -| Test.java:97:12:97:33 | new URI(...) | semmle.label | new URI(...) | -| Test.java:97:26:97:26 | t : String | semmle.label | t : String | -| Test.java:98:12:98:33 | new URI(...) | semmle.label | new URI(...) | -| Test.java:98:23:98:23 | t : String | semmle.label | t : String | -| Test.java:99:12:99:33 | new URI(...) | semmle.label | new URI(...) | -| Test.java:99:29:99:29 | t : String | semmle.label | t : String | -| Test.java:100:12:100:45 | new URI(...) | semmle.label | new URI(...) | -| Test.java:100:32:100:32 | t : String | semmle.label | t : String | -| Test.java:101:12:101:54 | new URI(...) | semmle.label | new URI(...) | -| Test.java:101:41:101:41 | t : String | semmle.label | t : String | -| mad/Test.java:40:16:40:36 | getHostName(...) : String | semmle.label | getHostName(...) : String | -| mad/Test.java:45:52:45:68 | (...)... | semmle.label | (...)... | -| mad/Test.java:45:61:45:68 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:47:32:47:48 | (...)... | semmle.label | (...)... | -| mad/Test.java:47:41:47:48 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:49:47:49:63 | (...)... | semmle.label | (...)... | -| mad/Test.java:49:56:49:63 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:51:39:51:53 | (...)... | semmle.label | (...)... | -| mad/Test.java:51:46:51:53 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:53:31:53:45 | (...)... | semmle.label | (...)... | -| mad/Test.java:53:38:53:45 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:55:29:55:43 | (...)... | semmle.label | (...)... | -| mad/Test.java:55:36:55:43 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:57:24:57:38 | (...)... | semmle.label | (...)... | -| mad/Test.java:57:31:57:38 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:59:24:59:40 | (...)... | semmle.label | (...)... | -| mad/Test.java:59:33:59:40 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:61:20:61:34 | (...)... | semmle.label | (...)... | -| mad/Test.java:61:27:61:34 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:63:20:63:34 | (...)... | semmle.label | (...)... | -| mad/Test.java:63:27:63:34 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:65:33:65:47 | (...)... | semmle.label | (...)... | -| mad/Test.java:65:40:65:47 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:67:40:67:54 | (...)... | semmle.label | (...)... | -| mad/Test.java:67:47:67:54 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:69:33:69:47 | (...)... | semmle.label | (...)... | -| mad/Test.java:69:40:69:47 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:71:31:71:45 | (...)... | semmle.label | (...)... | -| mad/Test.java:71:38:71:45 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:73:26:73:40 | (...)... | semmle.label | (...)... | -| mad/Test.java:73:33:73:40 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:75:26:75:40 | (...)... | semmle.label | (...)... | -| mad/Test.java:75:33:75:40 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:77:34:77:48 | (...)... | semmle.label | (...)... | -| mad/Test.java:77:41:77:48 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:79:35:79:49 | (...)... | semmle.label | (...)... | -| mad/Test.java:79:42:79:49 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:81:30:81:44 | (...)... | semmle.label | (...)... | -| mad/Test.java:81:37:81:44 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:83:22:83:36 | (...)... | semmle.label | (...)... | -| mad/Test.java:83:29:83:36 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:85:30:85:44 | (...)... | semmle.label | (...)... | -| mad/Test.java:85:37:85:44 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:87:21:87:35 | (...)... | semmle.label | (...)... | -| mad/Test.java:87:28:87:35 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:89:26:89:40 | (...)... | semmle.label | (...)... | -| mad/Test.java:89:33:89:40 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:91:33:91:47 | (...)... | semmle.label | (...)... | -| mad/Test.java:91:40:91:47 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:93:33:93:47 | (...)... | semmle.label | (...)... | -| mad/Test.java:93:40:93:47 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:94:33:94:47 | (...)... | semmle.label | (...)... | -| mad/Test.java:94:40:94:47 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:96:31:96:45 | (...)... | semmle.label | (...)... | -| mad/Test.java:96:38:96:45 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:98:21:98:35 | (...)... | semmle.label | (...)... | -| mad/Test.java:98:28:98:35 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:99:21:99:35 | (...)... | semmle.label | (...)... | -| mad/Test.java:99:28:99:35 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:100:21:100:35 | (...)... | semmle.label | (...)... | -| mad/Test.java:100:28:100:35 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:102:27:102:41 | (...)... | semmle.label | (...)... | -| mad/Test.java:102:34:102:41 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:103:27:103:41 | (...)... | semmle.label | (...)... | -| mad/Test.java:103:34:103:41 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:105:26:105:40 | (...)... | semmle.label | (...)... | -| mad/Test.java:105:33:105:40 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:107:35:107:49 | (...)... | semmle.label | (...)... | -| mad/Test.java:107:42:107:49 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:109:41:109:57 | (...)... | semmle.label | (...)... | -| mad/Test.java:109:50:109:57 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:111:45:111:61 | (...)... | semmle.label | (...)... | -| mad/Test.java:111:54:111:61 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:113:43:113:57 | (...)... | semmle.label | (...)... | -| mad/Test.java:113:50:113:57 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:115:28:115:42 | (...)... | semmle.label | (...)... | -| mad/Test.java:115:35:115:42 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:117:41:117:55 | (...)... | semmle.label | (...)... | -| mad/Test.java:117:48:117:55 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:119:28:119:44 | (...)... | semmle.label | (...)... | -| mad/Test.java:119:37:119:44 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:121:28:121:42 | (...)... | semmle.label | (...)... | -| mad/Test.java:121:35:121:42 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:123:46:123:62 | (...)... | semmle.label | (...)... | -| mad/Test.java:123:55:123:62 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:125:40:125:54 | (...)... | semmle.label | (...)... | -| mad/Test.java:125:47:125:54 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:127:40:127:54 | (...)... | semmle.label | (...)... | -| mad/Test.java:127:47:127:54 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:131:26:131:42 | (...)... | semmle.label | (...)... | -| mad/Test.java:131:35:131:42 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:135:49:135:63 | (...)... | semmle.label | (...)... | -| mad/Test.java:135:56:135:63 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:137:49:137:63 | (...)... | semmle.label | (...)... | -| mad/Test.java:137:56:137:63 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:141:52:141:66 | (...)... | semmle.label | (...)... | -| mad/Test.java:141:59:141:66 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:143:52:143:66 | (...)... | semmle.label | (...)... | -| mad/Test.java:143:59:143:66 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:145:49:145:65 | (...)... | semmle.label | (...)... | -| mad/Test.java:145:58:145:65 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:147:25:147:41 | (...)... | semmle.label | (...)... | -| mad/Test.java:147:34:147:41 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:149:25:149:41 | (...)... | semmle.label | (...)... | -| mad/Test.java:149:34:149:41 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:151:35:151:51 | (...)... | semmle.label | (...)... | -| mad/Test.java:151:44:151:51 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:153:24:153:38 | (...)... | semmle.label | (...)... | -| mad/Test.java:153:31:153:38 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:155:37:155:53 | (...)... | semmle.label | (...)... | -| mad/Test.java:155:46:155:53 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:157:37:157:53 | (...)... | semmle.label | (...)... | -| mad/Test.java:157:46:157:53 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:159:58:159:74 | (...)... | semmle.label | (...)... | -| mad/Test.java:159:67:159:74 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:161:58:161:74 | (...)... | semmle.label | (...)... | -| mad/Test.java:161:67:161:74 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:163:64:163:80 | (...)... | semmle.label | (...)... | -| mad/Test.java:163:73:163:80 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:166:28:166:44 | (...)... | semmle.label | (...)... | -| mad/Test.java:166:37:166:44 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:168:39:168:55 | (...)... | semmle.label | (...)... | -| mad/Test.java:168:48:168:55 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:170:45:170:61 | (...)... | semmle.label | (...)... | -| mad/Test.java:170:54:170:61 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:172:60:172:76 | (...)... | semmle.label | (...)... | -| mad/Test.java:172:69:172:76 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:174:40:174:54 | (...)... | semmle.label | (...)... | -| mad/Test.java:174:47:174:54 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:176:40:176:56 | (...)... | semmle.label | (...)... | -| mad/Test.java:176:49:176:56 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:178:55:178:71 | (...)... | semmle.label | (...)... | -| mad/Test.java:178:64:178:71 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:180:40:180:56 | (...)... | semmle.label | (...)... | -| mad/Test.java:180:49:180:56 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:182:55:182:71 | (...)... | semmle.label | (...)... | -| mad/Test.java:182:64:182:71 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:184:54:184:68 | (...)... | semmle.label | (...)... | -| mad/Test.java:184:61:184:68 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:190:30:190:44 | (...)... | semmle.label | (...)... | -| mad/Test.java:190:37:190:44 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:192:40:192:81 | (...)... | semmle.label | (...)... | -| mad/Test.java:192:74:192:81 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:194:34:194:75 | (...)... | semmle.label | (...)... | -| mad/Test.java:194:68:194:75 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:196:34:196:75 | (...)... | semmle.label | (...)... | -| mad/Test.java:196:68:196:75 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:198:23:198:37 | (...)... | semmle.label | (...)... | -| mad/Test.java:198:30:198:37 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:203:23:203:37 | (...)... | semmle.label | (...)... | -| mad/Test.java:203:30:203:37 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:208:23:208:40 | (...)... | semmle.label | (...)... | -| mad/Test.java:208:33:208:40 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:210:20:210:34 | (...)... | semmle.label | (...)... | -| mad/Test.java:210:27:210:34 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:212:21:212:35 | (...)... | semmle.label | (...)... | -| mad/Test.java:212:28:212:35 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:214:22:214:36 | (...)... | semmle.label | (...)... | -| mad/Test.java:214:29:214:36 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:219:20:219:34 | (...)... | semmle.label | (...)... | -| mad/Test.java:219:27:219:34 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:221:19:221:33 | (...)... | semmle.label | (...)... | -| mad/Test.java:221:26:221:33 | source(...) : String | semmle.label | source(...) : String | -| mad/Test.java:226:20:226:36 | (...)... | semmle.label | (...)... | -| mad/Test.java:226:29:226:36 | source(...) : String | semmle.label | source(...) : String | -subpaths -#select -| TaintedPath.java:15:53:15:76 | new FileReader(...) | TaintedPath.java:12:79:12:99 | getInputStream(...) : InputStream | TaintedPath.java:15:68:15:75 | filename | This path depends on a $@. | TaintedPath.java:12:79:12:99 | getInputStream(...) | user-provided value | -| TaintedPath.java:43:25:43:54 | resolve(...) | TaintedPath.java:39:39:39:59 | getInputStream(...) : InputStream | TaintedPath.java:43:46:43:53 | filename | This path depends on a $@. | TaintedPath.java:39:39:39:59 | getInputStream(...) | user-provided value | -| Test.java:24:11:24:24 | new File(...) | Test.java:19:18:19:38 | getHostName(...) : String | Test.java:24:20:24:23 | temp | This path depends on a $@. | Test.java:19:18:19:38 | getHostName(...) | user-provided value | -| Test.java:27:11:27:25 | get(...) | Test.java:19:18:19:38 | getHostName(...) : String | Test.java:27:21:27:24 | temp | This path depends on a $@. | Test.java:19:18:19:38 | getHostName(...) | user-provided value | -| Test.java:30:11:30:48 | getPath(...) | Test.java:19:18:19:38 | getHostName(...) : String | Test.java:30:44:30:47 | temp | This path depends on a $@. | Test.java:19:18:19:38 | getHostName(...) | user-provided value | -| Test.java:34:12:34:25 | new File(...) | Test.java:19:18:19:38 | getHostName(...) : String | Test.java:34:21:34:24 | temp | This path depends on a $@. | Test.java:19:18:19:38 | getHostName(...) | user-provided value | -| Test.java:82:52:82:88 | new FileWriter(...) | Test.java:79:74:79:97 | getInputStream(...) : ServletInputStream | Test.java:82:67:82:81 | ... + ... | This path depends on a $@. | Test.java:79:74:79:97 | getInputStream(...) | user-provided value | -| Test.java:90:26:90:29 | temp | Test.java:88:17:88:37 | getHostName(...) : String | Test.java:90:26:90:29 | temp | This path depends on a $@. | Test.java:88:17:88:37 | getHostName(...) | user-provided value | -| Test.java:97:3:97:34 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:97:12:97:33 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value | -| Test.java:98:3:98:34 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:98:12:98:33 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value | -| Test.java:99:3:99:34 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:99:12:99:33 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value | -| Test.java:100:3:100:46 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:100:12:100:45 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value | -| Test.java:101:3:101:55 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:101:12:101:54 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value | -| mad/Test.java:45:52:45:68 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:45:52:45:68 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:47:32:47:48 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:47:32:47:48 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:49:47:49:63 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:49:47:49:63 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:51:39:51:53 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:51:39:51:53 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:53:31:53:45 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:53:31:53:45 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:55:29:55:43 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:55:29:55:43 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:57:24:57:38 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:57:24:57:38 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:59:9:59:41 | new FileReader(...) | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:59:24:59:40 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:61:20:61:34 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:61:20:61:34 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:63:20:63:34 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:63:20:63:34 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:65:33:65:47 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:65:33:65:47 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:67:40:67:54 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:67:40:67:54 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:69:33:69:47 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:69:33:69:47 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:71:31:71:45 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:71:31:71:45 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:73:26:73:40 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:73:26:73:40 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:75:26:75:40 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:75:26:75:40 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:77:34:77:48 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:77:34:77:48 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:79:35:79:49 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:79:35:79:49 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:81:30:81:44 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:81:30:81:44 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:83:22:83:36 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:83:22:83:36 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:85:30:85:44 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:85:30:85:44 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:87:21:87:35 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:87:21:87:35 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:89:26:89:40 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:89:26:89:40 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:91:33:91:47 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:91:33:91:47 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:93:33:93:47 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:93:33:93:47 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:94:33:94:47 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:94:33:94:47 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:96:31:96:45 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:96:31:96:45 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:98:21:98:35 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:98:21:98:35 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:99:21:99:35 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:99:21:99:35 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:100:21:100:35 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:100:21:100:35 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:102:27:102:41 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:102:27:102:41 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:103:27:103:41 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:103:27:103:41 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:105:26:105:40 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:105:26:105:40 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:107:35:107:49 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:107:35:107:49 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:109:41:109:57 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:109:41:109:57 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:111:45:111:61 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:111:45:111:61 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:113:43:113:57 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:113:43:113:57 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:115:28:115:42 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:115:28:115:42 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:117:41:117:55 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:117:41:117:55 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:119:28:119:44 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:119:28:119:44 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:121:28:121:42 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:121:28:121:42 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:123:46:123:62 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:123:46:123:62 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:125:40:125:54 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:125:40:125:54 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:127:40:127:54 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:127:40:127:54 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:131:26:131:42 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:131:26:131:42 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:135:49:135:63 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:135:49:135:63 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:137:49:137:63 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:137:49:137:63 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:141:52:141:66 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:141:52:141:66 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:143:52:143:66 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:143:52:143:66 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:145:49:145:65 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:145:49:145:65 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:147:25:147:41 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:147:25:147:41 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:149:25:149:41 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:149:25:149:41 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:151:35:151:51 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:151:35:151:51 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:153:24:153:38 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:153:24:153:38 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:155:37:155:53 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:155:37:155:53 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:157:37:157:53 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:157:37:157:53 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:159:58:159:74 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:159:58:159:74 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:161:58:161:74 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:161:58:161:74 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:163:64:163:80 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:163:64:163:80 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:166:28:166:44 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:166:28:166:44 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:168:39:168:55 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:168:39:168:55 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:170:45:170:61 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:170:45:170:61 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:172:60:172:76 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:172:60:172:76 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:174:40:174:54 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:174:40:174:54 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:176:40:176:56 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:176:40:176:56 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:178:55:178:71 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:178:55:178:71 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:180:40:180:56 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:180:40:180:56 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:182:55:182:71 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:182:55:182:71 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:184:54:184:68 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:184:54:184:68 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:190:30:190:44 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:190:30:190:44 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:192:40:192:81 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:192:40:192:81 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:194:34:194:75 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:194:34:194:75 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:196:34:196:75 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:196:34:196:75 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:198:23:198:37 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:198:23:198:37 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:203:23:203:37 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:203:23:203:37 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:208:23:208:40 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:208:23:208:40 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:210:20:210:34 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:210:20:210:34 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:212:21:212:35 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:212:21:212:35 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:214:22:214:36 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:214:22:214:36 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:219:20:219:34 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:219:20:219:34 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:221:19:221:33 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:221:19:221:33 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | -| mad/Test.java:226:20:226:36 | (...)... | mad/Test.java:40:16:40:36 | getHostName(...) : String | mad/Test.java:226:20:226:36 | (...)... | This path depends on a $@. | mad/Test.java:40:16:40:36 | getHostName(...) | user-provided value | diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java index a2ae561be588..8bfc35c1d969 100644 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.java @@ -9,25 +9,27 @@ public class TaintedPath { public void sendUserFile(Socket sock, String user) throws IOException { - BufferedReader filenameReader = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); - String filename = filenameReader.readLine(); - // BAD: read from a file without checking its path - BufferedReader fileReader = new BufferedReader(new FileReader(filename)); + BufferedReader filenameReader = + new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); + String filename = filenameReader.readLine(); + // BAD: read from a file without checking its path + BufferedReader fileReader = new BufferedReader(new FileReader(filename)); // $ hasTaintFlow String fileLine = fileReader.readLine(); - while(fileLine != null) { - sock.getOutputStream().write(fileLine.getBytes()); - fileLine = fileReader.readLine(); + while (fileLine != null) { + sock.getOutputStream().write(fileLine.getBytes()); + fileLine = fileReader.readLine(); } } public void sendUserFileGood(Socket sock, String user) throws IOException { - BufferedReader filenameReader = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); + BufferedReader filenameReader = + new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); String filename = filenameReader.readLine(); // GOOD: ensure that the file is in a designated folder in the user's home directory if (!filename.contains("..") && filename.startsWith("/home/" + user + "/public/")) { BufferedReader fileReader = new BufferedReader(new FileReader(filename)); String fileLine = fileReader.readLine(); - while(fileLine != null) { + while (fileLine != null) { sock.getOutputStream().write(fileLine.getBytes()); fileLine = fileReader.readLine(); } @@ -35,28 +37,28 @@ public void sendUserFileGood(Socket sock, String user) throws IOException { } public void sendUserFileGood2(Socket sock, String user) throws Exception { - BufferedReader filenameReader = new BufferedReader( - new InputStreamReader(sock.getInputStream(), "UTF-8")); + BufferedReader filenameReader = + new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); String filename = filenameReader.readLine(); - + Path publicFolder = Paths.get("/home/" + user + "/public").normalize().toAbsolutePath(); - Path filePath = publicFolder.resolve(filename).normalize().toAbsolutePath(); // FP until the path-injection sinks are reworked - + Path filePath = publicFolder.resolve(filename).normalize().toAbsolutePath(); + // GOOD: ensure that the path stays within the public folder if (!filePath.startsWith(publicFolder + File.separator)) { throw new IllegalArgumentException("Invalid filename"); } BufferedReader fileReader = new BufferedReader(new FileReader(filePath.toString())); String fileLine = fileReader.readLine(); - while(fileLine != null) { + while (fileLine != null) { sock.getOutputStream().write(fileLine.getBytes()); fileLine = fileReader.readLine(); } } public void sendUserFileGood3(Socket sock, String user) throws Exception { - BufferedReader filenameReader = new BufferedReader( - new InputStreamReader(sock.getInputStream(), "UTF-8")); + BufferedReader filenameReader = + new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); String filename = filenameReader.readLine(); // GOOD: ensure that the filename has no path separators or parent directory references if (filename.contains("..") || filename.contains("/") || filename.contains("\\")) { @@ -64,9 +66,9 @@ public void sendUserFileGood3(Socket sock, String user) throws Exception { } BufferedReader fileReader = new BufferedReader(new FileReader(filename)); String fileLine = fileReader.readLine(); - while(fileLine != null) { + while (fileLine != null) { sock.getOutputStream().write(fileLine.getBytes()); fileLine = fileReader.readLine(); - } + } } } diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql new file mode 100644 index 000000000000..25e5bf1df875 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql @@ -0,0 +1,4 @@ +import java +import TestUtilities.InlineFlowTest +import semmle.code.java.security.TaintedPathQuery +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.qlref b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.qlref deleted file mode 100644 index 1677939387da..000000000000 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.qlref +++ /dev/null @@ -1 +0,0 @@ -Security/CWE/CWE-022/TaintedPath.ql \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java b/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java index 080cc263f085..a29cf1f620ea 100644 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/Test.java @@ -1,112 +1,166 @@ -// Semmle test case for CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') -// http://cwe.mitre.org/data/definitions/22.html -package test.cwe22.semmle.tests; - -import javax.servlet.http.*; -import javax.servlet.ServletException; - -import java.io.*; -import java.net.*; +import java.io.File; +import java.io.FileDescriptor; +import java.io.FileInputStream; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.URL; +import java.nio.charset.Charset; +import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.FileSystems; - -import org.apache.commons.io.output.LockableFileWriter; - -class Test { - void doGet1(InetAddress address) - throws IOException { - String temp = address.getHostName(); - File file; - Path path; - - // BAD: construct a file path with user input - file = new File(temp); - - // BAD: construct a path with user input - path = Paths.get(temp); - - // BAD: construct a path with user input - path = FileSystems.getDefault().getPath(temp); - - // BAD: insufficient check - if (temp.startsWith("/some_safe_dir/")) { - file = new File(temp); - } - } - - void doGet2(InetAddress address) - throws IOException { - String temp = address.getHostName(); - File file; - - // GOOD: check string is safe - if(isSafe(temp)) - file = new File(temp); - } - - void doGet3(InetAddress address) - throws IOException { - String temp = address.getHostName(); - File file; - - // FALSE NEGATIVE: inadequate check - fails to account - // for '.'s - if(isSortOfSafe(temp)) - file = new File(temp); - } +import javax.xml.transform.stream.StreamResult; +import org.apache.commons.io.FileUtils; +import org.apache.tools.ant.AntClassLoader; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.taskdefs.Copy; +import org.apache.tools.ant.taskdefs.Expand; +import org.apache.tools.ant.types.FileSet; +import org.codehaus.cargo.container.installer.ZipURLInstaller; +import org.kohsuke.stapler.framework.io.LargeText; +import org.openjdk.jmh.runner.options.ChainedOptionsBuilder; +import org.springframework.util.FileCopyUtils; + +public class Test { + + private InetAddress address; + + public Object source() { + return address.getHostName(); + } - boolean isSafe(String pathSpec) { - // no file separators - if (pathSpec.contains(File.separator)) - return false; - // at most one dot - int indexOfDot = pathSpec.indexOf('.'); - if (indexOfDot != -1 && pathSpec.indexOf('.', indexOfDot + 1) != -1) - return false; - return true; - } + void test() throws IOException { + // "java.lang;Module;true;getResourceAsStream;(String);;Argument[0];read-file;ai-generated" + getClass().getModule().getResourceAsStream((String) source()); // $ hasTaintFlow + // "java.lang;Class;false;getResource;(String);;Argument[0];read-file;ai-generated" + getClass().getResource((String) source()); // $ hasTaintFlow + // "java.lang;ClassLoader;true;getSystemResourceAsStream;(String);;Argument[0];read-file;ai-generated" + ClassLoader.getSystemResourceAsStream((String) source()); // $ hasTaintFlow + // "java.io;File;true;createTempFile;(String,String,File);;Argument[2];create-file;ai-generated" + File.createTempFile(";", ";", (File) source()); // $ hasTaintFlow + // "java.io;File;true;renameTo;(File);;Argument[0];create-file;ai-generated" + new File("").renameTo((File) source()); // $ hasTaintFlow + // "java.io;FileInputStream;true;FileInputStream;(File);;Argument[0];read-file;ai-generated" + new FileInputStream((File) source()); // $ hasTaintFlow + // "java.io;FileInputStream;true;FileInputStream;(FileDescriptor);;Argument[0];read-file;manual" + new FileInputStream((FileDescriptor) source()); // $ hasTaintFlow + // "java.io;FileInputStream;true;FileInputStream;(Strrirng);;Argument[0];read-file;manual" + new FileInputStream((String) source()); // $ hasTaintFlow + // "java.io;FileReader;true;FileReader;(File);;Argument[0];read-file;ai-generated" + new FileReader((File) source()); // $ hasTaintFlow + // "java.io;FileReader;true;FileReader;(FileDescriptor);;Argument[0];read-file;manual" + new FileReader((FileDescriptor) source()); // $ hasTaintFlow + // "java.io;FileReader;true;FileReader;(File,Charset);;Argument[0];read-file;manual" + new FileReader((File) source(), null); // $ hasTaintFlow + // "java.io;FileReader;true;FileReader;(String);;Argument[0];read-file;ai-generated" + new FileReader((String) source()); // $ hasTaintFlow + // "java.io;FileReader;true;FileReader;(String,Charset);;Argument[0];read-file;manual" + new FileReader((String) source(), null); // $ hasTaintFlow + // "java.nio.file;Files;false;copy;;;Argument[0];read-file;manual" + Files.copy((Path) source(), (Path) null); // $ hasTaintFlow + Files.copy((Path) source(), (OutputStream) null); // $ hasTaintFlow + // "java.nio.file;Files;false;copy;;;Argument[1];create-file;manual" + Files.copy((Path) null, (Path) source()); // $ hasTaintFlow + Files.copy((InputStream) null, (Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;createDirectories;;;Argument[0];create-file;manual" + Files.createDirectories((Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;createDirectory;;;Argument[0];create-file;manual" + Files.createDirectory((Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;createFile;;;Argument[0];create-file;manual" + Files.createFile((Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;createLink;;;Argument[0];create-file;manual" + Files.createLink((Path) source(), null); // $ hasTaintFlow + // "java.nio.file;Files;false;createSymbolicLink;;;Argument[0];create-file;manual" + Files.createSymbolicLink((Path) source(), null); // $ hasTaintFlow + // "java.nio.file;Files;false;createTempDirectory;(Path,String,FileAttribute[]);;Argument[0];create-file;manual" + Files.createTempDirectory((Path) source(), null); // $ hasTaintFlow + // "java.nio.file;Files;false;createTempFile;(Path,String,String,FileAttribute[]);;Argument[0];create-file;manual" + Files.createTempFile((Path) source(), null, null); // $ hasTaintFlow + // "java.nio.file;Files;false;delete;(Path);;Argument[0];delete-file;ai-generated" + Files.delete((Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;deleteIfExists;(Path);;Argument[0];delete-file;ai-generated" + Files.deleteIfExists((Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;lines;(Path,Charset);;Argument[0];read-file;ai-generated" + Files.lines((Path) source(), null); // $ hasTaintFlow + // "java.nio.file;Files;false;move;;;Argument[1];create-file;manual" + Files.move(null, (Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;newBufferedReader;(Path,Charset);;Argument[0];read-file;ai-generated" + Files.newBufferedReader((Path) source(), null); // $ hasTaintFlow + // "java.nio.file;Files;false;newBufferedWriter;;;Argument[0];create-file;manual" + Files.newBufferedWriter((Path) source()); // $ hasTaintFlow + Files.newBufferedWriter((Path) source(), (Charset) null); // $ hasTaintFlow + // "java.nio.file;Files;false;newOutputStream;;;Argument[0];create-file;manual" + Files.newOutputStream((Path) source()); // $ hasTaintFlow + // "java.nio.file;Files;false;write;;;Argument[0];create-file;manual" + Files.write((Path) source(), (byte[]) null); // $ hasTaintFlow + Files.write((Path) source(), (Iterable) null); // $ hasTaintFlow + Files.write((Path) source(), (Iterable) null, (Charset) null); // $ hasTaintFlow + // "java.nio.file;Files;false;writeString;;;Argument[0];create-file;manual" + Files.writeString((Path) source(), (CharSequence) null); // $ hasTaintFlow + Files.writeString((Path) source(), (CharSequence) null, (Charset) null); // $ hasTaintFlow + // "javax.xml.transform.stream;StreamResult";true;"StreamResult;(File);;Argument[0];create-file;ai-generated" + new StreamResult((File) source()); // $ hasTaintFlow + // "org.apache.commons.io;FileUtils;true;openInputStream;(File);;Argument[0];read-file;ai-generated" + FileUtils.openInputStream((File) source()); // $ hasTaintFlow + // "org.codehaus.cargo.container.installer;ZipURLInstaller;true;ZipURLInstaller;(URL,String,String);;Argument[1];create-file;ai-generated" + new ZipURLInstaller((URL) null, (String) source(), ""); // $ hasTaintFlow + // "org.codehaus.cargo.container.installer;ZipURLInstaller;true;ZipURLInstaller;(URL,String,String);;Argument[2];create-file;ai-generated" + new ZipURLInstaller((URL) null, "", (String) source()); // $ hasTaintFlow + // "org.springframework.util;FileCopyUtils;false;copy;(byte[],File);;Argument[1];create-file;manual" + FileCopyUtils.copy((byte[]) null, (File) source()); // $ hasTaintFlow + // "org.springframework.util;FileCopyUtils;false;copy;(File,File);;Argument[0];create-file;manual" + FileCopyUtils.copy((File) source(), null); // $ hasTaintFlow + // "org.springframework.util;FileCopyUtils;false;copy;(File,File);;Argument[1];create-file;manual" + FileCopyUtils.copy((File) null, (File) source()); // $ hasTaintFlow + } - boolean isSortOfSafe(String pathSpec) { - // no file separators - if (pathSpec.contains(File.separator)) - return false; - return true; - } + void test(AntClassLoader acl) { + // "org.apache.tools.ant;AntClassLoader;true;addPathComponent;(File);;Argument[0];read-file;ai-generated" + acl.addPathComponent((File) source()); // $ hasTaintFlow + // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(ClassLoader,Project,Path,boolean);;Argument[2];read-file;ai-generated" + new AntClassLoader(null, null, (org.apache.tools.ant.types.Path) source(), false); // $ hasTaintFlow + // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(Project,Path,boolean);;Argument[1];read-file;ai-generated" + new AntClassLoader(null, (org.apache.tools.ant.types.Path) source(), false); // $ hasTaintFlow + // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(Project,Path);;Argument[1];read-file;ai-generated" + new AntClassLoader(null, (org.apache.tools.ant.types.Path) source()); // $ hasTaintFlow + // "org.kohsuke.stapler.framework.io;LargeText;true;LargeText;(File,Charset,boolean,boolean);;Argument[0];read-file;ai-generated" + new LargeText((File) source(), null, false, false); // $ hasTaintFlow + } - public class MyServlet extends HttpServlet { - public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream())); - String filename = br.readLine(); - // BAD: construct a file path with user input - BufferedWriter bw = new BufferedWriter(new FileWriter("dir/"+filename, true)); + void doGet6(String root, InetAddress address) throws IOException { + String temp = address.getHostName(); + // GOOD: Use `contains` and `startsWith` to check if the path is safe + if (!temp.contains("..") && temp.startsWith(root + "/")) { + File file = new File(temp); } } - void doGet4(InetAddress address) - throws IOException { - String temp = address.getHostName(); - // BAD: open a file based on user input, using a MaD-documented API - new LockableFileWriter(temp); - } + void test(DirectoryScanner ds) { + // "org.apache.tools.ant;DirectoryScanner;true;setBasedir;(File);;Argument[0];read-file;ai-generated" + ds.setBasedir((File) source()); // $ hasTaintFlow + } - void doGet5(InetAddress address) - throws URISyntaxException { - String t = address.getHostName(); - // BAD: construct a file path with user input - new File(new URI(null, t, null)); - new File(new URI(t, t, null, t)); - new File(new URI(t, null, t, t)); - new File(new URI(null, null, t, null, null)); - new File(new URI(null, null, null, 0, t, null, null)); - } + void test(Copy cp) { + // "org.apache.tools.ant.taskdefs;Copy;true;addFileset;(FileSet);;Argument[0];read-file;ai-generated" + cp.addFileset((FileSet) source()); // $ hasTaintFlow + // "org.apache.tools.ant.taskdefs;Copy;true;setFile;(File);;Argument[0];read-file;ai-generated" + cp.setFile((File) source()); // $ hasTaintFlow + // "org.apache.tools.ant.taskdefs;Copy;true;setTodir;(File);;Argument[0];create-file;ai-generated" + cp.setTodir((File) source()); // $ hasTaintFlow + // "org.apache.tools.ant.taskdefs;Copy;true;setTofile;(File);;Argument[0];create-file;ai-generated" + cp.setTofile((File) source()); // $ hasTaintFlow + } - void doGet6(String root, InetAddress address) - throws IOException{ - String temp = address.getHostName(); - // GOOD: Use `contains` and `startsWith` to check if the path is safe - if (!temp.contains("..") && temp.startsWith(root + "/")) { - File file = new File(temp); - } - } + void test(Expand ex) { + // "org.apache.tools.ant.taskdefs;Expand;true;setDest;(File);;Argument[0];create-file;ai-generated" + ex.setDest((File) source()); // $ hasTaintFlow + // "org.apache.tools.ant.taskdefs;Expand;true;setSrc;(File);;Argument[0];read-file;ai-generated" + ex.setSrc((File) source()); // $ hasTaintFlow + } + + void test(ChainedOptionsBuilder cob) { + // "org.openjdk.jmh.runner.options;ChainedOptionsBuilder;true;result;(String);;Argument[0];create-file;ai-generated" + cob.result((String) source()); // $ hasTaintFlow + } } diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/ZipSlip.expected b/java/ql/test/query-tests/security/CWE-022/semmle/tests/ZipSlip.expected index 7c6a5bffc2ee..07beb3e1b00b 100644 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/ZipSlip.expected +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/ZipSlip.expected @@ -1,9 +1,9 @@ edges -| ZipTest.java:7:19:7:33 | getName(...) : String | ZipTest.java:8:31:8:34 | name : String | -| ZipTest.java:8:17:8:35 | new File(...) : File | ZipTest.java:9:48:9:51 | file | -| ZipTest.java:8:17:8:35 | new File(...) : File | ZipTest.java:10:49:10:52 | file | -| ZipTest.java:8:17:8:35 | new File(...) : File | ZipTest.java:11:36:11:39 | file | -| ZipTest.java:8:31:8:34 | name : String | ZipTest.java:8:17:8:35 | new File(...) : File | +| ZipTest.java:7:19:7:33 | getName(...) : String | ZipTest.java:8:31:8:34 | name : String | provenance | | +| ZipTest.java:8:17:8:35 | new File(...) : File | ZipTest.java:9:48:9:51 | file | provenance | | +| ZipTest.java:8:17:8:35 | new File(...) : File | ZipTest.java:10:49:10:52 | file | provenance | | +| ZipTest.java:8:17:8:35 | new File(...) : File | ZipTest.java:11:36:11:39 | file | provenance | | +| ZipTest.java:8:31:8:34 | name : String | ZipTest.java:8:17:8:35 | new File(...) : File | provenance | | nodes | ZipTest.java:7:19:7:33 | getName(...) : String | semmle.label | getName(...) : String | | ZipTest.java:8:17:8:35 | new File(...) : File | semmle.label | new File(...) : File | diff --git a/java/ql/test/query-tests/security/CWE-022/semmle/tests/mad/Test.java b/java/ql/test/query-tests/security/CWE-022/semmle/tests/mad/Test.java deleted file mode 100644 index 169f3535c6b9..000000000000 --- a/java/ql/test/query-tests/security/CWE-022/semmle/tests/mad/Test.java +++ /dev/null @@ -1,228 +0,0 @@ -import java.io.File; -import java.io.FileInputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.InetAddress; -import java.net.URL; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Path; -import javax.activation.FileDataSource; -import javax.xml.transform.stream.StreamResult; -import org.apache.cxf.common.classloader.ClassLoaderUtils; -import org.apache.cxf.common.jaxb.JAXBUtils; -import org.apache.cxf.configuration.jsse.SSLUtils; -import org.apache.cxf.resource.ExtendedURIResolver; -import org.apache.cxf.resource.URIResolver; -import org.apache.cxf.staxutils.StaxUtils; -import org.apache.cxf.tools.corba.utils.FileOutputStreamFactory; -import org.apache.cxf.tools.corba.utils.OutputStreamFactory; -import org.apache.cxf.tools.util.FileWriterUtil; -import org.apache.cxf.tools.util.OutputStreamCreator; -import org.apache.commons.io.FileUtils; -import org.apache.tools.ant.AntClassLoader; -import org.apache.tools.ant.DirectoryScanner; -import org.apache.tools.ant.taskdefs.Copy; -import org.apache.tools.ant.taskdefs.Expand; -import org.apache.tools.ant.types.FileSet; -import org.codehaus.cargo.container.installer.ZipURLInstaller; -import org.kohsuke.stapler.framework.io.LargeText; -import org.openjdk.jmh.runner.options.ChainedOptionsBuilder; -import org.springframework.util.FileCopyUtils; - -public class Test { - - private InetAddress address; - - public Object source() { - return address.getHostName(); - } - - void test() throws IOException { - // "java.lang;Module;true;getResourceAsStream;(String);;Argument[0];read-file;ai-generated" - getClass().getModule().getResourceAsStream((String) source()); - // "java.lang;Class;false;getResource;(String);;Argument[0];read-file;ai-generated" - getClass().getResource((String) source()); - // "java.lang;ClassLoader;true;getSystemResourceAsStream;(String);;Argument[0];read-file;ai-generated" - ClassLoader.getSystemResourceAsStream((String) source()); - // "java.io;File;true;createTempFile;(String,String,File);;Argument[2];create-file;ai-generated" - File.createTempFile(";", ";", (File) source()); - // "java.io;File;true;renameTo;(File);;Argument[0];create-file;ai-generated" - new File("").renameTo((File) source()); - // "java.io;FileInputStream;true;FileInputStream;(File);;Argument[0];read-file;ai-generated" - new FileInputStream((File) source()); - // "java.io;FileReader;true;FileReader;(File);;Argument[0];read-file;ai-generated" - new FileReader((File) source()); - // "java.io;FileReader;true;FileReader;(String);;Argument[0];read-file;ai-generated" - new FileReader((String) source()); - // "java.nio.file;Files;false;copy;(Path,OutputStream);;Argument[0];read-file;manual" - Files.copy((Path) source(), (OutputStream) null); - // "java.nio.file;Files;false;copy;(Path,Path,CopyOption[]);;Argument[0];read-file;manual" - Files.copy((Path) source(), (Path) null); - // "java.nio.file;Files;false;copy;(Path,Path,CopyOption[]);;Argument[1];create-file;manual" - Files.copy((Path) null, (Path) source()); - // "java.nio.file;Files;false;copy;(InputStream,Path,CopyOption[]);;Argument[1];create-file;manual" - Files.copy((InputStream) null, (Path) source()); - // "java.nio.file;Files;false;createDirectories;;;Argument[0];create-file;manual" - Files.createDirectories((Path) source()); - // "java.nio.file;Files;false;createDirectory;;;Argument[0];create-file;manual" - Files.createDirectory((Path) source()); - // "java.nio.file;Files;false;createFile;;;Argument[0];create-file;manual" - Files.createFile((Path) source()); - // "java.nio.file;Files;false;createLink;;;Argument[0];create-file;manual" - Files.createLink((Path) source(), null); - // "java.nio.file;Files;false;createSymbolicLink;;;Argument[0];create-file;manual" - Files.createSymbolicLink((Path) source(), null); - // "java.nio.file;Files;false;createTempDirectory;(Path,String,FileAttribute[]);;Argument[0];create-file;manual" - Files.createTempDirectory((Path) source(), null); - // "java.nio.file;Files;false;createTempFile;(Path,String,String,FileAttribute[]);;Argument[0];create-file;manual" - Files.createTempFile((Path) source(), null, null); - // "java.nio.file;Files;false;delete;(Path);;Argument[0];delete-file;ai-generated" - Files.delete((Path) source()); - // "java.nio.file;Files;false;deleteIfExists;(Path);;Argument[0];delete-file;ai-generated" - Files.deleteIfExists((Path) source()); - // "java.nio.file;Files;false;lines;(Path,Charset);;Argument[0];read-file;ai-generated" - Files.lines((Path) source(), null); - // "java.nio.file;Files;false;move;;;Argument[1];create-file;manual" - Files.move(null, (Path) source()); - // "java.nio.file;Files;false;newBufferedReader;(Path,Charset);;Argument[0];read-file;ai-generated" - Files.newBufferedReader((Path) source(), null); - // "java.nio.file;Files;false;newBufferedWriter;;;Argument[0];create-file;manual" - Files.newBufferedWriter((Path) source()); - Files.newBufferedWriter((Path) source(), (Charset) null); - // "java.nio.file;Files;false;newOutputStream;;;Argument[0];create-file;manual" - Files.newOutputStream((Path) source()); - // "java.nio.file;Files;false;write;;;Argument[0];create-file;manual" - Files.write((Path) source(), (byte[]) null); - Files.write((Path) source(), (Iterable) null); - Files.write((Path) source(), (Iterable) null, (Charset) null); - // "java.nio.file;Files;false;writeString;;;Argument[0];create-file;manual" - Files.writeString((Path) source(), (CharSequence) null); - Files.writeString((Path) source(), (CharSequence) null, (Charset) null); - // "javax.xml.transform.stream;StreamResult";true;"StreamResult;(File);;Argument[0];create-file;ai-generated" - new StreamResult((File) source()); - // "org.apache.commons.io;FileUtils;true;openInputStream;(File);;Argument[0];read-file;ai-generated" - FileUtils.openInputStream((File) source()); - // "org.codehaus.cargo.container.installer;ZipURLInstaller;true;ZipURLInstaller;(URL,String,String);;Argument[1];create-file;ai-generated" - new ZipURLInstaller((URL) null, (String) source(), ""); - // "org.codehaus.cargo.container.installer;ZipURLInstaller;true;ZipURLInstaller;(URL,String,String);;Argument[2];create-file;ai-generated" - new ZipURLInstaller((URL) null, "", (String) source()); - // "org.springframework.util;FileCopyUtils;false;copy;(byte[],File);;Argument[1];create-file;manual" - FileCopyUtils.copy((byte[]) null, (File) source()); - // "org.springframework.util;FileCopyUtils;false;copy;(File,File);;Argument[0];create-file;manual" - FileCopyUtils.copy((File) source(), null); - // "org.springframework.util;FileCopyUtils;false;copy;(File,File);;Argument[1];create-file;manual" - FileCopyUtils.copy((File) null, (File) source()); - // "javax.activation;FileDataSource;true;FileDataSource;(String);;Argument[0];path-injection;manual" - new FileDataSource((String) source()); - // "javax.activation;FileDataSource;true;FileDataSource;(File);;Argument[0];path-injection;manual" - new FileDataSource((File) source()); - // "org.apache.cxf.common.classloader;ClassLoaderUtils;true;getResourceAsStream;(String,Class);;Argument[0];path-injection;manual" - ClassLoaderUtils.getResourceAsStream((String) source(), null); - // "org.apache.cxf.common.jaxb;JAXBUtils;true;createFileCodeWriter;(File);;Argument[0];path-injection;manual" - JAXBUtils.createFileCodeWriter((File) source()); - // "org.apache.cxf.common.jaxb;JAXBUtils;true;createFileCodeWriter;(File,String);;Argument[0];path-injection;manual" - JAXBUtils.createFileCodeWriter((File) source(), null); - // "org.apache.cxf.configuration.jsse:SSLUtils;true;loadFile;(String);;Argument[0];path-injection;manual" - new SSLUtils() { - public void test() { - loadFile((String) source()); - } - }; - // "org.apache.cxf.helpers;FileUtils;true;delete;(File);;Argument[0];path-injection;manual" - org.apache.cxf.helpers.FileUtils.delete((File) source()); - // "org.apache.cxf.helpers;FileUtils;true;delete;(File,boolean);;Argument[0];path-injection;manual" - org.apache.cxf.helpers.FileUtils.delete((File) source(), false); - // "org.apache.cxf.helpers;FileUtils;true;mkdir;(File);;Argument[0];path-injection;manual" - org.apache.cxf.helpers.FileUtils.mkDir((File) source()); - // "org.apache.cxf.helpers;FileUtils;true;readLines;(File);;Argument[0];path-injection;manual" - org.apache.cxf.helpers.FileUtils.readLines((File) source()); - // "org.apache.cxf.helpers;FileUtils;true;removeDir;(File);;Argument[0];path-injection;manual" - org.apache.cxf.helpers.FileUtils.removeDir((File) source()); - // "org.apache.cxf.resource;ExtendedURIResolver;true;resolve;(String,String);;Argument[1];path-injection;manual" - new ExtendedURIResolver().resolve(null, (String) source()); // $ SSRF - // "org.apache.cxf.resource;URIResolver;true;URIResolver;(String,String);;Argument[0];path-injection;manual" - new URIResolver((String) source(), null); // $ SSRF - // "org.apache.cxf.resource;URIResolver;true;URIResolver;(String,String,Class);;Argument[0];path-injection;manual" - new URIResolver((String) source(), null, null); // $ SSRF - // "org.apache.cxf.resource;URIResolver;true;resolve;(String,String,Class);;Argument[0];path-injection;manual" - new URIResolver().resolve((String) source(), null, null); // $ SSRF - // "org.apache.cxf.staxutils;StaxUtils;true;read;(File);;Argument[0];path-injection;manual" - StaxUtils.read((File) source()); // $ SSRF - // "org.apache.cxf.tools.corba.utils;FileOutputStreamFactory;true;FileOutputStreamFactory;(String);;Argument[0];path-injection;manual" - new FileOutputStreamFactory((String) source()); // $ SSRF - // "org.apache.cxf.tools.corba.utils;FileOutputStreamFactory;true;FileOutputStreamFactory;(String,FileOutputStreamFactory);;Argument[0];path-injection;manual" - new FileOutputStreamFactory((String) source(), null); // $ SSRF - // "org.apache.cxf.tools.corba.utils;OutputStreamFactory;true;createOutputStream;(String);;Argument[0];path-injection;manual" - new FileOutputStreamFactory().createOutputStream((String) source()); // $ SSRF - // "org.apache.cxf.tools.corba.utils;OutputStreamFactory;true;createOutputStream;(String,String);;Argument[0];path-injection;manual" - new FileOutputStreamFactory().createOutputStream((String) source(), null); // $ SSRF - // "org.apache.cxf.tools.corba.utils;OutputStreamFactory;true;createOutputStream;(String,String);;Argument[1];path-injection;manual" - new FileOutputStreamFactory().createOutputStream(null, (String) source()); // $ SSRF - // @formatter:off - // "org.apache.cxf.tools.util;FileWriterUtil;true;FileWriterUtil;(String,OutputStreamCreator);;Argument[0];path-injection;manual" - new FileWriterUtil((String) source(), null); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;buildDir;(String);;Argument[0];path-injection;manual" - new FileWriterUtil().buildDir((String) source()); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;getFileToWrite;(String,String);;Argument[0];path-injection;manual" - new FileWriterUtil().getFileToWrite((String) source(), (String) null); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;getFileToWrite;(String,String);;Argument[1];path-injection;manual" - new FileWriterUtil().getFileToWrite((String) null, (String) source()); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;getWriter;(File,String);;Argument[0];path-injection;manual" - new FileWriterUtil().getWriter((File) source(), (String) null); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;getWriter;(String,String);;Argument[0];path-injection;manual" - new FileWriterUtil().getWriter((String) source(), null); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;getWriter;(String,String);;Argument[1];path-injection;manual" - new FileWriterUtil().getWriter((String) null, (String) source()); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;getWriter;(String,String,String);;Argument[0];path-injection;manual" - new FileWriterUtil().getWriter((String) source(), null, null); // $ SSRF - // "org.apache.cxf.tools.util;FileWriterUtil;true;getWriter;(String,String,String);;Argument[1];path-injection;manual" - new FileWriterUtil().getWriter((String) null, (String) source(), null); // $ SSRF - // "org.apache.cxf.tools.util;OutputStreamCreator;true;createOutputStream;(File);;Argument[0];path-injection;manual" - new OutputStreamCreator().createOutputStream((File) source()); // $ SSRF - // @formatter:on - } - - void test(AntClassLoader acl) { - // "org.apache.tools.ant;AntClassLoader;true;addPathComponent;(File);;Argument[0];read-file;ai-generated" - acl.addPathComponent((File) source()); - // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(ClassLoader,Project,Path,boolean);;Argument[2];read-file;ai-generated" - new AntClassLoader(null, null, (org.apache.tools.ant.types.Path) source(), false); - // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(Project,Path,boolean);;Argument[1];read-file;ai-generated" - new AntClassLoader(null, (org.apache.tools.ant.types.Path) source(), false); - // "org.apache.tools.ant;AntClassLoader;true;AntClassLoader;(Project,Path);;Argument[1];read-file;ai-generated" - new AntClassLoader(null, (org.apache.tools.ant.types.Path) source()); - // "org.kohsuke.stapler.framework.io;LargeText;true;LargeText;(File,Charset,boolean,boolean);;Argument[0];read-file;ai-generated" - new LargeText((File) source(), null, false, false); - } - - void test(DirectoryScanner ds) { - // "org.apache.tools.ant;DirectoryScanner;true;setBasedir;(File);;Argument[0];read-file;ai-generated" - ds.setBasedir((File) source()); - } - - void test(Copy cp) { - // "org.apache.tools.ant.taskdefs;Copy;true;addFileset;(FileSet);;Argument[0];read-file;ai-generated" - cp.addFileset((FileSet) source()); - // "org.apache.tools.ant.taskdefs;Copy;true;setFile;(File);;Argument[0];read-file;ai-generated" - cp.setFile((File) source()); - // "org.apache.tools.ant.taskdefs;Copy;true;setTodir;(File);;Argument[0];create-file;ai-generated" - cp.setTodir((File) source()); - // "org.apache.tools.ant.taskdefs;Copy;true;setTofile;(File);;Argument[0];create-file;ai-generated" - cp.setTofile((File) source()); - } - - void test(Expand ex) { - // "org.apache.tools.ant.taskdefs;Expand;true;setDest;(File);;Argument[0];create-file;ai-generated" - ex.setDest((File) source()); - // "org.apache.tools.ant.taskdefs;Expand;true;setSrc;(File);;Argument[0];read-file;ai-generated" - ex.setSrc((File) source()); - } - - void test(ChainedOptionsBuilder cob) { - // "org.openjdk.jmh.runner.options;ChainedOptionsBuilder;true;result;(String);;Argument[0];create-file;ai-generated" - cob.result((String) source()); - } -} diff --git a/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected b/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected index fd2c8fb4d5cc..791ee28469ad 100644 --- a/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected +++ b/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected @@ -1,23 +1,23 @@ edges -| Test.java:6:35:6:44 | arg : String | Test.java:7:44:7:69 | ... + ... : String | -| Test.java:6:35:6:44 | arg : String | Test.java:10:61:10:73 | ... + ... : String | -| Test.java:6:35:6:44 | arg : String | Test.java:16:13:16:25 | ... + ... : String | -| Test.java:6:35:6:44 | arg : String | Test.java:22:15:22:27 | ... + ... : String | -| Test.java:7:25:7:70 | new ..[] { .. } : String[] [[]] : String | Test.java:7:25:7:70 | new ..[] { .. } | -| Test.java:7:44:7:69 | ... + ... : String | Test.java:7:25:7:70 | new ..[] { .. } : String[] [[]] : String | -| Test.java:10:29:10:74 | {...} : String[] [[]] : String | Test.java:10:29:10:74 | new String[] | -| Test.java:10:61:10:73 | ... + ... : String | Test.java:10:29:10:74 | {...} : String[] [[]] : String | -| Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | Test.java:18:29:18:31 | cmd | -| Test.java:16:13:16:25 | ... + ... : String | Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | -| Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | Test.java:24:29:24:32 | cmd1 | -| Test.java:22:15:22:27 | ... + ... : String | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | -| Test.java:28:38:28:47 | arg : String | Test.java:29:44:29:64 | ... + ... : String | -| Test.java:29:25:29:65 | new ..[] { .. } : String[] [[]] : String | Test.java:29:25:29:65 | new ..[] { .. } | -| Test.java:29:44:29:64 | ... + ... : String | Test.java:29:25:29:65 | new ..[] { .. } : String[] [[]] : String | -| Test.java:57:27:57:39 | args : String[] | Test.java:60:20:60:22 | arg : String | -| Test.java:57:27:57:39 | args : String[] | Test.java:61:23:61:25 | arg : String | -| Test.java:60:20:60:22 | arg : String | Test.java:6:35:6:44 | arg : String | -| Test.java:61:23:61:25 | arg : String | Test.java:28:38:28:47 | arg : String | +| Test.java:6:35:6:44 | arg : String | Test.java:7:44:7:69 | ... + ... : String | provenance | | +| Test.java:6:35:6:44 | arg : String | Test.java:10:61:10:73 | ... + ... : String | provenance | | +| Test.java:6:35:6:44 | arg : String | Test.java:16:13:16:25 | ... + ... : String | provenance | | +| Test.java:6:35:6:44 | arg : String | Test.java:22:15:22:27 | ... + ... : String | provenance | | +| Test.java:7:25:7:70 | new ..[] { .. } : String[] [[]] : String | Test.java:7:25:7:70 | new ..[] { .. } | provenance | | +| Test.java:7:44:7:69 | ... + ... : String | Test.java:7:25:7:70 | new ..[] { .. } : String[] [[]] : String | provenance | | +| Test.java:10:29:10:74 | {...} : String[] [[]] : String | Test.java:10:29:10:74 | new String[] | provenance | | +| Test.java:10:61:10:73 | ... + ... : String | Test.java:10:29:10:74 | {...} : String[] [[]] : String | provenance | | +| Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | Test.java:18:29:18:31 | cmd | provenance | | +| Test.java:16:13:16:25 | ... + ... : String | Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | provenance | | +| Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | Test.java:24:29:24:32 | cmd1 | provenance | | +| Test.java:22:15:22:27 | ... + ... : String | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | provenance | | +| Test.java:28:38:28:47 | arg : String | Test.java:29:44:29:64 | ... + ... : String | provenance | | +| Test.java:29:25:29:65 | new ..[] { .. } : String[] [[]] : String | Test.java:29:25:29:65 | new ..[] { .. } | provenance | | +| Test.java:29:44:29:64 | ... + ... : String | Test.java:29:25:29:65 | new ..[] { .. } : String[] [[]] : String | provenance | | +| Test.java:57:27:57:39 | args : String[] | Test.java:60:20:60:22 | arg : String | provenance | | +| Test.java:57:27:57:39 | args : String[] | Test.java:61:23:61:25 | arg : String | provenance | | +| Test.java:60:20:60:22 | arg : String | Test.java:6:35:6:44 | arg : String | provenance | | +| Test.java:61:23:61:25 | arg : String | Test.java:28:38:28:47 | arg : String | provenance | | nodes | Test.java:6:35:6:44 | arg : String | semmle.label | arg : String | | Test.java:7:25:7:70 | new ..[] { .. } | semmle.label | new ..[] { .. } | diff --git a/java/ql/test/query-tests/security/CWE-089/semmle/examples/SqlTaintedLocal.expected b/java/ql/test/query-tests/security/CWE-089/semmle/examples/SqlTaintedLocal.expected index 45577278a7e3..75c75b528ad6 100644 --- a/java/ql/test/query-tests/security/CWE-089/semmle/examples/SqlTaintedLocal.expected +++ b/java/ql/test/query-tests/security/CWE-089/semmle/examples/SqlTaintedLocal.expected @@ -1,25 +1,25 @@ edges -| Mongo.java:10:29:10:41 | args : String[] | Mongo.java:17:56:17:66 | stringQuery : String | -| Mongo.java:10:29:10:41 | args : String[] | Mongo.java:21:49:21:52 | json | -| Mongo.java:17:56:17:66 | stringQuery : String | Mongo.java:17:45:17:67 | parse(...) | -| Test.java:29:30:29:42 | args : String[] | Test.java:36:47:36:52 | query1 | -| Test.java:29:30:29:42 | args : String[] | Test.java:42:57:42:62 | query2 | -| Test.java:29:30:29:42 | args : String[] | Test.java:50:62:50:67 | query3 | -| Test.java:29:30:29:42 | args : String[] | Test.java:58:19:58:26 | category : String | -| Test.java:29:30:29:42 | args : String[] | Test.java:70:40:70:44 | query | -| Test.java:29:30:29:42 | args : String[] | Test.java:78:46:78:50 | query | -| Test.java:58:4:58:10 | querySb [post update] : StringBuilder | Test.java:60:29:60:35 | querySb : StringBuilder | -| Test.java:58:19:58:26 | category : String | Test.java:58:4:58:10 | querySb [post update] : StringBuilder | -| Test.java:60:29:60:35 | querySb : StringBuilder | Test.java:60:29:60:46 | toString(...) : String | -| Test.java:60:29:60:46 | toString(...) : String | Test.java:62:47:62:61 | querySbToString | -| Test.java:183:33:183:45 | args : String[] | Test.java:209:47:209:68 | queryWithUserTableName | -| Test.java:213:34:213:46 | args : String[] | Test.java:221:81:221:111 | ... + ... | -| Test.java:227:26:227:38 | args : String[] | Test.java:228:11:228:14 | args : String[] | -| Test.java:227:26:227:38 | args : String[] | Test.java:232:14:232:17 | args : String[] | -| Test.java:227:26:227:38 | args : String[] | Test.java:233:15:233:18 | args : String[] | -| Test.java:228:11:228:14 | args : String[] | Test.java:29:30:29:42 | args : String[] | -| Test.java:232:14:232:17 | args : String[] | Test.java:183:33:183:45 | args : String[] | -| Test.java:233:15:233:18 | args : String[] | Test.java:213:34:213:46 | args : String[] | +| Mongo.java:10:29:10:41 | args : String[] | Mongo.java:17:56:17:66 | stringQuery : String | provenance | | +| Mongo.java:10:29:10:41 | args : String[] | Mongo.java:21:49:21:52 | json | provenance | | +| Mongo.java:17:56:17:66 | stringQuery : String | Mongo.java:17:45:17:67 | parse(...) | provenance | | +| Test.java:29:30:29:42 | args : String[] | Test.java:36:47:36:52 | query1 | provenance | | +| Test.java:29:30:29:42 | args : String[] | Test.java:42:57:42:62 | query2 | provenance | | +| Test.java:29:30:29:42 | args : String[] | Test.java:50:62:50:67 | query3 | provenance | | +| Test.java:29:30:29:42 | args : String[] | Test.java:58:19:58:26 | category : String | provenance | | +| Test.java:29:30:29:42 | args : String[] | Test.java:70:40:70:44 | query | provenance | | +| Test.java:29:30:29:42 | args : String[] | Test.java:78:46:78:50 | query | provenance | | +| Test.java:58:4:58:10 | querySb [post update] : StringBuilder | Test.java:60:29:60:35 | querySb : StringBuilder | provenance | | +| Test.java:58:19:58:26 | category : String | Test.java:58:4:58:10 | querySb [post update] : StringBuilder | provenance | | +| Test.java:60:29:60:35 | querySb : StringBuilder | Test.java:60:29:60:46 | toString(...) : String | provenance | | +| Test.java:60:29:60:46 | toString(...) : String | Test.java:62:47:62:61 | querySbToString | provenance | | +| Test.java:183:33:183:45 | args : String[] | Test.java:209:47:209:68 | queryWithUserTableName | provenance | | +| Test.java:213:34:213:46 | args : String[] | Test.java:221:81:221:111 | ... + ... | provenance | | +| Test.java:227:26:227:38 | args : String[] | Test.java:228:11:228:14 | args : String[] | provenance | | +| Test.java:227:26:227:38 | args : String[] | Test.java:232:14:232:17 | args : String[] | provenance | | +| Test.java:227:26:227:38 | args : String[] | Test.java:233:15:233:18 | args : String[] | provenance | | +| Test.java:228:11:228:14 | args : String[] | Test.java:29:30:29:42 | args : String[] | provenance | | +| Test.java:232:14:232:17 | args : String[] | Test.java:183:33:183:45 | args : String[] | provenance | | +| Test.java:233:15:233:18 | args : String[] | Test.java:213:34:213:46 | args : String[] | provenance | | nodes | Mongo.java:10:29:10:41 | args : String[] | semmle.label | args : String[] | | Mongo.java:17:45:17:67 | parse(...) | semmle.label | parse(...) | diff --git a/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected b/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected index 961ad3ed6ef0..69c97ca84877 100644 --- a/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected +++ b/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected @@ -1,143 +1,143 @@ edges -| LdapInjection.java:45:28:45:52 | jBad : String | LdapInjection.java:47:38:47:57 | ... + ... | -| LdapInjection.java:45:55:45:81 | jBadDN : String | LdapInjection.java:47:16:47:35 | ... + ... | -| LdapInjection.java:51:28:51:52 | jBad : String | LdapInjection.java:53:56:53:75 | ... + ... | -| LdapInjection.java:51:55:51:85 | jBadDNName : String | LdapInjection.java:53:29:53:52 | ... + ... : String | -| LdapInjection.java:53:29:53:52 | ... + ... : String | LdapInjection.java:53:16:53:53 | new LdapName(...) | -| LdapInjection.java:57:28:57:52 | jBad : String | LdapInjection.java:59:63:59:82 | ... + ... | -| LdapInjection.java:63:28:63:59 | jBadInitial : String | LdapInjection.java:65:29:65:55 | ... + ... | -| LdapInjection.java:69:28:69:52 | jBad : String | LdapInjection.java:71:84:71:103 | ... + ... | -| LdapInjection.java:69:55:69:88 | jBadDNNameAdd : String | LdapInjection.java:71:53:71:79 | ... + ... : String | -| LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | LdapInjection.java:71:16:71:81 | addAll(...) | -| LdapInjection.java:71:53:71:79 | ... + ... : String | LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | -| LdapInjection.java:75:28:75:52 | jBad : String | LdapInjection.java:79:47:79:66 | ... + ... | -| LdapInjection.java:75:55:75:89 | jBadDNNameAdd2 : String | LdapInjection.java:78:30:78:57 | ... + ... : String | -| LdapInjection.java:78:5:78:8 | name : LdapName | LdapInjection.java:79:40:79:43 | name : LdapName | -| LdapInjection.java:78:17:78:58 | new LdapName(...) : LdapName | LdapInjection.java:78:17:78:68 | getRdns(...) : List | -| LdapInjection.java:78:17:78:68 | getRdns(...) : List | LdapInjection.java:78:5:78:8 | name : LdapName | -| LdapInjection.java:78:30:78:57 | ... + ... : String | LdapInjection.java:78:17:78:58 | new LdapName(...) : LdapName | -| LdapInjection.java:79:40:79:43 | name : LdapName | LdapInjection.java:79:16:79:44 | addAll(...) | -| LdapInjection.java:83:28:83:52 | jBad : String | LdapInjection.java:85:75:85:94 | ... + ... | -| LdapInjection.java:83:55:83:93 | jBadDNNameToString : String | LdapInjection.java:85:29:85:60 | ... + ... : String | -| LdapInjection.java:85:16:85:61 | new LdapName(...) : LdapName | LdapInjection.java:85:16:85:72 | toString(...) | -| LdapInjection.java:85:29:85:60 | ... + ... : String | LdapInjection.java:85:16:85:61 | new LdapName(...) : LdapName | -| LdapInjection.java:89:28:89:52 | jBad : String | LdapInjection.java:91:76:91:95 | ... + ... | -| LdapInjection.java:89:55:89:90 | jBadDNNameClone : String | LdapInjection.java:91:36:91:64 | ... + ... : String | -| LdapInjection.java:91:23:91:65 | new LdapName(...) : LdapName | LdapInjection.java:91:23:91:73 | clone(...) : Object | -| LdapInjection.java:91:23:91:73 | clone(...) : Object | LdapInjection.java:91:16:91:73 | (...)... | -| LdapInjection.java:91:36:91:64 | ... + ... : String | LdapInjection.java:91:23:91:65 | new LdapName(...) : LdapName | -| LdapInjection.java:106:31:106:55 | uBad : String | LdapInjection.java:108:67:108:86 | ... + ... | -| LdapInjection.java:106:58:106:84 | uBadDN : String | LdapInjection.java:108:20:108:39 | ... + ... | -| LdapInjection.java:112:31:112:67 | uBadFilterCreate : String | LdapInjection.java:113:72:113:87 | uBadFilterCreate : String | -| LdapInjection.java:113:72:113:87 | uBadFilterCreate : String | LdapInjection.java:113:58:113:88 | create(...) | -| LdapInjection.java:117:31:117:70 | uBadROSearchRequest : String | LdapInjection.java:120:9:120:43 | ... + ... : String | -| LdapInjection.java:117:73:117:103 | uBadROSRDN : String | LdapInjection.java:119:55:119:78 | ... + ... : String | -| LdapInjection.java:119:31:120:44 | new SearchRequest(...) : SearchRequest | LdapInjection.java:121:14:121:14 | s | -| LdapInjection.java:119:55:119:78 | ... + ... : String | LdapInjection.java:119:31:120:44 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:120:9:120:43 | ... + ... : String | LdapInjection.java:119:31:120:44 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:125:31:125:68 | uBadSearchRequest : String | LdapInjection.java:128:9:128:41 | ... + ... : String | -| LdapInjection.java:125:71:125:99 | uBadSRDN : String | LdapInjection.java:127:47:127:68 | ... + ... : String | -| LdapInjection.java:127:23:128:42 | new SearchRequest(...) : SearchRequest | LdapInjection.java:129:14:129:14 | s | -| LdapInjection.java:127:47:127:68 | ... + ... : String | LdapInjection.java:127:23:128:42 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:128:9:128:41 | ... + ... : String | LdapInjection.java:127:23:128:42 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:133:31:133:55 | uBad : String | LdapInjection.java:135:69:135:88 | ... + ... | -| LdapInjection.java:133:58:133:87 | uBadDNSFR : String | LdapInjection.java:135:22:135:44 | ... + ... | -| LdapInjection.java:139:31:139:75 | uBadROSearchRequestAsync : String | LdapInjection.java:142:9:142:48 | ... + ... : String | -| LdapInjection.java:139:78:139:113 | uBadROSRDNAsync : String | LdapInjection.java:141:55:141:83 | ... + ... : String | -| LdapInjection.java:141:31:142:49 | new SearchRequest(...) : SearchRequest | LdapInjection.java:143:19:143:19 | s | -| LdapInjection.java:141:55:141:83 | ... + ... : String | LdapInjection.java:141:31:142:49 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:142:9:142:48 | ... + ... : String | LdapInjection.java:141:31:142:49 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:147:31:147:73 | uBadSearchRequestAsync : String | LdapInjection.java:150:9:150:46 | ... + ... : String | -| LdapInjection.java:147:76:147:109 | uBadSRDNAsync : String | LdapInjection.java:149:47:149:73 | ... + ... : String | -| LdapInjection.java:149:23:150:47 | new SearchRequest(...) : SearchRequest | LdapInjection.java:151:19:151:19 | s | -| LdapInjection.java:149:47:149:73 | ... + ... : String | LdapInjection.java:149:23:150:47 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:150:9:150:46 | ... + ... : String | LdapInjection.java:149:23:150:47 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:155:31:155:70 | uBadFilterCreateNOT : String | LdapInjection.java:156:95:156:113 | uBadFilterCreateNOT : String | -| LdapInjection.java:156:81:156:114 | create(...) : Filter | LdapInjection.java:156:58:156:115 | createNOTFilter(...) | -| LdapInjection.java:156:95:156:113 | uBadFilterCreateNOT : String | LdapInjection.java:156:81:156:114 | create(...) : Filter | -| LdapInjection.java:160:31:160:75 | uBadFilterCreateToString : String | LdapInjection.java:161:72:161:95 | uBadFilterCreateToString : String | -| LdapInjection.java:161:58:161:96 | create(...) : Filter | LdapInjection.java:161:58:161:107 | toString(...) | -| LdapInjection.java:161:72:161:95 | uBadFilterCreateToString : String | LdapInjection.java:161:58:161:96 | create(...) : Filter | -| LdapInjection.java:165:32:165:82 | uBadFilterCreateToStringBuffer : String | LdapInjection.java:167:19:167:48 | uBadFilterCreateToStringBuffer : String | -| LdapInjection.java:167:5:167:49 | create(...) : Filter | LdapInjection.java:167:70:167:70 | b : StringBuilder | -| LdapInjection.java:167:19:167:48 | uBadFilterCreateToStringBuffer : String | LdapInjection.java:167:5:167:49 | create(...) : Filter | -| LdapInjection.java:167:70:167:70 | b : StringBuilder | LdapInjection.java:168:58:168:58 | b : StringBuilder | -| LdapInjection.java:168:58:168:58 | b : StringBuilder | LdapInjection.java:168:58:168:69 | toString(...) | -| LdapInjection.java:172:32:172:78 | uBadSearchRequestDuplicate : String | LdapInjection.java:175:9:175:50 | ... + ... : String | -| LdapInjection.java:174:23:175:51 | new SearchRequest(...) : SearchRequest | LdapInjection.java:176:14:176:14 | s : SearchRequest | -| LdapInjection.java:175:9:175:50 | ... + ... : String | LdapInjection.java:174:23:175:51 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:176:14:176:14 | s : SearchRequest | LdapInjection.java:176:14:176:26 | duplicate(...) | -| LdapInjection.java:180:32:180:80 | uBadROSearchRequestDuplicate : String | LdapInjection.java:183:9:183:52 | ... + ... : String | -| LdapInjection.java:182:31:183:53 | new SearchRequest(...) : SearchRequest | LdapInjection.java:184:14:184:14 | s : SearchRequest | -| LdapInjection.java:183:9:183:52 | ... + ... : String | LdapInjection.java:182:31:183:53 | new SearchRequest(...) : SearchRequest | -| LdapInjection.java:184:14:184:14 | s : SearchRequest | LdapInjection.java:184:14:184:26 | duplicate(...) | -| LdapInjection.java:188:32:188:74 | uBadSearchRequestSetDN : String | LdapInjection.java:191:17:191:38 | uBadSearchRequestSetDN : String | -| LdapInjection.java:191:5:191:5 | s : SearchRequest | LdapInjection.java:192:14:192:14 | s | -| LdapInjection.java:191:17:191:38 | uBadSearchRequestSetDN : String | LdapInjection.java:191:5:191:5 | s : SearchRequest | -| LdapInjection.java:196:32:196:78 | uBadSearchRequestSetFilter : String | LdapInjection.java:199:17:199:42 | uBadSearchRequestSetFilter : String | -| LdapInjection.java:199:5:199:5 | s : SearchRequest | LdapInjection.java:200:14:200:14 | s | -| LdapInjection.java:199:17:199:42 | uBadSearchRequestSetFilter : String | LdapInjection.java:199:5:199:5 | s : SearchRequest | -| LdapInjection.java:229:30:229:54 | sBad : String | LdapInjection.java:230:36:230:55 | ... + ... | -| LdapInjection.java:229:57:229:83 | sBadDN : String | LdapInjection.java:230:14:230:33 | ... + ... | -| LdapInjection.java:234:30:234:54 | sBad : String | LdapInjection.java:235:88:235:107 | ... + ... | -| LdapInjection.java:234:57:234:92 | sBadDNLNBuilder : String | LdapInjection.java:235:48:235:76 | ... + ... : String | -| LdapInjection.java:235:20:235:77 | newInstance(...) : LdapNameBuilder | LdapInjection.java:235:20:235:85 | build(...) | -| LdapInjection.java:235:48:235:76 | ... + ... : String | LdapInjection.java:235:20:235:77 | newInstance(...) : LdapNameBuilder | -| LdapInjection.java:239:30:239:54 | sBad : String | LdapInjection.java:240:100:240:119 | ... + ... | -| LdapInjection.java:239:57:239:95 | sBadDNLNBuilderAdd : String | LdapInjection.java:240:57:240:88 | ... + ... : String | -| LdapInjection.java:240:23:240:89 | add(...) : LdapNameBuilder | LdapInjection.java:240:23:240:97 | build(...) | -| LdapInjection.java:240:57:240:88 | ... + ... : String | LdapInjection.java:240:23:240:89 | add(...) : LdapNameBuilder | -| LdapInjection.java:244:30:244:63 | sBadLdapQuery : String | LdapInjection.java:245:47:245:75 | ... + ... : String | -| LdapInjection.java:245:47:245:75 | ... + ... : String | LdapInjection.java:245:15:245:76 | filter(...) | -| LdapInjection.java:249:30:249:60 | sBadFilter : String | LdapInjection.java:250:86:250:111 | ... + ... : String | -| LdapInjection.java:249:63:249:98 | sBadDNLdapUtils : String | LdapInjection.java:250:34:250:62 | ... + ... : String | -| LdapInjection.java:250:34:250:62 | ... + ... : String | LdapInjection.java:250:12:250:63 | newLdapName(...) | -| LdapInjection.java:250:86:250:111 | ... + ... : String | LdapInjection.java:250:66:250:112 | new HardcodedFilter(...) | -| LdapInjection.java:254:30:254:63 | sBadLdapQuery : String | LdapInjection.java:255:56:255:84 | ... + ... : String | -| LdapInjection.java:255:56:255:84 | ... + ... : String | LdapInjection.java:255:24:255:85 | filter(...) | -| LdapInjection.java:259:30:259:64 | sBadLdapQuery2 : String | LdapInjection.java:260:51:260:80 | ... + ... : String | -| LdapInjection.java:260:19:260:81 | filter(...) : LdapQuery | LdapInjection.java:261:24:261:24 | q | -| LdapInjection.java:260:51:260:80 | ... + ... : String | LdapInjection.java:260:19:260:81 | filter(...) : LdapQuery | -| LdapInjection.java:265:30:265:73 | sBadLdapQueryWithFilter : String | LdapInjection.java:266:76:266:114 | ... + ... : String | -| LdapInjection.java:266:56:266:115 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:266:24:266:116 | filter(...) | -| LdapInjection.java:266:76:266:114 | ... + ... : String | LdapInjection.java:266:56:266:115 | new HardcodedFilter(...) : HardcodedFilter | -| LdapInjection.java:270:30:270:74 | sBadLdapQueryWithFilter2 : String | LdapInjection.java:271:68:271:107 | ... + ... : String | -| LdapInjection.java:271:48:271:108 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:272:56:272:56 | f : HardcodedFilter | -| LdapInjection.java:271:68:271:107 | ... + ... : String | LdapInjection.java:271:48:271:108 | new HardcodedFilter(...) : HardcodedFilter | -| LdapInjection.java:272:56:272:56 | f : HardcodedFilter | LdapInjection.java:272:24:272:57 | filter(...) | -| LdapInjection.java:276:31:276:68 | sBadLdapQueryBase : String | LdapInjection.java:277:42:277:58 | sBadLdapQueryBase : String | -| LdapInjection.java:277:12:277:59 | base(...) : LdapQueryBuilder | LdapInjection.java:277:12:277:66 | base(...) | -| LdapInjection.java:277:42:277:58 | sBadLdapQueryBase : String | LdapInjection.java:277:12:277:59 | base(...) : LdapQueryBuilder | -| LdapInjection.java:281:31:281:71 | sBadLdapQueryComplex : String | LdapInjection.java:282:54:282:73 | sBadLdapQueryComplex : String | -| LdapInjection.java:282:24:282:74 | base(...) : LdapQueryBuilder | LdapInjection.java:282:24:282:87 | where(...) : ConditionCriteria | -| LdapInjection.java:282:24:282:87 | where(...) : ConditionCriteria | LdapInjection.java:282:24:282:98 | is(...) | -| LdapInjection.java:282:54:282:73 | sBadLdapQueryComplex : String | LdapInjection.java:282:24:282:74 | base(...) : LdapQueryBuilder | -| LdapInjection.java:286:31:286:69 | sBadFilterToString : String | LdapInjection.java:287:38:287:71 | ... + ... : String | -| LdapInjection.java:287:18:287:72 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:287:18:287:83 | toString(...) | -| LdapInjection.java:287:38:287:71 | ... + ... : String | LdapInjection.java:287:18:287:72 | new HardcodedFilter(...) : HardcodedFilter | -| LdapInjection.java:291:31:291:67 | sBadFilterEncode : String | LdapInjection.java:293:25:293:56 | ... + ... : String | -| LdapInjection.java:293:5:293:57 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:293:66:293:66 | s : StringBuffer | -| LdapInjection.java:293:25:293:56 | ... + ... : String | LdapInjection.java:293:5:293:57 | new HardcodedFilter(...) : HardcodedFilter | -| LdapInjection.java:293:66:293:66 | s : StringBuffer | LdapInjection.java:294:18:294:18 | s : StringBuffer | -| LdapInjection.java:294:18:294:18 | s : StringBuffer | LdapInjection.java:294:18:294:29 | toString(...) | -| LdapInjection.java:314:30:314:54 | aBad : String | LdapInjection.java:316:36:316:55 | ... + ... | -| LdapInjection.java:314:57:314:83 | aBadDN : String | LdapInjection.java:316:14:316:33 | ... + ... | -| LdapInjection.java:320:30:320:54 | aBad : String | LdapInjection.java:322:65:322:84 | ... + ... | -| LdapInjection.java:320:57:320:94 | aBadDNObjToString : String | LdapInjection.java:322:21:322:51 | ... + ... : String | -| LdapInjection.java:322:14:322:52 | new Dn(...) : Dn | LdapInjection.java:322:14:322:62 | getName(...) | -| LdapInjection.java:322:21:322:51 | ... + ... : String | LdapInjection.java:322:14:322:52 | new Dn(...) : Dn | -| LdapInjection.java:326:30:326:67 | aBadSearchRequest : String | LdapInjection.java:329:17:329:49 | ... + ... : String | -| LdapInjection.java:329:5:329:5 | s : SearchRequestImpl | LdapInjection.java:330:14:330:14 | s | -| LdapInjection.java:329:17:329:49 | ... + ... : String | LdapInjection.java:329:5:329:5 | s : SearchRequestImpl | -| LdapInjection.java:334:74:334:103 | aBadDNObj : String | LdapInjection.java:337:22:337:44 | ... + ... : String | -| LdapInjection.java:337:5:337:5 | s : SearchRequestImpl | LdapInjection.java:338:14:338:14 | s | -| LdapInjection.java:337:15:337:45 | new Dn(...) : Dn | LdapInjection.java:337:5:337:5 | s : SearchRequestImpl | -| LdapInjection.java:337:22:337:44 | ... + ... : String | LdapInjection.java:337:15:337:45 | new Dn(...) : Dn | -| LdapInjection.java:342:30:342:72 | aBadDNSearchRequestGet : String | LdapInjection.java:345:22:345:57 | ... + ... : String | -| LdapInjection.java:345:5:345:5 | s : SearchRequestImpl | LdapInjection.java:346:14:346:14 | s : SearchRequestImpl | -| LdapInjection.java:345:15:345:58 | new Dn(...) : Dn | LdapInjection.java:345:5:345:5 | s : SearchRequestImpl | -| LdapInjection.java:345:22:345:57 | ... + ... : String | LdapInjection.java:345:15:345:58 | new Dn(...) : Dn | -| LdapInjection.java:346:14:346:14 | s : SearchRequestImpl | LdapInjection.java:346:14:346:24 | getBase(...) | +| LdapInjection.java:45:28:45:52 | jBad : String | LdapInjection.java:47:38:47:57 | ... + ... | provenance | | +| LdapInjection.java:45:55:45:81 | jBadDN : String | LdapInjection.java:47:16:47:35 | ... + ... | provenance | | +| LdapInjection.java:51:28:51:52 | jBad : String | LdapInjection.java:53:56:53:75 | ... + ... | provenance | | +| LdapInjection.java:51:55:51:85 | jBadDNName : String | LdapInjection.java:53:29:53:52 | ... + ... : String | provenance | | +| LdapInjection.java:53:29:53:52 | ... + ... : String | LdapInjection.java:53:16:53:53 | new LdapName(...) | provenance | | +| LdapInjection.java:57:28:57:52 | jBad : String | LdapInjection.java:59:63:59:82 | ... + ... | provenance | | +| LdapInjection.java:63:28:63:59 | jBadInitial : String | LdapInjection.java:65:29:65:55 | ... + ... | provenance | | +| LdapInjection.java:69:28:69:52 | jBad : String | LdapInjection.java:71:84:71:103 | ... + ... | provenance | | +| LdapInjection.java:69:55:69:88 | jBadDNNameAdd : String | LdapInjection.java:71:53:71:79 | ... + ... : String | provenance | | +| LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | LdapInjection.java:71:16:71:81 | addAll(...) | provenance | | +| LdapInjection.java:71:53:71:79 | ... + ... : String | LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | provenance | | +| LdapInjection.java:75:28:75:52 | jBad : String | LdapInjection.java:79:47:79:66 | ... + ... | provenance | | +| LdapInjection.java:75:55:75:89 | jBadDNNameAdd2 : String | LdapInjection.java:78:30:78:57 | ... + ... : String | provenance | | +| LdapInjection.java:78:5:78:8 | name : LdapName | LdapInjection.java:79:40:79:43 | name : LdapName | provenance | | +| LdapInjection.java:78:17:78:58 | new LdapName(...) : LdapName | LdapInjection.java:78:17:78:68 | getRdns(...) : List | provenance | | +| LdapInjection.java:78:17:78:68 | getRdns(...) : List | LdapInjection.java:78:5:78:8 | name : LdapName | provenance | | +| LdapInjection.java:78:30:78:57 | ... + ... : String | LdapInjection.java:78:17:78:58 | new LdapName(...) : LdapName | provenance | | +| LdapInjection.java:79:40:79:43 | name : LdapName | LdapInjection.java:79:16:79:44 | addAll(...) | provenance | | +| LdapInjection.java:83:28:83:52 | jBad : String | LdapInjection.java:85:75:85:94 | ... + ... | provenance | | +| LdapInjection.java:83:55:83:93 | jBadDNNameToString : String | LdapInjection.java:85:29:85:60 | ... + ... : String | provenance | | +| LdapInjection.java:85:16:85:61 | new LdapName(...) : LdapName | LdapInjection.java:85:16:85:72 | toString(...) | provenance | | +| LdapInjection.java:85:29:85:60 | ... + ... : String | LdapInjection.java:85:16:85:61 | new LdapName(...) : LdapName | provenance | | +| LdapInjection.java:89:28:89:52 | jBad : String | LdapInjection.java:91:76:91:95 | ... + ... | provenance | | +| LdapInjection.java:89:55:89:90 | jBadDNNameClone : String | LdapInjection.java:91:36:91:64 | ... + ... : String | provenance | | +| LdapInjection.java:91:23:91:65 | new LdapName(...) : LdapName | LdapInjection.java:91:23:91:73 | clone(...) : Object | provenance | | +| LdapInjection.java:91:23:91:73 | clone(...) : Object | LdapInjection.java:91:16:91:73 | (...)... | provenance | | +| LdapInjection.java:91:36:91:64 | ... + ... : String | LdapInjection.java:91:23:91:65 | new LdapName(...) : LdapName | provenance | | +| LdapInjection.java:106:31:106:55 | uBad : String | LdapInjection.java:108:67:108:86 | ... + ... | provenance | | +| LdapInjection.java:106:58:106:84 | uBadDN : String | LdapInjection.java:108:20:108:39 | ... + ... | provenance | | +| LdapInjection.java:112:31:112:67 | uBadFilterCreate : String | LdapInjection.java:113:72:113:87 | uBadFilterCreate : String | provenance | | +| LdapInjection.java:113:72:113:87 | uBadFilterCreate : String | LdapInjection.java:113:58:113:88 | create(...) | provenance | | +| LdapInjection.java:117:31:117:70 | uBadROSearchRequest : String | LdapInjection.java:120:9:120:43 | ... + ... : String | provenance | | +| LdapInjection.java:117:73:117:103 | uBadROSRDN : String | LdapInjection.java:119:55:119:78 | ... + ... : String | provenance | | +| LdapInjection.java:119:31:120:44 | new SearchRequest(...) : SearchRequest | LdapInjection.java:121:14:121:14 | s | provenance | | +| LdapInjection.java:119:55:119:78 | ... + ... : String | LdapInjection.java:119:31:120:44 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:120:9:120:43 | ... + ... : String | LdapInjection.java:119:31:120:44 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:125:31:125:68 | uBadSearchRequest : String | LdapInjection.java:128:9:128:41 | ... + ... : String | provenance | | +| LdapInjection.java:125:71:125:99 | uBadSRDN : String | LdapInjection.java:127:47:127:68 | ... + ... : String | provenance | | +| LdapInjection.java:127:23:128:42 | new SearchRequest(...) : SearchRequest | LdapInjection.java:129:14:129:14 | s | provenance | | +| LdapInjection.java:127:47:127:68 | ... + ... : String | LdapInjection.java:127:23:128:42 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:128:9:128:41 | ... + ... : String | LdapInjection.java:127:23:128:42 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:133:31:133:55 | uBad : String | LdapInjection.java:135:69:135:88 | ... + ... | provenance | | +| LdapInjection.java:133:58:133:87 | uBadDNSFR : String | LdapInjection.java:135:22:135:44 | ... + ... | provenance | | +| LdapInjection.java:139:31:139:75 | uBadROSearchRequestAsync : String | LdapInjection.java:142:9:142:48 | ... + ... : String | provenance | | +| LdapInjection.java:139:78:139:113 | uBadROSRDNAsync : String | LdapInjection.java:141:55:141:83 | ... + ... : String | provenance | | +| LdapInjection.java:141:31:142:49 | new SearchRequest(...) : SearchRequest | LdapInjection.java:143:19:143:19 | s | provenance | | +| LdapInjection.java:141:55:141:83 | ... + ... : String | LdapInjection.java:141:31:142:49 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:142:9:142:48 | ... + ... : String | LdapInjection.java:141:31:142:49 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:147:31:147:73 | uBadSearchRequestAsync : String | LdapInjection.java:150:9:150:46 | ... + ... : String | provenance | | +| LdapInjection.java:147:76:147:109 | uBadSRDNAsync : String | LdapInjection.java:149:47:149:73 | ... + ... : String | provenance | | +| LdapInjection.java:149:23:150:47 | new SearchRequest(...) : SearchRequest | LdapInjection.java:151:19:151:19 | s | provenance | | +| LdapInjection.java:149:47:149:73 | ... + ... : String | LdapInjection.java:149:23:150:47 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:150:9:150:46 | ... + ... : String | LdapInjection.java:149:23:150:47 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:155:31:155:70 | uBadFilterCreateNOT : String | LdapInjection.java:156:95:156:113 | uBadFilterCreateNOT : String | provenance | | +| LdapInjection.java:156:81:156:114 | create(...) : Filter | LdapInjection.java:156:58:156:115 | createNOTFilter(...) | provenance | | +| LdapInjection.java:156:95:156:113 | uBadFilterCreateNOT : String | LdapInjection.java:156:81:156:114 | create(...) : Filter | provenance | | +| LdapInjection.java:160:31:160:75 | uBadFilterCreateToString : String | LdapInjection.java:161:72:161:95 | uBadFilterCreateToString : String | provenance | | +| LdapInjection.java:161:58:161:96 | create(...) : Filter | LdapInjection.java:161:58:161:107 | toString(...) | provenance | | +| LdapInjection.java:161:72:161:95 | uBadFilterCreateToString : String | LdapInjection.java:161:58:161:96 | create(...) : Filter | provenance | | +| LdapInjection.java:165:32:165:82 | uBadFilterCreateToStringBuffer : String | LdapInjection.java:167:19:167:48 | uBadFilterCreateToStringBuffer : String | provenance | | +| LdapInjection.java:167:5:167:49 | create(...) : Filter | LdapInjection.java:167:70:167:70 | b : StringBuilder | provenance | | +| LdapInjection.java:167:19:167:48 | uBadFilterCreateToStringBuffer : String | LdapInjection.java:167:5:167:49 | create(...) : Filter | provenance | | +| LdapInjection.java:167:70:167:70 | b : StringBuilder | LdapInjection.java:168:58:168:58 | b : StringBuilder | provenance | | +| LdapInjection.java:168:58:168:58 | b : StringBuilder | LdapInjection.java:168:58:168:69 | toString(...) | provenance | | +| LdapInjection.java:172:32:172:78 | uBadSearchRequestDuplicate : String | LdapInjection.java:175:9:175:50 | ... + ... : String | provenance | | +| LdapInjection.java:174:23:175:51 | new SearchRequest(...) : SearchRequest | LdapInjection.java:176:14:176:14 | s : SearchRequest | provenance | | +| LdapInjection.java:175:9:175:50 | ... + ... : String | LdapInjection.java:174:23:175:51 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:176:14:176:14 | s : SearchRequest | LdapInjection.java:176:14:176:26 | duplicate(...) | provenance | | +| LdapInjection.java:180:32:180:80 | uBadROSearchRequestDuplicate : String | LdapInjection.java:183:9:183:52 | ... + ... : String | provenance | | +| LdapInjection.java:182:31:183:53 | new SearchRequest(...) : SearchRequest | LdapInjection.java:184:14:184:14 | s : SearchRequest | provenance | | +| LdapInjection.java:183:9:183:52 | ... + ... : String | LdapInjection.java:182:31:183:53 | new SearchRequest(...) : SearchRequest | provenance | | +| LdapInjection.java:184:14:184:14 | s : SearchRequest | LdapInjection.java:184:14:184:26 | duplicate(...) | provenance | | +| LdapInjection.java:188:32:188:74 | uBadSearchRequestSetDN : String | LdapInjection.java:191:17:191:38 | uBadSearchRequestSetDN : String | provenance | | +| LdapInjection.java:191:5:191:5 | s : SearchRequest | LdapInjection.java:192:14:192:14 | s | provenance | | +| LdapInjection.java:191:17:191:38 | uBadSearchRequestSetDN : String | LdapInjection.java:191:5:191:5 | s : SearchRequest | provenance | | +| LdapInjection.java:196:32:196:78 | uBadSearchRequestSetFilter : String | LdapInjection.java:199:17:199:42 | uBadSearchRequestSetFilter : String | provenance | | +| LdapInjection.java:199:5:199:5 | s : SearchRequest | LdapInjection.java:200:14:200:14 | s | provenance | | +| LdapInjection.java:199:17:199:42 | uBadSearchRequestSetFilter : String | LdapInjection.java:199:5:199:5 | s : SearchRequest | provenance | | +| LdapInjection.java:229:30:229:54 | sBad : String | LdapInjection.java:230:36:230:55 | ... + ... | provenance | | +| LdapInjection.java:229:57:229:83 | sBadDN : String | LdapInjection.java:230:14:230:33 | ... + ... | provenance | | +| LdapInjection.java:234:30:234:54 | sBad : String | LdapInjection.java:235:88:235:107 | ... + ... | provenance | | +| LdapInjection.java:234:57:234:92 | sBadDNLNBuilder : String | LdapInjection.java:235:48:235:76 | ... + ... : String | provenance | | +| LdapInjection.java:235:20:235:77 | newInstance(...) : LdapNameBuilder | LdapInjection.java:235:20:235:85 | build(...) | provenance | | +| LdapInjection.java:235:48:235:76 | ... + ... : String | LdapInjection.java:235:20:235:77 | newInstance(...) : LdapNameBuilder | provenance | | +| LdapInjection.java:239:30:239:54 | sBad : String | LdapInjection.java:240:100:240:119 | ... + ... | provenance | | +| LdapInjection.java:239:57:239:95 | sBadDNLNBuilderAdd : String | LdapInjection.java:240:57:240:88 | ... + ... : String | provenance | | +| LdapInjection.java:240:23:240:89 | add(...) : LdapNameBuilder | LdapInjection.java:240:23:240:97 | build(...) | provenance | | +| LdapInjection.java:240:57:240:88 | ... + ... : String | LdapInjection.java:240:23:240:89 | add(...) : LdapNameBuilder | provenance | | +| LdapInjection.java:244:30:244:63 | sBadLdapQuery : String | LdapInjection.java:245:47:245:75 | ... + ... : String | provenance | | +| LdapInjection.java:245:47:245:75 | ... + ... : String | LdapInjection.java:245:15:245:76 | filter(...) | provenance | | +| LdapInjection.java:249:30:249:60 | sBadFilter : String | LdapInjection.java:250:86:250:111 | ... + ... : String | provenance | | +| LdapInjection.java:249:63:249:98 | sBadDNLdapUtils : String | LdapInjection.java:250:34:250:62 | ... + ... : String | provenance | | +| LdapInjection.java:250:34:250:62 | ... + ... : String | LdapInjection.java:250:12:250:63 | newLdapName(...) | provenance | | +| LdapInjection.java:250:86:250:111 | ... + ... : String | LdapInjection.java:250:66:250:112 | new HardcodedFilter(...) | provenance | | +| LdapInjection.java:254:30:254:63 | sBadLdapQuery : String | LdapInjection.java:255:56:255:84 | ... + ... : String | provenance | | +| LdapInjection.java:255:56:255:84 | ... + ... : String | LdapInjection.java:255:24:255:85 | filter(...) | provenance | | +| LdapInjection.java:259:30:259:64 | sBadLdapQuery2 : String | LdapInjection.java:260:51:260:80 | ... + ... : String | provenance | | +| LdapInjection.java:260:19:260:81 | filter(...) : LdapQuery | LdapInjection.java:261:24:261:24 | q | provenance | | +| LdapInjection.java:260:51:260:80 | ... + ... : String | LdapInjection.java:260:19:260:81 | filter(...) : LdapQuery | provenance | | +| LdapInjection.java:265:30:265:73 | sBadLdapQueryWithFilter : String | LdapInjection.java:266:76:266:114 | ... + ... : String | provenance | | +| LdapInjection.java:266:56:266:115 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:266:24:266:116 | filter(...) | provenance | | +| LdapInjection.java:266:76:266:114 | ... + ... : String | LdapInjection.java:266:56:266:115 | new HardcodedFilter(...) : HardcodedFilter | provenance | | +| LdapInjection.java:270:30:270:74 | sBadLdapQueryWithFilter2 : String | LdapInjection.java:271:68:271:107 | ... + ... : String | provenance | | +| LdapInjection.java:271:48:271:108 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:272:56:272:56 | f : HardcodedFilter | provenance | | +| LdapInjection.java:271:68:271:107 | ... + ... : String | LdapInjection.java:271:48:271:108 | new HardcodedFilter(...) : HardcodedFilter | provenance | | +| LdapInjection.java:272:56:272:56 | f : HardcodedFilter | LdapInjection.java:272:24:272:57 | filter(...) | provenance | | +| LdapInjection.java:276:31:276:68 | sBadLdapQueryBase : String | LdapInjection.java:277:42:277:58 | sBadLdapQueryBase : String | provenance | | +| LdapInjection.java:277:12:277:59 | base(...) : LdapQueryBuilder | LdapInjection.java:277:12:277:66 | base(...) | provenance | | +| LdapInjection.java:277:42:277:58 | sBadLdapQueryBase : String | LdapInjection.java:277:12:277:59 | base(...) : LdapQueryBuilder | provenance | | +| LdapInjection.java:281:31:281:71 | sBadLdapQueryComplex : String | LdapInjection.java:282:54:282:73 | sBadLdapQueryComplex : String | provenance | | +| LdapInjection.java:282:24:282:74 | base(...) : LdapQueryBuilder | LdapInjection.java:282:24:282:87 | where(...) : ConditionCriteria | provenance | | +| LdapInjection.java:282:24:282:87 | where(...) : ConditionCriteria | LdapInjection.java:282:24:282:98 | is(...) | provenance | | +| LdapInjection.java:282:54:282:73 | sBadLdapQueryComplex : String | LdapInjection.java:282:24:282:74 | base(...) : LdapQueryBuilder | provenance | | +| LdapInjection.java:286:31:286:69 | sBadFilterToString : String | LdapInjection.java:287:38:287:71 | ... + ... : String | provenance | | +| LdapInjection.java:287:18:287:72 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:287:18:287:83 | toString(...) | provenance | | +| LdapInjection.java:287:38:287:71 | ... + ... : String | LdapInjection.java:287:18:287:72 | new HardcodedFilter(...) : HardcodedFilter | provenance | | +| LdapInjection.java:291:31:291:67 | sBadFilterEncode : String | LdapInjection.java:293:25:293:56 | ... + ... : String | provenance | | +| LdapInjection.java:293:5:293:57 | new HardcodedFilter(...) : HardcodedFilter | LdapInjection.java:293:66:293:66 | s : StringBuffer | provenance | | +| LdapInjection.java:293:25:293:56 | ... + ... : String | LdapInjection.java:293:5:293:57 | new HardcodedFilter(...) : HardcodedFilter | provenance | | +| LdapInjection.java:293:66:293:66 | s : StringBuffer | LdapInjection.java:294:18:294:18 | s : StringBuffer | provenance | | +| LdapInjection.java:294:18:294:18 | s : StringBuffer | LdapInjection.java:294:18:294:29 | toString(...) | provenance | | +| LdapInjection.java:314:30:314:54 | aBad : String | LdapInjection.java:316:36:316:55 | ... + ... | provenance | | +| LdapInjection.java:314:57:314:83 | aBadDN : String | LdapInjection.java:316:14:316:33 | ... + ... | provenance | | +| LdapInjection.java:320:30:320:54 | aBad : String | LdapInjection.java:322:65:322:84 | ... + ... | provenance | | +| LdapInjection.java:320:57:320:94 | aBadDNObjToString : String | LdapInjection.java:322:21:322:51 | ... + ... : String | provenance | | +| LdapInjection.java:322:14:322:52 | new Dn(...) : Dn | LdapInjection.java:322:14:322:62 | getName(...) | provenance | | +| LdapInjection.java:322:21:322:51 | ... + ... : String | LdapInjection.java:322:14:322:52 | new Dn(...) : Dn | provenance | | +| LdapInjection.java:326:30:326:67 | aBadSearchRequest : String | LdapInjection.java:329:17:329:49 | ... + ... : String | provenance | | +| LdapInjection.java:329:5:329:5 | s : SearchRequestImpl | LdapInjection.java:330:14:330:14 | s | provenance | | +| LdapInjection.java:329:17:329:49 | ... + ... : String | LdapInjection.java:329:5:329:5 | s : SearchRequestImpl | provenance | | +| LdapInjection.java:334:74:334:103 | aBadDNObj : String | LdapInjection.java:337:22:337:44 | ... + ... : String | provenance | | +| LdapInjection.java:337:5:337:5 | s : SearchRequestImpl | LdapInjection.java:338:14:338:14 | s | provenance | | +| LdapInjection.java:337:15:337:45 | new Dn(...) : Dn | LdapInjection.java:337:5:337:5 | s : SearchRequestImpl | provenance | | +| LdapInjection.java:337:22:337:44 | ... + ... : String | LdapInjection.java:337:15:337:45 | new Dn(...) : Dn | provenance | | +| LdapInjection.java:342:30:342:72 | aBadDNSearchRequestGet : String | LdapInjection.java:345:22:345:57 | ... + ... : String | provenance | | +| LdapInjection.java:345:5:345:5 | s : SearchRequestImpl | LdapInjection.java:346:14:346:14 | s : SearchRequestImpl | provenance | | +| LdapInjection.java:345:15:345:58 | new Dn(...) : Dn | LdapInjection.java:345:5:345:5 | s : SearchRequestImpl | provenance | | +| LdapInjection.java:345:22:345:57 | ... + ... : String | LdapInjection.java:345:15:345:58 | new Dn(...) : Dn | provenance | | +| LdapInjection.java:346:14:346:14 | s : SearchRequestImpl | LdapInjection.java:346:14:346:24 | getBase(...) | provenance | | nodes | LdapInjection.java:45:28:45:52 | jBad : String | semmle.label | jBad : String | | LdapInjection.java:45:55:45:81 | jBadDN : String | semmle.label | jBadDN : String | diff --git a/java/ql/test/query-tests/security/CWE-094/InsecureBeanValidation.expected b/java/ql/test/query-tests/security/CWE-094/InsecureBeanValidation.expected index 5388b0df98c3..adff0e4ca422 100644 --- a/java/ql/test/query-tests/security/CWE-094/InsecureBeanValidation.expected +++ b/java/ql/test/query-tests/security/CWE-094/InsecureBeanValidation.expected @@ -1,5 +1,5 @@ edges -| InsecureBeanValidation.java:7:28:7:40 | object : String | InsecureBeanValidation.java:11:64:11:68 | value | +| InsecureBeanValidation.java:7:28:7:40 | object : String | InsecureBeanValidation.java:11:64:11:68 | value | provenance | | nodes | InsecureBeanValidation.java:7:28:7:40 | object : String | semmle.label | object : String | | InsecureBeanValidation.java:11:64:11:68 | value | semmle.label | value | diff --git a/java/ql/test/query-tests/security/CWE-113/semmle/tests/ResponseSplitting.expected b/java/ql/test/query-tests/security/CWE-113/semmle/tests/ResponseSplitting.expected index 34a84f252e10..7ec4c978a03d 100644 --- a/java/ql/test/query-tests/security/CWE-113/semmle/tests/ResponseSplitting.expected +++ b/java/ql/test/query-tests/security/CWE-113/semmle/tests/ResponseSplitting.expected @@ -1,8 +1,8 @@ edges -| ResponseSplitting.java:22:20:22:67 | new Cookie(...) : Cookie | ResponseSplitting.java:23:23:23:28 | cookie | -| ResponseSplitting.java:22:39:22:66 | getParameter(...) : String | ResponseSplitting.java:22:20:22:67 | new Cookie(...) : Cookie | -| ResponseSplitting.java:53:14:53:48 | getParameter(...) : String | ResponseSplitting.java:59:27:59:27 | t : String | -| ResponseSplitting.java:59:27:59:27 | t : String | ResponseSplitting.java:59:27:59:57 | replaceFirst(...) | +| ResponseSplitting.java:22:20:22:67 | new Cookie(...) : Cookie | ResponseSplitting.java:23:23:23:28 | cookie | provenance | | +| ResponseSplitting.java:22:39:22:66 | getParameter(...) : String | ResponseSplitting.java:22:20:22:67 | new Cookie(...) : Cookie | provenance | | +| ResponseSplitting.java:53:14:53:48 | getParameter(...) : String | ResponseSplitting.java:59:27:59:27 | t : String | provenance | | +| ResponseSplitting.java:59:27:59:27 | t : String | ResponseSplitting.java:59:27:59:57 | replaceFirst(...) | provenance | | nodes | ResponseSplitting.java:22:20:22:67 | new Cookie(...) : Cookie | semmle.label | new Cookie(...) : Cookie | | ResponseSplitting.java:22:39:22:66 | getParameter(...) : String | semmle.label | getParameter(...) : String | diff --git a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionCodeSpecified.expected b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionCodeSpecified.expected index cd4530b30026..62f9df885f85 100644 --- a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionCodeSpecified.expected +++ b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionCodeSpecified.expected @@ -1,5 +1,5 @@ edges -| Test.java:105:16:105:16 | 0 : Number | Test.java:107:27:107:30 | size | +| Test.java:105:16:105:16 | 0 : Number | Test.java:107:27:107:30 | size | provenance | | nodes | Test.java:105:16:105:16 | 0 : Number | semmle.label | 0 : Number | | Test.java:107:27:107:30 | size | semmle.label | size | diff --git a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionLocal.expected b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionLocal.expected index abfb68f74a5e..2ae58aa9d563 100644 --- a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionLocal.expected +++ b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayConstructionLocal.expected @@ -1,8 +1,8 @@ edges -| Test.java:76:27:76:60 | getProperty(...) : String | Test.java:78:37:78:48 | userProperty : String | -| Test.java:78:37:78:48 | userProperty : String | Test.java:78:37:78:55 | trim(...) : String | -| Test.java:78:37:78:55 | trim(...) : String | Test.java:80:31:80:34 | size | -| Test.java:78:37:78:55 | trim(...) : String | Test.java:86:34:86:37 | size | +| Test.java:76:27:76:60 | getProperty(...) : String | Test.java:78:37:78:48 | userProperty : String | provenance | | +| Test.java:78:37:78:48 | userProperty : String | Test.java:78:37:78:55 | trim(...) : String | provenance | | +| Test.java:78:37:78:55 | trim(...) : String | Test.java:80:31:80:34 | size | provenance | | +| Test.java:78:37:78:55 | trim(...) : String | Test.java:86:34:86:37 | size | provenance | | nodes | Test.java:76:27:76:60 | getProperty(...) : String | semmle.label | getProperty(...) : String | | Test.java:78:37:78:48 | userProperty : String | semmle.label | userProperty : String | diff --git a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexCodeSpecified.expected b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexCodeSpecified.expected index 16de93aaec8c..b745c26ec0a4 100644 --- a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexCodeSpecified.expected +++ b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexCodeSpecified.expected @@ -1,12 +1,12 @@ edges -| ../../../../../stubs/apache-commons-lang3-3.7/org/apache/commons/lang3/RandomUtils.java:34:14:34:14 | 0 : Number | Test.java:59:17:59:42 | nextInt(...) : Number | -| Test.java:41:17:41:48 | nextInt(...) : Number | Test.java:44:30:44:34 | index | -| Test.java:41:17:41:48 | nextInt(...) : Number | Test.java:48:32:48:36 | index | -| Test.java:41:17:41:48 | nextInt(...) : Number | Test.java:52:39:52:43 | index | -| Test.java:59:17:59:42 | nextInt(...) : Number | Test.java:62:30:62:34 | index | -| Test.java:59:17:59:42 | nextInt(...) : Number | Test.java:66:32:66:36 | index | -| Test.java:59:17:59:42 | nextInt(...) : Number | Test.java:70:39:70:43 | index | -| Test.java:112:17:112:17 | 0 : Number | Test.java:115:32:115:36 | index | +| ../../../../../stubs/apache-commons-lang3-3.7/org/apache/commons/lang3/RandomUtils.java:34:14:34:14 | 0 : Number | Test.java:59:17:59:42 | nextInt(...) : Number | provenance | | +| Test.java:41:17:41:48 | nextInt(...) : Number | Test.java:44:30:44:34 | index | provenance | | +| Test.java:41:17:41:48 | nextInt(...) : Number | Test.java:48:32:48:36 | index | provenance | | +| Test.java:41:17:41:48 | nextInt(...) : Number | Test.java:52:39:52:43 | index | provenance | | +| Test.java:59:17:59:42 | nextInt(...) : Number | Test.java:62:30:62:34 | index | provenance | | +| Test.java:59:17:59:42 | nextInt(...) : Number | Test.java:66:32:66:36 | index | provenance | | +| Test.java:59:17:59:42 | nextInt(...) : Number | Test.java:70:39:70:43 | index | provenance | | +| Test.java:112:17:112:17 | 0 : Number | Test.java:115:32:115:36 | index | provenance | | nodes | ../../../../../stubs/apache-commons-lang3-3.7/org/apache/commons/lang3/RandomUtils.java:34:14:34:14 | 0 : Number | semmle.label | 0 : Number | | Test.java:41:17:41:48 | nextInt(...) : Number | semmle.label | nextInt(...) : Number | diff --git a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexLocal.expected b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexLocal.expected index 6e0738c8576c..40248b6c645b 100644 --- a/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexLocal.expected +++ b/java/ql/test/query-tests/security/CWE-129/semmle/tests/ImproperValidationOfArrayIndexLocal.expected @@ -1,7 +1,7 @@ edges -| Test.java:14:27:14:60 | getProperty(...) : String | Test.java:16:38:16:49 | userProperty : String | -| Test.java:16:38:16:49 | userProperty : String | Test.java:16:38:16:56 | trim(...) : String | -| Test.java:16:38:16:56 | trim(...) : String | Test.java:19:34:19:38 | index | +| Test.java:14:27:14:60 | getProperty(...) : String | Test.java:16:38:16:49 | userProperty : String | provenance | | +| Test.java:16:38:16:49 | userProperty : String | Test.java:16:38:16:56 | trim(...) : String | provenance | | +| Test.java:16:38:16:56 | trim(...) : String | Test.java:19:34:19:38 | index | provenance | | nodes | Test.java:14:27:14:60 | getProperty(...) : String | semmle.label | getProperty(...) : String | | Test.java:16:38:16:49 | userProperty : String | semmle.label | userProperty : String | diff --git a/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatString.expected b/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatString.expected index 5be160201753..d5b66f9d4b28 100644 --- a/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatString.expected +++ b/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatString.expected @@ -1,7 +1,7 @@ edges -| Test.java:33:30:33:74 | getParameter(...) : String | Test.java:34:20:34:32 | userParameter : String | -| Test.java:34:20:34:32 | userParameter : String | Test.java:37:31:37:43 | format : String | -| Test.java:37:31:37:43 | format : String | Test.java:39:25:39:30 | format | +| Test.java:33:30:33:74 | getParameter(...) : String | Test.java:34:20:34:32 | userParameter : String | provenance | | +| Test.java:34:20:34:32 | userParameter : String | Test.java:37:31:37:43 | format : String | provenance | | +| Test.java:37:31:37:43 | format : String | Test.java:39:25:39:30 | format | provenance | | nodes | Test.java:33:30:33:74 | getParameter(...) : String | semmle.label | getParameter(...) : String | | Test.java:34:20:34:32 | userParameter : String | semmle.label | userParameter : String | diff --git a/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatStringLocal.expected b/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatStringLocal.expected index 99e197a2e735..3f6e0a3ff234 100644 --- a/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatStringLocal.expected +++ b/java/ql/test/query-tests/security/CWE-134/semmle/tests/ExternallyControlledFormatStringLocal.expected @@ -1,9 +1,9 @@ edges -| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:19:19:19:30 | userProperty | -| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:21:23:21:34 | userProperty | -| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:23:23:23:34 | userProperty | -| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:25:28:25:39 | userProperty | -| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:27:44:27:55 | userProperty | +| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:19:19:19:30 | userProperty | provenance | | +| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:21:23:21:34 | userProperty | provenance | | +| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:23:23:23:34 | userProperty | provenance | | +| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:25:28:25:39 | userProperty | provenance | | +| Test.java:17:27:17:60 | getProperty(...) : String | Test.java:27:44:27:55 | userProperty | provenance | | nodes | Test.java:17:27:17:60 | getProperty(...) : String | semmle.label | getProperty(...) : String | | Test.java:19:19:19:30 | userProperty | semmle.label | userProperty | diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTaintedLocal.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTaintedLocal.expected index 1864576369c2..d051c41d4d05 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTaintedLocal.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticTaintedLocal.expected @@ -1,45 +1,45 @@ edges -| ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | -| ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | -| ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | -| ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | -| ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | -| ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | -| ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | -| ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | -| ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | -| ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | -| ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | ArithmeticTainted.java:21:29:21:40 | stringNumber : String | -| ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | ArithmeticTainted.java:21:29:21:40 | stringNumber : String | -| ArithmeticTainted.java:21:29:21:40 | stringNumber : String | ArithmeticTainted.java:21:29:21:47 | trim(...) : String | -| ArithmeticTainted.java:21:29:21:40 | stringNumber : String | ArithmeticTainted.java:21:29:21:47 | trim(...) : String | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:32:17:32:20 | data | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:40:17:40:20 | data | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:50:17:50:20 | data | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:64:20:64:23 | data : Number | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:95:37:95:40 | data | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:118:9:118:12 | data : Number | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:119:10:119:13 | data : Number | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:120:10:120:13 | data : Number | -| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:121:10:121:13 | data : Number | -| ArithmeticTainted.java:64:4:64:10 | tainted [post update] : Holder [dat] : Number | ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | -| ArithmeticTainted.java:64:20:64:23 | data : Number | ArithmeticTainted.java:64:4:64:10 | tainted [post update] : Holder [dat] : Number | -| ArithmeticTainted.java:64:20:64:23 | data : Number | Holder.java:12:22:12:26 | d : Number | -| ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | ArithmeticTainted.java:66:18:66:34 | getData(...) : Number | -| ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | Holder.java:16:13:16:19 | parameter this : Holder [dat] : Number | -| ArithmeticTainted.java:66:18:66:34 | getData(...) : Number | ArithmeticTainted.java:71:17:71:23 | herring | -| ArithmeticTainted.java:118:9:118:12 | data : Number | ArithmeticTainted.java:125:26:125:33 | data : Number | -| ArithmeticTainted.java:119:10:119:13 | data : Number | ArithmeticTainted.java:129:27:129:34 | data : Number | -| ArithmeticTainted.java:120:10:120:13 | data : Number | ArithmeticTainted.java:133:27:133:34 | data : Number | -| ArithmeticTainted.java:121:10:121:13 | data : Number | ArithmeticTainted.java:137:27:137:34 | data : Number | -| ArithmeticTainted.java:125:26:125:33 | data : Number | ArithmeticTainted.java:127:3:127:6 | data | -| ArithmeticTainted.java:129:27:129:34 | data : Number | ArithmeticTainted.java:131:5:131:8 | data | -| ArithmeticTainted.java:133:27:133:34 | data : Number | ArithmeticTainted.java:135:3:135:6 | data | -| ArithmeticTainted.java:137:27:137:34 | data : Number | ArithmeticTainted.java:139:5:139:8 | data | -| Holder.java:12:22:12:26 | d : Number | Holder.java:13:9:13:9 | d : Number | -| Holder.java:13:9:13:9 | d : Number | Holder.java:13:3:13:5 | this <.field> [post update] : Holder [dat] : Number | -| Holder.java:16:13:16:19 | parameter this : Holder [dat] : Number | Holder.java:17:10:17:12 | this <.field> : Holder [dat] : Number | -| Holder.java:17:10:17:12 | this <.field> : Holder [dat] : Number | Holder.java:17:10:17:12 | dat : Number | +| ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | provenance | | +| ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | provenance | | +| ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | provenance | | +| ArithmeticTainted.java:17:46:17:54 | System.in : InputStream | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | provenance | | +| ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | provenance | | +| ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | provenance | | +| ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | provenance | | +| ArithmeticTainted.java:18:40:18:56 | readerInputStream : InputStreamReader | ArithmeticTainted.java:18:21:18:57 | new BufferedReader(...) : BufferedReader | provenance | | +| ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | provenance | | +| ArithmeticTainted.java:19:26:19:39 | readerBuffered : BufferedReader | ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | provenance | | +| ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | ArithmeticTainted.java:21:29:21:40 | stringNumber : String | provenance | | +| ArithmeticTainted.java:19:26:19:50 | readLine(...) : String | ArithmeticTainted.java:21:29:21:40 | stringNumber : String | provenance | | +| ArithmeticTainted.java:21:29:21:40 | stringNumber : String | ArithmeticTainted.java:21:29:21:47 | trim(...) : String | provenance | | +| ArithmeticTainted.java:21:29:21:40 | stringNumber : String | ArithmeticTainted.java:21:29:21:47 | trim(...) : String | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:32:17:32:20 | data | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:40:17:40:20 | data | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:50:17:50:20 | data | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:64:20:64:23 | data : Number | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:95:37:95:40 | data | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:118:9:118:12 | data : Number | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:119:10:119:13 | data : Number | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:120:10:120:13 | data : Number | provenance | | +| ArithmeticTainted.java:21:29:21:47 | trim(...) : String | ArithmeticTainted.java:121:10:121:13 | data : Number | provenance | | +| ArithmeticTainted.java:64:4:64:10 | tainted [post update] : Holder [dat] : Number | ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | provenance | | +| ArithmeticTainted.java:64:20:64:23 | data : Number | ArithmeticTainted.java:64:4:64:10 | tainted [post update] : Holder [dat] : Number | provenance | | +| ArithmeticTainted.java:64:20:64:23 | data : Number | Holder.java:12:22:12:26 | d : Number | provenance | | +| ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | ArithmeticTainted.java:66:18:66:34 | getData(...) : Number | provenance | | +| ArithmeticTainted.java:66:18:66:24 | tainted : Holder [dat] : Number | Holder.java:16:13:16:19 | parameter this : Holder [dat] : Number | provenance | | +| ArithmeticTainted.java:66:18:66:34 | getData(...) : Number | ArithmeticTainted.java:71:17:71:23 | herring | provenance | | +| ArithmeticTainted.java:118:9:118:12 | data : Number | ArithmeticTainted.java:125:26:125:33 | data : Number | provenance | | +| ArithmeticTainted.java:119:10:119:13 | data : Number | ArithmeticTainted.java:129:27:129:34 | data : Number | provenance | | +| ArithmeticTainted.java:120:10:120:13 | data : Number | ArithmeticTainted.java:133:27:133:34 | data : Number | provenance | | +| ArithmeticTainted.java:121:10:121:13 | data : Number | ArithmeticTainted.java:137:27:137:34 | data : Number | provenance | | +| ArithmeticTainted.java:125:26:125:33 | data : Number | ArithmeticTainted.java:127:3:127:6 | data | provenance | | +| ArithmeticTainted.java:129:27:129:34 | data : Number | ArithmeticTainted.java:131:5:131:8 | data | provenance | | +| ArithmeticTainted.java:133:27:133:34 | data : Number | ArithmeticTainted.java:135:3:135:6 | data | provenance | | +| ArithmeticTainted.java:137:27:137:34 | data : Number | ArithmeticTainted.java:139:5:139:8 | data | provenance | | +| Holder.java:12:22:12:26 | d : Number | Holder.java:13:9:13:9 | d : Number | provenance | | +| Holder.java:13:9:13:9 | d : Number | Holder.java:13:3:13:5 | this <.field> [post update] : Holder [dat] : Number | provenance | | +| Holder.java:16:13:16:19 | parameter this : Holder [dat] : Number | Holder.java:17:10:17:12 | this <.field> : Holder [dat] : Number | provenance | | +| Holder.java:17:10:17:12 | this <.field> : Holder [dat] : Number | Holder.java:17:10:17:12 | dat : Number | provenance | | nodes | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | | ArithmeticTainted.java:17:24:17:64 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticUncontrolled.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticUncontrolled.expected index 43256841646d..5a305a82c889 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticUncontrolled.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticUncontrolled.expected @@ -1,8 +1,8 @@ edges -| Test.java:206:14:206:57 | nextInt(...) : Number | Test.java:210:17:210:20 | data | -| Test.java:206:14:206:57 | nextInt(...) : Number | Test.java:241:37:241:40 | data | -| Test.java:245:15:245:35 | nextInt(...) : Number | Test.java:249:17:249:21 | data2 | -| Test.java:245:15:245:35 | nextInt(...) : Number | Test.java:280:37:280:41 | data2 | +| Test.java:206:14:206:57 | nextInt(...) : Number | Test.java:210:17:210:20 | data | provenance | | +| Test.java:206:14:206:57 | nextInt(...) : Number | Test.java:241:37:241:40 | data | provenance | | +| Test.java:245:15:245:35 | nextInt(...) : Number | Test.java:249:17:249:21 | data2 | provenance | | +| Test.java:245:15:245:35 | nextInt(...) : Number | Test.java:280:37:280:41 | data2 | provenance | | nodes | Test.java:206:14:206:57 | nextInt(...) : Number | semmle.label | nextInt(...) : Number | | Test.java:210:17:210:20 | data | semmle.label | data | diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticWithExtremeValues.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticWithExtremeValues.expected index 574dc3392a08..bd0b33f48100 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticWithExtremeValues.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/ArithmeticWithExtremeValues.expected @@ -1,11 +1,11 @@ edges -| Test.java:93:8:93:24 | Integer.MAX_VALUE : Number | Test.java:96:8:96:8 | i | -| Test.java:109:13:109:26 | Long.MIN_VALUE : Number | Test.java:111:13:111:13 | i | -| Test.java:138:9:138:25 | Integer.MAX_VALUE : Number | Test.java:139:14:139:14 | i | -| Test.java:144:12:144:28 | Integer.MAX_VALUE : Number | Test.java:147:14:147:14 | i | -| Test.java:185:13:185:26 | Byte.MAX_VALUE : Number | Test.java:188:39:188:39 | b | -| Test.java:192:14:192:28 | Short.MAX_VALUE : Number | Test.java:195:41:195:41 | s | -| Test.java:199:12:199:28 | Integer.MAX_VALUE : Number | Test.java:202:37:202:37 | i | +| Test.java:93:8:93:24 | Integer.MAX_VALUE : Number | Test.java:96:8:96:8 | i | provenance | | +| Test.java:109:13:109:26 | Long.MIN_VALUE : Number | Test.java:111:13:111:13 | i | provenance | | +| Test.java:138:9:138:25 | Integer.MAX_VALUE : Number | Test.java:139:14:139:14 | i | provenance | | +| Test.java:144:12:144:28 | Integer.MAX_VALUE : Number | Test.java:147:14:147:14 | i | provenance | | +| Test.java:185:13:185:26 | Byte.MAX_VALUE : Number | Test.java:188:39:188:39 | b | provenance | | +| Test.java:192:14:192:28 | Short.MAX_VALUE : Number | Test.java:195:41:195:41 | s | provenance | | +| Test.java:199:12:199:28 | Integer.MAX_VALUE : Number | Test.java:202:37:202:37 | i | provenance | | nodes | Test.java:93:8:93:24 | Integer.MAX_VALUE : Number | semmle.label | Integer.MAX_VALUE : Number | | Test.java:96:8:96:8 | i | semmle.label | i | diff --git a/java/ql/test/query-tests/security/CWE-200/semmle/tests/TempDirLocalInformationDisclosure/TempDirLocalInformationDisclosure.expected b/java/ql/test/query-tests/security/CWE-200/semmle/tests/TempDirLocalInformationDisclosure/TempDirLocalInformationDisclosure.expected index 03c431822b5c..21e9f7379c62 100644 --- a/java/ql/test/query-tests/security/CWE-200/semmle/tests/TempDirLocalInformationDisclosure/TempDirLocalInformationDisclosure.expected +++ b/java/ql/test/query-tests/security/CWE-200/semmle/tests/TempDirLocalInformationDisclosure/TempDirLocalInformationDisclosure.expected @@ -1,59 +1,59 @@ edges -| Files.java:10:24:10:69 | new File(...) : File | Files.java:14:37:14:43 | baseDir : File | -| Files.java:10:33:10:68 | getProperty(...) : String | Files.java:10:24:10:69 | new File(...) : File | -| Files.java:14:28:14:64 | new File(...) : File | Files.java:15:17:15:23 | tempDir | -| Files.java:14:37:14:43 | baseDir : File | Files.java:14:28:14:64 | new File(...) : File | -| Test.java:36:24:36:69 | new File(...) : File | Test.java:39:63:39:69 | tempDir | -| Test.java:36:33:36:68 | getProperty(...) : String | Test.java:36:24:36:69 | new File(...) : File | -| Test.java:50:29:50:94 | new File(...) : File | Test.java:53:63:53:74 | tempDirChild | -| Test.java:50:38:50:83 | new File(...) : File | Test.java:50:29:50:94 | new File(...) : File | -| Test.java:50:47:50:82 | getProperty(...) : String | Test.java:50:38:50:83 | new File(...) : File | -| Test.java:61:24:61:69 | new File(...) : File | Test.java:61:24:61:88 | getCanonicalFile(...) : File | -| Test.java:61:24:61:88 | getCanonicalFile(...) : File | Test.java:64:63:64:69 | tempDir | -| Test.java:61:33:61:68 | getProperty(...) : String | Test.java:61:24:61:69 | new File(...) : File | -| Test.java:75:24:75:69 | new File(...) : File | Test.java:75:24:75:87 | getAbsoluteFile(...) : File | -| Test.java:75:24:75:87 | getAbsoluteFile(...) : File | Test.java:78:63:78:69 | tempDir | -| Test.java:75:33:75:68 | getProperty(...) : String | Test.java:75:24:75:69 | new File(...) : File | -| Test.java:110:29:110:84 | new File(...) : File | Test.java:113:9:113:20 | tempDirChild | -| Test.java:110:38:110:73 | getProperty(...) : String | Test.java:110:29:110:84 | new File(...) : File | -| Test.java:134:29:134:84 | new File(...) : File | Test.java:137:9:137:20 | tempDirChild | -| Test.java:134:38:134:73 | getProperty(...) : String | Test.java:134:29:134:84 | new File(...) : File | -| Test.java:158:29:158:88 | new File(...) : File | Test.java:159:21:159:32 | tempDirChild : File | -| Test.java:158:38:158:73 | getProperty(...) : String | Test.java:158:29:158:88 | new File(...) : File | -| Test.java:159:21:159:32 | tempDirChild : File | Test.java:159:21:159:41 | toPath(...) | -| Test.java:187:29:187:88 | new File(...) : File | Test.java:188:21:188:32 | tempDirChild : File | -| Test.java:187:38:187:73 | getProperty(...) : String | Test.java:187:29:187:88 | new File(...) : File | -| Test.java:188:21:188:32 | tempDirChild : File | Test.java:188:21:188:41 | toPath(...) | -| Test.java:204:29:204:104 | new File(...) : File | Test.java:204:29:204:113 | toPath(...) : Path | -| Test.java:204:29:204:113 | toPath(...) : Path | Test.java:207:33:207:44 | tempDirChild | -| Test.java:204:38:204:73 | getProperty(...) : String | Test.java:204:29:204:104 | new File(...) : File | -| Test.java:216:29:216:102 | new File(...) : File | Test.java:216:29:216:111 | toPath(...) : Path | -| Test.java:216:29:216:111 | toPath(...) : Path | Test.java:219:31:219:42 | tempDirChild | -| Test.java:216:38:216:73 | getProperty(...) : String | Test.java:216:29:216:102 | new File(...) : File | -| Test.java:228:29:228:100 | new File(...) : File | Test.java:231:26:231:37 | tempDirChild : File | -| Test.java:228:38:228:73 | getProperty(...) : String | Test.java:228:29:228:100 | new File(...) : File | -| Test.java:231:26:231:37 | tempDirChild : File | Test.java:231:26:231:46 | toPath(...) | -| Test.java:249:29:249:101 | new File(...) : File | Test.java:252:31:252:42 | tempDirChild : File | -| Test.java:249:38:249:73 | getProperty(...) : String | Test.java:249:29:249:101 | new File(...) : File | -| Test.java:252:31:252:42 | tempDirChild : File | Test.java:252:31:252:51 | toPath(...) | -| Test.java:260:29:260:109 | new File(...) : File | Test.java:263:33:263:44 | tempDirChild : File | -| Test.java:260:38:260:73 | getProperty(...) : String | Test.java:260:29:260:109 | new File(...) : File | -| Test.java:263:33:263:44 | tempDirChild : File | Test.java:263:33:263:53 | toPath(...) | -| Test.java:294:29:294:101 | new File(...) : File | Test.java:298:35:298:46 | tempDirChild : File | -| Test.java:294:38:294:73 | getProperty(...) : String | Test.java:294:29:294:101 | new File(...) : File | -| Test.java:298:35:298:46 | tempDirChild : File | Test.java:298:35:298:55 | toPath(...) | -| Test.java:313:29:313:101 | new File(...) : File | Test.java:316:35:316:46 | tempDirChild : File | -| Test.java:313:38:313:73 | getProperty(...) : String | Test.java:313:29:313:101 | new File(...) : File | -| Test.java:316:35:316:46 | tempDirChild : File | Test.java:316:35:316:55 | toPath(...) | -| Test.java:322:29:322:101 | new File(...) : File | Test.java:326:35:326:46 | tempDirChild : File | -| Test.java:322:38:322:73 | getProperty(...) : String | Test.java:322:29:322:101 | new File(...) : File | -| Test.java:326:35:326:46 | tempDirChild : File | Test.java:326:35:326:55 | toPath(...) | -| Test.java:350:29:350:101 | new File(...) : File | Test.java:355:35:355:46 | tempDirChild : File | -| Test.java:350:38:350:73 | getProperty(...) : String | Test.java:350:29:350:101 | new File(...) : File | -| Test.java:355:35:355:46 | tempDirChild : File | Test.java:355:35:355:55 | toPath(...) | -| Test.java:361:29:361:101 | new File(...) : File | Test.java:366:35:366:46 | tempDirChild : File | -| Test.java:361:38:361:73 | getProperty(...) : String | Test.java:361:29:361:101 | new File(...) : File | -| Test.java:366:35:366:46 | tempDirChild : File | Test.java:366:35:366:55 | toPath(...) | +| Files.java:10:24:10:69 | new File(...) : File | Files.java:14:37:14:43 | baseDir : File | provenance | | +| Files.java:10:33:10:68 | getProperty(...) : String | Files.java:10:24:10:69 | new File(...) : File | provenance | | +| Files.java:14:28:14:64 | new File(...) : File | Files.java:15:17:15:23 | tempDir | provenance | | +| Files.java:14:37:14:43 | baseDir : File | Files.java:14:28:14:64 | new File(...) : File | provenance | | +| Test.java:36:24:36:69 | new File(...) : File | Test.java:39:63:39:69 | tempDir | provenance | | +| Test.java:36:33:36:68 | getProperty(...) : String | Test.java:36:24:36:69 | new File(...) : File | provenance | | +| Test.java:50:29:50:94 | new File(...) : File | Test.java:53:63:53:74 | tempDirChild | provenance | | +| Test.java:50:38:50:83 | new File(...) : File | Test.java:50:29:50:94 | new File(...) : File | provenance | | +| Test.java:50:47:50:82 | getProperty(...) : String | Test.java:50:38:50:83 | new File(...) : File | provenance | | +| Test.java:61:24:61:69 | new File(...) : File | Test.java:61:24:61:88 | getCanonicalFile(...) : File | provenance | | +| Test.java:61:24:61:88 | getCanonicalFile(...) : File | Test.java:64:63:64:69 | tempDir | provenance | | +| Test.java:61:33:61:68 | getProperty(...) : String | Test.java:61:24:61:69 | new File(...) : File | provenance | | +| Test.java:75:24:75:69 | new File(...) : File | Test.java:75:24:75:87 | getAbsoluteFile(...) : File | provenance | | +| Test.java:75:24:75:87 | getAbsoluteFile(...) : File | Test.java:78:63:78:69 | tempDir | provenance | | +| Test.java:75:33:75:68 | getProperty(...) : String | Test.java:75:24:75:69 | new File(...) : File | provenance | | +| Test.java:110:29:110:84 | new File(...) : File | Test.java:113:9:113:20 | tempDirChild | provenance | | +| Test.java:110:38:110:73 | getProperty(...) : String | Test.java:110:29:110:84 | new File(...) : File | provenance | | +| Test.java:134:29:134:84 | new File(...) : File | Test.java:137:9:137:20 | tempDirChild | provenance | | +| Test.java:134:38:134:73 | getProperty(...) : String | Test.java:134:29:134:84 | new File(...) : File | provenance | | +| Test.java:158:29:158:88 | new File(...) : File | Test.java:159:21:159:32 | tempDirChild : File | provenance | | +| Test.java:158:38:158:73 | getProperty(...) : String | Test.java:158:29:158:88 | new File(...) : File | provenance | | +| Test.java:159:21:159:32 | tempDirChild : File | Test.java:159:21:159:41 | toPath(...) | provenance | | +| Test.java:187:29:187:88 | new File(...) : File | Test.java:188:21:188:32 | tempDirChild : File | provenance | | +| Test.java:187:38:187:73 | getProperty(...) : String | Test.java:187:29:187:88 | new File(...) : File | provenance | | +| Test.java:188:21:188:32 | tempDirChild : File | Test.java:188:21:188:41 | toPath(...) | provenance | | +| Test.java:204:29:204:104 | new File(...) : File | Test.java:204:29:204:113 | toPath(...) : Path | provenance | | +| Test.java:204:29:204:113 | toPath(...) : Path | Test.java:207:33:207:44 | tempDirChild | provenance | | +| Test.java:204:38:204:73 | getProperty(...) : String | Test.java:204:29:204:104 | new File(...) : File | provenance | | +| Test.java:216:29:216:102 | new File(...) : File | Test.java:216:29:216:111 | toPath(...) : Path | provenance | | +| Test.java:216:29:216:111 | toPath(...) : Path | Test.java:219:31:219:42 | tempDirChild | provenance | | +| Test.java:216:38:216:73 | getProperty(...) : String | Test.java:216:29:216:102 | new File(...) : File | provenance | | +| Test.java:228:29:228:100 | new File(...) : File | Test.java:231:26:231:37 | tempDirChild : File | provenance | | +| Test.java:228:38:228:73 | getProperty(...) : String | Test.java:228:29:228:100 | new File(...) : File | provenance | | +| Test.java:231:26:231:37 | tempDirChild : File | Test.java:231:26:231:46 | toPath(...) | provenance | | +| Test.java:249:29:249:101 | new File(...) : File | Test.java:252:31:252:42 | tempDirChild : File | provenance | | +| Test.java:249:38:249:73 | getProperty(...) : String | Test.java:249:29:249:101 | new File(...) : File | provenance | | +| Test.java:252:31:252:42 | tempDirChild : File | Test.java:252:31:252:51 | toPath(...) | provenance | | +| Test.java:260:29:260:109 | new File(...) : File | Test.java:263:33:263:44 | tempDirChild : File | provenance | | +| Test.java:260:38:260:73 | getProperty(...) : String | Test.java:260:29:260:109 | new File(...) : File | provenance | | +| Test.java:263:33:263:44 | tempDirChild : File | Test.java:263:33:263:53 | toPath(...) | provenance | | +| Test.java:294:29:294:101 | new File(...) : File | Test.java:298:35:298:46 | tempDirChild : File | provenance | | +| Test.java:294:38:294:73 | getProperty(...) : String | Test.java:294:29:294:101 | new File(...) : File | provenance | | +| Test.java:298:35:298:46 | tempDirChild : File | Test.java:298:35:298:55 | toPath(...) | provenance | | +| Test.java:313:29:313:101 | new File(...) : File | Test.java:316:35:316:46 | tempDirChild : File | provenance | | +| Test.java:313:38:313:73 | getProperty(...) : String | Test.java:313:29:313:101 | new File(...) : File | provenance | | +| Test.java:316:35:316:46 | tempDirChild : File | Test.java:316:35:316:55 | toPath(...) | provenance | | +| Test.java:322:29:322:101 | new File(...) : File | Test.java:326:35:326:46 | tempDirChild : File | provenance | | +| Test.java:322:38:322:73 | getProperty(...) : String | Test.java:322:29:322:101 | new File(...) : File | provenance | | +| Test.java:326:35:326:46 | tempDirChild : File | Test.java:326:35:326:55 | toPath(...) | provenance | | +| Test.java:350:29:350:101 | new File(...) : File | Test.java:355:35:355:46 | tempDirChild : File | provenance | | +| Test.java:350:38:350:73 | getProperty(...) : String | Test.java:350:29:350:101 | new File(...) : File | provenance | | +| Test.java:355:35:355:46 | tempDirChild : File | Test.java:355:35:355:55 | toPath(...) | provenance | | +| Test.java:361:29:361:101 | new File(...) : File | Test.java:366:35:366:46 | tempDirChild : File | provenance | | +| Test.java:361:38:361:73 | getProperty(...) : String | Test.java:361:29:361:101 | new File(...) : File | provenance | | +| Test.java:366:35:366:46 | tempDirChild : File | Test.java:366:35:366:55 | toPath(...) | provenance | | nodes | Files.java:10:24:10:69 | new File(...) : File | semmle.label | new File(...) : File | | Files.java:10:33:10:68 | getProperty(...) : String | semmle.label | getProperty(...) : String | diff --git a/java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.expected b/java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.expected new file mode 100644 index 000000000000..8ec8033d086e --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.expected @@ -0,0 +1,2 @@ +testFailures +failures diff --git a/java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.ql b/java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.ql new file mode 100644 index 000000000000..36becaff7553 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.ql @@ -0,0 +1,19 @@ +import java +import TestUtilities.InlineExpectationsTest +import semmle.code.java.dataflow.DataFlow +import semmle.code.java.security.AndroidLocalAuthQuery + +module InsecureAuthTest implements TestSig { + string getARelevantTag() { result = "insecure-auth" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "insecure-auth" and + exists(AuthenticationSuccessCallback cb | not exists(cb.getAResultUse()) | + cb.getLocation() = location and + element = cb.toString() and + value = "" + ) + } +} + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-287/Test.java b/java/ql/test/query-tests/security/CWE-287/Test.java new file mode 100644 index 000000000000..e4317efd615d --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-287/Test.java @@ -0,0 +1,94 @@ +import android.hardware.biometrics.BiometricPrompt; +import android.hardware.fingerprint.FingerprintManager; + +class TestA { + public static void useKey(BiometricPrompt.CryptoObject key) {} + + + // GOOD: result is used + class Test1 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + TestA.useKey(result.getCryptoObject()); + } + } + + // BAD: result is not used + class Test2 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { // $insecure-auth + + } + } + + // BAD: result is only used in a super call + class Test3 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { // $insecure-auth + super.onAuthenticationSucceeded(result); + } + } + + // GOOD: result is used + class Test4 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + super.onAuthenticationSucceeded(result); + TestA.useKey(result.getCryptoObject()); + } + } + + // GOOD: result is used in a super call to a class other than the base class + class Test5 extends Test1 { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + super.onAuthenticationSucceeded(result); + } + } +} + +class TestB { + public static void useKey(FingerprintManager.CryptoObject key) {} + + + // GOOD: result is used + class Test1 extends FingerprintManager.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { + TestB.useKey(result.getCryptoObject()); + } + } + + // BAD: result is not used + class Test2 extends FingerprintManager.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { // $insecure-auth + + } + } + + // BAD: result is only used in a super call + class Test3 extends FingerprintManager.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { // $insecure-auth + super.onAuthenticationSucceeded(result); + } + } + + // GOOD: result is used + class Test4 extends FingerprintManager.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { + super.onAuthenticationSucceeded(result); + TestB.useKey(result.getCryptoObject()); + } + } + + // GOOD: result is used in a super call to a class other than the base class + class Test5 extends Test1 { + @Override + public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { + super.onAuthenticationSucceeded(result); + } + } +} \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-287/Test2.java b/java/ql/test/query-tests/security/CWE-287/Test2.java new file mode 100644 index 000000000000..10308a2f2d38 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-287/Test2.java @@ -0,0 +1,47 @@ +import androidx.biometric.BiometricPrompt; + +class TestC { + public static void useKey(BiometricPrompt.CryptoObject key) {} + + + // GOOD: result is used + class Test1 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + TestC.useKey(result.getCryptoObject()); + } + } + + // BAD: result is not used + class Test2 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { // $insecure-auth + + } + } + + // BAD: result is only used in a super call + class Test3 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { // $insecure-auth + super.onAuthenticationSucceeded(result); + } + } + + // GOOD: result is used + class Test4 extends BiometricPrompt.AuthenticationCallback { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + super.onAuthenticationSucceeded(result); + TestC.useKey(result.getCryptoObject()); + } + } + + // GOOD: result is used in a super call to a class other than the base class + class Test5 extends Test1 { + @Override + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { + super.onAuthenticationSucceeded(result); + } + } +} \ No newline at end of file diff --git a/java/ql/test/query-tests/security/CWE-287/options b/java/ql/test/query-tests/security/CWE-287/options new file mode 100644 index 000000000000..dacd3cb21df0 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-287/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/google-android-9.0.0 diff --git a/java/ql/test/query-tests/security/CWE-297/UnsafeHostnameVerification.expected b/java/ql/test/query-tests/security/CWE-297/UnsafeHostnameVerification.expected index 86e91b2003b6..8377276e40c1 100644 --- a/java/ql/test/query-tests/security/CWE-297/UnsafeHostnameVerification.expected +++ b/java/ql/test/query-tests/security/CWE-297/UnsafeHostnameVerification.expected @@ -1,8 +1,8 @@ edges -| UnsafeHostnameVerification.java:66:37:80:9 | new (...) : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:81:55:81:62 | verifier | -| UnsafeHostnameVerification.java:88:37:93:9 | new (...) : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:94:55:94:62 | verifier | -| UnsafeHostnameVerification.java:97:42:97:68 | ALLOW_ALL_HOSTNAME_VERIFIER : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:34:59:34:85 | ALLOW_ALL_HOSTNAME_VERIFIER | -| UnsafeHostnameVerification.java:97:72:102:5 | new (...) : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:97:42:97:68 | ALLOW_ALL_HOSTNAME_VERIFIER : new HostnameVerifier(...) { ... } | +| UnsafeHostnameVerification.java:66:37:80:9 | new (...) : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:81:55:81:62 | verifier | provenance | | +| UnsafeHostnameVerification.java:88:37:93:9 | new (...) : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:94:55:94:62 | verifier | provenance | | +| UnsafeHostnameVerification.java:97:42:97:68 | ALLOW_ALL_HOSTNAME_VERIFIER : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:34:59:34:85 | ALLOW_ALL_HOSTNAME_VERIFIER | provenance | | +| UnsafeHostnameVerification.java:97:72:102:5 | new (...) : new HostnameVerifier(...) { ... } | UnsafeHostnameVerification.java:97:42:97:68 | ALLOW_ALL_HOSTNAME_VERIFIER : new HostnameVerifier(...) { ... } | provenance | | nodes | UnsafeHostnameVerification.java:14:55:19:9 | new (...) | semmle.label | new (...) | | UnsafeHostnameVerification.java:26:55:26:71 | ...->... | semmle.label | ...->... | diff --git a/java/ql/test/query-tests/security/CWE-311/CWE-319/HttpsUrls.expected b/java/ql/test/query-tests/security/CWE-311/CWE-319/HttpsUrls.expected index baef4c539b8f..2b2ff6478ce6 100644 --- a/java/ql/test/query-tests/security/CWE-311/CWE-319/HttpsUrls.expected +++ b/java/ql/test/query-tests/security/CWE-311/CWE-319/HttpsUrls.expected @@ -1,16 +1,16 @@ edges -| HttpsUrlsTest.java:23:23:23:31 | "http://" : String | HttpsUrlsTest.java:24:21:24:56 | ... + ... : String | -| HttpsUrlsTest.java:24:13:24:57 | new URL(...) : URL | HttpsUrlsTest.java:28:50:28:50 | u | -| HttpsUrlsTest.java:24:21:24:56 | ... + ... : String | HttpsUrlsTest.java:24:13:24:57 | new URL(...) : URL | -| HttpsUrlsTest.java:36:23:36:28 | "http" : String | HttpsUrlsTest.java:37:21:37:28 | protocol : String | -| HttpsUrlsTest.java:37:13:37:62 | new URL(...) : URL | HttpsUrlsTest.java:41:50:41:50 | u | -| HttpsUrlsTest.java:37:21:37:28 | protocol : String | HttpsUrlsTest.java:37:13:37:62 | new URL(...) : URL | -| HttpsUrlsTest.java:49:23:49:31 | "http://" : String | HttpsUrlsTest.java:51:64:51:98 | ... + ... : String | -| HttpsUrlsTest.java:51:13:51:99 | new URL(...) : URL | HttpsUrlsTest.java:55:50:55:50 | u | -| HttpsUrlsTest.java:51:64:51:98 | ... + ... : String | HttpsUrlsTest.java:51:13:51:99 | new URL(...) : URL | -| HttpsUrlsTest.java:87:23:87:28 | "http" : String | HttpsUrlsTest.java:88:21:88:28 | protocol : String | -| HttpsUrlsTest.java:88:13:88:52 | new URL(...) : URL | HttpsUrlsTest.java:92:50:92:50 | u | -| HttpsUrlsTest.java:88:21:88:28 | protocol : String | HttpsUrlsTest.java:88:13:88:52 | new URL(...) : URL | +| HttpsUrlsTest.java:23:23:23:31 | "http://" : String | HttpsUrlsTest.java:24:21:24:56 | ... + ... : String | provenance | | +| HttpsUrlsTest.java:24:13:24:57 | new URL(...) : URL | HttpsUrlsTest.java:28:50:28:50 | u | provenance | | +| HttpsUrlsTest.java:24:21:24:56 | ... + ... : String | HttpsUrlsTest.java:24:13:24:57 | new URL(...) : URL | provenance | | +| HttpsUrlsTest.java:36:23:36:28 | "http" : String | HttpsUrlsTest.java:37:21:37:28 | protocol : String | provenance | | +| HttpsUrlsTest.java:37:13:37:62 | new URL(...) : URL | HttpsUrlsTest.java:41:50:41:50 | u | provenance | | +| HttpsUrlsTest.java:37:21:37:28 | protocol : String | HttpsUrlsTest.java:37:13:37:62 | new URL(...) : URL | provenance | | +| HttpsUrlsTest.java:49:23:49:31 | "http://" : String | HttpsUrlsTest.java:51:64:51:98 | ... + ... : String | provenance | | +| HttpsUrlsTest.java:51:13:51:99 | new URL(...) : URL | HttpsUrlsTest.java:55:50:55:50 | u | provenance | | +| HttpsUrlsTest.java:51:64:51:98 | ... + ... : String | HttpsUrlsTest.java:51:13:51:99 | new URL(...) : URL | provenance | | +| HttpsUrlsTest.java:87:23:87:28 | "http" : String | HttpsUrlsTest.java:88:21:88:28 | protocol : String | provenance | | +| HttpsUrlsTest.java:88:13:88:52 | new URL(...) : URL | HttpsUrlsTest.java:92:50:92:50 | u | provenance | | +| HttpsUrlsTest.java:88:21:88:28 | protocol : String | HttpsUrlsTest.java:88:13:88:52 | new URL(...) : URL | provenance | | nodes | HttpsUrlsTest.java:23:23:23:31 | "http://" : String | semmle.label | "http://" : String | | HttpsUrlsTest.java:24:13:24:57 | new URL(...) : URL | semmle.label | new URL(...) : URL | diff --git a/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected b/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected index 3965182c6d4b..7c3a7f3f0828 100644 --- a/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected +++ b/java/ql/test/query-tests/security/CWE-327/semmle/tests/BrokenCryptoAlgorithm.expected @@ -1,5 +1,5 @@ edges -| WeakHashing.java:21:86:21:90 | "MD5" : String | WeakHashing.java:21:56:21:91 | getProperty(...) | +| WeakHashing.java:21:86:21:90 | "MD5" : String | WeakHashing.java:21:56:21:91 | getProperty(...) | provenance | | nodes | Test.java:19:45:19:49 | "DES" | semmle.label | "DES" | | Test.java:42:33:42:37 | "RC2" | semmle.label | "RC2" | diff --git a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected index 974005e801be..3757e51134b6 100644 --- a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected +++ b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected @@ -1,17 +1,14 @@ edges -| UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | -| UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:45:28:45:39 | input : String | -| UrlRedirect.java:36:58:36:89 | getParameter(...) : String | UrlRedirect.java:36:25:36:89 | ... + ... | -| UrlRedirect.java:45:28:45:39 | input : String | UrlRedirect.java:46:10:46:14 | input : String | -| UrlRedirect.java:46:10:46:14 | input : String | UrlRedirect.java:46:10:46:40 | replaceAll(...) : String | -| mad/Test.java:9:16:9:41 | getParameter(...) : String | mad/Test.java:14:31:14:38 | source(...) : String | -| mad/Test.java:14:31:14:38 | source(...) : String | mad/Test.java:14:22:14:38 | (...)... | +| UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | provenance | | +| UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:45:28:45:39 | input : String | provenance | | +| UrlRedirect.java:45:28:45:39 | input : String | UrlRedirect.java:46:10:46:14 | input : String | provenance | | +| UrlRedirect.java:46:10:46:14 | input : String | UrlRedirect.java:46:10:46:40 | replaceAll(...) : String | provenance | | +| mad/Test.java:9:16:9:41 | getParameter(...) : String | mad/Test.java:14:31:14:38 | source(...) : String | provenance | | +| mad/Test.java:14:31:14:38 | source(...) : String | mad/Test.java:14:22:14:38 | (...)... | provenance | | nodes | UrlRedirect.java:23:25:23:54 | getParameter(...) | semmle.label | getParameter(...) | | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | semmle.label | weakCleanup(...) | | UrlRedirect.java:32:37:32:66 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UrlRedirect.java:36:25:36:89 | ... + ... | semmle.label | ... + ... | -| UrlRedirect.java:36:58:36:89 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UrlRedirect.java:39:34:39:63 | getParameter(...) | semmle.label | getParameter(...) | | UrlRedirect.java:42:43:42:72 | getParameter(...) | semmle.label | getParameter(...) | | UrlRedirect.java:45:28:45:39 | input : String | semmle.label | input : String | @@ -25,7 +22,6 @@ subpaths #select | UrlRedirect.java:23:25:23:54 | getParameter(...) | UrlRedirect.java:23:25:23:54 | getParameter(...) | UrlRedirect.java:23:25:23:54 | getParameter(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:23:25:23:54 | getParameter(...) | user-provided value | | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:32:37:32:66 | getParameter(...) | user-provided value | -| UrlRedirect.java:36:25:36:89 | ... + ... | UrlRedirect.java:36:58:36:89 | getParameter(...) : String | UrlRedirect.java:36:25:36:89 | ... + ... | Untrusted URL redirection depends on a $@. | UrlRedirect.java:36:58:36:89 | getParameter(...) | user-provided value | | UrlRedirect.java:39:34:39:63 | getParameter(...) | UrlRedirect.java:39:34:39:63 | getParameter(...) | UrlRedirect.java:39:34:39:63 | getParameter(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:39:34:39:63 | getParameter(...) | user-provided value | | UrlRedirect.java:42:43:42:72 | getParameter(...) | UrlRedirect.java:42:43:42:72 | getParameter(...) | UrlRedirect.java:42:43:42:72 | getParameter(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:42:43:42:72 | getParameter(...) | user-provided value | | mad/Test.java:14:22:14:38 | (...)... | mad/Test.java:9:16:9:41 | getParameter(...) : String | mad/Test.java:14:22:14:38 | (...)... | Untrusted URL redirection depends on a $@. | mad/Test.java:9:16:9:41 | getParameter(...) | user-provided value | diff --git a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.java b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.java index 318fdec9182d..01cee2d59f23 100644 --- a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.java +++ b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.java @@ -31,7 +31,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) // if the argument is "hthttp://tp://malicious.com" response.sendRedirect(weakCleanup(request.getParameter("target"))); - // FALSE POSITIVE: the user input is not used in a position that allows it to dictate + // GOOD: the user input is not used in a position that allows it to dictate // the target of the redirect response.sendRedirect("http://example.com?username=" + request.getParameter("username")); diff --git a/java/ql/test/query-tests/security/CWE-681/semmle/tests/NumericCastTaintedLocal.expected b/java/ql/test/query-tests/security/CWE-681/semmle/tests/NumericCastTaintedLocal.expected index 6ab99919c336..89bf2054d1d6 100644 --- a/java/ql/test/query-tests/security/CWE-681/semmle/tests/NumericCastTaintedLocal.expected +++ b/java/ql/test/query-tests/security/CWE-681/semmle/tests/NumericCastTaintedLocal.expected @@ -1,11 +1,11 @@ edges -| Test.java:10:36:11:47 | new BufferedReader(...) : BufferedReader | Test.java:12:26:12:39 | readerBuffered : BufferedReader | -| Test.java:11:6:11:46 | new InputStreamReader(...) : InputStreamReader | Test.java:10:36:11:47 | new BufferedReader(...) : BufferedReader | -| Test.java:11:28:11:36 | System.in : InputStream | Test.java:11:6:11:46 | new InputStreamReader(...) : InputStreamReader | -| Test.java:12:26:12:39 | readerBuffered : BufferedReader | Test.java:12:26:12:50 | readLine(...) : String | -| Test.java:12:26:12:50 | readLine(...) : String | Test.java:14:27:14:38 | stringNumber : String | -| Test.java:14:27:14:38 | stringNumber : String | Test.java:14:27:14:45 | trim(...) : String | -| Test.java:14:27:14:45 | trim(...) : String | Test.java:21:22:21:25 | data | +| Test.java:10:36:11:47 | new BufferedReader(...) : BufferedReader | Test.java:12:26:12:39 | readerBuffered : BufferedReader | provenance | | +| Test.java:11:6:11:46 | new InputStreamReader(...) : InputStreamReader | Test.java:10:36:11:47 | new BufferedReader(...) : BufferedReader | provenance | | +| Test.java:11:28:11:36 | System.in : InputStream | Test.java:11:6:11:46 | new InputStreamReader(...) : InputStreamReader | provenance | | +| Test.java:12:26:12:39 | readerBuffered : BufferedReader | Test.java:12:26:12:50 | readLine(...) : String | provenance | | +| Test.java:12:26:12:50 | readLine(...) : String | Test.java:14:27:14:38 | stringNumber : String | provenance | | +| Test.java:14:27:14:38 | stringNumber : String | Test.java:14:27:14:45 | trim(...) : String | provenance | | +| Test.java:14:27:14:45 | trim(...) : String | Test.java:21:22:21:25 | data | provenance | | nodes | Test.java:10:36:11:47 | new BufferedReader(...) : BufferedReader | semmle.label | new BufferedReader(...) : BufferedReader | | Test.java:11:6:11:46 | new InputStreamReader(...) : InputStreamReader | semmle.label | new InputStreamReader(...) : InputStreamReader | diff --git a/java/ql/test/query-tests/security/CWE-807/semmle/tests/TaintedPermissionsCheck.expected b/java/ql/test/query-tests/security/CWE-807/semmle/tests/TaintedPermissionsCheck.expected index 2349a61216f5..9d67e3e6c3df 100644 --- a/java/ql/test/query-tests/security/CWE-807/semmle/tests/TaintedPermissionsCheck.expected +++ b/java/ql/test/query-tests/security/CWE-807/semmle/tests/TaintedPermissionsCheck.expected @@ -1,5 +1,5 @@ edges -| TaintedPermissionsCheckTest.java:12:19:12:48 | getParameter(...) : String | TaintedPermissionsCheckTest.java:15:27:15:53 | ... + ... | +| TaintedPermissionsCheckTest.java:12:19:12:48 | getParameter(...) : String | TaintedPermissionsCheckTest.java:15:27:15:53 | ... + ... | provenance | | nodes | TaintedPermissionsCheckTest.java:12:19:12:48 | getParameter(...) : String | semmle.label | getParameter(...) : String | | TaintedPermissionsCheckTest.java:15:27:15:53 | ... + ... | semmle.label | ... + ... | diff --git a/java/ql/test/stubs/google-android-9.0.0/android/hardware/biometrics/BiometricPrompt.java b/java/ql/test/stubs/google-android-9.0.0/android/hardware/biometrics/BiometricPrompt.java new file mode 100644 index 000000000000..7bc467401bdc --- /dev/null +++ b/java/ql/test/stubs/google-android-9.0.0/android/hardware/biometrics/BiometricPrompt.java @@ -0,0 +1,69 @@ +// Generated automatically from android.hardware.biometrics.BiometricPrompt for testing purposes + +package android.hardware.biometrics; + +import android.os.CancellationSignal; +import android.security.identity.IdentityCredential; +import java.security.Signature; +import java.util.concurrent.Executor; +import javax.crypto.Cipher; +import javax.crypto.Mac; + +public class BiometricPrompt +{ + protected BiometricPrompt() {} + abstract static public class AuthenticationCallback + { + public AuthenticationCallback(){} + public void onAuthenticationError(int p0, CharSequence p1){} + public void onAuthenticationFailed(){} + public void onAuthenticationHelp(int p0, CharSequence p1){} + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult p0){} + } + public CharSequence getDescription(){ return null; } + public CharSequence getNegativeButtonText(){ return null; } + public CharSequence getSubtitle(){ return null; } + public CharSequence getTitle(){ return null; } + public boolean isConfirmationRequired(){ return false; } + public int getAllowedAuthenticators(){ return 0; } + public static int AUTHENTICATION_RESULT_TYPE_BIOMETRIC = 0; + public static int AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL = 0; + public static int BIOMETRIC_ACQUIRED_GOOD = 0; + public static int BIOMETRIC_ACQUIRED_IMAGER_DIRTY = 0; + public static int BIOMETRIC_ACQUIRED_INSUFFICIENT = 0; + public static int BIOMETRIC_ACQUIRED_PARTIAL = 0; + public static int BIOMETRIC_ACQUIRED_TOO_FAST = 0; + public static int BIOMETRIC_ACQUIRED_TOO_SLOW = 0; + public static int BIOMETRIC_ERROR_CANCELED = 0; + public static int BIOMETRIC_ERROR_HW_NOT_PRESENT = 0; + public static int BIOMETRIC_ERROR_HW_UNAVAILABLE = 0; + public static int BIOMETRIC_ERROR_LOCKOUT = 0; + public static int BIOMETRIC_ERROR_LOCKOUT_PERMANENT = 0; + public static int BIOMETRIC_ERROR_NO_BIOMETRICS = 0; + public static int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 0; + public static int BIOMETRIC_ERROR_NO_SPACE = 0; + public static int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 0; + public static int BIOMETRIC_ERROR_TIMEOUT = 0; + public static int BIOMETRIC_ERROR_UNABLE_TO_PROCESS = 0; + public static int BIOMETRIC_ERROR_USER_CANCELED = 0; + public static int BIOMETRIC_ERROR_VENDOR = 0; + public void authenticate(BiometricPrompt.CryptoObject p0, CancellationSignal p1, Executor p2, BiometricPrompt.AuthenticationCallback p3){} + public void authenticate(CancellationSignal p0, Executor p1, BiometricPrompt.AuthenticationCallback p2){} + static public class AuthenticationResult + { + public BiometricPrompt.CryptoObject getCryptoObject(){ return null; } + public int getAuthenticationType(){ return 0; } + } + static public class CryptoObject + { + protected CryptoObject() {} + public Cipher getCipher(){ return null; } + public CryptoObject(Cipher p0){} + public CryptoObject(IdentityCredential p0){} + public CryptoObject(Mac p0){} + public CryptoObject(Signature p0){} + public IdentityCredential getIdentityCredential(){ return null; } + public Mac getMac(){ return null; } + public Signature getSignature(){ return null; } + } +} diff --git a/java/ql/test/stubs/google-android-9.0.0/android/hardware/fingerprint/FingerprintManager.java b/java/ql/test/stubs/google-android-9.0.0/android/hardware/fingerprint/FingerprintManager.java new file mode 100644 index 000000000000..235941fb9f49 --- /dev/null +++ b/java/ql/test/stubs/google-android-9.0.0/android/hardware/fingerprint/FingerprintManager.java @@ -0,0 +1,55 @@ +// Generated automatically from android.hardware.fingerprint.FingerprintManager for testing purposes + +package android.hardware.fingerprint; + +import android.os.CancellationSignal; +import android.os.Handler; +import java.security.Signature; +import javax.crypto.Cipher; +import javax.crypto.Mac; + +public class FingerprintManager +{ + abstract static public class AuthenticationCallback + { + public AuthenticationCallback(){} + public void onAuthenticationError(int p0, CharSequence p1){} + public void onAuthenticationFailed(){} + public void onAuthenticationHelp(int p0, CharSequence p1){} + public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult p0){} + } + public boolean hasEnrolledFingerprints(){ return false; } + public boolean isHardwareDetected(){ return false; } + public static int FINGERPRINT_ACQUIRED_GOOD = 0; + public static int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 0; + public static int FINGERPRINT_ACQUIRED_INSUFFICIENT = 0; + public static int FINGERPRINT_ACQUIRED_PARTIAL = 0; + public static int FINGERPRINT_ACQUIRED_TOO_FAST = 0; + public static int FINGERPRINT_ACQUIRED_TOO_SLOW = 0; + public static int FINGERPRINT_ERROR_CANCELED = 0; + public static int FINGERPRINT_ERROR_HW_NOT_PRESENT = 0; + public static int FINGERPRINT_ERROR_HW_UNAVAILABLE = 0; + public static int FINGERPRINT_ERROR_LOCKOUT = 0; + public static int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 0; + public static int FINGERPRINT_ERROR_NO_FINGERPRINTS = 0; + public static int FINGERPRINT_ERROR_NO_SPACE = 0; + public static int FINGERPRINT_ERROR_TIMEOUT = 0; + public static int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 0; + public static int FINGERPRINT_ERROR_USER_CANCELED = 0; + public static int FINGERPRINT_ERROR_VENDOR = 0; + public void authenticate(FingerprintManager.CryptoObject p0, CancellationSignal p1, int p2, FingerprintManager.AuthenticationCallback p3, Handler p4){} + static public class AuthenticationResult + { + public FingerprintManager.CryptoObject getCryptoObject(){ return null; } + } + static public class CryptoObject + { + protected CryptoObject() {} + public Cipher getCipher(){ return null; } + public CryptoObject(Cipher p0){} + public CryptoObject(Mac p0){} + public CryptoObject(Signature p0){} + public Mac getMac(){ return null; } + public Signature getSignature(){ return null; } + } +} diff --git a/java/ql/test/stubs/google-android-9.0.0/android/os/Bundle.java b/java/ql/test/stubs/google-android-9.0.0/android/os/Bundle.java index 4beb1cf5dee3..d1154c915ce0 100644 --- a/java/ql/test/stubs/google-android-9.0.0/android/os/Bundle.java +++ b/java/ql/test/stubs/google-android-9.0.0/android/os/Bundle.java @@ -15,9 +15,9 @@ public class Bundle extends BaseBundle implements Cloneable, Parcelable { - public ArrayList getParcelableArrayList(String p0){ return null; } - public SparseArray getSparseParcelableArray(String p0){ return null; } public T getParcelable(String p0){ return null; } + public android.util.SparseArray getSparseParcelableArray(String p0){ return null; } + public java.util.ArrayList getParcelableArrayList(String p0){ return null; } public ArrayList getCharSequenceArrayList(String p0){ return null; } public ArrayList getIntegerArrayList(String p0){ return null; } public ArrayList getStringArrayList(String p0){ return null; } diff --git a/java/ql/test/stubs/google-android-9.0.0/android/os/Parcel.java b/java/ql/test/stubs/google-android-9.0.0/android/os/Parcel.java index ef6dcdeb0852..9bf19e322693 100644 --- a/java/ql/test/stubs/google-android-9.0.0/android/os/Parcel.java +++ b/java/ql/test/stubs/google-android-9.0.0/android/os/Parcel.java @@ -24,24 +24,24 @@ public class Parcel { protected Parcel() {} protected void finalize(){} - public ArrayMap createTypedArrayMap(Parcelable.Creator p0){ return null; } - public List readParcelableList(List p0, ClassLoader p1){ return null; } - public SparseArray createTypedSparseArray(Parcelable.Creator p0){ return null; } public T readParcelable(ClassLoader p0){ return null; } + public android.util.ArrayMap createTypedArrayMap(Parcelable.Creator p0){ return null; } + public android.util.SparseArray createTypedSparseArray(Parcelable.Creator p0){ return null; } + public java.util.List readParcelableList(java.util.List p0, ClassLoader p1){ return null; } public void writeParcelableArray(T[] p0, int p1){} - public void writeParcelableList(List p0, int p1){} + public void writeParcelableList(java.util.List p0, int p1){} public void writeTypedArray(T[] p0, int p1){} - public void writeTypedArrayMap(ArrayMap p0, int p1){} - public void writeTypedList(List p0){} + public void writeTypedArrayMap(android.util.ArrayMap p0, int p1){} + public void writeTypedList(java.util.List p0){} public void writeTypedObject(T p0, int p1){} - public void writeTypedSparseArray(SparseArray p0, int p1){} - public ArrayList createTypedArrayList(Parcelable.Creator p0){ return null; } - public SparseArray readSparseArray(ClassLoader p0){ return null; } + public void writeTypedSparseArray(android.util.SparseArray p0, int p1){} public T readTypedObject(Parcelable.Creator p0){ return null; } public T[] createTypedArray(Parcelable.Creator p0){ return null; } + public android.util.SparseArray readSparseArray(ClassLoader p0){ return null; } + public java.util.ArrayList createTypedArrayList(Parcelable.Creator p0){ return null; } public void readTypedArray(T[] p0, Parcelable.Creator p1){} - public void readTypedList(List p0, Parcelable.Creator p1){} - public void writeSparseArray(SparseArray p0){} + public void readTypedList(java.util.List p0, Parcelable.Creator p1){} + public void writeSparseArray(android.util.SparseArray p0){} public ArrayList readArrayList(ClassLoader p0){ return null; } public ArrayList createBinderArrayList(){ return null; } public ArrayList createStringArrayList(){ return null; } diff --git a/java/ql/test/stubs/google-android-9.0.0/android/security/identity/IdentityCredential.java b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/IdentityCredential.java new file mode 100644 index 000000000000..12dee91453c9 --- /dev/null +++ b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/IdentityCredential.java @@ -0,0 +1,32 @@ +// Generated automatically from android.security.identity.IdentityCredential for testing purposes + +package android.security.identity; + +import android.security.identity.PersonalizationData; +import android.security.identity.ResultData; +import java.security.KeyPair; +import java.security.PublicKey; +import java.security.cert.X509Certificate; +import java.time.Instant; +import java.util.Collection; +import java.util.Map; + +abstract public class IdentityCredential +{ + public abstract Collection getAuthKeysNeedingCertification(); + public abstract Collection getCredentialKeyCertificateChain(); + public abstract KeyPair createEphemeralKeyPair(); + public abstract ResultData getEntries(byte[] p0, Map> p1, byte[] p2, byte[] p3); + public abstract byte[] decryptMessageFromReader(byte[] p0); + public abstract byte[] encryptMessageToReader(byte[] p0); + public abstract int[] getAuthenticationDataUsageCount(); + public abstract void setAllowUsingExhaustedKeys(boolean p0); + public abstract void setAvailableAuthenticationKeys(int p0, int p1); + public abstract void setReaderEphemeralPublicKey(PublicKey p0); + public abstract void storeStaticAuthenticationData(X509Certificate p0, byte[] p1); + public byte[] delete(byte[] p0){ return null; } + public byte[] proveOwnership(byte[] p0){ return null; } + public byte[] update(PersonalizationData p0){ return null; } + public void setAllowUsingExpiredKeys(boolean p0){} + public void storeStaticAuthenticationData(X509Certificate p0, Instant p1, byte[] p2){} +} diff --git a/java/ql/test/stubs/google-android-9.0.0/android/security/identity/PersonalizationData.java b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/PersonalizationData.java new file mode 100644 index 000000000000..eecfc828c56f --- /dev/null +++ b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/PersonalizationData.java @@ -0,0 +1,9 @@ +// Generated automatically from android.security.identity.PersonalizationData for testing purposes + +package android.security.identity; + + +public class PersonalizationData +{ + protected PersonalizationData() {} +} diff --git a/java/ql/test/stubs/google-android-9.0.0/android/security/identity/PresentationSession.java b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/PresentationSession.java new file mode 100644 index 000000000000..9227f8fe5d37 --- /dev/null +++ b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/PresentationSession.java @@ -0,0 +1,9 @@ +// Generated automatically from android.security.identity.PresentationSession for testing purposes + +package android.security.identity; + + +public class PresentationSession +{ + protected PresentationSession() {} +} diff --git a/java/ql/test/stubs/google-android-9.0.0/android/security/identity/ResultData.java b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/ResultData.java new file mode 100644 index 000000000000..e8ed2f130129 --- /dev/null +++ b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/ResultData.java @@ -0,0 +1,24 @@ +// Generated automatically from android.security.identity.ResultData for testing purposes + +package android.security.identity; + +import java.util.Collection; + +abstract public class ResultData +{ + public abstract Collection getEntryNames(String p0); + public abstract Collection getNamespaces(); + public abstract Collection getRetrievedEntryNames(String p0); + public abstract byte[] getAuthenticatedData(); + public abstract byte[] getEntry(String p0, String p1); + public abstract byte[] getMessageAuthenticationCode(); + public abstract byte[] getStaticAuthenticationData(); + public abstract int getStatus(String p0, String p1); + public static int STATUS_NOT_IN_REQUEST_MESSAGE = 0; + public static int STATUS_NOT_REQUESTED = 0; + public static int STATUS_NO_ACCESS_CONTROL_PROFILES = 0; + public static int STATUS_NO_SUCH_ENTRY = 0; + public static int STATUS_OK = 0; + public static int STATUS_READER_AUTHENTICATION_FAILED = 0; + public static int STATUS_USER_AUTHENTICATION_FAILED = 0; +} diff --git a/java/ql/test/stubs/google-android-9.0.0/android/util/ArrayMap.java b/java/ql/test/stubs/google-android-9.0.0/android/util/ArrayMap.java index 55c7adebea7f..c0b6016c764f 100644 --- a/java/ql/test/stubs/google-android-9.0.0/android/util/ArrayMap.java +++ b/java/ql/test/stubs/google-android-9.0.0/android/util/ArrayMap.java @@ -6,15 +6,12 @@ import java.util.Map; import java.util.Set; -public class ArrayMap implements Map +public class ArrayMap implements java.util.Map { public ArrayMap(){} public ArrayMap(ArrayMap p0){} public ArrayMap(int p0){} - public Collection values(){ return null; } public K keyAt(int p0){ return null; } - public Set keySet(){ return null; } - public Set> entrySet(){ return null; } public String toString(){ return null; } public V get(Object p0){ return null; } public V put(K p0, V p1){ return null; } @@ -33,8 +30,11 @@ public ArrayMap(int p0){} public int indexOfKey(Object p0){ return 0; } public int indexOfValue(Object p0){ return 0; } public int size(){ return 0; } + public java.util.Collection values(){ return null; } + public java.util.Set keySet(){ return null; } + public java.util.Set> entrySet(){ return null; } public void clear(){} public void ensureCapacity(int p0){} public void putAll(ArrayMap p0){} - public void putAll(Map p0){} + public void putAll(java.util.Map p0){} } diff --git a/java/ql/test/stubs/google-android-9.0.0/androidx/biometric/BiometricPrompt.java b/java/ql/test/stubs/google-android-9.0.0/androidx/biometric/BiometricPrompt.java new file mode 100644 index 000000000000..16bf2e661ee6 --- /dev/null +++ b/java/ql/test/stubs/google-android-9.0.0/androidx/biometric/BiometricPrompt.java @@ -0,0 +1,79 @@ +// Generated automatically from androidx.biometric.BiometricPrompt for testing purposes + +package androidx.biometric; + +import android.security.identity.IdentityCredential; +import android.security.identity.PresentationSession; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import java.security.Signature; +import java.util.concurrent.Executor; +import javax.crypto.Cipher; +import javax.crypto.Mac; + +public class BiometricPrompt +{ + protected BiometricPrompt() {} + abstract static public class AuthenticationCallback + { + public AuthenticationCallback(){} + public void onAuthenticationError(int p0, CharSequence p1){} + public void onAuthenticationFailed(){} + public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult p0){} + } + public BiometricPrompt(Fragment p0, BiometricPrompt.AuthenticationCallback p1){} + public BiometricPrompt(Fragment p0, Executor p1, BiometricPrompt.AuthenticationCallback p2){} + public BiometricPrompt(FragmentActivity p0, BiometricPrompt.AuthenticationCallback p1){} + public BiometricPrompt(FragmentActivity p0, Executor p1, BiometricPrompt.AuthenticationCallback p2){} + public static int AUTHENTICATION_RESULT_TYPE_BIOMETRIC = 0; + public static int AUTHENTICATION_RESULT_TYPE_DEVICE_CREDENTIAL = 0; + public static int AUTHENTICATION_RESULT_TYPE_UNKNOWN = 0; + public static int ERROR_CANCELED = 0; + public static int ERROR_HW_NOT_PRESENT = 0; + public static int ERROR_HW_UNAVAILABLE = 0; + public static int ERROR_LOCKOUT = 0; + public static int ERROR_LOCKOUT_PERMANENT = 0; + public static int ERROR_NEGATIVE_BUTTON = 0; + public static int ERROR_NO_BIOMETRICS = 0; + public static int ERROR_NO_DEVICE_CREDENTIAL = 0; + public static int ERROR_NO_SPACE = 0; + public static int ERROR_SECURITY_UPDATE_REQUIRED = 0; + public static int ERROR_TIMEOUT = 0; + public static int ERROR_UNABLE_TO_PROCESS = 0; + public static int ERROR_USER_CANCELED = 0; + public static int ERROR_VENDOR = 0; + public void authenticate(BiometricPrompt.PromptInfo p0){} + public void authenticate(BiometricPrompt.PromptInfo p0, BiometricPrompt.CryptoObject p1){} + public void cancelAuthentication(){} + static public class AuthenticationResult + { + protected AuthenticationResult() {} + public BiometricPrompt.CryptoObject getCryptoObject(){ return null; } + public int getAuthenticationType(){ return 0; } + } + static public class CryptoObject + { + protected CryptoObject() {} + public Cipher getCipher(){ return null; } + public CryptoObject(Cipher p0){} + public CryptoObject(IdentityCredential p0){} + public CryptoObject(Mac p0){} + public CryptoObject(PresentationSession p0){} + public CryptoObject(Signature p0){} + public IdentityCredential getIdentityCredential(){ return null; } + public Mac getMac(){ return null; } + public PresentationSession getPresentationSession(){ return null; } + public Signature getSignature(){ return null; } + } + static public class PromptInfo + { + protected PromptInfo() {} + public CharSequence getDescription(){ return null; } + public CharSequence getNegativeButtonText(){ return null; } + public CharSequence getSubtitle(){ return null; } + public CharSequence getTitle(){ return null; } + public boolean isConfirmationRequired(){ return false; } + public boolean isDeviceCredentialAllowed(){ return false; } + public int getAllowedAuthenticators(){ return 0; } + } +} diff --git a/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected b/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected index 919fc09b2610..4d32cb7e922d 100644 --- a/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected +++ b/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected @@ -2,11 +2,9 @@ | com/github/codeql/test/PublicClass.java:8:5:8:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | | com/github/codeql/test/PublicClass.java:12:5:12:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | | com/github/codeql/test/PublicClass.java:16:5:16:45 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | sink | source | -| com/github/codeql/test/PublicClass.java:16:24:16:44 | get(...) | java.nio.file | Paths | get | (String,String[]) | true | rt.jar | | sink | source | | com/github/codeql/test/PublicClass.java:16:24:16:44 | get(...) | java.nio.file | Paths | get | (String,String[]) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:20:5:20:68 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | sink | source | | com/github/codeql/test/PublicClass.java:20:24:20:47 | getDefault(...) | java.nio.file | FileSystems | getDefault | () | false | rt.jar | | | source | -| com/github/codeql/test/PublicClass.java:20:24:20:67 | getPath(...) | java.nio.file | FileSystem | getPath | (String,String[]) | true | rt.jar | | sink | source | | com/github/codeql/test/PublicClass.java:20:24:20:67 | getPath(...) | java.nio.file | FileSystem | getPath | (String,String[]) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:24:5:24:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | | com/github/codeql/test/PublicGenericClass.java:7:5:7:27 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | sink | source | diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index dc9844bf8bd9..0bd79dd20291 100644 --- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll @@ -594,6 +594,9 @@ module API { exportedName = "" and result = getAModuleImportRaw(moduleName) } + + /** Gets a sink node that represents instances of `cls`. */ + Node getClassInstance(DataFlow::ClassNode cls) { result = Impl::MkClassInstance(cls) } } /** @@ -1621,6 +1624,7 @@ private predicate exports(string m, DataFlow::Node rhs) { exists(Module mod | mod = importableModule(m) | rhs = mod.(AmdModule).getDefine().getModuleExpr().flow() or + not mod.(ES2015Module).hasBothNamedAndDefaultExports() and exports(m, "default", rhs) or exists(ExportAssignDeclaration assgn | assgn.getTopLevel() = mod | @@ -1634,6 +1638,7 @@ private predicate exports(string m, DataFlow::Node rhs) { /** Holds if module `m` exports `rhs` under the name `prop`. */ private predicate exports(string m, string prop, DataFlow::Node rhs) { exists(ExportDeclaration exp | exp.getEnclosingModule() = importableModule(m) | + not exp.isTypeOnly() and rhs = exp.getSourceNode(prop) or exists(Variable v | diff --git a/javascript/ql/lib/semmle/javascript/Classes.qll b/javascript/ql/lib/semmle/javascript/Classes.qll index c7ad74561bba..f5877a78371b 100644 --- a/javascript/ql/lib/semmle/javascript/Classes.qll +++ b/javascript/ql/lib/semmle/javascript/Classes.qll @@ -516,16 +516,37 @@ class MemberDeclaration extends @property, Documentable { */ predicate hasPublicKeyword() { has_public_keyword(this) } + /** + * Holds if this member is considered private. + * + * This may occur in two cases: + * - it is a TypeScript member annotated with the `private` keyword, or + * - the member has a private name, such as `#foo`, referring to a private field in the class + */ + predicate isPrivate() { this.hasPrivateKeyword() or this.hasPrivateFieldName() } + /** * Holds if this is a TypeScript member annotated with the `private` keyword. */ - predicate isPrivate() { has_private_keyword(this) } + predicate hasPrivateKeyword() { has_private_keyword(this) } /** * Holds if this is a TypeScript member annotated with the `protected` keyword. */ predicate isProtected() { has_protected_keyword(this) } + /** + * Holds if the member has a private name, such as `#foo`, referring to a private field in the class. + * + * For example: + * ```js + * class Foo { + * #method() {} + * } + * ``` + */ + predicate hasPrivateFieldName() { this.getNameExpr().(Label).getName().charAt(0) = "#" } + /** * Gets the expression specifying the name of this member, * or nothing if this is a call signature. diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index d32278371c69..1bdfec7ffe9d 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -39,6 +39,20 @@ class ES2015Module extends Module { // modules are implicitly strict any() } + + /** + * Holds if this module contains both named and `default` exports. + * + * This is used to determine whether a default-import of the module should be reinterpreted + * as a namespace-import, to accommodate the non-standard behavior implemented by some compilers. + * + * When a module has both named and `default` exports, the non-standard interpretation can lead to + * ambiguities, so we only allow the standard interpretation in that case. + */ + predicate hasBothNamedAndDefaultExports() { + hasNamedExports(this) and + hasDefaultExport(this) + } } /** @@ -64,17 +78,6 @@ private predicate hasDefaultExport(ES2015Module mod) { mod.getAnExport().(ExportNamedDeclaration).getASpecifier().getExportedName() = "default" } -/** - * Holds if `mod` contains both named and `default` exports. - * - * This is used to determine whether a default-import of the module should be reinterpreted - * as a namespace-import, to accommodate the non-standard behavior implemented by some compilers. - */ -private predicate hasBothNamedAndDefaultExports(ES2015Module mod) { - hasNamedExports(mod) and - hasDefaultExport(mod) -} - /** * An import declaration. * @@ -131,7 +134,7 @@ class ImportDeclaration extends Stmt, Import, @import_declaration { // For compatibility with the non-standard implementation of default imports, // treat default imports as namespace imports in cases where it can't cause ambiguity // between named exports and the properties of a default-exported object. - not hasBothNamedAndDefaultExports(this.getImportedModule()) and + not this.getImportedModule().(ES2015Module).hasBothNamedAndDefaultExports() and is.getImportedName() = "default" ) or diff --git a/javascript/ql/lib/semmle/javascript/NPM.qll b/javascript/ql/lib/semmle/javascript/NPM.qll index d25934be60b8..b70ff8055b4f 100644 --- a/javascript/ql/lib/semmle/javascript/NPM.qll +++ b/javascript/ql/lib/semmle/javascript/NPM.qll @@ -29,7 +29,8 @@ class PackageJson extends JsonObject { parentDir.getAChildContainer+() = currentDir and pkgNameDiff = currentDir.getAbsolutePath().suffix(parentDir.getAbsolutePath().length()) and not exists(pkgNameDiff.indexOf("/node_modules/")) and - result = parentPkgName + pkgNameDiff + result = parentPkgName + pkgNameDiff and + not parentPkg.isPrivate() ) } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index 473e0aa92dfa..c098c60816e4 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -1693,7 +1693,11 @@ module DataFlow { exists(Expr predExpr, Expr succExpr | pred = valueNode(predExpr) and succ = valueNode(succExpr) | - predExpr = succExpr.(LogicalBinaryExpr).getAnOperand() + predExpr = succExpr.(LogicalOrExpr).getAnOperand() + or + predExpr = succExpr.(NullishCoalescingExpr).getAnOperand() + or + predExpr = succExpr.(LogicalAndExpr).getRightOperand() or predExpr = succExpr.(ConditionalExpr).getABranch() or diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/BasicExprTypeInference.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/BasicExprTypeInference.qll index 49dd598b0ca2..f6474ff31867 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/BasicExprTypeInference.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/BasicExprTypeInference.qll @@ -238,6 +238,26 @@ private class AnalyzedBinaryExpr extends DataFlow::AnalyzedValueNode { } } +pragma[nomagic] +private predicate falsyValue(AbstractValue value) { value.getBooleanValue() = false } + +/** + * Flow analysis for `&&` operators. + */ +private class AnalyzedLogicalAndExpr extends DataFlow::AnalyzedValueNode { + override LogicalAndExpr astNode; + + pragma[nomagic] + private AnalyzedValueNode leftOperand() { result = astNode.getLeftOperand().analyze() } + + override AbstractValue getALocalValue() { + result = super.getALocalValue() + or + result = this.leftOperand().getALocalValue() and + falsyValue(result) + } +} + /** * Gets the `n`th operand of the given `+` or `+=` expression. */ diff --git a/javascript/ql/lib/semmle/javascript/endpoints/EndpointNaming.qll b/javascript/ql/lib/semmle/javascript/endpoints/EndpointNaming.qll new file mode 100644 index 000000000000..257003f57083 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/endpoints/EndpointNaming.qll @@ -0,0 +1,497 @@ +/** + * Provides predicates for generating names for classes and functions that are part + * of the public API of a library. + * + * When possible, we try to use the qualified name by which a class/function can be accessed + * from client code. + * + * However, there are cases where classes and functions can be exposed to client + * code without being accessible as a qualified name. For example; + * ```js + * // 'Foo' is internal, but clients can call its methods, e.g. `getFoo().m()` + * class Foo { + * m() {} + * } + * export function getFoo() { + * return new Foo(); + * } + * + * // Clients can call m() via getObj().m() + * export function getObj() { + * return { + * m() {} + * } + * } + * ``` + * + * In these cases, we try to make up human-readable names for the endpoints. + * We make an effort to make these unambiguous in practice, though this is not always guaranteed. + */ + +private import javascript + +/** Concatenates two access paths. */ +bindingset[x, y] +private string join(string x, string y) { + if x = "" or y = "" then result = x + y else result = x + "." + y +} + +private predicate isPackageExport(API::Node node) { node = API::moduleExport(_) } + +private predicate memberEdge(API::Node pred, API::Node succ) { succ = pred.getAMember() } + +/** Gets the shortest distance from a packaeg export to `nd` in the API graph. */ +private int distanceFromPackageExport(API::Node nd) = + shortestDistances(isPackageExport/1, memberEdge/2)(_, nd, result) + +private predicate isExported(API::Node node) { + isPackageExport(node) + or + exists(API::Node pred | + isExported(pred) and + memberEdge(pred, node) and + not isPrivateLike(node) + ) +} + +/** + * Holds if `node` is a default export that can be reinterpreted as a namespace export, + * because the enclosing module has no named exports. + */ +private predicate defaultExportCanBeInterpretedAsNamespaceExport(API::Node node) { + exists(ES2015Module mod | + node.asSink() = mod.getAnExportedValue("default") and + not mod.hasBothNamedAndDefaultExports() + ) +} + +private predicate isPrivateAssignment(DataFlow::Node node) { + exists(MemberDeclaration decl | + node = decl.getInit().flow() and + decl.isPrivate() + ) + or + exists(DataFlow::PropWrite write | + write.isPrivateField() and + node = write.getRhs() + ) +} + +private predicate isPrivateLike(API::Node node) { isPrivateAssignment(node.asSink()) } + +private API::Node getASuccessor(API::Node node, string name, int badness) { + isExported(node) and + exists(string member | + result = node.getMember(member) and + if member = "default" + then + if defaultExportCanBeInterpretedAsNamespaceExport(node) + then ( + badness = 5 and name = "" + ) else ( + badness = 10 and name = "default" + ) + else ( + name = member and badness = 0 + ) + ) +} + +private API::Node getAPredecessor(API::Node node, string name, int badness) { + node = getASuccessor(result, name, badness) +} + +/** + * Gets the predecessor of `node` to use when constructing a qualified name for it, + * and binds `name` and `badness` corresponding to the label on that edge. + */ +private API::Node getPreferredPredecessor(API::Node node, string name, int badness) { + // For root nodes, we prefer not having a predecessor, as we use the package name. + not isPackageExport(node) and + // Rank predecessors by name-badness, export-distance, and name. + // Since min() can only return a single value, we need a separate min() call per column. + badness = + min(API::Node pred, int b | + pred = getAPredecessor(node, _, b) and + // ensure the preferred predecessor is strictly closer to a root export, even if it means accepting more badness + distanceFromPackageExport(pred) < distanceFromPackageExport(node) + | + b + ) and + result = + min(API::Node pred, string name1 | + pred = getAPredecessor(node, name1, badness) + | + pred order by distanceFromPackageExport(pred), name1 + ) and + name = min(string n | result = getAPredecessor(node, n, badness) | n) +} + +/** + * Holds if `(package, name)` is a potential name to associate with `sink`. + * + * `badness` is bound to the associated badness of the name. + */ +private predicate sinkHasNameCandidate(API::Node sink, string package, string name, int badness) { + sink = API::moduleExport(package) and + name = "" and + badness = 0 + or + exists(API::Node baseNode, string baseName, int baseBadness, string step, int stepBadness | + sinkHasNameCandidate(baseNode, package, baseName, baseBadness) and + baseNode = getPreferredPredecessor(sink, step, stepBadness) and + badness = baseBadness + stepBadness and + name = join(baseName, step) + ) +} + +/** + * Holds if `(package, name)` is the primary name to associate with `sink`. + * + * `badness` is bound to the associated badness of the name. + */ +private predicate sinkHasPrimaryName(API::Node sink, string package, string name, int badness) { + badness = min(int b | sinkHasNameCandidate(sink, _, _, b) | b) and + package = min(string p | sinkHasNameCandidate(sink, p, _, badness) | p) and + name = min(string n | sinkHasNameCandidate(sink, package, n, badness) | n order by n.length(), n) +} + +/** + * Holds if `(package, name)` is the primary name to associate with `node`. + */ +predicate sinkHasPrimaryName(API::Node sink, string package, string name) { + sinkHasPrimaryName(sink, package, name, _) +} + +/** + * Holds if `(package, name)` is an alias for `node`. + * + * This means it is a valid name for it, but was not chosen as the primary name. + */ +private predicate sinkHasAlias(API::Node sink, string package, string name) { + not sinkHasPrimaryName(sink, package, name) and + ( + exists(string baseName, string step | + sinkHasPrimaryName(getAPredecessor(sink, step, _), package, baseName) and + name = join(baseName, step) + ) + or + sink = API::moduleExport(package) and + name = "" + ) +} + +/** Gets a sink node reachable from `node`. */ +bindingset[node] +private API::Node getASinkNode(DataFlow::SourceNode node) { result.getAValueReachingSink() = node } + +/** + * Holds if `node` is a declaration in an externs file. + * + * This is to ensure that functions/classes in externs are not named after a re-export in a package. + */ +private predicate nameFromExterns(DataFlow::Node node, string package, string name, int badness) { + node.getTopLevel().isExterns() and + package = "global" and + node = AccessPath::getAnAssignmentTo(name) and + badness = -10 +} + +bindingset[qualifiedName] +private int getBadnessOfClassName(string qualifiedName) { + if qualifiedName.matches("%.constructor") + then result = 10 + else + if qualifiedName = "" + then result = 5 + else result = 0 +} + +/** Holds if `(package, name)` is a potential name for `cls`, with the given `badness`. */ +private predicate classObjectHasNameCandidate( + DataFlow::ClassNode cls, string package, string name, int badness +) { + // There can be multiple API nodes associated with `cls`. + // For example: + /// + // class C {} + // module.exports.A = C; // first sink + // module.exports.B = C; // second sink + // + exists(int baseBadness | + sinkHasPrimaryName(getASinkNode(cls), package, name, baseBadness) and + badness = baseBadness + getBadnessOfClassName(name) + ) + or + nameFromExterns(cls, package, name, badness) +} + +private predicate classObjectHasPrimaryName( + DataFlow::ClassNode cls, string package, string name, int badness +) { + badness = min(int b | classObjectHasNameCandidate(cls, _, _, b) | b) and + package = min(string p | classObjectHasNameCandidate(cls, p, _, badness) | p) and + name = min(string n | classObjectHasNameCandidate(cls, package, n, badness) | n) +} + +/** Holds if `(package, name)` is the primary name for the class object of `cls`. */ +predicate classObjectHasPrimaryName(DataFlow::ClassNode cls, string package, string name) { + classObjectHasPrimaryName(cls, package, name, _) +} + +/** Holds if an instance of `cls` can be exposed to client code. */ +private predicate hasEscapingInstance(DataFlow::ClassNode cls) { + cls.getAnInstanceReference().flowsTo(any(API::Node n).asSink()) +} + +/** + * Holds if `(package, name)` is a potential name to use for instances of `cls`, with the given `badness`. + */ +private predicate classInstanceHasNameCandidate( + DataFlow::ClassNode cls, string package, string name, int badness +) { + exists(string baseName | + classObjectHasPrimaryName(cls, package, baseName, badness) and + name = join(baseName, "prototype") + ) + or + // In case the class itself is unaccessible, but an instance is exposed via an access path, + // consider using that access path. For example: + // + // class InternalClass {} + // module.exports.foo = new InternalClass(); + // + exists(int baseBadness | + sinkHasPrimaryName(getASinkNode(cls.getAnInstanceReference()), package, name, baseBadness) and + badness = baseBadness + 30 // add penalty, as we prefer to base this on the class name + ) + or + // If neither the class nor its instances are accessible via an access path, but instances of the + // class can still escape via more complex access patterns, resort to a synthesized name. + // For example: + // + // class InternalClass {} + // function foo() { + // return new InternalClass(); + // } + // + hasEscapingInstance(cls) and + exists(string baseName | + InternalModuleNaming::fallbackModuleName(cls.getTopLevel(), package, baseName, badness - 100) and + name = join(baseName, cls.getName()) + ".prototype" + ) +} + +private predicate classInstanceHasPrimaryName( + DataFlow::ClassNode cls, string package, string name, int badness +) { + badness = min(int b | classInstanceHasNameCandidate(cls, _, _, b) | b) and + package = min(string p | classInstanceHasNameCandidate(cls, p, _, badness) | p) and + name = + min(string n | + classInstanceHasNameCandidate(cls, package, n, badness) + | + n order by n.length(), n + ) +} + +/** Holds if `(package, name)` is the primary name to use for instances of `cls`. */ +predicate classInstanceHasPrimaryName(DataFlow::ClassNode cls, string package, string name) { + classInstanceHasPrimaryName(cls, package, name, _) +} + +/** Holds if `(package, name)` is an alias referring to some instance of `cls`. */ +predicate classInstanceHasAlias(DataFlow::ClassNode cls, string package, string name) { + not classInstanceHasPrimaryName(cls, package, name) and + exists(int badness | + classInstanceHasNameCandidate(cls, package, name, badness) and + badness < 100 // Badness 100 is when we start to synthesize names. Do not suggest these as aliases. + ) +} + +private predicate functionHasNameCandidate( + DataFlow::FunctionNode function, string package, string name, int badness +) { + sinkHasPrimaryName(getASinkNode(function), package, name, badness) + or + exists(DataFlow::ClassNode cls | + function = cls.getConstructor() and + classObjectHasPrimaryName(cls, package, name, badness) + or + exists(string baseName, string memberName | + function = cls.getInstanceMethod(memberName) and + classInstanceHasPrimaryName(cls, package, baseName, badness) and + name = join(baseName, memberName) + or + function = cls.getStaticMethod(memberName) and + classObjectHasPrimaryName(cls, package, baseName, badness) and + name = join(baseName, memberName) + ) + ) + or + nameFromExterns(function, package, name, badness) +} + +private predicate functionHasPrimaryName( + DataFlow::FunctionNode function, string package, string name, int badness +) { + badness = min(int b | functionHasNameCandidate(function, _, _, b) | b) and + package = min(string p | functionHasNameCandidate(function, p, _, badness) | p) and + name = + min(string n | + functionHasNameCandidate(function, package, n, badness) + | + n order by n.length(), n + ) +} + +/** + * Holds if `(package, name)` is the primary name for the given `function`. + */ +predicate functionHasPrimaryName(DataFlow::FunctionNode function, string package, string name) { + functionHasPrimaryName(function, package, name, _) +} + +/** + * Holds if `(aliasPackage, aliasName)` is an alias for `(primaryPackage, primaryName)`, + * defined at `aliasDef`. + * + * Only the last component of an access path is reported as an alias, the prefix always + * uses the primary name for that access path. The aliases for the prefix are reported + * as separate tuples. + * + * For example, we might report that `a.b.C` is an alias for `a.b.c`, and that `a.B` is an alias for `a.b`. + * By combining the two aliasing facts, we may conclude that `a.B.C` is an alias for `a.b.c`, but this fact is not + * reported separately. + */ +predicate aliasDefinition( + string primaryPackage, string primaryName, string aliasPackage, string aliasName, + API::Node aliasDef +) { + exists(DataFlow::SourceNode source | + classObjectHasPrimaryName(source, primaryPackage, primaryName) + or + functionHasPrimaryName(source, primaryPackage, primaryName) + | + aliasDef.getAValueReachingSink() = source and + sinkHasPrimaryName(aliasDef, aliasPackage, aliasName, _) and + not ( + primaryPackage = aliasPackage and + primaryName = aliasName + ) + ) + or + sinkHasPrimaryName(aliasDef, primaryPackage, primaryName) and + sinkHasAlias(aliasDef, aliasPackage, aliasName) +} + +/** + * Converts a `(package, name)` pair to a string of form `(package).name`. + */ +bindingset[package, name] +string renderName(string package, string name) { result = join("(" + package + ")", name) } + +/** + * Contains predicates for naming individual modules (i.e. files) inside of a package. + * + * These names are not necessarily part of a package's public API, and so we only used them + * as a fallback when a publicly-accessible access path cannot be found. + */ +private module InternalModuleNaming { + /** Gets the path to `folder` relative to its enclosing non-private `package.json` file. */ + private string getPackageRelativePathFromFolder(Folder folder) { + exists(PackageJson json | + json.getFile() = folder.getFile("package.json") and + not json.isPrivate() and + result = json.getPackageName() + ) + or + not exists(folder.getFile("package.json")) and + result = + getPackageRelativePathFromFolder(folder.getParentContainer()) + "/" + folder.getBaseName() + } + + private string getPackageRelativePath(Module mod) { + exists(PackageJson json, string relativePath | + not json.isPrivate() and + json.getExportedModule(relativePath) = mod and + if relativePath = "." + then result = json.getPackageName() + else result = json.getPackageName() + "/" + relativePath.regexpReplaceAll("^\\./", "") + ) + or + not mod = any(PackageJson json | not json.isPrivate()).getExportedModule(_) and + not mod.isAmbient() and + exists(string folderPath | + folderPath = getPackageRelativePathFromFolder(mod.getFile().getParentContainer()) and + if mod.getName() = "index" + then result = folderPath + else result = folderPath + "/" + mod.getName() + ) + } + + /** Holds if `(package, name)` should be used to refer to code inside `mod`. */ + predicate fallbackModuleName(Module mod, string package, string name, int badness) { + sinkHasPrimaryName(getASinkNode(mod.getDefaultOrBulkExport()), package, name, badness) + or + badness = 50 and + package = getPackageRelativePath(mod) and + name = "" + } +} + +/** + * Contains query predicates for emitting debugging information about endpoint naming. + */ +module Debug { + /** Holds if `node` has multiple preferred predecessors. */ + query predicate ambiguousPreferredPredecessor(API::Node node) { + strictcount(API::Node pred, string name, int badness | + pred = getPreferredPredecessor(node, name, badness) + ) > 1 + } + + /** Holds if the given `node` has multiple primary names. */ + query string ambiguousSinkName(API::Node node) { + strictcount(string package, string name | sinkHasPrimaryName(node, package, name)) > 1 and + result = + concat(string package, string name | + sinkHasPrimaryName(node, package, name) + | + renderName(package, name), ", " + ) + } + + /** Holds if the given `node` has multiple primary names. */ + query string ambiguousClassObjectName(DataFlow::ClassNode node) { + strictcount(string package, string name | classObjectHasPrimaryName(node, package, name)) > 1 and + result = + concat(string package, string name | + classObjectHasPrimaryName(node, package, name) + | + renderName(package, name), ", " + ) + } + + /** Holds if the given `node` has multiple primary names. */ + query string ambiguousClassInstanceName(DataFlow::ClassNode node) { + strictcount(string package, string name | classInstanceHasPrimaryName(node, package, name)) > 1 and + result = + concat(string package, string name | + classInstanceHasPrimaryName(node, package, name) + | + renderName(package, name), ", " + ) + } + + /** Holds if the given `node` has multiple primary names. */ + query string ambiguousFunctionName(DataFlow::FunctionNode node) { + strictcount(string package, string name | functionHasPrimaryName(node, package, name)) > 1 and + result = + concat(string package, string name | + functionHasPrimaryName(node, package, name) + | + renderName(package, name), ", " + ) + } +} diff --git a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql index de8f248d2d4f..fd3914c90232 100644 --- a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +++ b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql @@ -46,7 +46,8 @@ class SpuriousArguments extends Expr { SpuriousArguments() { this = invk.getArgument(maxArity(invk)).asExpr() and - not invk.isIncomplete() + not invk.isIncomplete() and + not invk.getAstNode() instanceof TaggedTemplateExpr } /** diff --git a/javascript/ql/src/change-notes/2024-02-13-block-logical-and-flow.md b/javascript/ql/src/change-notes/2024-02-13-block-logical-and-flow.md new file mode 100644 index 000000000000..2b08e677a26d --- /dev/null +++ b/javascript/ql/src/change-notes/2024-02-13-block-logical-and-flow.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* The left operand of the `&&` operator no longer propagates data flow by default. diff --git a/javascript/ql/test/library-tests/DataFlow/tests.expected b/javascript/ql/test/library-tests/DataFlow/tests.expected index 02bfbe09e2d9..d4c55bdd8a10 100644 --- a/javascript/ql/test/library-tests/DataFlow/tests.expected +++ b/javascript/ql/test/library-tests/DataFlow/tests.expected @@ -1022,7 +1022,6 @@ flowStep | tst.js:4:9:4:12 | "hi" | tst.js:4:5:4:12 | y | | tst.js:9:2:9:2 | x | tst.js:9:1:9:3 | (x) | | tst.js:10:4:10:4 | y | tst.js:10:1:10:4 | x, y | -| tst.js:11:1:11:1 | x | tst.js:11:1:11:6 | x && y | | tst.js:11:1:11:1 | x | tst.js:12:1:12:1 | x | | tst.js:11:1:11:1 | x | tst.js:12:1:12:1 | x | | tst.js:11:6:11:6 | y | tst.js:11:1:11:6 | x && y | diff --git a/javascript/ql/test/library-tests/EndpointNaming/EndpointNaming.expected b/javascript/ql/test/library-tests/EndpointNaming/EndpointNaming.expected new file mode 100644 index 000000000000..e0cc251f9039 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/EndpointNaming.expected @@ -0,0 +1,7 @@ +testFailures +ambiguousPreferredPredecessor +ambiguousSinkName +ambiguousClassObjectName +ambiguousClassInstanceName +ambiguousFunctionName +failures diff --git a/javascript/ql/test/library-tests/EndpointNaming/EndpointNaming.ql b/javascript/ql/test/library-tests/EndpointNaming/EndpointNaming.ql new file mode 100644 index 000000000000..84efa9635347 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/EndpointNaming.ql @@ -0,0 +1,47 @@ +import javascript +import semmle.javascript.RestrictedLocations +import semmle.javascript.Lines +import semmle.javascript.endpoints.EndpointNaming as EndpointNaming +import testUtilities.InlineExpectationsTest +import EndpointNaming::Debug + +module TestConfig implements TestSig { + string getARelevantTag() { result = ["instance", "class", "method", "alias"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(string package, string name | + element = "" and + value = EndpointNaming::renderName(package, name) + | + exists(DataFlow::ClassNode cls | location = cls.getAstNode().getLocation() | + tag = "class" and + EndpointNaming::classObjectHasPrimaryName(cls, package, name) + or + tag = "instance" and + EndpointNaming::classInstanceHasPrimaryName(cls, package, name) + ) + or + exists(DataFlow::FunctionNode function | + not function.getFunction() = any(ConstructorDeclaration decl | decl.isSynthetic()).getBody() and + location = function.getFunction().getLocation() and + tag = "method" and + EndpointNaming::functionHasPrimaryName(function, package, name) + ) + ) + or + element = "" and + tag = "alias" and + exists( + API::Node aliasDef, string primaryPackage, string primaryName, string aliasPackage, + string aliasName + | + EndpointNaming::aliasDefinition(primaryPackage, primaryName, aliasPackage, aliasName, aliasDef) and + value = + EndpointNaming::renderName(aliasPackage, aliasName) + "==" + + EndpointNaming::renderName(primaryPackage, primaryName) and + location = aliasDef.asSink().asExpr().getLocation() + ) + } +} + +import MakeTest diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack1/main.js b/javascript/ql/test/library-tests/EndpointNaming/pack1/main.js new file mode 100644 index 000000000000..ead8000ff147 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack1/main.js @@ -0,0 +1,13 @@ +export class PublicClass {} // $ class=(pack1).PublicClass instance=(pack1).PublicClass.prototype + +class PrivateClass {} + +export const ExportedConst = class ExportedConstClass {} // $ class=(pack1).ExportedConst instance=(pack1).ExportedConst.prototype + +class ClassWithEscapingInstance {} // $ instance=(pack1).ClassWithEscapingInstance.prototype + +export function getEscapingInstance() { + return new ClassWithEscapingInstance(); +} // $ method=(pack1).getEscapingInstance + +export function publicFunction() {} // $ method=(pack1).publicFunction diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack1/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack1/package.json new file mode 100644 index 000000000000..da2dbb94dd1b --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack1/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack1", + "main": "./main.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack10/foo.js b/javascript/ql/test/library-tests/EndpointNaming/pack10/foo.js new file mode 100644 index 000000000000..3495843defeb --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack10/foo.js @@ -0,0 +1 @@ +export default class FooClass {} // $ class=(pack10).Foo instance=(pack10).Foo.prototype diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack10/index.js b/javascript/ql/test/library-tests/EndpointNaming/pack10/index.js new file mode 100644 index 000000000000..59bad5c3ecb5 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack10/index.js @@ -0,0 +1,3 @@ +import { default as Foo } from "./foo"; + +export { Foo } diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack10/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack10/package.json new file mode 100644 index 000000000000..977ffaf282b8 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack10/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack10", + "main": "./index.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack2/lib.js b/javascript/ql/test/library-tests/EndpointNaming/pack2/lib.js new file mode 100644 index 000000000000..559dd4877a37 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack2/lib.js @@ -0,0 +1,6 @@ +class AmbiguousClass { + instanceMethod(foo) {} // $ method=(pack2).lib.LibClass.prototype.instanceMethod +} // $ class=(pack2).lib.LibClass instance=(pack2).lib.LibClass.prototype + +export default AmbiguousClass; // $ alias=(pack2).lib.default==(pack2).lib.LibClass +export { AmbiguousClass as LibClass } diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack2/main.js b/javascript/ql/test/library-tests/EndpointNaming/pack2/main.js new file mode 100644 index 000000000000..5906a1170dd9 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack2/main.js @@ -0,0 +1,9 @@ +class AmbiguousClass { + instanceMethod() {} // $ method=(pack2).MainClass.prototype.instanceMethod +} // $ class=(pack2).MainClass instance=(pack2).MainClass.prototype + +export default AmbiguousClass; // $ alias=(pack2).default==(pack2).MainClass +export { AmbiguousClass as MainClass } + +import * as lib from "./lib"; +export { lib } diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack2/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack2/package.json new file mode 100644 index 000000000000..b359913f6395 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack2/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack2", + "main": "./main.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack3/lib.js b/javascript/ql/test/library-tests/EndpointNaming/pack3/lib.js new file mode 100644 index 000000000000..c99db7724bff --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack3/lib.js @@ -0,0 +1 @@ +export default function(x,y,z) {} // $ method=(pack3).libFunction alias=(pack3).libFunction.default==(pack3).libFunction diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack3/main.js b/javascript/ql/test/library-tests/EndpointNaming/pack3/main.js new file mode 100644 index 000000000000..98016d68737b --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack3/main.js @@ -0,0 +1,7 @@ +function ambiguousFunction(x, y, z) {} // $ method=(pack3).namedFunction + +export default ambiguousFunction; // $ alias=(pack3).default==(pack3).namedFunction +export { ambiguousFunction as namedFunction }; + +import libFunction from "./lib"; +export { libFunction }; diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack3/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack3/package.json new file mode 100644 index 000000000000..0ca9a6083320 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack3/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack3", + "main": "./main.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack4/index.js b/javascript/ql/test/library-tests/EndpointNaming/pack4/index.js new file mode 100644 index 000000000000..15143e30bf61 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack4/index.js @@ -0,0 +1 @@ +export default class C {} // $ class=(pack4) instance=(pack4).prototype diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack4/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack4/package.json new file mode 100644 index 000000000000..fb63d98f8abd --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack4/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack4", + "main": "./index.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack5/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack5/package.json new file mode 100644 index 000000000000..d6f924e72cad --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack5/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack5", + "main": "./dist/index.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack5/src/index.js b/javascript/ql/test/library-tests/EndpointNaming/pack5/src/index.js new file mode 100644 index 000000000000..d96538407862 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack5/src/index.js @@ -0,0 +1 @@ +export default class C {} // $ class=(pack5) instance=(pack5).prototype diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack6/index.js b/javascript/ql/test/library-tests/EndpointNaming/pack6/index.js new file mode 100644 index 000000000000..e15b5319858b --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack6/index.js @@ -0,0 +1,6 @@ +class C { + instanceMethod() {} // $ method=(pack6).instanceMethod + static staticMethod() {} // not accessible +} // $ instance=(pack6) + +export default new C(); diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack6/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack6/package.json new file mode 100644 index 000000000000..c4daea408e33 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack6/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack6", + "main": "./index.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack7/index.js b/javascript/ql/test/library-tests/EndpointNaming/pack7/index.js new file mode 100644 index 000000000000..b56b32095d48 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack7/index.js @@ -0,0 +1,6 @@ +export class D {} // $ class=(pack7).D instance=(pack7).D.prototype + +// In this case we are forced to include ".default" to avoid ambiguity with class D above. +export default { + D: class {} // $ class=(pack7).default.D instance=(pack7).default.D.prototype +}; diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack7/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack7/package.json new file mode 100644 index 000000000000..a43ae4f59034 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack7/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack7", + "main": "./index.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack8/foo.js b/javascript/ql/test/library-tests/EndpointNaming/pack8/foo.js new file mode 100644 index 000000000000..de14ea27b899 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack8/foo.js @@ -0,0 +1,5 @@ +class Foo {} // $ class=(pack8).Foo instance=(pack8).Foo.prototype + +module.exports = Foo; +module.exports.default = Foo; // $ alias=(pack8).Foo.default==(pack8).Foo +module.exports.Foo = Foo; // $ alias=(pack8).Foo.Foo==(pack8).Foo diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack8/index.js b/javascript/ql/test/library-tests/EndpointNaming/pack8/index.js new file mode 100644 index 000000000000..3cf0920f4bf0 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack8/index.js @@ -0,0 +1,5 @@ +class Main {} // $ class=(pack8) instance=(pack8).prototype + +Main.Foo = require('./foo'); + +module.exports = Main; diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack8/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack8/package.json new file mode 100644 index 000000000000..09d57a3348e2 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack8/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack8", + "main": "./index.js" +} diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack9/foo.js b/javascript/ql/test/library-tests/EndpointNaming/pack9/foo.js new file mode 100644 index 000000000000..55d14ad5b523 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack9/foo.js @@ -0,0 +1 @@ +export class Foo {} // $ instance=(pack9/foo).Foo.prototype diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack9/index.ts b/javascript/ql/test/library-tests/EndpointNaming/pack9/index.ts new file mode 100644 index 000000000000..65c783aa4991 --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack9/index.ts @@ -0,0 +1,9 @@ +// Only the type is exposed. For the time being we do not consider type-only declarations or .d.ts files +// when naming classes. +export type { Foo } from "./foo"; + +import * as foo from "./foo"; + +export function expose() { + return new foo.Foo(); // expose an instance of Foo but not the class +} // $ method=(pack9).expose diff --git a/javascript/ql/test/library-tests/EndpointNaming/pack9/package.json b/javascript/ql/test/library-tests/EndpointNaming/pack9/package.json new file mode 100644 index 000000000000..4e69ff9e365b --- /dev/null +++ b/javascript/ql/test/library-tests/EndpointNaming/pack9/package.json @@ -0,0 +1,4 @@ +{ + "name": "pack9", + "main": "./index.js" +} diff --git a/javascript/ql/test/library-tests/TaintTracking/BasicTaintTracking.expected b/javascript/ql/test/library-tests/TaintTracking/BasicTaintTracking.expected index 74095771abb5..3856d2ae6899 100644 --- a/javascript/ql/test/library-tests/TaintTracking/BasicTaintTracking.expected +++ b/javascript/ql/test/library-tests/TaintTracking/BasicTaintTracking.expected @@ -154,6 +154,7 @@ typeInferenceMismatch | json-stringify.js:2:16:2:23 | source() | json-stringify.js:42:8:42:51 | JSON.st ... urce))) | | json-stringify.js:2:16:2:23 | source() | json-stringify.js:45:8:45:23 | fastJson(source) | | json-stringify.js:3:15:3:22 | source() | json-stringify.js:8:8:8:31 | jsonStr ... (taint) | +| logical-and.js:2:17:2:24 | source() | logical-and.js:4:10:4:24 | "safe" && taint | | nested-props.js:4:13:4:20 | source() | nested-props.js:5:10:5:14 | obj.x | | nested-props.js:9:18:9:25 | source() | nested-props.js:10:10:10:16 | obj.x.y | | nested-props.js:35:13:35:20 | source() | nested-props.js:36:10:36:20 | doLoad(obj) | diff --git a/javascript/ql/test/library-tests/TaintTracking/DataFlowTracking.expected b/javascript/ql/test/library-tests/TaintTracking/DataFlowTracking.expected index 77a5cc33a150..33a27661ecd1 100644 --- a/javascript/ql/test/library-tests/TaintTracking/DataFlowTracking.expected +++ b/javascript/ql/test/library-tests/TaintTracking/DataFlowTracking.expected @@ -73,6 +73,7 @@ | importedReactComponent.jsx:4:40:4:47 | source() | exportedReactComponent.jsx:2:10:2:19 | props.text | | indexOf.js:4:11:4:18 | source() | indexOf.js:9:10:9:10 | x | | indexOf.js:4:11:4:18 | source() | indexOf.js:13:10:13:10 | x | +| logical-and.js:2:17:2:24 | source() | logical-and.js:4:10:4:24 | "safe" && taint | | nested-props.js:4:13:4:20 | source() | nested-props.js:5:10:5:14 | obj.x | | nested-props.js:9:18:9:25 | source() | nested-props.js:10:10:10:16 | obj.x.y | | nested-props.js:35:13:35:20 | source() | nested-props.js:36:10:36:20 | doLoad(obj) | diff --git a/javascript/ql/test/library-tests/TaintTracking/logical-and.js b/javascript/ql/test/library-tests/TaintTracking/logical-and.js new file mode 100644 index 000000000000..b7026928c7a4 --- /dev/null +++ b/javascript/ql/test/library-tests/TaintTracking/logical-and.js @@ -0,0 +1,6 @@ +function test() { + var taint = source(); + + sink("safe" && taint); // NOT OK + sink(taint && "safe"); // OK +} diff --git a/javascript/ql/test/qlpack.yml b/javascript/ql/test/qlpack.yml index 8976782483a8..df7e46f5df76 100644 --- a/javascript/ql/test/qlpack.yml +++ b/javascript/ql/test/qlpack.yml @@ -3,6 +3,7 @@ groups: [javascript, test] dependencies: codeql/javascript-all: ${workspace} codeql/javascript-queries: ${workspace} + codeql/util: ${workspace} extractor: javascript tests: . warnOnImplicitThis: true diff --git a/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/tst.js b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/tst.js index 13877ff1ddac..1caa88564a1a 100644 --- a/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/tst.js +++ b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/tst.js @@ -129,4 +129,13 @@ function sum2() { } // OK -sum2(1, 2, 3); \ No newline at end of file +sum2(1, 2, 3); + +const $ = function (x, arr) { + console.log(x, arr); +}; + +// OK +async function tagThing(repoUrl, directory) { + await $`git clone ${repoUrl} ${directory}`; +} diff --git a/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected b/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected index cd687a49c6ca..f805843b11bb 100644 --- a/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected +++ b/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected @@ -18,6 +18,7 @@ | UselessConditional.js:94:16:94:16 | x | This use of variable 'x' always evaluates to false. | | UselessConditional.js:100:13:100:24 | true && true | This expression always evaluates to true. | | UselessConditional.js:101:18:101:18 | x | This use of variable 'x' always evaluates to false. | +| UselessConditional.js:102:13:102:20 | y && (x) | This expression always evaluates to false. | | UselessConditional.js:102:19:102:19 | x | This use of variable 'x' always evaluates to false. | | UselessConditional.js:103:23:103:23 | x | This use of variable 'x' always evaluates to false. | | UselessConditional.js:109:15:109:16 | {} | This expression always evaluates to true. | diff --git a/javascript/ql/test/testUtilities/InlineExpectationsTest.qll b/javascript/ql/test/testUtilities/InlineExpectationsTest.qll new file mode 100644 index 000000000000..b1953314078a --- /dev/null +++ b/javascript/ql/test/testUtilities/InlineExpectationsTest.qll @@ -0,0 +1,8 @@ +/** + * Inline expectation tests for JS. + * See `shared/util/codeql/util/test/InlineExpectationsTest.qll` + */ + +private import codeql.util.test.InlineExpectationsTest +private import internal.InlineExpectationsTestImpl +import Make diff --git a/javascript/ql/test/testUtilities/internal/InlineExpectationsTestImpl.qll b/javascript/ql/test/testUtilities/internal/InlineExpectationsTestImpl.qll new file mode 100644 index 000000000000..d1de2866b105 --- /dev/null +++ b/javascript/ql/test/testUtilities/internal/InlineExpectationsTestImpl.qll @@ -0,0 +1,12 @@ +private import javascript as JS +private import codeql.util.test.InlineExpectationsTest + +module Impl implements InlineExpectationsTestSig { + private import javascript + + class ExpectationComment extends LineComment { + string getContents() { result = this.getText() } + } + + class Location = JS::Location; +} diff --git a/python/BUILD.bazel b/python/BUILD.bazel index 7905f5b4927c..e6d1387e4c27 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -1,3 +1,5 @@ +load("@rules_pkg//:mappings.bzl", "pkg_filegroup", "pkg_files") + package(default_visibility = ["//visibility:public"]) alias( @@ -9,3 +11,20 @@ alias( name = "dbscheme-stats", actual = "//python/ql/lib:dbscheme-stats", ) + +pkg_files( + name = "dbscheme-group", + srcs = [ + ":dbscheme", + ":dbscheme-stats", + ], + strip_prefix = None, +) + +pkg_filegroup( + name = "db-files", + srcs = [ + ":dbscheme-group", + "//python/downgrades", + ], +) diff --git a/python/downgrades/BUILD.bazel b/python/downgrades/BUILD.bazel new file mode 100644 index 000000000000..924ff12ff306 --- /dev/null +++ b/python/downgrades/BUILD.bazel @@ -0,0 +1,12 @@ +load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") + +pkg_files( + name = "downgrades", + srcs = glob( + ["**"], + exclude = ["BUILD.bazel"], + ), + prefix = "downgrades", + strip_prefix = strip_prefix.from_pkg(), + visibility = ["//python:__pkg__"], +) diff --git a/python/ql/lib/change-notes/2024-01-29-psycopg-modeling.md b/python/ql/lib/change-notes/2024-01-29-psycopg-modeling.md new file mode 100644 index 000000000000..007cde7fb347 --- /dev/null +++ b/python/ql/lib/change-notes/2024-01-29-psycopg-modeling.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added modeling of the `psycopg` PyPI package as a SQL database library. diff --git a/python/ql/lib/semmle/python/Frameworks.qll b/python/ql/lib/semmle/python/Frameworks.qll index 801a51008ecc..a6288dadc111 100644 --- a/python/ql/lib/semmle/python/Frameworks.qll +++ b/python/ql/lib/semmle/python/Frameworks.qll @@ -48,6 +48,7 @@ private import semmle.python.frameworks.Oracledb private import semmle.python.frameworks.Pandas private import semmle.python.frameworks.Peewee private import semmle.python.frameworks.Phoenixdb +private import semmle.python.frameworks.Psycopg private import semmle.python.frameworks.Psycopg2 private import semmle.python.frameworks.Pycurl private import semmle.python.frameworks.Pydantic diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index c9fb086ea49d..c11e0cde64dc 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -474,7 +474,7 @@ import StepRelationTransformations predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { simpleLocalFlowStepForTypetracking(nodeFrom, nodeTo) or - summaryFlowSteps(nodeFrom, nodeTo) + summaryLocalStep(nodeFrom, nodeTo) or variableCaptureLocalFlowStep(nodeFrom, nodeTo) } @@ -495,10 +495,6 @@ private predicate summaryLocalStep(Node nodeFrom, Node nodeTo) { nodeTo.(FlowSummaryNode).getSummaryNode(), true) } -predicate summaryFlowSteps(Node nodeFrom, Node nodeTo) { - IncludePostUpdateFlow::step/2>::step(nodeFrom, nodeTo) -} - predicate variableCaptureLocalFlowStep(Node nodeFrom, Node nodeTo) { // Blindly applying use-use flow can result in a node that steps to itself, for // example in while-loops. To uphold dataflow consistency checks, we don't want @@ -983,6 +979,8 @@ predicate clearsContent(Node n, ContentSet c) { FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) or dictSplatParameterNodeClearStep(n, c) + or + VariableCapture::clearsContent(n, c) } /** diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/VariableCapture.qll b/python/ql/lib/semmle/python/dataflow/new/internal/VariableCapture.qll index dd4d3f038677..f1ba86344a49 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/VariableCapture.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/VariableCapture.qll @@ -144,6 +144,10 @@ predicate readStep(Node nodeFrom, CapturedVariableContent c, Node nodeTo) { Flow::readStep(asClosureNode(nodeFrom), c.getVariable(), asClosureNode(nodeTo)) } +predicate clearsContent(Node node, CapturedVariableContent c) { + Flow::clearsContent(asClosureNode(node), c.getVariable()) +} + predicate valueStep(Node nodeFrom, Node nodeTo) { Flow::localFlowStep(asClosureNode(nodeFrom), asClosureNode(nodeTo)) } diff --git a/python/ql/lib/semmle/python/frameworks/Psycopg.qll b/python/ql/lib/semmle/python/frameworks/Psycopg.qll new file mode 100644 index 000000000000..10d4609aaaff --- /dev/null +++ b/python/ql/lib/semmle/python/frameworks/Psycopg.qll @@ -0,0 +1,32 @@ +/** + * Provides classes modeling security-relevant aspects of the `psycopg` PyPI package. + * See + * - https://www.psycopg.org/psycopg3/docs/ + * - https://pypi.org/project/psycopg/ + */ + +private import python +private import semmle.python.dataflow.new.DataFlow +private import semmle.python.dataflow.new.RemoteFlowSources +private import semmle.python.Concepts +private import semmle.python.ApiGraphs +private import semmle.python.frameworks.PEP249 + +/** + * Provides models for the `psycopg` PyPI package. + * See + * - https://www.psycopg.org/psycopg3/docs/ + * - https://pypi.org/project/psycopg/ + */ +private module Psycopg { + // --------------------------------------------------------------------------- + // Psycopg + // --------------------------------------------------------------------------- + /** + * A model of `psycopg` as a module that implements PEP 249, providing ways to execute SQL statements + * against a database. + */ + class Psycopg extends PEP249::PEP249ModuleApiNode { + Psycopg() { this = API::moduleImport("psycopg") } + } +} diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.expected b/python/ql/test/experimental/dataflow/summaries/summaries.expected index d7b64ceaf1f8..a1f354a654ff 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.expected +++ b/python/ql/test/experimental/dataflow/summaries/summaries.expected @@ -1,44 +1,44 @@ edges -| summaries.py:32:1:32:7 | ControlFlowNode for tainted | summaries.py:33:6:33:12 | ControlFlowNode for tainted | -| summaries.py:32:11:32:26 | ControlFlowNode for identity() | summaries.py:32:1:32:7 | ControlFlowNode for tainted | -| summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:32:11:32:26 | ControlFlowNode for identity() | -| summaries.py:36:1:36:14 | ControlFlowNode for tainted_lambda | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | -| summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | summaries.py:36:1:36:14 | ControlFlowNode for tainted_lambda | -| summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | -| summaries.py:44:1:44:12 | ControlFlowNode for tainted_list | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | -| summaries.py:44:1:44:12 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | -| summaries.py:44:16:44:33 | ControlFlowNode for reversed() | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list | -| summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list [List element] | -| summaries.py:44:25:44:32 | ControlFlowNode for List | summaries.py:44:16:44:33 | ControlFlowNode for reversed() | -| summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | -| summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List | -| summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | -| summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | -| summaries.py:51:1:51:14 | ControlFlowNode for tainted_mapped [List element] | summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | -| summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | summaries.py:51:1:51:14 | ControlFlowNode for tainted_mapped [List element] | -| summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | -| summaries.py:51:39:51:44 | ControlFlowNode for SOURCE | summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | -| summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | -| summaries.py:57:1:57:23 | ControlFlowNode for tainted_mapped_explicit [List element] | summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | -| summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | summaries.py:57:1:57:23 | ControlFlowNode for tainted_mapped_explicit [List element] | -| summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | -| summaries.py:57:56:57:61 | ControlFlowNode for SOURCE | summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | -| summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | summaries.py:58:6:58:31 | ControlFlowNode for Subscript | -| summaries.py:60:1:60:22 | ControlFlowNode for tainted_mapped_summary [List element] | summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | -| summaries.py:60:26:60:53 | ControlFlowNode for list_map() [List element] | summaries.py:60:1:60:22 | ControlFlowNode for tainted_mapped_summary [List element] | -| summaries.py:60:45:60:52 | ControlFlowNode for List [List element] | summaries.py:60:26:60:53 | ControlFlowNode for list_map() [List element] | -| summaries.py:60:46:60:51 | ControlFlowNode for SOURCE | summaries.py:60:45:60:52 | ControlFlowNode for List [List element] | -| summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | -| summaries.py:63:1:63:12 | ControlFlowNode for tainted_list [List element] | summaries.py:64:6:64:17 | ControlFlowNode for tainted_list [List element] | -| summaries.py:63:16:63:41 | ControlFlowNode for append_to_list() [List element] | summaries.py:63:1:63:12 | ControlFlowNode for tainted_list [List element] | -| summaries.py:63:35:63:40 | ControlFlowNode for SOURCE | summaries.py:63:16:63:41 | ControlFlowNode for append_to_list() [List element] | -| summaries.py:64:6:64:17 | ControlFlowNode for tainted_list [List element] | summaries.py:64:6:64:20 | ControlFlowNode for Subscript | -| summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist | summaries.py:68:6:68:26 | ControlFlowNode for Subscript | -| summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist [List element] | summaries.py:68:6:68:23 | ControlFlowNode for tainted_resultlist [List element] | -| summaries.py:67:22:67:39 | ControlFlowNode for json_loads() [List element] | summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist [List element] | -| summaries.py:67:33:67:38 | ControlFlowNode for SOURCE | summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist | -| summaries.py:67:33:67:38 | ControlFlowNode for SOURCE | summaries.py:67:22:67:39 | ControlFlowNode for json_loads() [List element] | -| summaries.py:68:6:68:23 | ControlFlowNode for tainted_resultlist [List element] | summaries.py:68:6:68:26 | ControlFlowNode for Subscript | +| summaries.py:32:1:32:7 | ControlFlowNode for tainted | summaries.py:33:6:33:12 | ControlFlowNode for tainted | provenance | | +| summaries.py:32:11:32:26 | ControlFlowNode for identity() | summaries.py:32:1:32:7 | ControlFlowNode for tainted | provenance | | +| summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:32:11:32:26 | ControlFlowNode for identity() | provenance | | +| summaries.py:36:1:36:14 | ControlFlowNode for tainted_lambda | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | provenance | | +| summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | summaries.py:36:1:36:14 | ControlFlowNode for tainted_lambda | provenance | | +| summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | provenance | | +| summaries.py:44:1:44:12 | ControlFlowNode for tainted_list | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | provenance | | +| summaries.py:44:1:44:12 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | provenance | | +| summaries.py:44:16:44:33 | ControlFlowNode for reversed() | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list | provenance | | +| summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list [List element] | provenance | | +| summaries.py:44:25:44:32 | ControlFlowNode for List | summaries.py:44:16:44:33 | ControlFlowNode for reversed() | provenance | | +| summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | summaries.py:44:16:44:33 | ControlFlowNode for reversed() [List element] | provenance | | +| summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List | provenance | | +| summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | provenance | | +| summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | provenance | | +| summaries.py:51:1:51:14 | ControlFlowNode for tainted_mapped [List element] | summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | provenance | | +| summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | summaries.py:51:1:51:14 | ControlFlowNode for tainted_mapped [List element] | provenance | | +| summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | provenance | | +| summaries.py:51:39:51:44 | ControlFlowNode for SOURCE | summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | provenance | | +| summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | provenance | | +| summaries.py:57:1:57:23 | ControlFlowNode for tainted_mapped_explicit [List element] | summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | provenance | | +| summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | summaries.py:57:1:57:23 | ControlFlowNode for tainted_mapped_explicit [List element] | provenance | | +| summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | provenance | | +| summaries.py:57:56:57:61 | ControlFlowNode for SOURCE | summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | provenance | | +| summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | summaries.py:58:6:58:31 | ControlFlowNode for Subscript | provenance | | +| summaries.py:60:1:60:22 | ControlFlowNode for tainted_mapped_summary [List element] | summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | provenance | | +| summaries.py:60:26:60:53 | ControlFlowNode for list_map() [List element] | summaries.py:60:1:60:22 | ControlFlowNode for tainted_mapped_summary [List element] | provenance | | +| summaries.py:60:45:60:52 | ControlFlowNode for List [List element] | summaries.py:60:26:60:53 | ControlFlowNode for list_map() [List element] | provenance | | +| summaries.py:60:46:60:51 | ControlFlowNode for SOURCE | summaries.py:60:45:60:52 | ControlFlowNode for List [List element] | provenance | | +| summaries.py:61:6:61:27 | ControlFlowNode for tainted_mapped_summary [List element] | summaries.py:61:6:61:30 | ControlFlowNode for Subscript | provenance | | +| summaries.py:63:1:63:12 | ControlFlowNode for tainted_list [List element] | summaries.py:64:6:64:17 | ControlFlowNode for tainted_list [List element] | provenance | | +| summaries.py:63:16:63:41 | ControlFlowNode for append_to_list() [List element] | summaries.py:63:1:63:12 | ControlFlowNode for tainted_list [List element] | provenance | | +| summaries.py:63:35:63:40 | ControlFlowNode for SOURCE | summaries.py:63:16:63:41 | ControlFlowNode for append_to_list() [List element] | provenance | | +| summaries.py:64:6:64:17 | ControlFlowNode for tainted_list [List element] | summaries.py:64:6:64:20 | ControlFlowNode for Subscript | provenance | | +| summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist | summaries.py:68:6:68:26 | ControlFlowNode for Subscript | provenance | | +| summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist [List element] | summaries.py:68:6:68:23 | ControlFlowNode for tainted_resultlist [List element] | provenance | | +| summaries.py:67:22:67:39 | ControlFlowNode for json_loads() [List element] | summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist [List element] | provenance | | +| summaries.py:67:33:67:38 | ControlFlowNode for SOURCE | summaries.py:67:1:67:18 | ControlFlowNode for tainted_resultlist | provenance | | +| summaries.py:67:33:67:38 | ControlFlowNode for SOURCE | summaries.py:67:22:67:39 | ControlFlowNode for json_loads() [List element] | provenance | | +| summaries.py:68:6:68:23 | ControlFlowNode for tainted_resultlist [List element] | summaries.py:68:6:68:26 | ControlFlowNode for Subscript | provenance | | nodes | summaries.py:32:1:32:7 | ControlFlowNode for tainted | semmle.label | ControlFlowNode for tainted | | summaries.py:32:11:32:26 | ControlFlowNode for identity() | semmle.label | ControlFlowNode for identity() | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/TarSlip.expected b/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/TarSlip.expected index d785d0e54601..b96f44e358bb 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/TarSlip.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/TarSlip.expected @@ -1,89 +1,89 @@ edges -| TarSlipImprov.py:15:1:15:3 | ControlFlowNode for tar | TarSlipImprov.py:17:5:17:10 | ControlFlowNode for member | -| TarSlipImprov.py:15:7:15:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:15:1:15:3 | ControlFlowNode for tar | -| TarSlipImprov.py:17:5:17:10 | ControlFlowNode for member | TarSlipImprov.py:20:19:20:24 | ControlFlowNode for member | -| TarSlipImprov.py:20:5:20:10 | [post] ControlFlowNode for result | TarSlipImprov.py:22:35:22:40 | ControlFlowNode for result | -| TarSlipImprov.py:20:19:20:24 | ControlFlowNode for member | TarSlipImprov.py:20:5:20:10 | [post] ControlFlowNode for result | -| TarSlipImprov.py:26:21:26:27 | ControlFlowNode for tarfile | TarSlipImprov.py:28:9:28:14 | ControlFlowNode for member | -| TarSlipImprov.py:28:9:28:14 | ControlFlowNode for member | TarSlipImprov.py:35:23:35:28 | ControlFlowNode for member | -| TarSlipImprov.py:35:9:35:14 | [post] ControlFlowNode for result | TarSlipImprov.py:36:12:36:17 | ControlFlowNode for result | -| TarSlipImprov.py:35:23:35:28 | ControlFlowNode for member | TarSlipImprov.py:35:9:35:14 | [post] ControlFlowNode for result | -| TarSlipImprov.py:38:1:38:3 | ControlFlowNode for tar | TarSlipImprov.py:39:65:39:67 | ControlFlowNode for tar | -| TarSlipImprov.py:38:7:38:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:38:1:38:3 | ControlFlowNode for tar | -| TarSlipImprov.py:39:65:39:67 | ControlFlowNode for tar | TarSlipImprov.py:26:21:26:27 | ControlFlowNode for tarfile | -| TarSlipImprov.py:39:65:39:67 | ControlFlowNode for tar | TarSlipImprov.py:39:49:39:68 | ControlFlowNode for members_filter1() | -| TarSlipImprov.py:43:6:43:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:43:43:43:45 | ControlFlowNode for tar | -| TarSlipImprov.py:43:43:43:45 | ControlFlowNode for tar | TarSlipImprov.py:44:9:44:13 | ControlFlowNode for entry | -| TarSlipImprov.py:44:9:44:13 | ControlFlowNode for entry | TarSlipImprov.py:47:21:47:25 | ControlFlowNode for entry | -| TarSlipImprov.py:54:6:54:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:54:43:54:45 | ControlFlowNode for tar | -| TarSlipImprov.py:54:43:54:45 | ControlFlowNode for tar | TarSlipImprov.py:56:9:56:13 | ControlFlowNode for entry | -| TarSlipImprov.py:56:9:56:13 | ControlFlowNode for entry | TarSlipImprov.py:58:21:58:25 | ControlFlowNode for entry | -| TarSlipImprov.py:88:6:88:43 | ControlFlowNode for Attribute() | TarSlipImprov.py:88:48:88:50 | ControlFlowNode for tar | -| TarSlipImprov.py:88:48:88:50 | ControlFlowNode for tar | TarSlipImprov.py:91:5:91:7 | ControlFlowNode for tar | -| TarSlipImprov.py:111:1:111:3 | ControlFlowNode for tar | TarSlipImprov.py:115:9:115:11 | ControlFlowNode for tar | -| TarSlipImprov.py:111:7:111:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:111:1:111:3 | ControlFlowNode for tar | -| TarSlipImprov.py:123:6:123:29 | ControlFlowNode for Attribute() | TarSlipImprov.py:123:34:123:36 | ControlFlowNode for tar | -| TarSlipImprov.py:123:34:123:36 | ControlFlowNode for tar | TarSlipImprov.py:124:9:124:13 | ControlFlowNode for entry | -| TarSlipImprov.py:124:9:124:13 | ControlFlowNode for entry | TarSlipImprov.py:125:36:125:40 | ControlFlowNode for entry | -| TarSlipImprov.py:129:6:129:26 | ControlFlowNode for Attribute() | TarSlipImprov.py:129:31:129:33 | ControlFlowNode for tar | -| TarSlipImprov.py:129:31:129:33 | ControlFlowNode for tar | TarSlipImprov.py:130:5:130:7 | ControlFlowNode for tar | -| TarSlipImprov.py:133:1:133:3 | ControlFlowNode for tar | TarSlipImprov.py:134:1:134:3 | ControlFlowNode for tar | -| TarSlipImprov.py:133:7:133:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:133:1:133:3 | ControlFlowNode for tar | -| TarSlipImprov.py:141:6:141:29 | ControlFlowNode for Attribute() | TarSlipImprov.py:141:34:141:36 | ControlFlowNode for tar | -| TarSlipImprov.py:141:34:141:36 | ControlFlowNode for tar | TarSlipImprov.py:142:9:142:13 | ControlFlowNode for entry | -| TarSlipImprov.py:142:9:142:13 | ControlFlowNode for entry | TarSlipImprov.py:143:36:143:40 | ControlFlowNode for entry | -| TarSlipImprov.py:151:14:151:50 | ControlFlowNode for closing() | TarSlipImprov.py:151:55:151:56 | ControlFlowNode for tf | -| TarSlipImprov.py:151:22:151:49 | ControlFlowNode for Attribute() | TarSlipImprov.py:151:14:151:50 | ControlFlowNode for closing() | -| TarSlipImprov.py:151:55:151:56 | ControlFlowNode for tf | TarSlipImprov.py:152:19:152:20 | ControlFlowNode for tf | -| TarSlipImprov.py:152:19:152:20 | ControlFlowNode for tf | TarSlipImprov.py:157:18:157:40 | ControlFlowNode for py2_tarxz() | -| TarSlipImprov.py:157:9:157:14 | ControlFlowNode for tar_cm | TarSlipImprov.py:162:20:162:23 | ControlFlowNode for tarc | -| TarSlipImprov.py:157:18:157:40 | ControlFlowNode for py2_tarxz() | TarSlipImprov.py:157:9:157:14 | ControlFlowNode for tar_cm | -| TarSlipImprov.py:159:9:159:14 | ControlFlowNode for tar_cm | TarSlipImprov.py:162:20:162:23 | ControlFlowNode for tarc | -| TarSlipImprov.py:159:18:159:52 | ControlFlowNode for closing() | TarSlipImprov.py:159:9:159:14 | ControlFlowNode for tar_cm | -| TarSlipImprov.py:159:26:159:51 | ControlFlowNode for Attribute() | TarSlipImprov.py:159:18:159:52 | ControlFlowNode for closing() | -| TarSlipImprov.py:162:20:162:23 | ControlFlowNode for tarc | TarSlipImprov.py:169:9:169:12 | ControlFlowNode for tarc | -| TarSlipImprov.py:176:6:176:31 | ControlFlowNode for Attribute() | TarSlipImprov.py:176:36:176:38 | ControlFlowNode for tar | -| TarSlipImprov.py:176:36:176:38 | ControlFlowNode for tar | TarSlipImprov.py:177:9:177:13 | ControlFlowNode for entry | -| TarSlipImprov.py:177:9:177:13 | ControlFlowNode for entry | TarSlipImprov.py:178:36:178:40 | ControlFlowNode for entry | -| TarSlipImprov.py:182:6:182:31 | ControlFlowNode for Attribute() | TarSlipImprov.py:182:36:182:38 | ControlFlowNode for tar | -| TarSlipImprov.py:182:36:182:38 | ControlFlowNode for tar | TarSlipImprov.py:183:9:183:13 | ControlFlowNode for entry | -| TarSlipImprov.py:183:9:183:13 | ControlFlowNode for entry | TarSlipImprov.py:184:21:184:25 | ControlFlowNode for entry | -| TarSlipImprov.py:188:1:188:3 | ControlFlowNode for tar | TarSlipImprov.py:189:1:189:3 | ControlFlowNode for tar | -| TarSlipImprov.py:188:7:188:27 | ControlFlowNode for Attribute() | TarSlipImprov.py:188:1:188:3 | ControlFlowNode for tar | -| TarSlipImprov.py:193:6:193:31 | ControlFlowNode for Attribute() | TarSlipImprov.py:193:36:193:38 | ControlFlowNode for tar | -| TarSlipImprov.py:193:36:193:38 | ControlFlowNode for tar | TarSlipImprov.py:194:49:194:51 | ControlFlowNode for tar | -| TarSlipImprov.py:210:6:210:43 | ControlFlowNode for Attribute() | TarSlipImprov.py:210:48:210:50 | ControlFlowNode for tar | -| TarSlipImprov.py:210:48:210:50 | ControlFlowNode for tar | TarSlipImprov.py:211:5:211:7 | ControlFlowNode for tar | -| TarSlipImprov.py:231:6:231:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:231:43:231:52 | ControlFlowNode for corpus_tar | -| TarSlipImprov.py:231:43:231:52 | ControlFlowNode for corpus_tar | TarSlipImprov.py:233:9:233:9 | ControlFlowNode for f | -| TarSlipImprov.py:233:9:233:9 | ControlFlowNode for f | TarSlipImprov.py:235:28:235:28 | ControlFlowNode for f | -| TarSlipImprov.py:235:13:235:19 | [post] ControlFlowNode for members | TarSlipImprov.py:236:44:236:50 | ControlFlowNode for members | -| TarSlipImprov.py:235:28:235:28 | ControlFlowNode for f | TarSlipImprov.py:235:13:235:19 | [post] ControlFlowNode for members | -| TarSlipImprov.py:258:6:258:26 | ControlFlowNode for Attribute() | TarSlipImprov.py:258:31:258:33 | ControlFlowNode for tar | -| TarSlipImprov.py:258:31:258:33 | ControlFlowNode for tar | TarSlipImprov.py:259:9:259:13 | ControlFlowNode for entry | -| TarSlipImprov.py:259:9:259:13 | ControlFlowNode for entry | TarSlipImprov.py:261:25:261:29 | ControlFlowNode for entry | -| TarSlipImprov.py:264:6:264:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:264:43:264:45 | ControlFlowNode for tar | -| TarSlipImprov.py:264:43:264:45 | ControlFlowNode for tar | TarSlipImprov.py:265:9:265:13 | ControlFlowNode for entry | -| TarSlipImprov.py:265:9:265:13 | ControlFlowNode for entry | TarSlipImprov.py:268:21:268:25 | ControlFlowNode for entry | -| TarSlipImprov.py:271:6:271:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:271:44:271:46 | ControlFlowNode for tar | -| TarSlipImprov.py:271:44:271:46 | ControlFlowNode for tar | TarSlipImprov.py:272:9:272:13 | ControlFlowNode for entry | -| TarSlipImprov.py:272:9:272:13 | ControlFlowNode for entry | TarSlipImprov.py:274:25:274:29 | ControlFlowNode for entry | -| TarSlipImprov.py:276:6:276:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:276:43:276:45 | ControlFlowNode for tar | -| TarSlipImprov.py:276:43:276:45 | ControlFlowNode for tar | TarSlipImprov.py:277:9:277:13 | ControlFlowNode for entry | -| TarSlipImprov.py:277:9:277:13 | ControlFlowNode for entry | TarSlipImprov.py:280:21:280:25 | ControlFlowNode for entry | -| TarSlipImprov.py:283:6:283:51 | ControlFlowNode for Attribute() | TarSlipImprov.py:283:56:283:58 | ControlFlowNode for tar | -| TarSlipImprov.py:283:56:283:58 | ControlFlowNode for tar | TarSlipImprov.py:284:5:284:7 | ControlFlowNode for tar | -| TarSlipImprov.py:287:1:287:3 | ControlFlowNode for tar | TarSlipImprov.py:288:49:288:51 | ControlFlowNode for tar | -| TarSlipImprov.py:287:7:287:28 | ControlFlowNode for Attribute() | TarSlipImprov.py:287:1:287:3 | ControlFlowNode for tar | -| TarSlipImprov.py:292:1:292:3 | ControlFlowNode for tar | TarSlipImprov.py:293:1:293:3 | ControlFlowNode for tar | -| TarSlipImprov.py:292:7:292:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:292:1:292:3 | ControlFlowNode for tar | -| TarSlipImprov.py:300:6:300:51 | ControlFlowNode for Attribute() | TarSlipImprov.py:300:56:300:58 | ControlFlowNode for tar | -| TarSlipImprov.py:300:56:300:58 | ControlFlowNode for tar | TarSlipImprov.py:301:49:301:51 | ControlFlowNode for tar | -| TarSlipImprov.py:304:1:304:3 | ControlFlowNode for tar | TarSlipImprov.py:306:5:306:10 | ControlFlowNode for member | -| TarSlipImprov.py:304:7:304:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:304:1:304:3 | ControlFlowNode for tar | -| TarSlipImprov.py:306:5:306:10 | ControlFlowNode for member | TarSlipImprov.py:309:19:309:24 | ControlFlowNode for member | -| TarSlipImprov.py:309:5:309:10 | [post] ControlFlowNode for result | TarSlipImprov.py:310:49:310:54 | ControlFlowNode for result | -| TarSlipImprov.py:309:19:309:24 | ControlFlowNode for member | TarSlipImprov.py:309:5:309:10 | [post] ControlFlowNode for result | +| TarSlipImprov.py:15:1:15:3 | ControlFlowNode for tar | TarSlipImprov.py:17:5:17:10 | ControlFlowNode for member | provenance | | +| TarSlipImprov.py:15:7:15:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:15:1:15:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:17:5:17:10 | ControlFlowNode for member | TarSlipImprov.py:20:19:20:24 | ControlFlowNode for member | provenance | | +| TarSlipImprov.py:20:5:20:10 | [post] ControlFlowNode for result | TarSlipImprov.py:22:35:22:40 | ControlFlowNode for result | provenance | | +| TarSlipImprov.py:20:19:20:24 | ControlFlowNode for member | TarSlipImprov.py:20:5:20:10 | [post] ControlFlowNode for result | provenance | | +| TarSlipImprov.py:26:21:26:27 | ControlFlowNode for tarfile | TarSlipImprov.py:28:9:28:14 | ControlFlowNode for member | provenance | | +| TarSlipImprov.py:28:9:28:14 | ControlFlowNode for member | TarSlipImprov.py:35:23:35:28 | ControlFlowNode for member | provenance | | +| TarSlipImprov.py:35:9:35:14 | [post] ControlFlowNode for result | TarSlipImprov.py:36:12:36:17 | ControlFlowNode for result | provenance | | +| TarSlipImprov.py:35:23:35:28 | ControlFlowNode for member | TarSlipImprov.py:35:9:35:14 | [post] ControlFlowNode for result | provenance | | +| TarSlipImprov.py:38:1:38:3 | ControlFlowNode for tar | TarSlipImprov.py:39:65:39:67 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:38:7:38:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:38:1:38:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:39:65:39:67 | ControlFlowNode for tar | TarSlipImprov.py:26:21:26:27 | ControlFlowNode for tarfile | provenance | | +| TarSlipImprov.py:39:65:39:67 | ControlFlowNode for tar | TarSlipImprov.py:39:49:39:68 | ControlFlowNode for members_filter1() | provenance | | +| TarSlipImprov.py:43:6:43:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:43:43:43:45 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:43:43:43:45 | ControlFlowNode for tar | TarSlipImprov.py:44:9:44:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:44:9:44:13 | ControlFlowNode for entry | TarSlipImprov.py:47:21:47:25 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:54:6:54:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:54:43:54:45 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:54:43:54:45 | ControlFlowNode for tar | TarSlipImprov.py:56:9:56:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:56:9:56:13 | ControlFlowNode for entry | TarSlipImprov.py:58:21:58:25 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:88:6:88:43 | ControlFlowNode for Attribute() | TarSlipImprov.py:88:48:88:50 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:88:48:88:50 | ControlFlowNode for tar | TarSlipImprov.py:91:5:91:7 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:111:1:111:3 | ControlFlowNode for tar | TarSlipImprov.py:115:9:115:11 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:111:7:111:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:111:1:111:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:123:6:123:29 | ControlFlowNode for Attribute() | TarSlipImprov.py:123:34:123:36 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:123:34:123:36 | ControlFlowNode for tar | TarSlipImprov.py:124:9:124:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:124:9:124:13 | ControlFlowNode for entry | TarSlipImprov.py:125:36:125:40 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:129:6:129:26 | ControlFlowNode for Attribute() | TarSlipImprov.py:129:31:129:33 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:129:31:129:33 | ControlFlowNode for tar | TarSlipImprov.py:130:5:130:7 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:133:1:133:3 | ControlFlowNode for tar | TarSlipImprov.py:134:1:134:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:133:7:133:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:133:1:133:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:141:6:141:29 | ControlFlowNode for Attribute() | TarSlipImprov.py:141:34:141:36 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:141:34:141:36 | ControlFlowNode for tar | TarSlipImprov.py:142:9:142:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:142:9:142:13 | ControlFlowNode for entry | TarSlipImprov.py:143:36:143:40 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:151:14:151:50 | ControlFlowNode for closing() | TarSlipImprov.py:151:55:151:56 | ControlFlowNode for tf | provenance | | +| TarSlipImprov.py:151:22:151:49 | ControlFlowNode for Attribute() | TarSlipImprov.py:151:14:151:50 | ControlFlowNode for closing() | provenance | | +| TarSlipImprov.py:151:55:151:56 | ControlFlowNode for tf | TarSlipImprov.py:152:19:152:20 | ControlFlowNode for tf | provenance | | +| TarSlipImprov.py:152:19:152:20 | ControlFlowNode for tf | TarSlipImprov.py:157:18:157:40 | ControlFlowNode for py2_tarxz() | provenance | | +| TarSlipImprov.py:157:9:157:14 | ControlFlowNode for tar_cm | TarSlipImprov.py:162:20:162:23 | ControlFlowNode for tarc | provenance | | +| TarSlipImprov.py:157:18:157:40 | ControlFlowNode for py2_tarxz() | TarSlipImprov.py:157:9:157:14 | ControlFlowNode for tar_cm | provenance | | +| TarSlipImprov.py:159:9:159:14 | ControlFlowNode for tar_cm | TarSlipImprov.py:162:20:162:23 | ControlFlowNode for tarc | provenance | | +| TarSlipImprov.py:159:18:159:52 | ControlFlowNode for closing() | TarSlipImprov.py:159:9:159:14 | ControlFlowNode for tar_cm | provenance | | +| TarSlipImprov.py:159:26:159:51 | ControlFlowNode for Attribute() | TarSlipImprov.py:159:18:159:52 | ControlFlowNode for closing() | provenance | | +| TarSlipImprov.py:162:20:162:23 | ControlFlowNode for tarc | TarSlipImprov.py:169:9:169:12 | ControlFlowNode for tarc | provenance | | +| TarSlipImprov.py:176:6:176:31 | ControlFlowNode for Attribute() | TarSlipImprov.py:176:36:176:38 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:176:36:176:38 | ControlFlowNode for tar | TarSlipImprov.py:177:9:177:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:177:9:177:13 | ControlFlowNode for entry | TarSlipImprov.py:178:36:178:40 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:182:6:182:31 | ControlFlowNode for Attribute() | TarSlipImprov.py:182:36:182:38 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:182:36:182:38 | ControlFlowNode for tar | TarSlipImprov.py:183:9:183:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:183:9:183:13 | ControlFlowNode for entry | TarSlipImprov.py:184:21:184:25 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:188:1:188:3 | ControlFlowNode for tar | TarSlipImprov.py:189:1:189:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:188:7:188:27 | ControlFlowNode for Attribute() | TarSlipImprov.py:188:1:188:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:193:6:193:31 | ControlFlowNode for Attribute() | TarSlipImprov.py:193:36:193:38 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:193:36:193:38 | ControlFlowNode for tar | TarSlipImprov.py:194:49:194:51 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:210:6:210:43 | ControlFlowNode for Attribute() | TarSlipImprov.py:210:48:210:50 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:210:48:210:50 | ControlFlowNode for tar | TarSlipImprov.py:211:5:211:7 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:231:6:231:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:231:43:231:52 | ControlFlowNode for corpus_tar | provenance | | +| TarSlipImprov.py:231:43:231:52 | ControlFlowNode for corpus_tar | TarSlipImprov.py:233:9:233:9 | ControlFlowNode for f | provenance | | +| TarSlipImprov.py:233:9:233:9 | ControlFlowNode for f | TarSlipImprov.py:235:28:235:28 | ControlFlowNode for f | provenance | | +| TarSlipImprov.py:235:13:235:19 | [post] ControlFlowNode for members | TarSlipImprov.py:236:44:236:50 | ControlFlowNode for members | provenance | | +| TarSlipImprov.py:235:28:235:28 | ControlFlowNode for f | TarSlipImprov.py:235:13:235:19 | [post] ControlFlowNode for members | provenance | | +| TarSlipImprov.py:258:6:258:26 | ControlFlowNode for Attribute() | TarSlipImprov.py:258:31:258:33 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:258:31:258:33 | ControlFlowNode for tar | TarSlipImprov.py:259:9:259:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:259:9:259:13 | ControlFlowNode for entry | TarSlipImprov.py:261:25:261:29 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:264:6:264:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:264:43:264:45 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:264:43:264:45 | ControlFlowNode for tar | TarSlipImprov.py:265:9:265:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:265:9:265:13 | ControlFlowNode for entry | TarSlipImprov.py:268:21:268:25 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:271:6:271:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:271:44:271:46 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:271:44:271:46 | ControlFlowNode for tar | TarSlipImprov.py:272:9:272:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:272:9:272:13 | ControlFlowNode for entry | TarSlipImprov.py:274:25:274:29 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:276:6:276:38 | ControlFlowNode for Attribute() | TarSlipImprov.py:276:43:276:45 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:276:43:276:45 | ControlFlowNode for tar | TarSlipImprov.py:277:9:277:13 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:277:9:277:13 | ControlFlowNode for entry | TarSlipImprov.py:280:21:280:25 | ControlFlowNode for entry | provenance | | +| TarSlipImprov.py:283:6:283:51 | ControlFlowNode for Attribute() | TarSlipImprov.py:283:56:283:58 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:283:56:283:58 | ControlFlowNode for tar | TarSlipImprov.py:284:5:284:7 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:287:1:287:3 | ControlFlowNode for tar | TarSlipImprov.py:288:49:288:51 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:287:7:287:28 | ControlFlowNode for Attribute() | TarSlipImprov.py:287:1:287:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:292:1:292:3 | ControlFlowNode for tar | TarSlipImprov.py:293:1:293:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:292:7:292:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:292:1:292:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:300:6:300:51 | ControlFlowNode for Attribute() | TarSlipImprov.py:300:56:300:58 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:300:56:300:58 | ControlFlowNode for tar | TarSlipImprov.py:301:49:301:51 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:304:1:304:3 | ControlFlowNode for tar | TarSlipImprov.py:306:5:306:10 | ControlFlowNode for member | provenance | | +| TarSlipImprov.py:304:7:304:39 | ControlFlowNode for Attribute() | TarSlipImprov.py:304:1:304:3 | ControlFlowNode for tar | provenance | | +| TarSlipImprov.py:306:5:306:10 | ControlFlowNode for member | TarSlipImprov.py:309:19:309:24 | ControlFlowNode for member | provenance | | +| TarSlipImprov.py:309:5:309:10 | [post] ControlFlowNode for result | TarSlipImprov.py:310:49:310:54 | ControlFlowNode for result | provenance | | +| TarSlipImprov.py:309:19:309:24 | ControlFlowNode for member | TarSlipImprov.py:309:5:309:10 | [post] ControlFlowNode for result | provenance | | nodes | TarSlipImprov.py:15:1:15:3 | ControlFlowNode for tar | semmle.label | ControlFlowNode for tar | | TarSlipImprov.py:15:7:15:39 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/ZipSlip.expected b/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/ZipSlip.expected index e99928a05b8b..6b618335d810 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/ZipSlip.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-022-TarSlip/ZipSlip.expected @@ -1,19 +1,19 @@ edges -| zipslip_bad.py:8:10:8:31 | ControlFlowNode for Attribute() | zipslip_bad.py:8:36:8:39 | ControlFlowNode for zipf | -| zipslip_bad.py:8:36:8:39 | ControlFlowNode for zipf | zipslip_bad.py:10:13:10:17 | ControlFlowNode for entry | -| zipslip_bad.py:10:13:10:17 | ControlFlowNode for entry | zipslip_bad.py:11:25:11:29 | ControlFlowNode for entry | -| zipslip_bad.py:14:10:14:28 | ControlFlowNode for Attribute() | zipslip_bad.py:14:33:14:36 | ControlFlowNode for zipf | -| zipslip_bad.py:14:33:14:36 | ControlFlowNode for zipf | zipslip_bad.py:16:13:16:17 | ControlFlowNode for entry | -| zipslip_bad.py:16:13:16:17 | ControlFlowNode for entry | zipslip_bad.py:17:26:17:30 | ControlFlowNode for entry | -| zipslip_bad.py:20:10:20:27 | ControlFlowNode for Attribute() | zipslip_bad.py:20:32:20:35 | ControlFlowNode for zipf | -| zipslip_bad.py:20:32:20:35 | ControlFlowNode for zipf | zipslip_bad.py:22:13:22:17 | ControlFlowNode for entry | -| zipslip_bad.py:22:13:22:17 | ControlFlowNode for entry | zipslip_bad.py:23:29:23:33 | ControlFlowNode for entry | -| zipslip_bad.py:27:10:27:22 | ControlFlowNode for Attribute() | zipslip_bad.py:27:27:27:34 | ControlFlowNode for filelist | -| zipslip_bad.py:27:27:27:34 | ControlFlowNode for filelist | zipslip_bad.py:29:13:29:13 | ControlFlowNode for x | -| zipslip_bad.py:29:13:29:13 | ControlFlowNode for x | zipslip_bad.py:30:25:30:25 | ControlFlowNode for x | -| zipslip_bad.py:34:5:34:12 | ControlFlowNode for filelist | zipslip_bad.py:35:9:35:9 | ControlFlowNode for x | -| zipslip_bad.py:34:16:34:28 | ControlFlowNode for Attribute() | zipslip_bad.py:34:5:34:12 | ControlFlowNode for filelist | -| zipslip_bad.py:35:9:35:9 | ControlFlowNode for x | zipslip_bad.py:37:32:37:32 | ControlFlowNode for x | +| zipslip_bad.py:8:10:8:31 | ControlFlowNode for Attribute() | zipslip_bad.py:8:36:8:39 | ControlFlowNode for zipf | provenance | | +| zipslip_bad.py:8:36:8:39 | ControlFlowNode for zipf | zipslip_bad.py:10:13:10:17 | ControlFlowNode for entry | provenance | | +| zipslip_bad.py:10:13:10:17 | ControlFlowNode for entry | zipslip_bad.py:11:25:11:29 | ControlFlowNode for entry | provenance | | +| zipslip_bad.py:14:10:14:28 | ControlFlowNode for Attribute() | zipslip_bad.py:14:33:14:36 | ControlFlowNode for zipf | provenance | | +| zipslip_bad.py:14:33:14:36 | ControlFlowNode for zipf | zipslip_bad.py:16:13:16:17 | ControlFlowNode for entry | provenance | | +| zipslip_bad.py:16:13:16:17 | ControlFlowNode for entry | zipslip_bad.py:17:26:17:30 | ControlFlowNode for entry | provenance | | +| zipslip_bad.py:20:10:20:27 | ControlFlowNode for Attribute() | zipslip_bad.py:20:32:20:35 | ControlFlowNode for zipf | provenance | | +| zipslip_bad.py:20:32:20:35 | ControlFlowNode for zipf | zipslip_bad.py:22:13:22:17 | ControlFlowNode for entry | provenance | | +| zipslip_bad.py:22:13:22:17 | ControlFlowNode for entry | zipslip_bad.py:23:29:23:33 | ControlFlowNode for entry | provenance | | +| zipslip_bad.py:27:10:27:22 | ControlFlowNode for Attribute() | zipslip_bad.py:27:27:27:34 | ControlFlowNode for filelist | provenance | | +| zipslip_bad.py:27:27:27:34 | ControlFlowNode for filelist | zipslip_bad.py:29:13:29:13 | ControlFlowNode for x | provenance | | +| zipslip_bad.py:29:13:29:13 | ControlFlowNode for x | zipslip_bad.py:30:25:30:25 | ControlFlowNode for x | provenance | | +| zipslip_bad.py:34:5:34:12 | ControlFlowNode for filelist | zipslip_bad.py:35:9:35:9 | ControlFlowNode for x | provenance | | +| zipslip_bad.py:34:16:34:28 | ControlFlowNode for Attribute() | zipslip_bad.py:34:5:34:12 | ControlFlowNode for filelist | provenance | | +| zipslip_bad.py:35:9:35:9 | ControlFlowNode for x | zipslip_bad.py:37:32:37:32 | ControlFlowNode for x | provenance | | nodes | zipslip_bad.py:8:10:8:31 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | zipslip_bad.py:8:36:8:39 | ControlFlowNode for zipf | semmle.label | ControlFlowNode for zipf | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-022-UnsafeUnpacking/UnsafeUnpack.expected b/python/ql/test/experimental/query-tests/Security/CWE-022-UnsafeUnpacking/UnsafeUnpack.expected index 742eecdb92e3..f5af1aac6479 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-022-UnsafeUnpacking/UnsafeUnpack.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-022-UnsafeUnpacking/UnsafeUnpack.expected @@ -1,86 +1,86 @@ edges -| UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for ImportMember | UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for request | -| UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for request | UnsafeUnpack.py:11:18:11:24 | ControlFlowNode for request | -| UnsafeUnpack.py:11:7:11:14 | ControlFlowNode for filename | UnsafeUnpack.py:13:24:13:58 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:11:18:11:24 | ControlFlowNode for request | UnsafeUnpack.py:11:18:11:29 | ControlFlowNode for Attribute | -| UnsafeUnpack.py:11:18:11:29 | ControlFlowNode for Attribute | UnsafeUnpack.py:11:18:11:49 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:11:18:11:49 | ControlFlowNode for Attribute() | UnsafeUnpack.py:11:7:11:14 | ControlFlowNode for filename | -| UnsafeUnpack.py:13:13:13:20 | ControlFlowNode for response | UnsafeUnpack.py:17:27:17:34 | ControlFlowNode for response | -| UnsafeUnpack.py:13:24:13:58 | ControlFlowNode for Attribute() | UnsafeUnpack.py:13:13:13:20 | ControlFlowNode for response | -| UnsafeUnpack.py:16:23:16:29 | ControlFlowNode for tarpath | UnsafeUnpack.py:19:35:19:41 | ControlFlowNode for tarpath | -| UnsafeUnpack.py:17:19:17:19 | ControlFlowNode for f | UnsafeUnpack.py:16:23:16:29 | ControlFlowNode for tarpath | -| UnsafeUnpack.py:17:27:17:34 | ControlFlowNode for response | UnsafeUnpack.py:17:27:17:38 | ControlFlowNode for Attribute | -| UnsafeUnpack.py:17:27:17:38 | ControlFlowNode for Attribute | UnsafeUnpack.py:17:27:17:45 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:17:27:17:45 | ControlFlowNode for Attribute() | UnsafeUnpack.py:17:19:17:19 | ControlFlowNode for f | -| UnsafeUnpack.py:33:50:33:65 | ControlFlowNode for local_ziped_path | UnsafeUnpack.py:34:23:34:38 | ControlFlowNode for local_ziped_path | -| UnsafeUnpack.py:47:20:47:34 | ControlFlowNode for compressed_file | UnsafeUnpack.py:48:23:48:37 | ControlFlowNode for compressed_file | -| UnsafeUnpack.py:51:1:51:15 | ControlFlowNode for compressed_file | UnsafeUnpack.py:52:23:52:37 | ControlFlowNode for compressed_file | -| UnsafeUnpack.py:51:19:51:36 | ControlFlowNode for Attribute() | UnsafeUnpack.py:51:1:51:15 | ControlFlowNode for compressed_file | -| UnsafeUnpack.py:65:1:65:15 | ControlFlowNode for compressed_file | UnsafeUnpack.py:66:23:66:37 | ControlFlowNode for compressed_file | -| UnsafeUnpack.py:65:19:65:31 | ControlFlowNode for Attribute | UnsafeUnpack.py:65:1:65:15 | ControlFlowNode for compressed_file | -| UnsafeUnpack.py:79:1:79:12 | ControlFlowNode for url_filename | UnsafeUnpack.py:81:12:81:50 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:79:1:79:12 | ControlFlowNode for url_filename | UnsafeUnpack.py:171:12:171:50 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:79:16:79:28 | ControlFlowNode for Attribute | UnsafeUnpack.py:79:1:79:12 | ControlFlowNode for url_filename | -| UnsafeUnpack.py:81:1:81:8 | ControlFlowNode for response | UnsafeUnpack.py:85:15:85:22 | ControlFlowNode for response | -| UnsafeUnpack.py:81:12:81:50 | ControlFlowNode for Attribute() | UnsafeUnpack.py:81:1:81:8 | ControlFlowNode for response | -| UnsafeUnpack.py:84:11:84:17 | ControlFlowNode for tarpath | UnsafeUnpack.py:87:23:87:29 | ControlFlowNode for tarpath | -| UnsafeUnpack.py:85:7:85:7 | ControlFlowNode for f | UnsafeUnpack.py:84:11:84:17 | ControlFlowNode for tarpath | -| UnsafeUnpack.py:85:15:85:22 | ControlFlowNode for response | UnsafeUnpack.py:85:15:85:26 | ControlFlowNode for Attribute | -| UnsafeUnpack.py:85:15:85:26 | ControlFlowNode for Attribute | UnsafeUnpack.py:85:15:85:33 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:85:15:85:33 | ControlFlowNode for Attribute() | UnsafeUnpack.py:85:7:85:7 | ControlFlowNode for f | -| UnsafeUnpack.py:102:23:102:30 | ControlFlowNode for savepath | UnsafeUnpack.py:105:35:105:42 | ControlFlowNode for savepath | -| UnsafeUnpack.py:103:23:103:27 | ControlFlowNode for chunk | UnsafeUnpack.py:104:37:104:41 | ControlFlowNode for chunk | -| UnsafeUnpack.py:103:32:103:44 | ControlFlowNode for Attribute | UnsafeUnpack.py:103:32:103:54 | ControlFlowNode for Subscript | -| UnsafeUnpack.py:103:32:103:54 | ControlFlowNode for Subscript | UnsafeUnpack.py:103:32:103:63 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:103:32:103:63 | ControlFlowNode for Attribute() | UnsafeUnpack.py:103:23:103:27 | ControlFlowNode for chunk | -| UnsafeUnpack.py:104:25:104:29 | ControlFlowNode for wfile | UnsafeUnpack.py:102:23:102:30 | ControlFlowNode for savepath | -| UnsafeUnpack.py:104:37:104:41 | ControlFlowNode for chunk | UnsafeUnpack.py:104:25:104:29 | ControlFlowNode for wfile | -| UnsafeUnpack.py:108:13:108:18 | ControlFlowNode for myfile | UnsafeUnpack.py:111:27:111:32 | ControlFlowNode for myfile | -| UnsafeUnpack.py:108:22:108:34 | ControlFlowNode for Attribute | UnsafeUnpack.py:108:22:108:48 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:108:22:108:48 | ControlFlowNode for Attribute() | UnsafeUnpack.py:108:13:108:18 | ControlFlowNode for myfile | -| UnsafeUnpack.py:110:18:110:26 | ControlFlowNode for file_path | UnsafeUnpack.py:112:35:112:43 | ControlFlowNode for file_path | -| UnsafeUnpack.py:111:19:111:19 | ControlFlowNode for f | UnsafeUnpack.py:110:18:110:26 | ControlFlowNode for file_path | -| UnsafeUnpack.py:111:27:111:32 | ControlFlowNode for myfile | UnsafeUnpack.py:111:27:111:39 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:111:27:111:39 | ControlFlowNode for Attribute() | UnsafeUnpack.py:111:19:111:19 | ControlFlowNode for f | -| UnsafeUnpack.py:116:17:116:21 | ControlFlowNode for ufile | UnsafeUnpack.py:118:38:118:42 | ControlFlowNode for ufile | -| UnsafeUnpack.py:116:27:116:39 | ControlFlowNode for Attribute | UnsafeUnpack.py:116:27:116:49 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:116:27:116:49 | ControlFlowNode for Attribute() | UnsafeUnpack.py:116:17:116:21 | ControlFlowNode for ufile | -| UnsafeUnpack.py:118:19:118:26 | ControlFlowNode for filename | UnsafeUnpack.py:119:48:119:55 | ControlFlowNode for filename | -| UnsafeUnpack.py:118:30:118:55 | ControlFlowNode for Attribute() | UnsafeUnpack.py:118:19:118:26 | ControlFlowNode for filename | -| UnsafeUnpack.py:118:38:118:42 | ControlFlowNode for ufile | UnsafeUnpack.py:118:38:118:47 | ControlFlowNode for Attribute | -| UnsafeUnpack.py:118:38:118:47 | ControlFlowNode for Attribute | UnsafeUnpack.py:118:30:118:55 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:119:19:119:36 | ControlFlowNode for uploaded_file_path | UnsafeUnpack.py:120:41:120:58 | ControlFlowNode for uploaded_file_path | -| UnsafeUnpack.py:119:40:119:56 | ControlFlowNode for Attribute() | UnsafeUnpack.py:119:19:119:36 | ControlFlowNode for uploaded_file_path | -| UnsafeUnpack.py:119:48:119:55 | ControlFlowNode for filename | UnsafeUnpack.py:119:40:119:56 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:140:1:140:19 | ControlFlowNode for unsafe_filename_tar | UnsafeUnpack.py:141:22:141:40 | ControlFlowNode for unsafe_filename_tar | -| UnsafeUnpack.py:140:23:140:35 | ControlFlowNode for Attribute | UnsafeUnpack.py:140:1:140:19 | ControlFlowNode for unsafe_filename_tar | -| UnsafeUnpack.py:141:6:141:51 | ControlFlowNode for Attribute() | UnsafeUnpack.py:141:56:141:58 | ControlFlowNode for tar | -| UnsafeUnpack.py:141:22:141:40 | ControlFlowNode for unsafe_filename_tar | UnsafeUnpack.py:141:6:141:51 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:141:56:141:58 | ControlFlowNode for tar | UnsafeUnpack.py:142:49:142:51 | ControlFlowNode for tar | -| UnsafeUnpack.py:157:23:157:30 | ControlFlowNode for savepath | UnsafeUnpack.py:161:38:161:45 | ControlFlowNode for savepath | -| UnsafeUnpack.py:158:23:158:27 | ControlFlowNode for chunk | UnsafeUnpack.py:159:37:159:41 | ControlFlowNode for chunk | -| UnsafeUnpack.py:158:32:158:44 | ControlFlowNode for Attribute | UnsafeUnpack.py:158:32:158:54 | ControlFlowNode for Subscript | -| UnsafeUnpack.py:158:32:158:54 | ControlFlowNode for Subscript | UnsafeUnpack.py:158:32:158:63 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:158:32:158:63 | ControlFlowNode for Attribute() | UnsafeUnpack.py:158:23:158:27 | ControlFlowNode for chunk | -| UnsafeUnpack.py:159:25:159:29 | ControlFlowNode for wfile | UnsafeUnpack.py:157:23:157:30 | ControlFlowNode for savepath | -| UnsafeUnpack.py:159:37:159:41 | ControlFlowNode for chunk | UnsafeUnpack.py:159:25:159:29 | ControlFlowNode for wfile | -| UnsafeUnpack.py:161:19:161:21 | ControlFlowNode for tar | UnsafeUnpack.py:163:33:163:35 | ControlFlowNode for tar | -| UnsafeUnpack.py:161:25:161:46 | ControlFlowNode for Attribute() | UnsafeUnpack.py:161:19:161:21 | ControlFlowNode for tar | -| UnsafeUnpack.py:161:38:161:45 | ControlFlowNode for savepath | UnsafeUnpack.py:161:25:161:46 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:163:23:163:28 | ControlFlowNode for member | UnsafeUnpack.py:166:37:166:42 | ControlFlowNode for member | -| UnsafeUnpack.py:163:33:163:35 | ControlFlowNode for tar | UnsafeUnpack.py:163:23:163:28 | ControlFlowNode for member | -| UnsafeUnpack.py:166:23:166:28 | [post] ControlFlowNode for result | UnsafeUnpack.py:167:67:167:72 | ControlFlowNode for result | -| UnsafeUnpack.py:166:37:166:42 | ControlFlowNode for member | UnsafeUnpack.py:166:23:166:28 | [post] ControlFlowNode for result | -| UnsafeUnpack.py:171:1:171:8 | ControlFlowNode for response | UnsafeUnpack.py:174:15:174:22 | ControlFlowNode for response | -| UnsafeUnpack.py:171:12:171:50 | ControlFlowNode for Attribute() | UnsafeUnpack.py:171:1:171:8 | ControlFlowNode for response | -| UnsafeUnpack.py:173:11:173:17 | ControlFlowNode for tarpath | UnsafeUnpack.py:176:17:176:23 | ControlFlowNode for tarpath | -| UnsafeUnpack.py:174:7:174:7 | ControlFlowNode for f | UnsafeUnpack.py:173:11:173:17 | ControlFlowNode for tarpath | -| UnsafeUnpack.py:174:15:174:22 | ControlFlowNode for response | UnsafeUnpack.py:174:15:174:26 | ControlFlowNode for Attribute | -| UnsafeUnpack.py:174:15:174:26 | ControlFlowNode for Attribute | UnsafeUnpack.py:174:15:174:33 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:174:15:174:33 | ControlFlowNode for Attribute() | UnsafeUnpack.py:174:7:174:7 | ControlFlowNode for f | -| UnsafeUnpack.py:176:17:176:23 | ControlFlowNode for tarpath | UnsafeUnpack.py:176:1:176:34 | ControlFlowNode for Attribute() | -| UnsafeUnpack.py:194:53:194:55 | ControlFlowNode for tmp | UnsafeUnpack.py:201:29:201:31 | ControlFlowNode for tmp | -| UnsafeUnpack.py:201:29:201:31 | ControlFlowNode for tmp | UnsafeUnpack.py:201:29:201:36 | ControlFlowNode for Attribute | +| UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for ImportMember | UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for request | provenance | | +| UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for request | UnsafeUnpack.py:11:18:11:24 | ControlFlowNode for request | provenance | | +| UnsafeUnpack.py:11:7:11:14 | ControlFlowNode for filename | UnsafeUnpack.py:13:24:13:58 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:11:18:11:24 | ControlFlowNode for request | UnsafeUnpack.py:11:18:11:29 | ControlFlowNode for Attribute | provenance | | +| UnsafeUnpack.py:11:18:11:29 | ControlFlowNode for Attribute | UnsafeUnpack.py:11:18:11:49 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:11:18:11:49 | ControlFlowNode for Attribute() | UnsafeUnpack.py:11:7:11:14 | ControlFlowNode for filename | provenance | | +| UnsafeUnpack.py:13:13:13:20 | ControlFlowNode for response | UnsafeUnpack.py:17:27:17:34 | ControlFlowNode for response | provenance | | +| UnsafeUnpack.py:13:24:13:58 | ControlFlowNode for Attribute() | UnsafeUnpack.py:13:13:13:20 | ControlFlowNode for response | provenance | | +| UnsafeUnpack.py:16:23:16:29 | ControlFlowNode for tarpath | UnsafeUnpack.py:19:35:19:41 | ControlFlowNode for tarpath | provenance | | +| UnsafeUnpack.py:17:19:17:19 | ControlFlowNode for f | UnsafeUnpack.py:16:23:16:29 | ControlFlowNode for tarpath | provenance | | +| UnsafeUnpack.py:17:27:17:34 | ControlFlowNode for response | UnsafeUnpack.py:17:27:17:38 | ControlFlowNode for Attribute | provenance | | +| UnsafeUnpack.py:17:27:17:38 | ControlFlowNode for Attribute | UnsafeUnpack.py:17:27:17:45 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:17:27:17:45 | ControlFlowNode for Attribute() | UnsafeUnpack.py:17:19:17:19 | ControlFlowNode for f | provenance | | +| UnsafeUnpack.py:33:50:33:65 | ControlFlowNode for local_ziped_path | UnsafeUnpack.py:34:23:34:38 | ControlFlowNode for local_ziped_path | provenance | | +| UnsafeUnpack.py:47:20:47:34 | ControlFlowNode for compressed_file | UnsafeUnpack.py:48:23:48:37 | ControlFlowNode for compressed_file | provenance | | +| UnsafeUnpack.py:51:1:51:15 | ControlFlowNode for compressed_file | UnsafeUnpack.py:52:23:52:37 | ControlFlowNode for compressed_file | provenance | | +| UnsafeUnpack.py:51:19:51:36 | ControlFlowNode for Attribute() | UnsafeUnpack.py:51:1:51:15 | ControlFlowNode for compressed_file | provenance | | +| UnsafeUnpack.py:65:1:65:15 | ControlFlowNode for compressed_file | UnsafeUnpack.py:66:23:66:37 | ControlFlowNode for compressed_file | provenance | | +| UnsafeUnpack.py:65:19:65:31 | ControlFlowNode for Attribute | UnsafeUnpack.py:65:1:65:15 | ControlFlowNode for compressed_file | provenance | | +| UnsafeUnpack.py:79:1:79:12 | ControlFlowNode for url_filename | UnsafeUnpack.py:81:12:81:50 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:79:1:79:12 | ControlFlowNode for url_filename | UnsafeUnpack.py:171:12:171:50 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:79:16:79:28 | ControlFlowNode for Attribute | UnsafeUnpack.py:79:1:79:12 | ControlFlowNode for url_filename | provenance | | +| UnsafeUnpack.py:81:1:81:8 | ControlFlowNode for response | UnsafeUnpack.py:85:15:85:22 | ControlFlowNode for response | provenance | | +| UnsafeUnpack.py:81:12:81:50 | ControlFlowNode for Attribute() | UnsafeUnpack.py:81:1:81:8 | ControlFlowNode for response | provenance | | +| UnsafeUnpack.py:84:11:84:17 | ControlFlowNode for tarpath | UnsafeUnpack.py:87:23:87:29 | ControlFlowNode for tarpath | provenance | | +| UnsafeUnpack.py:85:7:85:7 | ControlFlowNode for f | UnsafeUnpack.py:84:11:84:17 | ControlFlowNode for tarpath | provenance | | +| UnsafeUnpack.py:85:15:85:22 | ControlFlowNode for response | UnsafeUnpack.py:85:15:85:26 | ControlFlowNode for Attribute | provenance | | +| UnsafeUnpack.py:85:15:85:26 | ControlFlowNode for Attribute | UnsafeUnpack.py:85:15:85:33 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:85:15:85:33 | ControlFlowNode for Attribute() | UnsafeUnpack.py:85:7:85:7 | ControlFlowNode for f | provenance | | +| UnsafeUnpack.py:102:23:102:30 | ControlFlowNode for savepath | UnsafeUnpack.py:105:35:105:42 | ControlFlowNode for savepath | provenance | | +| UnsafeUnpack.py:103:23:103:27 | ControlFlowNode for chunk | UnsafeUnpack.py:104:37:104:41 | ControlFlowNode for chunk | provenance | | +| UnsafeUnpack.py:103:32:103:44 | ControlFlowNode for Attribute | UnsafeUnpack.py:103:32:103:54 | ControlFlowNode for Subscript | provenance | | +| UnsafeUnpack.py:103:32:103:54 | ControlFlowNode for Subscript | UnsafeUnpack.py:103:32:103:63 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:103:32:103:63 | ControlFlowNode for Attribute() | UnsafeUnpack.py:103:23:103:27 | ControlFlowNode for chunk | provenance | | +| UnsafeUnpack.py:104:25:104:29 | ControlFlowNode for wfile | UnsafeUnpack.py:102:23:102:30 | ControlFlowNode for savepath | provenance | | +| UnsafeUnpack.py:104:37:104:41 | ControlFlowNode for chunk | UnsafeUnpack.py:104:25:104:29 | ControlFlowNode for wfile | provenance | | +| UnsafeUnpack.py:108:13:108:18 | ControlFlowNode for myfile | UnsafeUnpack.py:111:27:111:32 | ControlFlowNode for myfile | provenance | | +| UnsafeUnpack.py:108:22:108:34 | ControlFlowNode for Attribute | UnsafeUnpack.py:108:22:108:48 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:108:22:108:48 | ControlFlowNode for Attribute() | UnsafeUnpack.py:108:13:108:18 | ControlFlowNode for myfile | provenance | | +| UnsafeUnpack.py:110:18:110:26 | ControlFlowNode for file_path | UnsafeUnpack.py:112:35:112:43 | ControlFlowNode for file_path | provenance | | +| UnsafeUnpack.py:111:19:111:19 | ControlFlowNode for f | UnsafeUnpack.py:110:18:110:26 | ControlFlowNode for file_path | provenance | | +| UnsafeUnpack.py:111:27:111:32 | ControlFlowNode for myfile | UnsafeUnpack.py:111:27:111:39 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:111:27:111:39 | ControlFlowNode for Attribute() | UnsafeUnpack.py:111:19:111:19 | ControlFlowNode for f | provenance | | +| UnsafeUnpack.py:116:17:116:21 | ControlFlowNode for ufile | UnsafeUnpack.py:118:38:118:42 | ControlFlowNode for ufile | provenance | | +| UnsafeUnpack.py:116:27:116:39 | ControlFlowNode for Attribute | UnsafeUnpack.py:116:27:116:49 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:116:27:116:49 | ControlFlowNode for Attribute() | UnsafeUnpack.py:116:17:116:21 | ControlFlowNode for ufile | provenance | | +| UnsafeUnpack.py:118:19:118:26 | ControlFlowNode for filename | UnsafeUnpack.py:119:48:119:55 | ControlFlowNode for filename | provenance | | +| UnsafeUnpack.py:118:30:118:55 | ControlFlowNode for Attribute() | UnsafeUnpack.py:118:19:118:26 | ControlFlowNode for filename | provenance | | +| UnsafeUnpack.py:118:38:118:42 | ControlFlowNode for ufile | UnsafeUnpack.py:118:38:118:47 | ControlFlowNode for Attribute | provenance | | +| UnsafeUnpack.py:118:38:118:47 | ControlFlowNode for Attribute | UnsafeUnpack.py:118:30:118:55 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:119:19:119:36 | ControlFlowNode for uploaded_file_path | UnsafeUnpack.py:120:41:120:58 | ControlFlowNode for uploaded_file_path | provenance | | +| UnsafeUnpack.py:119:40:119:56 | ControlFlowNode for Attribute() | UnsafeUnpack.py:119:19:119:36 | ControlFlowNode for uploaded_file_path | provenance | | +| UnsafeUnpack.py:119:48:119:55 | ControlFlowNode for filename | UnsafeUnpack.py:119:40:119:56 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:140:1:140:19 | ControlFlowNode for unsafe_filename_tar | UnsafeUnpack.py:141:22:141:40 | ControlFlowNode for unsafe_filename_tar | provenance | | +| UnsafeUnpack.py:140:23:140:35 | ControlFlowNode for Attribute | UnsafeUnpack.py:140:1:140:19 | ControlFlowNode for unsafe_filename_tar | provenance | | +| UnsafeUnpack.py:141:6:141:51 | ControlFlowNode for Attribute() | UnsafeUnpack.py:141:56:141:58 | ControlFlowNode for tar | provenance | | +| UnsafeUnpack.py:141:22:141:40 | ControlFlowNode for unsafe_filename_tar | UnsafeUnpack.py:141:6:141:51 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:141:56:141:58 | ControlFlowNode for tar | UnsafeUnpack.py:142:49:142:51 | ControlFlowNode for tar | provenance | | +| UnsafeUnpack.py:157:23:157:30 | ControlFlowNode for savepath | UnsafeUnpack.py:161:38:161:45 | ControlFlowNode for savepath | provenance | | +| UnsafeUnpack.py:158:23:158:27 | ControlFlowNode for chunk | UnsafeUnpack.py:159:37:159:41 | ControlFlowNode for chunk | provenance | | +| UnsafeUnpack.py:158:32:158:44 | ControlFlowNode for Attribute | UnsafeUnpack.py:158:32:158:54 | ControlFlowNode for Subscript | provenance | | +| UnsafeUnpack.py:158:32:158:54 | ControlFlowNode for Subscript | UnsafeUnpack.py:158:32:158:63 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:158:32:158:63 | ControlFlowNode for Attribute() | UnsafeUnpack.py:158:23:158:27 | ControlFlowNode for chunk | provenance | | +| UnsafeUnpack.py:159:25:159:29 | ControlFlowNode for wfile | UnsafeUnpack.py:157:23:157:30 | ControlFlowNode for savepath | provenance | | +| UnsafeUnpack.py:159:37:159:41 | ControlFlowNode for chunk | UnsafeUnpack.py:159:25:159:29 | ControlFlowNode for wfile | provenance | | +| UnsafeUnpack.py:161:19:161:21 | ControlFlowNode for tar | UnsafeUnpack.py:163:33:163:35 | ControlFlowNode for tar | provenance | | +| UnsafeUnpack.py:161:25:161:46 | ControlFlowNode for Attribute() | UnsafeUnpack.py:161:19:161:21 | ControlFlowNode for tar | provenance | | +| UnsafeUnpack.py:161:38:161:45 | ControlFlowNode for savepath | UnsafeUnpack.py:161:25:161:46 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:163:23:163:28 | ControlFlowNode for member | UnsafeUnpack.py:166:37:166:42 | ControlFlowNode for member | provenance | | +| UnsafeUnpack.py:163:33:163:35 | ControlFlowNode for tar | UnsafeUnpack.py:163:23:163:28 | ControlFlowNode for member | provenance | | +| UnsafeUnpack.py:166:23:166:28 | [post] ControlFlowNode for result | UnsafeUnpack.py:167:67:167:72 | ControlFlowNode for result | provenance | | +| UnsafeUnpack.py:166:37:166:42 | ControlFlowNode for member | UnsafeUnpack.py:166:23:166:28 | [post] ControlFlowNode for result | provenance | | +| UnsafeUnpack.py:171:1:171:8 | ControlFlowNode for response | UnsafeUnpack.py:174:15:174:22 | ControlFlowNode for response | provenance | | +| UnsafeUnpack.py:171:12:171:50 | ControlFlowNode for Attribute() | UnsafeUnpack.py:171:1:171:8 | ControlFlowNode for response | provenance | | +| UnsafeUnpack.py:173:11:173:17 | ControlFlowNode for tarpath | UnsafeUnpack.py:176:17:176:23 | ControlFlowNode for tarpath | provenance | | +| UnsafeUnpack.py:174:7:174:7 | ControlFlowNode for f | UnsafeUnpack.py:173:11:173:17 | ControlFlowNode for tarpath | provenance | | +| UnsafeUnpack.py:174:15:174:22 | ControlFlowNode for response | UnsafeUnpack.py:174:15:174:26 | ControlFlowNode for Attribute | provenance | | +| UnsafeUnpack.py:174:15:174:26 | ControlFlowNode for Attribute | UnsafeUnpack.py:174:15:174:33 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:174:15:174:33 | ControlFlowNode for Attribute() | UnsafeUnpack.py:174:7:174:7 | ControlFlowNode for f | provenance | | +| UnsafeUnpack.py:176:17:176:23 | ControlFlowNode for tarpath | UnsafeUnpack.py:176:1:176:34 | ControlFlowNode for Attribute() | provenance | | +| UnsafeUnpack.py:194:53:194:55 | ControlFlowNode for tmp | UnsafeUnpack.py:201:29:201:31 | ControlFlowNode for tmp | provenance | | +| UnsafeUnpack.py:201:29:201:31 | ControlFlowNode for tmp | UnsafeUnpack.py:201:29:201:36 | ControlFlowNode for Attribute | provenance | | nodes | UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | UnsafeUnpack.py:5:26:5:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-074-TemplateInjection/TemplateInjection.expected b/python/ql/test/experimental/query-tests/Security/CWE-074-TemplateInjection/TemplateInjection.expected index 0bfa6affc399..2754b5b8c065 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-074-TemplateInjection/TemplateInjection.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-074-TemplateInjection/TemplateInjection.expected @@ -1,46 +1,46 @@ edges -| AirspeedSsti.py:2:26:2:32 | ControlFlowNode for ImportMember | AirspeedSsti.py:2:26:2:32 | ControlFlowNode for request | -| AirspeedSsti.py:2:26:2:32 | ControlFlowNode for request | AirspeedSsti.py:10:16:10:22 | ControlFlowNode for request | -| AirspeedSsti.py:10:5:10:12 | ControlFlowNode for template | AirspeedSsti.py:11:30:11:37 | ControlFlowNode for template | -| AirspeedSsti.py:10:16:10:22 | ControlFlowNode for request | AirspeedSsti.py:10:16:10:27 | ControlFlowNode for Attribute | -| AirspeedSsti.py:10:16:10:27 | ControlFlowNode for Attribute | AirspeedSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | -| AirspeedSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | AirspeedSsti.py:10:5:10:12 | ControlFlowNode for template | -| CheetahSinks.py:1:26:1:32 | ControlFlowNode for ImportMember | CheetahSinks.py:1:26:1:32 | ControlFlowNode for request | -| CheetahSinks.py:1:26:1:32 | ControlFlowNode for request | CheetahSinks.py:10:16:10:22 | ControlFlowNode for request | -| CheetahSinks.py:1:26:1:32 | ControlFlowNode for request | CheetahSinks.py:21:16:21:22 | ControlFlowNode for request | -| CheetahSinks.py:10:5:10:12 | ControlFlowNode for template | CheetahSinks.py:11:21:11:28 | ControlFlowNode for template | -| CheetahSinks.py:10:16:10:22 | ControlFlowNode for request | CheetahSinks.py:10:16:10:27 | ControlFlowNode for Attribute | -| CheetahSinks.py:10:16:10:27 | ControlFlowNode for Attribute | CheetahSinks.py:10:16:10:43 | ControlFlowNode for Attribute() | -| CheetahSinks.py:10:16:10:43 | ControlFlowNode for Attribute() | CheetahSinks.py:10:5:10:12 | ControlFlowNode for template | -| CheetahSinks.py:21:5:21:12 | ControlFlowNode for template | CheetahSinks.py:22:20:22:27 | ControlFlowNode for template | -| CheetahSinks.py:21:16:21:22 | ControlFlowNode for request | CheetahSinks.py:21:16:21:27 | ControlFlowNode for Attribute | -| CheetahSinks.py:21:16:21:27 | ControlFlowNode for Attribute | CheetahSinks.py:21:16:21:43 | ControlFlowNode for Attribute() | -| CheetahSinks.py:21:16:21:43 | ControlFlowNode for Attribute() | CheetahSinks.py:21:5:21:12 | ControlFlowNode for template | -| ChevronSsti.py:1:26:1:32 | ControlFlowNode for ImportMember | ChevronSsti.py:1:26:1:32 | ControlFlowNode for request | -| ChevronSsti.py:1:26:1:32 | ControlFlowNode for request | ChevronSsti.py:10:16:10:22 | ControlFlowNode for request | -| ChevronSsti.py:10:5:10:12 | ControlFlowNode for template | ChevronSsti.py:11:27:11:34 | ControlFlowNode for template | -| ChevronSsti.py:10:16:10:22 | ControlFlowNode for request | ChevronSsti.py:10:16:10:27 | ControlFlowNode for Attribute | -| ChevronSsti.py:10:16:10:27 | ControlFlowNode for Attribute | ChevronSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | -| ChevronSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | ChevronSsti.py:10:5:10:12 | ControlFlowNode for template | -| DjangoTemplates.py:6:8:6:14 | ControlFlowNode for request | DjangoTemplates.py:8:5:8:12 | ControlFlowNode for template | -| DjangoTemplates.py:8:5:8:12 | ControlFlowNode for template | DjangoTemplates.py:9:18:9:25 | ControlFlowNode for template | -| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for ImportMember | FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | -| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | FlaskTemplate.py:10:8:10:14 | ControlFlowNode for request | -| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | FlaskTemplate.py:11:39:11:45 | ControlFlowNode for request | -| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | FlaskTemplate.py:17:41:17:47 | ControlFlowNode for request | -| FlaskTemplate.py:10:8:10:14 | ControlFlowNode for request | FlaskTemplate.py:11:39:11:50 | ControlFlowNode for Attribute | -| FlaskTemplate.py:11:39:11:45 | ControlFlowNode for request | FlaskTemplate.py:11:39:11:50 | ControlFlowNode for Attribute | -| FlaskTemplate.py:11:39:11:50 | ControlFlowNode for Attribute | FlaskTemplate.py:11:39:11:66 | ControlFlowNode for Attribute() | -| FlaskTemplate.py:17:41:17:47 | ControlFlowNode for request | FlaskTemplate.py:17:41:17:52 | ControlFlowNode for Attribute | -| FlaskTemplate.py:17:41:17:52 | ControlFlowNode for Attribute | FlaskTemplate.py:17:41:17:68 | ControlFlowNode for Attribute() | -| JinjaSsti.py:7:7:7:13 | ControlFlowNode for request | JinjaSsti.py:9:5:9:12 | ControlFlowNode for template | -| JinjaSsti.py:9:5:9:12 | ControlFlowNode for template | JinjaSsti.py:10:25:10:32 | ControlFlowNode for template | -| JinjaSsti.py:16:7:16:13 | ControlFlowNode for request | JinjaSsti.py:19:5:19:12 | ControlFlowNode for template | -| JinjaSsti.py:19:5:19:12 | ControlFlowNode for template | JinjaSsti.py:20:28:20:35 | ControlFlowNode for template | -| MakoSsti.py:6:10:6:16 | ControlFlowNode for request | MakoSsti.py:8:5:8:12 | ControlFlowNode for template | -| MakoSsti.py:8:5:8:12 | ControlFlowNode for template | MakoSsti.py:9:27:9:34 | ControlFlowNode for template | -| TRender.py:5:13:5:19 | ControlFlowNode for request | TRender.py:6:5:6:12 | ControlFlowNode for template | -| TRender.py:6:5:6:12 | ControlFlowNode for template | TRender.py:7:24:7:31 | ControlFlowNode for template | +| AirspeedSsti.py:2:26:2:32 | ControlFlowNode for ImportMember | AirspeedSsti.py:2:26:2:32 | ControlFlowNode for request | provenance | | +| AirspeedSsti.py:2:26:2:32 | ControlFlowNode for request | AirspeedSsti.py:10:16:10:22 | ControlFlowNode for request | provenance | | +| AirspeedSsti.py:10:5:10:12 | ControlFlowNode for template | AirspeedSsti.py:11:30:11:37 | ControlFlowNode for template | provenance | | +| AirspeedSsti.py:10:16:10:22 | ControlFlowNode for request | AirspeedSsti.py:10:16:10:27 | ControlFlowNode for Attribute | provenance | | +| AirspeedSsti.py:10:16:10:27 | ControlFlowNode for Attribute | AirspeedSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | provenance | | +| AirspeedSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | AirspeedSsti.py:10:5:10:12 | ControlFlowNode for template | provenance | | +| CheetahSinks.py:1:26:1:32 | ControlFlowNode for ImportMember | CheetahSinks.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| CheetahSinks.py:1:26:1:32 | ControlFlowNode for request | CheetahSinks.py:10:16:10:22 | ControlFlowNode for request | provenance | | +| CheetahSinks.py:1:26:1:32 | ControlFlowNode for request | CheetahSinks.py:21:16:21:22 | ControlFlowNode for request | provenance | | +| CheetahSinks.py:10:5:10:12 | ControlFlowNode for template | CheetahSinks.py:11:21:11:28 | ControlFlowNode for template | provenance | | +| CheetahSinks.py:10:16:10:22 | ControlFlowNode for request | CheetahSinks.py:10:16:10:27 | ControlFlowNode for Attribute | provenance | | +| CheetahSinks.py:10:16:10:27 | ControlFlowNode for Attribute | CheetahSinks.py:10:16:10:43 | ControlFlowNode for Attribute() | provenance | | +| CheetahSinks.py:10:16:10:43 | ControlFlowNode for Attribute() | CheetahSinks.py:10:5:10:12 | ControlFlowNode for template | provenance | | +| CheetahSinks.py:21:5:21:12 | ControlFlowNode for template | CheetahSinks.py:22:20:22:27 | ControlFlowNode for template | provenance | | +| CheetahSinks.py:21:16:21:22 | ControlFlowNode for request | CheetahSinks.py:21:16:21:27 | ControlFlowNode for Attribute | provenance | | +| CheetahSinks.py:21:16:21:27 | ControlFlowNode for Attribute | CheetahSinks.py:21:16:21:43 | ControlFlowNode for Attribute() | provenance | | +| CheetahSinks.py:21:16:21:43 | ControlFlowNode for Attribute() | CheetahSinks.py:21:5:21:12 | ControlFlowNode for template | provenance | | +| ChevronSsti.py:1:26:1:32 | ControlFlowNode for ImportMember | ChevronSsti.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| ChevronSsti.py:1:26:1:32 | ControlFlowNode for request | ChevronSsti.py:10:16:10:22 | ControlFlowNode for request | provenance | | +| ChevronSsti.py:10:5:10:12 | ControlFlowNode for template | ChevronSsti.py:11:27:11:34 | ControlFlowNode for template | provenance | | +| ChevronSsti.py:10:16:10:22 | ControlFlowNode for request | ChevronSsti.py:10:16:10:27 | ControlFlowNode for Attribute | provenance | | +| ChevronSsti.py:10:16:10:27 | ControlFlowNode for Attribute | ChevronSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | provenance | | +| ChevronSsti.py:10:16:10:43 | ControlFlowNode for Attribute() | ChevronSsti.py:10:5:10:12 | ControlFlowNode for template | provenance | | +| DjangoTemplates.py:6:8:6:14 | ControlFlowNode for request | DjangoTemplates.py:8:5:8:12 | ControlFlowNode for template | provenance | | +| DjangoTemplates.py:8:5:8:12 | ControlFlowNode for template | DjangoTemplates.py:9:18:9:25 | ControlFlowNode for template | provenance | | +| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for ImportMember | FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | FlaskTemplate.py:10:8:10:14 | ControlFlowNode for request | provenance | | +| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | FlaskTemplate.py:11:39:11:45 | ControlFlowNode for request | provenance | | +| FlaskTemplate.py:1:26:1:32 | ControlFlowNode for request | FlaskTemplate.py:17:41:17:47 | ControlFlowNode for request | provenance | | +| FlaskTemplate.py:10:8:10:14 | ControlFlowNode for request | FlaskTemplate.py:11:39:11:50 | ControlFlowNode for Attribute | provenance | | +| FlaskTemplate.py:11:39:11:45 | ControlFlowNode for request | FlaskTemplate.py:11:39:11:50 | ControlFlowNode for Attribute | provenance | | +| FlaskTemplate.py:11:39:11:50 | ControlFlowNode for Attribute | FlaskTemplate.py:11:39:11:66 | ControlFlowNode for Attribute() | provenance | | +| FlaskTemplate.py:17:41:17:47 | ControlFlowNode for request | FlaskTemplate.py:17:41:17:52 | ControlFlowNode for Attribute | provenance | | +| FlaskTemplate.py:17:41:17:52 | ControlFlowNode for Attribute | FlaskTemplate.py:17:41:17:68 | ControlFlowNode for Attribute() | provenance | | +| JinjaSsti.py:7:7:7:13 | ControlFlowNode for request | JinjaSsti.py:9:5:9:12 | ControlFlowNode for template | provenance | | +| JinjaSsti.py:9:5:9:12 | ControlFlowNode for template | JinjaSsti.py:10:25:10:32 | ControlFlowNode for template | provenance | | +| JinjaSsti.py:16:7:16:13 | ControlFlowNode for request | JinjaSsti.py:19:5:19:12 | ControlFlowNode for template | provenance | | +| JinjaSsti.py:19:5:19:12 | ControlFlowNode for template | JinjaSsti.py:20:28:20:35 | ControlFlowNode for template | provenance | | +| MakoSsti.py:6:10:6:16 | ControlFlowNode for request | MakoSsti.py:8:5:8:12 | ControlFlowNode for template | provenance | | +| MakoSsti.py:8:5:8:12 | ControlFlowNode for template | MakoSsti.py:9:27:9:34 | ControlFlowNode for template | provenance | | +| TRender.py:5:13:5:19 | ControlFlowNode for request | TRender.py:6:5:6:12 | ControlFlowNode for template | provenance | | +| TRender.py:6:5:6:12 | ControlFlowNode for template | TRender.py:7:24:7:31 | ControlFlowNode for template | provenance | | nodes | AirspeedSsti.py:2:26:2:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | AirspeedSsti.py:2:26:2:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-074-paramiko/paramiko.expected b/python/ql/test/experimental/query-tests/Security/CWE-074-paramiko/paramiko.expected index b31006425a6b..d7793ad996d6 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-074-paramiko/paramiko.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-074-paramiko/paramiko.expected @@ -1,8 +1,8 @@ edges -| paramiko.py:15:21:15:23 | ControlFlowNode for cmd | paramiko.py:16:62:16:64 | ControlFlowNode for cmd | -| paramiko.py:20:21:20:23 | ControlFlowNode for cmd | paramiko.py:21:70:21:72 | ControlFlowNode for cmd | -| paramiko.py:25:21:25:23 | ControlFlowNode for cmd | paramiko.py:26:136:26:138 | ControlFlowNode for cmd | -| paramiko.py:26:136:26:138 | ControlFlowNode for cmd | paramiko.py:26:114:26:139 | ControlFlowNode for Attribute() | +| paramiko.py:15:21:15:23 | ControlFlowNode for cmd | paramiko.py:16:62:16:64 | ControlFlowNode for cmd | provenance | | +| paramiko.py:20:21:20:23 | ControlFlowNode for cmd | paramiko.py:21:70:21:72 | ControlFlowNode for cmd | provenance | | +| paramiko.py:25:21:25:23 | ControlFlowNode for cmd | paramiko.py:26:136:26:138 | ControlFlowNode for cmd | provenance | | +| paramiko.py:26:136:26:138 | ControlFlowNode for cmd | paramiko.py:26:114:26:139 | ControlFlowNode for Attribute() | provenance | | nodes | paramiko.py:15:21:15:23 | ControlFlowNode for cmd | semmle.label | ControlFlowNode for cmd | | paramiko.py:16:62:16:64 | ControlFlowNode for cmd | semmle.label | ControlFlowNode for cmd | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-079/EmailXss.expected b/python/ql/test/experimental/query-tests/Security/CWE-079/EmailXss.expected index 00172d78319c..8581fcda227f 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-079/EmailXss.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-079/EmailXss.expected @@ -1,40 +1,40 @@ edges -| flask_mail.py:1:19:1:25 | ControlFlowNode for ImportMember | flask_mail.py:1:19:1:25 | ControlFlowNode for request | -| flask_mail.py:1:19:1:25 | ControlFlowNode for request | flask_mail.py:13:22:13:28 | ControlFlowNode for request | -| flask_mail.py:1:19:1:25 | ControlFlowNode for request | flask_mail.py:18:14:18:20 | ControlFlowNode for request | -| flask_mail.py:1:19:1:25 | ControlFlowNode for request | flask_mail.py:31:24:31:30 | ControlFlowNode for request | -| flask_mail.py:13:22:13:28 | ControlFlowNode for request | flask_mail.py:13:22:13:41 | ControlFlowNode for Subscript | -| flask_mail.py:13:22:13:28 | ControlFlowNode for request | flask_mail.py:18:14:18:33 | ControlFlowNode for Subscript | -| flask_mail.py:18:14:18:20 | ControlFlowNode for request | flask_mail.py:18:14:18:33 | ControlFlowNode for Subscript | -| flask_mail.py:31:24:31:30 | ControlFlowNode for request | flask_mail.py:31:24:31:43 | ControlFlowNode for Subscript | -| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for ImportMember | sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | -| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | sendgrid_mail.py:14:22:14:28 | ControlFlowNode for request | -| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | sendgrid_mail.py:26:34:26:40 | ControlFlowNode for request | -| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | sendgrid_mail.py:37:41:37:47 | ControlFlowNode for request | -| sendgrid_mail.py:14:22:14:28 | ControlFlowNode for request | sendgrid_mail.py:14:22:14:49 | ControlFlowNode for Subscript | -| sendgrid_mail.py:26:34:26:40 | ControlFlowNode for request | sendgrid_mail.py:26:34:26:61 | ControlFlowNode for Subscript | -| sendgrid_mail.py:26:34:26:61 | ControlFlowNode for Subscript | sendgrid_mail.py:26:22:26:62 | ControlFlowNode for HtmlContent() | -| sendgrid_mail.py:37:41:37:47 | ControlFlowNode for request | sendgrid_mail.py:37:41:37:68 | ControlFlowNode for Subscript | -| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for ImportMember | sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | -| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | -| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:27:50:27:56 | ControlFlowNode for request | -| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:50:41:56 | ControlFlowNode for request | -| sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:16:26:16:79 | ControlFlowNode for Attribute() | -| sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:27:25:27:77 | ControlFlowNode for Attribute() | -| sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:25:41:79 | ControlFlowNode for Attribute() | -| sendgrid_via_mail_send_post_request_body_bad.py:27:50:27:56 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:27:25:27:77 | ControlFlowNode for Attribute() | -| sendgrid_via_mail_send_post_request_body_bad.py:27:50:27:56 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:25:41:79 | ControlFlowNode for Attribute() | -| sendgrid_via_mail_send_post_request_body_bad.py:41:50:41:56 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:25:41:79 | ControlFlowNode for Attribute() | -| smtplib_bad_subparts.py:2:26:2:32 | ControlFlowNode for ImportMember | smtplib_bad_subparts.py:2:26:2:32 | ControlFlowNode for request | -| smtplib_bad_subparts.py:2:26:2:32 | ControlFlowNode for request | smtplib_bad_subparts.py:17:12:17:18 | ControlFlowNode for request | -| smtplib_bad_subparts.py:17:5:17:8 | ControlFlowNode for name | smtplib_bad_subparts.py:20:5:20:8 | ControlFlowNode for html | -| smtplib_bad_subparts.py:17:12:17:18 | ControlFlowNode for request | smtplib_bad_subparts.py:17:5:17:8 | ControlFlowNode for name | -| smtplib_bad_subparts.py:20:5:20:8 | ControlFlowNode for html | smtplib_bad_subparts.py:24:22:24:25 | ControlFlowNode for html | -| smtplib_bad_via_attach.py:2:26:2:32 | ControlFlowNode for ImportMember | smtplib_bad_via_attach.py:2:26:2:32 | ControlFlowNode for request | -| smtplib_bad_via_attach.py:2:26:2:32 | ControlFlowNode for request | smtplib_bad_via_attach.py:20:12:20:18 | ControlFlowNode for request | -| smtplib_bad_via_attach.py:20:5:20:8 | ControlFlowNode for name | smtplib_bad_via_attach.py:23:5:23:8 | ControlFlowNode for html | -| smtplib_bad_via_attach.py:20:12:20:18 | ControlFlowNode for request | smtplib_bad_via_attach.py:20:5:20:8 | ControlFlowNode for name | -| smtplib_bad_via_attach.py:23:5:23:8 | ControlFlowNode for html | smtplib_bad_via_attach.py:27:22:27:25 | ControlFlowNode for html | +| flask_mail.py:1:19:1:25 | ControlFlowNode for ImportMember | flask_mail.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| flask_mail.py:1:19:1:25 | ControlFlowNode for request | flask_mail.py:13:22:13:28 | ControlFlowNode for request | provenance | | +| flask_mail.py:1:19:1:25 | ControlFlowNode for request | flask_mail.py:18:14:18:20 | ControlFlowNode for request | provenance | | +| flask_mail.py:1:19:1:25 | ControlFlowNode for request | flask_mail.py:31:24:31:30 | ControlFlowNode for request | provenance | | +| flask_mail.py:13:22:13:28 | ControlFlowNode for request | flask_mail.py:13:22:13:41 | ControlFlowNode for Subscript | provenance | | +| flask_mail.py:13:22:13:28 | ControlFlowNode for request | flask_mail.py:18:14:18:33 | ControlFlowNode for Subscript | provenance | | +| flask_mail.py:18:14:18:20 | ControlFlowNode for request | flask_mail.py:18:14:18:33 | ControlFlowNode for Subscript | provenance | | +| flask_mail.py:31:24:31:30 | ControlFlowNode for request | flask_mail.py:31:24:31:43 | ControlFlowNode for Subscript | provenance | | +| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for ImportMember | sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | sendgrid_mail.py:14:22:14:28 | ControlFlowNode for request | provenance | | +| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | sendgrid_mail.py:26:34:26:40 | ControlFlowNode for request | provenance | | +| sendgrid_mail.py:1:19:1:25 | ControlFlowNode for request | sendgrid_mail.py:37:41:37:47 | ControlFlowNode for request | provenance | | +| sendgrid_mail.py:14:22:14:28 | ControlFlowNode for request | sendgrid_mail.py:14:22:14:49 | ControlFlowNode for Subscript | provenance | | +| sendgrid_mail.py:26:34:26:40 | ControlFlowNode for request | sendgrid_mail.py:26:34:26:61 | ControlFlowNode for Subscript | provenance | | +| sendgrid_mail.py:26:34:26:61 | ControlFlowNode for Subscript | sendgrid_mail.py:26:22:26:62 | ControlFlowNode for HtmlContent() | provenance | | +| sendgrid_mail.py:37:41:37:47 | ControlFlowNode for request | sendgrid_mail.py:37:41:37:68 | ControlFlowNode for Subscript | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for ImportMember | sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:27:50:27:56 | ControlFlowNode for request | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:3:19:3:25 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:50:41:56 | ControlFlowNode for request | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:16:26:16:79 | ControlFlowNode for Attribute() | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:27:25:27:77 | ControlFlowNode for Attribute() | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:16:51:16:57 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:25:41:79 | ControlFlowNode for Attribute() | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:27:50:27:56 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:27:25:27:77 | ControlFlowNode for Attribute() | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:27:50:27:56 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:25:41:79 | ControlFlowNode for Attribute() | provenance | | +| sendgrid_via_mail_send_post_request_body_bad.py:41:50:41:56 | ControlFlowNode for request | sendgrid_via_mail_send_post_request_body_bad.py:41:25:41:79 | ControlFlowNode for Attribute() | provenance | | +| smtplib_bad_subparts.py:2:26:2:32 | ControlFlowNode for ImportMember | smtplib_bad_subparts.py:2:26:2:32 | ControlFlowNode for request | provenance | | +| smtplib_bad_subparts.py:2:26:2:32 | ControlFlowNode for request | smtplib_bad_subparts.py:17:12:17:18 | ControlFlowNode for request | provenance | | +| smtplib_bad_subparts.py:17:5:17:8 | ControlFlowNode for name | smtplib_bad_subparts.py:20:5:20:8 | ControlFlowNode for html | provenance | | +| smtplib_bad_subparts.py:17:12:17:18 | ControlFlowNode for request | smtplib_bad_subparts.py:17:5:17:8 | ControlFlowNode for name | provenance | | +| smtplib_bad_subparts.py:20:5:20:8 | ControlFlowNode for html | smtplib_bad_subparts.py:24:22:24:25 | ControlFlowNode for html | provenance | | +| smtplib_bad_via_attach.py:2:26:2:32 | ControlFlowNode for ImportMember | smtplib_bad_via_attach.py:2:26:2:32 | ControlFlowNode for request | provenance | | +| smtplib_bad_via_attach.py:2:26:2:32 | ControlFlowNode for request | smtplib_bad_via_attach.py:20:12:20:18 | ControlFlowNode for request | provenance | | +| smtplib_bad_via_attach.py:20:5:20:8 | ControlFlowNode for name | smtplib_bad_via_attach.py:23:5:23:8 | ControlFlowNode for html | provenance | | +| smtplib_bad_via_attach.py:20:12:20:18 | ControlFlowNode for request | smtplib_bad_via_attach.py:20:5:20:8 | ControlFlowNode for name | provenance | | +| smtplib_bad_via_attach.py:23:5:23:8 | ControlFlowNode for html | smtplib_bad_via_attach.py:27:22:27:25 | ControlFlowNode for html | provenance | | nodes | django_mail.py:14:48:14:82 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | django_mail.py:23:30:23:64 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected b/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected index fba2ae1acdc7..5f899a4d1a12 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-091-XsltInjection/XsltInjection.expected @@ -1,55 +1,55 @@ edges -| xslt.py:3:26:3:32 | ControlFlowNode for ImportMember | xslt.py:3:26:3:32 | ControlFlowNode for request | -| xslt.py:3:26:3:32 | ControlFlowNode for request | xslt.py:10:17:10:23 | ControlFlowNode for request | -| xslt.py:10:5:10:13 | ControlFlowNode for xsltQuery | xslt.py:11:27:11:35 | ControlFlowNode for xsltQuery | -| xslt.py:10:17:10:23 | ControlFlowNode for request | xslt.py:10:17:10:28 | ControlFlowNode for Attribute | -| xslt.py:10:17:10:28 | ControlFlowNode for Attribute | xslt.py:10:17:10:43 | ControlFlowNode for Attribute() | -| xslt.py:10:17:10:43 | ControlFlowNode for Attribute() | xslt.py:10:5:10:13 | ControlFlowNode for xsltQuery | -| xslt.py:11:5:11:13 | ControlFlowNode for xslt_root | xslt.py:14:29:14:37 | ControlFlowNode for xslt_root | -| xslt.py:11:17:11:36 | ControlFlowNode for Attribute() | xslt.py:11:5:11:13 | ControlFlowNode for xslt_root | -| xslt.py:11:27:11:35 | ControlFlowNode for xsltQuery | xslt.py:11:17:11:36 | ControlFlowNode for Attribute() | -| xsltInjection.py:3:26:3:32 | ControlFlowNode for ImportMember | xsltInjection.py:3:26:3:32 | ControlFlowNode for request | -| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:10:17:10:23 | ControlFlowNode for request | -| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:17:17:17:23 | ControlFlowNode for request | -| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:26:17:26:23 | ControlFlowNode for request | -| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:35:17:35:23 | ControlFlowNode for request | -| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:44:17:44:23 | ControlFlowNode for request | -| xsltInjection.py:10:5:10:13 | ControlFlowNode for xsltQuery | xsltInjection.py:11:27:11:35 | ControlFlowNode for xsltQuery | -| xsltInjection.py:10:17:10:23 | ControlFlowNode for request | xsltInjection.py:10:17:10:28 | ControlFlowNode for Attribute | -| xsltInjection.py:10:17:10:28 | ControlFlowNode for Attribute | xsltInjection.py:10:17:10:43 | ControlFlowNode for Attribute() | -| xsltInjection.py:10:17:10:43 | ControlFlowNode for Attribute() | xsltInjection.py:10:5:10:13 | ControlFlowNode for xsltQuery | -| xsltInjection.py:11:5:11:13 | ControlFlowNode for xslt_root | xsltInjection.py:12:28:12:36 | ControlFlowNode for xslt_root | -| xsltInjection.py:11:17:11:36 | ControlFlowNode for Attribute() | xsltInjection.py:11:5:11:13 | ControlFlowNode for xslt_root | -| xsltInjection.py:11:27:11:35 | ControlFlowNode for xsltQuery | xsltInjection.py:11:17:11:36 | ControlFlowNode for Attribute() | -| xsltInjection.py:17:5:17:13 | ControlFlowNode for xsltQuery | xsltInjection.py:18:27:18:35 | ControlFlowNode for xsltQuery | -| xsltInjection.py:17:17:17:23 | ControlFlowNode for request | xsltInjection.py:17:17:17:28 | ControlFlowNode for Attribute | -| xsltInjection.py:17:17:17:28 | ControlFlowNode for Attribute | xsltInjection.py:17:17:17:43 | ControlFlowNode for Attribute() | -| xsltInjection.py:17:17:17:43 | ControlFlowNode for Attribute() | xsltInjection.py:17:5:17:13 | ControlFlowNode for xsltQuery | -| xsltInjection.py:18:5:18:13 | ControlFlowNode for xslt_root | xsltInjection.py:21:29:21:37 | ControlFlowNode for xslt_root | -| xsltInjection.py:18:17:18:36 | ControlFlowNode for Attribute() | xsltInjection.py:18:5:18:13 | ControlFlowNode for xslt_root | -| xsltInjection.py:18:27:18:35 | ControlFlowNode for xsltQuery | xsltInjection.py:18:17:18:36 | ControlFlowNode for Attribute() | -| xsltInjection.py:26:5:26:13 | ControlFlowNode for xsltQuery | xsltInjection.py:27:27:27:35 | ControlFlowNode for xsltQuery | -| xsltInjection.py:26:17:26:23 | ControlFlowNode for request | xsltInjection.py:26:17:26:28 | ControlFlowNode for Attribute | -| xsltInjection.py:26:17:26:28 | ControlFlowNode for Attribute | xsltInjection.py:26:17:26:43 | ControlFlowNode for Attribute() | -| xsltInjection.py:26:17:26:43 | ControlFlowNode for Attribute() | xsltInjection.py:26:5:26:13 | ControlFlowNode for xsltQuery | -| xsltInjection.py:27:5:27:13 | ControlFlowNode for xslt_root | xsltInjection.py:31:24:31:32 | ControlFlowNode for xslt_root | -| xsltInjection.py:27:17:27:36 | ControlFlowNode for Attribute() | xsltInjection.py:27:5:27:13 | ControlFlowNode for xslt_root | -| xsltInjection.py:27:27:27:35 | ControlFlowNode for xsltQuery | xsltInjection.py:27:17:27:36 | ControlFlowNode for Attribute() | -| xsltInjection.py:35:5:35:13 | ControlFlowNode for xsltQuery | xsltInjection.py:36:34:36:42 | ControlFlowNode for xsltQuery | -| xsltInjection.py:35:17:35:23 | ControlFlowNode for request | xsltInjection.py:35:17:35:28 | ControlFlowNode for Attribute | -| xsltInjection.py:35:17:35:28 | ControlFlowNode for Attribute | xsltInjection.py:35:17:35:43 | ControlFlowNode for Attribute() | -| xsltInjection.py:35:17:35:43 | ControlFlowNode for Attribute() | xsltInjection.py:35:5:35:13 | ControlFlowNode for xsltQuery | -| xsltInjection.py:36:5:36:13 | ControlFlowNode for xslt_root | xsltInjection.py:40:24:40:32 | ControlFlowNode for xslt_root | -| xsltInjection.py:36:17:36:43 | ControlFlowNode for Attribute() | xsltInjection.py:36:5:36:13 | ControlFlowNode for xslt_root | -| xsltInjection.py:36:34:36:42 | ControlFlowNode for xsltQuery | xsltInjection.py:36:17:36:43 | ControlFlowNode for Attribute() | -| xsltInjection.py:44:5:44:13 | ControlFlowNode for xsltQuery | xsltInjection.py:45:5:45:15 | ControlFlowNode for xsltStrings | -| xsltInjection.py:44:17:44:23 | ControlFlowNode for request | xsltInjection.py:44:17:44:28 | ControlFlowNode for Attribute | -| xsltInjection.py:44:17:44:28 | ControlFlowNode for Attribute | xsltInjection.py:44:17:44:43 | ControlFlowNode for Attribute() | -| xsltInjection.py:44:17:44:43 | ControlFlowNode for Attribute() | xsltInjection.py:44:5:44:13 | ControlFlowNode for xsltQuery | -| xsltInjection.py:45:5:45:15 | ControlFlowNode for xsltStrings | xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings | -| xsltInjection.py:46:5:46:13 | ControlFlowNode for xslt_root | xsltInjection.py:50:24:50:32 | ControlFlowNode for xslt_root | -| xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | xsltInjection.py:46:5:46:13 | ControlFlowNode for xslt_root | -| xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings | xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | +| xslt.py:3:26:3:32 | ControlFlowNode for ImportMember | xslt.py:3:26:3:32 | ControlFlowNode for request | provenance | | +| xslt.py:3:26:3:32 | ControlFlowNode for request | xslt.py:10:17:10:23 | ControlFlowNode for request | provenance | | +| xslt.py:10:5:10:13 | ControlFlowNode for xsltQuery | xslt.py:11:27:11:35 | ControlFlowNode for xsltQuery | provenance | | +| xslt.py:10:17:10:23 | ControlFlowNode for request | xslt.py:10:17:10:28 | ControlFlowNode for Attribute | provenance | | +| xslt.py:10:17:10:28 | ControlFlowNode for Attribute | xslt.py:10:17:10:43 | ControlFlowNode for Attribute() | provenance | | +| xslt.py:10:17:10:43 | ControlFlowNode for Attribute() | xslt.py:10:5:10:13 | ControlFlowNode for xsltQuery | provenance | | +| xslt.py:11:5:11:13 | ControlFlowNode for xslt_root | xslt.py:14:29:14:37 | ControlFlowNode for xslt_root | provenance | | +| xslt.py:11:17:11:36 | ControlFlowNode for Attribute() | xslt.py:11:5:11:13 | ControlFlowNode for xslt_root | provenance | | +| xslt.py:11:27:11:35 | ControlFlowNode for xsltQuery | xslt.py:11:17:11:36 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:3:26:3:32 | ControlFlowNode for ImportMember | xsltInjection.py:3:26:3:32 | ControlFlowNode for request | provenance | | +| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:10:17:10:23 | ControlFlowNode for request | provenance | | +| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:17:17:17:23 | ControlFlowNode for request | provenance | | +| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:26:17:26:23 | ControlFlowNode for request | provenance | | +| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:35:17:35:23 | ControlFlowNode for request | provenance | | +| xsltInjection.py:3:26:3:32 | ControlFlowNode for request | xsltInjection.py:44:17:44:23 | ControlFlowNode for request | provenance | | +| xsltInjection.py:10:5:10:13 | ControlFlowNode for xsltQuery | xsltInjection.py:11:27:11:35 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:10:17:10:23 | ControlFlowNode for request | xsltInjection.py:10:17:10:28 | ControlFlowNode for Attribute | provenance | | +| xsltInjection.py:10:17:10:28 | ControlFlowNode for Attribute | xsltInjection.py:10:17:10:43 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:10:17:10:43 | ControlFlowNode for Attribute() | xsltInjection.py:10:5:10:13 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:11:5:11:13 | ControlFlowNode for xslt_root | xsltInjection.py:12:28:12:36 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:11:17:11:36 | ControlFlowNode for Attribute() | xsltInjection.py:11:5:11:13 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:11:27:11:35 | ControlFlowNode for xsltQuery | xsltInjection.py:11:17:11:36 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:17:5:17:13 | ControlFlowNode for xsltQuery | xsltInjection.py:18:27:18:35 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:17:17:17:23 | ControlFlowNode for request | xsltInjection.py:17:17:17:28 | ControlFlowNode for Attribute | provenance | | +| xsltInjection.py:17:17:17:28 | ControlFlowNode for Attribute | xsltInjection.py:17:17:17:43 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:17:17:17:43 | ControlFlowNode for Attribute() | xsltInjection.py:17:5:17:13 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:18:5:18:13 | ControlFlowNode for xslt_root | xsltInjection.py:21:29:21:37 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:18:17:18:36 | ControlFlowNode for Attribute() | xsltInjection.py:18:5:18:13 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:18:27:18:35 | ControlFlowNode for xsltQuery | xsltInjection.py:18:17:18:36 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:26:5:26:13 | ControlFlowNode for xsltQuery | xsltInjection.py:27:27:27:35 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:26:17:26:23 | ControlFlowNode for request | xsltInjection.py:26:17:26:28 | ControlFlowNode for Attribute | provenance | | +| xsltInjection.py:26:17:26:28 | ControlFlowNode for Attribute | xsltInjection.py:26:17:26:43 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:26:17:26:43 | ControlFlowNode for Attribute() | xsltInjection.py:26:5:26:13 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:27:5:27:13 | ControlFlowNode for xslt_root | xsltInjection.py:31:24:31:32 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:27:17:27:36 | ControlFlowNode for Attribute() | xsltInjection.py:27:5:27:13 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:27:27:27:35 | ControlFlowNode for xsltQuery | xsltInjection.py:27:17:27:36 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:35:5:35:13 | ControlFlowNode for xsltQuery | xsltInjection.py:36:34:36:42 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:35:17:35:23 | ControlFlowNode for request | xsltInjection.py:35:17:35:28 | ControlFlowNode for Attribute | provenance | | +| xsltInjection.py:35:17:35:28 | ControlFlowNode for Attribute | xsltInjection.py:35:17:35:43 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:35:17:35:43 | ControlFlowNode for Attribute() | xsltInjection.py:35:5:35:13 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:36:5:36:13 | ControlFlowNode for xslt_root | xsltInjection.py:40:24:40:32 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:36:17:36:43 | ControlFlowNode for Attribute() | xsltInjection.py:36:5:36:13 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:36:34:36:42 | ControlFlowNode for xsltQuery | xsltInjection.py:36:17:36:43 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:44:5:44:13 | ControlFlowNode for xsltQuery | xsltInjection.py:45:5:45:15 | ControlFlowNode for xsltStrings | provenance | | +| xsltInjection.py:44:17:44:23 | ControlFlowNode for request | xsltInjection.py:44:17:44:28 | ControlFlowNode for Attribute | provenance | | +| xsltInjection.py:44:17:44:28 | ControlFlowNode for Attribute | xsltInjection.py:44:17:44:43 | ControlFlowNode for Attribute() | provenance | | +| xsltInjection.py:44:17:44:43 | ControlFlowNode for Attribute() | xsltInjection.py:44:5:44:13 | ControlFlowNode for xsltQuery | provenance | | +| xsltInjection.py:45:5:45:15 | ControlFlowNode for xsltStrings | xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings | provenance | | +| xsltInjection.py:46:5:46:13 | ControlFlowNode for xslt_root | xsltInjection.py:50:24:50:32 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | xsltInjection.py:46:5:46:13 | ControlFlowNode for xslt_root | provenance | | +| xsltInjection.py:46:38:46:48 | ControlFlowNode for xsltStrings | xsltInjection.py:46:17:46:49 | ControlFlowNode for Attribute() | provenance | | nodes | xslt.py:3:26:3:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | xslt.py:3:26:3:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-113/HeaderInjection.expected b/python/ql/test/experimental/query-tests/Security/CWE-113/HeaderInjection.expected index 55a7c5de9998..67144ed11995 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-113/HeaderInjection.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-113/HeaderInjection.expected @@ -1,21 +1,21 @@ edges -| django_bad.py:5:5:5:14 | ControlFlowNode for rfs_header | django_bad.py:7:40:7:49 | ControlFlowNode for rfs_header | -| django_bad.py:5:18:5:58 | ControlFlowNode for Attribute() | django_bad.py:5:5:5:14 | ControlFlowNode for rfs_header | -| django_bad.py:12:5:12:14 | ControlFlowNode for rfs_header | django_bad.py:14:30:14:39 | ControlFlowNode for rfs_header | -| django_bad.py:12:18:12:58 | ControlFlowNode for Attribute() | django_bad.py:12:5:12:14 | ControlFlowNode for rfs_header | -| flask_bad.py:1:29:1:35 | ControlFlowNode for ImportMember | flask_bad.py:1:29:1:35 | ControlFlowNode for request | -| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:9:18:9:24 | ControlFlowNode for request | -| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:19:18:19:24 | ControlFlowNode for request | -| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:27:18:27:24 | ControlFlowNode for request | -| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:35:18:35:24 | ControlFlowNode for request | -| flask_bad.py:9:5:9:14 | ControlFlowNode for rfs_header | flask_bad.py:12:31:12:40 | ControlFlowNode for rfs_header | -| flask_bad.py:9:18:9:24 | ControlFlowNode for request | flask_bad.py:9:5:9:14 | ControlFlowNode for rfs_header | -| flask_bad.py:19:5:19:14 | ControlFlowNode for rfs_header | flask_bad.py:21:38:21:47 | ControlFlowNode for rfs_header | -| flask_bad.py:19:18:19:24 | ControlFlowNode for request | flask_bad.py:19:5:19:14 | ControlFlowNode for rfs_header | -| flask_bad.py:27:5:27:14 | ControlFlowNode for rfs_header | flask_bad.py:29:34:29:43 | ControlFlowNode for rfs_header | -| flask_bad.py:27:18:27:24 | ControlFlowNode for request | flask_bad.py:27:5:27:14 | ControlFlowNode for rfs_header | -| flask_bad.py:35:5:35:14 | ControlFlowNode for rfs_header | flask_bad.py:38:24:38:33 | ControlFlowNode for rfs_header | -| flask_bad.py:35:18:35:24 | ControlFlowNode for request | flask_bad.py:35:5:35:14 | ControlFlowNode for rfs_header | +| django_bad.py:5:5:5:14 | ControlFlowNode for rfs_header | django_bad.py:7:40:7:49 | ControlFlowNode for rfs_header | provenance | | +| django_bad.py:5:18:5:58 | ControlFlowNode for Attribute() | django_bad.py:5:5:5:14 | ControlFlowNode for rfs_header | provenance | | +| django_bad.py:12:5:12:14 | ControlFlowNode for rfs_header | django_bad.py:14:30:14:39 | ControlFlowNode for rfs_header | provenance | | +| django_bad.py:12:18:12:58 | ControlFlowNode for Attribute() | django_bad.py:12:5:12:14 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:1:29:1:35 | ControlFlowNode for ImportMember | flask_bad.py:1:29:1:35 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:9:18:9:24 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:19:18:19:24 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:27:18:27:24 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:29:1:35 | ControlFlowNode for request | flask_bad.py:35:18:35:24 | ControlFlowNode for request | provenance | | +| flask_bad.py:9:5:9:14 | ControlFlowNode for rfs_header | flask_bad.py:12:31:12:40 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:9:18:9:24 | ControlFlowNode for request | flask_bad.py:9:5:9:14 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:19:5:19:14 | ControlFlowNode for rfs_header | flask_bad.py:21:38:21:47 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:19:18:19:24 | ControlFlowNode for request | flask_bad.py:19:5:19:14 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:27:5:27:14 | ControlFlowNode for rfs_header | flask_bad.py:29:34:29:43 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:27:18:27:24 | ControlFlowNode for request | flask_bad.py:27:5:27:14 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:35:5:35:14 | ControlFlowNode for rfs_header | flask_bad.py:38:24:38:33 | ControlFlowNode for rfs_header | provenance | | +| flask_bad.py:35:18:35:24 | ControlFlowNode for request | flask_bad.py:35:5:35:14 | ControlFlowNode for rfs_header | provenance | | nodes | django_bad.py:5:5:5:14 | ControlFlowNode for rfs_header | semmle.label | ControlFlowNode for rfs_header | | django_bad.py:5:18:5:58 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-1236/CsvInjection.expected b/python/ql/test/experimental/query-tests/Security/CWE-1236/CsvInjection.expected index 2fb925fb6645..170dda187e93 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-1236/CsvInjection.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-1236/CsvInjection.expected @@ -1,16 +1,16 @@ edges -| csv_bad.py:9:19:9:25 | ControlFlowNode for ImportMember | csv_bad.py:9:19:9:25 | ControlFlowNode for request | -| csv_bad.py:9:19:9:25 | ControlFlowNode for request | csv_bad.py:16:16:16:22 | ControlFlowNode for request | -| csv_bad.py:9:19:9:25 | ControlFlowNode for request | csv_bad.py:24:16:24:22 | ControlFlowNode for request | -| csv_bad.py:16:5:16:12 | ControlFlowNode for csv_data | csv_bad.py:18:24:18:31 | ControlFlowNode for csv_data | -| csv_bad.py:16:5:16:12 | ControlFlowNode for csv_data | csv_bad.py:19:25:19:32 | ControlFlowNode for csv_data | -| csv_bad.py:16:16:16:22 | ControlFlowNode for request | csv_bad.py:16:16:16:27 | ControlFlowNode for Attribute | -| csv_bad.py:16:16:16:27 | ControlFlowNode for Attribute | csv_bad.py:16:16:16:38 | ControlFlowNode for Attribute() | -| csv_bad.py:16:16:16:38 | ControlFlowNode for Attribute() | csv_bad.py:16:5:16:12 | ControlFlowNode for csv_data | -| csv_bad.py:24:5:24:12 | ControlFlowNode for csv_data | csv_bad.py:25:46:25:53 | ControlFlowNode for csv_data | -| csv_bad.py:24:16:24:22 | ControlFlowNode for request | csv_bad.py:24:16:24:27 | ControlFlowNode for Attribute | -| csv_bad.py:24:16:24:27 | ControlFlowNode for Attribute | csv_bad.py:24:16:24:38 | ControlFlowNode for Attribute() | -| csv_bad.py:24:16:24:38 | ControlFlowNode for Attribute() | csv_bad.py:24:5:24:12 | ControlFlowNode for csv_data | +| csv_bad.py:9:19:9:25 | ControlFlowNode for ImportMember | csv_bad.py:9:19:9:25 | ControlFlowNode for request | provenance | | +| csv_bad.py:9:19:9:25 | ControlFlowNode for request | csv_bad.py:16:16:16:22 | ControlFlowNode for request | provenance | | +| csv_bad.py:9:19:9:25 | ControlFlowNode for request | csv_bad.py:24:16:24:22 | ControlFlowNode for request | provenance | | +| csv_bad.py:16:5:16:12 | ControlFlowNode for csv_data | csv_bad.py:18:24:18:31 | ControlFlowNode for csv_data | provenance | | +| csv_bad.py:16:5:16:12 | ControlFlowNode for csv_data | csv_bad.py:19:25:19:32 | ControlFlowNode for csv_data | provenance | | +| csv_bad.py:16:16:16:22 | ControlFlowNode for request | csv_bad.py:16:16:16:27 | ControlFlowNode for Attribute | provenance | | +| csv_bad.py:16:16:16:27 | ControlFlowNode for Attribute | csv_bad.py:16:16:16:38 | ControlFlowNode for Attribute() | provenance | | +| csv_bad.py:16:16:16:38 | ControlFlowNode for Attribute() | csv_bad.py:16:5:16:12 | ControlFlowNode for csv_data | provenance | | +| csv_bad.py:24:5:24:12 | ControlFlowNode for csv_data | csv_bad.py:25:46:25:53 | ControlFlowNode for csv_data | provenance | | +| csv_bad.py:24:16:24:22 | ControlFlowNode for request | csv_bad.py:24:16:24:27 | ControlFlowNode for Attribute | provenance | | +| csv_bad.py:24:16:24:27 | ControlFlowNode for Attribute | csv_bad.py:24:16:24:38 | ControlFlowNode for Attribute() | provenance | | +| csv_bad.py:24:16:24:38 | ControlFlowNode for Attribute() | csv_bad.py:24:5:24:12 | ControlFlowNode for csv_data | provenance | | nodes | csv_bad.py:9:19:9:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | csv_bad.py:9:19:9:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-176/UnicodeBypassValidation.expected b/python/ql/test/experimental/query-tests/Security/CWE-176/UnicodeBypassValidation.expected index 24f62f1a1077..aabdf46044eb 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-176/UnicodeBypassValidation.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-176/UnicodeBypassValidation.expected @@ -1,17 +1,17 @@ edges -| samples.py:2:26:2:32 | ControlFlowNode for ImportMember | samples.py:2:26:2:32 | ControlFlowNode for request | -| samples.py:2:26:2:32 | ControlFlowNode for request | samples.py:9:25:9:31 | ControlFlowNode for request | -| samples.py:2:26:2:32 | ControlFlowNode for request | samples.py:16:25:16:31 | ControlFlowNode for request | -| samples.py:9:5:9:14 | ControlFlowNode for user_input | samples.py:10:59:10:68 | ControlFlowNode for user_input | -| samples.py:9:18:9:47 | ControlFlowNode for escape() | samples.py:9:5:9:14 | ControlFlowNode for user_input | -| samples.py:9:25:9:31 | ControlFlowNode for request | samples.py:9:25:9:36 | ControlFlowNode for Attribute | -| samples.py:9:25:9:36 | ControlFlowNode for Attribute | samples.py:9:25:9:46 | ControlFlowNode for Attribute() | -| samples.py:9:25:9:46 | ControlFlowNode for Attribute() | samples.py:9:18:9:47 | ControlFlowNode for escape() | -| samples.py:16:5:16:14 | ControlFlowNode for user_input | samples.py:20:62:20:71 | ControlFlowNode for user_input | -| samples.py:16:18:16:47 | ControlFlowNode for escape() | samples.py:16:5:16:14 | ControlFlowNode for user_input | -| samples.py:16:25:16:31 | ControlFlowNode for request | samples.py:16:25:16:36 | ControlFlowNode for Attribute | -| samples.py:16:25:16:36 | ControlFlowNode for Attribute | samples.py:16:25:16:46 | ControlFlowNode for Attribute() | -| samples.py:16:25:16:46 | ControlFlowNode for Attribute() | samples.py:16:18:16:47 | ControlFlowNode for escape() | +| samples.py:2:26:2:32 | ControlFlowNode for ImportMember | samples.py:2:26:2:32 | ControlFlowNode for request | provenance | | +| samples.py:2:26:2:32 | ControlFlowNode for request | samples.py:9:25:9:31 | ControlFlowNode for request | provenance | | +| samples.py:2:26:2:32 | ControlFlowNode for request | samples.py:16:25:16:31 | ControlFlowNode for request | provenance | | +| samples.py:9:5:9:14 | ControlFlowNode for user_input | samples.py:10:59:10:68 | ControlFlowNode for user_input | provenance | | +| samples.py:9:18:9:47 | ControlFlowNode for escape() | samples.py:9:5:9:14 | ControlFlowNode for user_input | provenance | | +| samples.py:9:25:9:31 | ControlFlowNode for request | samples.py:9:25:9:36 | ControlFlowNode for Attribute | provenance | | +| samples.py:9:25:9:36 | ControlFlowNode for Attribute | samples.py:9:25:9:46 | ControlFlowNode for Attribute() | provenance | | +| samples.py:9:25:9:46 | ControlFlowNode for Attribute() | samples.py:9:18:9:47 | ControlFlowNode for escape() | provenance | | +| samples.py:16:5:16:14 | ControlFlowNode for user_input | samples.py:20:62:20:71 | ControlFlowNode for user_input | provenance | | +| samples.py:16:18:16:47 | ControlFlowNode for escape() | samples.py:16:5:16:14 | ControlFlowNode for user_input | provenance | | +| samples.py:16:25:16:31 | ControlFlowNode for request | samples.py:16:25:16:36 | ControlFlowNode for Attribute | provenance | | +| samples.py:16:25:16:36 | ControlFlowNode for Attribute | samples.py:16:25:16:46 | ControlFlowNode for Attribute() | provenance | | +| samples.py:16:25:16:46 | ControlFlowNode for Attribute() | samples.py:16:18:16:47 | ControlFlowNode for escape() | provenance | | nodes | samples.py:2:26:2:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | samples.py:2:26:2:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstHash/PossibleTimingAttackAgainstHash.expected b/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstHash/PossibleTimingAttackAgainstHash.expected index c0fbf3b7eab0..8846e9087981 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstHash/PossibleTimingAttackAgainstHash.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstHash/PossibleTimingAttackAgainstHash.expected @@ -1,7 +1,7 @@ edges -| TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | TimingAttackAgainstHash.py:27:24:27:32 | ControlFlowNode for signature | -| TimingAttackAgainstHash.py:26:17:26:41 | ControlFlowNode for Attribute() | TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | -| TimingAttackAgainstHash.py:30:12:30:47 | ControlFlowNode for Attribute() | TimingAttackAgainstHash.py:37:19:37:48 | ControlFlowNode for sign() | +| TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | TimingAttackAgainstHash.py:27:24:27:32 | ControlFlowNode for signature | provenance | | +| TimingAttackAgainstHash.py:26:17:26:41 | ControlFlowNode for Attribute() | TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | provenance | | +| TimingAttackAgainstHash.py:30:12:30:47 | ControlFlowNode for Attribute() | TimingAttackAgainstHash.py:37:19:37:48 | ControlFlowNode for sign() | provenance | | nodes | TimingAttackAgainstHash.py:26:5:26:13 | ControlFlowNode for signature | semmle.label | ControlFlowNode for signature | | TimingAttackAgainstHash.py:26:17:26:41 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstSensitiveInfo/PossibleTimingAttackAgainstSensitiveInfo.expected b/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstSensitiveInfo/PossibleTimingAttackAgainstSensitiveInfo.expected index 724913de062f..80b074348966 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstSensitiveInfo/PossibleTimingAttackAgainstSensitiveInfo.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-208/TimingAttackAgainstSensitiveInfo/PossibleTimingAttackAgainstSensitiveInfo.expected @@ -1,5 +1,5 @@ edges -| TimingAttackAgainstSensitiveInfo.py:15:9:15:16 | ControlFlowNode for password | TimingAttackAgainstSensitiveInfo.py:16:16:16:23 | ControlFlowNode for password | +| TimingAttackAgainstSensitiveInfo.py:15:9:15:16 | ControlFlowNode for password | TimingAttackAgainstSensitiveInfo.py:16:16:16:23 | ControlFlowNode for password | provenance | | nodes | TimingAttackAgainstSensitiveInfo.py:15:9:15:16 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | | TimingAttackAgainstSensitiveInfo.py:16:16:16:23 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-287-ConstantSecretKey/ConstantSecretKey.expected b/python/ql/test/experimental/query-tests/Security/CWE-287-ConstantSecretKey/ConstantSecretKey.expected index eebb4f2cf1f7..d339e0adc215 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-287-ConstantSecretKey/ConstantSecretKey.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-287-ConstantSecretKey/ConstantSecretKey.expected @@ -1,19 +1,19 @@ edges -| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:5:28:5:36 | ControlFlowNode for aConstant | -| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:6:18:6:26 | ControlFlowNode for aConstant | -| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:7:30:7:38 | ControlFlowNode for aConstant | -| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:8:36:8:44 | ControlFlowNode for aConstant | -| app_unsafe.py:4:13:4:23 | ControlFlowNode for Str | app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | -| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:12:18:12:26 | ControlFlowNode for aConstant | -| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:12:18:12:26 | ControlFlowNode for aConstant | -| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:17:38:17:46 | ControlFlowNode for aConstant | -| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:18:43:18:51 | ControlFlowNode for aConstant | -| config.py:7:13:7:23 | ControlFlowNode for Str | config.py:7:1:7:9 | ControlFlowNode for aConstant | -| config.py:12:18:12:26 | ControlFlowNode for aConstant | config.py:17:38:17:46 | ControlFlowNode for aConstant | -| config.py:12:18:12:26 | ControlFlowNode for aConstant | config.py:18:43:18:51 | ControlFlowNode for aConstant | -| config.py:17:38:17:46 | ControlFlowNode for aConstant | config.py:17:18:17:47 | ControlFlowNode for Attribute() | -| config.py:17:38:17:46 | ControlFlowNode for aConstant | config.py:18:43:18:51 | ControlFlowNode for aConstant | -| config.py:18:43:18:51 | ControlFlowNode for aConstant | config.py:18:18:18:52 | ControlFlowNode for Attribute() | +| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:5:28:5:36 | ControlFlowNode for aConstant | provenance | | +| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:6:18:6:26 | ControlFlowNode for aConstant | provenance | | +| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:7:30:7:38 | ControlFlowNode for aConstant | provenance | | +| app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | app_unsafe.py:8:36:8:44 | ControlFlowNode for aConstant | provenance | | +| app_unsafe.py:4:13:4:23 | ControlFlowNode for Str | app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | provenance | | +| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:12:18:12:26 | ControlFlowNode for aConstant | provenance | | +| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:12:18:12:26 | ControlFlowNode for aConstant | provenance | | +| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:17:38:17:46 | ControlFlowNode for aConstant | provenance | | +| config.py:7:1:7:9 | ControlFlowNode for aConstant | config.py:18:43:18:51 | ControlFlowNode for aConstant | provenance | | +| config.py:7:13:7:23 | ControlFlowNode for Str | config.py:7:1:7:9 | ControlFlowNode for aConstant | provenance | | +| config.py:12:18:12:26 | ControlFlowNode for aConstant | config.py:17:38:17:46 | ControlFlowNode for aConstant | provenance | | +| config.py:12:18:12:26 | ControlFlowNode for aConstant | config.py:18:43:18:51 | ControlFlowNode for aConstant | provenance | | +| config.py:17:38:17:46 | ControlFlowNode for aConstant | config.py:17:18:17:47 | ControlFlowNode for Attribute() | provenance | | +| config.py:17:38:17:46 | ControlFlowNode for aConstant | config.py:18:43:18:51 | ControlFlowNode for aConstant | provenance | | +| config.py:18:43:18:51 | ControlFlowNode for aConstant | config.py:18:18:18:52 | ControlFlowNode for Attribute() | provenance | | nodes | app_safe.py:5:28:5:37 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str | | app_unsafe.py:4:1:4:9 | ControlFlowNode for aConstant | semmle.label | ControlFlowNode for aConstant | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-327-UnsafeUsageOfClientSideEncryptionVersion/UnsafeUsageOfClientSideEncryptionVersion.expected b/python/ql/test/experimental/query-tests/Security/CWE-327-UnsafeUsageOfClientSideEncryptionVersion/UnsafeUsageOfClientSideEncryptionVersion.expected index 0bed45a110f3..d97d5510dfaa 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-327-UnsafeUsageOfClientSideEncryptionVersion/UnsafeUsageOfClientSideEncryptionVersion.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-327-UnsafeUsageOfClientSideEncryptionVersion/UnsafeUsageOfClientSideEncryptionVersion.expected @@ -1,45 +1,45 @@ edges -| test.py:3:1:3:3 | ControlFlowNode for BSC | test.py:7:19:7:21 | ControlFlowNode for BSC | -| test.py:3:1:3:3 | ControlFlowNode for BSC | test.py:35:19:35:21 | ControlFlowNode for BSC | -| test.py:3:1:3:3 | ControlFlowNode for BSC | test.py:66:19:66:21 | ControlFlowNode for BSC | -| test.py:3:7:3:51 | ControlFlowNode for Attribute() | test.py:3:1:3:3 | ControlFlowNode for BSC | -| test.py:7:5:7:15 | ControlFlowNode for blob_client | test.py:8:5:8:15 | ControlFlowNode for blob_client | -| test.py:7:19:7:21 | ControlFlowNode for BSC | test.py:7:19:7:42 | ControlFlowNode for Attribute() | -| test.py:7:19:7:42 | ControlFlowNode for Attribute() | test.py:7:5:7:15 | ControlFlowNode for blob_client | -| test.py:8:5:8:15 | ControlFlowNode for blob_client | test.py:9:5:9:15 | ControlFlowNode for blob_client | -| test.py:9:5:9:15 | ControlFlowNode for blob_client | test.py:9:5:9:15 | [post] ControlFlowNode for blob_client | -| test.py:9:5:9:15 | [post] ControlFlowNode for blob_client | test.py:11:9:11:19 | ControlFlowNode for blob_client | -| test.py:15:5:15:23 | ControlFlowNode for blob_service_client | test.py:16:5:16:23 | ControlFlowNode for blob_service_client | -| test.py:15:27:15:71 | ControlFlowNode for Attribute() | test.py:15:5:15:23 | ControlFlowNode for blob_service_client | -| test.py:16:5:16:23 | ControlFlowNode for blob_service_client | test.py:17:5:17:23 | ControlFlowNode for blob_service_client | -| test.py:17:5:17:23 | ControlFlowNode for blob_service_client | test.py:17:5:17:23 | [post] ControlFlowNode for blob_service_client | -| test.py:17:5:17:23 | [post] ControlFlowNode for blob_service_client | test.py:19:19:19:37 | ControlFlowNode for blob_service_client | -| test.py:19:5:19:15 | ControlFlowNode for blob_client | test.py:21:9:21:19 | ControlFlowNode for blob_client | -| test.py:19:19:19:37 | ControlFlowNode for blob_service_client | test.py:19:19:19:58 | ControlFlowNode for Attribute() | -| test.py:19:19:19:58 | ControlFlowNode for Attribute() | test.py:19:5:19:15 | ControlFlowNode for blob_client | -| test.py:25:5:25:20 | ControlFlowNode for container_client | test.py:26:5:26:20 | ControlFlowNode for container_client | -| test.py:25:24:25:66 | ControlFlowNode for Attribute() | test.py:25:5:25:20 | ControlFlowNode for container_client | -| test.py:26:5:26:20 | ControlFlowNode for container_client | test.py:27:5:27:20 | ControlFlowNode for container_client | -| test.py:27:5:27:20 | ControlFlowNode for container_client | test.py:27:5:27:20 | [post] ControlFlowNode for container_client | -| test.py:27:5:27:20 | [post] ControlFlowNode for container_client | test.py:29:19:29:34 | ControlFlowNode for container_client | -| test.py:29:5:29:15 | ControlFlowNode for blob_client | test.py:31:9:31:19 | ControlFlowNode for blob_client | -| test.py:29:19:29:34 | ControlFlowNode for container_client | test.py:29:19:29:55 | ControlFlowNode for Attribute() | -| test.py:29:19:29:55 | ControlFlowNode for Attribute() | test.py:29:5:29:15 | ControlFlowNode for blob_client | -| test.py:35:5:35:15 | ControlFlowNode for blob_client | test.py:36:5:36:15 | ControlFlowNode for blob_client | -| test.py:35:19:35:21 | ControlFlowNode for BSC | test.py:35:19:35:42 | ControlFlowNode for Attribute() | -| test.py:35:19:35:42 | ControlFlowNode for Attribute() | test.py:35:5:35:15 | ControlFlowNode for blob_client | -| test.py:36:5:36:15 | ControlFlowNode for blob_client | test.py:37:5:37:15 | ControlFlowNode for blob_client | -| test.py:37:5:37:15 | ControlFlowNode for blob_client | test.py:37:5:37:15 | [post] ControlFlowNode for blob_client | -| test.py:37:5:37:15 | [post] ControlFlowNode for blob_client | test.py:43:9:43:19 | ControlFlowNode for blob_client | -| test.py:66:5:66:15 | ControlFlowNode for blob_client | test.py:67:5:67:15 | ControlFlowNode for blob_client | -| test.py:66:19:66:21 | ControlFlowNode for BSC | test.py:66:19:66:42 | ControlFlowNode for Attribute() | -| test.py:66:19:66:42 | ControlFlowNode for Attribute() | test.py:66:5:66:15 | ControlFlowNode for blob_client | -| test.py:67:5:67:15 | ControlFlowNode for blob_client | test.py:68:5:68:15 | ControlFlowNode for blob_client | -| test.py:68:5:68:15 | ControlFlowNode for blob_client | test.py:68:5:68:15 | [post] ControlFlowNode for blob_client | -| test.py:68:5:68:15 | [post] ControlFlowNode for blob_client | test.py:69:12:69:22 | ControlFlowNode for blob_client | -| test.py:69:12:69:22 | ControlFlowNode for blob_client | test.py:73:10:73:33 | ControlFlowNode for get_unsafe_blob_client() | -| test.py:73:5:73:6 | ControlFlowNode for bc | test.py:75:9:75:10 | ControlFlowNode for bc | -| test.py:73:10:73:33 | ControlFlowNode for get_unsafe_blob_client() | test.py:73:5:73:6 | ControlFlowNode for bc | +| test.py:3:1:3:3 | ControlFlowNode for BSC | test.py:7:19:7:21 | ControlFlowNode for BSC | provenance | | +| test.py:3:1:3:3 | ControlFlowNode for BSC | test.py:35:19:35:21 | ControlFlowNode for BSC | provenance | | +| test.py:3:1:3:3 | ControlFlowNode for BSC | test.py:66:19:66:21 | ControlFlowNode for BSC | provenance | | +| test.py:3:7:3:51 | ControlFlowNode for Attribute() | test.py:3:1:3:3 | ControlFlowNode for BSC | provenance | | +| test.py:7:5:7:15 | ControlFlowNode for blob_client | test.py:8:5:8:15 | ControlFlowNode for blob_client | provenance | | +| test.py:7:19:7:21 | ControlFlowNode for BSC | test.py:7:19:7:42 | ControlFlowNode for Attribute() | provenance | | +| test.py:7:19:7:42 | ControlFlowNode for Attribute() | test.py:7:5:7:15 | ControlFlowNode for blob_client | provenance | | +| test.py:8:5:8:15 | ControlFlowNode for blob_client | test.py:9:5:9:15 | ControlFlowNode for blob_client | provenance | | +| test.py:9:5:9:15 | ControlFlowNode for blob_client | test.py:9:5:9:15 | [post] ControlFlowNode for blob_client | provenance | | +| test.py:9:5:9:15 | [post] ControlFlowNode for blob_client | test.py:11:9:11:19 | ControlFlowNode for blob_client | provenance | | +| test.py:15:5:15:23 | ControlFlowNode for blob_service_client | test.py:16:5:16:23 | ControlFlowNode for blob_service_client | provenance | | +| test.py:15:27:15:71 | ControlFlowNode for Attribute() | test.py:15:5:15:23 | ControlFlowNode for blob_service_client | provenance | | +| test.py:16:5:16:23 | ControlFlowNode for blob_service_client | test.py:17:5:17:23 | ControlFlowNode for blob_service_client | provenance | | +| test.py:17:5:17:23 | ControlFlowNode for blob_service_client | test.py:17:5:17:23 | [post] ControlFlowNode for blob_service_client | provenance | | +| test.py:17:5:17:23 | [post] ControlFlowNode for blob_service_client | test.py:19:19:19:37 | ControlFlowNode for blob_service_client | provenance | | +| test.py:19:5:19:15 | ControlFlowNode for blob_client | test.py:21:9:21:19 | ControlFlowNode for blob_client | provenance | | +| test.py:19:19:19:37 | ControlFlowNode for blob_service_client | test.py:19:19:19:58 | ControlFlowNode for Attribute() | provenance | | +| test.py:19:19:19:58 | ControlFlowNode for Attribute() | test.py:19:5:19:15 | ControlFlowNode for blob_client | provenance | | +| test.py:25:5:25:20 | ControlFlowNode for container_client | test.py:26:5:26:20 | ControlFlowNode for container_client | provenance | | +| test.py:25:24:25:66 | ControlFlowNode for Attribute() | test.py:25:5:25:20 | ControlFlowNode for container_client | provenance | | +| test.py:26:5:26:20 | ControlFlowNode for container_client | test.py:27:5:27:20 | ControlFlowNode for container_client | provenance | | +| test.py:27:5:27:20 | ControlFlowNode for container_client | test.py:27:5:27:20 | [post] ControlFlowNode for container_client | provenance | | +| test.py:27:5:27:20 | [post] ControlFlowNode for container_client | test.py:29:19:29:34 | ControlFlowNode for container_client | provenance | | +| test.py:29:5:29:15 | ControlFlowNode for blob_client | test.py:31:9:31:19 | ControlFlowNode for blob_client | provenance | | +| test.py:29:19:29:34 | ControlFlowNode for container_client | test.py:29:19:29:55 | ControlFlowNode for Attribute() | provenance | | +| test.py:29:19:29:55 | ControlFlowNode for Attribute() | test.py:29:5:29:15 | ControlFlowNode for blob_client | provenance | | +| test.py:35:5:35:15 | ControlFlowNode for blob_client | test.py:36:5:36:15 | ControlFlowNode for blob_client | provenance | | +| test.py:35:19:35:21 | ControlFlowNode for BSC | test.py:35:19:35:42 | ControlFlowNode for Attribute() | provenance | | +| test.py:35:19:35:42 | ControlFlowNode for Attribute() | test.py:35:5:35:15 | ControlFlowNode for blob_client | provenance | | +| test.py:36:5:36:15 | ControlFlowNode for blob_client | test.py:37:5:37:15 | ControlFlowNode for blob_client | provenance | | +| test.py:37:5:37:15 | ControlFlowNode for blob_client | test.py:37:5:37:15 | [post] ControlFlowNode for blob_client | provenance | | +| test.py:37:5:37:15 | [post] ControlFlowNode for blob_client | test.py:43:9:43:19 | ControlFlowNode for blob_client | provenance | | +| test.py:66:5:66:15 | ControlFlowNode for blob_client | test.py:67:5:67:15 | ControlFlowNode for blob_client | provenance | | +| test.py:66:19:66:21 | ControlFlowNode for BSC | test.py:66:19:66:42 | ControlFlowNode for Attribute() | provenance | | +| test.py:66:19:66:42 | ControlFlowNode for Attribute() | test.py:66:5:66:15 | ControlFlowNode for blob_client | provenance | | +| test.py:67:5:67:15 | ControlFlowNode for blob_client | test.py:68:5:68:15 | ControlFlowNode for blob_client | provenance | | +| test.py:68:5:68:15 | ControlFlowNode for blob_client | test.py:68:5:68:15 | [post] ControlFlowNode for blob_client | provenance | | +| test.py:68:5:68:15 | [post] ControlFlowNode for blob_client | test.py:69:12:69:22 | ControlFlowNode for blob_client | provenance | | +| test.py:69:12:69:22 | ControlFlowNode for blob_client | test.py:73:10:73:33 | ControlFlowNode for get_unsafe_blob_client() | provenance | | +| test.py:73:5:73:6 | ControlFlowNode for bc | test.py:75:9:75:10 | ControlFlowNode for bc | provenance | | +| test.py:73:10:73:33 | ControlFlowNode for get_unsafe_blob_client() | test.py:73:5:73:6 | ControlFlowNode for bc | provenance | | nodes | test.py:3:1:3:3 | ControlFlowNode for BSC | semmle.label | ControlFlowNode for BSC | | test.py:3:7:3:51 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected b/python/ql/test/experimental/query-tests/Security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected index 5bfe6e649173..1d529f3b3ea0 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-348/ClientSuppliedIpUsedInSecurityCheck.expected @@ -1,10 +1,10 @@ edges -| flask_bad.py:13:5:13:13 | ControlFlowNode for client_ip | flask_bad.py:14:12:14:20 | ControlFlowNode for client_ip | -| flask_bad.py:13:17:13:54 | ControlFlowNode for Attribute() | flask_bad.py:13:5:13:13 | ControlFlowNode for client_ip | -| flask_bad.py:20:5:20:13 | ControlFlowNode for client_ip | flask_bad.py:21:12:21:20 | ControlFlowNode for client_ip | -| flask_bad.py:20:17:20:54 | ControlFlowNode for Attribute() | flask_bad.py:20:5:20:13 | ControlFlowNode for client_ip | -| tornado_bad.py:22:13:22:21 | ControlFlowNode for client_ip | tornado_bad.py:23:16:23:24 | ControlFlowNode for client_ip | -| tornado_bad.py:22:25:22:69 | ControlFlowNode for Attribute() | tornado_bad.py:22:13:22:21 | ControlFlowNode for client_ip | +| flask_bad.py:13:5:13:13 | ControlFlowNode for client_ip | flask_bad.py:14:12:14:20 | ControlFlowNode for client_ip | provenance | | +| flask_bad.py:13:17:13:54 | ControlFlowNode for Attribute() | flask_bad.py:13:5:13:13 | ControlFlowNode for client_ip | provenance | | +| flask_bad.py:20:5:20:13 | ControlFlowNode for client_ip | flask_bad.py:21:12:21:20 | ControlFlowNode for client_ip | provenance | | +| flask_bad.py:20:17:20:54 | ControlFlowNode for Attribute() | flask_bad.py:20:5:20:13 | ControlFlowNode for client_ip | provenance | | +| tornado_bad.py:22:13:22:21 | ControlFlowNode for client_ip | tornado_bad.py:23:16:23:24 | ControlFlowNode for client_ip | provenance | | +| tornado_bad.py:22:25:22:69 | ControlFlowNode for Attribute() | tornado_bad.py:22:13:22:21 | ControlFlowNode for client_ip | provenance | | nodes | flask_bad.py:13:5:13:13 | ControlFlowNode for client_ip | semmle.label | ControlFlowNode for client_ip | | flask_bad.py:13:17:13:54 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-522/LdapInsecureAuth.expected b/python/ql/test/experimental/query-tests/Security/CWE-522/LdapInsecureAuth.expected index a4c97c8ead7c..6ca5069e476d 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-522/LdapInsecureAuth.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-522/LdapInsecureAuth.expected @@ -1,14 +1,14 @@ edges -| ldap3_remote.py:2:19:2:25 | ControlFlowNode for ImportMember | ldap3_remote.py:2:19:2:25 | ControlFlowNode for request | -| ldap3_remote.py:2:19:2:25 | ControlFlowNode for request | ldap3_remote.py:138:21:138:27 | ControlFlowNode for request | -| ldap3_remote.py:101:5:101:8 | ControlFlowNode for host | ldap3_remote.py:102:18:102:21 | ControlFlowNode for host | -| ldap3_remote.py:101:12:101:49 | ControlFlowNode for BinaryExpr | ldap3_remote.py:101:5:101:8 | ControlFlowNode for host | -| ldap3_remote.py:114:5:114:8 | ControlFlowNode for host | ldap3_remote.py:115:18:115:21 | ControlFlowNode for host | -| ldap3_remote.py:114:12:114:49 | ControlFlowNode for BinaryExpr | ldap3_remote.py:114:5:114:8 | ControlFlowNode for host | -| ldap3_remote.py:126:5:126:8 | ControlFlowNode for host | ldap3_remote.py:127:18:127:21 | ControlFlowNode for host | -| ldap3_remote.py:126:12:126:31 | ControlFlowNode for BinaryExpr | ldap3_remote.py:126:5:126:8 | ControlFlowNode for host | -| ldap3_remote.py:138:5:138:8 | ControlFlowNode for host | ldap3_remote.py:139:18:139:21 | ControlFlowNode for host | -| ldap3_remote.py:138:21:138:27 | ControlFlowNode for request | ldap3_remote.py:138:5:138:8 | ControlFlowNode for host | +| ldap3_remote.py:2:19:2:25 | ControlFlowNode for ImportMember | ldap3_remote.py:2:19:2:25 | ControlFlowNode for request | provenance | | +| ldap3_remote.py:2:19:2:25 | ControlFlowNode for request | ldap3_remote.py:138:21:138:27 | ControlFlowNode for request | provenance | | +| ldap3_remote.py:101:5:101:8 | ControlFlowNode for host | ldap3_remote.py:102:18:102:21 | ControlFlowNode for host | provenance | | +| ldap3_remote.py:101:12:101:49 | ControlFlowNode for BinaryExpr | ldap3_remote.py:101:5:101:8 | ControlFlowNode for host | provenance | | +| ldap3_remote.py:114:5:114:8 | ControlFlowNode for host | ldap3_remote.py:115:18:115:21 | ControlFlowNode for host | provenance | | +| ldap3_remote.py:114:12:114:49 | ControlFlowNode for BinaryExpr | ldap3_remote.py:114:5:114:8 | ControlFlowNode for host | provenance | | +| ldap3_remote.py:126:5:126:8 | ControlFlowNode for host | ldap3_remote.py:127:18:127:21 | ControlFlowNode for host | provenance | | +| ldap3_remote.py:126:12:126:31 | ControlFlowNode for BinaryExpr | ldap3_remote.py:126:5:126:8 | ControlFlowNode for host | provenance | | +| ldap3_remote.py:138:5:138:8 | ControlFlowNode for host | ldap3_remote.py:139:18:139:21 | ControlFlowNode for host | provenance | | +| ldap3_remote.py:138:21:138:27 | ControlFlowNode for request | ldap3_remote.py:138:5:138:8 | ControlFlowNode for host | provenance | | nodes | ldap2_remote.py:45:41:45:60 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | | ldap2_remote.py:56:41:56:60 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-614/CookieInjection.expected b/python/ql/test/experimental/query-tests/Security/CWE-614/CookieInjection.expected index afc8302354ec..36e0074c7848 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-614/CookieInjection.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-614/CookieInjection.expected @@ -1,16 +1,16 @@ edges -| django_bad.py:27:33:27:67 | ControlFlowNode for Attribute() | django_bad.py:27:30:27:124 | ControlFlowNode for Fstring | -| django_bad.py:27:71:27:106 | ControlFlowNode for Attribute() | django_bad.py:27:30:27:124 | ControlFlowNode for Fstring | -| flask_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_bad.py:1:26:1:32 | ControlFlowNode for request | -| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:24:21:24:27 | ControlFlowNode for request | -| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:24:49:24:55 | ControlFlowNode for request | -| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:32:37:32:43 | ControlFlowNode for request | -| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:32:60:32:66 | ControlFlowNode for request | -| flask_bad.py:24:21:24:27 | ControlFlowNode for request | flask_bad.py:24:21:24:40 | ControlFlowNode for Subscript | -| flask_bad.py:24:21:24:27 | ControlFlowNode for request | flask_bad.py:24:49:24:69 | ControlFlowNode for Subscript | -| flask_bad.py:24:49:24:55 | ControlFlowNode for request | flask_bad.py:24:49:24:69 | ControlFlowNode for Subscript | -| flask_bad.py:32:37:32:43 | ControlFlowNode for request | flask_bad.py:32:34:32:98 | ControlFlowNode for Fstring | -| flask_bad.py:32:60:32:66 | ControlFlowNode for request | flask_bad.py:32:34:32:98 | ControlFlowNode for Fstring | +| django_bad.py:27:33:27:67 | ControlFlowNode for Attribute() | django_bad.py:27:30:27:124 | ControlFlowNode for Fstring | provenance | | +| django_bad.py:27:71:27:106 | ControlFlowNode for Attribute() | django_bad.py:27:30:27:124 | ControlFlowNode for Fstring | provenance | | +| flask_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_bad.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:24:21:24:27 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:24:49:24:55 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:32:37:32:43 | ControlFlowNode for request | provenance | | +| flask_bad.py:1:26:1:32 | ControlFlowNode for request | flask_bad.py:32:60:32:66 | ControlFlowNode for request | provenance | | +| flask_bad.py:24:21:24:27 | ControlFlowNode for request | flask_bad.py:24:21:24:40 | ControlFlowNode for Subscript | provenance | | +| flask_bad.py:24:21:24:27 | ControlFlowNode for request | flask_bad.py:24:49:24:69 | ControlFlowNode for Subscript | provenance | | +| flask_bad.py:24:49:24:55 | ControlFlowNode for request | flask_bad.py:24:49:24:69 | ControlFlowNode for Subscript | provenance | | +| flask_bad.py:32:37:32:43 | ControlFlowNode for request | flask_bad.py:32:34:32:98 | ControlFlowNode for Fstring | provenance | | +| flask_bad.py:32:60:32:66 | ControlFlowNode for request | flask_bad.py:32:34:32:98 | ControlFlowNode for Fstring | provenance | | nodes | django_bad.py:19:21:19:55 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | django_bad.py:20:21:20:56 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected b/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected index 2c888521d477..b93c133cd5a0 100644 --- a/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected +++ b/python/ql/test/library-tests/frameworks/django-orm/ReflectedXss.expected @@ -1,53 +1,53 @@ edges -| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute age] | testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute age] | -| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute age] | testapp/orm_security_tests.py:51:14:51:53 | ControlFlowNode for Attribute() [Attribute age] | -| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute name] | testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute name] | -| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute name] | testapp/orm_security_tests.py:47:14:47:53 | ControlFlowNode for Attribute() [Attribute name] | -| testapp/orm_security_tests.py:19:12:19:18 | ControlFlowNode for request | testapp/orm_security_tests.py:22:23:22:42 | ControlFlowNode for Subscript | -| testapp/orm_security_tests.py:19:12:19:18 | ControlFlowNode for request | testapp/orm_security_tests.py:23:22:23:40 | ControlFlowNode for Subscript | -| testapp/orm_security_tests.py:22:9:22:14 | [post] ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:23:9:23:14 | ControlFlowNode for person [Attribute name] | -| testapp/orm_security_tests.py:22:23:22:42 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:22:9:22:14 | [post] ControlFlowNode for person [Attribute name] | -| testapp/orm_security_tests.py:23:9:23:14 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute name] | -| testapp/orm_security_tests.py:23:9:23:14 | [post] ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute age] | -| testapp/orm_security_tests.py:23:22:23:40 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:23:9:23:14 | [post] ControlFlowNode for person [Attribute age] | -| testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute age] | -| testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute name] | -| testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:43:62:43:67 | ControlFlowNode for person [Attribute age] | -| testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:43:49:43:54 | ControlFlowNode for person [Attribute name] | -| testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute age] | testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute age] | -| testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute name] | testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute name] | -| testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | -| testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | testapp/orm_security_tests.py:44:29:44:37 | ControlFlowNode for resp_text | -| testapp/orm_security_tests.py:43:49:43:54 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:43:49:43:59 | ControlFlowNode for Attribute | -| testapp/orm_security_tests.py:43:49:43:59 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | -| testapp/orm_security_tests.py:43:62:43:67 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:43:62:43:71 | ControlFlowNode for Attribute | -| testapp/orm_security_tests.py:43:62:43:71 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | -| testapp/orm_security_tests.py:47:5:47:10 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:48:46:48:51 | ControlFlowNode for person [Attribute name] | -| testapp/orm_security_tests.py:47:14:47:53 | ControlFlowNode for Attribute() [Attribute name] | testapp/orm_security_tests.py:47:5:47:10 | ControlFlowNode for person [Attribute name] | -| testapp/orm_security_tests.py:48:46:48:51 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:48:46:48:56 | ControlFlowNode for Attribute | -| testapp/orm_security_tests.py:48:46:48:56 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:48:25:48:57 | ControlFlowNode for Attribute() | -| testapp/orm_security_tests.py:51:5:51:10 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:55:45:55:50 | ControlFlowNode for person [Attribute age] | -| testapp/orm_security_tests.py:51:14:51:53 | ControlFlowNode for Attribute() [Attribute age] | testapp/orm_security_tests.py:51:5:51:10 | ControlFlowNode for person [Attribute age] | -| testapp/orm_security_tests.py:55:45:55:50 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:55:45:55:54 | ControlFlowNode for Attribute | -| testapp/orm_security_tests.py:55:45:55:54 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:55:25:55:55 | ControlFlowNode for Attribute() | -| testapp/orm_security_tests.py:92:1:92:44 | [orm-model] Class CommentValidatorNotUsed [Attribute text] | testapp/orm_security_tests.py:101:15:101:52 | ControlFlowNode for Attribute() [Attribute text] | -| testapp/orm_security_tests.py:95:37:95:43 | ControlFlowNode for request | testapp/orm_security_tests.py:96:44:96:63 | ControlFlowNode for Subscript | -| testapp/orm_security_tests.py:96:5:96:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:97:5:97:11 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:96:15:96:64 | ControlFlowNode for CommentValidatorNotUsed() [Attribute text] | testapp/orm_security_tests.py:96:5:96:11 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:96:44:96:63 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:96:15:96:64 | ControlFlowNode for CommentValidatorNotUsed() [Attribute text] | -| testapp/orm_security_tests.py:97:5:97:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:92:1:92:44 | [orm-model] Class CommentValidatorNotUsed [Attribute text] | -| testapp/orm_security_tests.py:101:5:101:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:102:25:102:31 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:101:15:101:52 | ControlFlowNode for Attribute() [Attribute text] | testapp/orm_security_tests.py:101:5:101:11 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:102:25:102:31 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:102:25:102:36 | ControlFlowNode for Attribute | -| testapp/orm_security_tests.py:111:1:111:41 | [orm-model] Class CommentValidatorUsed [Attribute text] | testapp/orm_security_tests.py:120:15:120:49 | ControlFlowNode for Attribute() [Attribute text] | -| testapp/orm_security_tests.py:114:33:114:39 | ControlFlowNode for request | testapp/orm_security_tests.py:115:41:115:60 | ControlFlowNode for Subscript | -| testapp/orm_security_tests.py:115:5:115:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:117:5:117:11 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:115:15:115:61 | ControlFlowNode for CommentValidatorUsed() [Attribute text] | testapp/orm_security_tests.py:115:5:115:11 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:115:41:115:60 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:115:15:115:61 | ControlFlowNode for CommentValidatorUsed() [Attribute text] | -| testapp/orm_security_tests.py:117:5:117:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:111:1:111:41 | [orm-model] Class CommentValidatorUsed [Attribute text] | -| testapp/orm_security_tests.py:120:5:120:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:121:25:121:31 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:120:15:120:49 | ControlFlowNode for Attribute() [Attribute text] | testapp/orm_security_tests.py:120:5:120:11 | ControlFlowNode for comment [Attribute text] | -| testapp/orm_security_tests.py:121:25:121:31 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:121:25:121:36 | ControlFlowNode for Attribute | +| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute age] | testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute age] | provenance | | +| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute age] | testapp/orm_security_tests.py:51:14:51:53 | ControlFlowNode for Attribute() [Attribute age] | provenance | | +| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute name] | testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute name] | provenance | | +| testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute name] | testapp/orm_security_tests.py:47:14:47:53 | ControlFlowNode for Attribute() [Attribute name] | provenance | | +| testapp/orm_security_tests.py:19:12:19:18 | ControlFlowNode for request | testapp/orm_security_tests.py:22:23:22:42 | ControlFlowNode for Subscript | provenance | | +| testapp/orm_security_tests.py:19:12:19:18 | ControlFlowNode for request | testapp/orm_security_tests.py:23:22:23:40 | ControlFlowNode for Subscript | provenance | | +| testapp/orm_security_tests.py:22:9:22:14 | [post] ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:23:9:23:14 | ControlFlowNode for person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:22:23:22:42 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:22:9:22:14 | [post] ControlFlowNode for person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:23:9:23:14 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:23:9:23:14 | [post] ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute age] | provenance | | +| testapp/orm_security_tests.py:23:22:23:40 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:23:9:23:14 | [post] ControlFlowNode for person [Attribute age] | provenance | | +| testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute age] | provenance | | +| testapp/orm_security_tests.py:28:9:28:14 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:43:62:43:67 | ControlFlowNode for person [Attribute age] | provenance | | +| testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:43:49:43:54 | ControlFlowNode for person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute age] | testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute age] | provenance | | +| testapp/orm_security_tests.py:42:23:42:42 | ControlFlowNode for Attribute() [List element, Attribute name] | testapp/orm_security_tests.py:42:13:42:18 | ControlFlowNode for person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | provenance | | +| testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | testapp/orm_security_tests.py:44:29:44:37 | ControlFlowNode for resp_text | provenance | | +| testapp/orm_security_tests.py:43:49:43:54 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:43:49:43:59 | ControlFlowNode for Attribute | provenance | | +| testapp/orm_security_tests.py:43:49:43:59 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | provenance | | +| testapp/orm_security_tests.py:43:62:43:67 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:43:62:43:71 | ControlFlowNode for Attribute | provenance | | +| testapp/orm_security_tests.py:43:62:43:71 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:43:13:43:21 | ControlFlowNode for resp_text | provenance | | +| testapp/orm_security_tests.py:47:5:47:10 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:48:46:48:51 | ControlFlowNode for person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:47:14:47:53 | ControlFlowNode for Attribute() [Attribute name] | testapp/orm_security_tests.py:47:5:47:10 | ControlFlowNode for person [Attribute name] | provenance | | +| testapp/orm_security_tests.py:48:46:48:51 | ControlFlowNode for person [Attribute name] | testapp/orm_security_tests.py:48:46:48:56 | ControlFlowNode for Attribute | provenance | | +| testapp/orm_security_tests.py:48:46:48:56 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:48:25:48:57 | ControlFlowNode for Attribute() | provenance | | +| testapp/orm_security_tests.py:51:5:51:10 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:55:45:55:50 | ControlFlowNode for person [Attribute age] | provenance | | +| testapp/orm_security_tests.py:51:14:51:53 | ControlFlowNode for Attribute() [Attribute age] | testapp/orm_security_tests.py:51:5:51:10 | ControlFlowNode for person [Attribute age] | provenance | | +| testapp/orm_security_tests.py:55:45:55:50 | ControlFlowNode for person [Attribute age] | testapp/orm_security_tests.py:55:45:55:54 | ControlFlowNode for Attribute | provenance | | +| testapp/orm_security_tests.py:55:45:55:54 | ControlFlowNode for Attribute | testapp/orm_security_tests.py:55:25:55:55 | ControlFlowNode for Attribute() | provenance | | +| testapp/orm_security_tests.py:92:1:92:44 | [orm-model] Class CommentValidatorNotUsed [Attribute text] | testapp/orm_security_tests.py:101:15:101:52 | ControlFlowNode for Attribute() [Attribute text] | provenance | | +| testapp/orm_security_tests.py:95:37:95:43 | ControlFlowNode for request | testapp/orm_security_tests.py:96:44:96:63 | ControlFlowNode for Subscript | provenance | | +| testapp/orm_security_tests.py:96:5:96:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:97:5:97:11 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:96:15:96:64 | ControlFlowNode for CommentValidatorNotUsed() [Attribute text] | testapp/orm_security_tests.py:96:5:96:11 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:96:44:96:63 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:96:15:96:64 | ControlFlowNode for CommentValidatorNotUsed() [Attribute text] | provenance | | +| testapp/orm_security_tests.py:97:5:97:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:92:1:92:44 | [orm-model] Class CommentValidatorNotUsed [Attribute text] | provenance | | +| testapp/orm_security_tests.py:101:5:101:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:102:25:102:31 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:101:15:101:52 | ControlFlowNode for Attribute() [Attribute text] | testapp/orm_security_tests.py:101:5:101:11 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:102:25:102:31 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:102:25:102:36 | ControlFlowNode for Attribute | provenance | | +| testapp/orm_security_tests.py:111:1:111:41 | [orm-model] Class CommentValidatorUsed [Attribute text] | testapp/orm_security_tests.py:120:15:120:49 | ControlFlowNode for Attribute() [Attribute text] | provenance | | +| testapp/orm_security_tests.py:114:33:114:39 | ControlFlowNode for request | testapp/orm_security_tests.py:115:41:115:60 | ControlFlowNode for Subscript | provenance | | +| testapp/orm_security_tests.py:115:5:115:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:117:5:117:11 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:115:15:115:61 | ControlFlowNode for CommentValidatorUsed() [Attribute text] | testapp/orm_security_tests.py:115:5:115:11 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:115:41:115:60 | ControlFlowNode for Subscript | testapp/orm_security_tests.py:115:15:115:61 | ControlFlowNode for CommentValidatorUsed() [Attribute text] | provenance | | +| testapp/orm_security_tests.py:117:5:117:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:111:1:111:41 | [orm-model] Class CommentValidatorUsed [Attribute text] | provenance | | +| testapp/orm_security_tests.py:120:5:120:11 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:121:25:121:31 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:120:15:120:49 | ControlFlowNode for Attribute() [Attribute text] | testapp/orm_security_tests.py:120:5:120:11 | ControlFlowNode for comment [Attribute text] | provenance | | +| testapp/orm_security_tests.py:121:25:121:31 | ControlFlowNode for comment [Attribute text] | testapp/orm_security_tests.py:121:25:121:36 | ControlFlowNode for Attribute | provenance | | nodes | testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute age] | semmle.label | [orm-model] Class Person [Attribute age] | | testapp/orm_security_tests.py:15:1:15:27 | [orm-model] Class Person [Attribute name] | semmle.label | [orm-model] Class Person [Attribute name] | diff --git a/python/ql/test/library-tests/frameworks/modeling-example/NaiveModel.expected b/python/ql/test/library-tests/frameworks/modeling-example/NaiveModel.expected index 77d13352758c..b1347bde3fb7 100644 --- a/python/ql/test/library-tests/frameworks/modeling-example/NaiveModel.expected +++ b/python/ql/test/library-tests/frameworks/modeling-example/NaiveModel.expected @@ -1,19 +1,19 @@ edges -| test.py:21:11:21:18 | ControlFlowNode for source() | test.py:22:10:22:24 | ControlFlowNode for Attribute() | -| test.py:29:11:29:18 | ControlFlowNode for source() | test.py:32:5:32:7 | ControlFlowNode for val | -| test.py:32:5:32:7 | ControlFlowNode for val | test.py:33:10:33:12 | ControlFlowNode for val | -| test.py:40:5:40:7 | ControlFlowNode for val | test.py:41:10:41:12 | ControlFlowNode for val | -| test.py:40:11:40:25 | ControlFlowNode for Attribute() | test.py:40:5:40:7 | ControlFlowNode for val | -| test.py:45:11:45:18 | ControlFlowNode for source() | test.py:40:11:40:25 | ControlFlowNode for Attribute() | -| test.py:53:5:53:7 | ControlFlowNode for val | test.py:54:10:54:12 | ControlFlowNode for val | -| test.py:53:11:53:25 | ControlFlowNode for Attribute() | test.py:53:5:53:7 | ControlFlowNode for val | -| test.py:70:11:70:18 | ControlFlowNode for source() | test.py:53:11:53:25 | ControlFlowNode for Attribute() | -| test.py:78:5:78:7 | ControlFlowNode for val | test.py:79:10:79:12 | ControlFlowNode for val | -| test.py:78:11:78:14 | ControlFlowNode for bm() | test.py:78:5:78:7 | ControlFlowNode for val | -| test.py:83:11:83:18 | ControlFlowNode for source() | test.py:78:11:78:14 | ControlFlowNode for bm() | -| test.py:90:5:90:7 | ControlFlowNode for val | test.py:91:10:91:12 | ControlFlowNode for val | -| test.py:90:11:90:14 | ControlFlowNode for bm() | test.py:90:5:90:7 | ControlFlowNode for val | -| test.py:107:11:107:18 | ControlFlowNode for source() | test.py:90:11:90:14 | ControlFlowNode for bm() | +| test.py:21:11:21:18 | ControlFlowNode for source() | test.py:22:10:22:24 | ControlFlowNode for Attribute() | provenance | | +| test.py:29:11:29:18 | ControlFlowNode for source() | test.py:32:5:32:7 | ControlFlowNode for val | provenance | | +| test.py:32:5:32:7 | ControlFlowNode for val | test.py:33:10:33:12 | ControlFlowNode for val | provenance | | +| test.py:40:5:40:7 | ControlFlowNode for val | test.py:41:10:41:12 | ControlFlowNode for val | provenance | | +| test.py:40:11:40:25 | ControlFlowNode for Attribute() | test.py:40:5:40:7 | ControlFlowNode for val | provenance | | +| test.py:45:11:45:18 | ControlFlowNode for source() | test.py:40:11:40:25 | ControlFlowNode for Attribute() | provenance | | +| test.py:53:5:53:7 | ControlFlowNode for val | test.py:54:10:54:12 | ControlFlowNode for val | provenance | | +| test.py:53:11:53:25 | ControlFlowNode for Attribute() | test.py:53:5:53:7 | ControlFlowNode for val | provenance | | +| test.py:70:11:70:18 | ControlFlowNode for source() | test.py:53:11:53:25 | ControlFlowNode for Attribute() | provenance | | +| test.py:78:5:78:7 | ControlFlowNode for val | test.py:79:10:79:12 | ControlFlowNode for val | provenance | | +| test.py:78:11:78:14 | ControlFlowNode for bm() | test.py:78:5:78:7 | ControlFlowNode for val | provenance | | +| test.py:83:11:83:18 | ControlFlowNode for source() | test.py:78:11:78:14 | ControlFlowNode for bm() | provenance | | +| test.py:90:5:90:7 | ControlFlowNode for val | test.py:91:10:91:12 | ControlFlowNode for val | provenance | | +| test.py:90:11:90:14 | ControlFlowNode for bm() | test.py:90:5:90:7 | ControlFlowNode for val | provenance | | +| test.py:107:11:107:18 | ControlFlowNode for source() | test.py:90:11:90:14 | ControlFlowNode for bm() | provenance | | nodes | test.py:21:11:21:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | | test.py:22:10:22:24 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/library-tests/frameworks/modeling-example/ProperModel.expected b/python/ql/test/library-tests/frameworks/modeling-example/ProperModel.expected index 004af2780c09..1d3e33431134 100644 --- a/python/ql/test/library-tests/frameworks/modeling-example/ProperModel.expected +++ b/python/ql/test/library-tests/frameworks/modeling-example/ProperModel.expected @@ -1,43 +1,43 @@ edges -| test.py:21:5:21:7 | ControlFlowNode for src | test.py:22:10:22:24 | ControlFlowNode for Attribute() | -| test.py:21:11:21:18 | ControlFlowNode for source() | test.py:21:5:21:7 | ControlFlowNode for src | -| test.py:29:5:29:7 | ControlFlowNode for src | test.py:30:5:30:7 | ControlFlowNode for foo | -| test.py:29:11:29:18 | ControlFlowNode for source() | test.py:29:5:29:7 | ControlFlowNode for src | -| test.py:30:5:30:7 | ControlFlowNode for foo | test.py:31:5:31:16 | ControlFlowNode for bound_method | -| test.py:31:5:31:16 | ControlFlowNode for bound_method | test.py:32:5:32:7 | ControlFlowNode for val | -| test.py:32:5:32:7 | ControlFlowNode for val | test.py:33:10:33:12 | ControlFlowNode for val | -| test.py:39:15:39:17 | ControlFlowNode for arg | test.py:40:5:40:7 | ControlFlowNode for val | -| test.py:40:5:40:7 | ControlFlowNode for val | test.py:41:10:41:12 | ControlFlowNode for val | -| test.py:45:5:45:7 | ControlFlowNode for src | test.py:46:15:46:17 | ControlFlowNode for src | -| test.py:45:11:45:18 | ControlFlowNode for source() | test.py:45:5:45:7 | ControlFlowNode for src | -| test.py:46:15:46:17 | ControlFlowNode for src | test.py:39:15:39:17 | ControlFlowNode for arg | -| test.py:52:24:52:26 | ControlFlowNode for arg | test.py:53:5:53:7 | ControlFlowNode for val | -| test.py:53:5:53:7 | ControlFlowNode for val | test.py:54:10:54:12 | ControlFlowNode for val | -| test.py:57:33:57:35 | ControlFlowNode for arg | test.py:58:24:58:26 | ControlFlowNode for arg | -| test.py:58:24:58:26 | ControlFlowNode for arg | test.py:52:24:52:26 | ControlFlowNode for arg | -| test.py:61:33:61:35 | ControlFlowNode for arg | test.py:62:33:62:35 | ControlFlowNode for arg | -| test.py:62:33:62:35 | ControlFlowNode for arg | test.py:57:33:57:35 | ControlFlowNode for arg | -| test.py:65:33:65:35 | ControlFlowNode for arg | test.py:66:33:66:35 | ControlFlowNode for arg | -| test.py:66:33:66:35 | ControlFlowNode for arg | test.py:61:33:61:35 | ControlFlowNode for arg | -| test.py:70:5:70:7 | ControlFlowNode for src | test.py:71:33:71:35 | ControlFlowNode for src | -| test.py:70:11:70:18 | ControlFlowNode for source() | test.py:70:5:70:7 | ControlFlowNode for src | -| test.py:71:33:71:35 | ControlFlowNode for src | test.py:65:33:65:35 | ControlFlowNode for arg | -| test.py:77:23:77:24 | ControlFlowNode for bm | test.py:78:5:78:7 | ControlFlowNode for val | -| test.py:78:5:78:7 | ControlFlowNode for val | test.py:79:10:79:12 | ControlFlowNode for val | -| test.py:83:5:83:7 | ControlFlowNode for src | test.py:84:23:84:35 | ControlFlowNode for Attribute | -| test.py:83:11:83:18 | ControlFlowNode for source() | test.py:83:5:83:7 | ControlFlowNode for src | -| test.py:84:23:84:35 | ControlFlowNode for Attribute | test.py:77:23:77:24 | ControlFlowNode for bm | -| test.py:89:37:89:38 | ControlFlowNode for bm | test.py:90:5:90:7 | ControlFlowNode for val | -| test.py:90:5:90:7 | ControlFlowNode for val | test.py:91:10:91:12 | ControlFlowNode for val | -| test.py:94:46:94:47 | ControlFlowNode for bm | test.py:95:37:95:38 | ControlFlowNode for bm | -| test.py:95:37:95:38 | ControlFlowNode for bm | test.py:89:37:89:38 | ControlFlowNode for bm | -| test.py:98:46:98:47 | ControlFlowNode for bm | test.py:99:46:99:47 | ControlFlowNode for bm | -| test.py:99:46:99:47 | ControlFlowNode for bm | test.py:94:46:94:47 | ControlFlowNode for bm | -| test.py:102:46:102:47 | ControlFlowNode for bm | test.py:103:46:103:47 | ControlFlowNode for bm | -| test.py:103:46:103:47 | ControlFlowNode for bm | test.py:98:46:98:47 | ControlFlowNode for bm | -| test.py:107:5:107:7 | ControlFlowNode for src | test.py:108:46:108:58 | ControlFlowNode for Attribute | -| test.py:107:11:107:18 | ControlFlowNode for source() | test.py:107:5:107:7 | ControlFlowNode for src | -| test.py:108:46:108:58 | ControlFlowNode for Attribute | test.py:102:46:102:47 | ControlFlowNode for bm | +| test.py:21:5:21:7 | ControlFlowNode for src | test.py:22:10:22:24 | ControlFlowNode for Attribute() | provenance | | +| test.py:21:11:21:18 | ControlFlowNode for source() | test.py:21:5:21:7 | ControlFlowNode for src | provenance | | +| test.py:29:5:29:7 | ControlFlowNode for src | test.py:30:5:30:7 | ControlFlowNode for foo | provenance | | +| test.py:29:11:29:18 | ControlFlowNode for source() | test.py:29:5:29:7 | ControlFlowNode for src | provenance | | +| test.py:30:5:30:7 | ControlFlowNode for foo | test.py:31:5:31:16 | ControlFlowNode for bound_method | provenance | | +| test.py:31:5:31:16 | ControlFlowNode for bound_method | test.py:32:5:32:7 | ControlFlowNode for val | provenance | | +| test.py:32:5:32:7 | ControlFlowNode for val | test.py:33:10:33:12 | ControlFlowNode for val | provenance | | +| test.py:39:15:39:17 | ControlFlowNode for arg | test.py:40:5:40:7 | ControlFlowNode for val | provenance | | +| test.py:40:5:40:7 | ControlFlowNode for val | test.py:41:10:41:12 | ControlFlowNode for val | provenance | | +| test.py:45:5:45:7 | ControlFlowNode for src | test.py:46:15:46:17 | ControlFlowNode for src | provenance | | +| test.py:45:11:45:18 | ControlFlowNode for source() | test.py:45:5:45:7 | ControlFlowNode for src | provenance | | +| test.py:46:15:46:17 | ControlFlowNode for src | test.py:39:15:39:17 | ControlFlowNode for arg | provenance | | +| test.py:52:24:52:26 | ControlFlowNode for arg | test.py:53:5:53:7 | ControlFlowNode for val | provenance | | +| test.py:53:5:53:7 | ControlFlowNode for val | test.py:54:10:54:12 | ControlFlowNode for val | provenance | | +| test.py:57:33:57:35 | ControlFlowNode for arg | test.py:58:24:58:26 | ControlFlowNode for arg | provenance | | +| test.py:58:24:58:26 | ControlFlowNode for arg | test.py:52:24:52:26 | ControlFlowNode for arg | provenance | | +| test.py:61:33:61:35 | ControlFlowNode for arg | test.py:62:33:62:35 | ControlFlowNode for arg | provenance | | +| test.py:62:33:62:35 | ControlFlowNode for arg | test.py:57:33:57:35 | ControlFlowNode for arg | provenance | | +| test.py:65:33:65:35 | ControlFlowNode for arg | test.py:66:33:66:35 | ControlFlowNode for arg | provenance | | +| test.py:66:33:66:35 | ControlFlowNode for arg | test.py:61:33:61:35 | ControlFlowNode for arg | provenance | | +| test.py:70:5:70:7 | ControlFlowNode for src | test.py:71:33:71:35 | ControlFlowNode for src | provenance | | +| test.py:70:11:70:18 | ControlFlowNode for source() | test.py:70:5:70:7 | ControlFlowNode for src | provenance | | +| test.py:71:33:71:35 | ControlFlowNode for src | test.py:65:33:65:35 | ControlFlowNode for arg | provenance | | +| test.py:77:23:77:24 | ControlFlowNode for bm | test.py:78:5:78:7 | ControlFlowNode for val | provenance | | +| test.py:78:5:78:7 | ControlFlowNode for val | test.py:79:10:79:12 | ControlFlowNode for val | provenance | | +| test.py:83:5:83:7 | ControlFlowNode for src | test.py:84:23:84:35 | ControlFlowNode for Attribute | provenance | | +| test.py:83:11:83:18 | ControlFlowNode for source() | test.py:83:5:83:7 | ControlFlowNode for src | provenance | | +| test.py:84:23:84:35 | ControlFlowNode for Attribute | test.py:77:23:77:24 | ControlFlowNode for bm | provenance | | +| test.py:89:37:89:38 | ControlFlowNode for bm | test.py:90:5:90:7 | ControlFlowNode for val | provenance | | +| test.py:90:5:90:7 | ControlFlowNode for val | test.py:91:10:91:12 | ControlFlowNode for val | provenance | | +| test.py:94:46:94:47 | ControlFlowNode for bm | test.py:95:37:95:38 | ControlFlowNode for bm | provenance | | +| test.py:95:37:95:38 | ControlFlowNode for bm | test.py:89:37:89:38 | ControlFlowNode for bm | provenance | | +| test.py:98:46:98:47 | ControlFlowNode for bm | test.py:99:46:99:47 | ControlFlowNode for bm | provenance | | +| test.py:99:46:99:47 | ControlFlowNode for bm | test.py:94:46:94:47 | ControlFlowNode for bm | provenance | | +| test.py:102:46:102:47 | ControlFlowNode for bm | test.py:103:46:103:47 | ControlFlowNode for bm | provenance | | +| test.py:103:46:103:47 | ControlFlowNode for bm | test.py:98:46:98:47 | ControlFlowNode for bm | provenance | | +| test.py:107:5:107:7 | ControlFlowNode for src | test.py:108:46:108:58 | ControlFlowNode for Attribute | provenance | | +| test.py:107:11:107:18 | ControlFlowNode for source() | test.py:107:5:107:7 | ControlFlowNode for src | provenance | | +| test.py:108:46:108:58 | ControlFlowNode for Attribute | test.py:102:46:102:47 | ControlFlowNode for bm | provenance | | nodes | test.py:21:5:21:7 | ControlFlowNode for src | semmle.label | ControlFlowNode for src | | test.py:21:11:21:18 | ControlFlowNode for source() | semmle.label | ControlFlowNode for source() | diff --git a/python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.expected b/python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.expected new file mode 100644 index 000000000000..8ec8033d086e --- /dev/null +++ b/python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.expected @@ -0,0 +1,2 @@ +testFailures +failures diff --git a/python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.ql b/python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.ql new file mode 100644 index 000000000000..b557a0bccb69 --- /dev/null +++ b/python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.ql @@ -0,0 +1,2 @@ +import python +import experimental.meta.ConceptsTest diff --git a/python/ql/test/library-tests/frameworks/psycopg/pep249.py b/python/ql/test/library-tests/frameworks/psycopg/pep249.py new file mode 100644 index 000000000000..0336facb079e --- /dev/null +++ b/python/ql/test/library-tests/frameworks/psycopg/pep249.py @@ -0,0 +1,14 @@ +import psycopg + +conn = psycopg.connect(...) +conn.execute("some sql", (42,)) # $ getSql="some sql" +cursor = conn.cursor() +cursor.execute("some sql", (42,)) # $ getSql="some sql" +cursor.executemany("some sql", [(42,)]) # $ getSql="some sql" + +# as in their examples: +with psycopg.connect(...) as conn: + conn.execute("some sql", (42,)) # $ getSql="some sql" + with conn.cursor() as cursor: + cursor.execute("some sql", (42,)) # $ getSql="some sql" + cursor.executemany("some sql", [(42,)]) # $ getSql="some sql" diff --git a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected index b33afdac80db..2bed4495c438 100644 --- a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected +++ b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected @@ -1,45 +1,45 @@ edges -| test.py:2:12:2:12 | ControlFlowNode for l | test.py:3:5:3:5 | ControlFlowNode for l | -| test.py:7:11:7:11 | ControlFlowNode for l | test.py:8:5:8:5 | ControlFlowNode for l | -| test.py:12:14:12:14 | ControlFlowNode for l | test.py:13:9:13:9 | ControlFlowNode for l | -| test.py:17:15:17:15 | ControlFlowNode for l | test.py:18:5:18:5 | ControlFlowNode for l | -| test.py:22:15:22:15 | ControlFlowNode for l | test.py:23:5:23:5 | ControlFlowNode for l | -| test.py:27:12:27:12 | ControlFlowNode for l | test.py:28:5:28:5 | ControlFlowNode for l | -| test.py:38:13:38:13 | ControlFlowNode for l | test.py:39:5:39:5 | ControlFlowNode for l | -| test.py:43:14:43:14 | ControlFlowNode for l | test.py:44:13:44:13 | ControlFlowNode for l | -| test.py:44:13:44:13 | ControlFlowNode for l | test.py:38:13:38:13 | ControlFlowNode for l | -| test.py:48:14:48:14 | ControlFlowNode for l | test.py:49:5:49:5 | ControlFlowNode for l | -| test.py:53:10:53:10 | ControlFlowNode for d | test.py:54:5:54:5 | ControlFlowNode for d | -| test.py:58:19:58:19 | ControlFlowNode for d | test.py:59:5:59:5 | ControlFlowNode for d | -| test.py:63:28:63:28 | ControlFlowNode for d | test.py:64:5:64:5 | ControlFlowNode for d | -| test.py:67:14:67:14 | ControlFlowNode for d | test.py:68:5:68:5 | ControlFlowNode for d | -| test.py:72:19:72:19 | ControlFlowNode for d | test.py:73:14:73:14 | ControlFlowNode for d | -| test.py:73:14:73:14 | ControlFlowNode for d | test.py:67:14:67:14 | ControlFlowNode for d | -| test.py:77:17:77:17 | ControlFlowNode for d | test.py:78:5:78:5 | ControlFlowNode for d | -| test.py:82:26:82:26 | ControlFlowNode for d | test.py:83:5:83:5 | ControlFlowNode for d | -| test.py:87:35:87:35 | ControlFlowNode for d | test.py:88:5:88:5 | ControlFlowNode for d | -| test.py:91:21:91:21 | ControlFlowNode for d | test.py:92:5:92:5 | ControlFlowNode for d | -| test.py:96:26:96:26 | ControlFlowNode for d | test.py:97:21:97:21 | ControlFlowNode for d | -| test.py:97:21:97:21 | ControlFlowNode for d | test.py:91:21:91:21 | ControlFlowNode for d | -| test.py:108:14:108:14 | ControlFlowNode for d | test.py:109:9:109:9 | ControlFlowNode for d | -| test.py:113:20:113:20 | ControlFlowNode for d | test.py:115:5:115:5 | ControlFlowNode for d | -| test.py:119:29:119:29 | ControlFlowNode for d | test.py:121:5:121:5 | ControlFlowNode for d | -| test.py:124:15:124:15 | ControlFlowNode for l | test.py:128:9:128:9 | ControlFlowNode for l | -| test.py:131:23:131:23 | ControlFlowNode for l | test.py:135:9:135:9 | ControlFlowNode for l | -| test.py:138:15:138:15 | ControlFlowNode for l | test.py:140:9:140:9 | ControlFlowNode for l | -| test.py:145:23:145:23 | ControlFlowNode for l | test.py:147:9:147:9 | ControlFlowNode for l | -| test.py:153:25:153:25 | ControlFlowNode for x | test.py:154:5:154:5 | ControlFlowNode for x | -| test.py:156:21:156:21 | ControlFlowNode for x | test.py:157:5:157:5 | ControlFlowNode for x | -| test.py:159:27:159:27 | ControlFlowNode for y | test.py:160:25:160:25 | ControlFlowNode for y | -| test.py:159:27:159:27 | ControlFlowNode for y | test.py:161:21:161:21 | ControlFlowNode for y | -| test.py:160:25:160:25 | ControlFlowNode for y | test.py:153:25:153:25 | ControlFlowNode for x | -| test.py:161:21:161:21 | ControlFlowNode for y | test.py:156:21:156:21 | ControlFlowNode for x | -| test.py:181:28:181:28 | ControlFlowNode for x | test.py:185:9:185:9 | ControlFlowNode for x | -| test.py:181:28:181:28 | ControlFlowNode for x | test.py:187:9:187:9 | ControlFlowNode for x | -| test.py:194:18:194:18 | ControlFlowNode for x | test.py:195:28:195:28 | ControlFlowNode for x | -| test.py:195:28:195:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | -| test.py:197:18:197:18 | ControlFlowNode for x | test.py:198:28:198:28 | ControlFlowNode for x | -| test.py:198:28:198:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | +| test.py:2:12:2:12 | ControlFlowNode for l | test.py:3:5:3:5 | ControlFlowNode for l | provenance | | +| test.py:7:11:7:11 | ControlFlowNode for l | test.py:8:5:8:5 | ControlFlowNode for l | provenance | | +| test.py:12:14:12:14 | ControlFlowNode for l | test.py:13:9:13:9 | ControlFlowNode for l | provenance | | +| test.py:17:15:17:15 | ControlFlowNode for l | test.py:18:5:18:5 | ControlFlowNode for l | provenance | | +| test.py:22:15:22:15 | ControlFlowNode for l | test.py:23:5:23:5 | ControlFlowNode for l | provenance | | +| test.py:27:12:27:12 | ControlFlowNode for l | test.py:28:5:28:5 | ControlFlowNode for l | provenance | | +| test.py:38:13:38:13 | ControlFlowNode for l | test.py:39:5:39:5 | ControlFlowNode for l | provenance | | +| test.py:43:14:43:14 | ControlFlowNode for l | test.py:44:13:44:13 | ControlFlowNode for l | provenance | | +| test.py:44:13:44:13 | ControlFlowNode for l | test.py:38:13:38:13 | ControlFlowNode for l | provenance | | +| test.py:48:14:48:14 | ControlFlowNode for l | test.py:49:5:49:5 | ControlFlowNode for l | provenance | | +| test.py:53:10:53:10 | ControlFlowNode for d | test.py:54:5:54:5 | ControlFlowNode for d | provenance | | +| test.py:58:19:58:19 | ControlFlowNode for d | test.py:59:5:59:5 | ControlFlowNode for d | provenance | | +| test.py:63:28:63:28 | ControlFlowNode for d | test.py:64:5:64:5 | ControlFlowNode for d | provenance | | +| test.py:67:14:67:14 | ControlFlowNode for d | test.py:68:5:68:5 | ControlFlowNode for d | provenance | | +| test.py:72:19:72:19 | ControlFlowNode for d | test.py:73:14:73:14 | ControlFlowNode for d | provenance | | +| test.py:73:14:73:14 | ControlFlowNode for d | test.py:67:14:67:14 | ControlFlowNode for d | provenance | | +| test.py:77:17:77:17 | ControlFlowNode for d | test.py:78:5:78:5 | ControlFlowNode for d | provenance | | +| test.py:82:26:82:26 | ControlFlowNode for d | test.py:83:5:83:5 | ControlFlowNode for d | provenance | | +| test.py:87:35:87:35 | ControlFlowNode for d | test.py:88:5:88:5 | ControlFlowNode for d | provenance | | +| test.py:91:21:91:21 | ControlFlowNode for d | test.py:92:5:92:5 | ControlFlowNode for d | provenance | | +| test.py:96:26:96:26 | ControlFlowNode for d | test.py:97:21:97:21 | ControlFlowNode for d | provenance | | +| test.py:97:21:97:21 | ControlFlowNode for d | test.py:91:21:91:21 | ControlFlowNode for d | provenance | | +| test.py:108:14:108:14 | ControlFlowNode for d | test.py:109:9:109:9 | ControlFlowNode for d | provenance | | +| test.py:113:20:113:20 | ControlFlowNode for d | test.py:115:5:115:5 | ControlFlowNode for d | provenance | | +| test.py:119:29:119:29 | ControlFlowNode for d | test.py:121:5:121:5 | ControlFlowNode for d | provenance | | +| test.py:124:15:124:15 | ControlFlowNode for l | test.py:128:9:128:9 | ControlFlowNode for l | provenance | | +| test.py:131:23:131:23 | ControlFlowNode for l | test.py:135:9:135:9 | ControlFlowNode for l | provenance | | +| test.py:138:15:138:15 | ControlFlowNode for l | test.py:140:9:140:9 | ControlFlowNode for l | provenance | | +| test.py:145:23:145:23 | ControlFlowNode for l | test.py:147:9:147:9 | ControlFlowNode for l | provenance | | +| test.py:153:25:153:25 | ControlFlowNode for x | test.py:154:5:154:5 | ControlFlowNode for x | provenance | | +| test.py:156:21:156:21 | ControlFlowNode for x | test.py:157:5:157:5 | ControlFlowNode for x | provenance | | +| test.py:159:27:159:27 | ControlFlowNode for y | test.py:160:25:160:25 | ControlFlowNode for y | provenance | | +| test.py:159:27:159:27 | ControlFlowNode for y | test.py:161:21:161:21 | ControlFlowNode for y | provenance | | +| test.py:160:25:160:25 | ControlFlowNode for y | test.py:153:25:153:25 | ControlFlowNode for x | provenance | | +| test.py:161:21:161:21 | ControlFlowNode for y | test.py:156:21:156:21 | ControlFlowNode for x | provenance | | +| test.py:181:28:181:28 | ControlFlowNode for x | test.py:185:9:185:9 | ControlFlowNode for x | provenance | | +| test.py:181:28:181:28 | ControlFlowNode for x | test.py:187:9:187:9 | ControlFlowNode for x | provenance | | +| test.py:194:18:194:18 | ControlFlowNode for x | test.py:195:28:195:28 | ControlFlowNode for x | provenance | | +| test.py:195:28:195:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | provenance | | +| test.py:197:18:197:18 | ControlFlowNode for x | test.py:198:28:198:28 | ControlFlowNode for x | provenance | | +| test.py:198:28:198:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | provenance | | nodes | test.py:2:12:2:12 | ControlFlowNode for l | semmle.label | ControlFlowNode for l | | test.py:3:5:3:5 | ControlFlowNode for l | semmle.label | ControlFlowNode for l | diff --git a/python/ql/test/query-tests/Security/CWE-020-ExternalAPIs/UntrustedDataToExternalAPI.expected b/python/ql/test/query-tests/Security/CWE-020-ExternalAPIs/UntrustedDataToExternalAPI.expected index 0f63973da06d..1f820cfa5e11 100644 --- a/python/ql/test/query-tests/Security/CWE-020-ExternalAPIs/UntrustedDataToExternalAPI.expected +++ b/python/ql/test/query-tests/Security/CWE-020-ExternalAPIs/UntrustedDataToExternalAPI.expected @@ -1,36 +1,36 @@ edges -| test.py:5:26:5:32 | ControlFlowNode for ImportMember | test.py:5:26:5:32 | ControlFlowNode for request | -| test.py:5:26:5:32 | ControlFlowNode for request | test.py:13:16:13:22 | ControlFlowNode for request | -| test.py:5:26:5:32 | ControlFlowNode for request | test.py:23:16:23:22 | ControlFlowNode for request | -| test.py:5:26:5:32 | ControlFlowNode for request | test.py:34:12:34:18 | ControlFlowNode for request | -| test.py:5:26:5:32 | ControlFlowNode for request | test.py:42:12:42:18 | ControlFlowNode for request | -| test.py:5:26:5:32 | ControlFlowNode for request | test.py:54:12:54:18 | ControlFlowNode for request | -| test.py:13:5:13:12 | ControlFlowNode for data_raw | test.py:14:5:14:8 | ControlFlowNode for data | -| test.py:13:16:13:22 | ControlFlowNode for request | test.py:13:16:13:27 | ControlFlowNode for Attribute | -| test.py:13:16:13:27 | ControlFlowNode for Attribute | test.py:13:16:13:39 | ControlFlowNode for Attribute() | -| test.py:13:16:13:39 | ControlFlowNode for Attribute() | test.py:13:5:13:12 | ControlFlowNode for data_raw | -| test.py:14:5:14:8 | ControlFlowNode for data | test.py:15:36:15:39 | ControlFlowNode for data | -| test.py:23:5:23:12 | ControlFlowNode for data_raw | test.py:24:5:24:8 | ControlFlowNode for data | -| test.py:23:16:23:22 | ControlFlowNode for request | test.py:23:16:23:27 | ControlFlowNode for Attribute | -| test.py:23:16:23:27 | ControlFlowNode for Attribute | test.py:23:16:23:39 | ControlFlowNode for Attribute() | -| test.py:23:16:23:39 | ControlFlowNode for Attribute() | test.py:23:5:23:12 | ControlFlowNode for data_raw | -| test.py:24:5:24:8 | ControlFlowNode for data | test.py:25:44:25:47 | ControlFlowNode for data | -| test.py:34:5:34:8 | ControlFlowNode for data | test.py:35:10:35:13 | ControlFlowNode for data | -| test.py:34:5:34:8 | ControlFlowNode for data | test.py:36:13:36:16 | ControlFlowNode for data | -| test.py:34:12:34:18 | ControlFlowNode for request | test.py:34:12:34:23 | ControlFlowNode for Attribute | -| test.py:34:12:34:23 | ControlFlowNode for Attribute | test.py:34:12:34:35 | ControlFlowNode for Attribute() | -| test.py:34:12:34:35 | ControlFlowNode for Attribute() | test.py:34:5:34:8 | ControlFlowNode for data | -| test.py:42:5:42:8 | ControlFlowNode for data | test.py:43:22:43:25 | ControlFlowNode for data | -| test.py:42:5:42:8 | ControlFlowNode for data | test.py:44:25:44:28 | ControlFlowNode for data | -| test.py:42:12:42:18 | ControlFlowNode for request | test.py:42:12:42:23 | ControlFlowNode for Attribute | -| test.py:42:12:42:23 | ControlFlowNode for Attribute | test.py:42:12:42:35 | ControlFlowNode for Attribute() | -| test.py:42:12:42:35 | ControlFlowNode for Attribute() | test.py:42:5:42:8 | ControlFlowNode for data | -| test.py:47:17:47:19 | ControlFlowNode for arg | test.py:50:32:50:34 | ControlFlowNode for arg | -| test.py:54:5:54:8 | ControlFlowNode for data | test.py:55:17:55:20 | ControlFlowNode for data | -| test.py:54:12:54:18 | ControlFlowNode for request | test.py:54:12:54:23 | ControlFlowNode for Attribute | -| test.py:54:12:54:23 | ControlFlowNode for Attribute | test.py:54:12:54:35 | ControlFlowNode for Attribute() | -| test.py:54:12:54:35 | ControlFlowNode for Attribute() | test.py:54:5:54:8 | ControlFlowNode for data | -| test.py:55:17:55:20 | ControlFlowNode for data | test.py:47:17:47:19 | ControlFlowNode for arg | +| test.py:5:26:5:32 | ControlFlowNode for ImportMember | test.py:5:26:5:32 | ControlFlowNode for request | provenance | | +| test.py:5:26:5:32 | ControlFlowNode for request | test.py:13:16:13:22 | ControlFlowNode for request | provenance | | +| test.py:5:26:5:32 | ControlFlowNode for request | test.py:23:16:23:22 | ControlFlowNode for request | provenance | | +| test.py:5:26:5:32 | ControlFlowNode for request | test.py:34:12:34:18 | ControlFlowNode for request | provenance | | +| test.py:5:26:5:32 | ControlFlowNode for request | test.py:42:12:42:18 | ControlFlowNode for request | provenance | | +| test.py:5:26:5:32 | ControlFlowNode for request | test.py:54:12:54:18 | ControlFlowNode for request | provenance | | +| test.py:13:5:13:12 | ControlFlowNode for data_raw | test.py:14:5:14:8 | ControlFlowNode for data | provenance | | +| test.py:13:16:13:22 | ControlFlowNode for request | test.py:13:16:13:27 | ControlFlowNode for Attribute | provenance | | +| test.py:13:16:13:27 | ControlFlowNode for Attribute | test.py:13:16:13:39 | ControlFlowNode for Attribute() | provenance | | +| test.py:13:16:13:39 | ControlFlowNode for Attribute() | test.py:13:5:13:12 | ControlFlowNode for data_raw | provenance | | +| test.py:14:5:14:8 | ControlFlowNode for data | test.py:15:36:15:39 | ControlFlowNode for data | provenance | | +| test.py:23:5:23:12 | ControlFlowNode for data_raw | test.py:24:5:24:8 | ControlFlowNode for data | provenance | | +| test.py:23:16:23:22 | ControlFlowNode for request | test.py:23:16:23:27 | ControlFlowNode for Attribute | provenance | | +| test.py:23:16:23:27 | ControlFlowNode for Attribute | test.py:23:16:23:39 | ControlFlowNode for Attribute() | provenance | | +| test.py:23:16:23:39 | ControlFlowNode for Attribute() | test.py:23:5:23:12 | ControlFlowNode for data_raw | provenance | | +| test.py:24:5:24:8 | ControlFlowNode for data | test.py:25:44:25:47 | ControlFlowNode for data | provenance | | +| test.py:34:5:34:8 | ControlFlowNode for data | test.py:35:10:35:13 | ControlFlowNode for data | provenance | | +| test.py:34:5:34:8 | ControlFlowNode for data | test.py:36:13:36:16 | ControlFlowNode for data | provenance | | +| test.py:34:12:34:18 | ControlFlowNode for request | test.py:34:12:34:23 | ControlFlowNode for Attribute | provenance | | +| test.py:34:12:34:23 | ControlFlowNode for Attribute | test.py:34:12:34:35 | ControlFlowNode for Attribute() | provenance | | +| test.py:34:12:34:35 | ControlFlowNode for Attribute() | test.py:34:5:34:8 | ControlFlowNode for data | provenance | | +| test.py:42:5:42:8 | ControlFlowNode for data | test.py:43:22:43:25 | ControlFlowNode for data | provenance | | +| test.py:42:5:42:8 | ControlFlowNode for data | test.py:44:25:44:28 | ControlFlowNode for data | provenance | | +| test.py:42:12:42:18 | ControlFlowNode for request | test.py:42:12:42:23 | ControlFlowNode for Attribute | provenance | | +| test.py:42:12:42:23 | ControlFlowNode for Attribute | test.py:42:12:42:35 | ControlFlowNode for Attribute() | provenance | | +| test.py:42:12:42:35 | ControlFlowNode for Attribute() | test.py:42:5:42:8 | ControlFlowNode for data | provenance | | +| test.py:47:17:47:19 | ControlFlowNode for arg | test.py:50:32:50:34 | ControlFlowNode for arg | provenance | | +| test.py:54:5:54:8 | ControlFlowNode for data | test.py:55:17:55:20 | ControlFlowNode for data | provenance | | +| test.py:54:12:54:18 | ControlFlowNode for request | test.py:54:12:54:23 | ControlFlowNode for Attribute | provenance | | +| test.py:54:12:54:23 | ControlFlowNode for Attribute | test.py:54:12:54:35 | ControlFlowNode for Attribute() | provenance | | +| test.py:54:12:54:35 | ControlFlowNode for Attribute() | test.py:54:5:54:8 | ControlFlowNode for data | provenance | | +| test.py:55:17:55:20 | ControlFlowNode for data | test.py:47:17:47:19 | ControlFlowNode for arg | provenance | | nodes | test.py:5:26:5:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test.py:5:26:5:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected index 2099e5e9d854..4fe7b60580ca 100644 --- a/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-022-PathInjection/PathInjection.expected @@ -1,126 +1,126 @@ edges -| flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | -| flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | flask_path_injection.py:19:15:19:21 | ControlFlowNode for request | -| flask_path_injection.py:19:5:19:11 | ControlFlowNode for dirname | flask_path_injection.py:21:32:21:38 | ControlFlowNode for dirname | -| flask_path_injection.py:19:15:19:21 | ControlFlowNode for request | flask_path_injection.py:19:15:19:26 | ControlFlowNode for Attribute | -| flask_path_injection.py:19:15:19:26 | ControlFlowNode for Attribute | flask_path_injection.py:19:15:19:45 | ControlFlowNode for Attribute() | -| flask_path_injection.py:19:15:19:45 | ControlFlowNode for Attribute() | flask_path_injection.py:19:5:19:11 | ControlFlowNode for dirname | -| path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:3:26:3:32 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:12:16:12:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:19:16:19:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:27:16:27:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:46:16:46:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:63:16:63:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:84:16:84:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:107:16:107:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:118:16:118:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:129:16:129:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:138:16:138:22 | ControlFlowNode for request | -| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:149:16:149:22 | ControlFlowNode for request | -| path_injection.py:12:5:12:12 | ControlFlowNode for filename | path_injection.py:13:14:13:47 | ControlFlowNode for Attribute() | -| path_injection.py:12:16:12:22 | ControlFlowNode for request | path_injection.py:12:16:12:27 | ControlFlowNode for Attribute | -| path_injection.py:12:16:12:27 | ControlFlowNode for Attribute | path_injection.py:12:16:12:47 | ControlFlowNode for Attribute() | -| path_injection.py:12:16:12:47 | ControlFlowNode for Attribute() | path_injection.py:12:5:12:12 | ControlFlowNode for filename | -| path_injection.py:19:5:19:12 | ControlFlowNode for filename | path_injection.py:20:30:20:63 | ControlFlowNode for Attribute() | -| path_injection.py:19:16:19:22 | ControlFlowNode for request | path_injection.py:19:16:19:27 | ControlFlowNode for Attribute | -| path_injection.py:19:16:19:27 | ControlFlowNode for Attribute | path_injection.py:19:16:19:47 | ControlFlowNode for Attribute() | -| path_injection.py:19:16:19:47 | ControlFlowNode for Attribute() | path_injection.py:19:5:19:12 | ControlFlowNode for filename | -| path_injection.py:20:5:20:9 | ControlFlowNode for npath | path_injection.py:21:14:21:18 | ControlFlowNode for npath | -| path_injection.py:20:13:20:64 | ControlFlowNode for Attribute() | path_injection.py:20:5:20:9 | ControlFlowNode for npath | -| path_injection.py:20:30:20:63 | ControlFlowNode for Attribute() | path_injection.py:20:13:20:64 | ControlFlowNode for Attribute() | -| path_injection.py:27:5:27:12 | ControlFlowNode for filename | path_injection.py:28:30:28:63 | ControlFlowNode for Attribute() | -| path_injection.py:27:16:27:22 | ControlFlowNode for request | path_injection.py:27:16:27:27 | ControlFlowNode for Attribute | -| path_injection.py:27:16:27:27 | ControlFlowNode for Attribute | path_injection.py:27:16:27:47 | ControlFlowNode for Attribute() | -| path_injection.py:27:16:27:47 | ControlFlowNode for Attribute() | path_injection.py:27:5:27:12 | ControlFlowNode for filename | -| path_injection.py:28:5:28:9 | ControlFlowNode for npath | path_injection.py:31:14:31:18 | ControlFlowNode for npath | -| path_injection.py:28:13:28:64 | ControlFlowNode for Attribute() | path_injection.py:28:5:28:9 | ControlFlowNode for npath | -| path_injection.py:28:30:28:63 | ControlFlowNode for Attribute() | path_injection.py:28:13:28:64 | ControlFlowNode for Attribute() | -| path_injection.py:46:5:46:12 | ControlFlowNode for filename | path_injection.py:47:30:47:63 | ControlFlowNode for Attribute() | -| path_injection.py:46:16:46:22 | ControlFlowNode for request | path_injection.py:46:16:46:27 | ControlFlowNode for Attribute | -| path_injection.py:46:16:46:27 | ControlFlowNode for Attribute | path_injection.py:46:16:46:47 | ControlFlowNode for Attribute() | -| path_injection.py:46:16:46:47 | ControlFlowNode for Attribute() | path_injection.py:46:5:46:12 | ControlFlowNode for filename | -| path_injection.py:47:5:47:9 | ControlFlowNode for npath | path_injection.py:48:14:48:18 | ControlFlowNode for npath | -| path_injection.py:47:13:47:64 | ControlFlowNode for Attribute() | path_injection.py:47:5:47:9 | ControlFlowNode for npath | -| path_injection.py:47:30:47:63 | ControlFlowNode for Attribute() | path_injection.py:47:13:47:64 | ControlFlowNode for Attribute() | -| path_injection.py:63:5:63:12 | ControlFlowNode for filename | path_injection.py:64:29:64:62 | ControlFlowNode for Attribute() | -| path_injection.py:63:16:63:22 | ControlFlowNode for request | path_injection.py:63:16:63:27 | ControlFlowNode for Attribute | -| path_injection.py:63:16:63:27 | ControlFlowNode for Attribute | path_injection.py:63:16:63:47 | ControlFlowNode for Attribute() | -| path_injection.py:63:16:63:47 | ControlFlowNode for Attribute() | path_injection.py:63:5:63:12 | ControlFlowNode for filename | -| path_injection.py:64:5:64:9 | ControlFlowNode for npath | path_injection.py:65:14:65:18 | ControlFlowNode for npath | -| path_injection.py:64:13:64:63 | ControlFlowNode for Attribute() | path_injection.py:64:5:64:9 | ControlFlowNode for npath | -| path_injection.py:64:29:64:62 | ControlFlowNode for Attribute() | path_injection.py:64:13:64:63 | ControlFlowNode for Attribute() | -| path_injection.py:84:5:84:12 | ControlFlowNode for filename | path_injection.py:85:5:85:24 | ControlFlowNode for possibly_unsafe_path | -| path_injection.py:84:16:84:22 | ControlFlowNode for request | path_injection.py:84:16:84:27 | ControlFlowNode for Attribute | -| path_injection.py:84:16:84:27 | ControlFlowNode for Attribute | path_injection.py:84:16:84:47 | ControlFlowNode for Attribute() | -| path_injection.py:84:16:84:47 | ControlFlowNode for Attribute() | path_injection.py:84:5:84:12 | ControlFlowNode for filename | -| path_injection.py:85:5:85:24 | ControlFlowNode for possibly_unsafe_path | path_injection.py:86:24:86:43 | ControlFlowNode for possibly_unsafe_path | -| path_injection.py:86:24:86:43 | ControlFlowNode for possibly_unsafe_path | path_injection.py:87:18:87:37 | ControlFlowNode for possibly_unsafe_path | -| path_injection.py:91:20:91:25 | ControlFlowNode for foo_id | path_injection.py:93:5:93:8 | ControlFlowNode for path | -| path_injection.py:93:5:93:8 | ControlFlowNode for path | path_injection.py:94:14:94:17 | ControlFlowNode for path | -| path_injection.py:98:20:98:22 | ControlFlowNode for foo | path_injection.py:101:5:101:8 | ControlFlowNode for path | -| path_injection.py:101:5:101:8 | ControlFlowNode for path | path_injection.py:102:14:102:17 | ControlFlowNode for path | -| path_injection.py:107:5:107:12 | ControlFlowNode for filename | path_injection.py:108:5:108:8 | ControlFlowNode for path | -| path_injection.py:107:16:107:22 | ControlFlowNode for request | path_injection.py:107:16:107:27 | ControlFlowNode for Attribute | -| path_injection.py:107:16:107:27 | ControlFlowNode for Attribute | path_injection.py:107:16:107:47 | ControlFlowNode for Attribute() | -| path_injection.py:107:16:107:47 | ControlFlowNode for Attribute() | path_injection.py:107:5:107:12 | ControlFlowNode for filename | -| path_injection.py:108:5:108:8 | ControlFlowNode for path | path_injection.py:113:14:113:17 | ControlFlowNode for path | -| path_injection.py:118:5:118:12 | ControlFlowNode for filename | path_injection.py:119:5:119:8 | ControlFlowNode for path | -| path_injection.py:118:16:118:22 | ControlFlowNode for request | path_injection.py:118:16:118:27 | ControlFlowNode for Attribute | -| path_injection.py:118:16:118:27 | ControlFlowNode for Attribute | path_injection.py:118:16:118:47 | ControlFlowNode for Attribute() | -| path_injection.py:118:16:118:47 | ControlFlowNode for Attribute() | path_injection.py:118:5:118:12 | ControlFlowNode for filename | -| path_injection.py:119:5:119:8 | ControlFlowNode for path | path_injection.py:124:14:124:17 | ControlFlowNode for path | -| path_injection.py:129:5:129:12 | ControlFlowNode for filename | path_injection.py:130:5:130:8 | ControlFlowNode for path | -| path_injection.py:129:16:129:22 | ControlFlowNode for request | path_injection.py:129:16:129:27 | ControlFlowNode for Attribute | -| path_injection.py:129:16:129:27 | ControlFlowNode for Attribute | path_injection.py:129:16:129:47 | ControlFlowNode for Attribute() | -| path_injection.py:129:16:129:47 | ControlFlowNode for Attribute() | path_injection.py:129:5:129:12 | ControlFlowNode for filename | -| path_injection.py:130:5:130:8 | ControlFlowNode for path | path_injection.py:131:5:131:13 | ControlFlowNode for sanitized | -| path_injection.py:131:5:131:13 | ControlFlowNode for sanitized | path_injection.py:132:14:132:22 | ControlFlowNode for sanitized | -| path_injection.py:138:5:138:12 | ControlFlowNode for filename | path_injection.py:139:5:139:8 | ControlFlowNode for path | -| path_injection.py:138:16:138:22 | ControlFlowNode for request | path_injection.py:138:16:138:27 | ControlFlowNode for Attribute | -| path_injection.py:138:16:138:27 | ControlFlowNode for Attribute | path_injection.py:138:16:138:47 | ControlFlowNode for Attribute() | -| path_injection.py:138:16:138:47 | ControlFlowNode for Attribute() | path_injection.py:138:5:138:12 | ControlFlowNode for filename | -| path_injection.py:139:5:139:8 | ControlFlowNode for path | path_injection.py:140:47:140:50 | ControlFlowNode for path | -| path_injection.py:140:47:140:50 | ControlFlowNode for path | path_injection.py:142:14:142:17 | ControlFlowNode for path | -| path_injection.py:149:5:149:12 | ControlFlowNode for filename | path_injection.py:151:9:151:12 | ControlFlowNode for path | -| path_injection.py:149:16:149:22 | ControlFlowNode for request | path_injection.py:149:16:149:27 | ControlFlowNode for Attribute | -| path_injection.py:149:16:149:27 | ControlFlowNode for Attribute | path_injection.py:149:16:149:47 | ControlFlowNode for Attribute() | -| path_injection.py:149:16:149:47 | ControlFlowNode for Attribute() | path_injection.py:149:5:149:12 | ControlFlowNode for filename | -| path_injection.py:151:9:151:12 | ControlFlowNode for path | path_injection.py:152:18:152:21 | ControlFlowNode for path | -| pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | pathlib_use.py:3:26:3:32 | ControlFlowNode for request | -| pathlib_use.py:3:26:3:32 | ControlFlowNode for request | pathlib_use.py:12:16:12:22 | ControlFlowNode for request | -| pathlib_use.py:12:5:12:12 | ControlFlowNode for filename | pathlib_use.py:13:5:13:5 | ControlFlowNode for p | -| pathlib_use.py:12:5:12:12 | ControlFlowNode for filename | pathlib_use.py:16:5:16:6 | ControlFlowNode for p2 | -| pathlib_use.py:12:16:12:22 | ControlFlowNode for request | pathlib_use.py:12:16:12:27 | ControlFlowNode for Attribute | -| pathlib_use.py:12:16:12:27 | ControlFlowNode for Attribute | pathlib_use.py:12:16:12:47 | ControlFlowNode for Attribute() | -| pathlib_use.py:12:16:12:47 | ControlFlowNode for Attribute() | pathlib_use.py:12:5:12:12 | ControlFlowNode for filename | -| pathlib_use.py:13:5:13:5 | ControlFlowNode for p | pathlib_use.py:14:5:14:5 | ControlFlowNode for p | -| pathlib_use.py:16:5:16:6 | ControlFlowNode for p2 | pathlib_use.py:17:5:17:6 | ControlFlowNode for p2 | -| test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:3:26:3:32 | ControlFlowNode for request | -| test.py:3:26:3:32 | ControlFlowNode for request | test.py:9:12:9:18 | ControlFlowNode for request | -| test.py:9:12:9:18 | ControlFlowNode for request | test.py:9:12:9:23 | ControlFlowNode for Attribute | -| test.py:9:12:9:23 | ControlFlowNode for Attribute | test.py:9:12:9:39 | ControlFlowNode for Attribute() | -| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:18:9:18:16 | ControlFlowNode for source() | -| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:24:9:24:16 | ControlFlowNode for source() | -| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:31:9:31:16 | ControlFlowNode for source() | -| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:46:9:46:16 | ControlFlowNode for source() | -| test.py:12:15:12:15 | ControlFlowNode for x | test.py:13:29:13:29 | ControlFlowNode for x | -| test.py:13:29:13:29 | ControlFlowNode for x | test.py:13:12:13:30 | ControlFlowNode for Attribute() | -| test.py:18:5:18:5 | ControlFlowNode for x | test.py:19:10:19:10 | ControlFlowNode for x | -| test.py:18:9:18:16 | ControlFlowNode for source() | test.py:18:5:18:5 | ControlFlowNode for x | -| test.py:24:5:24:5 | ControlFlowNode for x | test.py:25:19:25:19 | ControlFlowNode for x | -| test.py:24:9:24:16 | ControlFlowNode for source() | test.py:24:5:24:5 | ControlFlowNode for x | -| test.py:25:5:25:5 | ControlFlowNode for y | test.py:26:10:26:10 | ControlFlowNode for y | -| test.py:25:9:25:20 | ControlFlowNode for normalize() | test.py:25:5:25:5 | ControlFlowNode for y | -| test.py:25:19:25:19 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | -| test.py:25:19:25:19 | ControlFlowNode for x | test.py:25:9:25:20 | ControlFlowNode for normalize() | -| test.py:31:5:31:5 | ControlFlowNode for x | test.py:33:14:33:14 | ControlFlowNode for x | -| test.py:31:9:31:16 | ControlFlowNode for source() | test.py:31:5:31:5 | ControlFlowNode for x | -| test.py:46:5:46:5 | ControlFlowNode for x | test.py:48:23:48:23 | ControlFlowNode for x | -| test.py:46:9:46:16 | ControlFlowNode for source() | test.py:46:5:46:5 | ControlFlowNode for x | -| test.py:48:9:48:9 | ControlFlowNode for y | test.py:49:14:49:14 | ControlFlowNode for y | -| test.py:48:13:48:24 | ControlFlowNode for normalize() | test.py:48:9:48:9 | ControlFlowNode for y | -| test.py:48:23:48:23 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | -| test.py:48:23:48:23 | ControlFlowNode for x | test.py:48:13:48:24 | ControlFlowNode for normalize() | +| flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | flask_path_injection.py:19:15:19:21 | ControlFlowNode for request | provenance | | +| flask_path_injection.py:19:5:19:11 | ControlFlowNode for dirname | flask_path_injection.py:21:32:21:38 | ControlFlowNode for dirname | provenance | | +| flask_path_injection.py:19:15:19:21 | ControlFlowNode for request | flask_path_injection.py:19:15:19:26 | ControlFlowNode for Attribute | provenance | | +| flask_path_injection.py:19:15:19:26 | ControlFlowNode for Attribute | flask_path_injection.py:19:15:19:45 | ControlFlowNode for Attribute() | provenance | | +| flask_path_injection.py:19:15:19:45 | ControlFlowNode for Attribute() | flask_path_injection.py:19:5:19:11 | ControlFlowNode for dirname | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for ImportMember | path_injection.py:3:26:3:32 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:12:16:12:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:19:16:19:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:27:16:27:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:46:16:46:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:63:16:63:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:84:16:84:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:107:16:107:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:118:16:118:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:129:16:129:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:138:16:138:22 | ControlFlowNode for request | provenance | | +| path_injection.py:3:26:3:32 | ControlFlowNode for request | path_injection.py:149:16:149:22 | ControlFlowNode for request | provenance | | +| path_injection.py:12:5:12:12 | ControlFlowNode for filename | path_injection.py:13:14:13:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:12:16:12:22 | ControlFlowNode for request | path_injection.py:12:16:12:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:12:16:12:27 | ControlFlowNode for Attribute | path_injection.py:12:16:12:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:12:16:12:47 | ControlFlowNode for Attribute() | path_injection.py:12:5:12:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:19:5:19:12 | ControlFlowNode for filename | path_injection.py:20:30:20:63 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:19:16:19:22 | ControlFlowNode for request | path_injection.py:19:16:19:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:19:16:19:27 | ControlFlowNode for Attribute | path_injection.py:19:16:19:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:19:16:19:47 | ControlFlowNode for Attribute() | path_injection.py:19:5:19:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:20:5:20:9 | ControlFlowNode for npath | path_injection.py:21:14:21:18 | ControlFlowNode for npath | provenance | | +| path_injection.py:20:13:20:64 | ControlFlowNode for Attribute() | path_injection.py:20:5:20:9 | ControlFlowNode for npath | provenance | | +| path_injection.py:20:30:20:63 | ControlFlowNode for Attribute() | path_injection.py:20:13:20:64 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:27:5:27:12 | ControlFlowNode for filename | path_injection.py:28:30:28:63 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:27:16:27:22 | ControlFlowNode for request | path_injection.py:27:16:27:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:27:16:27:27 | ControlFlowNode for Attribute | path_injection.py:27:16:27:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:27:16:27:47 | ControlFlowNode for Attribute() | path_injection.py:27:5:27:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:28:5:28:9 | ControlFlowNode for npath | path_injection.py:31:14:31:18 | ControlFlowNode for npath | provenance | | +| path_injection.py:28:13:28:64 | ControlFlowNode for Attribute() | path_injection.py:28:5:28:9 | ControlFlowNode for npath | provenance | | +| path_injection.py:28:30:28:63 | ControlFlowNode for Attribute() | path_injection.py:28:13:28:64 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:46:5:46:12 | ControlFlowNode for filename | path_injection.py:47:30:47:63 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:46:16:46:22 | ControlFlowNode for request | path_injection.py:46:16:46:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:46:16:46:27 | ControlFlowNode for Attribute | path_injection.py:46:16:46:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:46:16:46:47 | ControlFlowNode for Attribute() | path_injection.py:46:5:46:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:47:5:47:9 | ControlFlowNode for npath | path_injection.py:48:14:48:18 | ControlFlowNode for npath | provenance | | +| path_injection.py:47:13:47:64 | ControlFlowNode for Attribute() | path_injection.py:47:5:47:9 | ControlFlowNode for npath | provenance | | +| path_injection.py:47:30:47:63 | ControlFlowNode for Attribute() | path_injection.py:47:13:47:64 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:63:5:63:12 | ControlFlowNode for filename | path_injection.py:64:29:64:62 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:63:16:63:22 | ControlFlowNode for request | path_injection.py:63:16:63:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:63:16:63:27 | ControlFlowNode for Attribute | path_injection.py:63:16:63:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:63:16:63:47 | ControlFlowNode for Attribute() | path_injection.py:63:5:63:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:64:5:64:9 | ControlFlowNode for npath | path_injection.py:65:14:65:18 | ControlFlowNode for npath | provenance | | +| path_injection.py:64:13:64:63 | ControlFlowNode for Attribute() | path_injection.py:64:5:64:9 | ControlFlowNode for npath | provenance | | +| path_injection.py:64:29:64:62 | ControlFlowNode for Attribute() | path_injection.py:64:13:64:63 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:84:5:84:12 | ControlFlowNode for filename | path_injection.py:85:5:85:24 | ControlFlowNode for possibly_unsafe_path | provenance | | +| path_injection.py:84:16:84:22 | ControlFlowNode for request | path_injection.py:84:16:84:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:84:16:84:27 | ControlFlowNode for Attribute | path_injection.py:84:16:84:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:84:16:84:47 | ControlFlowNode for Attribute() | path_injection.py:84:5:84:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:85:5:85:24 | ControlFlowNode for possibly_unsafe_path | path_injection.py:86:24:86:43 | ControlFlowNode for possibly_unsafe_path | provenance | | +| path_injection.py:86:24:86:43 | ControlFlowNode for possibly_unsafe_path | path_injection.py:87:18:87:37 | ControlFlowNode for possibly_unsafe_path | provenance | | +| path_injection.py:91:20:91:25 | ControlFlowNode for foo_id | path_injection.py:93:5:93:8 | ControlFlowNode for path | provenance | | +| path_injection.py:93:5:93:8 | ControlFlowNode for path | path_injection.py:94:14:94:17 | ControlFlowNode for path | provenance | | +| path_injection.py:98:20:98:22 | ControlFlowNode for foo | path_injection.py:101:5:101:8 | ControlFlowNode for path | provenance | | +| path_injection.py:101:5:101:8 | ControlFlowNode for path | path_injection.py:102:14:102:17 | ControlFlowNode for path | provenance | | +| path_injection.py:107:5:107:12 | ControlFlowNode for filename | path_injection.py:108:5:108:8 | ControlFlowNode for path | provenance | | +| path_injection.py:107:16:107:22 | ControlFlowNode for request | path_injection.py:107:16:107:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:107:16:107:27 | ControlFlowNode for Attribute | path_injection.py:107:16:107:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:107:16:107:47 | ControlFlowNode for Attribute() | path_injection.py:107:5:107:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:108:5:108:8 | ControlFlowNode for path | path_injection.py:113:14:113:17 | ControlFlowNode for path | provenance | | +| path_injection.py:118:5:118:12 | ControlFlowNode for filename | path_injection.py:119:5:119:8 | ControlFlowNode for path | provenance | | +| path_injection.py:118:16:118:22 | ControlFlowNode for request | path_injection.py:118:16:118:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:118:16:118:27 | ControlFlowNode for Attribute | path_injection.py:118:16:118:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:118:16:118:47 | ControlFlowNode for Attribute() | path_injection.py:118:5:118:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:119:5:119:8 | ControlFlowNode for path | path_injection.py:124:14:124:17 | ControlFlowNode for path | provenance | | +| path_injection.py:129:5:129:12 | ControlFlowNode for filename | path_injection.py:130:5:130:8 | ControlFlowNode for path | provenance | | +| path_injection.py:129:16:129:22 | ControlFlowNode for request | path_injection.py:129:16:129:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:129:16:129:27 | ControlFlowNode for Attribute | path_injection.py:129:16:129:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:129:16:129:47 | ControlFlowNode for Attribute() | path_injection.py:129:5:129:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:130:5:130:8 | ControlFlowNode for path | path_injection.py:131:5:131:13 | ControlFlowNode for sanitized | provenance | | +| path_injection.py:131:5:131:13 | ControlFlowNode for sanitized | path_injection.py:132:14:132:22 | ControlFlowNode for sanitized | provenance | | +| path_injection.py:138:5:138:12 | ControlFlowNode for filename | path_injection.py:139:5:139:8 | ControlFlowNode for path | provenance | | +| path_injection.py:138:16:138:22 | ControlFlowNode for request | path_injection.py:138:16:138:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:138:16:138:27 | ControlFlowNode for Attribute | path_injection.py:138:16:138:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:138:16:138:47 | ControlFlowNode for Attribute() | path_injection.py:138:5:138:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:139:5:139:8 | ControlFlowNode for path | path_injection.py:140:47:140:50 | ControlFlowNode for path | provenance | | +| path_injection.py:140:47:140:50 | ControlFlowNode for path | path_injection.py:142:14:142:17 | ControlFlowNode for path | provenance | | +| path_injection.py:149:5:149:12 | ControlFlowNode for filename | path_injection.py:151:9:151:12 | ControlFlowNode for path | provenance | | +| path_injection.py:149:16:149:22 | ControlFlowNode for request | path_injection.py:149:16:149:27 | ControlFlowNode for Attribute | provenance | | +| path_injection.py:149:16:149:27 | ControlFlowNode for Attribute | path_injection.py:149:16:149:47 | ControlFlowNode for Attribute() | provenance | | +| path_injection.py:149:16:149:47 | ControlFlowNode for Attribute() | path_injection.py:149:5:149:12 | ControlFlowNode for filename | provenance | | +| path_injection.py:151:9:151:12 | ControlFlowNode for path | path_injection.py:152:18:152:21 | ControlFlowNode for path | provenance | | +| pathlib_use.py:3:26:3:32 | ControlFlowNode for ImportMember | pathlib_use.py:3:26:3:32 | ControlFlowNode for request | provenance | | +| pathlib_use.py:3:26:3:32 | ControlFlowNode for request | pathlib_use.py:12:16:12:22 | ControlFlowNode for request | provenance | | +| pathlib_use.py:12:5:12:12 | ControlFlowNode for filename | pathlib_use.py:13:5:13:5 | ControlFlowNode for p | provenance | | +| pathlib_use.py:12:5:12:12 | ControlFlowNode for filename | pathlib_use.py:16:5:16:6 | ControlFlowNode for p2 | provenance | | +| pathlib_use.py:12:16:12:22 | ControlFlowNode for request | pathlib_use.py:12:16:12:27 | ControlFlowNode for Attribute | provenance | | +| pathlib_use.py:12:16:12:27 | ControlFlowNode for Attribute | pathlib_use.py:12:16:12:47 | ControlFlowNode for Attribute() | provenance | | +| pathlib_use.py:12:16:12:47 | ControlFlowNode for Attribute() | pathlib_use.py:12:5:12:12 | ControlFlowNode for filename | provenance | | +| pathlib_use.py:13:5:13:5 | ControlFlowNode for p | pathlib_use.py:14:5:14:5 | ControlFlowNode for p | provenance | | +| pathlib_use.py:16:5:16:6 | ControlFlowNode for p2 | pathlib_use.py:17:5:17:6 | ControlFlowNode for p2 | provenance | | +| test.py:3:26:3:32 | ControlFlowNode for ImportMember | test.py:3:26:3:32 | ControlFlowNode for request | provenance | | +| test.py:3:26:3:32 | ControlFlowNode for request | test.py:9:12:9:18 | ControlFlowNode for request | provenance | | +| test.py:9:12:9:18 | ControlFlowNode for request | test.py:9:12:9:23 | ControlFlowNode for Attribute | provenance | | +| test.py:9:12:9:23 | ControlFlowNode for Attribute | test.py:9:12:9:39 | ControlFlowNode for Attribute() | provenance | | +| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:18:9:18:16 | ControlFlowNode for source() | provenance | | +| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:24:9:24:16 | ControlFlowNode for source() | provenance | | +| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:31:9:31:16 | ControlFlowNode for source() | provenance | | +| test.py:9:12:9:39 | ControlFlowNode for Attribute() | test.py:46:9:46:16 | ControlFlowNode for source() | provenance | | +| test.py:12:15:12:15 | ControlFlowNode for x | test.py:13:29:13:29 | ControlFlowNode for x | provenance | | +| test.py:13:29:13:29 | ControlFlowNode for x | test.py:13:12:13:30 | ControlFlowNode for Attribute() | provenance | | +| test.py:18:5:18:5 | ControlFlowNode for x | test.py:19:10:19:10 | ControlFlowNode for x | provenance | | +| test.py:18:9:18:16 | ControlFlowNode for source() | test.py:18:5:18:5 | ControlFlowNode for x | provenance | | +| test.py:24:5:24:5 | ControlFlowNode for x | test.py:25:19:25:19 | ControlFlowNode for x | provenance | | +| test.py:24:9:24:16 | ControlFlowNode for source() | test.py:24:5:24:5 | ControlFlowNode for x | provenance | | +| test.py:25:5:25:5 | ControlFlowNode for y | test.py:26:10:26:10 | ControlFlowNode for y | provenance | | +| test.py:25:9:25:20 | ControlFlowNode for normalize() | test.py:25:5:25:5 | ControlFlowNode for y | provenance | | +| test.py:25:19:25:19 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | provenance | | +| test.py:25:19:25:19 | ControlFlowNode for x | test.py:25:9:25:20 | ControlFlowNode for normalize() | provenance | | +| test.py:31:5:31:5 | ControlFlowNode for x | test.py:33:14:33:14 | ControlFlowNode for x | provenance | | +| test.py:31:9:31:16 | ControlFlowNode for source() | test.py:31:5:31:5 | ControlFlowNode for x | provenance | | +| test.py:46:5:46:5 | ControlFlowNode for x | test.py:48:23:48:23 | ControlFlowNode for x | provenance | | +| test.py:46:9:46:16 | ControlFlowNode for source() | test.py:46:5:46:5 | ControlFlowNode for x | provenance | | +| test.py:48:9:48:9 | ControlFlowNode for y | test.py:49:14:49:14 | ControlFlowNode for y | provenance | | +| test.py:48:13:48:24 | ControlFlowNode for normalize() | test.py:48:9:48:9 | ControlFlowNode for y | provenance | | +| test.py:48:23:48:23 | ControlFlowNode for x | test.py:12:15:12:15 | ControlFlowNode for x | provenance | | +| test.py:48:23:48:23 | ControlFlowNode for x | test.py:48:13:48:24 | ControlFlowNode for normalize() | provenance | | nodes | flask_path_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | flask_path_injection.py:1:26:1:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-022-TarSlip/TarSlip.expected b/python/ql/test/query-tests/Security/CWE-022-TarSlip/TarSlip.expected index 2fb4890c82ef..6f98ea1aae2b 100644 --- a/python/ql/test/query-tests/Security/CWE-022-TarSlip/TarSlip.expected +++ b/python/ql/test/query-tests/Security/CWE-022-TarSlip/TarSlip.expected @@ -1,26 +1,26 @@ edges -| tarslip.py:14:1:14:3 | ControlFlowNode for tar | tarslip.py:15:1:15:3 | ControlFlowNode for tar | -| tarslip.py:14:7:14:39 | ControlFlowNode for Attribute() | tarslip.py:14:1:14:3 | ControlFlowNode for tar | -| tarslip.py:18:1:18:3 | ControlFlowNode for tar | tarslip.py:19:5:19:9 | ControlFlowNode for entry | -| tarslip.py:18:7:18:39 | ControlFlowNode for Attribute() | tarslip.py:18:1:18:3 | ControlFlowNode for tar | -| tarslip.py:19:5:19:9 | ControlFlowNode for entry | tarslip.py:20:17:20:21 | ControlFlowNode for entry | -| tarslip.py:35:1:35:3 | ControlFlowNode for tar | tarslip.py:36:5:36:9 | ControlFlowNode for entry | -| tarslip.py:35:7:35:39 | ControlFlowNode for Attribute() | tarslip.py:35:1:35:3 | ControlFlowNode for tar | -| tarslip.py:36:5:36:9 | ControlFlowNode for entry | tarslip.py:39:17:39:21 | ControlFlowNode for entry | -| tarslip.py:42:1:42:3 | ControlFlowNode for tar | tarslip.py:43:24:43:26 | ControlFlowNode for tar | -| tarslip.py:42:7:42:39 | ControlFlowNode for Attribute() | tarslip.py:42:1:42:3 | ControlFlowNode for tar | -| tarslip.py:58:1:58:3 | ControlFlowNode for tar | tarslip.py:59:5:59:9 | ControlFlowNode for entry | -| tarslip.py:58:7:58:39 | ControlFlowNode for Attribute() | tarslip.py:58:1:58:3 | ControlFlowNode for tar | -| tarslip.py:59:5:59:9 | ControlFlowNode for entry | tarslip.py:61:21:61:25 | ControlFlowNode for entry | -| tarslip.py:90:1:90:3 | ControlFlowNode for tar | tarslip.py:91:1:91:3 | ControlFlowNode for tar | -| tarslip.py:90:7:90:39 | ControlFlowNode for Attribute() | tarslip.py:90:1:90:3 | ControlFlowNode for tar | -| tarslip.py:94:1:94:3 | ControlFlowNode for tar | tarslip.py:95:5:95:9 | ControlFlowNode for entry | -| tarslip.py:94:7:94:39 | ControlFlowNode for Attribute() | tarslip.py:94:1:94:3 | ControlFlowNode for tar | -| tarslip.py:95:5:95:9 | ControlFlowNode for entry | tarslip.py:96:17:96:21 | ControlFlowNode for entry | -| tarslip.py:109:1:109:3 | ControlFlowNode for tar | tarslip.py:110:1:110:3 | ControlFlowNode for tar | -| tarslip.py:109:7:109:39 | ControlFlowNode for Attribute() | tarslip.py:109:1:109:3 | ControlFlowNode for tar | -| tarslip.py:112:1:112:3 | ControlFlowNode for tar | tarslip.py:113:24:113:26 | ControlFlowNode for tar | -| tarslip.py:112:7:112:39 | ControlFlowNode for Attribute() | tarslip.py:112:1:112:3 | ControlFlowNode for tar | +| tarslip.py:14:1:14:3 | ControlFlowNode for tar | tarslip.py:15:1:15:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:14:7:14:39 | ControlFlowNode for Attribute() | tarslip.py:14:1:14:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:18:1:18:3 | ControlFlowNode for tar | tarslip.py:19:5:19:9 | ControlFlowNode for entry | provenance | | +| tarslip.py:18:7:18:39 | ControlFlowNode for Attribute() | tarslip.py:18:1:18:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:19:5:19:9 | ControlFlowNode for entry | tarslip.py:20:17:20:21 | ControlFlowNode for entry | provenance | | +| tarslip.py:35:1:35:3 | ControlFlowNode for tar | tarslip.py:36:5:36:9 | ControlFlowNode for entry | provenance | | +| tarslip.py:35:7:35:39 | ControlFlowNode for Attribute() | tarslip.py:35:1:35:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:36:5:36:9 | ControlFlowNode for entry | tarslip.py:39:17:39:21 | ControlFlowNode for entry | provenance | | +| tarslip.py:42:1:42:3 | ControlFlowNode for tar | tarslip.py:43:24:43:26 | ControlFlowNode for tar | provenance | | +| tarslip.py:42:7:42:39 | ControlFlowNode for Attribute() | tarslip.py:42:1:42:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:58:1:58:3 | ControlFlowNode for tar | tarslip.py:59:5:59:9 | ControlFlowNode for entry | provenance | | +| tarslip.py:58:7:58:39 | ControlFlowNode for Attribute() | tarslip.py:58:1:58:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:59:5:59:9 | ControlFlowNode for entry | tarslip.py:61:21:61:25 | ControlFlowNode for entry | provenance | | +| tarslip.py:90:1:90:3 | ControlFlowNode for tar | tarslip.py:91:1:91:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:90:7:90:39 | ControlFlowNode for Attribute() | tarslip.py:90:1:90:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:94:1:94:3 | ControlFlowNode for tar | tarslip.py:95:5:95:9 | ControlFlowNode for entry | provenance | | +| tarslip.py:94:7:94:39 | ControlFlowNode for Attribute() | tarslip.py:94:1:94:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:95:5:95:9 | ControlFlowNode for entry | tarslip.py:96:17:96:21 | ControlFlowNode for entry | provenance | | +| tarslip.py:109:1:109:3 | ControlFlowNode for tar | tarslip.py:110:1:110:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:109:7:109:39 | ControlFlowNode for Attribute() | tarslip.py:109:1:109:3 | ControlFlowNode for tar | provenance | | +| tarslip.py:112:1:112:3 | ControlFlowNode for tar | tarslip.py:113:24:113:26 | ControlFlowNode for tar | provenance | | +| tarslip.py:112:7:112:39 | ControlFlowNode for Attribute() | tarslip.py:112:1:112:3 | ControlFlowNode for tar | provenance | | nodes | tarslip.py:14:1:14:3 | ControlFlowNode for tar | semmle.label | ControlFlowNode for tar | | tarslip.py:14:7:14:39 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/query-tests/Security/CWE-078-CommandInjection-py2/CommandInjection.expected b/python/ql/test/query-tests/Security/CWE-078-CommandInjection-py2/CommandInjection.expected index 021f917ec0bc..469559c02581 100644 --- a/python/ql/test/query-tests/Security/CWE-078-CommandInjection-py2/CommandInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-078-CommandInjection-py2/CommandInjection.expected @@ -1,18 +1,18 @@ edges -| command_injection.py:5:26:5:32 | ControlFlowNode for ImportMember | command_injection.py:5:26:5:32 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:18:13:18:19 | ControlFlowNode for request | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:19:15:19:27 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:20:15:20:27 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:21:15:21:27 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:23:20:23:32 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:25:19:25:31 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:26:19:26:31 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:27:19:27:31 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:28:19:28:31 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:29:19:29:31 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:13:18:19 | ControlFlowNode for request | command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | -| command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | -| command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | command_injection.py:18:5:18:9 | ControlFlowNode for files | +| command_injection.py:5:26:5:32 | ControlFlowNode for ImportMember | command_injection.py:5:26:5:32 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:18:13:18:19 | ControlFlowNode for request | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:19:15:19:27 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:20:15:20:27 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:21:15:21:27 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:23:20:23:32 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:25:19:25:31 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:26:19:26:31 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:27:19:27:31 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:28:19:28:31 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:29:19:29:31 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:13:18:19 | ControlFlowNode for request | command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | command_injection.py:18:5:18:9 | ControlFlowNode for files | provenance | | nodes | command_injection.py:5:26:5:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | command_injection.py:5:26:5:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-078-CommandInjection/CommandInjection.expected b/python/ql/test/query-tests/Security/CWE-078-CommandInjection/CommandInjection.expected index b968144d7630..3031876928f0 100644 --- a/python/ql/test/query-tests/Security/CWE-078-CommandInjection/CommandInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-078-CommandInjection/CommandInjection.expected @@ -1,50 +1,50 @@ edges -| command_injection.py:5:26:5:32 | ControlFlowNode for ImportMember | command_injection.py:5:26:5:32 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:11:13:11:19 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:18:13:18:19 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:25:11:25:17 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:31:13:31:19 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:38:15:38:21 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:54:15:54:21 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:71:12:71:18 | ControlFlowNode for request | -| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:78:12:78:18 | ControlFlowNode for request | -| command_injection.py:11:5:11:9 | ControlFlowNode for files | command_injection.py:13:15:13:27 | ControlFlowNode for BinaryExpr | -| command_injection.py:11:13:11:19 | ControlFlowNode for request | command_injection.py:11:13:11:24 | ControlFlowNode for Attribute | -| command_injection.py:11:13:11:24 | ControlFlowNode for Attribute | command_injection.py:11:13:11:41 | ControlFlowNode for Attribute() | -| command_injection.py:11:13:11:41 | ControlFlowNode for Attribute() | command_injection.py:11:5:11:9 | ControlFlowNode for files | -| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:20:22:20:34 | ControlFlowNode for BinaryExpr | -| command_injection.py:18:13:18:19 | ControlFlowNode for request | command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | -| command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | -| command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | command_injection.py:18:5:18:9 | ControlFlowNode for files | -| command_injection.py:25:5:25:7 | ControlFlowNode for cmd | command_injection.py:26:23:26:25 | ControlFlowNode for cmd | -| command_injection.py:25:11:25:17 | ControlFlowNode for request | command_injection.py:25:11:25:22 | ControlFlowNode for Attribute | -| command_injection.py:25:11:25:22 | ControlFlowNode for Attribute | command_injection.py:25:11:25:37 | ControlFlowNode for Attribute() | -| command_injection.py:25:11:25:37 | ControlFlowNode for Attribute() | command_injection.py:25:5:25:7 | ControlFlowNode for cmd | -| command_injection.py:31:5:31:9 | ControlFlowNode for files | command_injection.py:33:14:33:26 | ControlFlowNode for BinaryExpr | -| command_injection.py:31:13:31:19 | ControlFlowNode for request | command_injection.py:31:13:31:24 | ControlFlowNode for Attribute | -| command_injection.py:31:13:31:24 | ControlFlowNode for Attribute | command_injection.py:31:13:31:41 | ControlFlowNode for Attribute() | -| command_injection.py:31:13:31:41 | ControlFlowNode for Attribute() | command_injection.py:31:5:31:9 | ControlFlowNode for files | -| command_injection.py:38:5:38:11 | ControlFlowNode for command | command_injection.py:41:15:41:21 | ControlFlowNode for command | -| command_injection.py:38:5:38:11 | ControlFlowNode for command | command_injection.py:42:15:42:21 | ControlFlowNode for command | -| command_injection.py:38:15:38:21 | ControlFlowNode for request | command_injection.py:38:15:38:26 | ControlFlowNode for Attribute | -| command_injection.py:38:15:38:26 | ControlFlowNode for Attribute | command_injection.py:38:15:38:45 | ControlFlowNode for Attribute() | -| command_injection.py:38:15:38:45 | ControlFlowNode for Attribute() | command_injection.py:38:5:38:11 | ControlFlowNode for command | -| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:55:15:55:21 | ControlFlowNode for command | -| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:56:14:56:20 | ControlFlowNode for command | -| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:57:21:57:27 | ControlFlowNode for command | -| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:58:27:58:33 | ControlFlowNode for command | -| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:59:20:59:26 | ControlFlowNode for command | -| command_injection.py:54:15:54:21 | ControlFlowNode for request | command_injection.py:54:15:54:26 | ControlFlowNode for Attribute | -| command_injection.py:54:15:54:26 | ControlFlowNode for Attribute | command_injection.py:54:15:54:45 | ControlFlowNode for Attribute() | -| command_injection.py:54:15:54:45 | ControlFlowNode for Attribute() | command_injection.py:54:5:54:11 | ControlFlowNode for command | -| command_injection.py:71:5:71:8 | ControlFlowNode for path | command_injection.py:73:19:73:30 | ControlFlowNode for BinaryExpr | -| command_injection.py:71:12:71:18 | ControlFlowNode for request | command_injection.py:71:12:71:23 | ControlFlowNode for Attribute | -| command_injection.py:71:12:71:23 | ControlFlowNode for Attribute | command_injection.py:71:12:71:39 | ControlFlowNode for Attribute() | -| command_injection.py:71:12:71:39 | ControlFlowNode for Attribute() | command_injection.py:71:5:71:8 | ControlFlowNode for path | -| command_injection.py:78:5:78:8 | ControlFlowNode for path | command_injection.py:80:19:80:30 | ControlFlowNode for BinaryExpr | -| command_injection.py:78:12:78:18 | ControlFlowNode for request | command_injection.py:78:12:78:23 | ControlFlowNode for Attribute | -| command_injection.py:78:12:78:23 | ControlFlowNode for Attribute | command_injection.py:78:12:78:39 | ControlFlowNode for Attribute() | -| command_injection.py:78:12:78:39 | ControlFlowNode for Attribute() | command_injection.py:78:5:78:8 | ControlFlowNode for path | +| command_injection.py:5:26:5:32 | ControlFlowNode for ImportMember | command_injection.py:5:26:5:32 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:11:13:11:19 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:18:13:18:19 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:25:11:25:17 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:31:13:31:19 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:38:15:38:21 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:54:15:54:21 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:71:12:71:18 | ControlFlowNode for request | provenance | | +| command_injection.py:5:26:5:32 | ControlFlowNode for request | command_injection.py:78:12:78:18 | ControlFlowNode for request | provenance | | +| command_injection.py:11:5:11:9 | ControlFlowNode for files | command_injection.py:13:15:13:27 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:11:13:11:19 | ControlFlowNode for request | command_injection.py:11:13:11:24 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:11:13:11:24 | ControlFlowNode for Attribute | command_injection.py:11:13:11:41 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:11:13:11:41 | ControlFlowNode for Attribute() | command_injection.py:11:5:11:9 | ControlFlowNode for files | provenance | | +| command_injection.py:18:5:18:9 | ControlFlowNode for files | command_injection.py:20:22:20:34 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:18:13:18:19 | ControlFlowNode for request | command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:18:13:18:24 | ControlFlowNode for Attribute | command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:18:13:18:41 | ControlFlowNode for Attribute() | command_injection.py:18:5:18:9 | ControlFlowNode for files | provenance | | +| command_injection.py:25:5:25:7 | ControlFlowNode for cmd | command_injection.py:26:23:26:25 | ControlFlowNode for cmd | provenance | | +| command_injection.py:25:11:25:17 | ControlFlowNode for request | command_injection.py:25:11:25:22 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:25:11:25:22 | ControlFlowNode for Attribute | command_injection.py:25:11:25:37 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:25:11:25:37 | ControlFlowNode for Attribute() | command_injection.py:25:5:25:7 | ControlFlowNode for cmd | provenance | | +| command_injection.py:31:5:31:9 | ControlFlowNode for files | command_injection.py:33:14:33:26 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:31:13:31:19 | ControlFlowNode for request | command_injection.py:31:13:31:24 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:31:13:31:24 | ControlFlowNode for Attribute | command_injection.py:31:13:31:41 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:31:13:31:41 | ControlFlowNode for Attribute() | command_injection.py:31:5:31:9 | ControlFlowNode for files | provenance | | +| command_injection.py:38:5:38:11 | ControlFlowNode for command | command_injection.py:41:15:41:21 | ControlFlowNode for command | provenance | | +| command_injection.py:38:5:38:11 | ControlFlowNode for command | command_injection.py:42:15:42:21 | ControlFlowNode for command | provenance | | +| command_injection.py:38:15:38:21 | ControlFlowNode for request | command_injection.py:38:15:38:26 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:38:15:38:26 | ControlFlowNode for Attribute | command_injection.py:38:15:38:45 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:38:15:38:45 | ControlFlowNode for Attribute() | command_injection.py:38:5:38:11 | ControlFlowNode for command | provenance | | +| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:55:15:55:21 | ControlFlowNode for command | provenance | | +| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:56:14:56:20 | ControlFlowNode for command | provenance | | +| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:57:21:57:27 | ControlFlowNode for command | provenance | | +| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:58:27:58:33 | ControlFlowNode for command | provenance | | +| command_injection.py:54:5:54:11 | ControlFlowNode for command | command_injection.py:59:20:59:26 | ControlFlowNode for command | provenance | | +| command_injection.py:54:15:54:21 | ControlFlowNode for request | command_injection.py:54:15:54:26 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:54:15:54:26 | ControlFlowNode for Attribute | command_injection.py:54:15:54:45 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:54:15:54:45 | ControlFlowNode for Attribute() | command_injection.py:54:5:54:11 | ControlFlowNode for command | provenance | | +| command_injection.py:71:5:71:8 | ControlFlowNode for path | command_injection.py:73:19:73:30 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:71:12:71:18 | ControlFlowNode for request | command_injection.py:71:12:71:23 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:71:12:71:23 | ControlFlowNode for Attribute | command_injection.py:71:12:71:39 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:71:12:71:39 | ControlFlowNode for Attribute() | command_injection.py:71:5:71:8 | ControlFlowNode for path | provenance | | +| command_injection.py:78:5:78:8 | ControlFlowNode for path | command_injection.py:80:19:80:30 | ControlFlowNode for BinaryExpr | provenance | | +| command_injection.py:78:12:78:18 | ControlFlowNode for request | command_injection.py:78:12:78:23 | ControlFlowNode for Attribute | provenance | | +| command_injection.py:78:12:78:23 | ControlFlowNode for Attribute | command_injection.py:78:12:78:39 | ControlFlowNode for Attribute() | provenance | | +| command_injection.py:78:12:78:39 | ControlFlowNode for Attribute() | command_injection.py:78:5:78:8 | ControlFlowNode for path | provenance | | nodes | command_injection.py:5:26:5:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | command_injection.py:5:26:5:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-078-UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected b/python/ql/test/query-tests/Security/CWE-078-UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected index 88015c57ebfd..e53508f61a5a 100644 --- a/python/ql/test/query-tests/Security/CWE-078-UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected +++ b/python/ql/test/query-tests/Security/CWE-078-UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected @@ -1,15 +1,15 @@ edges -| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:5:25:5:28 | ControlFlowNode for name | -| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:8:23:8:26 | ControlFlowNode for name | -| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:11:25:11:38 | ControlFlowNode for Attribute() | -| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:14:25:14:40 | ControlFlowNode for Attribute() | -| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:17:32:17:35 | ControlFlowNode for name | -| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:20:27:20:30 | ControlFlowNode for name | -| src/unsafe_shell_test.py:26:20:26:23 | ControlFlowNode for name | src/unsafe_shell_test.py:29:30:29:33 | ControlFlowNode for name | -| src/unsafe_shell_test.py:36:22:36:25 | ControlFlowNode for name | src/unsafe_shell_test.py:39:30:39:33 | ControlFlowNode for name | -| src/unsafe_shell_test.py:36:22:36:25 | ControlFlowNode for name | src/unsafe_shell_test.py:44:20:44:23 | ControlFlowNode for name | -| src/unsafe_shell_test.py:41:24:41:24 | ControlFlowNode for x | src/unsafe_shell_test.py:42:34:42:34 | ControlFlowNode for x | -| src/unsafe_shell_test.py:44:20:44:23 | ControlFlowNode for name | src/unsafe_shell_test.py:41:24:41:24 | ControlFlowNode for x | +| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:5:25:5:28 | ControlFlowNode for name | provenance | | +| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:8:23:8:26 | ControlFlowNode for name | provenance | | +| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:11:25:11:38 | ControlFlowNode for Attribute() | provenance | | +| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:14:25:14:40 | ControlFlowNode for Attribute() | provenance | | +| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:17:32:17:35 | ControlFlowNode for name | provenance | | +| src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | src/unsafe_shell_test.py:20:27:20:30 | ControlFlowNode for name | provenance | | +| src/unsafe_shell_test.py:26:20:26:23 | ControlFlowNode for name | src/unsafe_shell_test.py:29:30:29:33 | ControlFlowNode for name | provenance | | +| src/unsafe_shell_test.py:36:22:36:25 | ControlFlowNode for name | src/unsafe_shell_test.py:39:30:39:33 | ControlFlowNode for name | provenance | | +| src/unsafe_shell_test.py:36:22:36:25 | ControlFlowNode for name | src/unsafe_shell_test.py:44:20:44:23 | ControlFlowNode for name | provenance | | +| src/unsafe_shell_test.py:41:24:41:24 | ControlFlowNode for x | src/unsafe_shell_test.py:42:34:42:34 | ControlFlowNode for x | provenance | | +| src/unsafe_shell_test.py:44:20:44:23 | ControlFlowNode for name | src/unsafe_shell_test.py:41:24:41:24 | ControlFlowNode for x | provenance | | nodes | src/unsafe_shell_test.py:4:22:4:25 | ControlFlowNode for name | semmle.label | ControlFlowNode for name | | src/unsafe_shell_test.py:5:25:5:28 | ControlFlowNode for name | semmle.label | ControlFlowNode for name | diff --git a/python/ql/test/query-tests/Security/CWE-079-ReflectedXss/ReflectedXss.expected b/python/ql/test/query-tests/Security/CWE-079-ReflectedXss/ReflectedXss.expected index a779dea257fe..26ac30701840 100644 --- a/python/ql/test/query-tests/Security/CWE-079-ReflectedXss/ReflectedXss.expected +++ b/python/ql/test/query-tests/Security/CWE-079-ReflectedXss/ReflectedXss.expected @@ -1,16 +1,16 @@ edges -| reflected_xss.py:2:26:2:32 | ControlFlowNode for ImportMember | reflected_xss.py:2:26:2:32 | ControlFlowNode for request | -| reflected_xss.py:2:26:2:32 | ControlFlowNode for request | reflected_xss.py:9:18:9:24 | ControlFlowNode for request | -| reflected_xss.py:2:26:2:32 | ControlFlowNode for request | reflected_xss.py:21:23:21:29 | ControlFlowNode for request | -| reflected_xss.py:2:26:2:32 | ControlFlowNode for request | reflected_xss.py:27:23:27:29 | ControlFlowNode for request | -| reflected_xss.py:9:5:9:14 | ControlFlowNode for first_name | reflected_xss.py:10:26:10:53 | ControlFlowNode for BinaryExpr | -| reflected_xss.py:9:18:9:24 | ControlFlowNode for request | reflected_xss.py:9:18:9:29 | ControlFlowNode for Attribute | -| reflected_xss.py:9:18:9:29 | ControlFlowNode for Attribute | reflected_xss.py:9:18:9:45 | ControlFlowNode for Attribute() | -| reflected_xss.py:9:18:9:45 | ControlFlowNode for Attribute() | reflected_xss.py:9:5:9:14 | ControlFlowNode for first_name | -| reflected_xss.py:21:5:21:8 | ControlFlowNode for data | reflected_xss.py:22:26:22:41 | ControlFlowNode for Attribute() | -| reflected_xss.py:21:23:21:29 | ControlFlowNode for request | reflected_xss.py:21:5:21:8 | ControlFlowNode for data | -| reflected_xss.py:27:5:27:8 | ControlFlowNode for data | reflected_xss.py:28:26:28:41 | ControlFlowNode for Attribute() | -| reflected_xss.py:27:23:27:29 | ControlFlowNode for request | reflected_xss.py:27:5:27:8 | ControlFlowNode for data | +| reflected_xss.py:2:26:2:32 | ControlFlowNode for ImportMember | reflected_xss.py:2:26:2:32 | ControlFlowNode for request | provenance | | +| reflected_xss.py:2:26:2:32 | ControlFlowNode for request | reflected_xss.py:9:18:9:24 | ControlFlowNode for request | provenance | | +| reflected_xss.py:2:26:2:32 | ControlFlowNode for request | reflected_xss.py:21:23:21:29 | ControlFlowNode for request | provenance | | +| reflected_xss.py:2:26:2:32 | ControlFlowNode for request | reflected_xss.py:27:23:27:29 | ControlFlowNode for request | provenance | | +| reflected_xss.py:9:5:9:14 | ControlFlowNode for first_name | reflected_xss.py:10:26:10:53 | ControlFlowNode for BinaryExpr | provenance | | +| reflected_xss.py:9:18:9:24 | ControlFlowNode for request | reflected_xss.py:9:18:9:29 | ControlFlowNode for Attribute | provenance | | +| reflected_xss.py:9:18:9:29 | ControlFlowNode for Attribute | reflected_xss.py:9:18:9:45 | ControlFlowNode for Attribute() | provenance | | +| reflected_xss.py:9:18:9:45 | ControlFlowNode for Attribute() | reflected_xss.py:9:5:9:14 | ControlFlowNode for first_name | provenance | | +| reflected_xss.py:21:5:21:8 | ControlFlowNode for data | reflected_xss.py:22:26:22:41 | ControlFlowNode for Attribute() | provenance | | +| reflected_xss.py:21:23:21:29 | ControlFlowNode for request | reflected_xss.py:21:5:21:8 | ControlFlowNode for data | provenance | | +| reflected_xss.py:27:5:27:8 | ControlFlowNode for data | reflected_xss.py:28:26:28:41 | ControlFlowNode for Attribute() | provenance | | +| reflected_xss.py:27:23:27:29 | ControlFlowNode for request | reflected_xss.py:27:5:27:8 | ControlFlowNode for data | provenance | | nodes | reflected_xss.py:2:26:2:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | reflected_xss.py:2:26:2:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-089-SqlInjection/SqlInjection.expected b/python/ql/test/query-tests/Security/CWE-089-SqlInjection/SqlInjection.expected index 46379fcbbc42..9ff8b1d718c1 100644 --- a/python/ql/test/query-tests/Security/CWE-089-SqlInjection/SqlInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-089-SqlInjection/SqlInjection.expected @@ -1,20 +1,20 @@ edges -| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | -| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | -| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | -| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:27:28:27:87 | ControlFlowNode for Attribute() | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:31:50:31:72 | ControlFlowNode for Attribute() | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:41:26:41:33 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:42:31:42:38 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:43:30:43:37 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:44:35:44:42 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:45:41:45:48 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:46:46:46:53 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:47:47:47:54 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:48:52:48:59 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:50:18:50:25 | ControlFlowNode for username | -| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:51:24:51:31 | ControlFlowNode for username | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | provenance | | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:24:38:24:95 | ControlFlowNode for BinaryExpr | provenance | | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:25:26:25:83 | ControlFlowNode for BinaryExpr | provenance | | +| sql_injection.py:14:15:14:22 | ControlFlowNode for username | sql_injection.py:26:28:26:85 | ControlFlowNode for BinaryExpr | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:27:28:27:87 | ControlFlowNode for Attribute() | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:31:50:31:72 | ControlFlowNode for Attribute() | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:41:26:41:33 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:42:31:42:38 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:43:30:43:37 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:44:35:44:42 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:45:41:45:48 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:46:46:46:53 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:47:47:47:54 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:48:52:48:59 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:50:18:50:25 | ControlFlowNode for username | provenance | | +| sqlalchemy_textclause.py:23:15:23:22 | ControlFlowNode for username | sqlalchemy_textclause.py:51:24:51:31 | ControlFlowNode for username | provenance | | nodes | sql_injection.py:14:15:14:22 | ControlFlowNode for username | semmle.label | ControlFlowNode for username | | sql_injection.py:21:24:21:77 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | diff --git a/python/ql/test/query-tests/Security/CWE-090-LdapInjection/LdapInjection.expected b/python/ql/test/query-tests/Security/CWE-090-LdapInjection/LdapInjection.expected index 3461b853756d..295e2e889554 100644 --- a/python/ql/test/query-tests/Security/CWE-090-LdapInjection/LdapInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-090-LdapInjection/LdapInjection.expected @@ -1,58 +1,58 @@ edges -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:14:21:14:27 | ControlFlowNode for request | -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | -| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:31:21:31:27 | ControlFlowNode for request | -| ldap3_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | ldap3_bad.py:16:5:16:6 | ControlFlowNode for dn | -| ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | ldap3_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | -| ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | ldap3_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | -| ldap3_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | ldap3_bad.py:17:5:17:17 | ControlFlowNode for search_filter | -| ldap3_bad.py:14:21:14:27 | ControlFlowNode for request | ldap3_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | -| ldap3_bad.py:16:5:16:6 | ControlFlowNode for dn | ldap3_bad.py:21:17:21:18 | ControlFlowNode for dn | -| ldap3_bad.py:17:5:17:17 | ControlFlowNode for search_filter | ldap3_bad.py:21:21:21:33 | ControlFlowNode for search_filter | -| ldap3_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | ldap3_bad.py:33:5:33:6 | ControlFlowNode for dn | -| ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | ldap3_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | -| ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | ldap3_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | -| ldap3_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | ldap3_bad.py:34:5:34:17 | ControlFlowNode for search_filter | -| ldap3_bad.py:31:21:31:27 | ControlFlowNode for request | ldap3_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | -| ldap3_bad.py:33:5:33:6 | ControlFlowNode for dn | ldap3_bad.py:38:9:38:10 | ControlFlowNode for dn | -| ldap3_bad.py:34:5:34:17 | ControlFlowNode for search_filter | ldap3_bad.py:38:13:38:25 | ControlFlowNode for search_filter | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap_bad.py:1:19:1:25 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap_bad.py:1:19:1:25 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:13:17:13:23 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:13:17:13:23 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:14:21:14:27 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:30:17:30:23 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:30:17:30:23 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:31:21:31:27 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:47:17:47:23 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:47:17:47:23 | ControlFlowNode for request | -| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:48:21:48:27 | ControlFlowNode for request | -| ldap_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | ldap_bad.py:16:5:16:6 | ControlFlowNode for dn | -| ldap_bad.py:13:17:13:23 | ControlFlowNode for request | ldap_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | -| ldap_bad.py:13:17:13:23 | ControlFlowNode for request | ldap_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | -| ldap_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | ldap_bad.py:17:5:17:17 | ControlFlowNode for search_filter | -| ldap_bad.py:14:21:14:27 | ControlFlowNode for request | ldap_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | -| ldap_bad.py:16:5:16:6 | ControlFlowNode for dn | ldap_bad.py:21:9:21:10 | ControlFlowNode for dn | -| ldap_bad.py:17:5:17:17 | ControlFlowNode for search_filter | ldap_bad.py:21:33:21:45 | ControlFlowNode for search_filter | -| ldap_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | ldap_bad.py:33:5:33:6 | ControlFlowNode for dn | -| ldap_bad.py:30:17:30:23 | ControlFlowNode for request | ldap_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | -| ldap_bad.py:30:17:30:23 | ControlFlowNode for request | ldap_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | -| ldap_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | ldap_bad.py:34:5:34:17 | ControlFlowNode for search_filter | -| ldap_bad.py:31:21:31:27 | ControlFlowNode for request | ldap_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | -| ldap_bad.py:33:5:33:6 | ControlFlowNode for dn | ldap_bad.py:37:9:37:10 | ControlFlowNode for dn | -| ldap_bad.py:34:5:34:17 | ControlFlowNode for search_filter | ldap_bad.py:37:33:37:45 | ControlFlowNode for search_filter | -| ldap_bad.py:47:5:47:13 | ControlFlowNode for unsafe_dc | ldap_bad.py:50:5:50:6 | ControlFlowNode for dn | -| ldap_bad.py:47:17:47:23 | ControlFlowNode for request | ldap_bad.py:47:5:47:13 | ControlFlowNode for unsafe_dc | -| ldap_bad.py:47:17:47:23 | ControlFlowNode for request | ldap_bad.py:48:5:48:17 | ControlFlowNode for unsafe_filter | -| ldap_bad.py:48:5:48:17 | ControlFlowNode for unsafe_filter | ldap_bad.py:51:5:51:17 | ControlFlowNode for search_filter | -| ldap_bad.py:48:21:48:27 | ControlFlowNode for request | ldap_bad.py:48:5:48:17 | ControlFlowNode for unsafe_filter | -| ldap_bad.py:50:5:50:6 | ControlFlowNode for dn | ldap_bad.py:55:9:55:10 | ControlFlowNode for dn | -| ldap_bad.py:51:5:51:17 | ControlFlowNode for search_filter | ldap_bad.py:55:43:55:55 | ControlFlowNode for search_filter | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:14:21:14:27 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:1:19:1:25 | ControlFlowNode for request | ldap3_bad.py:31:21:31:27 | ControlFlowNode for request | provenance | | +| ldap3_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | ldap3_bad.py:16:5:16:6 | ControlFlowNode for dn | provenance | | +| ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | ldap3_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | provenance | | +| ldap3_bad.py:13:17:13:23 | ControlFlowNode for request | ldap3_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap3_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | ldap3_bad.py:17:5:17:17 | ControlFlowNode for search_filter | provenance | | +| ldap3_bad.py:14:21:14:27 | ControlFlowNode for request | ldap3_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap3_bad.py:16:5:16:6 | ControlFlowNode for dn | ldap3_bad.py:21:17:21:18 | ControlFlowNode for dn | provenance | | +| ldap3_bad.py:17:5:17:17 | ControlFlowNode for search_filter | ldap3_bad.py:21:21:21:33 | ControlFlowNode for search_filter | provenance | | +| ldap3_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | ldap3_bad.py:33:5:33:6 | ControlFlowNode for dn | provenance | | +| ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | ldap3_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | provenance | | +| ldap3_bad.py:30:17:30:23 | ControlFlowNode for request | ldap3_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap3_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | ldap3_bad.py:34:5:34:17 | ControlFlowNode for search_filter | provenance | | +| ldap3_bad.py:31:21:31:27 | ControlFlowNode for request | ldap3_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap3_bad.py:33:5:33:6 | ControlFlowNode for dn | ldap3_bad.py:38:9:38:10 | ControlFlowNode for dn | provenance | | +| ldap3_bad.py:34:5:34:17 | ControlFlowNode for search_filter | ldap3_bad.py:38:13:38:25 | ControlFlowNode for search_filter | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap_bad.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | ldap_bad.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:13:17:13:23 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:13:17:13:23 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:14:21:14:27 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:30:17:30:23 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:30:17:30:23 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:31:21:31:27 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:47:17:47:23 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:47:17:47:23 | ControlFlowNode for request | provenance | | +| ldap_bad.py:1:19:1:25 | ControlFlowNode for request | ldap_bad.py:48:21:48:27 | ControlFlowNode for request | provenance | | +| ldap_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | ldap_bad.py:16:5:16:6 | ControlFlowNode for dn | provenance | | +| ldap_bad.py:13:17:13:23 | ControlFlowNode for request | ldap_bad.py:13:5:13:13 | ControlFlowNode for unsafe_dc | provenance | | +| ldap_bad.py:13:17:13:23 | ControlFlowNode for request | ldap_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | ldap_bad.py:17:5:17:17 | ControlFlowNode for search_filter | provenance | | +| ldap_bad.py:14:21:14:27 | ControlFlowNode for request | ldap_bad.py:14:5:14:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap_bad.py:16:5:16:6 | ControlFlowNode for dn | ldap_bad.py:21:9:21:10 | ControlFlowNode for dn | provenance | | +| ldap_bad.py:17:5:17:17 | ControlFlowNode for search_filter | ldap_bad.py:21:33:21:45 | ControlFlowNode for search_filter | provenance | | +| ldap_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | ldap_bad.py:33:5:33:6 | ControlFlowNode for dn | provenance | | +| ldap_bad.py:30:17:30:23 | ControlFlowNode for request | ldap_bad.py:30:5:30:13 | ControlFlowNode for unsafe_dc | provenance | | +| ldap_bad.py:30:17:30:23 | ControlFlowNode for request | ldap_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | ldap_bad.py:34:5:34:17 | ControlFlowNode for search_filter | provenance | | +| ldap_bad.py:31:21:31:27 | ControlFlowNode for request | ldap_bad.py:31:5:31:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap_bad.py:33:5:33:6 | ControlFlowNode for dn | ldap_bad.py:37:9:37:10 | ControlFlowNode for dn | provenance | | +| ldap_bad.py:34:5:34:17 | ControlFlowNode for search_filter | ldap_bad.py:37:33:37:45 | ControlFlowNode for search_filter | provenance | | +| ldap_bad.py:47:5:47:13 | ControlFlowNode for unsafe_dc | ldap_bad.py:50:5:50:6 | ControlFlowNode for dn | provenance | | +| ldap_bad.py:47:17:47:23 | ControlFlowNode for request | ldap_bad.py:47:5:47:13 | ControlFlowNode for unsafe_dc | provenance | | +| ldap_bad.py:47:17:47:23 | ControlFlowNode for request | ldap_bad.py:48:5:48:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap_bad.py:48:5:48:17 | ControlFlowNode for unsafe_filter | ldap_bad.py:51:5:51:17 | ControlFlowNode for search_filter | provenance | | +| ldap_bad.py:48:21:48:27 | ControlFlowNode for request | ldap_bad.py:48:5:48:17 | ControlFlowNode for unsafe_filter | provenance | | +| ldap_bad.py:50:5:50:6 | ControlFlowNode for dn | ldap_bad.py:55:9:55:10 | ControlFlowNode for dn | provenance | | +| ldap_bad.py:51:5:51:17 | ControlFlowNode for search_filter | ldap_bad.py:55:43:55:55 | ControlFlowNode for search_filter | provenance | | nodes | ldap3_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | ldap3_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | diff --git a/python/ql/test/query-tests/Security/CWE-094-CodeInjection/CodeInjection.expected b/python/ql/test/query-tests/Security/CWE-094-CodeInjection/CodeInjection.expected index 2de776c3b288..ff55d1689067 100644 --- a/python/ql/test/query-tests/Security/CWE-094-CodeInjection/CodeInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-094-CodeInjection/CodeInjection.expected @@ -1,18 +1,18 @@ edges -| code_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | code_injection.py:1:26:1:32 | ControlFlowNode for request | -| code_injection.py:1:26:1:32 | ControlFlowNode for request | code_injection.py:6:12:6:18 | ControlFlowNode for request | -| code_injection.py:1:26:1:32 | ControlFlowNode for request | code_injection.py:18:16:18:22 | ControlFlowNode for request | -| code_injection.py:6:5:6:8 | ControlFlowNode for code | code_injection.py:7:10:7:13 | ControlFlowNode for code | -| code_injection.py:6:5:6:8 | ControlFlowNode for code | code_injection.py:8:10:8:13 | ControlFlowNode for code | -| code_injection.py:6:5:6:8 | ControlFlowNode for code | code_injection.py:9:5:9:7 | ControlFlowNode for cmd | -| code_injection.py:6:12:6:18 | ControlFlowNode for request | code_injection.py:6:12:6:23 | ControlFlowNode for Attribute | -| code_injection.py:6:12:6:23 | ControlFlowNode for Attribute | code_injection.py:6:12:6:35 | ControlFlowNode for Attribute() | -| code_injection.py:6:12:6:35 | ControlFlowNode for Attribute() | code_injection.py:6:5:6:8 | ControlFlowNode for code | -| code_injection.py:9:5:9:7 | ControlFlowNode for cmd | code_injection.py:10:10:10:12 | ControlFlowNode for cmd | -| code_injection.py:18:5:18:12 | ControlFlowNode for obj_name | code_injection.py:21:20:21:27 | ControlFlowNode for obj_name | -| code_injection.py:18:16:18:22 | ControlFlowNode for request | code_injection.py:18:16:18:27 | ControlFlowNode for Attribute | -| code_injection.py:18:16:18:27 | ControlFlowNode for Attribute | code_injection.py:18:16:18:38 | ControlFlowNode for Attribute() | -| code_injection.py:18:16:18:38 | ControlFlowNode for Attribute() | code_injection.py:18:5:18:12 | ControlFlowNode for obj_name | +| code_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | code_injection.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| code_injection.py:1:26:1:32 | ControlFlowNode for request | code_injection.py:6:12:6:18 | ControlFlowNode for request | provenance | | +| code_injection.py:1:26:1:32 | ControlFlowNode for request | code_injection.py:18:16:18:22 | ControlFlowNode for request | provenance | | +| code_injection.py:6:5:6:8 | ControlFlowNode for code | code_injection.py:7:10:7:13 | ControlFlowNode for code | provenance | | +| code_injection.py:6:5:6:8 | ControlFlowNode for code | code_injection.py:8:10:8:13 | ControlFlowNode for code | provenance | | +| code_injection.py:6:5:6:8 | ControlFlowNode for code | code_injection.py:9:5:9:7 | ControlFlowNode for cmd | provenance | | +| code_injection.py:6:12:6:18 | ControlFlowNode for request | code_injection.py:6:12:6:23 | ControlFlowNode for Attribute | provenance | | +| code_injection.py:6:12:6:23 | ControlFlowNode for Attribute | code_injection.py:6:12:6:35 | ControlFlowNode for Attribute() | provenance | | +| code_injection.py:6:12:6:35 | ControlFlowNode for Attribute() | code_injection.py:6:5:6:8 | ControlFlowNode for code | provenance | | +| code_injection.py:9:5:9:7 | ControlFlowNode for cmd | code_injection.py:10:10:10:12 | ControlFlowNode for cmd | provenance | | +| code_injection.py:18:5:18:12 | ControlFlowNode for obj_name | code_injection.py:21:20:21:27 | ControlFlowNode for obj_name | provenance | | +| code_injection.py:18:16:18:22 | ControlFlowNode for request | code_injection.py:18:16:18:27 | ControlFlowNode for Attribute | provenance | | +| code_injection.py:18:16:18:27 | ControlFlowNode for Attribute | code_injection.py:18:16:18:38 | ControlFlowNode for Attribute() | provenance | | +| code_injection.py:18:16:18:38 | ControlFlowNode for Attribute() | code_injection.py:18:5:18:12 | ControlFlowNode for obj_name | provenance | | nodes | code_injection.py:1:26:1:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | code_injection.py:1:26:1:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-117-LogInjection/LogInjection.expected b/python/ql/test/query-tests/Security/CWE-117-LogInjection/LogInjection.expected index 1d8c78d35b7e..d0e05dd24212 100644 --- a/python/ql/test/query-tests/Security/CWE-117-LogInjection/LogInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-117-LogInjection/LogInjection.expected @@ -1,25 +1,25 @@ edges -| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for ImportMember | LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | -| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:17:12:17:18 | ControlFlowNode for request | -| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:23:12:23:18 | ControlFlowNode for request | -| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:29:12:29:18 | ControlFlowNode for request | -| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:35:12:35:18 | ControlFlowNode for request | -| LogInjectionBad.py:17:5:17:8 | ControlFlowNode for name | LogInjectionBad.py:18:21:18:40 | ControlFlowNode for BinaryExpr | -| LogInjectionBad.py:17:12:17:18 | ControlFlowNode for request | LogInjectionBad.py:17:12:17:23 | ControlFlowNode for Attribute | -| LogInjectionBad.py:17:12:17:23 | ControlFlowNode for Attribute | LogInjectionBad.py:17:12:17:35 | ControlFlowNode for Attribute() | -| LogInjectionBad.py:17:12:17:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:17:5:17:8 | ControlFlowNode for name | -| LogInjectionBad.py:23:5:23:8 | ControlFlowNode for name | LogInjectionBad.py:24:18:24:37 | ControlFlowNode for BinaryExpr | -| LogInjectionBad.py:23:12:23:18 | ControlFlowNode for request | LogInjectionBad.py:23:12:23:23 | ControlFlowNode for Attribute | -| LogInjectionBad.py:23:12:23:23 | ControlFlowNode for Attribute | LogInjectionBad.py:23:12:23:35 | ControlFlowNode for Attribute() | -| LogInjectionBad.py:23:12:23:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:23:5:23:8 | ControlFlowNode for name | -| LogInjectionBad.py:29:5:29:8 | ControlFlowNode for name | LogInjectionBad.py:30:25:30:44 | ControlFlowNode for BinaryExpr | -| LogInjectionBad.py:29:12:29:18 | ControlFlowNode for request | LogInjectionBad.py:29:12:29:23 | ControlFlowNode for Attribute | -| LogInjectionBad.py:29:12:29:23 | ControlFlowNode for Attribute | LogInjectionBad.py:29:12:29:35 | ControlFlowNode for Attribute() | -| LogInjectionBad.py:29:12:29:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:29:5:29:8 | ControlFlowNode for name | -| LogInjectionBad.py:35:5:35:8 | ControlFlowNode for name | LogInjectionBad.py:37:19:37:38 | ControlFlowNode for BinaryExpr | -| LogInjectionBad.py:35:12:35:18 | ControlFlowNode for request | LogInjectionBad.py:35:12:35:23 | ControlFlowNode for Attribute | -| LogInjectionBad.py:35:12:35:23 | ControlFlowNode for Attribute | LogInjectionBad.py:35:12:35:35 | ControlFlowNode for Attribute() | -| LogInjectionBad.py:35:12:35:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:35:5:35:8 | ControlFlowNode for name | +| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for ImportMember | LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | provenance | | +| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:17:12:17:18 | ControlFlowNode for request | provenance | | +| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:23:12:23:18 | ControlFlowNode for request | provenance | | +| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:29:12:29:18 | ControlFlowNode for request | provenance | | +| LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | LogInjectionBad.py:35:12:35:18 | ControlFlowNode for request | provenance | | +| LogInjectionBad.py:17:5:17:8 | ControlFlowNode for name | LogInjectionBad.py:18:21:18:40 | ControlFlowNode for BinaryExpr | provenance | | +| LogInjectionBad.py:17:12:17:18 | ControlFlowNode for request | LogInjectionBad.py:17:12:17:23 | ControlFlowNode for Attribute | provenance | | +| LogInjectionBad.py:17:12:17:23 | ControlFlowNode for Attribute | LogInjectionBad.py:17:12:17:35 | ControlFlowNode for Attribute() | provenance | | +| LogInjectionBad.py:17:12:17:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:17:5:17:8 | ControlFlowNode for name | provenance | | +| LogInjectionBad.py:23:5:23:8 | ControlFlowNode for name | LogInjectionBad.py:24:18:24:37 | ControlFlowNode for BinaryExpr | provenance | | +| LogInjectionBad.py:23:12:23:18 | ControlFlowNode for request | LogInjectionBad.py:23:12:23:23 | ControlFlowNode for Attribute | provenance | | +| LogInjectionBad.py:23:12:23:23 | ControlFlowNode for Attribute | LogInjectionBad.py:23:12:23:35 | ControlFlowNode for Attribute() | provenance | | +| LogInjectionBad.py:23:12:23:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:23:5:23:8 | ControlFlowNode for name | provenance | | +| LogInjectionBad.py:29:5:29:8 | ControlFlowNode for name | LogInjectionBad.py:30:25:30:44 | ControlFlowNode for BinaryExpr | provenance | | +| LogInjectionBad.py:29:12:29:18 | ControlFlowNode for request | LogInjectionBad.py:29:12:29:23 | ControlFlowNode for Attribute | provenance | | +| LogInjectionBad.py:29:12:29:23 | ControlFlowNode for Attribute | LogInjectionBad.py:29:12:29:35 | ControlFlowNode for Attribute() | provenance | | +| LogInjectionBad.py:29:12:29:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:29:5:29:8 | ControlFlowNode for name | provenance | | +| LogInjectionBad.py:35:5:35:8 | ControlFlowNode for name | LogInjectionBad.py:37:19:37:38 | ControlFlowNode for BinaryExpr | provenance | | +| LogInjectionBad.py:35:12:35:18 | ControlFlowNode for request | LogInjectionBad.py:35:12:35:23 | ControlFlowNode for Attribute | provenance | | +| LogInjectionBad.py:35:12:35:23 | ControlFlowNode for Attribute | LogInjectionBad.py:35:12:35:35 | ControlFlowNode for Attribute() | provenance | | +| LogInjectionBad.py:35:12:35:35 | ControlFlowNode for Attribute() | LogInjectionBad.py:35:5:35:8 | ControlFlowNode for name | provenance | | nodes | LogInjectionBad.py:7:19:7:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | LogInjectionBad.py:7:19:7:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-209-StackTraceExposure/StackTraceExposure.expected b/python/ql/test/query-tests/Security/CWE-209-StackTraceExposure/StackTraceExposure.expected index 20857567c492..b1023db5e62e 100644 --- a/python/ql/test/query-tests/Security/CWE-209-StackTraceExposure/StackTraceExposure.expected +++ b/python/ql/test/query-tests/Security/CWE-209-StackTraceExposure/StackTraceExposure.expected @@ -1,13 +1,13 @@ edges -| test.py:23:25:23:25 | ControlFlowNode for e | test.py:24:16:24:16 | ControlFlowNode for e | -| test.py:31:25:31:25 | ControlFlowNode for e | test.py:32:16:32:16 | ControlFlowNode for e | -| test.py:32:16:32:16 | ControlFlowNode for e | test.py:32:16:32:30 | ControlFlowNode for Attribute | -| test.py:49:9:49:11 | ControlFlowNode for err | test.py:50:29:50:31 | ControlFlowNode for err | -| test.py:49:15:49:36 | ControlFlowNode for Attribute() | test.py:49:9:49:11 | ControlFlowNode for err | -| test.py:50:29:50:31 | ControlFlowNode for err | test.py:50:16:50:32 | ControlFlowNode for format_error() | -| test.py:50:29:50:31 | ControlFlowNode for err | test.py:52:18:52:20 | ControlFlowNode for msg | -| test.py:52:18:52:20 | ControlFlowNode for msg | test.py:53:12:53:27 | ControlFlowNode for BinaryExpr | -| test.py:65:25:65:25 | ControlFlowNode for e | test.py:66:24:66:40 | ControlFlowNode for Dict | +| test.py:23:25:23:25 | ControlFlowNode for e | test.py:24:16:24:16 | ControlFlowNode for e | provenance | | +| test.py:31:25:31:25 | ControlFlowNode for e | test.py:32:16:32:16 | ControlFlowNode for e | provenance | | +| test.py:32:16:32:16 | ControlFlowNode for e | test.py:32:16:32:30 | ControlFlowNode for Attribute | provenance | | +| test.py:49:9:49:11 | ControlFlowNode for err | test.py:50:29:50:31 | ControlFlowNode for err | provenance | | +| test.py:49:15:49:36 | ControlFlowNode for Attribute() | test.py:49:9:49:11 | ControlFlowNode for err | provenance | | +| test.py:50:29:50:31 | ControlFlowNode for err | test.py:50:16:50:32 | ControlFlowNode for format_error() | provenance | | +| test.py:50:29:50:31 | ControlFlowNode for err | test.py:52:18:52:20 | ControlFlowNode for msg | provenance | | +| test.py:52:18:52:20 | ControlFlowNode for msg | test.py:53:12:53:27 | ControlFlowNode for BinaryExpr | provenance | | +| test.py:65:25:65:25 | ControlFlowNode for e | test.py:66:24:66:40 | ControlFlowNode for Dict | provenance | | nodes | test.py:16:16:16:37 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | test.py:23:25:23:25 | ControlFlowNode for e | semmle.label | ControlFlowNode for e | diff --git a/python/ql/test/query-tests/Security/CWE-285-PamAuthorization/PamAuthorization.expected b/python/ql/test/query-tests/Security/CWE-285-PamAuthorization/PamAuthorization.expected index 8f69b8c32e36..132383876f6e 100644 --- a/python/ql/test/query-tests/Security/CWE-285-PamAuthorization/PamAuthorization.expected +++ b/python/ql/test/query-tests/Security/CWE-285-PamAuthorization/PamAuthorization.expected @@ -1,13 +1,13 @@ edges -| pam_test.py:4:26:4:32 | ControlFlowNode for ImportMember | pam_test.py:4:26:4:32 | ControlFlowNode for request | -| pam_test.py:4:26:4:32 | ControlFlowNode for request | pam_test.py:71:16:71:22 | ControlFlowNode for request | -| pam_test.py:71:5:71:12 | ControlFlowNode for username | pam_test.py:74:33:74:40 | ControlFlowNode for username | -| pam_test.py:71:16:71:22 | ControlFlowNode for request | pam_test.py:71:16:71:27 | ControlFlowNode for Attribute | -| pam_test.py:71:16:71:27 | ControlFlowNode for Attribute | pam_test.py:71:16:71:47 | ControlFlowNode for Attribute() | -| pam_test.py:71:16:71:47 | ControlFlowNode for Attribute() | pam_test.py:71:5:71:12 | ControlFlowNode for username | -| pam_test.py:74:33:74:40 | ControlFlowNode for username | pam_test.py:74:62:74:67 | ControlFlowNode for handle | -| pam_test.py:74:62:74:67 | ControlFlowNode for handle | pam_test.py:76:31:76:36 | ControlFlowNode for handle | -| pam_test.py:76:31:76:36 | ControlFlowNode for handle | pam_test.py:76:14:76:40 | ControlFlowNode for pam_authenticate() | +| pam_test.py:4:26:4:32 | ControlFlowNode for ImportMember | pam_test.py:4:26:4:32 | ControlFlowNode for request | provenance | | +| pam_test.py:4:26:4:32 | ControlFlowNode for request | pam_test.py:71:16:71:22 | ControlFlowNode for request | provenance | | +| pam_test.py:71:5:71:12 | ControlFlowNode for username | pam_test.py:74:33:74:40 | ControlFlowNode for username | provenance | | +| pam_test.py:71:16:71:22 | ControlFlowNode for request | pam_test.py:71:16:71:27 | ControlFlowNode for Attribute | provenance | | +| pam_test.py:71:16:71:27 | ControlFlowNode for Attribute | pam_test.py:71:16:71:47 | ControlFlowNode for Attribute() | provenance | | +| pam_test.py:71:16:71:47 | ControlFlowNode for Attribute() | pam_test.py:71:5:71:12 | ControlFlowNode for username | provenance | | +| pam_test.py:74:33:74:40 | ControlFlowNode for username | pam_test.py:74:62:74:67 | ControlFlowNode for handle | provenance | | +| pam_test.py:74:62:74:67 | ControlFlowNode for handle | pam_test.py:76:31:76:36 | ControlFlowNode for handle | provenance | | +| pam_test.py:76:31:76:36 | ControlFlowNode for handle | pam_test.py:76:14:76:40 | ControlFlowNode for pam_authenticate() | provenance | | nodes | pam_test.py:4:26:4:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | pam_test.py:4:26:4:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected b/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected index f579afece001..f4b5ef932048 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextLogging/CleartextLogging.expected @@ -1,14 +1,14 @@ edges -| test.py:19:5:19:12 | ControlFlowNode for password | test.py:20:48:20:55 | ControlFlowNode for password | -| test.py:19:5:19:12 | ControlFlowNode for password | test.py:22:58:22:65 | ControlFlowNode for password | -| test.py:19:5:19:12 | ControlFlowNode for password | test.py:23:58:23:65 | ControlFlowNode for password | -| test.py:19:5:19:12 | ControlFlowNode for password | test.py:27:40:27:47 | ControlFlowNode for password | -| test.py:19:5:19:12 | ControlFlowNode for password | test.py:30:58:30:65 | ControlFlowNode for password | -| test.py:19:16:19:29 | ControlFlowNode for get_password() | test.py:19:5:19:12 | ControlFlowNode for password | -| test.py:44:5:44:5 | ControlFlowNode for x | test.py:45:11:45:11 | ControlFlowNode for x | -| test.py:44:9:44:25 | ControlFlowNode for Attribute() | test.py:44:5:44:5 | ControlFlowNode for x | -| test.py:70:5:70:10 | ControlFlowNode for config | test.py:74:11:74:31 | ControlFlowNode for Subscript | -| test.py:72:21:72:37 | ControlFlowNode for Attribute | test.py:70:5:70:10 | ControlFlowNode for config | +| test.py:19:5:19:12 | ControlFlowNode for password | test.py:20:48:20:55 | ControlFlowNode for password | provenance | | +| test.py:19:5:19:12 | ControlFlowNode for password | test.py:22:58:22:65 | ControlFlowNode for password | provenance | | +| test.py:19:5:19:12 | ControlFlowNode for password | test.py:23:58:23:65 | ControlFlowNode for password | provenance | | +| test.py:19:5:19:12 | ControlFlowNode for password | test.py:27:40:27:47 | ControlFlowNode for password | provenance | | +| test.py:19:5:19:12 | ControlFlowNode for password | test.py:30:58:30:65 | ControlFlowNode for password | provenance | | +| test.py:19:16:19:29 | ControlFlowNode for get_password() | test.py:19:5:19:12 | ControlFlowNode for password | provenance | | +| test.py:44:5:44:5 | ControlFlowNode for x | test.py:45:11:45:11 | ControlFlowNode for x | provenance | | +| test.py:44:9:44:25 | ControlFlowNode for Attribute() | test.py:44:5:44:5 | ControlFlowNode for x | provenance | | +| test.py:70:5:70:10 | ControlFlowNode for config | test.py:74:11:74:31 | ControlFlowNode for Subscript | provenance | | +| test.py:72:21:72:37 | ControlFlowNode for Attribute | test.py:70:5:70:10 | ControlFlowNode for config | provenance | | nodes | test.py:19:5:19:12 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | | test.py:19:16:19:29 | ControlFlowNode for get_password() | semmle.label | ControlFlowNode for get_password() | diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected index 03ff729bf7d6..6b252ea78330 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage-py3/CleartextStorage.expected @@ -1,8 +1,8 @@ edges -| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:12:21:12:24 | ControlFlowNode for cert | -| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:13:22:13:41 | ControlFlowNode for Attribute() | -| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:15:26:15:29 | ControlFlowNode for cert | -| test.py:9:12:9:21 | ControlFlowNode for get_cert() | test.py:9:5:9:8 | ControlFlowNode for cert | +| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:12:21:12:24 | ControlFlowNode for cert | provenance | | +| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:13:22:13:41 | ControlFlowNode for Attribute() | provenance | | +| test.py:9:5:9:8 | ControlFlowNode for cert | test.py:15:26:15:29 | ControlFlowNode for cert | provenance | | +| test.py:9:12:9:21 | ControlFlowNode for get_cert() | test.py:9:5:9:8 | ControlFlowNode for cert | provenance | | nodes | test.py:9:5:9:8 | ControlFlowNode for cert | semmle.label | ControlFlowNode for cert | | test.py:9:12:9:21 | ControlFlowNode for get_cert() | semmle.label | ControlFlowNode for get_cert() | diff --git a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected index 0afd9a578b04..eac0bd37b1bf 100644 --- a/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected +++ b/python/ql/test/query-tests/Security/CWE-312-CleartextStorage/CleartextStorage.expected @@ -1,12 +1,12 @@ edges -| password_in_cookie.py:7:5:7:12 | ControlFlowNode for password | password_in_cookie.py:9:33:9:40 | ControlFlowNode for password | -| password_in_cookie.py:7:16:7:43 | ControlFlowNode for Attribute() | password_in_cookie.py:7:5:7:12 | ControlFlowNode for password | -| password_in_cookie.py:14:5:14:12 | ControlFlowNode for password | password_in_cookie.py:16:33:16:40 | ControlFlowNode for password | -| password_in_cookie.py:14:16:14:43 | ControlFlowNode for Attribute() | password_in_cookie.py:14:5:14:12 | ControlFlowNode for password | -| test.py:6:5:6:8 | ControlFlowNode for cert | test.py:8:20:8:23 | ControlFlowNode for cert | -| test.py:6:5:6:8 | ControlFlowNode for cert | test.py:9:9:9:13 | ControlFlowNode for lines | -| test.py:6:12:6:21 | ControlFlowNode for get_cert() | test.py:6:5:6:8 | ControlFlowNode for cert | -| test.py:9:9:9:13 | ControlFlowNode for lines | test.py:10:25:10:29 | ControlFlowNode for lines | +| password_in_cookie.py:7:5:7:12 | ControlFlowNode for password | password_in_cookie.py:9:33:9:40 | ControlFlowNode for password | provenance | | +| password_in_cookie.py:7:16:7:43 | ControlFlowNode for Attribute() | password_in_cookie.py:7:5:7:12 | ControlFlowNode for password | provenance | | +| password_in_cookie.py:14:5:14:12 | ControlFlowNode for password | password_in_cookie.py:16:33:16:40 | ControlFlowNode for password | provenance | | +| password_in_cookie.py:14:16:14:43 | ControlFlowNode for Attribute() | password_in_cookie.py:14:5:14:12 | ControlFlowNode for password | provenance | | +| test.py:6:5:6:8 | ControlFlowNode for cert | test.py:8:20:8:23 | ControlFlowNode for cert | provenance | | +| test.py:6:5:6:8 | ControlFlowNode for cert | test.py:9:9:9:13 | ControlFlowNode for lines | provenance | | +| test.py:6:12:6:21 | ControlFlowNode for get_cert() | test.py:6:5:6:8 | ControlFlowNode for cert | provenance | | +| test.py:9:9:9:13 | ControlFlowNode for lines | test.py:10:25:10:29 | ControlFlowNode for lines | provenance | | nodes | password_in_cookie.py:7:5:7:12 | ControlFlowNode for password | semmle.label | ControlFlowNode for password | | password_in_cookie.py:7:16:7:43 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | diff --git a/python/ql/test/query-tests/Security/CWE-327-WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected b/python/ql/test/query-tests/Security/CWE-327-WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected index dd3a65bc8fab..ac27f304de82 100644 --- a/python/ql/test/query-tests/Security/CWE-327-WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected +++ b/python/ql/test/query-tests/Security/CWE-327-WeakSensitiveDataHashing/WeakSensitiveDataHashing.expected @@ -1,32 +1,32 @@ edges -| test_cryptodome.py:2:23:2:34 | ControlFlowNode for ImportMember | test_cryptodome.py:2:23:2:34 | ControlFlowNode for get_password | -| test_cryptodome.py:2:23:2:34 | ControlFlowNode for get_password | test_cryptodome.py:13:17:13:28 | ControlFlowNode for get_password | -| test_cryptodome.py:2:23:2:34 | ControlFlowNode for get_password | test_cryptodome.py:20:17:20:28 | ControlFlowNode for get_password | -| test_cryptodome.py:2:37:2:51 | ControlFlowNode for ImportMember | test_cryptodome.py:2:37:2:51 | ControlFlowNode for get_certificate | -| test_cryptodome.py:2:37:2:51 | ControlFlowNode for get_certificate | test_cryptodome.py:6:17:6:31 | ControlFlowNode for get_certificate | -| test_cryptodome.py:6:5:6:13 | ControlFlowNode for dangerous | test_cryptodome.py:8:19:8:27 | ControlFlowNode for dangerous | -| test_cryptodome.py:6:17:6:31 | ControlFlowNode for get_certificate | test_cryptodome.py:6:17:6:33 | ControlFlowNode for get_certificate() | -| test_cryptodome.py:6:17:6:33 | ControlFlowNode for get_certificate() | test_cryptodome.py:6:5:6:13 | ControlFlowNode for dangerous | -| test_cryptodome.py:13:5:13:13 | ControlFlowNode for dangerous | test_cryptodome.py:15:19:15:27 | ControlFlowNode for dangerous | -| test_cryptodome.py:13:17:13:28 | ControlFlowNode for get_password | test_cryptodome.py:13:17:13:30 | ControlFlowNode for get_password() | -| test_cryptodome.py:13:17:13:30 | ControlFlowNode for get_password() | test_cryptodome.py:13:5:13:13 | ControlFlowNode for dangerous | -| test_cryptodome.py:20:5:20:13 | ControlFlowNode for dangerous | test_cryptodome.py:24:19:24:27 | ControlFlowNode for dangerous | -| test_cryptodome.py:20:17:20:28 | ControlFlowNode for get_password | test_cryptodome.py:20:17:20:30 | ControlFlowNode for get_password() | -| test_cryptodome.py:20:17:20:30 | ControlFlowNode for get_password() | test_cryptodome.py:20:5:20:13 | ControlFlowNode for dangerous | -| test_cryptography.py:3:23:3:34 | ControlFlowNode for ImportMember | test_cryptography.py:3:23:3:34 | ControlFlowNode for get_password | -| test_cryptography.py:3:23:3:34 | ControlFlowNode for get_password | test_cryptography.py:15:17:15:28 | ControlFlowNode for get_password | -| test_cryptography.py:3:23:3:34 | ControlFlowNode for get_password | test_cryptography.py:23:17:23:28 | ControlFlowNode for get_password | -| test_cryptography.py:3:37:3:51 | ControlFlowNode for ImportMember | test_cryptography.py:3:37:3:51 | ControlFlowNode for get_certificate | -| test_cryptography.py:3:37:3:51 | ControlFlowNode for get_certificate | test_cryptography.py:7:17:7:31 | ControlFlowNode for get_certificate | -| test_cryptography.py:7:5:7:13 | ControlFlowNode for dangerous | test_cryptography.py:9:19:9:27 | ControlFlowNode for dangerous | -| test_cryptography.py:7:17:7:31 | ControlFlowNode for get_certificate | test_cryptography.py:7:17:7:33 | ControlFlowNode for get_certificate() | -| test_cryptography.py:7:17:7:33 | ControlFlowNode for get_certificate() | test_cryptography.py:7:5:7:13 | ControlFlowNode for dangerous | -| test_cryptography.py:15:5:15:13 | ControlFlowNode for dangerous | test_cryptography.py:17:19:17:27 | ControlFlowNode for dangerous | -| test_cryptography.py:15:17:15:28 | ControlFlowNode for get_password | test_cryptography.py:15:17:15:30 | ControlFlowNode for get_password() | -| test_cryptography.py:15:17:15:30 | ControlFlowNode for get_password() | test_cryptography.py:15:5:15:13 | ControlFlowNode for dangerous | -| test_cryptography.py:23:5:23:13 | ControlFlowNode for dangerous | test_cryptography.py:27:19:27:27 | ControlFlowNode for dangerous | -| test_cryptography.py:23:17:23:28 | ControlFlowNode for get_password | test_cryptography.py:23:17:23:30 | ControlFlowNode for get_password() | -| test_cryptography.py:23:17:23:30 | ControlFlowNode for get_password() | test_cryptography.py:23:5:23:13 | ControlFlowNode for dangerous | +| test_cryptodome.py:2:23:2:34 | ControlFlowNode for ImportMember | test_cryptodome.py:2:23:2:34 | ControlFlowNode for get_password | provenance | | +| test_cryptodome.py:2:23:2:34 | ControlFlowNode for get_password | test_cryptodome.py:13:17:13:28 | ControlFlowNode for get_password | provenance | | +| test_cryptodome.py:2:23:2:34 | ControlFlowNode for get_password | test_cryptodome.py:20:17:20:28 | ControlFlowNode for get_password | provenance | | +| test_cryptodome.py:2:37:2:51 | ControlFlowNode for ImportMember | test_cryptodome.py:2:37:2:51 | ControlFlowNode for get_certificate | provenance | | +| test_cryptodome.py:2:37:2:51 | ControlFlowNode for get_certificate | test_cryptodome.py:6:17:6:31 | ControlFlowNode for get_certificate | provenance | | +| test_cryptodome.py:6:5:6:13 | ControlFlowNode for dangerous | test_cryptodome.py:8:19:8:27 | ControlFlowNode for dangerous | provenance | | +| test_cryptodome.py:6:17:6:31 | ControlFlowNode for get_certificate | test_cryptodome.py:6:17:6:33 | ControlFlowNode for get_certificate() | provenance | | +| test_cryptodome.py:6:17:6:33 | ControlFlowNode for get_certificate() | test_cryptodome.py:6:5:6:13 | ControlFlowNode for dangerous | provenance | | +| test_cryptodome.py:13:5:13:13 | ControlFlowNode for dangerous | test_cryptodome.py:15:19:15:27 | ControlFlowNode for dangerous | provenance | | +| test_cryptodome.py:13:17:13:28 | ControlFlowNode for get_password | test_cryptodome.py:13:17:13:30 | ControlFlowNode for get_password() | provenance | | +| test_cryptodome.py:13:17:13:30 | ControlFlowNode for get_password() | test_cryptodome.py:13:5:13:13 | ControlFlowNode for dangerous | provenance | | +| test_cryptodome.py:20:5:20:13 | ControlFlowNode for dangerous | test_cryptodome.py:24:19:24:27 | ControlFlowNode for dangerous | provenance | | +| test_cryptodome.py:20:17:20:28 | ControlFlowNode for get_password | test_cryptodome.py:20:17:20:30 | ControlFlowNode for get_password() | provenance | | +| test_cryptodome.py:20:17:20:30 | ControlFlowNode for get_password() | test_cryptodome.py:20:5:20:13 | ControlFlowNode for dangerous | provenance | | +| test_cryptography.py:3:23:3:34 | ControlFlowNode for ImportMember | test_cryptography.py:3:23:3:34 | ControlFlowNode for get_password | provenance | | +| test_cryptography.py:3:23:3:34 | ControlFlowNode for get_password | test_cryptography.py:15:17:15:28 | ControlFlowNode for get_password | provenance | | +| test_cryptography.py:3:23:3:34 | ControlFlowNode for get_password | test_cryptography.py:23:17:23:28 | ControlFlowNode for get_password | provenance | | +| test_cryptography.py:3:37:3:51 | ControlFlowNode for ImportMember | test_cryptography.py:3:37:3:51 | ControlFlowNode for get_certificate | provenance | | +| test_cryptography.py:3:37:3:51 | ControlFlowNode for get_certificate | test_cryptography.py:7:17:7:31 | ControlFlowNode for get_certificate | provenance | | +| test_cryptography.py:7:5:7:13 | ControlFlowNode for dangerous | test_cryptography.py:9:19:9:27 | ControlFlowNode for dangerous | provenance | | +| test_cryptography.py:7:17:7:31 | ControlFlowNode for get_certificate | test_cryptography.py:7:17:7:33 | ControlFlowNode for get_certificate() | provenance | | +| test_cryptography.py:7:17:7:33 | ControlFlowNode for get_certificate() | test_cryptography.py:7:5:7:13 | ControlFlowNode for dangerous | provenance | | +| test_cryptography.py:15:5:15:13 | ControlFlowNode for dangerous | test_cryptography.py:17:19:17:27 | ControlFlowNode for dangerous | provenance | | +| test_cryptography.py:15:17:15:28 | ControlFlowNode for get_password | test_cryptography.py:15:17:15:30 | ControlFlowNode for get_password() | provenance | | +| test_cryptography.py:15:17:15:30 | ControlFlowNode for get_password() | test_cryptography.py:15:5:15:13 | ControlFlowNode for dangerous | provenance | | +| test_cryptography.py:23:5:23:13 | ControlFlowNode for dangerous | test_cryptography.py:27:19:27:27 | ControlFlowNode for dangerous | provenance | | +| test_cryptography.py:23:17:23:28 | ControlFlowNode for get_password | test_cryptography.py:23:17:23:30 | ControlFlowNode for get_password() | provenance | | +| test_cryptography.py:23:17:23:30 | ControlFlowNode for get_password() | test_cryptography.py:23:5:23:13 | ControlFlowNode for dangerous | provenance | | nodes | test_cryptodome.py:2:23:2:34 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test_cryptodome.py:2:23:2:34 | ControlFlowNode for get_password | semmle.label | ControlFlowNode for get_password | diff --git a/python/ql/test/query-tests/Security/CWE-502-UnsafeDeserialization/UnsafeDeserialization.expected b/python/ql/test/query-tests/Security/CWE-502-UnsafeDeserialization/UnsafeDeserialization.expected index 2980b6fbb1bf..44fb2a8e9619 100644 --- a/python/ql/test/query-tests/Security/CWE-502-UnsafeDeserialization/UnsafeDeserialization.expected +++ b/python/ql/test/query-tests/Security/CWE-502-UnsafeDeserialization/UnsafeDeserialization.expected @@ -1,14 +1,14 @@ edges -| unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for ImportMember | unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for request | -| unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for request | unsafe_deserialization.py:14:15:14:21 | ControlFlowNode for request | -| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:15:18:15:24 | ControlFlowNode for payload | -| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:16:15:16:21 | ControlFlowNode for payload | -| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:18:19:18:25 | ControlFlowNode for payload | -| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:21:16:21:22 | ControlFlowNode for payload | -| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:24:24:24:30 | ControlFlowNode for payload | -| unsafe_deserialization.py:14:15:14:21 | ControlFlowNode for request | unsafe_deserialization.py:14:15:14:26 | ControlFlowNode for Attribute | -| unsafe_deserialization.py:14:15:14:26 | ControlFlowNode for Attribute | unsafe_deserialization.py:14:15:14:41 | ControlFlowNode for Attribute() | -| unsafe_deserialization.py:14:15:14:41 | ControlFlowNode for Attribute() | unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | +| unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for ImportMember | unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for request | provenance | | +| unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for request | unsafe_deserialization.py:14:15:14:21 | ControlFlowNode for request | provenance | | +| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:15:18:15:24 | ControlFlowNode for payload | provenance | | +| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:16:15:16:21 | ControlFlowNode for payload | provenance | | +| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:18:19:18:25 | ControlFlowNode for payload | provenance | | +| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:21:16:21:22 | ControlFlowNode for payload | provenance | | +| unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | unsafe_deserialization.py:24:24:24:30 | ControlFlowNode for payload | provenance | | +| unsafe_deserialization.py:14:15:14:21 | ControlFlowNode for request | unsafe_deserialization.py:14:15:14:26 | ControlFlowNode for Attribute | provenance | | +| unsafe_deserialization.py:14:15:14:26 | ControlFlowNode for Attribute | unsafe_deserialization.py:14:15:14:41 | ControlFlowNode for Attribute() | provenance | | +| unsafe_deserialization.py:14:15:14:41 | ControlFlowNode for Attribute() | unsafe_deserialization.py:14:5:14:11 | ControlFlowNode for payload | provenance | | nodes | unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | unsafe_deserialization.py:8:26:8:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-601-UrlRedirect/UrlRedirect.expected b/python/ql/test/query-tests/Security/CWE-601-UrlRedirect/UrlRedirect.expected index cff78889b889..d77c850b2a47 100644 --- a/python/ql/test/query-tests/Security/CWE-601-UrlRedirect/UrlRedirect.expected +++ b/python/ql/test/query-tests/Security/CWE-601-UrlRedirect/UrlRedirect.expected @@ -1,72 +1,72 @@ edges -| test.py:1:26:1:32 | ControlFlowNode for ImportMember | test.py:1:26:1:32 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:7:14:7:20 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:30:17:30:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:37:17:37:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:44:17:44:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:60:17:60:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:67:17:67:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:74:17:74:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:81:17:81:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:90:17:90:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:111:17:111:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:137:17:137:23 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:145:17:145:23 | ControlFlowNode for request | -| test.py:7:5:7:10 | ControlFlowNode for target | test.py:8:21:8:26 | ControlFlowNode for target | -| test.py:7:14:7:20 | ControlFlowNode for request | test.py:7:14:7:25 | ControlFlowNode for Attribute | -| test.py:7:14:7:25 | ControlFlowNode for Attribute | test.py:7:14:7:43 | ControlFlowNode for Attribute() | -| test.py:7:14:7:43 | ControlFlowNode for Attribute() | test.py:7:5:7:10 | ControlFlowNode for target | -| test.py:30:5:30:13 | ControlFlowNode for untrusted | test.py:31:5:31:8 | ControlFlowNode for safe | -| test.py:30:17:30:23 | ControlFlowNode for request | test.py:30:17:30:28 | ControlFlowNode for Attribute | -| test.py:30:17:30:28 | ControlFlowNode for Attribute | test.py:30:17:30:46 | ControlFlowNode for Attribute() | -| test.py:30:17:30:46 | ControlFlowNode for Attribute() | test.py:30:5:30:13 | ControlFlowNode for untrusted | -| test.py:31:5:31:8 | ControlFlowNode for safe | test.py:32:21:32:24 | ControlFlowNode for safe | -| test.py:37:5:37:13 | ControlFlowNode for untrusted | test.py:38:5:38:8 | ControlFlowNode for safe | -| test.py:37:17:37:23 | ControlFlowNode for request | test.py:37:17:37:28 | ControlFlowNode for Attribute | -| test.py:37:17:37:28 | ControlFlowNode for Attribute | test.py:37:17:37:46 | ControlFlowNode for Attribute() | -| test.py:37:17:37:46 | ControlFlowNode for Attribute() | test.py:37:5:37:13 | ControlFlowNode for untrusted | -| test.py:38:5:38:8 | ControlFlowNode for safe | test.py:39:21:39:24 | ControlFlowNode for safe | -| test.py:44:5:44:13 | ControlFlowNode for untrusted | test.py:45:5:45:8 | ControlFlowNode for safe | -| test.py:44:17:44:23 | ControlFlowNode for request | test.py:44:17:44:28 | ControlFlowNode for Attribute | -| test.py:44:17:44:28 | ControlFlowNode for Attribute | test.py:44:17:44:46 | ControlFlowNode for Attribute() | -| test.py:44:17:44:46 | ControlFlowNode for Attribute() | test.py:44:5:44:13 | ControlFlowNode for untrusted | -| test.py:45:5:45:8 | ControlFlowNode for safe | test.py:46:21:46:24 | ControlFlowNode for safe | -| test.py:60:5:60:13 | ControlFlowNode for untrusted | test.py:61:5:61:10 | ControlFlowNode for unsafe | -| test.py:60:17:60:23 | ControlFlowNode for request | test.py:60:17:60:28 | ControlFlowNode for Attribute | -| test.py:60:17:60:28 | ControlFlowNode for Attribute | test.py:60:17:60:46 | ControlFlowNode for Attribute() | -| test.py:60:17:60:46 | ControlFlowNode for Attribute() | test.py:60:5:60:13 | ControlFlowNode for untrusted | -| test.py:61:5:61:10 | ControlFlowNode for unsafe | test.py:62:21:62:26 | ControlFlowNode for unsafe | -| test.py:67:5:67:13 | ControlFlowNode for untrusted | test.py:68:5:68:10 | ControlFlowNode for unsafe | -| test.py:67:17:67:23 | ControlFlowNode for request | test.py:67:17:67:28 | ControlFlowNode for Attribute | -| test.py:67:17:67:28 | ControlFlowNode for Attribute | test.py:67:17:67:46 | ControlFlowNode for Attribute() | -| test.py:67:17:67:46 | ControlFlowNode for Attribute() | test.py:67:5:67:13 | ControlFlowNode for untrusted | -| test.py:68:5:68:10 | ControlFlowNode for unsafe | test.py:69:21:69:26 | ControlFlowNode for unsafe | -| test.py:74:5:74:13 | ControlFlowNode for untrusted | test.py:75:5:75:10 | ControlFlowNode for unsafe | -| test.py:74:17:74:23 | ControlFlowNode for request | test.py:74:17:74:28 | ControlFlowNode for Attribute | -| test.py:74:17:74:28 | ControlFlowNode for Attribute | test.py:74:17:74:46 | ControlFlowNode for Attribute() | -| test.py:74:17:74:46 | ControlFlowNode for Attribute() | test.py:74:5:74:13 | ControlFlowNode for untrusted | -| test.py:75:5:75:10 | ControlFlowNode for unsafe | test.py:76:21:76:26 | ControlFlowNode for unsafe | -| test.py:81:5:81:13 | ControlFlowNode for untrusted | test.py:82:5:82:10 | ControlFlowNode for unsafe | -| test.py:81:17:81:23 | ControlFlowNode for request | test.py:81:17:81:28 | ControlFlowNode for Attribute | -| test.py:81:17:81:28 | ControlFlowNode for Attribute | test.py:81:17:81:46 | ControlFlowNode for Attribute() | -| test.py:81:17:81:46 | ControlFlowNode for Attribute() | test.py:81:5:81:13 | ControlFlowNode for untrusted | -| test.py:82:5:82:10 | ControlFlowNode for unsafe | test.py:83:21:83:26 | ControlFlowNode for unsafe | -| test.py:90:5:90:13 | ControlFlowNode for untrusted | test.py:93:18:93:26 | ControlFlowNode for untrusted | -| test.py:90:17:90:23 | ControlFlowNode for request | test.py:90:17:90:28 | ControlFlowNode for Attribute | -| test.py:90:17:90:28 | ControlFlowNode for Attribute | test.py:90:17:90:46 | ControlFlowNode for Attribute() | -| test.py:90:17:90:46 | ControlFlowNode for Attribute() | test.py:90:5:90:13 | ControlFlowNode for untrusted | -| test.py:111:5:111:13 | ControlFlowNode for untrusted | test.py:114:25:114:33 | ControlFlowNode for untrusted | -| test.py:111:17:111:23 | ControlFlowNode for request | test.py:111:17:111:28 | ControlFlowNode for Attribute | -| test.py:111:17:111:28 | ControlFlowNode for Attribute | test.py:111:17:111:46 | ControlFlowNode for Attribute() | -| test.py:111:17:111:46 | ControlFlowNode for Attribute() | test.py:111:5:111:13 | ControlFlowNode for untrusted | -| test.py:137:5:137:13 | ControlFlowNode for untrusted | test.py:140:25:140:33 | ControlFlowNode for untrusted | -| test.py:137:17:137:23 | ControlFlowNode for request | test.py:137:17:137:28 | ControlFlowNode for Attribute | -| test.py:137:17:137:28 | ControlFlowNode for Attribute | test.py:137:17:137:46 | ControlFlowNode for Attribute() | -| test.py:137:17:137:46 | ControlFlowNode for Attribute() | test.py:137:5:137:13 | ControlFlowNode for untrusted | -| test.py:145:5:145:13 | ControlFlowNode for untrusted | test.py:148:25:148:33 | ControlFlowNode for untrusted | -| test.py:145:17:145:23 | ControlFlowNode for request | test.py:145:17:145:28 | ControlFlowNode for Attribute | -| test.py:145:17:145:28 | ControlFlowNode for Attribute | test.py:145:17:145:46 | ControlFlowNode for Attribute() | -| test.py:145:17:145:46 | ControlFlowNode for Attribute() | test.py:145:5:145:13 | ControlFlowNode for untrusted | +| test.py:1:26:1:32 | ControlFlowNode for ImportMember | test.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:7:14:7:20 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:30:17:30:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:37:17:37:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:44:17:44:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:60:17:60:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:67:17:67:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:74:17:74:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:81:17:81:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:90:17:90:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:111:17:111:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:137:17:137:23 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:145:17:145:23 | ControlFlowNode for request | provenance | | +| test.py:7:5:7:10 | ControlFlowNode for target | test.py:8:21:8:26 | ControlFlowNode for target | provenance | | +| test.py:7:14:7:20 | ControlFlowNode for request | test.py:7:14:7:25 | ControlFlowNode for Attribute | provenance | | +| test.py:7:14:7:25 | ControlFlowNode for Attribute | test.py:7:14:7:43 | ControlFlowNode for Attribute() | provenance | | +| test.py:7:14:7:43 | ControlFlowNode for Attribute() | test.py:7:5:7:10 | ControlFlowNode for target | provenance | | +| test.py:30:5:30:13 | ControlFlowNode for untrusted | test.py:31:5:31:8 | ControlFlowNode for safe | provenance | | +| test.py:30:17:30:23 | ControlFlowNode for request | test.py:30:17:30:28 | ControlFlowNode for Attribute | provenance | | +| test.py:30:17:30:28 | ControlFlowNode for Attribute | test.py:30:17:30:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:30:17:30:46 | ControlFlowNode for Attribute() | test.py:30:5:30:13 | ControlFlowNode for untrusted | provenance | | +| test.py:31:5:31:8 | ControlFlowNode for safe | test.py:32:21:32:24 | ControlFlowNode for safe | provenance | | +| test.py:37:5:37:13 | ControlFlowNode for untrusted | test.py:38:5:38:8 | ControlFlowNode for safe | provenance | | +| test.py:37:17:37:23 | ControlFlowNode for request | test.py:37:17:37:28 | ControlFlowNode for Attribute | provenance | | +| test.py:37:17:37:28 | ControlFlowNode for Attribute | test.py:37:17:37:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:37:17:37:46 | ControlFlowNode for Attribute() | test.py:37:5:37:13 | ControlFlowNode for untrusted | provenance | | +| test.py:38:5:38:8 | ControlFlowNode for safe | test.py:39:21:39:24 | ControlFlowNode for safe | provenance | | +| test.py:44:5:44:13 | ControlFlowNode for untrusted | test.py:45:5:45:8 | ControlFlowNode for safe | provenance | | +| test.py:44:17:44:23 | ControlFlowNode for request | test.py:44:17:44:28 | ControlFlowNode for Attribute | provenance | | +| test.py:44:17:44:28 | ControlFlowNode for Attribute | test.py:44:17:44:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:44:17:44:46 | ControlFlowNode for Attribute() | test.py:44:5:44:13 | ControlFlowNode for untrusted | provenance | | +| test.py:45:5:45:8 | ControlFlowNode for safe | test.py:46:21:46:24 | ControlFlowNode for safe | provenance | | +| test.py:60:5:60:13 | ControlFlowNode for untrusted | test.py:61:5:61:10 | ControlFlowNode for unsafe | provenance | | +| test.py:60:17:60:23 | ControlFlowNode for request | test.py:60:17:60:28 | ControlFlowNode for Attribute | provenance | | +| test.py:60:17:60:28 | ControlFlowNode for Attribute | test.py:60:17:60:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:60:17:60:46 | ControlFlowNode for Attribute() | test.py:60:5:60:13 | ControlFlowNode for untrusted | provenance | | +| test.py:61:5:61:10 | ControlFlowNode for unsafe | test.py:62:21:62:26 | ControlFlowNode for unsafe | provenance | | +| test.py:67:5:67:13 | ControlFlowNode for untrusted | test.py:68:5:68:10 | ControlFlowNode for unsafe | provenance | | +| test.py:67:17:67:23 | ControlFlowNode for request | test.py:67:17:67:28 | ControlFlowNode for Attribute | provenance | | +| test.py:67:17:67:28 | ControlFlowNode for Attribute | test.py:67:17:67:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:67:17:67:46 | ControlFlowNode for Attribute() | test.py:67:5:67:13 | ControlFlowNode for untrusted | provenance | | +| test.py:68:5:68:10 | ControlFlowNode for unsafe | test.py:69:21:69:26 | ControlFlowNode for unsafe | provenance | | +| test.py:74:5:74:13 | ControlFlowNode for untrusted | test.py:75:5:75:10 | ControlFlowNode for unsafe | provenance | | +| test.py:74:17:74:23 | ControlFlowNode for request | test.py:74:17:74:28 | ControlFlowNode for Attribute | provenance | | +| test.py:74:17:74:28 | ControlFlowNode for Attribute | test.py:74:17:74:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:74:17:74:46 | ControlFlowNode for Attribute() | test.py:74:5:74:13 | ControlFlowNode for untrusted | provenance | | +| test.py:75:5:75:10 | ControlFlowNode for unsafe | test.py:76:21:76:26 | ControlFlowNode for unsafe | provenance | | +| test.py:81:5:81:13 | ControlFlowNode for untrusted | test.py:82:5:82:10 | ControlFlowNode for unsafe | provenance | | +| test.py:81:17:81:23 | ControlFlowNode for request | test.py:81:17:81:28 | ControlFlowNode for Attribute | provenance | | +| test.py:81:17:81:28 | ControlFlowNode for Attribute | test.py:81:17:81:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:81:17:81:46 | ControlFlowNode for Attribute() | test.py:81:5:81:13 | ControlFlowNode for untrusted | provenance | | +| test.py:82:5:82:10 | ControlFlowNode for unsafe | test.py:83:21:83:26 | ControlFlowNode for unsafe | provenance | | +| test.py:90:5:90:13 | ControlFlowNode for untrusted | test.py:93:18:93:26 | ControlFlowNode for untrusted | provenance | | +| test.py:90:17:90:23 | ControlFlowNode for request | test.py:90:17:90:28 | ControlFlowNode for Attribute | provenance | | +| test.py:90:17:90:28 | ControlFlowNode for Attribute | test.py:90:17:90:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:90:17:90:46 | ControlFlowNode for Attribute() | test.py:90:5:90:13 | ControlFlowNode for untrusted | provenance | | +| test.py:111:5:111:13 | ControlFlowNode for untrusted | test.py:114:25:114:33 | ControlFlowNode for untrusted | provenance | | +| test.py:111:17:111:23 | ControlFlowNode for request | test.py:111:17:111:28 | ControlFlowNode for Attribute | provenance | | +| test.py:111:17:111:28 | ControlFlowNode for Attribute | test.py:111:17:111:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:111:17:111:46 | ControlFlowNode for Attribute() | test.py:111:5:111:13 | ControlFlowNode for untrusted | provenance | | +| test.py:137:5:137:13 | ControlFlowNode for untrusted | test.py:140:25:140:33 | ControlFlowNode for untrusted | provenance | | +| test.py:137:17:137:23 | ControlFlowNode for request | test.py:137:17:137:28 | ControlFlowNode for Attribute | provenance | | +| test.py:137:17:137:28 | ControlFlowNode for Attribute | test.py:137:17:137:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:137:17:137:46 | ControlFlowNode for Attribute() | test.py:137:5:137:13 | ControlFlowNode for untrusted | provenance | | +| test.py:145:5:145:13 | ControlFlowNode for untrusted | test.py:148:25:148:33 | ControlFlowNode for untrusted | provenance | | +| test.py:145:17:145:23 | ControlFlowNode for request | test.py:145:17:145:28 | ControlFlowNode for Attribute | provenance | | +| test.py:145:17:145:28 | ControlFlowNode for Attribute | test.py:145:17:145:46 | ControlFlowNode for Attribute() | provenance | | +| test.py:145:17:145:46 | ControlFlowNode for Attribute() | test.py:145:5:145:13 | ControlFlowNode for untrusted | provenance | | nodes | test.py:1:26:1:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test.py:1:26:1:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-611-Xxe/Xxe.expected b/python/ql/test/query-tests/Security/CWE-611-Xxe/Xxe.expected index 6d1b03c5c378..9f37afb885e5 100644 --- a/python/ql/test/query-tests/Security/CWE-611-Xxe/Xxe.expected +++ b/python/ql/test/query-tests/Security/CWE-611-Xxe/Xxe.expected @@ -1,11 +1,11 @@ edges -| test.py:1:26:1:32 | ControlFlowNode for ImportMember | test.py:1:26:1:32 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:9:19:9:25 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:20:19:20:25 | ControlFlowNode for request | -| test.py:9:5:9:15 | ControlFlowNode for xml_content | test.py:10:34:10:44 | ControlFlowNode for xml_content | -| test.py:9:19:9:25 | ControlFlowNode for request | test.py:9:5:9:15 | ControlFlowNode for xml_content | -| test.py:20:5:20:15 | ControlFlowNode for xml_content | test.py:31:34:31:44 | ControlFlowNode for xml_content | -| test.py:20:19:20:25 | ControlFlowNode for request | test.py:20:5:20:15 | ControlFlowNode for xml_content | +| test.py:1:26:1:32 | ControlFlowNode for ImportMember | test.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:9:19:9:25 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:20:19:20:25 | ControlFlowNode for request | provenance | | +| test.py:9:5:9:15 | ControlFlowNode for xml_content | test.py:10:34:10:44 | ControlFlowNode for xml_content | provenance | | +| test.py:9:19:9:25 | ControlFlowNode for request | test.py:9:5:9:15 | ControlFlowNode for xml_content | provenance | | +| test.py:20:5:20:15 | ControlFlowNode for xml_content | test.py:31:34:31:44 | ControlFlowNode for xml_content | provenance | | +| test.py:20:19:20:25 | ControlFlowNode for request | test.py:20:5:20:15 | ControlFlowNode for xml_content | provenance | | nodes | test.py:1:26:1:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test.py:1:26:1:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-643-XPathInjection/XpathInjection.expected b/python/ql/test/query-tests/Security/CWE-643-XPathInjection/XpathInjection.expected index 0e8e826b7a73..efd2576dd71a 100644 --- a/python/ql/test/query-tests/Security/CWE-643-XPathInjection/XpathInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-643-XPathInjection/XpathInjection.expected @@ -1,32 +1,32 @@ edges -| xpathBad.py:9:7:9:13 | ControlFlowNode for request | xpathBad.py:10:5:10:9 | ControlFlowNode for value | -| xpathBad.py:10:5:10:9 | ControlFlowNode for value | xpathBad.py:13:20:13:43 | ControlFlowNode for BinaryExpr | -| xpathFlow.py:2:26:2:32 | ControlFlowNode for ImportMember | xpathFlow.py:2:26:2:32 | ControlFlowNode for request | -| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:11:18:11:24 | ControlFlowNode for request | -| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:20:18:20:24 | ControlFlowNode for request | -| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:30:18:30:24 | ControlFlowNode for request | -| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:39:18:39:24 | ControlFlowNode for request | -| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:47:18:47:24 | ControlFlowNode for request | -| xpathFlow.py:11:5:11:14 | ControlFlowNode for xpathQuery | xpathFlow.py:14:20:14:29 | ControlFlowNode for xpathQuery | -| xpathFlow.py:11:18:11:24 | ControlFlowNode for request | xpathFlow.py:11:18:11:29 | ControlFlowNode for Attribute | -| xpathFlow.py:11:18:11:29 | ControlFlowNode for Attribute | xpathFlow.py:11:18:11:44 | ControlFlowNode for Attribute() | -| xpathFlow.py:11:18:11:44 | ControlFlowNode for Attribute() | xpathFlow.py:11:5:11:14 | ControlFlowNode for xpathQuery | -| xpathFlow.py:20:5:20:14 | ControlFlowNode for xpathQuery | xpathFlow.py:23:29:23:38 | ControlFlowNode for xpathQuery | -| xpathFlow.py:20:18:20:24 | ControlFlowNode for request | xpathFlow.py:20:18:20:29 | ControlFlowNode for Attribute | -| xpathFlow.py:20:18:20:29 | ControlFlowNode for Attribute | xpathFlow.py:20:18:20:44 | ControlFlowNode for Attribute() | -| xpathFlow.py:20:18:20:44 | ControlFlowNode for Attribute() | xpathFlow.py:20:5:20:14 | ControlFlowNode for xpathQuery | -| xpathFlow.py:30:5:30:14 | ControlFlowNode for xpathQuery | xpathFlow.py:32:29:32:38 | ControlFlowNode for xpathQuery | -| xpathFlow.py:30:18:30:24 | ControlFlowNode for request | xpathFlow.py:30:18:30:29 | ControlFlowNode for Attribute | -| xpathFlow.py:30:18:30:29 | ControlFlowNode for Attribute | xpathFlow.py:30:18:30:44 | ControlFlowNode for Attribute() | -| xpathFlow.py:30:18:30:44 | ControlFlowNode for Attribute() | xpathFlow.py:30:5:30:14 | ControlFlowNode for xpathQuery | -| xpathFlow.py:39:5:39:14 | ControlFlowNode for xpathQuery | xpathFlow.py:41:31:41:40 | ControlFlowNode for xpathQuery | -| xpathFlow.py:39:18:39:24 | ControlFlowNode for request | xpathFlow.py:39:18:39:29 | ControlFlowNode for Attribute | -| xpathFlow.py:39:18:39:29 | ControlFlowNode for Attribute | xpathFlow.py:39:18:39:44 | ControlFlowNode for Attribute() | -| xpathFlow.py:39:18:39:44 | ControlFlowNode for Attribute() | xpathFlow.py:39:5:39:14 | ControlFlowNode for xpathQuery | -| xpathFlow.py:47:5:47:14 | ControlFlowNode for xpathQuery | xpathFlow.py:49:29:49:38 | ControlFlowNode for xpathQuery | -| xpathFlow.py:47:18:47:24 | ControlFlowNode for request | xpathFlow.py:47:18:47:29 | ControlFlowNode for Attribute | -| xpathFlow.py:47:18:47:29 | ControlFlowNode for Attribute | xpathFlow.py:47:18:47:44 | ControlFlowNode for Attribute() | -| xpathFlow.py:47:18:47:44 | ControlFlowNode for Attribute() | xpathFlow.py:47:5:47:14 | ControlFlowNode for xpathQuery | +| xpathBad.py:9:7:9:13 | ControlFlowNode for request | xpathBad.py:10:5:10:9 | ControlFlowNode for value | provenance | | +| xpathBad.py:10:5:10:9 | ControlFlowNode for value | xpathBad.py:13:20:13:43 | ControlFlowNode for BinaryExpr | provenance | | +| xpathFlow.py:2:26:2:32 | ControlFlowNode for ImportMember | xpathFlow.py:2:26:2:32 | ControlFlowNode for request | provenance | | +| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:11:18:11:24 | ControlFlowNode for request | provenance | | +| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:20:18:20:24 | ControlFlowNode for request | provenance | | +| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:30:18:30:24 | ControlFlowNode for request | provenance | | +| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:39:18:39:24 | ControlFlowNode for request | provenance | | +| xpathFlow.py:2:26:2:32 | ControlFlowNode for request | xpathFlow.py:47:18:47:24 | ControlFlowNode for request | provenance | | +| xpathFlow.py:11:5:11:14 | ControlFlowNode for xpathQuery | xpathFlow.py:14:20:14:29 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:11:18:11:24 | ControlFlowNode for request | xpathFlow.py:11:18:11:29 | ControlFlowNode for Attribute | provenance | | +| xpathFlow.py:11:18:11:29 | ControlFlowNode for Attribute | xpathFlow.py:11:18:11:44 | ControlFlowNode for Attribute() | provenance | | +| xpathFlow.py:11:18:11:44 | ControlFlowNode for Attribute() | xpathFlow.py:11:5:11:14 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:20:5:20:14 | ControlFlowNode for xpathQuery | xpathFlow.py:23:29:23:38 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:20:18:20:24 | ControlFlowNode for request | xpathFlow.py:20:18:20:29 | ControlFlowNode for Attribute | provenance | | +| xpathFlow.py:20:18:20:29 | ControlFlowNode for Attribute | xpathFlow.py:20:18:20:44 | ControlFlowNode for Attribute() | provenance | | +| xpathFlow.py:20:18:20:44 | ControlFlowNode for Attribute() | xpathFlow.py:20:5:20:14 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:30:5:30:14 | ControlFlowNode for xpathQuery | xpathFlow.py:32:29:32:38 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:30:18:30:24 | ControlFlowNode for request | xpathFlow.py:30:18:30:29 | ControlFlowNode for Attribute | provenance | | +| xpathFlow.py:30:18:30:29 | ControlFlowNode for Attribute | xpathFlow.py:30:18:30:44 | ControlFlowNode for Attribute() | provenance | | +| xpathFlow.py:30:18:30:44 | ControlFlowNode for Attribute() | xpathFlow.py:30:5:30:14 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:39:5:39:14 | ControlFlowNode for xpathQuery | xpathFlow.py:41:31:41:40 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:39:18:39:24 | ControlFlowNode for request | xpathFlow.py:39:18:39:29 | ControlFlowNode for Attribute | provenance | | +| xpathFlow.py:39:18:39:29 | ControlFlowNode for Attribute | xpathFlow.py:39:18:39:44 | ControlFlowNode for Attribute() | provenance | | +| xpathFlow.py:39:18:39:44 | ControlFlowNode for Attribute() | xpathFlow.py:39:5:39:14 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:47:5:47:14 | ControlFlowNode for xpathQuery | xpathFlow.py:49:29:49:38 | ControlFlowNode for xpathQuery | provenance | | +| xpathFlow.py:47:18:47:24 | ControlFlowNode for request | xpathFlow.py:47:18:47:29 | ControlFlowNode for Attribute | provenance | | +| xpathFlow.py:47:18:47:29 | ControlFlowNode for Attribute | xpathFlow.py:47:18:47:44 | ControlFlowNode for Attribute() | provenance | | +| xpathFlow.py:47:18:47:44 | ControlFlowNode for Attribute() | xpathFlow.py:47:5:47:14 | ControlFlowNode for xpathQuery | provenance | | nodes | xpathBad.py:9:7:9:13 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | | xpathBad.py:10:5:10:9 | ControlFlowNode for value | semmle.label | ControlFlowNode for value | diff --git a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected index d26a768c1a6b..6a8e36aef704 100644 --- a/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected +++ b/python/ql/test/query-tests/Security/CWE-730-PolynomialReDoS/PolynomialReDoS.expected @@ -1,16 +1,16 @@ edges -| test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:2:26:2:32 | ControlFlowNode for request | -| test.py:2:26:2:32 | ControlFlowNode for request | test.py:7:12:7:18 | ControlFlowNode for request | -| test.py:7:5:7:8 | ControlFlowNode for text | test.py:8:30:8:33 | ControlFlowNode for text | -| test.py:7:5:7:8 | ControlFlowNode for text | test.py:9:32:9:35 | ControlFlowNode for text | -| test.py:7:5:7:8 | ControlFlowNode for text | test.py:12:17:12:20 | ControlFlowNode for text | -| test.py:7:5:7:8 | ControlFlowNode for text | test.py:18:28:18:31 | ControlFlowNode for text | -| test.py:7:5:7:8 | ControlFlowNode for text | test.py:21:18:21:21 | ControlFlowNode for text | -| test.py:7:12:7:18 | ControlFlowNode for request | test.py:7:12:7:23 | ControlFlowNode for Attribute | -| test.py:7:12:7:23 | ControlFlowNode for Attribute | test.py:7:12:7:35 | ControlFlowNode for Attribute() | -| test.py:7:12:7:35 | ControlFlowNode for Attribute() | test.py:7:5:7:8 | ControlFlowNode for text | -| test.py:14:33:14:39 | ControlFlowNode for my_text | test.py:16:24:16:30 | ControlFlowNode for my_text | -| test.py:18:28:18:31 | ControlFlowNode for text | test.py:14:33:14:39 | ControlFlowNode for my_text | +| test.py:2:26:2:32 | ControlFlowNode for ImportMember | test.py:2:26:2:32 | ControlFlowNode for request | provenance | | +| test.py:2:26:2:32 | ControlFlowNode for request | test.py:7:12:7:18 | ControlFlowNode for request | provenance | | +| test.py:7:5:7:8 | ControlFlowNode for text | test.py:8:30:8:33 | ControlFlowNode for text | provenance | | +| test.py:7:5:7:8 | ControlFlowNode for text | test.py:9:32:9:35 | ControlFlowNode for text | provenance | | +| test.py:7:5:7:8 | ControlFlowNode for text | test.py:12:17:12:20 | ControlFlowNode for text | provenance | | +| test.py:7:5:7:8 | ControlFlowNode for text | test.py:18:28:18:31 | ControlFlowNode for text | provenance | | +| test.py:7:5:7:8 | ControlFlowNode for text | test.py:21:18:21:21 | ControlFlowNode for text | provenance | | +| test.py:7:12:7:18 | ControlFlowNode for request | test.py:7:12:7:23 | ControlFlowNode for Attribute | provenance | | +| test.py:7:12:7:23 | ControlFlowNode for Attribute | test.py:7:12:7:35 | ControlFlowNode for Attribute() | provenance | | +| test.py:7:12:7:35 | ControlFlowNode for Attribute() | test.py:7:5:7:8 | ControlFlowNode for text | provenance | | +| test.py:14:33:14:39 | ControlFlowNode for my_text | test.py:16:24:16:30 | ControlFlowNode for my_text | provenance | | +| test.py:18:28:18:31 | ControlFlowNode for text | test.py:14:33:14:39 | ControlFlowNode for my_text | provenance | | nodes | test.py:2:26:2:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test.py:2:26:2:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected b/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected index 12913198622c..48bbda48416b 100644 --- a/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-730-RegexInjection/RegexInjection.expected @@ -1,14 +1,14 @@ edges -| re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:1:19:1:25 | ControlFlowNode for request | -| re_bad.py:1:19:1:25 | ControlFlowNode for request | re_bad.py:13:22:13:28 | ControlFlowNode for request | -| re_bad.py:1:19:1:25 | ControlFlowNode for request | re_bad.py:24:22:24:28 | ControlFlowNode for request | -| re_bad.py:1:19:1:25 | ControlFlowNode for request | re_bad.py:36:22:36:28 | ControlFlowNode for request | -| re_bad.py:13:5:13:18 | ControlFlowNode for unsafe_pattern | re_bad.py:14:15:14:28 | ControlFlowNode for unsafe_pattern | -| re_bad.py:13:22:13:28 | ControlFlowNode for request | re_bad.py:13:5:13:18 | ControlFlowNode for unsafe_pattern | -| re_bad.py:24:5:24:18 | ControlFlowNode for unsafe_pattern | re_bad.py:25:35:25:48 | ControlFlowNode for unsafe_pattern | -| re_bad.py:24:22:24:28 | ControlFlowNode for request | re_bad.py:24:5:24:18 | ControlFlowNode for unsafe_pattern | -| re_bad.py:36:5:36:18 | ControlFlowNode for unsafe_pattern | re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | -| re_bad.py:36:22:36:28 | ControlFlowNode for request | re_bad.py:36:5:36:18 | ControlFlowNode for unsafe_pattern | +| re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | re_bad.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| re_bad.py:1:19:1:25 | ControlFlowNode for request | re_bad.py:13:22:13:28 | ControlFlowNode for request | provenance | | +| re_bad.py:1:19:1:25 | ControlFlowNode for request | re_bad.py:24:22:24:28 | ControlFlowNode for request | provenance | | +| re_bad.py:1:19:1:25 | ControlFlowNode for request | re_bad.py:36:22:36:28 | ControlFlowNode for request | provenance | | +| re_bad.py:13:5:13:18 | ControlFlowNode for unsafe_pattern | re_bad.py:14:15:14:28 | ControlFlowNode for unsafe_pattern | provenance | | +| re_bad.py:13:22:13:28 | ControlFlowNode for request | re_bad.py:13:5:13:18 | ControlFlowNode for unsafe_pattern | provenance | | +| re_bad.py:24:5:24:18 | ControlFlowNode for unsafe_pattern | re_bad.py:25:35:25:48 | ControlFlowNode for unsafe_pattern | provenance | | +| re_bad.py:24:22:24:28 | ControlFlowNode for request | re_bad.py:24:5:24:18 | ControlFlowNode for unsafe_pattern | provenance | | +| re_bad.py:36:5:36:18 | ControlFlowNode for unsafe_pattern | re_bad.py:37:16:37:29 | ControlFlowNode for unsafe_pattern | provenance | | +| re_bad.py:36:22:36:28 | ControlFlowNode for request | re_bad.py:36:5:36:18 | ControlFlowNode for unsafe_pattern | provenance | | nodes | re_bad.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | re_bad.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-776-XmlBomb/XmlBomb.expected b/python/ql/test/query-tests/Security/CWE-776-XmlBomb/XmlBomb.expected index 59a175e8ae67..944856ca0db6 100644 --- a/python/ql/test/query-tests/Security/CWE-776-XmlBomb/XmlBomb.expected +++ b/python/ql/test/query-tests/Security/CWE-776-XmlBomb/XmlBomb.expected @@ -1,8 +1,8 @@ edges -| test.py:1:26:1:32 | ControlFlowNode for ImportMember | test.py:1:26:1:32 | ControlFlowNode for request | -| test.py:1:26:1:32 | ControlFlowNode for request | test.py:19:19:19:25 | ControlFlowNode for request | -| test.py:19:5:19:15 | ControlFlowNode for xml_content | test.py:30:34:30:44 | ControlFlowNode for xml_content | -| test.py:19:19:19:25 | ControlFlowNode for request | test.py:19:5:19:15 | ControlFlowNode for xml_content | +| test.py:1:26:1:32 | ControlFlowNode for ImportMember | test.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| test.py:1:26:1:32 | ControlFlowNode for request | test.py:19:19:19:25 | ControlFlowNode for request | provenance | | +| test.py:19:5:19:15 | ControlFlowNode for xml_content | test.py:30:34:30:44 | ControlFlowNode for xml_content | provenance | | +| test.py:19:19:19:25 | ControlFlowNode for request | test.py:19:5:19:15 | ControlFlowNode for xml_content | provenance | | nodes | test.py:1:26:1:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | test.py:1:26:1:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-798-HardcodedCredentials/HardcodedCredentials.expected b/python/ql/test/query-tests/Security/CWE-798-HardcodedCredentials/HardcodedCredentials.expected index 78ebc9bd0491..5f494e9ba7a4 100644 --- a/python/ql/test/query-tests/Security/CWE-798-HardcodedCredentials/HardcodedCredentials.expected +++ b/python/ql/test/query-tests/Security/CWE-798-HardcodedCredentials/HardcodedCredentials.expected @@ -1,8 +1,8 @@ edges -| test.py:5:1:5:8 | ControlFlowNode for USERNAME | test.py:14:18:14:25 | ControlFlowNode for USERNAME | -| test.py:5:12:5:24 | ControlFlowNode for Str | test.py:5:1:5:8 | ControlFlowNode for USERNAME | -| test.py:6:1:6:8 | ControlFlowNode for PASSWORD | test.py:15:18:15:25 | ControlFlowNode for PASSWORD | -| test.py:6:12:6:25 | ControlFlowNode for Str | test.py:6:1:6:8 | ControlFlowNode for PASSWORD | +| test.py:5:1:5:8 | ControlFlowNode for USERNAME | test.py:14:18:14:25 | ControlFlowNode for USERNAME | provenance | | +| test.py:5:12:5:24 | ControlFlowNode for Str | test.py:5:1:5:8 | ControlFlowNode for USERNAME | provenance | | +| test.py:6:1:6:8 | ControlFlowNode for PASSWORD | test.py:15:18:15:25 | ControlFlowNode for PASSWORD | provenance | | +| test.py:6:12:6:25 | ControlFlowNode for Str | test.py:6:1:6:8 | ControlFlowNode for PASSWORD | provenance | | nodes | test.py:5:1:5:8 | ControlFlowNode for USERNAME | semmle.label | ControlFlowNode for USERNAME | | test.py:5:12:5:24 | ControlFlowNode for Str | semmle.label | ControlFlowNode for Str | diff --git a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected index c6b1c77d40ee..cc0a986aedba 100644 --- a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected +++ b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/FullServerSideRequestForgery.expected @@ -1,56 +1,56 @@ edges -| full_partial_test.py:1:19:1:25 | ControlFlowNode for ImportMember | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:7:18:7:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:37:18:37:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:57:18:57:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:71:18:71:24 | ControlFlowNode for request | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:10:18:10:27 | ControlFlowNode for user_input | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:12:5:12:7 | ControlFlowNode for url | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:18:5:18:7 | ControlFlowNode for url | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:22:5:22:7 | ControlFlowNode for url | -| full_partial_test.py:7:18:7:24 | ControlFlowNode for request | full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | -| full_partial_test.py:12:5:12:7 | ControlFlowNode for url | full_partial_test.py:13:18:13:20 | ControlFlowNode for url | -| full_partial_test.py:18:5:18:7 | ControlFlowNode for url | full_partial_test.py:19:18:19:20 | ControlFlowNode for url | -| full_partial_test.py:22:5:22:7 | ControlFlowNode for url | full_partial_test.py:23:18:23:20 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:41:5:41:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:44:5:44:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:47:5:47:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:50:5:50:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:53:5:53:7 | ControlFlowNode for url | -| full_partial_test.py:37:18:37:24 | ControlFlowNode for request | full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | -| full_partial_test.py:41:5:41:7 | ControlFlowNode for url | full_partial_test.py:42:18:42:20 | ControlFlowNode for url | -| full_partial_test.py:44:5:44:7 | ControlFlowNode for url | full_partial_test.py:45:18:45:20 | ControlFlowNode for url | -| full_partial_test.py:47:5:47:7 | ControlFlowNode for url | full_partial_test.py:48:18:48:20 | ControlFlowNode for url | -| full_partial_test.py:50:5:50:7 | ControlFlowNode for url | full_partial_test.py:51:18:51:20 | ControlFlowNode for url | -| full_partial_test.py:53:5:53:7 | ControlFlowNode for url | full_partial_test.py:54:18:54:20 | ControlFlowNode for url | -| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:61:5:61:7 | ControlFlowNode for url | -| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:64:5:64:7 | ControlFlowNode for url | -| full_partial_test.py:57:18:57:24 | ControlFlowNode for request | full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | -| full_partial_test.py:61:5:61:7 | ControlFlowNode for url | full_partial_test.py:62:18:62:20 | ControlFlowNode for url | -| full_partial_test.py:64:5:64:7 | ControlFlowNode for url | full_partial_test.py:65:18:65:20 | ControlFlowNode for url | -| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:75:5:75:7 | ControlFlowNode for url | -| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:78:5:78:7 | ControlFlowNode for url | -| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:81:5:81:7 | ControlFlowNode for url | -| full_partial_test.py:71:18:71:24 | ControlFlowNode for request | full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | -| full_partial_test.py:75:5:75:7 | ControlFlowNode for url | full_partial_test.py:76:18:76:20 | ControlFlowNode for url | -| full_partial_test.py:78:5:78:7 | ControlFlowNode for url | full_partial_test.py:79:18:79:20 | ControlFlowNode for url | -| full_partial_test.py:81:5:81:7 | ControlFlowNode for url | full_partial_test.py:82:18:82:20 | ControlFlowNode for url | -| test_http_client.py:1:26:1:32 | ControlFlowNode for ImportMember | test_http_client.py:1:26:1:32 | ControlFlowNode for request | -| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:9:19:9:25 | ControlFlowNode for request | -| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:10:19:10:25 | ControlFlowNode for request | -| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:13:27:13:37 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:18:27:18:37 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:25:27:25:37 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:14:25:14:35 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:19:25:19:35 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:29:25:29:35 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:19:10:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | -| test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:1:19:1:25 | ControlFlowNode for request | -| test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:6:18:6:24 | ControlFlowNode for request | -| test_requests.py:6:5:6:14 | ControlFlowNode for user_input | test_requests.py:8:18:8:27 | ControlFlowNode for user_input | -| test_requests.py:6:18:6:24 | ControlFlowNode for request | test_requests.py:6:5:6:14 | ControlFlowNode for user_input | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for ImportMember | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:7:18:7:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:37:18:37:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:57:18:57:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:71:18:71:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:10:18:10:27 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:12:5:12:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:18:5:18:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:22:5:22:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:7:18:7:24 | ControlFlowNode for request | full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:12:5:12:7 | ControlFlowNode for url | full_partial_test.py:13:18:13:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:18:5:18:7 | ControlFlowNode for url | full_partial_test.py:19:18:19:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:22:5:22:7 | ControlFlowNode for url | full_partial_test.py:23:18:23:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:41:5:41:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:44:5:44:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:47:5:47:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:50:5:50:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:53:5:53:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:18:37:24 | ControlFlowNode for request | full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:41:5:41:7 | ControlFlowNode for url | full_partial_test.py:42:18:42:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:44:5:44:7 | ControlFlowNode for url | full_partial_test.py:45:18:45:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:47:5:47:7 | ControlFlowNode for url | full_partial_test.py:48:18:48:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:50:5:50:7 | ControlFlowNode for url | full_partial_test.py:51:18:51:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:53:5:53:7 | ControlFlowNode for url | full_partial_test.py:54:18:54:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:61:5:61:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:64:5:64:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:57:18:57:24 | ControlFlowNode for request | full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:61:5:61:7 | ControlFlowNode for url | full_partial_test.py:62:18:62:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:64:5:64:7 | ControlFlowNode for url | full_partial_test.py:65:18:65:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:75:5:75:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:78:5:78:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:81:5:81:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:18:71:24 | ControlFlowNode for request | full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:75:5:75:7 | ControlFlowNode for url | full_partial_test.py:76:18:76:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:78:5:78:7 | ControlFlowNode for url | full_partial_test.py:79:18:79:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:81:5:81:7 | ControlFlowNode for url | full_partial_test.py:82:18:82:20 | ControlFlowNode for url | provenance | | +| test_http_client.py:1:26:1:32 | ControlFlowNode for ImportMember | test_http_client.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:9:19:9:25 | ControlFlowNode for request | provenance | | +| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:10:19:10:25 | ControlFlowNode for request | provenance | | +| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:13:27:13:37 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:18:27:18:37 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:25:27:25:37 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:14:25:14:35 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:19:25:19:35 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:29:25:29:35 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:19:10:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | provenance | | +| test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:6:18:6:24 | ControlFlowNode for request | provenance | | +| test_requests.py:6:5:6:14 | ControlFlowNode for user_input | test_requests.py:8:18:8:27 | ControlFlowNode for user_input | provenance | | +| test_requests.py:6:18:6:24 | ControlFlowNode for request | test_requests.py:6:5:6:14 | ControlFlowNode for user_input | provenance | | nodes | full_partial_test.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected index 1960ec4b80db..33f6bc363e42 100644 --- a/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected +++ b/python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/PartialServerSideRequestForgery.expected @@ -1,106 +1,106 @@ edges -| full_partial_test.py:1:19:1:25 | ControlFlowNode for ImportMember | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:7:18:7:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:8:17:8:23 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:37:18:37:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:38:17:38:23 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:57:18:57:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:58:17:58:23 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:71:18:71:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:72:17:72:23 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:86:18:86:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:92:18:92:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:98:18:98:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:104:18:104:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:110:18:110:24 | ControlFlowNode for request | -| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:119:18:119:24 | ControlFlowNode for request | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:10:18:10:27 | ControlFlowNode for user_input | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:12:5:12:7 | ControlFlowNode for url | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:18:5:18:7 | ControlFlowNode for url | -| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:22:5:22:7 | ControlFlowNode for url | -| full_partial_test.py:7:18:7:24 | ControlFlowNode for request | full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | -| full_partial_test.py:7:18:7:24 | ControlFlowNode for request | full_partial_test.py:8:5:8:13 | ControlFlowNode for query_val | -| full_partial_test.py:8:5:8:13 | ControlFlowNode for query_val | full_partial_test.py:22:5:22:7 | ControlFlowNode for url | -| full_partial_test.py:8:17:8:23 | ControlFlowNode for request | full_partial_test.py:8:5:8:13 | ControlFlowNode for query_val | -| full_partial_test.py:12:5:12:7 | ControlFlowNode for url | full_partial_test.py:13:18:13:20 | ControlFlowNode for url | -| full_partial_test.py:18:5:18:7 | ControlFlowNode for url | full_partial_test.py:19:18:19:20 | ControlFlowNode for url | -| full_partial_test.py:22:5:22:7 | ControlFlowNode for url | full_partial_test.py:23:18:23:20 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:41:5:41:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:44:5:44:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:47:5:47:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:50:5:50:7 | ControlFlowNode for url | -| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:53:5:53:7 | ControlFlowNode for url | -| full_partial_test.py:37:18:37:24 | ControlFlowNode for request | full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | -| full_partial_test.py:37:18:37:24 | ControlFlowNode for request | full_partial_test.py:38:5:38:13 | ControlFlowNode for query_val | -| full_partial_test.py:38:5:38:13 | ControlFlowNode for query_val | full_partial_test.py:47:5:47:7 | ControlFlowNode for url | -| full_partial_test.py:38:17:38:23 | ControlFlowNode for request | full_partial_test.py:38:5:38:13 | ControlFlowNode for query_val | -| full_partial_test.py:41:5:41:7 | ControlFlowNode for url | full_partial_test.py:42:18:42:20 | ControlFlowNode for url | -| full_partial_test.py:44:5:44:7 | ControlFlowNode for url | full_partial_test.py:45:18:45:20 | ControlFlowNode for url | -| full_partial_test.py:47:5:47:7 | ControlFlowNode for url | full_partial_test.py:48:18:48:20 | ControlFlowNode for url | -| full_partial_test.py:50:5:50:7 | ControlFlowNode for url | full_partial_test.py:51:18:51:20 | ControlFlowNode for url | -| full_partial_test.py:53:5:53:7 | ControlFlowNode for url | full_partial_test.py:54:18:54:20 | ControlFlowNode for url | -| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:61:5:61:7 | ControlFlowNode for url | -| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:64:5:64:7 | ControlFlowNode for url | -| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:67:5:67:7 | ControlFlowNode for url | -| full_partial_test.py:57:18:57:24 | ControlFlowNode for request | full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | -| full_partial_test.py:57:18:57:24 | ControlFlowNode for request | full_partial_test.py:58:5:58:13 | ControlFlowNode for query_val | -| full_partial_test.py:58:5:58:13 | ControlFlowNode for query_val | full_partial_test.py:67:5:67:7 | ControlFlowNode for url | -| full_partial_test.py:58:17:58:23 | ControlFlowNode for request | full_partial_test.py:58:5:58:13 | ControlFlowNode for query_val | -| full_partial_test.py:61:5:61:7 | ControlFlowNode for url | full_partial_test.py:62:18:62:20 | ControlFlowNode for url | -| full_partial_test.py:64:5:64:7 | ControlFlowNode for url | full_partial_test.py:65:18:65:20 | ControlFlowNode for url | -| full_partial_test.py:67:5:67:7 | ControlFlowNode for url | full_partial_test.py:68:18:68:20 | ControlFlowNode for url | -| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:75:5:75:7 | ControlFlowNode for url | -| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:78:5:78:7 | ControlFlowNode for url | -| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:81:5:81:7 | ControlFlowNode for url | -| full_partial_test.py:71:18:71:24 | ControlFlowNode for request | full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | -| full_partial_test.py:71:18:71:24 | ControlFlowNode for request | full_partial_test.py:72:5:72:13 | ControlFlowNode for query_val | -| full_partial_test.py:72:5:72:13 | ControlFlowNode for query_val | full_partial_test.py:81:5:81:7 | ControlFlowNode for url | -| full_partial_test.py:72:17:72:23 | ControlFlowNode for request | full_partial_test.py:72:5:72:13 | ControlFlowNode for query_val | -| full_partial_test.py:75:5:75:7 | ControlFlowNode for url | full_partial_test.py:76:18:76:20 | ControlFlowNode for url | -| full_partial_test.py:78:5:78:7 | ControlFlowNode for url | full_partial_test.py:79:18:79:20 | ControlFlowNode for url | -| full_partial_test.py:81:5:81:7 | ControlFlowNode for url | full_partial_test.py:82:18:82:20 | ControlFlowNode for url | -| full_partial_test.py:86:5:86:14 | ControlFlowNode for user_input | full_partial_test.py:88:5:88:7 | ControlFlowNode for url | -| full_partial_test.py:86:18:86:24 | ControlFlowNode for request | full_partial_test.py:86:5:86:14 | ControlFlowNode for user_input | -| full_partial_test.py:88:5:88:7 | ControlFlowNode for url | full_partial_test.py:89:18:89:20 | ControlFlowNode for url | -| full_partial_test.py:92:5:92:14 | ControlFlowNode for user_input | full_partial_test.py:94:5:94:7 | ControlFlowNode for url | -| full_partial_test.py:92:18:92:24 | ControlFlowNode for request | full_partial_test.py:92:5:92:14 | ControlFlowNode for user_input | -| full_partial_test.py:94:5:94:7 | ControlFlowNode for url | full_partial_test.py:95:18:95:20 | ControlFlowNode for url | -| full_partial_test.py:98:5:98:14 | ControlFlowNode for user_input | full_partial_test.py:100:5:100:7 | ControlFlowNode for url | -| full_partial_test.py:98:18:98:24 | ControlFlowNode for request | full_partial_test.py:98:5:98:14 | ControlFlowNode for user_input | -| full_partial_test.py:100:5:100:7 | ControlFlowNode for url | full_partial_test.py:101:18:101:20 | ControlFlowNode for url | -| full_partial_test.py:104:5:104:14 | ControlFlowNode for user_input | full_partial_test.py:106:5:106:7 | ControlFlowNode for url | -| full_partial_test.py:104:18:104:24 | ControlFlowNode for request | full_partial_test.py:104:5:104:14 | ControlFlowNode for user_input | -| full_partial_test.py:106:5:106:7 | ControlFlowNode for url | full_partial_test.py:107:18:107:20 | ControlFlowNode for url | -| full_partial_test.py:110:5:110:14 | ControlFlowNode for user_input | full_partial_test.py:115:5:115:7 | ControlFlowNode for url | -| full_partial_test.py:110:18:110:24 | ControlFlowNode for request | full_partial_test.py:110:5:110:14 | ControlFlowNode for user_input | -| full_partial_test.py:115:5:115:7 | ControlFlowNode for url | full_partial_test.py:116:18:116:20 | ControlFlowNode for url | -| full_partial_test.py:119:5:119:14 | ControlFlowNode for user_input | full_partial_test.py:121:5:121:7 | ControlFlowNode for url | -| full_partial_test.py:119:18:119:24 | ControlFlowNode for request | full_partial_test.py:119:5:119:14 | ControlFlowNode for user_input | -| full_partial_test.py:121:5:121:7 | ControlFlowNode for url | full_partial_test.py:122:18:122:20 | ControlFlowNode for url | -| test_http_client.py:1:26:1:32 | ControlFlowNode for ImportMember | test_http_client.py:1:26:1:32 | ControlFlowNode for request | -| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:9:19:9:25 | ControlFlowNode for request | -| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:10:19:10:25 | ControlFlowNode for request | -| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:11:18:11:24 | ControlFlowNode for request | -| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:13:27:13:37 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:18:27:18:37 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:25:27:25:37 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | -| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | -| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | -| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:14:25:14:35 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:19:25:19:35 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:29:25:29:35 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:19:10:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | -| test_http_client.py:10:19:10:25 | ControlFlowNode for request | test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | -| test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | test_http_client.py:31:5:31:8 | ControlFlowNode for path | -| test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | test_http_client.py:35:5:35:8 | ControlFlowNode for path | -| test_http_client.py:11:18:11:24 | ControlFlowNode for request | test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | -| test_http_client.py:31:5:31:8 | ControlFlowNode for path | test_http_client.py:33:25:33:28 | ControlFlowNode for path | -| test_http_client.py:35:5:35:8 | ControlFlowNode for path | test_http_client.py:37:25:37:28 | ControlFlowNode for path | -| test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:1:19:1:25 | ControlFlowNode for request | -| test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:6:18:6:24 | ControlFlowNode for request | -| test_requests.py:6:5:6:14 | ControlFlowNode for user_input | test_requests.py:8:18:8:27 | ControlFlowNode for user_input | -| test_requests.py:6:18:6:24 | ControlFlowNode for request | test_requests.py:6:5:6:14 | ControlFlowNode for user_input | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for ImportMember | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:7:18:7:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:8:17:8:23 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:37:18:37:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:38:17:38:23 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:57:18:57:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:58:17:58:23 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:71:18:71:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:72:17:72:23 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:86:18:86:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:92:18:92:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:98:18:98:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:104:18:104:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:110:18:110:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:1:19:1:25 | ControlFlowNode for request | full_partial_test.py:119:18:119:24 | ControlFlowNode for request | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:10:18:10:27 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:12:5:12:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:18:5:18:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | full_partial_test.py:22:5:22:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:7:18:7:24 | ControlFlowNode for request | full_partial_test.py:7:5:7:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:7:18:7:24 | ControlFlowNode for request | full_partial_test.py:8:5:8:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:8:5:8:13 | ControlFlowNode for query_val | full_partial_test.py:22:5:22:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:8:17:8:23 | ControlFlowNode for request | full_partial_test.py:8:5:8:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:12:5:12:7 | ControlFlowNode for url | full_partial_test.py:13:18:13:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:18:5:18:7 | ControlFlowNode for url | full_partial_test.py:19:18:19:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:22:5:22:7 | ControlFlowNode for url | full_partial_test.py:23:18:23:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:41:5:41:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:44:5:44:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:47:5:47:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:50:5:50:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | full_partial_test.py:53:5:53:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:37:18:37:24 | ControlFlowNode for request | full_partial_test.py:37:5:37:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:37:18:37:24 | ControlFlowNode for request | full_partial_test.py:38:5:38:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:38:5:38:13 | ControlFlowNode for query_val | full_partial_test.py:47:5:47:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:38:17:38:23 | ControlFlowNode for request | full_partial_test.py:38:5:38:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:41:5:41:7 | ControlFlowNode for url | full_partial_test.py:42:18:42:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:44:5:44:7 | ControlFlowNode for url | full_partial_test.py:45:18:45:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:47:5:47:7 | ControlFlowNode for url | full_partial_test.py:48:18:48:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:50:5:50:7 | ControlFlowNode for url | full_partial_test.py:51:18:51:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:53:5:53:7 | ControlFlowNode for url | full_partial_test.py:54:18:54:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:61:5:61:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:64:5:64:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | full_partial_test.py:67:5:67:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:57:18:57:24 | ControlFlowNode for request | full_partial_test.py:57:5:57:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:57:18:57:24 | ControlFlowNode for request | full_partial_test.py:58:5:58:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:58:5:58:13 | ControlFlowNode for query_val | full_partial_test.py:67:5:67:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:58:17:58:23 | ControlFlowNode for request | full_partial_test.py:58:5:58:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:61:5:61:7 | ControlFlowNode for url | full_partial_test.py:62:18:62:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:64:5:64:7 | ControlFlowNode for url | full_partial_test.py:65:18:65:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:67:5:67:7 | ControlFlowNode for url | full_partial_test.py:68:18:68:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:75:5:75:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:78:5:78:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | full_partial_test.py:81:5:81:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:71:18:71:24 | ControlFlowNode for request | full_partial_test.py:71:5:71:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:71:18:71:24 | ControlFlowNode for request | full_partial_test.py:72:5:72:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:72:5:72:13 | ControlFlowNode for query_val | full_partial_test.py:81:5:81:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:72:17:72:23 | ControlFlowNode for request | full_partial_test.py:72:5:72:13 | ControlFlowNode for query_val | provenance | | +| full_partial_test.py:75:5:75:7 | ControlFlowNode for url | full_partial_test.py:76:18:76:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:78:5:78:7 | ControlFlowNode for url | full_partial_test.py:79:18:79:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:81:5:81:7 | ControlFlowNode for url | full_partial_test.py:82:18:82:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:86:5:86:14 | ControlFlowNode for user_input | full_partial_test.py:88:5:88:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:86:18:86:24 | ControlFlowNode for request | full_partial_test.py:86:5:86:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:88:5:88:7 | ControlFlowNode for url | full_partial_test.py:89:18:89:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:92:5:92:14 | ControlFlowNode for user_input | full_partial_test.py:94:5:94:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:92:18:92:24 | ControlFlowNode for request | full_partial_test.py:92:5:92:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:94:5:94:7 | ControlFlowNode for url | full_partial_test.py:95:18:95:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:98:5:98:14 | ControlFlowNode for user_input | full_partial_test.py:100:5:100:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:98:18:98:24 | ControlFlowNode for request | full_partial_test.py:98:5:98:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:100:5:100:7 | ControlFlowNode for url | full_partial_test.py:101:18:101:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:104:5:104:14 | ControlFlowNode for user_input | full_partial_test.py:106:5:106:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:104:18:104:24 | ControlFlowNode for request | full_partial_test.py:104:5:104:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:106:5:106:7 | ControlFlowNode for url | full_partial_test.py:107:18:107:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:110:5:110:14 | ControlFlowNode for user_input | full_partial_test.py:115:5:115:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:110:18:110:24 | ControlFlowNode for request | full_partial_test.py:110:5:110:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:115:5:115:7 | ControlFlowNode for url | full_partial_test.py:116:18:116:20 | ControlFlowNode for url | provenance | | +| full_partial_test.py:119:5:119:14 | ControlFlowNode for user_input | full_partial_test.py:121:5:121:7 | ControlFlowNode for url | provenance | | +| full_partial_test.py:119:18:119:24 | ControlFlowNode for request | full_partial_test.py:119:5:119:14 | ControlFlowNode for user_input | provenance | | +| full_partial_test.py:121:5:121:7 | ControlFlowNode for url | full_partial_test.py:122:18:122:20 | ControlFlowNode for url | provenance | | +| test_http_client.py:1:26:1:32 | ControlFlowNode for ImportMember | test_http_client.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:9:19:9:25 | ControlFlowNode for request | provenance | | +| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:10:19:10:25 | ControlFlowNode for request | provenance | | +| test_http_client.py:1:26:1:32 | ControlFlowNode for request | test_http_client.py:11:18:11:24 | ControlFlowNode for request | provenance | | +| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:13:27:13:37 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:18:27:18:37 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | test_http_client.py:25:27:25:37 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:9:5:9:15 | ControlFlowNode for unsafe_host | provenance | | +| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:9:19:9:25 | ControlFlowNode for request | test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | provenance | | +| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:14:25:14:35 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:19:25:19:35 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | test_http_client.py:29:25:29:35 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:19:10:25 | ControlFlowNode for request | test_http_client.py:10:5:10:15 | ControlFlowNode for unsafe_path | provenance | | +| test_http_client.py:10:19:10:25 | ControlFlowNode for request | test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | provenance | | +| test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | test_http_client.py:31:5:31:8 | ControlFlowNode for path | provenance | | +| test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | test_http_client.py:35:5:35:8 | ControlFlowNode for path | provenance | | +| test_http_client.py:11:18:11:24 | ControlFlowNode for request | test_http_client.py:11:5:11:14 | ControlFlowNode for user_input | provenance | | +| test_http_client.py:31:5:31:8 | ControlFlowNode for path | test_http_client.py:33:25:33:28 | ControlFlowNode for path | provenance | | +| test_http_client.py:35:5:35:8 | ControlFlowNode for path | test_http_client.py:37:25:37:28 | ControlFlowNode for path | provenance | | +| test_requests.py:1:19:1:25 | ControlFlowNode for ImportMember | test_requests.py:1:19:1:25 | ControlFlowNode for request | provenance | | +| test_requests.py:1:19:1:25 | ControlFlowNode for request | test_requests.py:6:18:6:24 | ControlFlowNode for request | provenance | | +| test_requests.py:6:5:6:14 | ControlFlowNode for user_input | test_requests.py:8:18:8:27 | ControlFlowNode for user_input | provenance | | +| test_requests.py:6:18:6:24 | ControlFlowNode for request | test_requests.py:6:5:6:14 | ControlFlowNode for user_input | provenance | | nodes | full_partial_test.py:1:19:1:25 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | full_partial_test.py:1:19:1:25 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/python/ql/test/query-tests/Security/CWE-943-NoSqlInjection/NoSqlInjection.expected b/python/ql/test/query-tests/Security/CWE-943-NoSqlInjection/NoSqlInjection.expected index e10f3312dd2f..9604e8b92c6d 100644 --- a/python/ql/test/query-tests/Security/CWE-943-NoSqlInjection/NoSqlInjection.expected +++ b/python/ql/test/query-tests/Security/CWE-943-NoSqlInjection/NoSqlInjection.expected @@ -1,121 +1,121 @@ edges -| PoC/server.py:1:26:1:32 | ControlFlowNode for ImportMember | PoC/server.py:1:26:1:32 | ControlFlowNode for request | -| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:26:21:26:27 | ControlFlowNode for request | -| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:43:14:43:20 | ControlFlowNode for request | -| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:52:14:52:20 | ControlFlowNode for request | -| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:77:14:77:20 | ControlFlowNode for request | -| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:98:14:98:20 | ControlFlowNode for request | -| PoC/server.py:26:5:26:17 | ControlFlowNode for author_string | PoC/server.py:27:25:27:37 | ControlFlowNode for author_string | -| PoC/server.py:26:21:26:27 | ControlFlowNode for request | PoC/server.py:26:5:26:17 | ControlFlowNode for author_string | -| PoC/server.py:27:5:27:10 | ControlFlowNode for author | PoC/server.py:30:27:30:44 | ControlFlowNode for Dict | -| PoC/server.py:27:5:27:10 | ControlFlowNode for author | PoC/server.py:31:34:31:51 | ControlFlowNode for Dict | -| PoC/server.py:27:14:27:38 | ControlFlowNode for Attribute() | PoC/server.py:27:5:27:10 | ControlFlowNode for author | -| PoC/server.py:27:25:27:37 | ControlFlowNode for author_string | PoC/server.py:27:14:27:38 | ControlFlowNode for Attribute() | -| PoC/server.py:43:5:43:10 | ControlFlowNode for author | PoC/server.py:47:38:47:67 | ControlFlowNode for BinaryExpr | -| PoC/server.py:43:14:43:20 | ControlFlowNode for request | PoC/server.py:43:5:43:10 | ControlFlowNode for author | -| PoC/server.py:47:38:47:67 | ControlFlowNode for BinaryExpr | PoC/server.py:47:27:47:68 | ControlFlowNode for Dict | -| PoC/server.py:52:5:52:10 | ControlFlowNode for author | PoC/server.py:54:17:54:70 | ControlFlowNode for BinaryExpr | -| PoC/server.py:52:14:52:20 | ControlFlowNode for request | PoC/server.py:52:5:52:10 | ControlFlowNode for author | -| PoC/server.py:53:5:53:10 | ControlFlowNode for search | PoC/server.py:61:27:61:58 | ControlFlowNode for Dict | -| PoC/server.py:53:14:57:5 | ControlFlowNode for Dict | PoC/server.py:53:5:53:10 | ControlFlowNode for search | -| PoC/server.py:54:17:54:70 | ControlFlowNode for BinaryExpr | PoC/server.py:53:14:57:5 | ControlFlowNode for Dict | -| PoC/server.py:77:5:77:10 | ControlFlowNode for author | PoC/server.py:80:23:80:101 | ControlFlowNode for BinaryExpr | -| PoC/server.py:77:14:77:20 | ControlFlowNode for request | PoC/server.py:77:5:77:10 | ControlFlowNode for author | -| PoC/server.py:78:5:78:15 | ControlFlowNode for accumulator | PoC/server.py:84:5:84:9 | ControlFlowNode for group | -| PoC/server.py:78:19:83:5 | ControlFlowNode for Dict | PoC/server.py:78:5:78:15 | ControlFlowNode for accumulator | -| PoC/server.py:80:23:80:101 | ControlFlowNode for BinaryExpr | PoC/server.py:78:19:83:5 | ControlFlowNode for Dict | -| PoC/server.py:84:5:84:9 | ControlFlowNode for group | PoC/server.py:91:29:91:47 | ControlFlowNode for Dict | -| PoC/server.py:84:5:84:9 | ControlFlowNode for group | PoC/server.py:92:38:92:56 | ControlFlowNode for Dict | -| PoC/server.py:98:5:98:10 | ControlFlowNode for author | PoC/server.py:99:5:99:10 | ControlFlowNode for mapper | -| PoC/server.py:98:14:98:20 | ControlFlowNode for request | PoC/server.py:98:5:98:10 | ControlFlowNode for author | -| PoC/server.py:99:5:99:10 | ControlFlowNode for mapper | PoC/server.py:102:9:102:14 | ControlFlowNode for mapper | -| flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | -| flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | flask_mongoengine_bad.py:19:21:19:27 | ControlFlowNode for request | -| flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | flask_mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | -| flask_mongoengine_bad.py:19:5:19:17 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:20:30:20:42 | ControlFlowNode for unsafe_search | -| flask_mongoengine_bad.py:19:21:19:27 | ControlFlowNode for request | flask_mongoengine_bad.py:19:5:19:17 | ControlFlowNode for unsafe_search | -| flask_mongoengine_bad.py:20:5:20:15 | ControlFlowNode for json_search | flask_mongoengine_bad.py:22:34:22:44 | ControlFlowNode for json_search | -| flask_mongoengine_bad.py:20:19:20:43 | ControlFlowNode for Attribute() | flask_mongoengine_bad.py:20:5:20:15 | ControlFlowNode for json_search | -| flask_mongoengine_bad.py:20:30:20:42 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:20:19:20:43 | ControlFlowNode for Attribute() | -| flask_mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | -| flask_mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | flask_mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | -| flask_mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | flask_mongoengine_bad.py:30:39:30:59 | ControlFlowNode for Dict | -| flask_mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | flask_mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | -| flask_mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | -| flask_pymongo_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_pymongo_bad.py:1:26:1:32 | ControlFlowNode for request | -| flask_pymongo_bad.py:1:26:1:32 | ControlFlowNode for request | flask_pymongo_bad.py:11:21:11:27 | ControlFlowNode for request | -| flask_pymongo_bad.py:11:5:11:17 | ControlFlowNode for unsafe_search | flask_pymongo_bad.py:12:30:12:42 | ControlFlowNode for unsafe_search | -| flask_pymongo_bad.py:11:21:11:27 | ControlFlowNode for request | flask_pymongo_bad.py:11:5:11:17 | ControlFlowNode for unsafe_search | -| flask_pymongo_bad.py:12:5:12:15 | ControlFlowNode for json_search | flask_pymongo_bad.py:14:31:14:51 | ControlFlowNode for Dict | -| flask_pymongo_bad.py:12:19:12:43 | ControlFlowNode for Attribute() | flask_pymongo_bad.py:12:5:12:15 | ControlFlowNode for json_search | -| flask_pymongo_bad.py:12:30:12:42 | ControlFlowNode for unsafe_search | flask_pymongo_bad.py:12:19:12:43 | ControlFlowNode for Attribute() | -| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | -| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:18:21:18:27 | ControlFlowNode for request | -| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | -| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:34:21:34:27 | ControlFlowNode for request | -| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:42:21:42:27 | ControlFlowNode for request | -| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:50:21:50:27 | ControlFlowNode for request | -| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:57:21:57:27 | ControlFlowNode for request | -| mongoengine_bad.py:18:5:18:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:19:30:19:42 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:18:21:18:27 | ControlFlowNode for request | mongoengine_bad.py:18:5:18:17 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:19:5:19:15 | ControlFlowNode for json_search | mongoengine_bad.py:22:26:22:46 | ControlFlowNode for Dict | -| mongoengine_bad.py:19:19:19:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:19:5:19:15 | ControlFlowNode for json_search | -| mongoengine_bad.py:19:30:19:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:19:19:19:43 | ControlFlowNode for Attribute() | -| mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | mongoengine_bad.py:30:26:30:46 | ControlFlowNode for Dict | -| mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | -| mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | -| mongoengine_bad.py:34:5:34:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:35:30:35:42 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:34:21:34:27 | ControlFlowNode for request | mongoengine_bad.py:34:5:34:17 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:35:5:35:15 | ControlFlowNode for json_search | mongoengine_bad.py:38:26:38:46 | ControlFlowNode for Dict | -| mongoengine_bad.py:35:19:35:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:35:5:35:15 | ControlFlowNode for json_search | -| mongoengine_bad.py:35:30:35:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:35:19:35:43 | ControlFlowNode for Attribute() | -| mongoengine_bad.py:42:5:42:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:43:30:43:42 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:42:21:42:27 | ControlFlowNode for request | mongoengine_bad.py:42:5:42:17 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:43:5:43:15 | ControlFlowNode for json_search | mongoengine_bad.py:46:26:46:46 | ControlFlowNode for Dict | -| mongoengine_bad.py:43:19:43:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:43:5:43:15 | ControlFlowNode for json_search | -| mongoengine_bad.py:43:30:43:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:43:19:43:43 | ControlFlowNode for Attribute() | -| mongoengine_bad.py:50:5:50:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:51:30:51:42 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:50:21:50:27 | ControlFlowNode for request | mongoengine_bad.py:50:5:50:17 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:51:5:51:15 | ControlFlowNode for json_search | mongoengine_bad.py:53:34:53:44 | ControlFlowNode for json_search | -| mongoengine_bad.py:51:19:51:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:51:5:51:15 | ControlFlowNode for json_search | -| mongoengine_bad.py:51:30:51:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:51:19:51:43 | ControlFlowNode for Attribute() | -| mongoengine_bad.py:57:5:57:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:58:30:58:42 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:57:21:57:27 | ControlFlowNode for request | mongoengine_bad.py:57:5:57:17 | ControlFlowNode for unsafe_search | -| mongoengine_bad.py:58:5:58:15 | ControlFlowNode for json_search | mongoengine_bad.py:61:29:61:49 | ControlFlowNode for Dict | -| mongoengine_bad.py:58:19:58:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:58:5:58:15 | ControlFlowNode for json_search | -| mongoengine_bad.py:58:30:58:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:58:19:58:43 | ControlFlowNode for Attribute() | -| pymongo_test.py:1:26:1:32 | ControlFlowNode for ImportMember | pymongo_test.py:1:26:1:32 | ControlFlowNode for request | -| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:12:21:12:27 | ControlFlowNode for request | -| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:29:27:29:33 | ControlFlowNode for request | -| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:39:27:39:33 | ControlFlowNode for request | -| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:52:26:52:32 | ControlFlowNode for request | -| pymongo_test.py:12:5:12:17 | ControlFlowNode for unsafe_search | pymongo_test.py:13:30:13:42 | ControlFlowNode for unsafe_search | -| pymongo_test.py:12:21:12:27 | ControlFlowNode for request | pymongo_test.py:12:5:12:17 | ControlFlowNode for unsafe_search | -| pymongo_test.py:13:5:13:15 | ControlFlowNode for json_search | pymongo_test.py:15:42:15:62 | ControlFlowNode for Dict | -| pymongo_test.py:13:19:13:43 | ControlFlowNode for Attribute() | pymongo_test.py:13:5:13:15 | ControlFlowNode for json_search | -| pymongo_test.py:13:30:13:42 | ControlFlowNode for unsafe_search | pymongo_test.py:13:19:13:43 | ControlFlowNode for Attribute() | -| pymongo_test.py:29:5:29:12 | ControlFlowNode for event_id | pymongo_test.py:33:45:33:72 | ControlFlowNode for Fstring | -| pymongo_test.py:29:16:29:51 | ControlFlowNode for Attribute() | pymongo_test.py:29:5:29:12 | ControlFlowNode for event_id | -| pymongo_test.py:29:27:29:33 | ControlFlowNode for request | pymongo_test.py:29:27:29:50 | ControlFlowNode for Subscript | -| pymongo_test.py:29:27:29:50 | ControlFlowNode for Subscript | pymongo_test.py:29:16:29:51 | ControlFlowNode for Attribute() | -| pymongo_test.py:33:45:33:72 | ControlFlowNode for Fstring | pymongo_test.py:33:34:33:73 | ControlFlowNode for Dict | -| pymongo_test.py:39:5:39:12 | ControlFlowNode for event_id | pymongo_test.py:43:45:43:72 | ControlFlowNode for Fstring | -| pymongo_test.py:39:16:39:51 | ControlFlowNode for Attribute() | pymongo_test.py:39:5:39:12 | ControlFlowNode for event_id | -| pymongo_test.py:39:27:39:33 | ControlFlowNode for request | pymongo_test.py:39:27:39:50 | ControlFlowNode for Subscript | -| pymongo_test.py:39:27:39:50 | ControlFlowNode for Subscript | pymongo_test.py:39:16:39:51 | ControlFlowNode for Attribute() | -| pymongo_test.py:43:45:43:72 | ControlFlowNode for Fstring | pymongo_test.py:43:34:43:73 | ControlFlowNode for Dict | -| pymongo_test.py:52:5:52:11 | ControlFlowNode for decoded | pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | -| pymongo_test.py:52:15:52:50 | ControlFlowNode for Attribute() | pymongo_test.py:52:5:52:11 | ControlFlowNode for decoded | -| pymongo_test.py:52:26:52:32 | ControlFlowNode for request | pymongo_test.py:52:26:52:49 | ControlFlowNode for Subscript | -| pymongo_test.py:52:26:52:49 | ControlFlowNode for Subscript | pymongo_test.py:52:15:52:50 | ControlFlowNode for Attribute() | -| pymongo_test.py:54:5:54:10 | ControlFlowNode for search | pymongo_test.py:59:25:59:56 | ControlFlowNode for Dict | -| pymongo_test.py:54:14:58:5 | ControlFlowNode for Dict | pymongo_test.py:54:5:54:10 | ControlFlowNode for search | -| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:54:14:58:5 | ControlFlowNode for Dict | -| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:61:25:61:57 | ControlFlowNode for Dict | -| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:62:25:62:42 | ControlFlowNode for Dict | -| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:63:25:63:31 | ControlFlowNode for decoded | +| PoC/server.py:1:26:1:32 | ControlFlowNode for ImportMember | PoC/server.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:26:21:26:27 | ControlFlowNode for request | provenance | | +| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:43:14:43:20 | ControlFlowNode for request | provenance | | +| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:52:14:52:20 | ControlFlowNode for request | provenance | | +| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:77:14:77:20 | ControlFlowNode for request | provenance | | +| PoC/server.py:1:26:1:32 | ControlFlowNode for request | PoC/server.py:98:14:98:20 | ControlFlowNode for request | provenance | | +| PoC/server.py:26:5:26:17 | ControlFlowNode for author_string | PoC/server.py:27:25:27:37 | ControlFlowNode for author_string | provenance | | +| PoC/server.py:26:21:26:27 | ControlFlowNode for request | PoC/server.py:26:5:26:17 | ControlFlowNode for author_string | provenance | | +| PoC/server.py:27:5:27:10 | ControlFlowNode for author | PoC/server.py:30:27:30:44 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:27:5:27:10 | ControlFlowNode for author | PoC/server.py:31:34:31:51 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:27:14:27:38 | ControlFlowNode for Attribute() | PoC/server.py:27:5:27:10 | ControlFlowNode for author | provenance | | +| PoC/server.py:27:25:27:37 | ControlFlowNode for author_string | PoC/server.py:27:14:27:38 | ControlFlowNode for Attribute() | provenance | | +| PoC/server.py:43:5:43:10 | ControlFlowNode for author | PoC/server.py:47:38:47:67 | ControlFlowNode for BinaryExpr | provenance | | +| PoC/server.py:43:14:43:20 | ControlFlowNode for request | PoC/server.py:43:5:43:10 | ControlFlowNode for author | provenance | | +| PoC/server.py:47:38:47:67 | ControlFlowNode for BinaryExpr | PoC/server.py:47:27:47:68 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:52:5:52:10 | ControlFlowNode for author | PoC/server.py:54:17:54:70 | ControlFlowNode for BinaryExpr | provenance | | +| PoC/server.py:52:14:52:20 | ControlFlowNode for request | PoC/server.py:52:5:52:10 | ControlFlowNode for author | provenance | | +| PoC/server.py:53:5:53:10 | ControlFlowNode for search | PoC/server.py:61:27:61:58 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:53:14:57:5 | ControlFlowNode for Dict | PoC/server.py:53:5:53:10 | ControlFlowNode for search | provenance | | +| PoC/server.py:54:17:54:70 | ControlFlowNode for BinaryExpr | PoC/server.py:53:14:57:5 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:77:5:77:10 | ControlFlowNode for author | PoC/server.py:80:23:80:101 | ControlFlowNode for BinaryExpr | provenance | | +| PoC/server.py:77:14:77:20 | ControlFlowNode for request | PoC/server.py:77:5:77:10 | ControlFlowNode for author | provenance | | +| PoC/server.py:78:5:78:15 | ControlFlowNode for accumulator | PoC/server.py:84:5:84:9 | ControlFlowNode for group | provenance | | +| PoC/server.py:78:19:83:5 | ControlFlowNode for Dict | PoC/server.py:78:5:78:15 | ControlFlowNode for accumulator | provenance | | +| PoC/server.py:80:23:80:101 | ControlFlowNode for BinaryExpr | PoC/server.py:78:19:83:5 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:84:5:84:9 | ControlFlowNode for group | PoC/server.py:91:29:91:47 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:84:5:84:9 | ControlFlowNode for group | PoC/server.py:92:38:92:56 | ControlFlowNode for Dict | provenance | | +| PoC/server.py:98:5:98:10 | ControlFlowNode for author | PoC/server.py:99:5:99:10 | ControlFlowNode for mapper | provenance | | +| PoC/server.py:98:14:98:20 | ControlFlowNode for request | PoC/server.py:98:5:98:10 | ControlFlowNode for author | provenance | | +| PoC/server.py:99:5:99:10 | ControlFlowNode for mapper | PoC/server.py:102:9:102:14 | ControlFlowNode for mapper | provenance | | +| flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | flask_mongoengine_bad.py:19:21:19:27 | ControlFlowNode for request | provenance | | +| flask_mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | flask_mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | provenance | | +| flask_mongoengine_bad.py:19:5:19:17 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:20:30:20:42 | ControlFlowNode for unsafe_search | provenance | | +| flask_mongoengine_bad.py:19:21:19:27 | ControlFlowNode for request | flask_mongoengine_bad.py:19:5:19:17 | ControlFlowNode for unsafe_search | provenance | | +| flask_mongoengine_bad.py:20:5:20:15 | ControlFlowNode for json_search | flask_mongoengine_bad.py:22:34:22:44 | ControlFlowNode for json_search | provenance | | +| flask_mongoengine_bad.py:20:19:20:43 | ControlFlowNode for Attribute() | flask_mongoengine_bad.py:20:5:20:15 | ControlFlowNode for json_search | provenance | | +| flask_mongoengine_bad.py:20:30:20:42 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:20:19:20:43 | ControlFlowNode for Attribute() | provenance | | +| flask_mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | provenance | | +| flask_mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | flask_mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | provenance | | +| flask_mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | flask_mongoengine_bad.py:30:39:30:59 | ControlFlowNode for Dict | provenance | | +| flask_mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | flask_mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | provenance | | +| flask_mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | flask_mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | provenance | | +| flask_pymongo_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | flask_pymongo_bad.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| flask_pymongo_bad.py:1:26:1:32 | ControlFlowNode for request | flask_pymongo_bad.py:11:21:11:27 | ControlFlowNode for request | provenance | | +| flask_pymongo_bad.py:11:5:11:17 | ControlFlowNode for unsafe_search | flask_pymongo_bad.py:12:30:12:42 | ControlFlowNode for unsafe_search | provenance | | +| flask_pymongo_bad.py:11:21:11:27 | ControlFlowNode for request | flask_pymongo_bad.py:11:5:11:17 | ControlFlowNode for unsafe_search | provenance | | +| flask_pymongo_bad.py:12:5:12:15 | ControlFlowNode for json_search | flask_pymongo_bad.py:14:31:14:51 | ControlFlowNode for Dict | provenance | | +| flask_pymongo_bad.py:12:19:12:43 | ControlFlowNode for Attribute() | flask_pymongo_bad.py:12:5:12:15 | ControlFlowNode for json_search | provenance | | +| flask_pymongo_bad.py:12:30:12:42 | ControlFlowNode for unsafe_search | flask_pymongo_bad.py:12:19:12:43 | ControlFlowNode for Attribute() | provenance | | +| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for ImportMember | mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:18:21:18:27 | ControlFlowNode for request | provenance | | +| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | provenance | | +| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:34:21:34:27 | ControlFlowNode for request | provenance | | +| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:42:21:42:27 | ControlFlowNode for request | provenance | | +| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:50:21:50:27 | ControlFlowNode for request | provenance | | +| mongoengine_bad.py:1:26:1:32 | ControlFlowNode for request | mongoengine_bad.py:57:21:57:27 | ControlFlowNode for request | provenance | | +| mongoengine_bad.py:18:5:18:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:19:30:19:42 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:18:21:18:27 | ControlFlowNode for request | mongoengine_bad.py:18:5:18:17 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:19:5:19:15 | ControlFlowNode for json_search | mongoengine_bad.py:22:26:22:46 | ControlFlowNode for Dict | provenance | | +| mongoengine_bad.py:19:19:19:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:19:5:19:15 | ControlFlowNode for json_search | provenance | | +| mongoengine_bad.py:19:30:19:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:19:19:19:43 | ControlFlowNode for Attribute() | provenance | | +| mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:26:21:26:27 | ControlFlowNode for request | mongoengine_bad.py:26:5:26:17 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | mongoengine_bad.py:30:26:30:46 | ControlFlowNode for Dict | provenance | | +| mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:27:5:27:15 | ControlFlowNode for json_search | provenance | | +| mongoengine_bad.py:27:30:27:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:27:19:27:43 | ControlFlowNode for Attribute() | provenance | | +| mongoengine_bad.py:34:5:34:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:35:30:35:42 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:34:21:34:27 | ControlFlowNode for request | mongoengine_bad.py:34:5:34:17 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:35:5:35:15 | ControlFlowNode for json_search | mongoengine_bad.py:38:26:38:46 | ControlFlowNode for Dict | provenance | | +| mongoengine_bad.py:35:19:35:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:35:5:35:15 | ControlFlowNode for json_search | provenance | | +| mongoengine_bad.py:35:30:35:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:35:19:35:43 | ControlFlowNode for Attribute() | provenance | | +| mongoengine_bad.py:42:5:42:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:43:30:43:42 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:42:21:42:27 | ControlFlowNode for request | mongoengine_bad.py:42:5:42:17 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:43:5:43:15 | ControlFlowNode for json_search | mongoengine_bad.py:46:26:46:46 | ControlFlowNode for Dict | provenance | | +| mongoengine_bad.py:43:19:43:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:43:5:43:15 | ControlFlowNode for json_search | provenance | | +| mongoengine_bad.py:43:30:43:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:43:19:43:43 | ControlFlowNode for Attribute() | provenance | | +| mongoengine_bad.py:50:5:50:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:51:30:51:42 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:50:21:50:27 | ControlFlowNode for request | mongoengine_bad.py:50:5:50:17 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:51:5:51:15 | ControlFlowNode for json_search | mongoengine_bad.py:53:34:53:44 | ControlFlowNode for json_search | provenance | | +| mongoengine_bad.py:51:19:51:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:51:5:51:15 | ControlFlowNode for json_search | provenance | | +| mongoengine_bad.py:51:30:51:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:51:19:51:43 | ControlFlowNode for Attribute() | provenance | | +| mongoengine_bad.py:57:5:57:17 | ControlFlowNode for unsafe_search | mongoengine_bad.py:58:30:58:42 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:57:21:57:27 | ControlFlowNode for request | mongoengine_bad.py:57:5:57:17 | ControlFlowNode for unsafe_search | provenance | | +| mongoengine_bad.py:58:5:58:15 | ControlFlowNode for json_search | mongoengine_bad.py:61:29:61:49 | ControlFlowNode for Dict | provenance | | +| mongoengine_bad.py:58:19:58:43 | ControlFlowNode for Attribute() | mongoengine_bad.py:58:5:58:15 | ControlFlowNode for json_search | provenance | | +| mongoengine_bad.py:58:30:58:42 | ControlFlowNode for unsafe_search | mongoengine_bad.py:58:19:58:43 | ControlFlowNode for Attribute() | provenance | | +| pymongo_test.py:1:26:1:32 | ControlFlowNode for ImportMember | pymongo_test.py:1:26:1:32 | ControlFlowNode for request | provenance | | +| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:12:21:12:27 | ControlFlowNode for request | provenance | | +| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:29:27:29:33 | ControlFlowNode for request | provenance | | +| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:39:27:39:33 | ControlFlowNode for request | provenance | | +| pymongo_test.py:1:26:1:32 | ControlFlowNode for request | pymongo_test.py:52:26:52:32 | ControlFlowNode for request | provenance | | +| pymongo_test.py:12:5:12:17 | ControlFlowNode for unsafe_search | pymongo_test.py:13:30:13:42 | ControlFlowNode for unsafe_search | provenance | | +| pymongo_test.py:12:21:12:27 | ControlFlowNode for request | pymongo_test.py:12:5:12:17 | ControlFlowNode for unsafe_search | provenance | | +| pymongo_test.py:13:5:13:15 | ControlFlowNode for json_search | pymongo_test.py:15:42:15:62 | ControlFlowNode for Dict | provenance | | +| pymongo_test.py:13:19:13:43 | ControlFlowNode for Attribute() | pymongo_test.py:13:5:13:15 | ControlFlowNode for json_search | provenance | | +| pymongo_test.py:13:30:13:42 | ControlFlowNode for unsafe_search | pymongo_test.py:13:19:13:43 | ControlFlowNode for Attribute() | provenance | | +| pymongo_test.py:29:5:29:12 | ControlFlowNode for event_id | pymongo_test.py:33:45:33:72 | ControlFlowNode for Fstring | provenance | | +| pymongo_test.py:29:16:29:51 | ControlFlowNode for Attribute() | pymongo_test.py:29:5:29:12 | ControlFlowNode for event_id | provenance | | +| pymongo_test.py:29:27:29:33 | ControlFlowNode for request | pymongo_test.py:29:27:29:50 | ControlFlowNode for Subscript | provenance | | +| pymongo_test.py:29:27:29:50 | ControlFlowNode for Subscript | pymongo_test.py:29:16:29:51 | ControlFlowNode for Attribute() | provenance | | +| pymongo_test.py:33:45:33:72 | ControlFlowNode for Fstring | pymongo_test.py:33:34:33:73 | ControlFlowNode for Dict | provenance | | +| pymongo_test.py:39:5:39:12 | ControlFlowNode for event_id | pymongo_test.py:43:45:43:72 | ControlFlowNode for Fstring | provenance | | +| pymongo_test.py:39:16:39:51 | ControlFlowNode for Attribute() | pymongo_test.py:39:5:39:12 | ControlFlowNode for event_id | provenance | | +| pymongo_test.py:39:27:39:33 | ControlFlowNode for request | pymongo_test.py:39:27:39:50 | ControlFlowNode for Subscript | provenance | | +| pymongo_test.py:39:27:39:50 | ControlFlowNode for Subscript | pymongo_test.py:39:16:39:51 | ControlFlowNode for Attribute() | provenance | | +| pymongo_test.py:43:45:43:72 | ControlFlowNode for Fstring | pymongo_test.py:43:34:43:73 | ControlFlowNode for Dict | provenance | | +| pymongo_test.py:52:5:52:11 | ControlFlowNode for decoded | pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | provenance | | +| pymongo_test.py:52:15:52:50 | ControlFlowNode for Attribute() | pymongo_test.py:52:5:52:11 | ControlFlowNode for decoded | provenance | | +| pymongo_test.py:52:26:52:32 | ControlFlowNode for request | pymongo_test.py:52:26:52:49 | ControlFlowNode for Subscript | provenance | | +| pymongo_test.py:52:26:52:49 | ControlFlowNode for Subscript | pymongo_test.py:52:15:52:50 | ControlFlowNode for Attribute() | provenance | | +| pymongo_test.py:54:5:54:10 | ControlFlowNode for search | pymongo_test.py:59:25:59:56 | ControlFlowNode for Dict | provenance | | +| pymongo_test.py:54:14:58:5 | ControlFlowNode for Dict | pymongo_test.py:54:5:54:10 | ControlFlowNode for search | provenance | | +| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:54:14:58:5 | ControlFlowNode for Dict | provenance | | +| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:61:25:61:57 | ControlFlowNode for Dict | provenance | | +| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:62:25:62:42 | ControlFlowNode for Dict | provenance | | +| pymongo_test.py:55:17:55:23 | ControlFlowNode for decoded | pymongo_test.py:63:25:63:31 | ControlFlowNode for decoded | provenance | | nodes | PoC/server.py:1:26:1:32 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | PoC/server.py:1:26:1:32 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | diff --git a/ql/Cargo.lock b/ql/Cargo.lock index 211cfe14d7a7..6ea3f99faf5a 100644 --- a/ql/Cargo.lock +++ b/ql/Cargo.lock @@ -133,9 +133,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/ql/buramu/Cargo.toml b/ql/buramu/Cargo.toml index 78a6b0f962f4..d6cfae88bc99 100644 --- a/ql/buramu/Cargo.toml +++ b/ql/buramu/Cargo.toml @@ -7,6 +7,6 @@ edition = "2018" [dependencies] lazy_static = "1.4.0" -chrono = "0.4.33" +chrono = "0.4.34" rayon = "1.8.1" regex = "1.10.3" diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index ded1ba91246c..dca2a310c9f2 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -453,6 +453,10 @@ module VariableCapture { Flow::localFlowStep(asClosureNode(node1), asClosureNode(node2)) } + predicate clearsContent(Node node, Content::CapturedVariableContent c) { + Flow::clearsContent(asClosureNode(node), c.getVariable()) + } + class CapturedSsaDefinitionExt extends SsaImpl::DefinitionExt { CapturedSsaDefinitionExt() { this.getSourceVariable() instanceof CapturedVariable } } @@ -1930,6 +1934,8 @@ predicate clearsContent(Node n, ContentSet c) { c.isKnownOrUnknownElement(TKnownElementContent(cv)) and cv.isSymbol(name) ) + or + VariableCapture::clearsContent(n, any(Content::CapturedVariableContent v | c.isSingleton(v))) } /** diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll index e1a3607a43ea..8839c30b9497 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll @@ -143,23 +143,23 @@ private predicate hasCapturedRead(Variable v, Cfg::CfgScope scope) { } /** - * Holds if `v` is written inside basic block `bb`, which is in the immediate - * outer scope of `scope`. + * Holds if `v` is written inside basic block `bb` at index `i`, which is in + * the immediate outer scope of `scope`. */ pragma[noinline] -private predicate variableWriteInOuterScope(Cfg::BasicBlock bb, LocalVariable v, Cfg::CfgScope scope) { - SsaInput::variableWrite(bb, _, v, _) and +private predicate variableWriteInOuterScope( + Cfg::BasicBlock bb, int i, LocalVariable v, Cfg::CfgScope scope +) { + SsaInput::variableWrite(bb, i, v, _) and scope.getOuterCfgScope() = bb.getScope() } pragma[noinline] -private predicate proceedsVariableWriteWithCapturedRead( - Cfg::BasicBlock bb, LocalVariable v, Cfg::CfgScope scope +private predicate hasVariableWriteWithCapturedRead( + Cfg::BasicBlock bb, int i, LocalVariable v, Cfg::CfgScope scope ) { hasCapturedRead(v, scope) and - variableWriteInOuterScope(bb, v, scope) - or - proceedsVariableWriteWithCapturedRead(bb.getAPredecessor(), v, scope) + variableWriteInOuterScope(bb, i, v, scope) } /** @@ -168,7 +168,10 @@ private predicate proceedsVariableWriteWithCapturedRead( */ private predicate capturedCallRead(CallCfgNode call, Cfg::BasicBlock bb, int i, LocalVariable v) { exists(Cfg::CfgScope scope | - proceedsVariableWriteWithCapturedRead(bb, v, scope) and + ( + hasVariableWriteWithCapturedRead(bb, any(int j | j < i), v, scope) or + hasVariableWriteWithCapturedRead(bb.getAPredecessor+(), _, v, scope) + ) and call = bb.getNode(i) | // If the read happens inside a block, we restrict to the call that @@ -199,23 +202,23 @@ private predicate hasCapturedWrite(Variable v, Cfg::CfgScope scope) { } /** - * Holds if `v` is read inside basic block `bb`, which is in the immediate - * outer scope of `scope`. + * Holds if `v` is read inside basic block `bb` at index `i`, which is in the + * immediate outer scope of `scope`. */ pragma[noinline] private predicate variableReadActualInOuterScope( - Cfg::BasicBlock bb, LocalVariable v, Cfg::CfgScope scope + Cfg::BasicBlock bb, int i, LocalVariable v, Cfg::CfgScope scope ) { - variableReadActual(bb, _, v) and + variableReadActual(bb, i, v) and bb.getScope() = scope.getOuterCfgScope() } pragma[noinline] private predicate hasVariableReadWithCapturedWrite( - Cfg::BasicBlock bb, LocalVariable v, Cfg::CfgScope scope + Cfg::BasicBlock bb, int i, LocalVariable v, Cfg::CfgScope scope ) { hasCapturedWrite(v, scope) and - variableReadActualInOuterScope(bb, v, scope) + variableReadActualInOuterScope(bb, i, v, scope) } pragma[noinline] @@ -324,7 +327,11 @@ private module Cached { cached predicate capturedCallWrite(CallCfgNode call, Cfg::BasicBlock bb, int i, LocalVariable v) { exists(Cfg::CfgScope scope | - hasVariableReadWithCapturedWrite(bb.getASuccessor*(), v, scope) and + ( + hasVariableReadWithCapturedWrite(bb, any(int j | j > i), v, scope) + or + hasVariableReadWithCapturedWrite(bb.getASuccessor+(), _, v, scope) + ) and call = bb.getNode(i) | // If the write happens inside a block, we restrict to the call that diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index 7ac82dae1b32..be1df5066e1d 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -374,7 +374,8 @@ predicate controllerTemplateFile(ActionControllerClass cls, ErbFile templateFile controllerPath = getActionControllerClassRelativePath(cls) and // `sourcePrefix` is either a prefix path ending in a slash, or empty if // the rails app is at the source root - sourcePrefix = [controllerPath.regexpCapture("^(.*/)app/controllers/(?:.*?)/(?:[^/]*)$", 1), ""] and + sourcePrefix = + [controllerPath.regexpCapture("^(.*/)app/controllers/(?:[^/]+/)?(?:[^/]*)$", 1), ""] and controllerPath = sourcePrefix + "app/controllers/" + subPath + "_controller.rb" | sourcePrefix + "app/views/" + subPath = templateFile.getParentContainer().getRelativePath() diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll index 843eb4f8d6e5..4596c4320701 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll @@ -77,7 +77,11 @@ private predicate isUnlikelyExternalCall(API::MethodAccessNode node) { } private API::Node activeRecordConnectionInstance() { - result = activeRecordBaseClass().getReturn("connection") + result = + [ + activeRecordBaseClass().getReturn("connection"), + activeRecordBaseClass().getInstance().getReturn("connection") + ] } /** diff --git a/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected b/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected index f36cf514b893..046f19b454e3 100644 --- a/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected @@ -1,2125 +1,2125 @@ testFailures edges -| array_flow.rb:2:5:2:5 | a [element 0] | array_flow.rb:3:10:3:10 | a [element 0] | -| array_flow.rb:2:5:2:5 | a [element 0] | array_flow.rb:5:10:5:10 | a [element 0] | -| array_flow.rb:2:9:2:20 | * ... [element 0] | array_flow.rb:2:5:2:5 | a [element 0] | -| array_flow.rb:2:10:2:20 | call to source | array_flow.rb:2:9:2:20 | * ... [element 0] | -| array_flow.rb:3:10:3:10 | a [element 0] | array_flow.rb:3:10:3:13 | ...[...] | -| array_flow.rb:5:10:5:10 | a [element 0] | array_flow.rb:5:10:5:13 | ...[...] | -| array_flow.rb:9:5:9:5 | a [element 1] | array_flow.rb:11:10:11:10 | a [element 1] | -| array_flow.rb:9:5:9:5 | a [element 1] | array_flow.rb:13:10:13:10 | a [element 1] | -| array_flow.rb:9:13:9:21 | call to source | array_flow.rb:9:5:9:5 | a [element 1] | -| array_flow.rb:11:10:11:10 | a [element 1] | array_flow.rb:11:10:11:13 | ...[...] | -| array_flow.rb:13:10:13:10 | a [element 1] | array_flow.rb:13:10:13:13 | ...[...] | -| array_flow.rb:17:5:17:5 | a [element] | array_flow.rb:18:10:18:10 | a [element] | -| array_flow.rb:17:5:17:5 | a [element] | array_flow.rb:19:10:19:10 | a [element] | -| array_flow.rb:17:5:17:5 | a [element] | array_flow.rb:21:19:21:19 | a [element] | -| array_flow.rb:17:9:17:33 | call to new [element] | array_flow.rb:17:5:17:5 | a [element] | -| array_flow.rb:17:22:17:32 | call to source | array_flow.rb:17:9:17:33 | call to new [element] | -| array_flow.rb:18:10:18:10 | a [element] | array_flow.rb:18:10:18:13 | ...[...] | -| array_flow.rb:19:10:19:10 | a [element] | array_flow.rb:19:10:19:13 | ...[...] | -| array_flow.rb:21:5:21:5 | b [element] | array_flow.rb:22:10:22:10 | b [element] | -| array_flow.rb:21:5:21:5 | b [element] | array_flow.rb:23:10:23:10 | b [element] | -| array_flow.rb:21:9:21:20 | call to new [element] | array_flow.rb:21:5:21:5 | b [element] | -| array_flow.rb:21:19:21:19 | a [element] | array_flow.rb:21:9:21:20 | call to new [element] | -| array_flow.rb:22:10:22:10 | b [element] | array_flow.rb:22:10:22:13 | ...[...] | -| array_flow.rb:23:10:23:10 | b [element] | array_flow.rb:23:10:23:13 | ...[...] | -| array_flow.rb:25:5:25:5 | c [element] | array_flow.rb:28:10:28:10 | c [element] | -| array_flow.rb:25:5:25:5 | c [element] | array_flow.rb:29:10:29:10 | c [element] | -| array_flow.rb:25:9:27:7 | call to new [element] | array_flow.rb:25:5:25:5 | c [element] | -| array_flow.rb:26:9:26:19 | call to source | array_flow.rb:25:9:27:7 | call to new [element] | -| array_flow.rb:28:10:28:10 | c [element] | array_flow.rb:28:10:28:13 | ...[...] | -| array_flow.rb:29:10:29:10 | c [element] | array_flow.rb:29:10:29:13 | ...[...] | -| array_flow.rb:33:5:33:5 | a [element 0] | array_flow.rb:34:27:34:27 | a [element 0] | -| array_flow.rb:33:10:33:18 | call to source | array_flow.rb:33:5:33:5 | a [element 0] | -| array_flow.rb:34:5:34:5 | b [element 0] | array_flow.rb:35:10:35:10 | b [element 0] | -| array_flow.rb:34:9:34:28 | call to try_convert [element 0] | array_flow.rb:34:5:34:5 | b [element 0] | -| array_flow.rb:34:27:34:27 | a [element 0] | array_flow.rb:34:9:34:28 | call to try_convert [element 0] | -| array_flow.rb:35:10:35:10 | b [element 0] | array_flow.rb:35:10:35:13 | ...[...] | -| array_flow.rb:40:5:40:5 | a [element 0] | array_flow.rb:42:9:42:9 | a [element 0] | -| array_flow.rb:40:10:40:20 | call to source | array_flow.rb:40:5:40:5 | a [element 0] | -| array_flow.rb:41:5:41:5 | b [element 2] | array_flow.rb:42:13:42:13 | b [element 2] | -| array_flow.rb:41:16:41:26 | call to source | array_flow.rb:41:5:41:5 | b [element 2] | -| array_flow.rb:42:5:42:5 | c [element] | array_flow.rb:43:10:43:10 | c [element] | -| array_flow.rb:42:5:42:5 | c [element] | array_flow.rb:44:10:44:10 | c [element] | -| array_flow.rb:42:9:42:9 | a [element 0] | array_flow.rb:42:9:42:13 | ... & ... [element] | -| array_flow.rb:42:9:42:13 | ... & ... [element] | array_flow.rb:42:5:42:5 | c [element] | -| array_flow.rb:42:13:42:13 | b [element 2] | array_flow.rb:42:9:42:13 | ... & ... [element] | -| array_flow.rb:43:10:43:10 | c [element] | array_flow.rb:43:10:43:13 | ...[...] | -| array_flow.rb:44:10:44:10 | c [element] | array_flow.rb:44:10:44:13 | ...[...] | -| array_flow.rb:48:5:48:5 | a [element 0] | array_flow.rb:49:9:49:9 | a [element 0] | -| array_flow.rb:48:10:48:18 | call to source | array_flow.rb:48:5:48:5 | a [element 0] | -| array_flow.rb:49:5:49:5 | b [element] | array_flow.rb:50:10:50:10 | b [element] | -| array_flow.rb:49:5:49:5 | b [element] | array_flow.rb:51:10:51:10 | b [element] | -| array_flow.rb:49:9:49:9 | a [element 0] | array_flow.rb:49:9:49:13 | ... * ... [element] | -| array_flow.rb:49:9:49:13 | ... * ... [element] | array_flow.rb:49:5:49:5 | b [element] | -| array_flow.rb:50:10:50:10 | b [element] | array_flow.rb:50:10:50:13 | ...[...] | -| array_flow.rb:51:10:51:10 | b [element] | array_flow.rb:51:10:51:13 | ...[...] | -| array_flow.rb:55:5:55:5 | a [element 0] | array_flow.rb:57:9:57:9 | a [element 0] | -| array_flow.rb:55:10:55:20 | call to source | array_flow.rb:55:5:55:5 | a [element 0] | -| array_flow.rb:56:5:56:5 | b [element 1] | array_flow.rb:57:13:57:13 | b [element 1] | -| array_flow.rb:56:13:56:23 | call to source | array_flow.rb:56:5:56:5 | b [element 1] | -| array_flow.rb:57:5:57:5 | c [element 0] | array_flow.rb:58:10:58:10 | c [element 0] | -| array_flow.rb:57:5:57:5 | c [element] | array_flow.rb:58:10:58:10 | c [element] | -| array_flow.rb:57:5:57:5 | c [element] | array_flow.rb:59:10:59:10 | c [element] | -| array_flow.rb:57:9:57:9 | a [element 0] | array_flow.rb:57:9:57:13 | ... + ... [element 0] | -| array_flow.rb:57:9:57:13 | ... + ... [element 0] | array_flow.rb:57:5:57:5 | c [element 0] | -| array_flow.rb:57:9:57:13 | ... + ... [element] | array_flow.rb:57:5:57:5 | c [element] | -| array_flow.rb:57:13:57:13 | b [element 1] | array_flow.rb:57:9:57:13 | ... + ... [element] | -| array_flow.rb:58:10:58:10 | c [element 0] | array_flow.rb:58:10:58:13 | ...[...] | -| array_flow.rb:58:10:58:10 | c [element] | array_flow.rb:58:10:58:13 | ...[...] | -| array_flow.rb:59:10:59:10 | c [element] | array_flow.rb:59:10:59:13 | ...[...] | -| array_flow.rb:63:5:63:5 | a [element 0] | array_flow.rb:65:9:65:9 | a [element 0] | -| array_flow.rb:63:10:63:20 | call to source | array_flow.rb:63:5:63:5 | a [element 0] | -| array_flow.rb:65:5:65:5 | c [element] | array_flow.rb:66:10:66:10 | c [element] | -| array_flow.rb:65:5:65:5 | c [element] | array_flow.rb:67:10:67:10 | c [element] | -| array_flow.rb:65:9:65:9 | a [element 0] | array_flow.rb:65:9:65:13 | ... - ... [element] | -| array_flow.rb:65:9:65:13 | ... - ... [element] | array_flow.rb:65:5:65:5 | c [element] | -| array_flow.rb:66:10:66:10 | c [element] | array_flow.rb:66:10:66:13 | ...[...] | -| array_flow.rb:67:10:67:10 | c [element] | array_flow.rb:67:10:67:13 | ...[...] | -| array_flow.rb:71:5:71:5 | a [element 0] | array_flow.rb:72:9:72:9 | a [element 0] | -| array_flow.rb:71:5:71:5 | a [element 0] | array_flow.rb:73:10:73:10 | a [element 0] | -| array_flow.rb:71:10:71:20 | call to source | array_flow.rb:71:5:71:5 | a [element 0] | -| array_flow.rb:72:5:72:5 | b [element 0] | array_flow.rb:75:10:75:10 | b [element 0] | -| array_flow.rb:72:5:72:5 | b [element] | array_flow.rb:75:10:75:10 | b [element] | -| array_flow.rb:72:5:72:5 | b [element] | array_flow.rb:76:10:76:10 | b [element] | -| array_flow.rb:72:9:72:9 | [post] a [element] | array_flow.rb:73:10:73:10 | a [element] | -| array_flow.rb:72:9:72:9 | [post] a [element] | array_flow.rb:74:10:74:10 | a [element] | -| array_flow.rb:72:9:72:9 | a [element 0] | array_flow.rb:72:9:72:24 | ... << ... [element 0] | -| array_flow.rb:72:9:72:24 | ... << ... [element 0] | array_flow.rb:72:5:72:5 | b [element 0] | -| array_flow.rb:72:9:72:24 | ... << ... [element] | array_flow.rb:72:5:72:5 | b [element] | -| array_flow.rb:72:14:72:24 | call to source | array_flow.rb:72:9:72:9 | [post] a [element] | -| array_flow.rb:72:14:72:24 | call to source | array_flow.rb:72:9:72:24 | ... << ... [element] | -| array_flow.rb:73:10:73:10 | a [element 0] | array_flow.rb:73:10:73:13 | ...[...] | -| array_flow.rb:73:10:73:10 | a [element] | array_flow.rb:73:10:73:13 | ...[...] | -| array_flow.rb:74:10:74:10 | a [element] | array_flow.rb:74:10:74:13 | ...[...] | -| array_flow.rb:75:10:75:10 | b [element 0] | array_flow.rb:75:10:75:13 | ...[...] | -| array_flow.rb:75:10:75:10 | b [element] | array_flow.rb:75:10:75:13 | ...[...] | -| array_flow.rb:76:10:76:10 | b [element] | array_flow.rb:76:10:76:13 | ...[...] | -| array_flow.rb:80:5:80:5 | a [element 1] | array_flow.rb:81:15:81:15 | a [element 1] | -| array_flow.rb:80:13:80:21 | call to source | array_flow.rb:80:5:80:5 | a [element 1] | -| array_flow.rb:81:8:81:8 | c | array_flow.rb:83:10:83:10 | c | -| array_flow.rb:81:15:81:15 | a [element 1] | array_flow.rb:81:8:81:8 | c | -| array_flow.rb:88:5:88:5 | a [element 1] | array_flow.rb:89:9:89:9 | a [element 1] | -| array_flow.rb:88:13:88:22 | call to source | array_flow.rb:88:5:88:5 | a [element 1] | -| array_flow.rb:89:5:89:5 | b [element 1] | array_flow.rb:91:10:91:10 | b [element 1] | -| array_flow.rb:89:5:89:5 | b [element 1] | array_flow.rb:92:10:92:10 | b [element 1] | -| array_flow.rb:89:9:89:9 | a [element 1] | array_flow.rb:89:9:89:15 | ...[...] [element 1] | -| array_flow.rb:89:9:89:15 | ...[...] [element 1] | array_flow.rb:89:5:89:5 | b [element 1] | -| array_flow.rb:91:10:91:10 | b [element 1] | array_flow.rb:91:10:91:13 | ...[...] | -| array_flow.rb:92:10:92:10 | b [element 1] | array_flow.rb:92:10:92:13 | ...[...] | -| array_flow.rb:96:5:96:5 | a [element 1] | array_flow.rb:97:9:97:9 | a [element 1] | -| array_flow.rb:96:13:96:22 | call to source | array_flow.rb:96:5:96:5 | a [element 1] | -| array_flow.rb:97:5:97:5 | b [element 1] | array_flow.rb:99:10:99:10 | b [element 1] | -| array_flow.rb:97:5:97:5 | b [element 1] | array_flow.rb:101:10:101:10 | b [element 1] | -| array_flow.rb:97:9:97:9 | a [element 1] | array_flow.rb:97:9:97:15 | ...[...] [element 1] | -| array_flow.rb:97:9:97:15 | ...[...] [element 1] | array_flow.rb:97:5:97:5 | b [element 1] | -| array_flow.rb:99:10:99:10 | b [element 1] | array_flow.rb:99:10:99:13 | ...[...] | -| array_flow.rb:101:10:101:10 | b [element 1] | array_flow.rb:101:10:101:13 | ...[...] | -| array_flow.rb:103:5:103:5 | a [element 1] | array_flow.rb:104:9:104:9 | a [element 1] | -| array_flow.rb:103:13:103:24 | call to source | array_flow.rb:103:5:103:5 | a [element 1] | -| array_flow.rb:104:5:104:5 | b [element 1] | array_flow.rb:106:10:106:10 | b [element 1] | -| array_flow.rb:104:9:104:9 | a [element 1] | array_flow.rb:104:9:104:16 | ...[...] [element 1] | -| array_flow.rb:104:9:104:16 | ...[...] [element 1] | array_flow.rb:104:5:104:5 | b [element 1] | -| array_flow.rb:106:10:106:10 | b [element 1] | array_flow.rb:106:10:106:13 | ...[...] | -| array_flow.rb:109:5:109:5 | a [element 1] | array_flow.rb:110:9:110:9 | a [element 1] | -| array_flow.rb:109:5:109:5 | a [element 1] | array_flow.rb:114:9:114:9 | a [element 1] | -| array_flow.rb:109:5:109:5 | a [element 3] | array_flow.rb:110:9:110:9 | a [element 3] | -| array_flow.rb:109:5:109:5 | a [element 3] | array_flow.rb:114:9:114:9 | a [element 3] | -| array_flow.rb:109:13:109:24 | call to source | array_flow.rb:109:5:109:5 | a [element 1] | -| array_flow.rb:109:30:109:41 | call to source | array_flow.rb:109:5:109:5 | a [element 3] | -| array_flow.rb:110:5:110:5 | b [element] | array_flow.rb:111:10:111:10 | b [element] | -| array_flow.rb:110:5:110:5 | b [element] | array_flow.rb:112:10:112:10 | b [element] | -| array_flow.rb:110:9:110:9 | a [element 1] | array_flow.rb:110:9:110:18 | ...[...] [element] | -| array_flow.rb:110:9:110:9 | a [element 3] | array_flow.rb:110:9:110:18 | ...[...] [element] | -| array_flow.rb:110:9:110:18 | ...[...] [element] | array_flow.rb:110:5:110:5 | b [element] | -| array_flow.rb:111:10:111:10 | b [element] | array_flow.rb:111:10:111:13 | ...[...] | -| array_flow.rb:112:10:112:10 | b [element] | array_flow.rb:112:10:112:13 | ...[...] | -| array_flow.rb:114:5:114:5 | b [element] | array_flow.rb:115:10:115:10 | b [element] | -| array_flow.rb:114:5:114:5 | b [element] | array_flow.rb:116:10:116:10 | b [element] | -| array_flow.rb:114:9:114:9 | a [element 1] | array_flow.rb:114:9:114:19 | ...[...] [element] | -| array_flow.rb:114:9:114:9 | a [element 3] | array_flow.rb:114:9:114:19 | ...[...] [element] | -| array_flow.rb:114:9:114:19 | ...[...] [element] | array_flow.rb:114:5:114:5 | b [element] | -| array_flow.rb:115:10:115:10 | b [element] | array_flow.rb:115:10:115:13 | ...[...] | -| array_flow.rb:116:10:116:10 | b [element] | array_flow.rb:116:10:116:13 | ...[...] | -| array_flow.rb:121:5:121:5 | [post] a [element] | array_flow.rb:122:10:122:10 | a [element] | -| array_flow.rb:121:5:121:5 | [post] a [element] | array_flow.rb:123:10:123:10 | a [element] | -| array_flow.rb:121:5:121:5 | [post] a [element] | array_flow.rb:124:10:124:10 | a [element] | -| array_flow.rb:121:15:121:24 | call to source | array_flow.rb:121:5:121:5 | [post] a [element] | -| array_flow.rb:122:10:122:10 | a [element] | array_flow.rb:122:10:122:13 | ...[...] | -| array_flow.rb:123:10:123:10 | a [element] | array_flow.rb:123:10:123:13 | ...[...] | -| array_flow.rb:124:10:124:10 | a [element] | array_flow.rb:124:10:124:13 | ...[...] | -| array_flow.rb:129:5:129:5 | [post] a [element] | array_flow.rb:130:10:130:10 | a [element] | -| array_flow.rb:129:5:129:5 | [post] a [element] | array_flow.rb:131:10:131:10 | a [element] | -| array_flow.rb:129:5:129:5 | [post] a [element] | array_flow.rb:132:10:132:10 | a [element] | -| array_flow.rb:129:19:129:28 | call to source | array_flow.rb:129:5:129:5 | [post] a [element] | -| array_flow.rb:130:10:130:10 | a [element] | array_flow.rb:130:10:130:13 | ...[...] | -| array_flow.rb:131:10:131:10 | a [element] | array_flow.rb:131:10:131:13 | ...[...] | -| array_flow.rb:132:10:132:10 | a [element] | array_flow.rb:132:10:132:13 | ...[...] | -| array_flow.rb:137:5:137:5 | [post] a [element] | array_flow.rb:138:10:138:10 | a [element] | -| array_flow.rb:137:5:137:5 | [post] a [element] | array_flow.rb:139:10:139:10 | a [element] | -| array_flow.rb:137:5:137:5 | [post] a [element] | array_flow.rb:140:10:140:10 | a [element] | -| array_flow.rb:137:15:137:24 | call to source | array_flow.rb:137:5:137:5 | [post] a [element] | -| array_flow.rb:138:10:138:10 | a [element] | array_flow.rb:138:10:138:13 | ...[...] | -| array_flow.rb:139:10:139:10 | a [element] | array_flow.rb:139:10:139:13 | ...[...] | -| array_flow.rb:140:10:140:10 | a [element] | array_flow.rb:140:10:140:13 | ...[...] | -| array_flow.rb:145:5:145:5 | [post] a [element] | array_flow.rb:146:10:146:10 | a [element] | -| array_flow.rb:145:5:145:5 | [post] a [element] | array_flow.rb:147:10:147:10 | a [element] | -| array_flow.rb:145:5:145:5 | [post] a [element] | array_flow.rb:148:10:148:10 | a [element] | -| array_flow.rb:145:19:145:28 | call to source | array_flow.rb:145:5:145:5 | [post] a [element] | -| array_flow.rb:146:10:146:10 | a [element] | array_flow.rb:146:10:146:13 | ...[...] | -| array_flow.rb:147:10:147:10 | a [element] | array_flow.rb:147:10:147:13 | ...[...] | -| array_flow.rb:148:10:148:10 | a [element] | array_flow.rb:148:10:148:13 | ...[...] | -| array_flow.rb:152:5:152:5 | a [element 2] | array_flow.rb:153:5:153:5 | a [element 2] | -| array_flow.rb:152:16:152:25 | call to source | array_flow.rb:152:5:152:5 | a [element 2] | -| array_flow.rb:153:5:153:5 | a [element 2] | array_flow.rb:153:16:153:16 | x | -| array_flow.rb:153:16:153:16 | x | array_flow.rb:154:14:154:14 | x | -| array_flow.rb:159:5:159:5 | a [element 2] | array_flow.rb:160:5:160:5 | a [element 2] | -| array_flow.rb:159:16:159:25 | call to source | array_flow.rb:159:5:159:5 | a [element 2] | -| array_flow.rb:160:5:160:5 | a [element 2] | array_flow.rb:160:16:160:16 | x | -| array_flow.rb:160:16:160:16 | x | array_flow.rb:161:14:161:14 | x | -| array_flow.rb:166:5:166:5 | a [element 0] | array_flow.rb:167:9:167:9 | a [element 0] | -| array_flow.rb:166:5:166:5 | a [element 0] | array_flow.rb:168:10:168:10 | a [element 0] | -| array_flow.rb:166:10:166:21 | call to source | array_flow.rb:166:5:166:5 | a [element 0] | -| array_flow.rb:167:5:167:5 | b [element 0] | array_flow.rb:170:10:170:10 | b [element 0] | -| array_flow.rb:167:5:167:5 | b [element] | array_flow.rb:170:10:170:10 | b [element] | -| array_flow.rb:167:5:167:5 | b [element] | array_flow.rb:171:10:171:10 | b [element] | -| array_flow.rb:167:9:167:9 | [post] a [element] | array_flow.rb:168:10:168:10 | a [element] | -| array_flow.rb:167:9:167:9 | [post] a [element] | array_flow.rb:169:10:169:10 | a [element] | -| array_flow.rb:167:9:167:9 | a [element 0] | array_flow.rb:167:9:167:44 | call to append [element 0] | -| array_flow.rb:167:9:167:44 | call to append [element 0] | array_flow.rb:167:5:167:5 | b [element 0] | -| array_flow.rb:167:9:167:44 | call to append [element] | array_flow.rb:167:5:167:5 | b [element] | -| array_flow.rb:167:18:167:29 | call to source | array_flow.rb:167:9:167:9 | [post] a [element] | -| array_flow.rb:167:18:167:29 | call to source | array_flow.rb:167:9:167:44 | call to append [element] | -| array_flow.rb:167:32:167:43 | call to source | array_flow.rb:167:9:167:9 | [post] a [element] | -| array_flow.rb:167:32:167:43 | call to source | array_flow.rb:167:9:167:44 | call to append [element] | -| array_flow.rb:168:10:168:10 | a [element 0] | array_flow.rb:168:10:168:13 | ...[...] | -| array_flow.rb:168:10:168:10 | a [element] | array_flow.rb:168:10:168:13 | ...[...] | -| array_flow.rb:169:10:169:10 | a [element] | array_flow.rb:169:10:169:13 | ...[...] | -| array_flow.rb:170:10:170:10 | b [element 0] | array_flow.rb:170:10:170:13 | ...[...] | -| array_flow.rb:170:10:170:10 | b [element] | array_flow.rb:170:10:170:13 | ...[...] | -| array_flow.rb:171:10:171:10 | b [element] | array_flow.rb:171:10:171:13 | ...[...] | -| array_flow.rb:177:5:177:5 | c [element 1] | array_flow.rb:178:16:178:16 | c [element 1] | -| array_flow.rb:177:15:177:24 | call to source | array_flow.rb:177:5:177:5 | c [element 1] | -| array_flow.rb:178:5:178:5 | d [element 2, element 1] | array_flow.rb:179:11:179:11 | d [element 2, element 1] | -| array_flow.rb:178:5:178:5 | d [element 2, element 1] | array_flow.rb:180:11:180:11 | d [element 2, element 1] | -| array_flow.rb:178:16:178:16 | c [element 1] | array_flow.rb:178:5:178:5 | d [element 2, element 1] | -| array_flow.rb:179:11:179:11 | d [element 2, element 1] | array_flow.rb:179:11:179:22 | call to assoc [element 1] | -| array_flow.rb:179:11:179:22 | call to assoc [element 1] | array_flow.rb:179:11:179:25 | ...[...] | -| array_flow.rb:179:11:179:25 | ...[...] | array_flow.rb:179:10:179:26 | ( ... ) | -| array_flow.rb:180:11:180:11 | d [element 2, element 1] | array_flow.rb:180:11:180:22 | call to assoc [element 1] | -| array_flow.rb:180:11:180:22 | call to assoc [element 1] | array_flow.rb:180:11:180:25 | ...[...] | -| array_flow.rb:180:11:180:25 | ...[...] | array_flow.rb:180:10:180:26 | ( ... ) | -| array_flow.rb:184:5:184:5 | a [element 1] | array_flow.rb:186:10:186:10 | a [element 1] | -| array_flow.rb:184:5:184:5 | a [element 1] | array_flow.rb:188:10:188:10 | a [element 1] | -| array_flow.rb:184:13:184:22 | call to source | array_flow.rb:184:5:184:5 | a [element 1] | -| array_flow.rb:186:10:186:10 | a [element 1] | array_flow.rb:186:10:186:16 | call to at | -| array_flow.rb:188:10:188:10 | a [element 1] | array_flow.rb:188:10:188:16 | call to at | -| array_flow.rb:192:5:192:5 | a [element 2] | array_flow.rb:193:9:193:9 | a [element 2] | -| array_flow.rb:192:16:192:25 | call to source | array_flow.rb:192:5:192:5 | a [element 2] | -| array_flow.rb:193:5:193:5 | b | array_flow.rb:196:10:196:10 | b | -| array_flow.rb:193:9:193:9 | a [element 2] | array_flow.rb:193:9:195:7 | call to bsearch | -| array_flow.rb:193:9:193:9 | a [element 2] | array_flow.rb:193:23:193:23 | x | -| array_flow.rb:193:9:195:7 | call to bsearch | array_flow.rb:193:5:193:5 | b | -| array_flow.rb:193:23:193:23 | x | array_flow.rb:194:14:194:14 | x | -| array_flow.rb:200:5:200:5 | a [element 2] | array_flow.rb:201:9:201:9 | a [element 2] | -| array_flow.rb:200:16:200:25 | call to source | array_flow.rb:200:5:200:5 | a [element 2] | -| array_flow.rb:201:9:201:9 | a [element 2] | array_flow.rb:201:29:201:29 | x | -| array_flow.rb:201:29:201:29 | x | array_flow.rb:202:14:202:14 | x | -| array_flow.rb:208:5:208:5 | a [element 2] | array_flow.rb:209:5:209:5 | a [element 2] | -| array_flow.rb:208:16:208:25 | call to source | array_flow.rb:208:5:208:5 | a [element 2] | -| array_flow.rb:209:5:209:5 | a [element 2] | array_flow.rb:209:17:209:17 | x | -| array_flow.rb:209:17:209:17 | x | array_flow.rb:210:14:210:14 | x | -| array_flow.rb:215:5:215:5 | a [element 2] | array_flow.rb:216:9:216:9 | a [element 2] | -| array_flow.rb:215:5:215:5 | a [element 3] | array_flow.rb:216:9:216:9 | a [element 3] | -| array_flow.rb:215:16:215:27 | call to source | array_flow.rb:215:5:215:5 | a [element 2] | -| array_flow.rb:215:30:215:41 | call to source | array_flow.rb:215:5:215:5 | a [element 3] | -| array_flow.rb:216:9:216:9 | a [element 2] | array_flow.rb:216:27:216:27 | x | -| array_flow.rb:216:9:216:9 | a [element 2] | array_flow.rb:216:30:216:30 | y | -| array_flow.rb:216:9:216:9 | a [element 3] | array_flow.rb:216:27:216:27 | x | -| array_flow.rb:216:9:216:9 | a [element 3] | array_flow.rb:216:30:216:30 | y | -| array_flow.rb:216:27:216:27 | x | array_flow.rb:217:14:217:14 | x | -| array_flow.rb:216:30:216:30 | y | array_flow.rb:218:14:218:14 | y | -| array_flow.rb:231:5:231:5 | a [element 2] | array_flow.rb:232:9:232:9 | a [element 2] | -| array_flow.rb:231:16:231:27 | call to source | array_flow.rb:231:5:231:5 | a [element 2] | -| array_flow.rb:232:5:232:5 | b [element] | array_flow.rb:236:10:236:10 | b [element] | -| array_flow.rb:232:9:232:9 | a [element 2] | array_flow.rb:232:23:232:23 | x | -| array_flow.rb:232:9:235:7 | call to collect [element] | array_flow.rb:232:5:232:5 | b [element] | -| array_flow.rb:232:23:232:23 | x | array_flow.rb:233:14:233:14 | x | -| array_flow.rb:234:9:234:19 | call to source | array_flow.rb:232:9:235:7 | call to collect [element] | -| array_flow.rb:236:10:236:10 | b [element] | array_flow.rb:236:10:236:13 | ...[...] | -| array_flow.rb:240:5:240:5 | a [element 2] | array_flow.rb:241:9:241:9 | a [element 2] | -| array_flow.rb:240:16:240:27 | call to source | array_flow.rb:240:5:240:5 | a [element 2] | -| array_flow.rb:241:5:241:5 | b [element] | array_flow.rb:246:10:246:10 | b [element] | -| array_flow.rb:241:9:241:9 | [post] a [element] | array_flow.rb:245:10:245:10 | a [element] | -| array_flow.rb:241:9:241:9 | a [element 2] | array_flow.rb:241:24:241:24 | x | -| array_flow.rb:241:9:244:7 | call to collect! [element] | array_flow.rb:241:5:241:5 | b [element] | -| array_flow.rb:241:24:241:24 | x | array_flow.rb:242:14:242:14 | x | -| array_flow.rb:243:9:243:19 | call to source | array_flow.rb:241:9:241:9 | [post] a [element] | -| array_flow.rb:243:9:243:19 | call to source | array_flow.rb:241:9:244:7 | call to collect! [element] | -| array_flow.rb:245:10:245:10 | a [element] | array_flow.rb:245:10:245:13 | ...[...] | -| array_flow.rb:246:10:246:10 | b [element] | array_flow.rb:246:10:246:13 | ...[...] | -| array_flow.rb:250:5:250:5 | a [element 2] | array_flow.rb:251:9:251:9 | a [element 2] | -| array_flow.rb:250:5:250:5 | a [element 2] | array_flow.rb:256:9:256:9 | a [element 2] | -| array_flow.rb:250:16:250:27 | call to source | array_flow.rb:250:5:250:5 | a [element 2] | -| array_flow.rb:251:5:251:5 | b [element] | array_flow.rb:255:10:255:10 | b [element] | -| array_flow.rb:251:9:251:9 | a [element 2] | array_flow.rb:251:9:254:7 | call to collect_concat [element] | -| array_flow.rb:251:9:251:9 | a [element 2] | array_flow.rb:251:30:251:30 | x | -| array_flow.rb:251:9:254:7 | call to collect_concat [element] | array_flow.rb:251:5:251:5 | b [element] | -| array_flow.rb:251:30:251:30 | x | array_flow.rb:252:14:252:14 | x | -| array_flow.rb:253:13:253:24 | call to source | array_flow.rb:251:9:254:7 | call to collect_concat [element] | -| array_flow.rb:255:10:255:10 | b [element] | array_flow.rb:255:10:255:13 | ...[...] | -| array_flow.rb:256:5:256:5 | b [element] | array_flow.rb:260:10:260:10 | b [element] | -| array_flow.rb:256:9:256:9 | a [element 2] | array_flow.rb:256:30:256:30 | x | -| array_flow.rb:256:9:259:7 | call to collect_concat [element] | array_flow.rb:256:5:256:5 | b [element] | -| array_flow.rb:256:30:256:30 | x | array_flow.rb:257:14:257:14 | x | -| array_flow.rb:258:9:258:20 | call to source | array_flow.rb:256:9:259:7 | call to collect_concat [element] | -| array_flow.rb:260:10:260:10 | b [element] | array_flow.rb:260:10:260:13 | ...[...] | -| array_flow.rb:264:5:264:5 | a [element 2] | array_flow.rb:265:9:265:9 | a [element 2] | -| array_flow.rb:264:16:264:25 | call to source | array_flow.rb:264:5:264:5 | a [element 2] | -| array_flow.rb:265:5:265:5 | b [element 2] | array_flow.rb:269:10:269:10 | b [element 2] | -| array_flow.rb:265:9:265:9 | a [element 2] | array_flow.rb:265:9:267:7 | call to combination [element 2] | -| array_flow.rb:265:9:265:9 | a [element 2] | array_flow.rb:265:30:265:30 | x [element] | -| array_flow.rb:265:9:267:7 | call to combination [element 2] | array_flow.rb:265:5:265:5 | b [element 2] | -| array_flow.rb:265:30:265:30 | x [element] | array_flow.rb:266:14:266:14 | x [element] | -| array_flow.rb:266:14:266:14 | x [element] | array_flow.rb:266:14:266:17 | ...[...] | -| array_flow.rb:269:10:269:10 | b [element 2] | array_flow.rb:269:10:269:13 | ...[...] | -| array_flow.rb:273:5:273:5 | a [element 2] | array_flow.rb:274:9:274:9 | a [element 2] | -| array_flow.rb:273:16:273:25 | call to source | array_flow.rb:273:5:273:5 | a [element 2] | -| array_flow.rb:274:5:274:5 | b [element] | array_flow.rb:275:10:275:10 | b [element] | -| array_flow.rb:274:9:274:9 | a [element 2] | array_flow.rb:274:9:274:17 | call to compact [element] | -| array_flow.rb:274:9:274:17 | call to compact [element] | array_flow.rb:274:5:274:5 | b [element] | -| array_flow.rb:275:10:275:10 | b [element] | array_flow.rb:275:10:275:13 | ...[...] | -| array_flow.rb:279:5:279:5 | a [element 2] | array_flow.rb:280:9:280:9 | a [element 2] | -| array_flow.rb:279:16:279:25 | call to source | array_flow.rb:279:5:279:5 | a [element 2] | -| array_flow.rb:280:5:280:5 | b [element] | array_flow.rb:282:10:282:10 | b [element] | -| array_flow.rb:280:9:280:9 | [post] a [element] | array_flow.rb:281:10:281:10 | a [element] | -| array_flow.rb:280:9:280:9 | a [element 2] | array_flow.rb:280:9:280:9 | [post] a [element] | -| array_flow.rb:280:9:280:9 | a [element 2] | array_flow.rb:280:9:280:18 | call to compact! [element] | -| array_flow.rb:280:9:280:18 | call to compact! [element] | array_flow.rb:280:5:280:5 | b [element] | -| array_flow.rb:281:10:281:10 | a [element] | array_flow.rb:281:10:281:13 | ...[...] | -| array_flow.rb:282:10:282:10 | b [element] | array_flow.rb:282:10:282:13 | ...[...] | -| array_flow.rb:286:5:286:5 | a [element 2] | array_flow.rb:290:10:290:10 | a [element 2] | -| array_flow.rb:286:16:286:27 | call to source | array_flow.rb:286:5:286:5 | a [element 2] | -| array_flow.rb:287:5:287:5 | b [element 2] | array_flow.rb:288:14:288:14 | b [element 2] | -| array_flow.rb:287:16:287:27 | call to source | array_flow.rb:287:5:287:5 | b [element 2] | -| array_flow.rb:288:5:288:5 | [post] a [element] | array_flow.rb:289:10:289:10 | a [element] | -| array_flow.rb:288:5:288:5 | [post] a [element] | array_flow.rb:290:10:290:10 | a [element] | -| array_flow.rb:288:14:288:14 | b [element 2] | array_flow.rb:288:5:288:5 | [post] a [element] | -| array_flow.rb:289:10:289:10 | a [element] | array_flow.rb:289:10:289:13 | ...[...] | -| array_flow.rb:290:10:290:10 | a [element 2] | array_flow.rb:290:10:290:13 | ...[...] | -| array_flow.rb:290:10:290:10 | a [element] | array_flow.rb:290:10:290:13 | ...[...] | -| array_flow.rb:294:5:294:5 | a [element 2] | array_flow.rb:295:5:295:5 | a [element 2] | -| array_flow.rb:294:16:294:25 | call to source | array_flow.rb:294:5:294:5 | a [element 2] | -| array_flow.rb:295:5:295:5 | a [element 2] | array_flow.rb:295:17:295:17 | x | -| array_flow.rb:295:17:295:17 | x | array_flow.rb:296:14:296:14 | x | -| array_flow.rb:301:5:301:5 | a [element 2] | array_flow.rb:302:5:302:5 | a [element 2] | -| array_flow.rb:301:16:301:25 | call to source | array_flow.rb:301:5:301:5 | a [element 2] | -| array_flow.rb:302:5:302:5 | a [element 2] | array_flow.rb:302:20:302:20 | x | -| array_flow.rb:302:20:302:20 | x | array_flow.rb:303:14:303:14 | x | -| array_flow.rb:308:5:308:5 | a [element 2] | array_flow.rb:309:9:309:9 | a [element 2] | -| array_flow.rb:308:16:308:25 | call to source | array_flow.rb:308:5:308:5 | a [element 2] | -| array_flow.rb:309:5:309:5 | b [element 2] | array_flow.rb:312:10:312:10 | b [element 2] | -| array_flow.rb:309:9:309:9 | a [element 2] | array_flow.rb:309:9:309:21 | call to deconstruct [element 2] | -| array_flow.rb:309:9:309:21 | call to deconstruct [element 2] | array_flow.rb:309:5:309:5 | b [element 2] | -| array_flow.rb:312:10:312:10 | b [element 2] | array_flow.rb:312:10:312:13 | ...[...] | -| array_flow.rb:316:5:316:5 | a [element 2] | array_flow.rb:317:9:317:9 | a [element 2] | -| array_flow.rb:316:16:316:27 | call to source | array_flow.rb:316:5:316:5 | a [element 2] | -| array_flow.rb:317:5:317:5 | b | array_flow.rb:318:10:318:10 | b | -| array_flow.rb:317:9:317:9 | a [element 2] | array_flow.rb:317:9:317:36 | call to delete | -| array_flow.rb:317:9:317:36 | call to delete | array_flow.rb:317:5:317:5 | b | -| array_flow.rb:317:23:317:34 | call to source | array_flow.rb:317:9:317:36 | call to delete | -| array_flow.rb:325:5:325:5 | a [element 2] | array_flow.rb:326:9:326:9 | a [element 2] | -| array_flow.rb:325:5:325:5 | a [element 3] | array_flow.rb:326:9:326:9 | a [element 3] | -| array_flow.rb:325:16:325:27 | call to source | array_flow.rb:325:5:325:5 | a [element 2] | -| array_flow.rb:325:30:325:41 | call to source | array_flow.rb:325:5:325:5 | a [element 3] | -| array_flow.rb:326:5:326:5 | b | array_flow.rb:327:10:327:10 | b | -| array_flow.rb:326:9:326:9 | [post] a [element 2] | array_flow.rb:328:10:328:10 | a [element 2] | -| array_flow.rb:326:9:326:9 | a [element 2] | array_flow.rb:326:9:326:22 | call to delete_at | -| array_flow.rb:326:9:326:9 | a [element 3] | array_flow.rb:326:9:326:9 | [post] a [element 2] | -| array_flow.rb:326:9:326:22 | call to delete_at | array_flow.rb:326:5:326:5 | b | -| array_flow.rb:328:10:328:10 | a [element 2] | array_flow.rb:328:10:328:13 | ...[...] | -| array_flow.rb:330:5:330:5 | a [element 2] | array_flow.rb:331:9:331:9 | a [element 2] | -| array_flow.rb:330:5:330:5 | a [element 3] | array_flow.rb:331:9:331:9 | a [element 3] | -| array_flow.rb:330:16:330:27 | call to source | array_flow.rb:330:5:330:5 | a [element 2] | -| array_flow.rb:330:30:330:41 | call to source | array_flow.rb:330:5:330:5 | a [element 3] | -| array_flow.rb:331:5:331:5 | b | array_flow.rb:332:10:332:10 | b | -| array_flow.rb:331:9:331:9 | [post] a [element] | array_flow.rb:333:10:333:10 | a [element] | -| array_flow.rb:331:9:331:9 | [post] a [element] | array_flow.rb:334:10:334:10 | a [element] | -| array_flow.rb:331:9:331:9 | a [element 2] | array_flow.rb:331:9:331:9 | [post] a [element] | -| array_flow.rb:331:9:331:9 | a [element 2] | array_flow.rb:331:9:331:22 | call to delete_at | -| array_flow.rb:331:9:331:9 | a [element 3] | array_flow.rb:331:9:331:9 | [post] a [element] | -| array_flow.rb:331:9:331:9 | a [element 3] | array_flow.rb:331:9:331:22 | call to delete_at | -| array_flow.rb:331:9:331:22 | call to delete_at | array_flow.rb:331:5:331:5 | b | -| array_flow.rb:333:10:333:10 | a [element] | array_flow.rb:333:10:333:13 | ...[...] | -| array_flow.rb:334:10:334:10 | a [element] | array_flow.rb:334:10:334:13 | ...[...] | -| array_flow.rb:338:5:338:5 | a [element 2] | array_flow.rb:339:9:339:9 | a [element 2] | -| array_flow.rb:338:16:338:25 | call to source | array_flow.rb:338:5:338:5 | a [element 2] | -| array_flow.rb:339:5:339:5 | b [element] | array_flow.rb:342:10:342:10 | b [element] | -| array_flow.rb:339:9:339:9 | [post] a [element] | array_flow.rb:343:10:343:10 | a [element] | -| array_flow.rb:339:9:339:9 | [post] a [element] | array_flow.rb:344:10:344:10 | a [element] | -| array_flow.rb:339:9:339:9 | [post] a [element] | array_flow.rb:345:10:345:10 | a [element] | -| array_flow.rb:339:9:339:9 | a [element 2] | array_flow.rb:339:9:339:9 | [post] a [element] | -| array_flow.rb:339:9:339:9 | a [element 2] | array_flow.rb:339:9:341:7 | call to delete_if [element] | -| array_flow.rb:339:9:339:9 | a [element 2] | array_flow.rb:339:25:339:25 | x | -| array_flow.rb:339:9:341:7 | call to delete_if [element] | array_flow.rb:339:5:339:5 | b [element] | -| array_flow.rb:339:25:339:25 | x | array_flow.rb:340:14:340:14 | x | -| array_flow.rb:342:10:342:10 | b [element] | array_flow.rb:342:10:342:13 | ...[...] | -| array_flow.rb:343:10:343:10 | a [element] | array_flow.rb:343:10:343:13 | ...[...] | -| array_flow.rb:344:10:344:10 | a [element] | array_flow.rb:344:10:344:13 | ...[...] | -| array_flow.rb:345:10:345:10 | a [element] | array_flow.rb:345:10:345:13 | ...[...] | -| array_flow.rb:349:5:349:5 | a [element 2] | array_flow.rb:350:9:350:9 | a [element 2] | -| array_flow.rb:349:16:349:25 | call to source | array_flow.rb:349:5:349:5 | a [element 2] | -| array_flow.rb:350:5:350:5 | b [element] | array_flow.rb:351:10:351:10 | b [element] | -| array_flow.rb:350:9:350:9 | a [element 2] | array_flow.rb:350:9:350:25 | call to difference [element] | -| array_flow.rb:350:9:350:25 | call to difference [element] | array_flow.rb:350:5:350:5 | b [element] | -| array_flow.rb:351:10:351:10 | b [element] | array_flow.rb:351:10:351:13 | ...[...] | -| array_flow.rb:355:5:355:5 | a [element 2] | array_flow.rb:357:10:357:10 | a [element 2] | -| array_flow.rb:355:5:355:5 | a [element 2] | array_flow.rb:358:10:358:10 | a [element 2] | -| array_flow.rb:355:5:355:5 | a [element 3, element 1] | array_flow.rb:360:10:360:10 | a [element 3, element 1] | -| array_flow.rb:355:16:355:27 | call to source | array_flow.rb:355:5:355:5 | a [element 2] | -| array_flow.rb:355:34:355:45 | call to source | array_flow.rb:355:5:355:5 | a [element 3, element 1] | -| array_flow.rb:357:10:357:10 | a [element 2] | array_flow.rb:357:10:357:17 | call to dig | -| array_flow.rb:358:10:358:10 | a [element 2] | array_flow.rb:358:10:358:17 | call to dig | -| array_flow.rb:360:10:360:10 | a [element 3, element 1] | array_flow.rb:360:10:360:19 | call to dig | -| array_flow.rb:364:5:364:5 | a [element 2] | array_flow.rb:365:9:365:9 | a [element 2] | -| array_flow.rb:364:16:364:27 | call to source | array_flow.rb:364:5:364:5 | a [element 2] | -| array_flow.rb:365:5:365:5 | b | array_flow.rb:368:10:368:10 | b | -| array_flow.rb:365:9:365:9 | a [element 2] | array_flow.rb:365:9:367:7 | call to detect | -| array_flow.rb:365:9:365:9 | a [element 2] | array_flow.rb:365:43:365:43 | x | -| array_flow.rb:365:9:367:7 | call to detect | array_flow.rb:365:5:365:5 | b | -| array_flow.rb:365:23:365:34 | call to source | array_flow.rb:365:9:367:7 | call to detect | -| array_flow.rb:365:43:365:43 | x | array_flow.rb:366:14:366:14 | x | -| array_flow.rb:372:5:372:5 | a [element 2] | array_flow.rb:373:9:373:9 | a [element 2] | -| array_flow.rb:372:5:372:5 | a [element 2] | array_flow.rb:375:9:375:9 | a [element 2] | -| array_flow.rb:372:5:372:5 | a [element 2] | array_flow.rb:380:9:380:9 | a [element 2] | -| array_flow.rb:372:5:372:5 | a [element 3] | array_flow.rb:373:9:373:9 | a [element 3] | -| array_flow.rb:372:5:372:5 | a [element 3] | array_flow.rb:375:9:375:9 | a [element 3] | -| array_flow.rb:372:16:372:27 | call to source | array_flow.rb:372:5:372:5 | a [element 2] | -| array_flow.rb:372:30:372:41 | call to source | array_flow.rb:372:5:372:5 | a [element 3] | -| array_flow.rb:373:5:373:5 | b [element] | array_flow.rb:374:10:374:10 | b [element] | -| array_flow.rb:373:9:373:9 | a [element 2] | array_flow.rb:373:9:373:17 | call to drop [element] | -| array_flow.rb:373:9:373:9 | a [element 3] | array_flow.rb:373:9:373:17 | call to drop [element] | -| array_flow.rb:373:9:373:17 | call to drop [element] | array_flow.rb:373:5:373:5 | b [element] | -| array_flow.rb:374:10:374:10 | b [element] | array_flow.rb:374:10:374:13 | ...[...] | -| array_flow.rb:375:5:375:5 | b [element 1] | array_flow.rb:377:10:377:10 | b [element 1] | -| array_flow.rb:375:5:375:5 | b [element 1] | array_flow.rb:378:10:378:10 | b [element 1] | -| array_flow.rb:375:5:375:5 | b [element 2] | array_flow.rb:378:10:378:10 | b [element 2] | -| array_flow.rb:375:9:375:9 | a [element 2] | array_flow.rb:375:9:375:17 | call to drop [element 1] | -| array_flow.rb:375:9:375:9 | a [element 3] | array_flow.rb:375:9:375:17 | call to drop [element 2] | -| array_flow.rb:375:9:375:17 | call to drop [element 1] | array_flow.rb:375:5:375:5 | b [element 1] | -| array_flow.rb:375:9:375:17 | call to drop [element 2] | array_flow.rb:375:5:375:5 | b [element 2] | -| array_flow.rb:377:10:377:10 | b [element 1] | array_flow.rb:377:10:377:13 | ...[...] | -| array_flow.rb:378:10:378:10 | b [element 1] | array_flow.rb:378:10:378:13 | ...[...] | -| array_flow.rb:378:10:378:10 | b [element 2] | array_flow.rb:378:10:378:13 | ...[...] | -| array_flow.rb:379:5:379:5 | [post] a [element] | array_flow.rb:380:9:380:9 | a [element] | -| array_flow.rb:379:12:379:23 | call to source | array_flow.rb:379:5:379:5 | [post] a [element] | -| array_flow.rb:380:5:380:5 | b [element 1] | array_flow.rb:381:10:381:10 | b [element 1] | -| array_flow.rb:380:5:380:5 | b [element] | array_flow.rb:381:10:381:10 | b [element] | -| array_flow.rb:380:5:380:5 | b [element] | array_flow.rb:382:9:382:9 | b [element] | -| array_flow.rb:380:9:380:9 | a [element 2] | array_flow.rb:380:9:380:17 | call to drop [element 1] | -| array_flow.rb:380:9:380:9 | a [element] | array_flow.rb:380:9:380:17 | call to drop [element] | -| array_flow.rb:380:9:380:17 | call to drop [element 1] | array_flow.rb:380:5:380:5 | b [element 1] | -| array_flow.rb:380:9:380:17 | call to drop [element] | array_flow.rb:380:5:380:5 | b [element] | -| array_flow.rb:381:10:381:10 | b [element 1] | array_flow.rb:381:10:381:13 | ...[...] | -| array_flow.rb:381:10:381:10 | b [element] | array_flow.rb:381:10:381:13 | ...[...] | -| array_flow.rb:382:5:382:5 | c [element] | array_flow.rb:383:10:383:10 | c [element] | -| array_flow.rb:382:9:382:9 | b [element] | array_flow.rb:382:9:382:19 | call to drop [element] | -| array_flow.rb:382:9:382:19 | call to drop [element] | array_flow.rb:382:5:382:5 | c [element] | -| array_flow.rb:383:10:383:10 | c [element] | array_flow.rb:383:10:383:13 | ...[...] | -| array_flow.rb:387:5:387:5 | a [element 2] | array_flow.rb:388:9:388:9 | a [element 2] | -| array_flow.rb:387:5:387:5 | a [element 3] | array_flow.rb:388:9:388:9 | a [element 3] | -| array_flow.rb:387:16:387:27 | call to source | array_flow.rb:387:5:387:5 | a [element 2] | -| array_flow.rb:387:30:387:41 | call to source | array_flow.rb:387:5:387:5 | a [element 3] | -| array_flow.rb:388:5:388:5 | b [element] | array_flow.rb:391:10:391:10 | b [element] | -| array_flow.rb:388:9:388:9 | a [element 2] | array_flow.rb:388:9:390:7 | call to drop_while [element] | -| array_flow.rb:388:9:388:9 | a [element 2] | array_flow.rb:388:26:388:26 | x | -| array_flow.rb:388:9:388:9 | a [element 3] | array_flow.rb:388:9:390:7 | call to drop_while [element] | -| array_flow.rb:388:9:388:9 | a [element 3] | array_flow.rb:388:26:388:26 | x | -| array_flow.rb:388:9:390:7 | call to drop_while [element] | array_flow.rb:388:5:388:5 | b [element] | -| array_flow.rb:388:26:388:26 | x | array_flow.rb:389:14:389:14 | x | -| array_flow.rb:391:10:391:10 | b [element] | array_flow.rb:391:10:391:13 | ...[...] | -| array_flow.rb:395:5:395:5 | a [element 2] | array_flow.rb:396:9:396:9 | a [element 2] | -| array_flow.rb:395:16:395:25 | call to source | array_flow.rb:395:5:395:5 | a [element 2] | -| array_flow.rb:396:5:396:5 | b [element 2] | array_flow.rb:399:10:399:10 | b [element 2] | -| array_flow.rb:396:9:396:9 | a [element 2] | array_flow.rb:396:9:398:7 | call to each [element 2] | -| array_flow.rb:396:9:396:9 | a [element 2] | array_flow.rb:396:20:396:20 | x | -| array_flow.rb:396:9:398:7 | call to each [element 2] | array_flow.rb:396:5:396:5 | b [element 2] | -| array_flow.rb:396:20:396:20 | x | array_flow.rb:397:14:397:14 | x | -| array_flow.rb:399:10:399:10 | b [element 2] | array_flow.rb:399:10:399:13 | ...[...] | -| array_flow.rb:403:5:403:5 | a [element 2] | array_flow.rb:404:18:404:18 | a [element 2] | -| array_flow.rb:403:16:403:25 | call to source | array_flow.rb:403:5:403:5 | a [element 2] | -| array_flow.rb:404:5:404:5 | b [element 2] | array_flow.rb:408:10:408:10 | b [element 2] | -| array_flow.rb:404:9:406:7 | [post] { ... } [captured x] | array_flow.rb:407:10:407:10 | x | -| array_flow.rb:404:9:406:7 | __synth__0__1 | array_flow.rb:405:14:405:14 | x | -| array_flow.rb:404:18:404:18 | a [element 2] | array_flow.rb:404:5:404:5 | b [element 2] | -| array_flow.rb:404:18:404:18 | a [element 2] | array_flow.rb:404:9:406:7 | [post] { ... } [captured x] | -| array_flow.rb:404:18:404:18 | a [element 2] | array_flow.rb:404:9:406:7 | __synth__0__1 | -| array_flow.rb:408:10:408:10 | b [element 2] | array_flow.rb:408:10:408:13 | ...[...] | -| array_flow.rb:412:5:412:5 | a [element 2] | array_flow.rb:413:5:413:5 | a [element 2] | -| array_flow.rb:412:16:412:25 | call to source | array_flow.rb:412:5:412:5 | a [element 2] | -| array_flow.rb:413:5:413:5 | a [element 2] | array_flow.rb:413:24:413:24 | x [element] | -| array_flow.rb:413:24:413:24 | x [element] | array_flow.rb:414:15:414:15 | x [element] | -| array_flow.rb:414:15:414:15 | x [element] | array_flow.rb:414:15:414:18 | ...[...] | -| array_flow.rb:414:15:414:18 | ...[...] | array_flow.rb:414:14:414:19 | ( ... ) | -| array_flow.rb:419:5:419:5 | a [element 2] | array_flow.rb:420:9:420:9 | a [element 2] | -| array_flow.rb:419:16:419:25 | call to source | array_flow.rb:419:5:419:5 | a [element 2] | -| array_flow.rb:420:5:420:5 | b [element 2] | array_flow.rb:423:10:423:10 | b [element 2] | -| array_flow.rb:420:9:420:9 | a [element 2] | array_flow.rb:420:9:422:7 | call to each_entry [element 2] | -| array_flow.rb:420:9:420:9 | a [element 2] | array_flow.rb:420:26:420:26 | x | -| array_flow.rb:420:9:422:7 | call to each_entry [element 2] | array_flow.rb:420:5:420:5 | b [element 2] | -| array_flow.rb:420:26:420:26 | x | array_flow.rb:421:14:421:14 | x | -| array_flow.rb:423:10:423:10 | b [element 2] | array_flow.rb:423:10:423:13 | ...[...] | -| array_flow.rb:427:5:427:5 | a [element 2] | array_flow.rb:428:9:428:9 | a [element 2] | -| array_flow.rb:427:16:427:25 | call to source | array_flow.rb:427:5:427:5 | a [element 2] | -| array_flow.rb:428:5:428:5 | b [element 2] | array_flow.rb:431:10:431:10 | b [element 2] | -| array_flow.rb:428:9:428:9 | a [element 2] | array_flow.rb:428:9:430:7 | call to each_index [element 2] | -| array_flow.rb:428:9:430:7 | call to each_index [element 2] | array_flow.rb:428:5:428:5 | b [element 2] | -| array_flow.rb:431:10:431:10 | b [element 2] | array_flow.rb:431:10:431:13 | ...[...] | -| array_flow.rb:435:5:435:5 | a [element 3] | array_flow.rb:436:5:436:5 | a [element 3] | -| array_flow.rb:435:19:435:28 | call to source | array_flow.rb:435:5:435:5 | a [element 3] | -| array_flow.rb:436:5:436:5 | a [element 3] | array_flow.rb:436:25:436:25 | x [element] | -| array_flow.rb:436:25:436:25 | x [element] | array_flow.rb:437:14:437:14 | x [element] | -| array_flow.rb:437:14:437:14 | x [element] | array_flow.rb:437:14:437:17 | ...[...] | -| array_flow.rb:442:5:442:5 | a [element 3] | array_flow.rb:443:9:443:9 | a [element 3] | -| array_flow.rb:442:19:442:28 | call to source | array_flow.rb:442:5:442:5 | a [element 3] | -| array_flow.rb:443:5:443:5 | b [element 3] | array_flow.rb:447:10:447:10 | b [element 3] | -| array_flow.rb:443:9:443:9 | a [element 3] | array_flow.rb:443:9:446:7 | call to each_with_index [element 3] | -| array_flow.rb:443:9:443:9 | a [element 3] | array_flow.rb:443:31:443:31 | x | -| array_flow.rb:443:9:446:7 | call to each_with_index [element 3] | array_flow.rb:443:5:443:5 | b [element 3] | -| array_flow.rb:443:31:443:31 | x | array_flow.rb:444:14:444:14 | x | -| array_flow.rb:447:10:447:10 | b [element 3] | array_flow.rb:447:10:447:13 | ...[...] | -| array_flow.rb:451:5:451:5 | a [element 3] | array_flow.rb:452:9:452:9 | a [element 3] | -| array_flow.rb:451:19:451:30 | call to source | array_flow.rb:451:5:451:5 | a [element 3] | -| array_flow.rb:452:5:452:5 | b | array_flow.rb:456:10:456:10 | b | -| array_flow.rb:452:9:452:9 | a [element 3] | array_flow.rb:452:46:452:46 | x | -| array_flow.rb:452:9:455:7 | call to each_with_object | array_flow.rb:452:5:452:5 | b | -| array_flow.rb:452:28:452:39 | call to source | array_flow.rb:452:9:455:7 | call to each_with_object | -| array_flow.rb:452:28:452:39 | call to source | array_flow.rb:452:48:452:48 | a | -| array_flow.rb:452:46:452:46 | x | array_flow.rb:453:14:453:14 | x | -| array_flow.rb:452:48:452:48 | a | array_flow.rb:454:14:454:14 | a | -| array_flow.rb:460:5:460:5 | a [element 3] | array_flow.rb:461:9:461:9 | a [element 3] | -| array_flow.rb:460:19:460:28 | call to source | array_flow.rb:460:5:460:5 | a [element 3] | -| array_flow.rb:461:5:461:5 | b [element 3] | array_flow.rb:462:10:462:10 | b [element 3] | -| array_flow.rb:461:9:461:9 | a [element 3] | array_flow.rb:461:9:461:17 | call to entries [element 3] | -| array_flow.rb:461:9:461:17 | call to entries [element 3] | array_flow.rb:461:5:461:5 | b [element 3] | -| array_flow.rb:462:10:462:10 | b [element 3] | array_flow.rb:462:10:462:13 | ...[...] | -| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:467:9:467:9 | a [element 3] | -| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:471:9:471:9 | a [element 3] | -| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:473:9:473:9 | a [element 3] | -| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:477:9:477:9 | a [element 3] | -| array_flow.rb:466:5:466:5 | a [element 4] | array_flow.rb:467:9:467:9 | a [element 4] | -| array_flow.rb:466:5:466:5 | a [element 4] | array_flow.rb:477:9:477:9 | a [element 4] | -| array_flow.rb:466:19:466:30 | call to source | array_flow.rb:466:5:466:5 | a [element 3] | -| array_flow.rb:466:33:466:44 | call to source | array_flow.rb:466:5:466:5 | a [element 4] | -| array_flow.rb:467:5:467:5 | b | array_flow.rb:470:10:470:10 | b | -| array_flow.rb:467:9:467:9 | a [element 3] | array_flow.rb:467:9:469:7 | call to fetch | -| array_flow.rb:467:9:467:9 | a [element 4] | array_flow.rb:467:9:469:7 | call to fetch | -| array_flow.rb:467:9:469:7 | call to fetch | array_flow.rb:467:5:467:5 | b | -| array_flow.rb:467:17:467:28 | call to source | array_flow.rb:467:35:467:35 | x | -| array_flow.rb:467:35:467:35 | x | array_flow.rb:468:14:468:14 | x | -| array_flow.rb:471:5:471:5 | b | array_flow.rb:472:10:472:10 | b | -| array_flow.rb:471:9:471:9 | a [element 3] | array_flow.rb:471:9:471:18 | call to fetch | -| array_flow.rb:471:9:471:18 | call to fetch | array_flow.rb:471:5:471:5 | b | -| array_flow.rb:473:5:473:5 | b | array_flow.rb:474:10:474:10 | b | -| array_flow.rb:473:9:473:9 | a [element 3] | array_flow.rb:473:9:473:32 | call to fetch | -| array_flow.rb:473:9:473:32 | call to fetch | array_flow.rb:473:5:473:5 | b | -| array_flow.rb:473:20:473:31 | call to source | array_flow.rb:473:9:473:32 | call to fetch | -| array_flow.rb:475:5:475:5 | b | array_flow.rb:476:10:476:10 | b | -| array_flow.rb:475:9:475:34 | call to fetch | array_flow.rb:475:5:475:5 | b | -| array_flow.rb:475:22:475:33 | call to source | array_flow.rb:475:9:475:34 | call to fetch | -| array_flow.rb:477:5:477:5 | b | array_flow.rb:478:10:478:10 | b | -| array_flow.rb:477:9:477:9 | a [element 3] | array_flow.rb:477:9:477:32 | call to fetch | -| array_flow.rb:477:9:477:9 | a [element 4] | array_flow.rb:477:9:477:32 | call to fetch | -| array_flow.rb:477:9:477:32 | call to fetch | array_flow.rb:477:5:477:5 | b | -| array_flow.rb:477:20:477:31 | call to source | array_flow.rb:477:9:477:32 | call to fetch | -| array_flow.rb:482:5:482:5 | a [element 3] | array_flow.rb:484:10:484:10 | a [element 3] | -| array_flow.rb:482:19:482:30 | call to source | array_flow.rb:482:5:482:5 | a [element 3] | -| array_flow.rb:483:5:483:5 | [post] a [element] | array_flow.rb:484:10:484:10 | a [element] | -| array_flow.rb:483:12:483:23 | call to source | array_flow.rb:483:5:483:5 | [post] a [element] | -| array_flow.rb:484:10:484:10 | a [element 3] | array_flow.rb:484:10:484:13 | ...[...] | -| array_flow.rb:484:10:484:10 | a [element] | array_flow.rb:484:10:484:13 | ...[...] | -| array_flow.rb:485:5:485:5 | [post] a [element] | array_flow.rb:486:10:486:10 | a [element] | -| array_flow.rb:485:12:485:23 | call to source | array_flow.rb:485:5:485:5 | [post] a [element] | -| array_flow.rb:486:10:486:10 | a [element] | array_flow.rb:486:10:486:13 | ...[...] | -| array_flow.rb:487:5:487:5 | [post] a [element] | array_flow.rb:490:10:490:10 | a [element] | -| array_flow.rb:487:5:487:5 | [post] a [element] | array_flow.rb:494:10:494:10 | a [element] | -| array_flow.rb:488:9:488:20 | call to source | array_flow.rb:487:5:487:5 | [post] a [element] | -| array_flow.rb:490:10:490:10 | a [element] | array_flow.rb:490:10:490:13 | ...[...] | -| array_flow.rb:491:5:491:5 | [post] a [element] | array_flow.rb:494:10:494:10 | a [element] | -| array_flow.rb:492:9:492:20 | call to source | array_flow.rb:491:5:491:5 | [post] a [element] | -| array_flow.rb:494:10:494:10 | a [element] | array_flow.rb:494:10:494:13 | ...[...] | -| array_flow.rb:498:5:498:5 | a [element 3] | array_flow.rb:499:9:499:9 | a [element 3] | -| array_flow.rb:498:19:498:28 | call to source | array_flow.rb:498:5:498:5 | a [element 3] | -| array_flow.rb:499:5:499:5 | b [element] | array_flow.rb:502:10:502:10 | b [element] | -| array_flow.rb:499:9:499:9 | a [element 3] | array_flow.rb:499:9:501:7 | call to filter [element] | -| array_flow.rb:499:9:499:9 | a [element 3] | array_flow.rb:499:22:499:22 | x | -| array_flow.rb:499:9:501:7 | call to filter [element] | array_flow.rb:499:5:499:5 | b [element] | -| array_flow.rb:499:22:499:22 | x | array_flow.rb:500:14:500:14 | x | -| array_flow.rb:502:10:502:10 | b [element] | array_flow.rb:502:10:502:13 | ...[...] | -| array_flow.rb:506:5:506:5 | a [element 3] | array_flow.rb:507:9:507:9 | a [element 3] | -| array_flow.rb:506:19:506:28 | call to source | array_flow.rb:506:5:506:5 | a [element 3] | -| array_flow.rb:507:5:507:5 | b [element] | array_flow.rb:511:10:511:10 | b [element] | -| array_flow.rb:507:9:507:9 | a [element 3] | array_flow.rb:507:9:510:7 | call to filter_map [element] | -| array_flow.rb:507:9:507:9 | a [element 3] | array_flow.rb:507:26:507:26 | x | -| array_flow.rb:507:9:510:7 | call to filter_map [element] | array_flow.rb:507:5:507:5 | b [element] | -| array_flow.rb:507:26:507:26 | x | array_flow.rb:508:14:508:14 | x | -| array_flow.rb:511:10:511:10 | b [element] | array_flow.rb:511:10:511:13 | ...[...] | -| array_flow.rb:518:5:518:5 | d [element] | array_flow.rb:521:10:521:10 | d [element] | -| array_flow.rb:518:9:520:7 | call to filter_map [element] | array_flow.rb:518:5:518:5 | d [element] | -| array_flow.rb:519:9:519:20 | call to source | array_flow.rb:518:9:520:7 | call to filter_map [element] | -| array_flow.rb:521:10:521:10 | d [element] | array_flow.rb:521:10:521:13 | ...[...] | -| array_flow.rb:525:5:525:5 | a [element 3] | array_flow.rb:526:9:526:9 | a [element 3] | -| array_flow.rb:525:19:525:28 | call to source | array_flow.rb:525:5:525:5 | a [element 3] | -| array_flow.rb:526:5:526:5 | b [element] | array_flow.rb:531:10:531:10 | b [element] | -| array_flow.rb:526:9:526:9 | [post] a [element] | array_flow.rb:530:10:530:10 | a [element] | -| array_flow.rb:526:9:526:9 | a [element 3] | array_flow.rb:526:9:526:9 | [post] a [element] | -| array_flow.rb:526:9:526:9 | a [element 3] | array_flow.rb:526:9:529:7 | call to filter! [element] | -| array_flow.rb:526:9:526:9 | a [element 3] | array_flow.rb:526:23:526:23 | x | -| array_flow.rb:526:9:529:7 | call to filter! [element] | array_flow.rb:526:5:526:5 | b [element] | -| array_flow.rb:526:23:526:23 | x | array_flow.rb:527:14:527:14 | x | -| array_flow.rb:530:10:530:10 | a [element] | array_flow.rb:530:10:530:13 | ...[...] | -| array_flow.rb:531:10:531:10 | b [element] | array_flow.rb:531:10:531:13 | ...[...] | -| array_flow.rb:535:5:535:5 | a [element 3] | array_flow.rb:536:9:536:9 | a [element 3] | -| array_flow.rb:535:19:535:30 | call to source | array_flow.rb:535:5:535:5 | a [element 3] | -| array_flow.rb:536:5:536:5 | b | array_flow.rb:539:10:539:10 | b | -| array_flow.rb:536:9:536:9 | a [element 3] | array_flow.rb:536:9:538:7 | call to find | -| array_flow.rb:536:9:536:9 | a [element 3] | array_flow.rb:536:41:536:41 | x | -| array_flow.rb:536:9:538:7 | call to find | array_flow.rb:536:5:536:5 | b | -| array_flow.rb:536:21:536:32 | call to source | array_flow.rb:536:9:538:7 | call to find | -| array_flow.rb:536:41:536:41 | x | array_flow.rb:537:14:537:14 | x | -| array_flow.rb:543:5:543:5 | a [element 3] | array_flow.rb:544:9:544:9 | a [element 3] | -| array_flow.rb:543:19:543:28 | call to source | array_flow.rb:543:5:543:5 | a [element 3] | -| array_flow.rb:544:5:544:5 | b [element] | array_flow.rb:547:10:547:10 | b [element] | -| array_flow.rb:544:9:544:9 | a [element 3] | array_flow.rb:544:9:546:7 | call to find_all [element] | -| array_flow.rb:544:9:544:9 | a [element 3] | array_flow.rb:544:24:544:24 | x | -| array_flow.rb:544:9:546:7 | call to find_all [element] | array_flow.rb:544:5:544:5 | b [element] | -| array_flow.rb:544:24:544:24 | x | array_flow.rb:545:14:545:14 | x | -| array_flow.rb:547:10:547:10 | b [element] | array_flow.rb:547:10:547:13 | ...[...] | -| array_flow.rb:551:5:551:5 | a [element 3] | array_flow.rb:552:5:552:5 | a [element 3] | -| array_flow.rb:551:19:551:28 | call to source | array_flow.rb:551:5:551:5 | a [element 3] | -| array_flow.rb:552:5:552:5 | a [element 3] | array_flow.rb:552:22:552:22 | x | -| array_flow.rb:552:22:552:22 | x | array_flow.rb:553:14:553:14 | x | -| array_flow.rb:558:5:558:5 | a [element 0] | array_flow.rb:560:10:560:10 | a [element 0] | -| array_flow.rb:558:5:558:5 | a [element 0] | array_flow.rb:561:9:561:9 | a [element 0] | -| array_flow.rb:558:5:558:5 | a [element 0] | array_flow.rb:564:9:564:9 | a [element 0] | -| array_flow.rb:558:5:558:5 | a [element 3] | array_flow.rb:564:9:564:9 | a [element 3] | -| array_flow.rb:558:10:558:21 | call to source | array_flow.rb:558:5:558:5 | a [element 0] | -| array_flow.rb:558:30:558:41 | call to source | array_flow.rb:558:5:558:5 | a [element 3] | -| array_flow.rb:559:5:559:5 | [post] a [element] | array_flow.rb:560:10:560:10 | a [element] | -| array_flow.rb:559:5:559:5 | [post] a [element] | array_flow.rb:561:9:561:9 | a [element] | -| array_flow.rb:559:5:559:5 | [post] a [element] | array_flow.rb:564:9:564:9 | a [element] | -| array_flow.rb:559:12:559:23 | call to source | array_flow.rb:559:5:559:5 | [post] a [element] | -| array_flow.rb:560:10:560:10 | a [element 0] | array_flow.rb:560:10:560:16 | call to first | -| array_flow.rb:560:10:560:10 | a [element] | array_flow.rb:560:10:560:16 | call to first | -| array_flow.rb:561:5:561:5 | b [element 0] | array_flow.rb:562:10:562:10 | b [element 0] | -| array_flow.rb:561:5:561:5 | b [element] | array_flow.rb:562:10:562:10 | b [element] | -| array_flow.rb:561:5:561:5 | b [element] | array_flow.rb:563:10:563:10 | b [element] | -| array_flow.rb:561:9:561:9 | a [element 0] | array_flow.rb:561:9:561:18 | call to first [element 0] | -| array_flow.rb:561:9:561:9 | a [element] | array_flow.rb:561:9:561:18 | call to first [element] | -| array_flow.rb:561:9:561:18 | call to first [element 0] | array_flow.rb:561:5:561:5 | b [element 0] | -| array_flow.rb:561:9:561:18 | call to first [element] | array_flow.rb:561:5:561:5 | b [element] | -| array_flow.rb:562:10:562:10 | b [element 0] | array_flow.rb:562:10:562:13 | ...[...] | -| array_flow.rb:562:10:562:10 | b [element] | array_flow.rb:562:10:562:13 | ...[...] | -| array_flow.rb:563:10:563:10 | b [element] | array_flow.rb:563:10:563:13 | ...[...] | -| array_flow.rb:564:5:564:5 | c [element 0] | array_flow.rb:565:10:565:10 | c [element 0] | -| array_flow.rb:564:5:564:5 | c [element 3] | array_flow.rb:566:10:566:10 | c [element 3] | -| array_flow.rb:564:5:564:5 | c [element] | array_flow.rb:565:10:565:10 | c [element] | -| array_flow.rb:564:5:564:5 | c [element] | array_flow.rb:566:10:566:10 | c [element] | -| array_flow.rb:564:9:564:9 | a [element 0] | array_flow.rb:564:9:564:18 | call to first [element 0] | -| array_flow.rb:564:9:564:9 | a [element 3] | array_flow.rb:564:9:564:18 | call to first [element 3] | -| array_flow.rb:564:9:564:9 | a [element] | array_flow.rb:564:9:564:18 | call to first [element] | -| array_flow.rb:564:9:564:18 | call to first [element 0] | array_flow.rb:564:5:564:5 | c [element 0] | -| array_flow.rb:564:9:564:18 | call to first [element 3] | array_flow.rb:564:5:564:5 | c [element 3] | -| array_flow.rb:564:9:564:18 | call to first [element] | array_flow.rb:564:5:564:5 | c [element] | -| array_flow.rb:565:10:565:10 | c [element 0] | array_flow.rb:565:10:565:13 | ...[...] | -| array_flow.rb:565:10:565:10 | c [element] | array_flow.rb:565:10:565:13 | ...[...] | -| array_flow.rb:566:10:566:10 | c [element 3] | array_flow.rb:566:10:566:13 | ...[...] | -| array_flow.rb:566:10:566:10 | c [element] | array_flow.rb:566:10:566:13 | ...[...] | -| array_flow.rb:570:5:570:5 | a [element 2] | array_flow.rb:571:9:571:9 | a [element 2] | -| array_flow.rb:570:5:570:5 | a [element 2] | array_flow.rb:576:9:576:9 | a [element 2] | -| array_flow.rb:570:16:570:27 | call to source | array_flow.rb:570:5:570:5 | a [element 2] | -| array_flow.rb:571:5:571:5 | b [element] | array_flow.rb:575:10:575:10 | b [element] | -| array_flow.rb:571:9:571:9 | a [element 2] | array_flow.rb:571:9:574:7 | call to flat_map [element] | -| array_flow.rb:571:9:571:9 | a [element 2] | array_flow.rb:571:24:571:24 | x | -| array_flow.rb:571:9:574:7 | call to flat_map [element] | array_flow.rb:571:5:571:5 | b [element] | -| array_flow.rb:571:24:571:24 | x | array_flow.rb:572:14:572:14 | x | -| array_flow.rb:573:13:573:24 | call to source | array_flow.rb:571:9:574:7 | call to flat_map [element] | -| array_flow.rb:575:10:575:10 | b [element] | array_flow.rb:575:10:575:13 | ...[...] | -| array_flow.rb:576:5:576:5 | b [element] | array_flow.rb:580:10:580:10 | b [element] | -| array_flow.rb:576:9:576:9 | a [element 2] | array_flow.rb:576:24:576:24 | x | -| array_flow.rb:576:9:579:7 | call to flat_map [element] | array_flow.rb:576:5:576:5 | b [element] | -| array_flow.rb:576:24:576:24 | x | array_flow.rb:577:14:577:14 | x | -| array_flow.rb:578:9:578:20 | call to source | array_flow.rb:576:9:579:7 | call to flat_map [element] | -| array_flow.rb:580:10:580:10 | b [element] | array_flow.rb:580:10:580:13 | ...[...] | -| array_flow.rb:584:5:584:5 | a [element 2, element 1] | array_flow.rb:585:9:585:9 | a [element 2, element 1] | -| array_flow.rb:584:20:584:29 | call to source | array_flow.rb:584:5:584:5 | a [element 2, element 1] | -| array_flow.rb:585:5:585:5 | b [element] | array_flow.rb:586:10:586:10 | b [element] | -| array_flow.rb:585:9:585:9 | a [element 2, element 1] | array_flow.rb:585:9:585:17 | call to flatten [element] | -| array_flow.rb:585:9:585:17 | call to flatten [element] | array_flow.rb:585:5:585:5 | b [element] | -| array_flow.rb:586:10:586:10 | b [element] | array_flow.rb:586:10:586:13 | ...[...] | -| array_flow.rb:590:5:590:5 | a [element 2, element 1] | array_flow.rb:591:10:591:10 | a [element 2, element 1] | -| array_flow.rb:590:5:590:5 | a [element 2, element 1] | array_flow.rb:592:9:592:9 | a [element 2, element 1] | -| array_flow.rb:590:20:590:29 | call to source | array_flow.rb:590:5:590:5 | a [element 2, element 1] | -| array_flow.rb:591:10:591:10 | a [element 2, element 1] | array_flow.rb:591:10:591:13 | ...[...] [element 1] | -| array_flow.rb:591:10:591:13 | ...[...] [element 1] | array_flow.rb:591:10:591:16 | ...[...] | -| array_flow.rb:592:5:592:5 | b [element, element 1] | array_flow.rb:596:10:596:10 | b [element, element 1] | -| array_flow.rb:592:5:592:5 | b [element] | array_flow.rb:595:10:595:10 | b [element] | -| array_flow.rb:592:9:592:9 | [post] a [element, element 1] | array_flow.rb:594:10:594:10 | a [element, element 1] | -| array_flow.rb:592:9:592:9 | [post] a [element] | array_flow.rb:593:10:593:10 | a [element] | -| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:9 | [post] a [element, element 1] | -| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:9 | [post] a [element] | -| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:18 | call to flatten! [element, element 1] | -| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:18 | call to flatten! [element] | -| array_flow.rb:592:9:592:18 | call to flatten! [element, element 1] | array_flow.rb:592:5:592:5 | b [element, element 1] | -| array_flow.rb:592:9:592:18 | call to flatten! [element] | array_flow.rb:592:5:592:5 | b [element] | -| array_flow.rb:593:10:593:10 | a [element] | array_flow.rb:593:10:593:13 | ...[...] | -| array_flow.rb:594:10:594:10 | a [element, element 1] | array_flow.rb:594:10:594:13 | ...[...] [element 1] | -| array_flow.rb:594:10:594:13 | ...[...] [element 1] | array_flow.rb:594:10:594:16 | ...[...] | -| array_flow.rb:595:10:595:10 | b [element] | array_flow.rb:595:10:595:13 | ...[...] | -| array_flow.rb:596:10:596:10 | b [element, element 1] | array_flow.rb:596:10:596:13 | ...[...] [element 1] | -| array_flow.rb:596:10:596:13 | ...[...] [element 1] | array_flow.rb:596:10:596:16 | ...[...] | -| array_flow.rb:600:5:600:5 | a [element 3] | array_flow.rb:601:9:601:9 | a [element 3] | -| array_flow.rb:600:5:600:5 | a [element 3] | array_flow.rb:603:9:603:9 | a [element 3] | -| array_flow.rb:600:19:600:30 | call to source | array_flow.rb:600:5:600:5 | a [element 3] | -| array_flow.rb:601:5:601:5 | b [element] | array_flow.rb:602:10:602:10 | b [element] | -| array_flow.rb:601:9:601:9 | a [element 3] | array_flow.rb:601:9:601:20 | call to grep [element] | -| array_flow.rb:601:9:601:20 | call to grep [element] | array_flow.rb:601:5:601:5 | b [element] | -| array_flow.rb:602:10:602:10 | b [element] | array_flow.rb:602:10:602:13 | ...[...] | -| array_flow.rb:603:5:603:5 | b [element] | array_flow.rb:607:10:607:10 | b [element] | -| array_flow.rb:603:9:603:9 | a [element 3] | array_flow.rb:603:26:603:26 | x | -| array_flow.rb:603:9:606:7 | call to grep [element] | array_flow.rb:603:5:603:5 | b [element] | -| array_flow.rb:603:26:603:26 | x | array_flow.rb:604:14:604:14 | x | -| array_flow.rb:605:9:605:20 | call to source | array_flow.rb:603:9:606:7 | call to grep [element] | -| array_flow.rb:607:10:607:10 | b [element] | array_flow.rb:607:10:607:13 | ...[...] | -| array_flow.rb:611:5:611:5 | a [element 3] | array_flow.rb:612:9:612:9 | a [element 3] | -| array_flow.rb:611:5:611:5 | a [element 3] | array_flow.rb:614:9:614:9 | a [element 3] | -| array_flow.rb:611:19:611:30 | call to source | array_flow.rb:611:5:611:5 | a [element 3] | -| array_flow.rb:612:5:612:5 | b [element] | array_flow.rb:613:10:613:10 | b [element] | -| array_flow.rb:612:9:612:9 | a [element 3] | array_flow.rb:612:9:612:21 | call to grep_v [element] | -| array_flow.rb:612:9:612:21 | call to grep_v [element] | array_flow.rb:612:5:612:5 | b [element] | -| array_flow.rb:613:10:613:10 | b [element] | array_flow.rb:613:10:613:13 | ...[...] | -| array_flow.rb:614:5:614:5 | b [element] | array_flow.rb:618:10:618:10 | b [element] | -| array_flow.rb:614:9:614:9 | a [element 3] | array_flow.rb:614:27:614:27 | x | -| array_flow.rb:614:9:617:7 | call to grep_v [element] | array_flow.rb:614:5:614:5 | b [element] | -| array_flow.rb:614:27:614:27 | x | array_flow.rb:615:14:615:14 | x | -| array_flow.rb:616:9:616:20 | call to source | array_flow.rb:614:9:617:7 | call to grep_v [element] | -| array_flow.rb:618:10:618:10 | b [element] | array_flow.rb:618:10:618:13 | ...[...] | -| array_flow.rb:622:5:622:5 | a [element 3] | array_flow.rb:623:9:623:9 | a [element 3] | -| array_flow.rb:622:19:622:30 | call to source | array_flow.rb:622:5:622:5 | a [element 3] | -| array_flow.rb:623:9:623:9 | a [element 3] | array_flow.rb:623:24:623:24 | x | -| array_flow.rb:623:24:623:24 | x | array_flow.rb:624:14:624:14 | x | -| array_flow.rb:631:5:631:5 | a [element 3] | array_flow.rb:632:5:632:5 | a [element 3] | -| array_flow.rb:631:19:631:28 | call to source | array_flow.rb:631:5:631:5 | a [element 3] | -| array_flow.rb:632:5:632:5 | a [element 3] | array_flow.rb:632:17:632:17 | x | -| array_flow.rb:632:17:632:17 | x | array_flow.rb:633:14:633:14 | x | -| array_flow.rb:638:5:638:5 | a [element 0] | array_flow.rb:639:9:639:9 | a [element 0] | -| array_flow.rb:638:5:638:5 | a [element 0] | array_flow.rb:645:9:645:9 | a [element 0] | -| array_flow.rb:638:5:638:5 | a [element 2] | array_flow.rb:639:9:639:9 | a [element 2] | -| array_flow.rb:638:5:638:5 | a [element 2] | array_flow.rb:645:9:645:9 | a [element 2] | -| array_flow.rb:638:10:638:21 | call to source | array_flow.rb:638:5:638:5 | a [element 0] | -| array_flow.rb:638:27:638:38 | call to source | array_flow.rb:638:5:638:5 | a [element 2] | -| array_flow.rb:639:5:639:5 | b | array_flow.rb:644:10:644:10 | b | -| array_flow.rb:639:9:639:9 | a [element 0] | array_flow.rb:639:22:639:22 | x | -| array_flow.rb:639:9:639:9 | a [element 2] | array_flow.rb:639:25:639:25 | y | -| array_flow.rb:639:9:643:7 | call to inject | array_flow.rb:639:5:639:5 | b | -| array_flow.rb:639:22:639:22 | x | array_flow.rb:640:14:640:14 | x | -| array_flow.rb:639:25:639:25 | y | array_flow.rb:641:14:641:14 | y | -| array_flow.rb:642:9:642:19 | call to source | array_flow.rb:639:9:643:7 | call to inject | -| array_flow.rb:645:5:645:5 | c | array_flow.rb:650:10:650:10 | c | -| array_flow.rb:645:9:645:9 | a [element 0] | array_flow.rb:645:28:645:28 | y | -| array_flow.rb:645:9:645:9 | a [element 2] | array_flow.rb:645:28:645:28 | y | -| array_flow.rb:645:9:649:7 | call to inject | array_flow.rb:645:5:645:5 | c | -| array_flow.rb:645:28:645:28 | y | array_flow.rb:647:14:647:14 | y | -| array_flow.rb:648:9:648:19 | call to source | array_flow.rb:645:9:649:7 | call to inject | -| array_flow.rb:655:5:655:5 | a [element 2] | array_flow.rb:656:9:656:9 | a [element 2] | -| array_flow.rb:655:16:655:27 | call to source | array_flow.rb:655:5:655:5 | a [element 2] | -| array_flow.rb:656:5:656:5 | b [element 1] | array_flow.rb:663:10:663:10 | b [element 1] | -| array_flow.rb:656:5:656:5 | b [element 2] | array_flow.rb:664:10:664:10 | b [element 2] | -| array_flow.rb:656:5:656:5 | b [element 4] | array_flow.rb:666:10:666:10 | b [element 4] | -| array_flow.rb:656:9:656:9 | [post] a [element 1] | array_flow.rb:658:10:658:10 | a [element 1] | -| array_flow.rb:656:9:656:9 | [post] a [element 2] | array_flow.rb:659:10:659:10 | a [element 2] | -| array_flow.rb:656:9:656:9 | [post] a [element 4] | array_flow.rb:661:10:661:10 | a [element 4] | -| array_flow.rb:656:9:656:9 | a [element 2] | array_flow.rb:656:9:656:9 | [post] a [element 4] | -| array_flow.rb:656:9:656:9 | a [element 2] | array_flow.rb:656:9:656:47 | call to insert [element 4] | -| array_flow.rb:656:9:656:47 | call to insert [element 1] | array_flow.rb:656:5:656:5 | b [element 1] | -| array_flow.rb:656:9:656:47 | call to insert [element 2] | array_flow.rb:656:5:656:5 | b [element 2] | -| array_flow.rb:656:9:656:47 | call to insert [element 4] | array_flow.rb:656:5:656:5 | b [element 4] | -| array_flow.rb:656:21:656:32 | call to source | array_flow.rb:656:9:656:9 | [post] a [element 1] | -| array_flow.rb:656:21:656:32 | call to source | array_flow.rb:656:9:656:47 | call to insert [element 1] | -| array_flow.rb:656:35:656:46 | call to source | array_flow.rb:656:9:656:9 | [post] a [element 2] | -| array_flow.rb:656:35:656:46 | call to source | array_flow.rb:656:9:656:47 | call to insert [element 2] | -| array_flow.rb:658:10:658:10 | a [element 1] | array_flow.rb:658:10:658:13 | ...[...] | -| array_flow.rb:659:10:659:10 | a [element 2] | array_flow.rb:659:10:659:13 | ...[...] | -| array_flow.rb:661:10:661:10 | a [element 4] | array_flow.rb:661:10:661:13 | ...[...] | -| array_flow.rb:663:10:663:10 | b [element 1] | array_flow.rb:663:10:663:13 | ...[...] | -| array_flow.rb:664:10:664:10 | b [element 2] | array_flow.rb:664:10:664:13 | ...[...] | -| array_flow.rb:666:10:666:10 | b [element 4] | array_flow.rb:666:10:666:13 | ...[...] | -| array_flow.rb:669:5:669:5 | c [element 2] | array_flow.rb:670:9:670:9 | c [element 2] | -| array_flow.rb:669:16:669:27 | call to source | array_flow.rb:669:5:669:5 | c [element 2] | -| array_flow.rb:670:5:670:5 | d [element] | array_flow.rb:672:10:672:10 | d [element] | -| array_flow.rb:670:9:670:9 | [post] c [element] | array_flow.rb:671:10:671:10 | c [element] | -| array_flow.rb:670:9:670:9 | c [element 2] | array_flow.rb:670:9:670:9 | [post] c [element] | -| array_flow.rb:670:9:670:9 | c [element 2] | array_flow.rb:670:9:670:47 | call to insert [element] | -| array_flow.rb:670:9:670:47 | call to insert [element] | array_flow.rb:670:5:670:5 | d [element] | -| array_flow.rb:670:21:670:32 | call to source | array_flow.rb:670:9:670:9 | [post] c [element] | -| array_flow.rb:670:21:670:32 | call to source | array_flow.rb:670:9:670:47 | call to insert [element] | -| array_flow.rb:670:35:670:46 | call to source | array_flow.rb:670:9:670:9 | [post] c [element] | -| array_flow.rb:670:35:670:46 | call to source | array_flow.rb:670:9:670:47 | call to insert [element] | -| array_flow.rb:671:10:671:10 | c [element] | array_flow.rb:671:10:671:13 | ...[...] | -| array_flow.rb:672:10:672:10 | d [element] | array_flow.rb:672:10:672:13 | ...[...] | -| array_flow.rb:683:5:683:5 | a [element 2] | array_flow.rb:684:9:684:9 | a [element 2] | -| array_flow.rb:683:16:683:27 | call to source | array_flow.rb:683:5:683:5 | a [element 2] | -| array_flow.rb:684:5:684:5 | b [element] | array_flow.rb:685:10:685:10 | b [element] | -| array_flow.rb:684:9:684:9 | a [element 2] | array_flow.rb:684:9:684:60 | call to intersection [element] | -| array_flow.rb:684:9:684:60 | call to intersection [element] | array_flow.rb:684:5:684:5 | b [element] | -| array_flow.rb:684:31:684:42 | call to source | array_flow.rb:684:9:684:60 | call to intersection [element] | -| array_flow.rb:684:47:684:58 | call to source | array_flow.rb:684:9:684:60 | call to intersection [element] | -| array_flow.rb:685:10:685:10 | b [element] | array_flow.rb:685:10:685:13 | ...[...] | -| array_flow.rb:689:5:689:5 | a [element 2] | array_flow.rb:690:9:690:9 | a [element 2] | -| array_flow.rb:689:16:689:25 | call to source | array_flow.rb:689:5:689:5 | a [element 2] | -| array_flow.rb:690:5:690:5 | b [element] | array_flow.rb:695:10:695:10 | b [element] | -| array_flow.rb:690:9:690:9 | [post] a [element] | array_flow.rb:694:10:694:10 | a [element] | -| array_flow.rb:690:9:690:9 | a [element 2] | array_flow.rb:690:9:690:9 | [post] a [element] | -| array_flow.rb:690:9:690:9 | a [element 2] | array_flow.rb:690:9:693:7 | call to keep_if [element] | -| array_flow.rb:690:9:690:9 | a [element 2] | array_flow.rb:690:23:690:23 | x | -| array_flow.rb:690:9:693:7 | call to keep_if [element] | array_flow.rb:690:5:690:5 | b [element] | -| array_flow.rb:690:23:690:23 | x | array_flow.rb:691:14:691:14 | x | -| array_flow.rb:694:10:694:10 | a [element] | array_flow.rb:694:10:694:13 | ...[...] | -| array_flow.rb:695:10:695:10 | b [element] | array_flow.rb:695:10:695:13 | ...[...] | -| array_flow.rb:699:5:699:5 | a [element 2] | array_flow.rb:701:10:701:10 | a [element 2] | -| array_flow.rb:699:5:699:5 | a [element 2] | array_flow.rb:702:9:702:9 | a [element 2] | -| array_flow.rb:699:16:699:27 | call to source | array_flow.rb:699:5:699:5 | a [element 2] | -| array_flow.rb:700:5:700:5 | [post] a [element] | array_flow.rb:701:10:701:10 | a [element] | -| array_flow.rb:700:5:700:5 | [post] a [element] | array_flow.rb:702:9:702:9 | a [element] | -| array_flow.rb:700:12:700:23 | call to source | array_flow.rb:700:5:700:5 | [post] a [element] | -| array_flow.rb:701:10:701:10 | a [element 2] | array_flow.rb:701:10:701:15 | call to last | -| array_flow.rb:701:10:701:10 | a [element] | array_flow.rb:701:10:701:15 | call to last | -| array_flow.rb:702:5:702:5 | b [element] | array_flow.rb:703:10:703:10 | b [element] | -| array_flow.rb:702:5:702:5 | b [element] | array_flow.rb:704:10:704:10 | b [element] | -| array_flow.rb:702:9:702:9 | a [element 2] | array_flow.rb:702:9:702:17 | call to last [element] | -| array_flow.rb:702:9:702:9 | a [element] | array_flow.rb:702:9:702:17 | call to last [element] | -| array_flow.rb:702:9:702:17 | call to last [element] | array_flow.rb:702:5:702:5 | b [element] | -| array_flow.rb:703:10:703:10 | b [element] | array_flow.rb:703:10:703:13 | ...[...] | -| array_flow.rb:704:10:704:10 | b [element] | array_flow.rb:704:10:704:13 | ...[...] | -| array_flow.rb:708:5:708:5 | a [element 2] | array_flow.rb:709:9:709:9 | a [element 2] | -| array_flow.rb:708:16:708:27 | call to source | array_flow.rb:708:5:708:5 | a [element 2] | -| array_flow.rb:709:5:709:5 | b [element] | array_flow.rb:713:10:713:10 | b [element] | -| array_flow.rb:709:9:709:9 | a [element 2] | array_flow.rb:709:19:709:19 | x | -| array_flow.rb:709:9:712:7 | call to map [element] | array_flow.rb:709:5:709:5 | b [element] | -| array_flow.rb:709:19:709:19 | x | array_flow.rb:710:14:710:14 | x | -| array_flow.rb:711:9:711:19 | call to source | array_flow.rb:709:9:712:7 | call to map [element] | -| array_flow.rb:713:10:713:10 | b [element] | array_flow.rb:713:10:713:13 | ...[...] | -| array_flow.rb:717:5:717:5 | a [element 2] | array_flow.rb:718:9:718:9 | a [element 2] | -| array_flow.rb:717:16:717:27 | call to source | array_flow.rb:717:5:717:5 | a [element 2] | -| array_flow.rb:718:5:718:5 | b [element] | array_flow.rb:722:10:722:10 | b [element] | -| array_flow.rb:718:9:718:9 | a [element 2] | array_flow.rb:718:20:718:20 | x | -| array_flow.rb:718:9:721:7 | call to map! [element] | array_flow.rb:718:5:718:5 | b [element] | -| array_flow.rb:718:20:718:20 | x | array_flow.rb:719:14:719:14 | x | -| array_flow.rb:720:9:720:19 | call to source | array_flow.rb:718:9:721:7 | call to map! [element] | -| array_flow.rb:722:10:722:10 | b [element] | array_flow.rb:722:10:722:13 | ...[...] | -| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:729:9:729:9 | a [element 2] | -| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:733:9:733:9 | a [element 2] | -| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:737:9:737:9 | a [element 2] | -| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:745:9:745:9 | a [element 2] | -| array_flow.rb:726:16:726:25 | call to source | array_flow.rb:726:5:726:5 | a [element 2] | -| array_flow.rb:729:5:729:5 | b | array_flow.rb:730:10:730:10 | b | -| array_flow.rb:729:9:729:9 | a [element 2] | array_flow.rb:729:9:729:13 | call to max | -| array_flow.rb:729:9:729:13 | call to max | array_flow.rb:729:5:729:5 | b | -| array_flow.rb:733:5:733:5 | c [element] | array_flow.rb:734:10:734:10 | c [element] | -| array_flow.rb:733:9:733:9 | a [element 2] | array_flow.rb:733:9:733:16 | call to max [element] | -| array_flow.rb:733:9:733:16 | call to max [element] | array_flow.rb:733:5:733:5 | c [element] | -| array_flow.rb:734:10:734:10 | c [element] | array_flow.rb:734:10:734:13 | ...[...] | -| array_flow.rb:737:5:737:5 | d | array_flow.rb:742:10:742:10 | d | -| array_flow.rb:737:9:737:9 | a [element 2] | array_flow.rb:737:9:741:7 | call to max | -| array_flow.rb:737:9:737:9 | a [element 2] | array_flow.rb:737:19:737:19 | x | -| array_flow.rb:737:9:737:9 | a [element 2] | array_flow.rb:737:22:737:22 | y | -| array_flow.rb:737:9:741:7 | call to max | array_flow.rb:737:5:737:5 | d | -| array_flow.rb:737:19:737:19 | x | array_flow.rb:738:14:738:14 | x | -| array_flow.rb:737:22:737:22 | y | array_flow.rb:739:14:739:14 | y | -| array_flow.rb:745:5:745:5 | e [element] | array_flow.rb:750:10:750:10 | e [element] | -| array_flow.rb:745:9:745:9 | a [element 2] | array_flow.rb:745:9:749:7 | call to max [element] | -| array_flow.rb:745:9:745:9 | a [element 2] | array_flow.rb:745:22:745:22 | x | -| array_flow.rb:745:9:745:9 | a [element 2] | array_flow.rb:745:25:745:25 | y | -| array_flow.rb:745:9:749:7 | call to max [element] | array_flow.rb:745:5:745:5 | e [element] | -| array_flow.rb:745:22:745:22 | x | array_flow.rb:746:14:746:14 | x | -| array_flow.rb:745:25:745:25 | y | array_flow.rb:747:14:747:14 | y | -| array_flow.rb:750:10:750:10 | e [element] | array_flow.rb:750:10:750:13 | ...[...] | -| array_flow.rb:754:5:754:5 | a [element 2] | array_flow.rb:757:9:757:9 | a [element 2] | -| array_flow.rb:754:5:754:5 | a [element 2] | array_flow.rb:764:9:764:9 | a [element 2] | -| array_flow.rb:754:16:754:25 | call to source | array_flow.rb:754:5:754:5 | a [element 2] | -| array_flow.rb:757:5:757:5 | b | array_flow.rb:761:10:761:10 | b | -| array_flow.rb:757:9:757:9 | a [element 2] | array_flow.rb:757:9:760:7 | call to max_by | -| array_flow.rb:757:9:757:9 | a [element 2] | array_flow.rb:757:22:757:22 | x | -| array_flow.rb:757:9:760:7 | call to max_by | array_flow.rb:757:5:757:5 | b | -| array_flow.rb:757:22:757:22 | x | array_flow.rb:758:14:758:14 | x | -| array_flow.rb:764:5:764:5 | c [element] | array_flow.rb:768:10:768:10 | c [element] | -| array_flow.rb:764:9:764:9 | a [element 2] | array_flow.rb:764:9:767:7 | call to max_by [element] | -| array_flow.rb:764:9:764:9 | a [element 2] | array_flow.rb:764:25:764:25 | x | -| array_flow.rb:764:9:767:7 | call to max_by [element] | array_flow.rb:764:5:764:5 | c [element] | -| array_flow.rb:764:25:764:25 | x | array_flow.rb:765:14:765:14 | x | -| array_flow.rb:768:10:768:10 | c [element] | array_flow.rb:768:10:768:13 | ...[...] | -| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:775:9:775:9 | a [element 2] | -| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:779:9:779:9 | a [element 2] | -| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:783:9:783:9 | a [element 2] | -| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:791:9:791:9 | a [element 2] | -| array_flow.rb:772:16:772:25 | call to source | array_flow.rb:772:5:772:5 | a [element 2] | -| array_flow.rb:775:5:775:5 | b | array_flow.rb:776:10:776:10 | b | -| array_flow.rb:775:9:775:9 | a [element 2] | array_flow.rb:775:9:775:13 | call to min | -| array_flow.rb:775:9:775:13 | call to min | array_flow.rb:775:5:775:5 | b | -| array_flow.rb:779:5:779:5 | c [element] | array_flow.rb:780:10:780:10 | c [element] | -| array_flow.rb:779:9:779:9 | a [element 2] | array_flow.rb:779:9:779:16 | call to min [element] | -| array_flow.rb:779:9:779:16 | call to min [element] | array_flow.rb:779:5:779:5 | c [element] | -| array_flow.rb:780:10:780:10 | c [element] | array_flow.rb:780:10:780:13 | ...[...] | -| array_flow.rb:783:5:783:5 | d | array_flow.rb:788:10:788:10 | d | -| array_flow.rb:783:9:783:9 | a [element 2] | array_flow.rb:783:9:787:7 | call to min | -| array_flow.rb:783:9:783:9 | a [element 2] | array_flow.rb:783:19:783:19 | x | -| array_flow.rb:783:9:783:9 | a [element 2] | array_flow.rb:783:22:783:22 | y | -| array_flow.rb:783:9:787:7 | call to min | array_flow.rb:783:5:783:5 | d | -| array_flow.rb:783:19:783:19 | x | array_flow.rb:784:14:784:14 | x | -| array_flow.rb:783:22:783:22 | y | array_flow.rb:785:14:785:14 | y | -| array_flow.rb:791:5:791:5 | e [element] | array_flow.rb:796:10:796:10 | e [element] | -| array_flow.rb:791:9:791:9 | a [element 2] | array_flow.rb:791:9:795:7 | call to min [element] | -| array_flow.rb:791:9:791:9 | a [element 2] | array_flow.rb:791:22:791:22 | x | -| array_flow.rb:791:9:791:9 | a [element 2] | array_flow.rb:791:25:791:25 | y | -| array_flow.rb:791:9:795:7 | call to min [element] | array_flow.rb:791:5:791:5 | e [element] | -| array_flow.rb:791:22:791:22 | x | array_flow.rb:792:14:792:14 | x | -| array_flow.rb:791:25:791:25 | y | array_flow.rb:793:14:793:14 | y | -| array_flow.rb:796:10:796:10 | e [element] | array_flow.rb:796:10:796:13 | ...[...] | -| array_flow.rb:800:5:800:5 | a [element 2] | array_flow.rb:803:9:803:9 | a [element 2] | -| array_flow.rb:800:5:800:5 | a [element 2] | array_flow.rb:810:9:810:9 | a [element 2] | -| array_flow.rb:800:16:800:25 | call to source | array_flow.rb:800:5:800:5 | a [element 2] | -| array_flow.rb:803:5:803:5 | b | array_flow.rb:807:10:807:10 | b | -| array_flow.rb:803:9:803:9 | a [element 2] | array_flow.rb:803:9:806:7 | call to min_by | -| array_flow.rb:803:9:803:9 | a [element 2] | array_flow.rb:803:22:803:22 | x | -| array_flow.rb:803:9:806:7 | call to min_by | array_flow.rb:803:5:803:5 | b | -| array_flow.rb:803:22:803:22 | x | array_flow.rb:804:14:804:14 | x | -| array_flow.rb:810:5:810:5 | c [element] | array_flow.rb:814:10:814:10 | c [element] | -| array_flow.rb:810:9:810:9 | a [element 2] | array_flow.rb:810:9:813:7 | call to min_by [element] | -| array_flow.rb:810:9:810:9 | a [element 2] | array_flow.rb:810:25:810:25 | x | -| array_flow.rb:810:9:813:7 | call to min_by [element] | array_flow.rb:810:5:810:5 | c [element] | -| array_flow.rb:810:25:810:25 | x | array_flow.rb:811:14:811:14 | x | -| array_flow.rb:814:10:814:10 | c [element] | array_flow.rb:814:10:814:13 | ...[...] | -| array_flow.rb:818:5:818:5 | a [element 2] | array_flow.rb:820:9:820:9 | a [element 2] | -| array_flow.rb:818:5:818:5 | a [element 2] | array_flow.rb:824:9:824:9 | a [element 2] | -| array_flow.rb:818:16:818:25 | call to source | array_flow.rb:818:5:818:5 | a [element 2] | -| array_flow.rb:820:5:820:5 | b [element] | array_flow.rb:821:10:821:10 | b [element] | -| array_flow.rb:820:5:820:5 | b [element] | array_flow.rb:822:10:822:10 | b [element] | -| array_flow.rb:820:9:820:9 | a [element 2] | array_flow.rb:820:9:820:16 | call to minmax [element] | -| array_flow.rb:820:9:820:16 | call to minmax [element] | array_flow.rb:820:5:820:5 | b [element] | -| array_flow.rb:821:10:821:10 | b [element] | array_flow.rb:821:10:821:13 | ...[...] | -| array_flow.rb:822:10:822:10 | b [element] | array_flow.rb:822:10:822:13 | ...[...] | -| array_flow.rb:824:5:824:5 | c [element] | array_flow.rb:829:10:829:10 | c [element] | -| array_flow.rb:824:5:824:5 | c [element] | array_flow.rb:830:10:830:10 | c [element] | -| array_flow.rb:824:9:824:9 | a [element 2] | array_flow.rb:824:9:828:7 | call to minmax [element] | -| array_flow.rb:824:9:824:9 | a [element 2] | array_flow.rb:824:22:824:22 | x | -| array_flow.rb:824:9:824:9 | a [element 2] | array_flow.rb:824:25:824:25 | y | -| array_flow.rb:824:9:828:7 | call to minmax [element] | array_flow.rb:824:5:824:5 | c [element] | -| array_flow.rb:824:22:824:22 | x | array_flow.rb:825:14:825:14 | x | -| array_flow.rb:824:25:824:25 | y | array_flow.rb:826:14:826:14 | y | -| array_flow.rb:829:10:829:10 | c [element] | array_flow.rb:829:10:829:13 | ...[...] | -| array_flow.rb:830:10:830:10 | c [element] | array_flow.rb:830:10:830:13 | ...[...] | -| array_flow.rb:834:5:834:5 | a [element 2] | array_flow.rb:835:9:835:9 | a [element 2] | -| array_flow.rb:834:16:834:25 | call to source | array_flow.rb:834:5:834:5 | a [element 2] | -| array_flow.rb:835:5:835:5 | b [element] | array_flow.rb:839:10:839:10 | b [element] | -| array_flow.rb:835:5:835:5 | b [element] | array_flow.rb:840:10:840:10 | b [element] | -| array_flow.rb:835:9:835:9 | a [element 2] | array_flow.rb:835:9:838:7 | call to minmax_by [element] | -| array_flow.rb:835:9:835:9 | a [element 2] | array_flow.rb:835:25:835:25 | x | -| array_flow.rb:835:9:838:7 | call to minmax_by [element] | array_flow.rb:835:5:835:5 | b [element] | -| array_flow.rb:835:25:835:25 | x | array_flow.rb:836:14:836:14 | x | -| array_flow.rb:839:10:839:10 | b [element] | array_flow.rb:839:10:839:13 | ...[...] | -| array_flow.rb:840:10:840:10 | b [element] | array_flow.rb:840:10:840:13 | ...[...] | -| array_flow.rb:844:5:844:5 | a [element 2] | array_flow.rb:845:5:845:5 | a [element 2] | -| array_flow.rb:844:16:844:25 | call to source | array_flow.rb:844:5:844:5 | a [element 2] | -| array_flow.rb:845:5:845:5 | a [element 2] | array_flow.rb:845:17:845:17 | x | -| array_flow.rb:845:17:845:17 | x | array_flow.rb:846:14:846:14 | x | -| array_flow.rb:853:5:853:5 | a [element 2] | array_flow.rb:854:5:854:5 | a [element 2] | -| array_flow.rb:853:16:853:25 | call to source | array_flow.rb:853:5:853:5 | a [element 2] | -| array_flow.rb:854:5:854:5 | a [element 2] | array_flow.rb:854:16:854:16 | x | -| array_flow.rb:854:16:854:16 | x | array_flow.rb:855:14:855:14 | x | -| array_flow.rb:866:5:866:5 | a [element 2] | array_flow.rb:867:9:867:9 | a [element 2] | -| array_flow.rb:866:16:866:25 | call to source | array_flow.rb:866:5:866:5 | a [element 2] | -| array_flow.rb:867:5:867:5 | b [element, element] | array_flow.rb:871:10:871:10 | b [element, element] | -| array_flow.rb:867:5:867:5 | b [element, element] | array_flow.rb:872:10:872:10 | b [element, element] | -| array_flow.rb:867:9:867:9 | a [element 2] | array_flow.rb:867:9:870:7 | call to partition [element, element] | -| array_flow.rb:867:9:867:9 | a [element 2] | array_flow.rb:867:25:867:25 | x | -| array_flow.rb:867:9:870:7 | call to partition [element, element] | array_flow.rb:867:5:867:5 | b [element, element] | -| array_flow.rb:867:25:867:25 | x | array_flow.rb:868:14:868:14 | x | -| array_flow.rb:871:10:871:10 | b [element, element] | array_flow.rb:871:10:871:13 | ...[...] [element] | -| array_flow.rb:871:10:871:13 | ...[...] [element] | array_flow.rb:871:10:871:16 | ...[...] | -| array_flow.rb:872:10:872:10 | b [element, element] | array_flow.rb:872:10:872:13 | ...[...] [element] | -| array_flow.rb:872:10:872:13 | ...[...] [element] | array_flow.rb:872:10:872:16 | ...[...] | -| array_flow.rb:876:5:876:5 | a [element 2] | array_flow.rb:878:9:878:9 | a [element 2] | -| array_flow.rb:876:5:876:5 | a [element 2] | array_flow.rb:886:9:886:9 | a [element 2] | -| array_flow.rb:876:5:876:5 | a [element 2] | array_flow.rb:893:9:893:9 | a [element 2] | -| array_flow.rb:876:16:876:25 | call to source | array_flow.rb:876:5:876:5 | a [element 2] | -| array_flow.rb:878:5:878:5 | b [element 2] | array_flow.rb:884:10:884:10 | b [element 2] | -| array_flow.rb:878:9:878:9 | a [element 2] | array_flow.rb:878:9:882:7 | call to permutation [element 2] | -| array_flow.rb:878:9:878:9 | a [element 2] | array_flow.rb:878:27:878:27 | x [element] | -| array_flow.rb:878:9:882:7 | call to permutation [element 2] | array_flow.rb:878:5:878:5 | b [element 2] | -| array_flow.rb:878:27:878:27 | x [element] | array_flow.rb:879:14:879:14 | x [element] | -| array_flow.rb:878:27:878:27 | x [element] | array_flow.rb:880:14:880:14 | x [element] | -| array_flow.rb:878:27:878:27 | x [element] | array_flow.rb:881:14:881:14 | x [element] | -| array_flow.rb:879:14:879:14 | x [element] | array_flow.rb:879:14:879:17 | ...[...] | -| array_flow.rb:880:14:880:14 | x [element] | array_flow.rb:880:14:880:17 | ...[...] | -| array_flow.rb:881:14:881:14 | x [element] | array_flow.rb:881:14:881:17 | ...[...] | -| array_flow.rb:884:10:884:10 | b [element 2] | array_flow.rb:884:10:884:13 | ...[...] | -| array_flow.rb:886:5:886:5 | c [element 2] | array_flow.rb:891:10:891:10 | c [element 2] | -| array_flow.rb:886:5:886:5 | c [element 2] | array_flow.rb:898:10:898:10 | c [element 2] | -| array_flow.rb:886:9:886:9 | a [element 2] | array_flow.rb:886:9:889:7 | call to permutation [element 2] | -| array_flow.rb:886:9:886:9 | a [element 2] | array_flow.rb:886:30:886:30 | x [element] | -| array_flow.rb:886:9:889:7 | call to permutation [element 2] | array_flow.rb:886:5:886:5 | c [element 2] | -| array_flow.rb:886:30:886:30 | x [element] | array_flow.rb:887:14:887:14 | x [element] | -| array_flow.rb:886:30:886:30 | x [element] | array_flow.rb:888:14:888:14 | x [element] | -| array_flow.rb:887:14:887:14 | x [element] | array_flow.rb:887:14:887:17 | ...[...] | -| array_flow.rb:888:14:888:14 | x [element] | array_flow.rb:888:14:888:17 | ...[...] | -| array_flow.rb:891:10:891:10 | c [element 2] | array_flow.rb:891:10:891:13 | ...[...] | -| array_flow.rb:893:9:893:9 | a [element 2] | array_flow.rb:893:30:893:30 | x [element] | -| array_flow.rb:893:30:893:30 | x [element] | array_flow.rb:894:14:894:14 | x [element] | -| array_flow.rb:893:30:893:30 | x [element] | array_flow.rb:895:14:895:14 | x [element] | -| array_flow.rb:894:14:894:14 | x [element] | array_flow.rb:894:14:894:17 | ...[...] | -| array_flow.rb:895:14:895:14 | x [element] | array_flow.rb:895:14:895:17 | ...[...] | -| array_flow.rb:898:10:898:10 | c [element 2] | array_flow.rb:898:10:898:13 | ...[...] | -| array_flow.rb:905:5:905:5 | a [element 1] | array_flow.rb:906:9:906:9 | a [element 1] | -| array_flow.rb:905:5:905:5 | a [element 1] | array_flow.rb:909:10:909:10 | a [element 1] | -| array_flow.rb:905:5:905:5 | a [element 3] | array_flow.rb:906:9:906:9 | a [element 3] | -| array_flow.rb:905:5:905:5 | a [element 3] | array_flow.rb:911:10:911:10 | a [element 3] | -| array_flow.rb:905:13:905:24 | call to source | array_flow.rb:905:5:905:5 | a [element 1] | -| array_flow.rb:905:30:905:41 | call to source | array_flow.rb:905:5:905:5 | a [element 3] | -| array_flow.rb:906:5:906:5 | b | array_flow.rb:907:10:907:10 | b | -| array_flow.rb:906:9:906:9 | a [element 1] | array_flow.rb:906:9:906:13 | call to pop | -| array_flow.rb:906:9:906:9 | a [element 3] | array_flow.rb:906:9:906:13 | call to pop | -| array_flow.rb:906:9:906:13 | call to pop | array_flow.rb:906:5:906:5 | b | -| array_flow.rb:909:10:909:10 | a [element 1] | array_flow.rb:909:10:909:13 | ...[...] | -| array_flow.rb:911:10:911:10 | a [element 3] | array_flow.rb:911:10:911:13 | ...[...] | -| array_flow.rb:913:5:913:5 | a [element 1] | array_flow.rb:914:9:914:9 | a [element 1] | -| array_flow.rb:913:5:913:5 | a [element 1] | array_flow.rb:918:10:918:10 | a [element 1] | -| array_flow.rb:913:5:913:5 | a [element 3] | array_flow.rb:914:9:914:9 | a [element 3] | -| array_flow.rb:913:5:913:5 | a [element 3] | array_flow.rb:920:10:920:10 | a [element 3] | -| array_flow.rb:913:13:913:24 | call to source | array_flow.rb:913:5:913:5 | a [element 1] | -| array_flow.rb:913:30:913:41 | call to source | array_flow.rb:913:5:913:5 | a [element 3] | -| array_flow.rb:914:5:914:5 | b [element] | array_flow.rb:915:10:915:10 | b [element] | -| array_flow.rb:914:5:914:5 | b [element] | array_flow.rb:916:10:916:10 | b [element] | -| array_flow.rb:914:9:914:9 | a [element 1] | array_flow.rb:914:9:914:16 | call to pop [element] | -| array_flow.rb:914:9:914:9 | a [element 3] | array_flow.rb:914:9:914:16 | call to pop [element] | -| array_flow.rb:914:9:914:16 | call to pop [element] | array_flow.rb:914:5:914:5 | b [element] | -| array_flow.rb:915:10:915:10 | b [element] | array_flow.rb:915:10:915:13 | ...[...] | -| array_flow.rb:916:10:916:10 | b [element] | array_flow.rb:916:10:916:13 | ...[...] | -| array_flow.rb:918:10:918:10 | a [element 1] | array_flow.rb:918:10:918:13 | ...[...] | -| array_flow.rb:920:10:920:10 | a [element 3] | array_flow.rb:920:10:920:13 | ...[...] | -| array_flow.rb:924:5:924:5 | a [element 2] | array_flow.rb:925:5:925:5 | a [element 2] | -| array_flow.rb:924:16:924:27 | call to source | array_flow.rb:924:5:924:5 | a [element 2] | -| array_flow.rb:925:5:925:5 | [post] a [element 2] | array_flow.rb:928:10:928:10 | a [element 2] | -| array_flow.rb:925:5:925:5 | [post] a [element 5] | array_flow.rb:931:10:931:10 | a [element 5] | -| array_flow.rb:925:5:925:5 | a [element 2] | array_flow.rb:925:5:925:5 | [post] a [element 5] | -| array_flow.rb:925:21:925:32 | call to source | array_flow.rb:925:5:925:5 | [post] a [element 2] | -| array_flow.rb:928:10:928:10 | a [element 2] | array_flow.rb:928:10:928:13 | ...[...] | -| array_flow.rb:931:10:931:10 | a [element 5] | array_flow.rb:931:10:931:13 | ...[...] | -| array_flow.rb:935:5:935:5 | a [element 2] | array_flow.rb:938:9:938:9 | a [element 2] | -| array_flow.rb:935:16:935:27 | call to source | array_flow.rb:935:5:935:5 | a [element 2] | -| array_flow.rb:936:5:936:5 | b [element 1] | array_flow.rb:938:19:938:19 | b [element 1] | -| array_flow.rb:936:13:936:24 | call to source | array_flow.rb:936:5:936:5 | b [element 1] | -| array_flow.rb:937:5:937:5 | c [element 0] | array_flow.rb:938:22:938:22 | c [element 0] | -| array_flow.rb:937:10:937:21 | call to source | array_flow.rb:937:5:937:5 | c [element 0] | -| array_flow.rb:938:5:938:5 | d [element, element] | array_flow.rb:939:10:939:10 | d [element, element] | -| array_flow.rb:938:5:938:5 | d [element, element] | array_flow.rb:940:10:940:10 | d [element, element] | -| array_flow.rb:938:9:938:9 | a [element 2] | array_flow.rb:938:9:938:22 | call to product [element, element] | -| array_flow.rb:938:9:938:22 | call to product [element, element] | array_flow.rb:938:5:938:5 | d [element, element] | -| array_flow.rb:938:19:938:19 | b [element 1] | array_flow.rb:938:9:938:22 | call to product [element, element] | -| array_flow.rb:938:22:938:22 | c [element 0] | array_flow.rb:938:9:938:22 | call to product [element, element] | -| array_flow.rb:939:10:939:10 | d [element, element] | array_flow.rb:939:10:939:13 | ...[...] [element] | -| array_flow.rb:939:10:939:13 | ...[...] [element] | array_flow.rb:939:10:939:16 | ...[...] | -| array_flow.rb:940:10:940:10 | d [element, element] | array_flow.rb:940:10:940:13 | ...[...] [element] | -| array_flow.rb:940:10:940:13 | ...[...] [element] | array_flow.rb:940:10:940:16 | ...[...] | -| array_flow.rb:944:5:944:5 | a [element 0] | array_flow.rb:945:9:945:9 | a [element 0] | -| array_flow.rb:944:5:944:5 | a [element 0] | array_flow.rb:946:10:946:10 | a [element 0] | -| array_flow.rb:944:10:944:21 | call to source | array_flow.rb:944:5:944:5 | a [element 0] | -| array_flow.rb:945:5:945:5 | b [element 0] | array_flow.rb:948:10:948:10 | b [element 0] | -| array_flow.rb:945:5:945:5 | b [element] | array_flow.rb:948:10:948:10 | b [element] | -| array_flow.rb:945:5:945:5 | b [element] | array_flow.rb:949:10:949:10 | b [element] | -| array_flow.rb:945:9:945:9 | [post] a [element] | array_flow.rb:946:10:946:10 | a [element] | -| array_flow.rb:945:9:945:9 | [post] a [element] | array_flow.rb:947:10:947:10 | a [element] | -| array_flow.rb:945:9:945:9 | a [element 0] | array_flow.rb:945:9:945:44 | call to append [element 0] | -| array_flow.rb:945:9:945:44 | call to append [element 0] | array_flow.rb:945:5:945:5 | b [element 0] | -| array_flow.rb:945:9:945:44 | call to append [element] | array_flow.rb:945:5:945:5 | b [element] | -| array_flow.rb:945:18:945:29 | call to source | array_flow.rb:945:9:945:9 | [post] a [element] | -| array_flow.rb:945:18:945:29 | call to source | array_flow.rb:945:9:945:44 | call to append [element] | -| array_flow.rb:945:32:945:43 | call to source | array_flow.rb:945:9:945:9 | [post] a [element] | -| array_flow.rb:945:32:945:43 | call to source | array_flow.rb:945:9:945:44 | call to append [element] | -| array_flow.rb:946:10:946:10 | a [element 0] | array_flow.rb:946:10:946:13 | ...[...] | -| array_flow.rb:946:10:946:10 | a [element] | array_flow.rb:946:10:946:13 | ...[...] | -| array_flow.rb:947:10:947:10 | a [element] | array_flow.rb:947:10:947:13 | ...[...] | -| array_flow.rb:948:10:948:10 | b [element 0] | array_flow.rb:948:10:948:13 | ...[...] | -| array_flow.rb:948:10:948:10 | b [element] | array_flow.rb:948:10:948:13 | ...[...] | -| array_flow.rb:949:10:949:10 | b [element] | array_flow.rb:949:10:949:13 | ...[...] | -| array_flow.rb:955:5:955:5 | c [element 0] | array_flow.rb:956:16:956:16 | c [element 0] | -| array_flow.rb:955:10:955:19 | call to source | array_flow.rb:955:5:955:5 | c [element 0] | -| array_flow.rb:956:5:956:5 | d [element 2, element 0] | array_flow.rb:957:10:957:10 | d [element 2, element 0] | -| array_flow.rb:956:5:956:5 | d [element 2, element 0] | array_flow.rb:958:10:958:10 | d [element 2, element 0] | -| array_flow.rb:956:16:956:16 | c [element 0] | array_flow.rb:956:5:956:5 | d [element 2, element 0] | -| array_flow.rb:957:10:957:10 | d [element 2, element 0] | array_flow.rb:957:10:957:22 | call to rassoc [element 0] | -| array_flow.rb:957:10:957:22 | call to rassoc [element 0] | array_flow.rb:957:10:957:25 | ...[...] | -| array_flow.rb:958:10:958:10 | d [element 2, element 0] | array_flow.rb:958:10:958:22 | call to rassoc [element 0] | -| array_flow.rb:958:10:958:22 | call to rassoc [element 0] | array_flow.rb:958:10:958:25 | ...[...] | -| array_flow.rb:962:5:962:5 | a [element 0] | array_flow.rb:963:9:963:9 | a [element 0] | -| array_flow.rb:962:5:962:5 | a [element 0] | array_flow.rb:968:9:968:9 | a [element 0] | -| array_flow.rb:962:5:962:5 | a [element 2] | array_flow.rb:963:9:963:9 | a [element 2] | -| array_flow.rb:962:5:962:5 | a [element 2] | array_flow.rb:968:9:968:9 | a [element 2] | -| array_flow.rb:962:10:962:21 | call to source | array_flow.rb:962:5:962:5 | a [element 0] | -| array_flow.rb:962:27:962:38 | call to source | array_flow.rb:962:5:962:5 | a [element 2] | -| array_flow.rb:963:9:963:9 | a [element 0] | array_flow.rb:963:22:963:22 | x | -| array_flow.rb:963:9:963:9 | a [element 2] | array_flow.rb:963:25:963:25 | y | -| array_flow.rb:963:22:963:22 | x | array_flow.rb:964:14:964:14 | x | -| array_flow.rb:963:25:963:25 | y | array_flow.rb:965:14:965:14 | y | -| array_flow.rb:968:9:968:9 | a [element 0] | array_flow.rb:968:28:968:28 | y | -| array_flow.rb:968:9:968:9 | a [element 2] | array_flow.rb:968:28:968:28 | y | -| array_flow.rb:968:28:968:28 | y | array_flow.rb:970:14:970:14 | y | -| array_flow.rb:976:5:976:5 | a [element 2] | array_flow.rb:977:9:977:9 | a [element 2] | -| array_flow.rb:976:16:976:25 | call to source | array_flow.rb:976:5:976:5 | a [element 2] | -| array_flow.rb:977:5:977:5 | b [element] | array_flow.rb:981:10:981:10 | b [element] | -| array_flow.rb:977:9:977:9 | a [element 2] | array_flow.rb:977:9:980:7 | call to reject [element] | -| array_flow.rb:977:9:977:9 | a [element 2] | array_flow.rb:977:22:977:22 | x | -| array_flow.rb:977:9:980:7 | call to reject [element] | array_flow.rb:977:5:977:5 | b [element] | -| array_flow.rb:977:22:977:22 | x | array_flow.rb:978:14:978:14 | x | -| array_flow.rb:981:10:981:10 | b [element] | array_flow.rb:981:10:981:13 | ...[...] | -| array_flow.rb:985:5:985:5 | a [element 2] | array_flow.rb:986:9:986:9 | a [element 2] | -| array_flow.rb:985:16:985:25 | call to source | array_flow.rb:985:5:985:5 | a [element 2] | -| array_flow.rb:986:5:986:5 | b [element] | array_flow.rb:991:10:991:10 | b [element] | -| array_flow.rb:986:9:986:9 | [post] a [element] | array_flow.rb:990:10:990:10 | a [element] | -| array_flow.rb:986:9:986:9 | a [element 2] | array_flow.rb:986:9:986:9 | [post] a [element] | -| array_flow.rb:986:9:986:9 | a [element 2] | array_flow.rb:986:9:989:7 | call to reject! [element] | -| array_flow.rb:986:9:986:9 | a [element 2] | array_flow.rb:986:23:986:23 | x | -| array_flow.rb:986:9:989:7 | call to reject! [element] | array_flow.rb:986:5:986:5 | b [element] | -| array_flow.rb:986:23:986:23 | x | array_flow.rb:987:14:987:14 | x | -| array_flow.rb:990:10:990:10 | a [element] | array_flow.rb:990:10:990:13 | ...[...] | -| array_flow.rb:991:10:991:10 | b [element] | array_flow.rb:991:10:991:13 | ...[...] | -| array_flow.rb:995:5:995:5 | a [element 2] | array_flow.rb:996:9:996:9 | a [element 2] | -| array_flow.rb:995:16:995:25 | call to source | array_flow.rb:995:5:995:5 | a [element 2] | -| array_flow.rb:996:5:996:5 | b [element 2] | array_flow.rb:1001:10:1001:10 | b [element 2] | -| array_flow.rb:996:9:996:9 | a [element 2] | array_flow.rb:996:9:999:7 | call to repeated_combination [element 2] | -| array_flow.rb:996:9:996:9 | a [element 2] | array_flow.rb:996:39:996:39 | x [element] | -| array_flow.rb:996:9:999:7 | call to repeated_combination [element 2] | array_flow.rb:996:5:996:5 | b [element 2] | -| array_flow.rb:996:39:996:39 | x [element] | array_flow.rb:997:14:997:14 | x [element] | -| array_flow.rb:996:39:996:39 | x [element] | array_flow.rb:998:14:998:14 | x [element] | -| array_flow.rb:997:14:997:14 | x [element] | array_flow.rb:997:14:997:17 | ...[...] | -| array_flow.rb:998:14:998:14 | x [element] | array_flow.rb:998:14:998:17 | ...[...] | -| array_flow.rb:1001:10:1001:10 | b [element 2] | array_flow.rb:1001:10:1001:13 | ...[...] | -| array_flow.rb:1005:5:1005:5 | a [element 2] | array_flow.rb:1006:9:1006:9 | a [element 2] | -| array_flow.rb:1005:16:1005:25 | call to source | array_flow.rb:1005:5:1005:5 | a [element 2] | -| array_flow.rb:1006:5:1006:5 | b [element 2] | array_flow.rb:1011:10:1011:10 | b [element 2] | -| array_flow.rb:1006:9:1006:9 | a [element 2] | array_flow.rb:1006:9:1009:7 | call to repeated_permutation [element 2] | -| array_flow.rb:1006:9:1006:9 | a [element 2] | array_flow.rb:1006:39:1006:39 | x [element] | -| array_flow.rb:1006:9:1009:7 | call to repeated_permutation [element 2] | array_flow.rb:1006:5:1006:5 | b [element 2] | -| array_flow.rb:1006:39:1006:39 | x [element] | array_flow.rb:1007:14:1007:14 | x [element] | -| array_flow.rb:1006:39:1006:39 | x [element] | array_flow.rb:1008:14:1008:14 | x [element] | -| array_flow.rb:1007:14:1007:14 | x [element] | array_flow.rb:1007:14:1007:17 | ...[...] | -| array_flow.rb:1008:14:1008:14 | x [element] | array_flow.rb:1008:14:1008:17 | ...[...] | -| array_flow.rb:1011:10:1011:10 | b [element 2] | array_flow.rb:1011:10:1011:13 | ...[...] | -| array_flow.rb:1017:5:1017:5 | b [element 0] | array_flow.rb:1019:10:1019:10 | b [element 0] | -| array_flow.rb:1017:9:1017:9 | [post] a [element 0] | array_flow.rb:1018:10:1018:10 | a [element 0] | -| array_flow.rb:1017:9:1017:33 | call to replace [element 0] | array_flow.rb:1017:5:1017:5 | b [element 0] | -| array_flow.rb:1017:20:1017:31 | call to source | array_flow.rb:1017:9:1017:9 | [post] a [element 0] | -| array_flow.rb:1017:20:1017:31 | call to source | array_flow.rb:1017:9:1017:33 | call to replace [element 0] | -| array_flow.rb:1018:10:1018:10 | a [element 0] | array_flow.rb:1018:10:1018:13 | ...[...] | -| array_flow.rb:1019:10:1019:10 | b [element 0] | array_flow.rb:1019:10:1019:13 | ...[...] | -| array_flow.rb:1023:5:1023:5 | a [element 2] | array_flow.rb:1024:9:1024:9 | a [element 2] | -| array_flow.rb:1023:5:1023:5 | a [element 2] | array_flow.rb:1029:10:1029:10 | a [element 2] | -| array_flow.rb:1023:5:1023:5 | a [element 3] | array_flow.rb:1024:9:1024:9 | a [element 3] | -| array_flow.rb:1023:5:1023:5 | a [element 3] | array_flow.rb:1030:10:1030:10 | a [element 3] | -| array_flow.rb:1023:16:1023:28 | call to source | array_flow.rb:1023:5:1023:5 | a [element 2] | -| array_flow.rb:1023:31:1023:43 | call to source | array_flow.rb:1023:5:1023:5 | a [element 3] | -| array_flow.rb:1024:5:1024:5 | b [element] | array_flow.rb:1025:10:1025:10 | b [element] | -| array_flow.rb:1024:5:1024:5 | b [element] | array_flow.rb:1026:10:1026:10 | b [element] | -| array_flow.rb:1024:5:1024:5 | b [element] | array_flow.rb:1027:10:1027:10 | b [element] | -| array_flow.rb:1024:9:1024:9 | a [element 2] | array_flow.rb:1024:9:1024:17 | call to reverse [element] | -| array_flow.rb:1024:9:1024:9 | a [element 3] | array_flow.rb:1024:9:1024:17 | call to reverse [element] | -| array_flow.rb:1024:9:1024:17 | call to reverse [element] | array_flow.rb:1024:5:1024:5 | b [element] | -| array_flow.rb:1025:10:1025:10 | b [element] | array_flow.rb:1025:10:1025:13 | ...[...] | -| array_flow.rb:1026:10:1026:10 | b [element] | array_flow.rb:1026:10:1026:13 | ...[...] | -| array_flow.rb:1027:10:1027:10 | b [element] | array_flow.rb:1027:10:1027:13 | ...[...] | -| array_flow.rb:1029:10:1029:10 | a [element 2] | array_flow.rb:1029:10:1029:13 | ...[...] | -| array_flow.rb:1030:10:1030:10 | a [element 3] | array_flow.rb:1030:10:1030:13 | ...[...] | -| array_flow.rb:1034:5:1034:5 | a [element 2] | array_flow.rb:1035:9:1035:9 | a [element 2] | -| array_flow.rb:1034:5:1034:5 | a [element 2] | array_flow.rb:1040:10:1040:10 | a [element 2] | -| array_flow.rb:1034:5:1034:5 | a [element 3] | array_flow.rb:1035:9:1035:9 | a [element 3] | -| array_flow.rb:1034:5:1034:5 | a [element 3] | array_flow.rb:1041:10:1041:10 | a [element 3] | -| array_flow.rb:1034:16:1034:28 | call to source | array_flow.rb:1034:5:1034:5 | a [element 2] | -| array_flow.rb:1034:31:1034:43 | call to source | array_flow.rb:1034:5:1034:5 | a [element 3] | -| array_flow.rb:1035:5:1035:5 | b [element] | array_flow.rb:1036:10:1036:10 | b [element] | -| array_flow.rb:1035:5:1035:5 | b [element] | array_flow.rb:1037:10:1037:10 | b [element] | -| array_flow.rb:1035:5:1035:5 | b [element] | array_flow.rb:1038:10:1038:10 | b [element] | -| array_flow.rb:1035:9:1035:9 | [post] a [element] | array_flow.rb:1039:10:1039:10 | a [element] | -| array_flow.rb:1035:9:1035:9 | [post] a [element] | array_flow.rb:1040:10:1040:10 | a [element] | -| array_flow.rb:1035:9:1035:9 | [post] a [element] | array_flow.rb:1041:10:1041:10 | a [element] | -| array_flow.rb:1035:9:1035:9 | a [element 2] | array_flow.rb:1035:9:1035:9 | [post] a [element] | -| array_flow.rb:1035:9:1035:9 | a [element 2] | array_flow.rb:1035:9:1035:18 | call to reverse! [element] | -| array_flow.rb:1035:9:1035:9 | a [element 3] | array_flow.rb:1035:9:1035:9 | [post] a [element] | -| array_flow.rb:1035:9:1035:9 | a [element 3] | array_flow.rb:1035:9:1035:18 | call to reverse! [element] | -| array_flow.rb:1035:9:1035:18 | call to reverse! [element] | array_flow.rb:1035:5:1035:5 | b [element] | -| array_flow.rb:1036:10:1036:10 | b [element] | array_flow.rb:1036:10:1036:13 | ...[...] | -| array_flow.rb:1037:10:1037:10 | b [element] | array_flow.rb:1037:10:1037:13 | ...[...] | -| array_flow.rb:1038:10:1038:10 | b [element] | array_flow.rb:1038:10:1038:13 | ...[...] | -| array_flow.rb:1039:10:1039:10 | a [element] | array_flow.rb:1039:10:1039:13 | ...[...] | -| array_flow.rb:1040:10:1040:10 | a [element 2] | array_flow.rb:1040:10:1040:13 | ...[...] | -| array_flow.rb:1040:10:1040:10 | a [element] | array_flow.rb:1040:10:1040:13 | ...[...] | -| array_flow.rb:1041:10:1041:10 | a [element 3] | array_flow.rb:1041:10:1041:13 | ...[...] | -| array_flow.rb:1041:10:1041:10 | a [element] | array_flow.rb:1041:10:1041:13 | ...[...] | -| array_flow.rb:1045:5:1045:5 | a [element 2] | array_flow.rb:1046:9:1046:9 | a [element 2] | -| array_flow.rb:1045:16:1045:26 | call to source | array_flow.rb:1045:5:1045:5 | a [element 2] | -| array_flow.rb:1046:5:1046:5 | b [element 2] | array_flow.rb:1049:10:1049:10 | b [element 2] | -| array_flow.rb:1046:9:1046:9 | a [element 2] | array_flow.rb:1046:9:1048:7 | call to reverse_each [element 2] | -| array_flow.rb:1046:9:1046:9 | a [element 2] | array_flow.rb:1046:28:1046:28 | x | -| array_flow.rb:1046:9:1048:7 | call to reverse_each [element 2] | array_flow.rb:1046:5:1046:5 | b [element 2] | -| array_flow.rb:1046:28:1046:28 | x | array_flow.rb:1047:14:1047:14 | x | -| array_flow.rb:1049:10:1049:10 | b [element 2] | array_flow.rb:1049:10:1049:13 | ...[...] | -| array_flow.rb:1053:5:1053:5 | a [element 2] | array_flow.rb:1054:5:1054:5 | a [element 2] | -| array_flow.rb:1053:16:1053:26 | call to source | array_flow.rb:1053:5:1053:5 | a [element 2] | -| array_flow.rb:1054:5:1054:5 | a [element 2] | array_flow.rb:1054:18:1054:18 | x | -| array_flow.rb:1054:18:1054:18 | x | array_flow.rb:1055:14:1055:14 | x | -| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1065:9:1065:9 | a [element 0] | -| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1071:9:1071:9 | a [element 0] | -| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1077:9:1077:9 | a [element 0] | -| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1083:9:1083:9 | a [element 0] | -| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1065:9:1065:9 | a [element 2] | -| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1071:9:1071:9 | a [element 2] | -| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1077:9:1077:9 | a [element 2] | -| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1083:9:1083:9 | a [element 2] | -| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1065:9:1065:9 | a [element 3] | -| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1071:9:1071:9 | a [element 3] | -| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1077:9:1077:9 | a [element 3] | -| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1083:9:1083:9 | a [element 3] | -| array_flow.rb:1063:10:1063:22 | call to source | array_flow.rb:1063:5:1063:5 | a [element 0] | -| array_flow.rb:1063:28:1063:40 | call to source | array_flow.rb:1063:5:1063:5 | a [element 2] | -| array_flow.rb:1063:43:1063:55 | call to source | array_flow.rb:1063:5:1063:5 | a [element 3] | -| array_flow.rb:1065:5:1065:5 | b [element 1] | array_flow.rb:1067:10:1067:10 | b [element 1] | -| array_flow.rb:1065:5:1065:5 | b [element 2] | array_flow.rb:1068:10:1068:10 | b [element 2] | -| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1066:10:1066:10 | b [element] | -| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1067:10:1067:10 | b [element] | -| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1068:10:1068:10 | b [element] | -| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1069:10:1069:10 | b [element] | -| array_flow.rb:1065:9:1065:9 | a [element 0] | array_flow.rb:1065:9:1065:16 | call to rotate [element] | -| array_flow.rb:1065:9:1065:9 | a [element 2] | array_flow.rb:1065:9:1065:16 | call to rotate [element 1] | -| array_flow.rb:1065:9:1065:9 | a [element 3] | array_flow.rb:1065:9:1065:16 | call to rotate [element 2] | -| array_flow.rb:1065:9:1065:16 | call to rotate [element 1] | array_flow.rb:1065:5:1065:5 | b [element 1] | -| array_flow.rb:1065:9:1065:16 | call to rotate [element 2] | array_flow.rb:1065:5:1065:5 | b [element 2] | -| array_flow.rb:1065:9:1065:16 | call to rotate [element] | array_flow.rb:1065:5:1065:5 | b [element] | -| array_flow.rb:1066:10:1066:10 | b [element] | array_flow.rb:1066:10:1066:13 | ...[...] | -| array_flow.rb:1067:10:1067:10 | b [element 1] | array_flow.rb:1067:10:1067:13 | ...[...] | -| array_flow.rb:1067:10:1067:10 | b [element] | array_flow.rb:1067:10:1067:13 | ...[...] | -| array_flow.rb:1068:10:1068:10 | b [element 2] | array_flow.rb:1068:10:1068:13 | ...[...] | -| array_flow.rb:1068:10:1068:10 | b [element] | array_flow.rb:1068:10:1068:13 | ...[...] | -| array_flow.rb:1069:10:1069:10 | b [element] | array_flow.rb:1069:10:1069:13 | ...[...] | -| array_flow.rb:1071:5:1071:5 | b [element 0] | array_flow.rb:1072:10:1072:10 | b [element 0] | -| array_flow.rb:1071:5:1071:5 | b [element 1] | array_flow.rb:1073:10:1073:10 | b [element 1] | -| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1072:10:1072:10 | b [element] | -| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1073:10:1073:10 | b [element] | -| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1074:10:1074:10 | b [element] | -| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1075:10:1075:10 | b [element] | -| array_flow.rb:1071:9:1071:9 | a [element 0] | array_flow.rb:1071:9:1071:19 | call to rotate [element] | -| array_flow.rb:1071:9:1071:9 | a [element 2] | array_flow.rb:1071:9:1071:19 | call to rotate [element 0] | -| array_flow.rb:1071:9:1071:9 | a [element 3] | array_flow.rb:1071:9:1071:19 | call to rotate [element 1] | -| array_flow.rb:1071:9:1071:19 | call to rotate [element 0] | array_flow.rb:1071:5:1071:5 | b [element 0] | -| array_flow.rb:1071:9:1071:19 | call to rotate [element 1] | array_flow.rb:1071:5:1071:5 | b [element 1] | -| array_flow.rb:1071:9:1071:19 | call to rotate [element] | array_flow.rb:1071:5:1071:5 | b [element] | -| array_flow.rb:1072:10:1072:10 | b [element 0] | array_flow.rb:1072:10:1072:13 | ...[...] | -| array_flow.rb:1072:10:1072:10 | b [element] | array_flow.rb:1072:10:1072:13 | ...[...] | -| array_flow.rb:1073:10:1073:10 | b [element 1] | array_flow.rb:1073:10:1073:13 | ...[...] | -| array_flow.rb:1073:10:1073:10 | b [element] | array_flow.rb:1073:10:1073:13 | ...[...] | -| array_flow.rb:1074:10:1074:10 | b [element] | array_flow.rb:1074:10:1074:13 | ...[...] | -| array_flow.rb:1075:10:1075:10 | b [element] | array_flow.rb:1075:10:1075:13 | ...[...] | -| array_flow.rb:1077:5:1077:5 | b [element 0] | array_flow.rb:1078:10:1078:10 | b [element 0] | -| array_flow.rb:1077:5:1077:5 | b [element 2] | array_flow.rb:1080:10:1080:10 | b [element 2] | -| array_flow.rb:1077:5:1077:5 | b [element 3] | array_flow.rb:1081:10:1081:10 | b [element 3] | -| array_flow.rb:1077:9:1077:9 | a [element 0] | array_flow.rb:1077:9:1077:19 | call to rotate [element 0] | -| array_flow.rb:1077:9:1077:9 | a [element 2] | array_flow.rb:1077:9:1077:19 | call to rotate [element 2] | -| array_flow.rb:1077:9:1077:9 | a [element 3] | array_flow.rb:1077:9:1077:19 | call to rotate [element 3] | -| array_flow.rb:1077:9:1077:19 | call to rotate [element 0] | array_flow.rb:1077:5:1077:5 | b [element 0] | -| array_flow.rb:1077:9:1077:19 | call to rotate [element 2] | array_flow.rb:1077:5:1077:5 | b [element 2] | -| array_flow.rb:1077:9:1077:19 | call to rotate [element 3] | array_flow.rb:1077:5:1077:5 | b [element 3] | -| array_flow.rb:1078:10:1078:10 | b [element 0] | array_flow.rb:1078:10:1078:13 | ...[...] | -| array_flow.rb:1080:10:1080:10 | b [element 2] | array_flow.rb:1080:10:1080:13 | ...[...] | -| array_flow.rb:1081:10:1081:10 | b [element 3] | array_flow.rb:1081:10:1081:13 | ...[...] | -| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1084:10:1084:10 | b [element] | -| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1085:10:1085:10 | b [element] | -| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1086:10:1086:10 | b [element] | -| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1087:10:1087:10 | b [element] | -| array_flow.rb:1083:9:1083:9 | a [element 0] | array_flow.rb:1083:9:1083:19 | call to rotate [element] | -| array_flow.rb:1083:9:1083:9 | a [element 2] | array_flow.rb:1083:9:1083:19 | call to rotate [element] | -| array_flow.rb:1083:9:1083:9 | a [element 3] | array_flow.rb:1083:9:1083:19 | call to rotate [element] | -| array_flow.rb:1083:9:1083:19 | call to rotate [element] | array_flow.rb:1083:5:1083:5 | b [element] | -| array_flow.rb:1084:10:1084:10 | b [element] | array_flow.rb:1084:10:1084:13 | ...[...] | -| array_flow.rb:1085:10:1085:10 | b [element] | array_flow.rb:1085:10:1085:13 | ...[...] | -| array_flow.rb:1086:10:1086:10 | b [element] | array_flow.rb:1086:10:1086:13 | ...[...] | -| array_flow.rb:1087:10:1087:10 | b [element] | array_flow.rb:1087:10:1087:13 | ...[...] | -| array_flow.rb:1095:5:1095:5 | a [element 0] | array_flow.rb:1096:9:1096:9 | a [element 0] | -| array_flow.rb:1095:5:1095:5 | a [element 2] | array_flow.rb:1096:9:1096:9 | a [element 2] | -| array_flow.rb:1095:5:1095:5 | a [element 3] | array_flow.rb:1096:9:1096:9 | a [element 3] | -| array_flow.rb:1095:10:1095:22 | call to source | array_flow.rb:1095:5:1095:5 | a [element 0] | -| array_flow.rb:1095:28:1095:40 | call to source | array_flow.rb:1095:5:1095:5 | a [element 2] | -| array_flow.rb:1095:43:1095:55 | call to source | array_flow.rb:1095:5:1095:5 | a [element 3] | -| array_flow.rb:1096:5:1096:5 | b [element 1] | array_flow.rb:1102:10:1102:10 | b [element 1] | -| array_flow.rb:1096:5:1096:5 | b [element 2] | array_flow.rb:1103:10:1103:10 | b [element 2] | -| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1101:10:1101:10 | b [element] | -| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1102:10:1102:10 | b [element] | -| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1103:10:1103:10 | b [element] | -| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1104:10:1104:10 | b [element] | -| array_flow.rb:1096:9:1096:9 | [post] a [element 1] | array_flow.rb:1098:10:1098:10 | a [element 1] | -| array_flow.rb:1096:9:1096:9 | [post] a [element 2] | array_flow.rb:1099:10:1099:10 | a [element 2] | -| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1097:10:1097:10 | a [element] | -| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1098:10:1098:10 | a [element] | -| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1099:10:1099:10 | a [element] | -| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1100:10:1100:10 | a [element] | -| array_flow.rb:1096:9:1096:9 | a [element 0] | array_flow.rb:1096:9:1096:9 | [post] a [element] | -| array_flow.rb:1096:9:1096:9 | a [element 0] | array_flow.rb:1096:9:1096:17 | call to rotate! [element] | -| array_flow.rb:1096:9:1096:9 | a [element 2] | array_flow.rb:1096:9:1096:9 | [post] a [element 1] | -| array_flow.rb:1096:9:1096:9 | a [element 2] | array_flow.rb:1096:9:1096:17 | call to rotate! [element 1] | -| array_flow.rb:1096:9:1096:9 | a [element 3] | array_flow.rb:1096:9:1096:9 | [post] a [element 2] | -| array_flow.rb:1096:9:1096:9 | a [element 3] | array_flow.rb:1096:9:1096:17 | call to rotate! [element 2] | -| array_flow.rb:1096:9:1096:17 | call to rotate! [element 1] | array_flow.rb:1096:5:1096:5 | b [element 1] | -| array_flow.rb:1096:9:1096:17 | call to rotate! [element 2] | array_flow.rb:1096:5:1096:5 | b [element 2] | -| array_flow.rb:1096:9:1096:17 | call to rotate! [element] | array_flow.rb:1096:5:1096:5 | b [element] | -| array_flow.rb:1097:10:1097:10 | a [element] | array_flow.rb:1097:10:1097:13 | ...[...] | -| array_flow.rb:1098:10:1098:10 | a [element 1] | array_flow.rb:1098:10:1098:13 | ...[...] | -| array_flow.rb:1098:10:1098:10 | a [element] | array_flow.rb:1098:10:1098:13 | ...[...] | -| array_flow.rb:1099:10:1099:10 | a [element 2] | array_flow.rb:1099:10:1099:13 | ...[...] | -| array_flow.rb:1099:10:1099:10 | a [element] | array_flow.rb:1099:10:1099:13 | ...[...] | -| array_flow.rb:1100:10:1100:10 | a [element] | array_flow.rb:1100:10:1100:13 | ...[...] | -| array_flow.rb:1101:10:1101:10 | b [element] | array_flow.rb:1101:10:1101:13 | ...[...] | -| array_flow.rb:1102:10:1102:10 | b [element 1] | array_flow.rb:1102:10:1102:13 | ...[...] | -| array_flow.rb:1102:10:1102:10 | b [element] | array_flow.rb:1102:10:1102:13 | ...[...] | -| array_flow.rb:1103:10:1103:10 | b [element 2] | array_flow.rb:1103:10:1103:13 | ...[...] | -| array_flow.rb:1103:10:1103:10 | b [element] | array_flow.rb:1103:10:1103:13 | ...[...] | -| array_flow.rb:1104:10:1104:10 | b [element] | array_flow.rb:1104:10:1104:13 | ...[...] | -| array_flow.rb:1106:5:1106:5 | a [element 0] | array_flow.rb:1107:9:1107:9 | a [element 0] | -| array_flow.rb:1106:5:1106:5 | a [element 2] | array_flow.rb:1107:9:1107:9 | a [element 2] | -| array_flow.rb:1106:5:1106:5 | a [element 3] | array_flow.rb:1107:9:1107:9 | a [element 3] | -| array_flow.rb:1106:10:1106:22 | call to source | array_flow.rb:1106:5:1106:5 | a [element 0] | -| array_flow.rb:1106:28:1106:40 | call to source | array_flow.rb:1106:5:1106:5 | a [element 2] | -| array_flow.rb:1106:43:1106:55 | call to source | array_flow.rb:1106:5:1106:5 | a [element 3] | -| array_flow.rb:1107:5:1107:5 | b [element 0] | array_flow.rb:1112:10:1112:10 | b [element 0] | -| array_flow.rb:1107:5:1107:5 | b [element 1] | array_flow.rb:1113:10:1113:10 | b [element 1] | -| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1112:10:1112:10 | b [element] | -| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1113:10:1113:10 | b [element] | -| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1114:10:1114:10 | b [element] | -| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1115:10:1115:10 | b [element] | -| array_flow.rb:1107:9:1107:9 | [post] a [element 0] | array_flow.rb:1108:10:1108:10 | a [element 0] | -| array_flow.rb:1107:9:1107:9 | [post] a [element 1] | array_flow.rb:1109:10:1109:10 | a [element 1] | -| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1108:10:1108:10 | a [element] | -| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1109:10:1109:10 | a [element] | -| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1110:10:1110:10 | a [element] | -| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1111:10:1111:10 | a [element] | -| array_flow.rb:1107:9:1107:9 | a [element 0] | array_flow.rb:1107:9:1107:9 | [post] a [element] | -| array_flow.rb:1107:9:1107:9 | a [element 0] | array_flow.rb:1107:9:1107:20 | call to rotate! [element] | -| array_flow.rb:1107:9:1107:9 | a [element 2] | array_flow.rb:1107:9:1107:9 | [post] a [element 0] | -| array_flow.rb:1107:9:1107:9 | a [element 2] | array_flow.rb:1107:9:1107:20 | call to rotate! [element 0] | -| array_flow.rb:1107:9:1107:9 | a [element 3] | array_flow.rb:1107:9:1107:9 | [post] a [element 1] | -| array_flow.rb:1107:9:1107:9 | a [element 3] | array_flow.rb:1107:9:1107:20 | call to rotate! [element 1] | -| array_flow.rb:1107:9:1107:20 | call to rotate! [element 0] | array_flow.rb:1107:5:1107:5 | b [element 0] | -| array_flow.rb:1107:9:1107:20 | call to rotate! [element 1] | array_flow.rb:1107:5:1107:5 | b [element 1] | -| array_flow.rb:1107:9:1107:20 | call to rotate! [element] | array_flow.rb:1107:5:1107:5 | b [element] | -| array_flow.rb:1108:10:1108:10 | a [element 0] | array_flow.rb:1108:10:1108:13 | ...[...] | -| array_flow.rb:1108:10:1108:10 | a [element] | array_flow.rb:1108:10:1108:13 | ...[...] | -| array_flow.rb:1109:10:1109:10 | a [element 1] | array_flow.rb:1109:10:1109:13 | ...[...] | -| array_flow.rb:1109:10:1109:10 | a [element] | array_flow.rb:1109:10:1109:13 | ...[...] | -| array_flow.rb:1110:10:1110:10 | a [element] | array_flow.rb:1110:10:1110:13 | ...[...] | -| array_flow.rb:1111:10:1111:10 | a [element] | array_flow.rb:1111:10:1111:13 | ...[...] | -| array_flow.rb:1112:10:1112:10 | b [element 0] | array_flow.rb:1112:10:1112:13 | ...[...] | -| array_flow.rb:1112:10:1112:10 | b [element] | array_flow.rb:1112:10:1112:13 | ...[...] | -| array_flow.rb:1113:10:1113:10 | b [element 1] | array_flow.rb:1113:10:1113:13 | ...[...] | -| array_flow.rb:1113:10:1113:10 | b [element] | array_flow.rb:1113:10:1113:13 | ...[...] | -| array_flow.rb:1114:10:1114:10 | b [element] | array_flow.rb:1114:10:1114:13 | ...[...] | -| array_flow.rb:1115:10:1115:10 | b [element] | array_flow.rb:1115:10:1115:13 | ...[...] | -| array_flow.rb:1117:5:1117:5 | a [element 0] | array_flow.rb:1118:9:1118:9 | a [element 0] | -| array_flow.rb:1117:5:1117:5 | a [element 2] | array_flow.rb:1118:9:1118:9 | a [element 2] | -| array_flow.rb:1117:5:1117:5 | a [element 3] | array_flow.rb:1118:9:1118:9 | a [element 3] | -| array_flow.rb:1117:10:1117:22 | call to source | array_flow.rb:1117:5:1117:5 | a [element 0] | -| array_flow.rb:1117:28:1117:40 | call to source | array_flow.rb:1117:5:1117:5 | a [element 2] | -| array_flow.rb:1117:43:1117:55 | call to source | array_flow.rb:1117:5:1117:5 | a [element 3] | -| array_flow.rb:1118:5:1118:5 | b [element 0] | array_flow.rb:1123:10:1123:10 | b [element 0] | -| array_flow.rb:1118:5:1118:5 | b [element 2] | array_flow.rb:1125:10:1125:10 | b [element 2] | -| array_flow.rb:1118:5:1118:5 | b [element 3] | array_flow.rb:1126:10:1126:10 | b [element 3] | -| array_flow.rb:1118:9:1118:9 | [post] a [element 0] | array_flow.rb:1119:10:1119:10 | a [element 0] | -| array_flow.rb:1118:9:1118:9 | [post] a [element 2] | array_flow.rb:1121:10:1121:10 | a [element 2] | -| array_flow.rb:1118:9:1118:9 | [post] a [element 3] | array_flow.rb:1122:10:1122:10 | a [element 3] | -| array_flow.rb:1118:9:1118:9 | a [element 0] | array_flow.rb:1118:9:1118:9 | [post] a [element 0] | -| array_flow.rb:1118:9:1118:9 | a [element 0] | array_flow.rb:1118:9:1118:20 | call to rotate! [element 0] | -| array_flow.rb:1118:9:1118:9 | a [element 2] | array_flow.rb:1118:9:1118:9 | [post] a [element 2] | -| array_flow.rb:1118:9:1118:9 | a [element 2] | array_flow.rb:1118:9:1118:20 | call to rotate! [element 2] | -| array_flow.rb:1118:9:1118:9 | a [element 3] | array_flow.rb:1118:9:1118:9 | [post] a [element 3] | -| array_flow.rb:1118:9:1118:9 | a [element 3] | array_flow.rb:1118:9:1118:20 | call to rotate! [element 3] | -| array_flow.rb:1118:9:1118:20 | call to rotate! [element 0] | array_flow.rb:1118:5:1118:5 | b [element 0] | -| array_flow.rb:1118:9:1118:20 | call to rotate! [element 2] | array_flow.rb:1118:5:1118:5 | b [element 2] | -| array_flow.rb:1118:9:1118:20 | call to rotate! [element 3] | array_flow.rb:1118:5:1118:5 | b [element 3] | -| array_flow.rb:1119:10:1119:10 | a [element 0] | array_flow.rb:1119:10:1119:13 | ...[...] | -| array_flow.rb:1121:10:1121:10 | a [element 2] | array_flow.rb:1121:10:1121:13 | ...[...] | -| array_flow.rb:1122:10:1122:10 | a [element 3] | array_flow.rb:1122:10:1122:13 | ...[...] | -| array_flow.rb:1123:10:1123:10 | b [element 0] | array_flow.rb:1123:10:1123:13 | ...[...] | -| array_flow.rb:1125:10:1125:10 | b [element 2] | array_flow.rb:1125:10:1125:13 | ...[...] | -| array_flow.rb:1126:10:1126:10 | b [element 3] | array_flow.rb:1126:10:1126:13 | ...[...] | -| array_flow.rb:1128:5:1128:5 | a [element 0] | array_flow.rb:1129:9:1129:9 | a [element 0] | -| array_flow.rb:1128:5:1128:5 | a [element 2] | array_flow.rb:1129:9:1129:9 | a [element 2] | -| array_flow.rb:1128:5:1128:5 | a [element 3] | array_flow.rb:1129:9:1129:9 | a [element 3] | -| array_flow.rb:1128:10:1128:22 | call to source | array_flow.rb:1128:5:1128:5 | a [element 0] | -| array_flow.rb:1128:28:1128:40 | call to source | array_flow.rb:1128:5:1128:5 | a [element 2] | -| array_flow.rb:1128:43:1128:55 | call to source | array_flow.rb:1128:5:1128:5 | a [element 3] | -| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1134:10:1134:10 | b [element] | -| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1135:10:1135:10 | b [element] | -| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1136:10:1136:10 | b [element] | -| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1137:10:1137:10 | b [element] | -| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1130:10:1130:10 | a [element] | -| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1131:10:1131:10 | a [element] | -| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1132:10:1132:10 | a [element] | -| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1133:10:1133:10 | a [element] | -| array_flow.rb:1129:9:1129:9 | a [element 0] | array_flow.rb:1129:9:1129:9 | [post] a [element] | -| array_flow.rb:1129:9:1129:9 | a [element 0] | array_flow.rb:1129:9:1129:20 | call to rotate! [element] | -| array_flow.rb:1129:9:1129:9 | a [element 2] | array_flow.rb:1129:9:1129:9 | [post] a [element] | -| array_flow.rb:1129:9:1129:9 | a [element 2] | array_flow.rb:1129:9:1129:20 | call to rotate! [element] | -| array_flow.rb:1129:9:1129:9 | a [element 3] | array_flow.rb:1129:9:1129:9 | [post] a [element] | -| array_flow.rb:1129:9:1129:9 | a [element 3] | array_flow.rb:1129:9:1129:20 | call to rotate! [element] | -| array_flow.rb:1129:9:1129:20 | call to rotate! [element] | array_flow.rb:1129:5:1129:5 | b [element] | -| array_flow.rb:1130:10:1130:10 | a [element] | array_flow.rb:1130:10:1130:13 | ...[...] | -| array_flow.rb:1131:10:1131:10 | a [element] | array_flow.rb:1131:10:1131:13 | ...[...] | -| array_flow.rb:1132:10:1132:10 | a [element] | array_flow.rb:1132:10:1132:13 | ...[...] | -| array_flow.rb:1133:10:1133:10 | a [element] | array_flow.rb:1133:10:1133:13 | ...[...] | -| array_flow.rb:1134:10:1134:10 | b [element] | array_flow.rb:1134:10:1134:13 | ...[...] | -| array_flow.rb:1135:10:1135:10 | b [element] | array_flow.rb:1135:10:1135:13 | ...[...] | -| array_flow.rb:1136:10:1136:10 | b [element] | array_flow.rb:1136:10:1136:13 | ...[...] | -| array_flow.rb:1137:10:1137:10 | b [element] | array_flow.rb:1137:10:1137:13 | ...[...] | -| array_flow.rb:1141:5:1141:5 | a [element 3] | array_flow.rb:1142:9:1142:9 | a [element 3] | -| array_flow.rb:1141:19:1141:29 | call to source | array_flow.rb:1141:5:1141:5 | a [element 3] | -| array_flow.rb:1142:5:1142:5 | b [element] | array_flow.rb:1145:10:1145:10 | b [element] | -| array_flow.rb:1142:9:1142:9 | a [element 3] | array_flow.rb:1142:9:1144:7 | call to select [element] | -| array_flow.rb:1142:9:1142:9 | a [element 3] | array_flow.rb:1142:22:1142:22 | x | -| array_flow.rb:1142:9:1144:7 | call to select [element] | array_flow.rb:1142:5:1142:5 | b [element] | -| array_flow.rb:1142:22:1142:22 | x | array_flow.rb:1143:14:1143:14 | x | -| array_flow.rb:1145:10:1145:10 | b [element] | array_flow.rb:1145:10:1145:13 | ...[...] | -| array_flow.rb:1149:5:1149:5 | a [element 2] | array_flow.rb:1150:9:1150:9 | a [element 2] | -| array_flow.rb:1149:16:1149:26 | call to source | array_flow.rb:1149:5:1149:5 | a [element 2] | -| array_flow.rb:1150:5:1150:5 | b [element] | array_flow.rb:1155:10:1155:10 | b [element] | -| array_flow.rb:1150:9:1150:9 | [post] a [element] | array_flow.rb:1154:10:1154:10 | a [element] | -| array_flow.rb:1150:9:1150:9 | a [element 2] | array_flow.rb:1150:9:1150:9 | [post] a [element] | -| array_flow.rb:1150:9:1150:9 | a [element 2] | array_flow.rb:1150:9:1153:7 | call to select! [element] | -| array_flow.rb:1150:9:1150:9 | a [element 2] | array_flow.rb:1150:23:1150:23 | x | -| array_flow.rb:1150:9:1153:7 | call to select! [element] | array_flow.rb:1150:5:1150:5 | b [element] | -| array_flow.rb:1150:23:1150:23 | x | array_flow.rb:1151:14:1151:14 | x | -| array_flow.rb:1154:10:1154:10 | a [element] | array_flow.rb:1154:10:1154:13 | ...[...] | -| array_flow.rb:1155:10:1155:10 | b [element] | array_flow.rb:1155:10:1155:13 | ...[...] | -| array_flow.rb:1159:5:1159:5 | a [element 0] | array_flow.rb:1160:9:1160:9 | a [element 0] | -| array_flow.rb:1159:5:1159:5 | a [element 2] | array_flow.rb:1160:9:1160:9 | a [element 2] | -| array_flow.rb:1159:10:1159:22 | call to source | array_flow.rb:1159:5:1159:5 | a [element 0] | -| array_flow.rb:1159:28:1159:40 | call to source | array_flow.rb:1159:5:1159:5 | a [element 2] | -| array_flow.rb:1160:5:1160:5 | b | array_flow.rb:1161:10:1161:10 | b | -| array_flow.rb:1160:9:1160:9 | [post] a [element 1] | array_flow.rb:1163:10:1163:10 | a [element 1] | -| array_flow.rb:1160:9:1160:9 | a [element 0] | array_flow.rb:1160:9:1160:15 | call to shift | -| array_flow.rb:1160:9:1160:9 | a [element 2] | array_flow.rb:1160:9:1160:9 | [post] a [element 1] | -| array_flow.rb:1160:9:1160:15 | call to shift | array_flow.rb:1160:5:1160:5 | b | -| array_flow.rb:1163:10:1163:10 | a [element 1] | array_flow.rb:1163:10:1163:13 | ...[...] | -| array_flow.rb:1166:5:1166:5 | a [element 0] | array_flow.rb:1167:9:1167:9 | a [element 0] | -| array_flow.rb:1166:5:1166:5 | a [element 2] | array_flow.rb:1167:9:1167:9 | a [element 2] | -| array_flow.rb:1166:10:1166:22 | call to source | array_flow.rb:1166:5:1166:5 | a [element 0] | -| array_flow.rb:1166:28:1166:40 | call to source | array_flow.rb:1166:5:1166:5 | a [element 2] | -| array_flow.rb:1167:5:1167:5 | b [element 0] | array_flow.rb:1168:10:1168:10 | b [element 0] | -| array_flow.rb:1167:9:1167:9 | [post] a [element 0] | array_flow.rb:1170:10:1170:10 | a [element 0] | -| array_flow.rb:1167:9:1167:9 | a [element 0] | array_flow.rb:1167:9:1167:18 | call to shift [element 0] | -| array_flow.rb:1167:9:1167:9 | a [element 2] | array_flow.rb:1167:9:1167:9 | [post] a [element 0] | -| array_flow.rb:1167:9:1167:18 | call to shift [element 0] | array_flow.rb:1167:5:1167:5 | b [element 0] | -| array_flow.rb:1168:10:1168:10 | b [element 0] | array_flow.rb:1168:10:1168:13 | ...[...] | -| array_flow.rb:1170:10:1170:10 | a [element 0] | array_flow.rb:1170:10:1170:13 | ...[...] | -| array_flow.rb:1174:5:1174:5 | a [element 0] | array_flow.rb:1175:9:1175:9 | a [element 0] | -| array_flow.rb:1174:5:1174:5 | a [element 0] | array_flow.rb:1178:10:1178:10 | a [element 0] | -| array_flow.rb:1174:5:1174:5 | a [element 2] | array_flow.rb:1175:9:1175:9 | a [element 2] | -| array_flow.rb:1174:5:1174:5 | a [element 2] | array_flow.rb:1180:10:1180:10 | a [element 2] | -| array_flow.rb:1174:10:1174:22 | call to source | array_flow.rb:1174:5:1174:5 | a [element 0] | -| array_flow.rb:1174:28:1174:40 | call to source | array_flow.rb:1174:5:1174:5 | a [element 2] | -| array_flow.rb:1175:5:1175:5 | b [element] | array_flow.rb:1176:10:1176:10 | b [element] | -| array_flow.rb:1175:5:1175:5 | b [element] | array_flow.rb:1177:10:1177:10 | b [element] | -| array_flow.rb:1175:9:1175:9 | [post] a [element] | array_flow.rb:1178:10:1178:10 | a [element] | -| array_flow.rb:1175:9:1175:9 | [post] a [element] | array_flow.rb:1179:10:1179:10 | a [element] | -| array_flow.rb:1175:9:1175:9 | [post] a [element] | array_flow.rb:1180:10:1180:10 | a [element] | -| array_flow.rb:1175:9:1175:9 | a [element 0] | array_flow.rb:1175:9:1175:9 | [post] a [element] | -| array_flow.rb:1175:9:1175:9 | a [element 0] | array_flow.rb:1175:9:1175:18 | call to shift [element] | -| array_flow.rb:1175:9:1175:9 | a [element 2] | array_flow.rb:1175:9:1175:9 | [post] a [element] | -| array_flow.rb:1175:9:1175:9 | a [element 2] | array_flow.rb:1175:9:1175:18 | call to shift [element] | -| array_flow.rb:1175:9:1175:18 | call to shift [element] | array_flow.rb:1175:5:1175:5 | b [element] | -| array_flow.rb:1176:10:1176:10 | b [element] | array_flow.rb:1176:10:1176:13 | ...[...] | -| array_flow.rb:1177:10:1177:10 | b [element] | array_flow.rb:1177:10:1177:13 | ...[...] | -| array_flow.rb:1178:10:1178:10 | a [element 0] | array_flow.rb:1178:10:1178:13 | ...[...] | -| array_flow.rb:1178:10:1178:10 | a [element] | array_flow.rb:1178:10:1178:13 | ...[...] | -| array_flow.rb:1179:10:1179:10 | a [element] | array_flow.rb:1179:10:1179:13 | ...[...] | -| array_flow.rb:1180:10:1180:10 | a [element 2] | array_flow.rb:1180:10:1180:13 | ...[...] | -| array_flow.rb:1180:10:1180:10 | a [element] | array_flow.rb:1180:10:1180:13 | ...[...] | -| array_flow.rb:1184:5:1184:5 | a [element 2] | array_flow.rb:1185:9:1185:9 | a [element 2] | -| array_flow.rb:1184:5:1184:5 | a [element 2] | array_flow.rb:1188:10:1188:10 | a [element 2] | -| array_flow.rb:1184:16:1184:26 | call to source | array_flow.rb:1184:5:1184:5 | a [element 2] | -| array_flow.rb:1185:5:1185:5 | b [element] | array_flow.rb:1189:10:1189:10 | b [element] | -| array_flow.rb:1185:5:1185:5 | b [element] | array_flow.rb:1190:10:1190:10 | b [element] | -| array_flow.rb:1185:5:1185:5 | b [element] | array_flow.rb:1191:10:1191:10 | b [element] | -| array_flow.rb:1185:9:1185:9 | a [element 2] | array_flow.rb:1185:9:1185:17 | call to shuffle [element] | -| array_flow.rb:1185:9:1185:17 | call to shuffle [element] | array_flow.rb:1185:5:1185:5 | b [element] | -| array_flow.rb:1188:10:1188:10 | a [element 2] | array_flow.rb:1188:10:1188:13 | ...[...] | -| array_flow.rb:1189:10:1189:10 | b [element] | array_flow.rb:1189:10:1189:13 | ...[...] | -| array_flow.rb:1190:10:1190:10 | b [element] | array_flow.rb:1190:10:1190:13 | ...[...] | -| array_flow.rb:1191:10:1191:10 | b [element] | array_flow.rb:1191:10:1191:13 | ...[...] | -| array_flow.rb:1195:5:1195:5 | a [element 2] | array_flow.rb:1196:9:1196:9 | a [element 2] | -| array_flow.rb:1195:5:1195:5 | a [element 2] | array_flow.rb:1199:10:1199:10 | a [element 2] | -| array_flow.rb:1195:16:1195:26 | call to source | array_flow.rb:1195:5:1195:5 | a [element 2] | -| array_flow.rb:1196:5:1196:5 | b [element] | array_flow.rb:1200:10:1200:10 | b [element] | -| array_flow.rb:1196:5:1196:5 | b [element] | array_flow.rb:1201:10:1201:10 | b [element] | -| array_flow.rb:1196:5:1196:5 | b [element] | array_flow.rb:1202:10:1202:10 | b [element] | -| array_flow.rb:1196:9:1196:9 | [post] a [element] | array_flow.rb:1197:10:1197:10 | a [element] | -| array_flow.rb:1196:9:1196:9 | [post] a [element] | array_flow.rb:1198:10:1198:10 | a [element] | -| array_flow.rb:1196:9:1196:9 | [post] a [element] | array_flow.rb:1199:10:1199:10 | a [element] | -| array_flow.rb:1196:9:1196:9 | a [element 2] | array_flow.rb:1196:9:1196:9 | [post] a [element] | -| array_flow.rb:1196:9:1196:9 | a [element 2] | array_flow.rb:1196:9:1196:18 | call to shuffle! [element] | -| array_flow.rb:1196:9:1196:18 | call to shuffle! [element] | array_flow.rb:1196:5:1196:5 | b [element] | -| array_flow.rb:1197:10:1197:10 | a [element] | array_flow.rb:1197:10:1197:13 | ...[...] | -| array_flow.rb:1198:10:1198:10 | a [element] | array_flow.rb:1198:10:1198:13 | ...[...] | -| array_flow.rb:1199:10:1199:10 | a [element 2] | array_flow.rb:1199:10:1199:13 | ...[...] | -| array_flow.rb:1199:10:1199:10 | a [element] | array_flow.rb:1199:10:1199:13 | ...[...] | -| array_flow.rb:1200:10:1200:10 | b [element] | array_flow.rb:1200:10:1200:13 | ...[...] | -| array_flow.rb:1201:10:1201:10 | b [element] | array_flow.rb:1201:10:1201:13 | ...[...] | -| array_flow.rb:1202:10:1202:10 | b [element] | array_flow.rb:1202:10:1202:13 | ...[...] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1211:9:1211:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1214:9:1214:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1221:9:1221:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1226:9:1226:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1230:9:1230:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1235:9:1235:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1240:9:1240:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1244:9:1244:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1248:9:1248:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1253:9:1253:9 | a [element 2] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1208:9:1208:9 | a [element 4] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1211:9:1211:9 | a [element 4] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1214:9:1214:9 | a [element 4] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1221:9:1221:9 | a [element 4] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1226:9:1226:9 | a [element 4] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1240:9:1240:9 | a [element 4] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1244:9:1244:9 | a [element 4] | -| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1253:9:1253:9 | a [element 4] | -| array_flow.rb:1206:16:1206:28 | call to source | array_flow.rb:1206:5:1206:5 | a [element 2] | -| array_flow.rb:1206:34:1206:46 | call to source | array_flow.rb:1206:5:1206:5 | a [element 4] | -| array_flow.rb:1208:5:1208:5 | b | array_flow.rb:1209:10:1209:10 | b | -| array_flow.rb:1208:9:1208:9 | a [element 4] | array_flow.rb:1208:9:1208:17 | call to slice | -| array_flow.rb:1208:9:1208:17 | call to slice | array_flow.rb:1208:5:1208:5 | b | -| array_flow.rb:1211:5:1211:5 | b | array_flow.rb:1212:10:1212:10 | b | -| array_flow.rb:1211:9:1211:9 | a [element 2] | array_flow.rb:1211:9:1211:19 | call to slice | -| array_flow.rb:1211:9:1211:9 | a [element 4] | array_flow.rb:1211:9:1211:19 | call to slice | -| array_flow.rb:1211:9:1211:19 | call to slice | array_flow.rb:1211:5:1211:5 | b | -| array_flow.rb:1214:5:1214:5 | b | array_flow.rb:1216:10:1216:10 | b | -| array_flow.rb:1214:9:1214:9 | a [element 2] | array_flow.rb:1214:9:1214:17 | call to slice | -| array_flow.rb:1214:9:1214:9 | a [element 4] | array_flow.rb:1214:9:1214:17 | call to slice | -| array_flow.rb:1214:9:1214:17 | call to slice | array_flow.rb:1214:5:1214:5 | b | -| array_flow.rb:1221:5:1221:5 | b [element 0] | array_flow.rb:1222:10:1222:10 | b [element 0] | -| array_flow.rb:1221:5:1221:5 | b [element 2] | array_flow.rb:1224:10:1224:10 | b [element 2] | -| array_flow.rb:1221:9:1221:9 | a [element 2] | array_flow.rb:1221:9:1221:21 | call to slice [element 0] | -| array_flow.rb:1221:9:1221:9 | a [element 4] | array_flow.rb:1221:9:1221:21 | call to slice [element 2] | -| array_flow.rb:1221:9:1221:21 | call to slice [element 0] | array_flow.rb:1221:5:1221:5 | b [element 0] | -| array_flow.rb:1221:9:1221:21 | call to slice [element 2] | array_flow.rb:1221:5:1221:5 | b [element 2] | -| array_flow.rb:1222:10:1222:10 | b [element 0] | array_flow.rb:1222:10:1222:13 | ...[...] | -| array_flow.rb:1224:10:1224:10 | b [element 2] | array_flow.rb:1224:10:1224:13 | ...[...] | -| array_flow.rb:1226:5:1226:5 | b [element] | array_flow.rb:1227:10:1227:10 | b [element] | -| array_flow.rb:1226:5:1226:5 | b [element] | array_flow.rb:1228:10:1228:10 | b [element] | -| array_flow.rb:1226:9:1226:9 | a [element 2] | array_flow.rb:1226:9:1226:21 | call to slice [element] | -| array_flow.rb:1226:9:1226:9 | a [element 4] | array_flow.rb:1226:9:1226:21 | call to slice [element] | -| array_flow.rb:1226:9:1226:21 | call to slice [element] | array_flow.rb:1226:5:1226:5 | b [element] | -| array_flow.rb:1227:10:1227:10 | b [element] | array_flow.rb:1227:10:1227:13 | ...[...] | -| array_flow.rb:1228:10:1228:10 | b [element] | array_flow.rb:1228:10:1228:13 | ...[...] | -| array_flow.rb:1230:5:1230:5 | b [element 0] | array_flow.rb:1231:10:1231:10 | b [element 0] | -| array_flow.rb:1230:9:1230:9 | a [element 2] | array_flow.rb:1230:9:1230:21 | call to slice [element 0] | -| array_flow.rb:1230:9:1230:21 | call to slice [element 0] | array_flow.rb:1230:5:1230:5 | b [element 0] | -| array_flow.rb:1231:10:1231:10 | b [element 0] | array_flow.rb:1231:10:1231:13 | ...[...] | -| array_flow.rb:1235:5:1235:5 | b [element 0] | array_flow.rb:1236:10:1236:10 | b [element 0] | -| array_flow.rb:1235:9:1235:9 | a [element 2] | array_flow.rb:1235:9:1235:22 | call to slice [element 0] | -| array_flow.rb:1235:9:1235:22 | call to slice [element 0] | array_flow.rb:1235:5:1235:5 | b [element 0] | -| array_flow.rb:1236:10:1236:10 | b [element 0] | array_flow.rb:1236:10:1236:13 | ...[...] | -| array_flow.rb:1240:5:1240:5 | b [element] | array_flow.rb:1241:10:1241:10 | b [element] | -| array_flow.rb:1240:5:1240:5 | b [element] | array_flow.rb:1242:10:1242:10 | b [element] | -| array_flow.rb:1240:9:1240:9 | a [element 2] | array_flow.rb:1240:9:1240:21 | call to slice [element] | -| array_flow.rb:1240:9:1240:9 | a [element 4] | array_flow.rb:1240:9:1240:21 | call to slice [element] | -| array_flow.rb:1240:9:1240:21 | call to slice [element] | array_flow.rb:1240:5:1240:5 | b [element] | -| array_flow.rb:1241:10:1241:10 | b [element] | array_flow.rb:1241:10:1241:13 | ...[...] | -| array_flow.rb:1242:10:1242:10 | b [element] | array_flow.rb:1242:10:1242:13 | ...[...] | -| array_flow.rb:1244:5:1244:5 | b [element] | array_flow.rb:1245:10:1245:10 | b [element] | -| array_flow.rb:1244:5:1244:5 | b [element] | array_flow.rb:1246:10:1246:10 | b [element] | -| array_flow.rb:1244:9:1244:9 | a [element 2] | array_flow.rb:1244:9:1244:24 | call to slice [element] | -| array_flow.rb:1244:9:1244:9 | a [element 4] | array_flow.rb:1244:9:1244:24 | call to slice [element] | -| array_flow.rb:1244:9:1244:24 | call to slice [element] | array_flow.rb:1244:5:1244:5 | b [element] | -| array_flow.rb:1245:10:1245:10 | b [element] | array_flow.rb:1245:10:1245:13 | ...[...] | -| array_flow.rb:1246:10:1246:10 | b [element] | array_flow.rb:1246:10:1246:13 | ...[...] | -| array_flow.rb:1248:5:1248:5 | b [element 2] | array_flow.rb:1251:10:1251:10 | b [element 2] | -| array_flow.rb:1248:9:1248:9 | a [element 2] | array_flow.rb:1248:9:1248:20 | call to slice [element 2] | -| array_flow.rb:1248:9:1248:20 | call to slice [element 2] | array_flow.rb:1248:5:1248:5 | b [element 2] | -| array_flow.rb:1251:10:1251:10 | b [element 2] | array_flow.rb:1251:10:1251:13 | ...[...] | -| array_flow.rb:1253:5:1253:5 | b [element] | array_flow.rb:1254:10:1254:10 | b [element] | -| array_flow.rb:1253:5:1253:5 | b [element] | array_flow.rb:1255:10:1255:10 | b [element] | -| array_flow.rb:1253:5:1253:5 | b [element] | array_flow.rb:1256:10:1256:10 | b [element] | -| array_flow.rb:1253:9:1253:9 | a [element 2] | array_flow.rb:1253:9:1253:20 | call to slice [element] | -| array_flow.rb:1253:9:1253:9 | a [element 4] | array_flow.rb:1253:9:1253:20 | call to slice [element] | -| array_flow.rb:1253:9:1253:20 | call to slice [element] | array_flow.rb:1253:5:1253:5 | b [element] | -| array_flow.rb:1254:10:1254:10 | b [element] | array_flow.rb:1254:10:1254:13 | ...[...] | -| array_flow.rb:1255:10:1255:10 | b [element] | array_flow.rb:1255:10:1255:13 | ...[...] | -| array_flow.rb:1256:10:1256:10 | b [element] | array_flow.rb:1256:10:1256:13 | ...[...] | -| array_flow.rb:1260:5:1260:5 | a [element 2] | array_flow.rb:1261:9:1261:9 | a [element 2] | -| array_flow.rb:1260:5:1260:5 | a [element 4] | array_flow.rb:1261:9:1261:9 | a [element 4] | -| array_flow.rb:1260:16:1260:28 | call to source | array_flow.rb:1260:5:1260:5 | a [element 2] | -| array_flow.rb:1260:34:1260:46 | call to source | array_flow.rb:1260:5:1260:5 | a [element 4] | -| array_flow.rb:1261:5:1261:5 | b | array_flow.rb:1262:10:1262:10 | b | -| array_flow.rb:1261:9:1261:9 | [post] a [element 3] | array_flow.rb:1266:10:1266:10 | a [element 3] | -| array_flow.rb:1261:9:1261:9 | a [element 2] | array_flow.rb:1261:9:1261:19 | call to slice! | -| array_flow.rb:1261:9:1261:9 | a [element 4] | array_flow.rb:1261:9:1261:9 | [post] a [element 3] | -| array_flow.rb:1261:9:1261:19 | call to slice! | array_flow.rb:1261:5:1261:5 | b | -| array_flow.rb:1266:10:1266:10 | a [element 3] | array_flow.rb:1266:10:1266:13 | ...[...] | -| array_flow.rb:1268:5:1268:5 | a [element 2] | array_flow.rb:1269:9:1269:9 | a [element 2] | -| array_flow.rb:1268:5:1268:5 | a [element 4] | array_flow.rb:1269:9:1269:9 | a [element 4] | -| array_flow.rb:1268:16:1268:28 | call to source | array_flow.rb:1268:5:1268:5 | a [element 2] | -| array_flow.rb:1268:34:1268:46 | call to source | array_flow.rb:1268:5:1268:5 | a [element 4] | -| array_flow.rb:1269:5:1269:5 | b | array_flow.rb:1275:10:1275:10 | b | -| array_flow.rb:1269:5:1269:5 | b [element] | array_flow.rb:1277:10:1277:10 | b [element] | -| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1270:10:1270:10 | a [element] | -| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1271:10:1271:10 | a [element] | -| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1272:10:1272:10 | a [element] | -| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1273:10:1273:10 | a [element] | -| array_flow.rb:1269:9:1269:9 | a [element 2] | array_flow.rb:1269:9:1269:9 | [post] a [element] | -| array_flow.rb:1269:9:1269:9 | a [element 2] | array_flow.rb:1269:9:1269:19 | call to slice! | -| array_flow.rb:1269:9:1269:9 | a [element 2] | array_flow.rb:1269:9:1269:19 | call to slice! [element] | -| array_flow.rb:1269:9:1269:9 | a [element 4] | array_flow.rb:1269:9:1269:9 | [post] a [element] | -| array_flow.rb:1269:9:1269:9 | a [element 4] | array_flow.rb:1269:9:1269:19 | call to slice! | -| array_flow.rb:1269:9:1269:9 | a [element 4] | array_flow.rb:1269:9:1269:19 | call to slice! [element] | -| array_flow.rb:1269:9:1269:19 | call to slice! | array_flow.rb:1269:5:1269:5 | b | -| array_flow.rb:1269:9:1269:19 | call to slice! [element] | array_flow.rb:1269:5:1269:5 | b [element] | -| array_flow.rb:1270:10:1270:10 | a [element] | array_flow.rb:1270:10:1270:13 | ...[...] | -| array_flow.rb:1271:10:1271:10 | a [element] | array_flow.rb:1271:10:1271:13 | ...[...] | -| array_flow.rb:1272:10:1272:10 | a [element] | array_flow.rb:1272:10:1272:13 | ...[...] | -| array_flow.rb:1273:10:1273:10 | a [element] | array_flow.rb:1273:10:1273:13 | ...[...] | -| array_flow.rb:1277:10:1277:10 | b [element] | array_flow.rb:1277:10:1277:13 | ...[...] | -| array_flow.rb:1279:5:1279:5 | a [element 2] | array_flow.rb:1280:9:1280:9 | a [element 2] | -| array_flow.rb:1279:5:1279:5 | a [element 4] | array_flow.rb:1280:9:1280:9 | a [element 4] | -| array_flow.rb:1279:16:1279:28 | call to source | array_flow.rb:1279:5:1279:5 | a [element 2] | -| array_flow.rb:1279:34:1279:46 | call to source | array_flow.rb:1279:5:1279:5 | a [element 4] | -| array_flow.rb:1280:5:1280:5 | b [element 0] | array_flow.rb:1281:10:1281:10 | b [element 0] | -| array_flow.rb:1280:5:1280:5 | b [element 2] | array_flow.rb:1283:10:1283:10 | b [element 2] | -| array_flow.rb:1280:9:1280:9 | a [element 2] | array_flow.rb:1280:9:1280:22 | call to slice! [element 0] | -| array_flow.rb:1280:9:1280:9 | a [element 4] | array_flow.rb:1280:9:1280:22 | call to slice! [element 2] | -| array_flow.rb:1280:9:1280:22 | call to slice! [element 0] | array_flow.rb:1280:5:1280:5 | b [element 0] | -| array_flow.rb:1280:9:1280:22 | call to slice! [element 2] | array_flow.rb:1280:5:1280:5 | b [element 2] | -| array_flow.rb:1281:10:1281:10 | b [element 0] | array_flow.rb:1281:10:1281:13 | ...[...] | -| array_flow.rb:1283:10:1283:10 | b [element 2] | array_flow.rb:1283:10:1283:13 | ...[...] | -| array_flow.rb:1290:5:1290:5 | a [element 2] | array_flow.rb:1291:9:1291:9 | a [element 2] | -| array_flow.rb:1290:5:1290:5 | a [element 4] | array_flow.rb:1291:9:1291:9 | a [element 4] | -| array_flow.rb:1290:16:1290:28 | call to source | array_flow.rb:1290:5:1290:5 | a [element 2] | -| array_flow.rb:1290:34:1290:46 | call to source | array_flow.rb:1290:5:1290:5 | a [element 4] | -| array_flow.rb:1291:5:1291:5 | b [element 0] | array_flow.rb:1292:10:1292:10 | b [element 0] | -| array_flow.rb:1291:9:1291:9 | [post] a [element 2] | array_flow.rb:1297:10:1297:10 | a [element 2] | -| array_flow.rb:1291:9:1291:9 | a [element 2] | array_flow.rb:1291:9:1291:22 | call to slice! [element 0] | -| array_flow.rb:1291:9:1291:9 | a [element 4] | array_flow.rb:1291:9:1291:9 | [post] a [element 2] | -| array_flow.rb:1291:9:1291:22 | call to slice! [element 0] | array_flow.rb:1291:5:1291:5 | b [element 0] | -| array_flow.rb:1292:10:1292:10 | b [element 0] | array_flow.rb:1292:10:1292:13 | ...[...] | -| array_flow.rb:1297:10:1297:10 | a [element 2] | array_flow.rb:1297:10:1297:13 | ...[...] | -| array_flow.rb:1301:5:1301:5 | a [element 2] | array_flow.rb:1302:9:1302:9 | a [element 2] | -| array_flow.rb:1301:5:1301:5 | a [element 4] | array_flow.rb:1302:9:1302:9 | a [element 4] | -| array_flow.rb:1301:16:1301:28 | call to source | array_flow.rb:1301:5:1301:5 | a [element 2] | -| array_flow.rb:1301:34:1301:46 | call to source | array_flow.rb:1301:5:1301:5 | a [element 4] | -| array_flow.rb:1302:5:1302:5 | b [element 0] | array_flow.rb:1303:10:1303:10 | b [element 0] | -| array_flow.rb:1302:9:1302:9 | [post] a [element 2] | array_flow.rb:1308:10:1308:10 | a [element 2] | -| array_flow.rb:1302:9:1302:9 | a [element 2] | array_flow.rb:1302:9:1302:23 | call to slice! [element 0] | -| array_flow.rb:1302:9:1302:9 | a [element 4] | array_flow.rb:1302:9:1302:9 | [post] a [element 2] | -| array_flow.rb:1302:9:1302:23 | call to slice! [element 0] | array_flow.rb:1302:5:1302:5 | b [element 0] | -| array_flow.rb:1303:10:1303:10 | b [element 0] | array_flow.rb:1303:10:1303:13 | ...[...] | -| array_flow.rb:1308:10:1308:10 | a [element 2] | array_flow.rb:1308:10:1308:13 | ...[...] | -| array_flow.rb:1312:5:1312:5 | a [element 2] | array_flow.rb:1313:9:1313:9 | a [element 2] | -| array_flow.rb:1312:5:1312:5 | a [element 4] | array_flow.rb:1313:9:1313:9 | a [element 4] | -| array_flow.rb:1312:16:1312:28 | call to source | array_flow.rb:1312:5:1312:5 | a [element 2] | -| array_flow.rb:1312:34:1312:46 | call to source | array_flow.rb:1312:5:1312:5 | a [element 4] | -| array_flow.rb:1313:5:1313:5 | b [element] | array_flow.rb:1314:10:1314:10 | b [element] | -| array_flow.rb:1313:5:1313:5 | b [element] | array_flow.rb:1315:10:1315:10 | b [element] | -| array_flow.rb:1313:5:1313:5 | b [element] | array_flow.rb:1316:10:1316:10 | b [element] | -| array_flow.rb:1313:9:1313:9 | [post] a [element] | array_flow.rb:1317:10:1317:10 | a [element] | -| array_flow.rb:1313:9:1313:9 | [post] a [element] | array_flow.rb:1318:10:1318:10 | a [element] | -| array_flow.rb:1313:9:1313:9 | [post] a [element] | array_flow.rb:1319:10:1319:10 | a [element] | -| array_flow.rb:1313:9:1313:9 | a [element 2] | array_flow.rb:1313:9:1313:9 | [post] a [element] | -| array_flow.rb:1313:9:1313:9 | a [element 2] | array_flow.rb:1313:9:1313:22 | call to slice! [element] | -| array_flow.rb:1313:9:1313:9 | a [element 4] | array_flow.rb:1313:9:1313:9 | [post] a [element] | -| array_flow.rb:1313:9:1313:9 | a [element 4] | array_flow.rb:1313:9:1313:22 | call to slice! [element] | -| array_flow.rb:1313:9:1313:22 | call to slice! [element] | array_flow.rb:1313:5:1313:5 | b [element] | -| array_flow.rb:1314:10:1314:10 | b [element] | array_flow.rb:1314:10:1314:13 | ...[...] | -| array_flow.rb:1315:10:1315:10 | b [element] | array_flow.rb:1315:10:1315:13 | ...[...] | -| array_flow.rb:1316:10:1316:10 | b [element] | array_flow.rb:1316:10:1316:13 | ...[...] | -| array_flow.rb:1317:10:1317:10 | a [element] | array_flow.rb:1317:10:1317:13 | ...[...] | -| array_flow.rb:1318:10:1318:10 | a [element] | array_flow.rb:1318:10:1318:13 | ...[...] | -| array_flow.rb:1319:10:1319:10 | a [element] | array_flow.rb:1319:10:1319:13 | ...[...] | -| array_flow.rb:1321:5:1321:5 | a [element 2] | array_flow.rb:1322:9:1322:9 | a [element 2] | -| array_flow.rb:1321:5:1321:5 | a [element 4] | array_flow.rb:1322:9:1322:9 | a [element 4] | -| array_flow.rb:1321:16:1321:28 | call to source | array_flow.rb:1321:5:1321:5 | a [element 2] | -| array_flow.rb:1321:34:1321:46 | call to source | array_flow.rb:1321:5:1321:5 | a [element 4] | -| array_flow.rb:1322:5:1322:5 | b [element] | array_flow.rb:1323:10:1323:10 | b [element] | -| array_flow.rb:1322:5:1322:5 | b [element] | array_flow.rb:1324:10:1324:10 | b [element] | -| array_flow.rb:1322:5:1322:5 | b [element] | array_flow.rb:1325:10:1325:10 | b [element] | -| array_flow.rb:1322:9:1322:9 | [post] a [element] | array_flow.rb:1326:10:1326:10 | a [element] | -| array_flow.rb:1322:9:1322:9 | [post] a [element] | array_flow.rb:1327:10:1327:10 | a [element] | -| array_flow.rb:1322:9:1322:9 | [post] a [element] | array_flow.rb:1328:10:1328:10 | a [element] | -| array_flow.rb:1322:9:1322:9 | a [element 2] | array_flow.rb:1322:9:1322:9 | [post] a [element] | -| array_flow.rb:1322:9:1322:9 | a [element 2] | array_flow.rb:1322:9:1322:22 | call to slice! [element] | -| array_flow.rb:1322:9:1322:9 | a [element 4] | array_flow.rb:1322:9:1322:9 | [post] a [element] | -| array_flow.rb:1322:9:1322:9 | a [element 4] | array_flow.rb:1322:9:1322:22 | call to slice! [element] | -| array_flow.rb:1322:9:1322:22 | call to slice! [element] | array_flow.rb:1322:5:1322:5 | b [element] | -| array_flow.rb:1323:10:1323:10 | b [element] | array_flow.rb:1323:10:1323:13 | ...[...] | -| array_flow.rb:1324:10:1324:10 | b [element] | array_flow.rb:1324:10:1324:13 | ...[...] | -| array_flow.rb:1325:10:1325:10 | b [element] | array_flow.rb:1325:10:1325:13 | ...[...] | -| array_flow.rb:1326:10:1326:10 | a [element] | array_flow.rb:1326:10:1326:13 | ...[...] | -| array_flow.rb:1327:10:1327:10 | a [element] | array_flow.rb:1327:10:1327:13 | ...[...] | -| array_flow.rb:1328:10:1328:10 | a [element] | array_flow.rb:1328:10:1328:13 | ...[...] | -| array_flow.rb:1330:5:1330:5 | a [element 2] | array_flow.rb:1331:9:1331:9 | a [element 2] | -| array_flow.rb:1330:5:1330:5 | a [element 4] | array_flow.rb:1331:9:1331:9 | a [element 4] | -| array_flow.rb:1330:16:1330:28 | call to source | array_flow.rb:1330:5:1330:5 | a [element 2] | -| array_flow.rb:1330:34:1330:46 | call to source | array_flow.rb:1330:5:1330:5 | a [element 4] | -| array_flow.rb:1331:5:1331:5 | b [element] | array_flow.rb:1332:10:1332:10 | b [element] | -| array_flow.rb:1331:5:1331:5 | b [element] | array_flow.rb:1333:10:1333:10 | b [element] | -| array_flow.rb:1331:5:1331:5 | b [element] | array_flow.rb:1334:10:1334:10 | b [element] | -| array_flow.rb:1331:9:1331:9 | [post] a [element] | array_flow.rb:1335:10:1335:10 | a [element] | -| array_flow.rb:1331:9:1331:9 | [post] a [element] | array_flow.rb:1336:10:1336:10 | a [element] | -| array_flow.rb:1331:9:1331:9 | [post] a [element] | array_flow.rb:1337:10:1337:10 | a [element] | -| array_flow.rb:1331:9:1331:9 | a [element 2] | array_flow.rb:1331:9:1331:9 | [post] a [element] | -| array_flow.rb:1331:9:1331:9 | a [element 2] | array_flow.rb:1331:9:1331:25 | call to slice! [element] | -| array_flow.rb:1331:9:1331:9 | a [element 4] | array_flow.rb:1331:9:1331:9 | [post] a [element] | -| array_flow.rb:1331:9:1331:9 | a [element 4] | array_flow.rb:1331:9:1331:25 | call to slice! [element] | -| array_flow.rb:1331:9:1331:25 | call to slice! [element] | array_flow.rb:1331:5:1331:5 | b [element] | -| array_flow.rb:1332:10:1332:10 | b [element] | array_flow.rb:1332:10:1332:13 | ...[...] | -| array_flow.rb:1333:10:1333:10 | b [element] | array_flow.rb:1333:10:1333:13 | ...[...] | -| array_flow.rb:1334:10:1334:10 | b [element] | array_flow.rb:1334:10:1334:13 | ...[...] | -| array_flow.rb:1335:10:1335:10 | a [element] | array_flow.rb:1335:10:1335:13 | ...[...] | -| array_flow.rb:1336:10:1336:10 | a [element] | array_flow.rb:1336:10:1336:13 | ...[...] | -| array_flow.rb:1337:10:1337:10 | a [element] | array_flow.rb:1337:10:1337:13 | ...[...] | -| array_flow.rb:1339:5:1339:5 | a [element 2] | array_flow.rb:1340:9:1340:9 | a [element 2] | -| array_flow.rb:1339:5:1339:5 | a [element 4] | array_flow.rb:1340:9:1340:9 | a [element 4] | -| array_flow.rb:1339:16:1339:28 | call to source | array_flow.rb:1339:5:1339:5 | a [element 2] | -| array_flow.rb:1339:34:1339:46 | call to source | array_flow.rb:1339:5:1339:5 | a [element 4] | -| array_flow.rb:1340:5:1340:5 | b [element 2] | array_flow.rb:1343:10:1343:10 | b [element 2] | -| array_flow.rb:1340:9:1340:9 | [post] a [element 1] | array_flow.rb:1345:10:1345:10 | a [element 1] | -| array_flow.rb:1340:9:1340:9 | a [element 2] | array_flow.rb:1340:9:1340:21 | call to slice! [element 2] | -| array_flow.rb:1340:9:1340:9 | a [element 4] | array_flow.rb:1340:9:1340:9 | [post] a [element 1] | -| array_flow.rb:1340:9:1340:21 | call to slice! [element 2] | array_flow.rb:1340:5:1340:5 | b [element 2] | -| array_flow.rb:1343:10:1343:10 | b [element 2] | array_flow.rb:1343:10:1343:13 | ...[...] | -| array_flow.rb:1345:10:1345:10 | a [element 1] | array_flow.rb:1345:10:1345:13 | ...[...] | -| array_flow.rb:1348:5:1348:5 | a [element 2] | array_flow.rb:1349:9:1349:9 | a [element 2] | -| array_flow.rb:1348:5:1348:5 | a [element 4] | array_flow.rb:1349:9:1349:9 | a [element 4] | -| array_flow.rb:1348:16:1348:28 | call to source | array_flow.rb:1348:5:1348:5 | a [element 2] | -| array_flow.rb:1348:34:1348:46 | call to source | array_flow.rb:1348:5:1348:5 | a [element 4] | -| array_flow.rb:1349:5:1349:5 | b [element] | array_flow.rb:1350:10:1350:10 | b [element] | -| array_flow.rb:1349:5:1349:5 | b [element] | array_flow.rb:1351:10:1351:10 | b [element] | -| array_flow.rb:1349:5:1349:5 | b [element] | array_flow.rb:1352:10:1352:10 | b [element] | -| array_flow.rb:1349:9:1349:9 | [post] a [element] | array_flow.rb:1353:10:1353:10 | a [element] | -| array_flow.rb:1349:9:1349:9 | [post] a [element] | array_flow.rb:1354:10:1354:10 | a [element] | -| array_flow.rb:1349:9:1349:9 | [post] a [element] | array_flow.rb:1355:10:1355:10 | a [element] | -| array_flow.rb:1349:9:1349:9 | a [element 2] | array_flow.rb:1349:9:1349:9 | [post] a [element] | -| array_flow.rb:1349:9:1349:9 | a [element 2] | array_flow.rb:1349:9:1349:21 | call to slice! [element] | -| array_flow.rb:1349:9:1349:9 | a [element 4] | array_flow.rb:1349:9:1349:9 | [post] a [element] | -| array_flow.rb:1349:9:1349:9 | a [element 4] | array_flow.rb:1349:9:1349:21 | call to slice! [element] | -| array_flow.rb:1349:9:1349:21 | call to slice! [element] | array_flow.rb:1349:5:1349:5 | b [element] | -| array_flow.rb:1350:10:1350:10 | b [element] | array_flow.rb:1350:10:1350:13 | ...[...] | -| array_flow.rb:1351:10:1351:10 | b [element] | array_flow.rb:1351:10:1351:13 | ...[...] | -| array_flow.rb:1352:10:1352:10 | b [element] | array_flow.rb:1352:10:1352:13 | ...[...] | -| array_flow.rb:1353:10:1353:10 | a [element] | array_flow.rb:1353:10:1353:13 | ...[...] | -| array_flow.rb:1354:10:1354:10 | a [element] | array_flow.rb:1354:10:1354:13 | ...[...] | -| array_flow.rb:1355:10:1355:10 | a [element] | array_flow.rb:1355:10:1355:13 | ...[...] | -| array_flow.rb:1359:5:1359:5 | a [element 2] | array_flow.rb:1360:9:1360:9 | a [element 2] | -| array_flow.rb:1359:16:1359:26 | call to source | array_flow.rb:1359:5:1359:5 | a [element 2] | -| array_flow.rb:1360:9:1360:9 | a [element 2] | array_flow.rb:1360:27:1360:27 | x | -| array_flow.rb:1360:27:1360:27 | x | array_flow.rb:1361:14:1361:14 | x | -| array_flow.rb:1367:5:1367:5 | a [element 2] | array_flow.rb:1368:9:1368:9 | a [element 2] | -| array_flow.rb:1367:16:1367:26 | call to source | array_flow.rb:1367:5:1367:5 | a [element 2] | -| array_flow.rb:1368:9:1368:9 | a [element 2] | array_flow.rb:1368:28:1368:28 | x | -| array_flow.rb:1368:28:1368:28 | x | array_flow.rb:1369:14:1369:14 | x | -| array_flow.rb:1375:5:1375:5 | a [element 2] | array_flow.rb:1376:9:1376:9 | a [element 2] | -| array_flow.rb:1375:16:1375:26 | call to source | array_flow.rb:1375:5:1375:5 | a [element 2] | -| array_flow.rb:1376:9:1376:9 | a [element 2] | array_flow.rb:1376:26:1376:26 | x | -| array_flow.rb:1376:9:1376:9 | a [element 2] | array_flow.rb:1376:29:1376:29 | y | -| array_flow.rb:1376:26:1376:26 | x | array_flow.rb:1377:14:1377:14 | x | -| array_flow.rb:1376:29:1376:29 | y | array_flow.rb:1378:14:1378:14 | y | -| array_flow.rb:1383:5:1383:5 | a [element 2] | array_flow.rb:1384:9:1384:9 | a [element 2] | -| array_flow.rb:1383:5:1383:5 | a [element 2] | array_flow.rb:1387:9:1387:9 | a [element 2] | -| array_flow.rb:1383:16:1383:26 | call to source | array_flow.rb:1383:5:1383:5 | a [element 2] | -| array_flow.rb:1384:5:1384:5 | b [element] | array_flow.rb:1385:10:1385:10 | b [element] | -| array_flow.rb:1384:5:1384:5 | b [element] | array_flow.rb:1386:10:1386:10 | b [element] | -| array_flow.rb:1384:9:1384:9 | a [element 2] | array_flow.rb:1384:9:1384:14 | call to sort [element] | -| array_flow.rb:1384:9:1384:14 | call to sort [element] | array_flow.rb:1384:5:1384:5 | b [element] | -| array_flow.rb:1385:10:1385:10 | b [element] | array_flow.rb:1385:10:1385:13 | ...[...] | -| array_flow.rb:1386:10:1386:10 | b [element] | array_flow.rb:1386:10:1386:13 | ...[...] | -| array_flow.rb:1387:5:1387:5 | c [element] | array_flow.rb:1392:10:1392:10 | c [element] | -| array_flow.rb:1387:5:1387:5 | c [element] | array_flow.rb:1393:10:1393:10 | c [element] | -| array_flow.rb:1387:9:1387:9 | a [element 2] | array_flow.rb:1387:9:1391:7 | call to sort [element] | -| array_flow.rb:1387:9:1387:9 | a [element 2] | array_flow.rb:1387:20:1387:20 | x | -| array_flow.rb:1387:9:1387:9 | a [element 2] | array_flow.rb:1387:23:1387:23 | y | -| array_flow.rb:1387:9:1391:7 | call to sort [element] | array_flow.rb:1387:5:1387:5 | c [element] | -| array_flow.rb:1387:20:1387:20 | x | array_flow.rb:1388:14:1388:14 | x | -| array_flow.rb:1387:23:1387:23 | y | array_flow.rb:1389:14:1389:14 | y | -| array_flow.rb:1392:10:1392:10 | c [element] | array_flow.rb:1392:10:1392:13 | ...[...] | -| array_flow.rb:1393:10:1393:10 | c [element] | array_flow.rb:1393:10:1393:13 | ...[...] | -| array_flow.rb:1397:5:1397:5 | a [element 2] | array_flow.rb:1398:9:1398:9 | a [element 2] | -| array_flow.rb:1397:16:1397:26 | call to source | array_flow.rb:1397:5:1397:5 | a [element 2] | -| array_flow.rb:1398:5:1398:5 | b [element] | array_flow.rb:1399:10:1399:10 | b [element] | -| array_flow.rb:1398:5:1398:5 | b [element] | array_flow.rb:1400:10:1400:10 | b [element] | -| array_flow.rb:1398:9:1398:9 | [post] a [element] | array_flow.rb:1401:10:1401:10 | a [element] | -| array_flow.rb:1398:9:1398:9 | [post] a [element] | array_flow.rb:1402:10:1402:10 | a [element] | -| array_flow.rb:1398:9:1398:9 | a [element 2] | array_flow.rb:1398:9:1398:9 | [post] a [element] | -| array_flow.rb:1398:9:1398:9 | a [element 2] | array_flow.rb:1398:9:1398:15 | call to sort! [element] | -| array_flow.rb:1398:9:1398:15 | call to sort! [element] | array_flow.rb:1398:5:1398:5 | b [element] | -| array_flow.rb:1399:10:1399:10 | b [element] | array_flow.rb:1399:10:1399:13 | ...[...] | -| array_flow.rb:1400:10:1400:10 | b [element] | array_flow.rb:1400:10:1400:13 | ...[...] | -| array_flow.rb:1401:10:1401:10 | a [element] | array_flow.rb:1401:10:1401:13 | ...[...] | -| array_flow.rb:1402:10:1402:10 | a [element] | array_flow.rb:1402:10:1402:13 | ...[...] | -| array_flow.rb:1404:5:1404:5 | a [element 2] | array_flow.rb:1405:9:1405:9 | a [element 2] | -| array_flow.rb:1404:16:1404:26 | call to source | array_flow.rb:1404:5:1404:5 | a [element 2] | -| array_flow.rb:1405:5:1405:5 | b [element] | array_flow.rb:1410:10:1410:10 | b [element] | -| array_flow.rb:1405:5:1405:5 | b [element] | array_flow.rb:1411:10:1411:10 | b [element] | -| array_flow.rb:1405:9:1405:9 | [post] a [element] | array_flow.rb:1412:10:1412:10 | a [element] | -| array_flow.rb:1405:9:1405:9 | [post] a [element] | array_flow.rb:1413:10:1413:10 | a [element] | -| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:9:1405:9 | [post] a [element] | -| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:9:1409:7 | call to sort! [element] | -| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:21:1405:21 | x | -| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:24:1405:24 | y | -| array_flow.rb:1405:9:1409:7 | call to sort! [element] | array_flow.rb:1405:5:1405:5 | b [element] | -| array_flow.rb:1405:21:1405:21 | x | array_flow.rb:1406:14:1406:14 | x | -| array_flow.rb:1405:24:1405:24 | y | array_flow.rb:1407:14:1407:14 | y | -| array_flow.rb:1410:10:1410:10 | b [element] | array_flow.rb:1410:10:1410:13 | ...[...] | -| array_flow.rb:1411:10:1411:10 | b [element] | array_flow.rb:1411:10:1411:13 | ...[...] | -| array_flow.rb:1412:10:1412:10 | a [element] | array_flow.rb:1412:10:1412:13 | ...[...] | -| array_flow.rb:1413:10:1413:10 | a [element] | array_flow.rb:1413:10:1413:13 | ...[...] | -| array_flow.rb:1417:5:1417:5 | a [element 2] | array_flow.rb:1418:9:1418:9 | a [element 2] | -| array_flow.rb:1417:16:1417:26 | call to source | array_flow.rb:1417:5:1417:5 | a [element 2] | -| array_flow.rb:1418:5:1418:5 | b [element] | array_flow.rb:1422:10:1422:10 | b [element] | -| array_flow.rb:1418:5:1418:5 | b [element] | array_flow.rb:1423:10:1423:10 | b [element] | -| array_flow.rb:1418:9:1418:9 | a [element 2] | array_flow.rb:1418:9:1421:7 | call to sort_by [element] | -| array_flow.rb:1418:9:1418:9 | a [element 2] | array_flow.rb:1418:23:1418:23 | x | -| array_flow.rb:1418:9:1421:7 | call to sort_by [element] | array_flow.rb:1418:5:1418:5 | b [element] | -| array_flow.rb:1418:23:1418:23 | x | array_flow.rb:1419:14:1419:14 | x | -| array_flow.rb:1422:10:1422:10 | b [element] | array_flow.rb:1422:10:1422:13 | ...[...] | -| array_flow.rb:1423:10:1423:10 | b [element] | array_flow.rb:1423:10:1423:13 | ...[...] | -| array_flow.rb:1427:5:1427:5 | a [element 2] | array_flow.rb:1428:9:1428:9 | a [element 2] | -| array_flow.rb:1427:16:1427:26 | call to source | array_flow.rb:1427:5:1427:5 | a [element 2] | -| array_flow.rb:1428:5:1428:5 | b [element] | array_flow.rb:1434:10:1434:10 | b [element] | -| array_flow.rb:1428:5:1428:5 | b [element] | array_flow.rb:1435:10:1435:10 | b [element] | -| array_flow.rb:1428:9:1428:9 | [post] a [element] | array_flow.rb:1432:10:1432:10 | a [element] | -| array_flow.rb:1428:9:1428:9 | [post] a [element] | array_flow.rb:1433:10:1433:10 | a [element] | -| array_flow.rb:1428:9:1428:9 | a [element 2] | array_flow.rb:1428:9:1428:9 | [post] a [element] | -| array_flow.rb:1428:9:1428:9 | a [element 2] | array_flow.rb:1428:9:1431:7 | call to sort_by! [element] | -| array_flow.rb:1428:9:1428:9 | a [element 2] | array_flow.rb:1428:24:1428:24 | x | -| array_flow.rb:1428:9:1431:7 | call to sort_by! [element] | array_flow.rb:1428:5:1428:5 | b [element] | -| array_flow.rb:1428:24:1428:24 | x | array_flow.rb:1429:14:1429:14 | x | -| array_flow.rb:1432:10:1432:10 | a [element] | array_flow.rb:1432:10:1432:13 | ...[...] | -| array_flow.rb:1433:10:1433:10 | a [element] | array_flow.rb:1433:10:1433:13 | ...[...] | -| array_flow.rb:1434:10:1434:10 | b [element] | array_flow.rb:1434:10:1434:13 | ...[...] | -| array_flow.rb:1435:10:1435:10 | b [element] | array_flow.rb:1435:10:1435:13 | ...[...] | -| array_flow.rb:1439:5:1439:5 | a [element 2] | array_flow.rb:1440:9:1440:9 | a [element 2] | -| array_flow.rb:1439:16:1439:26 | call to source | array_flow.rb:1439:5:1439:5 | a [element 2] | -| array_flow.rb:1440:9:1440:9 | a [element 2] | array_flow.rb:1440:19:1440:19 | x | -| array_flow.rb:1440:19:1440:19 | x | array_flow.rb:1441:14:1441:14 | x | -| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1448:9:1448:9 | a [element 2] | -| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1453:9:1453:9 | a [element 2] | -| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1459:9:1459:9 | a [element 2] | -| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1466:9:1466:9 | a [element 2] | -| array_flow.rb:1447:5:1447:5 | a [element 3] | array_flow.rb:1448:9:1448:9 | a [element 3] | -| array_flow.rb:1447:5:1447:5 | a [element 3] | array_flow.rb:1459:9:1459:9 | a [element 3] | -| array_flow.rb:1447:16:1447:28 | call to source | array_flow.rb:1447:5:1447:5 | a [element 2] | -| array_flow.rb:1447:31:1447:43 | call to source | array_flow.rb:1447:5:1447:5 | a [element 3] | -| array_flow.rb:1448:5:1448:5 | b [element 2] | array_flow.rb:1451:10:1451:10 | b [element 2] | -| array_flow.rb:1448:5:1448:5 | b [element 3] | array_flow.rb:1452:10:1452:10 | b [element 3] | -| array_flow.rb:1448:9:1448:9 | a [element 2] | array_flow.rb:1448:9:1448:17 | call to take [element 2] | -| array_flow.rb:1448:9:1448:9 | a [element 3] | array_flow.rb:1448:9:1448:17 | call to take [element 3] | -| array_flow.rb:1448:9:1448:17 | call to take [element 2] | array_flow.rb:1448:5:1448:5 | b [element 2] | -| array_flow.rb:1448:9:1448:17 | call to take [element 3] | array_flow.rb:1448:5:1448:5 | b [element 3] | -| array_flow.rb:1451:10:1451:10 | b [element 2] | array_flow.rb:1451:10:1451:13 | ...[...] | -| array_flow.rb:1452:10:1452:10 | b [element 3] | array_flow.rb:1452:10:1452:13 | ...[...] | -| array_flow.rb:1453:5:1453:5 | b [element 2] | array_flow.rb:1456:10:1456:10 | b [element 2] | -| array_flow.rb:1453:5:1453:5 | b [element 2] | array_flow.rb:1458:10:1458:10 | b [element 2] | -| array_flow.rb:1453:9:1453:9 | a [element 2] | array_flow.rb:1453:9:1453:17 | call to take [element 2] | -| array_flow.rb:1453:9:1453:17 | call to take [element 2] | array_flow.rb:1453:5:1453:5 | b [element 2] | -| array_flow.rb:1456:10:1456:10 | b [element 2] | array_flow.rb:1456:10:1456:13 | ...[...] | -| array_flow.rb:1458:10:1458:10 | b [element 2] | array_flow.rb:1458:10:1458:13 | ...[...] | -| array_flow.rb:1459:5:1459:5 | b [element 2] | array_flow.rb:1462:10:1462:10 | b [element 2] | -| array_flow.rb:1459:5:1459:5 | b [element 2] | array_flow.rb:1464:10:1464:10 | b [element 2] | -| array_flow.rb:1459:5:1459:5 | b [element 3] | array_flow.rb:1463:10:1463:10 | b [element 3] | -| array_flow.rb:1459:5:1459:5 | b [element 3] | array_flow.rb:1464:10:1464:10 | b [element 3] | -| array_flow.rb:1459:9:1459:9 | a [element 2] | array_flow.rb:1459:9:1459:19 | call to take [element 2] | -| array_flow.rb:1459:9:1459:9 | a [element 3] | array_flow.rb:1459:9:1459:19 | call to take [element 3] | -| array_flow.rb:1459:9:1459:19 | call to take [element 2] | array_flow.rb:1459:5:1459:5 | b [element 2] | -| array_flow.rb:1459:9:1459:19 | call to take [element 3] | array_flow.rb:1459:5:1459:5 | b [element 3] | -| array_flow.rb:1462:10:1462:10 | b [element 2] | array_flow.rb:1462:10:1462:13 | ...[...] | -| array_flow.rb:1463:10:1463:10 | b [element 3] | array_flow.rb:1463:10:1463:13 | ...[...] | -| array_flow.rb:1464:10:1464:10 | b [element 2] | array_flow.rb:1464:10:1464:13 | ...[...] | -| array_flow.rb:1464:10:1464:10 | b [element 3] | array_flow.rb:1464:10:1464:13 | ...[...] | -| array_flow.rb:1465:5:1465:5 | [post] a [element] | array_flow.rb:1466:9:1466:9 | a [element] | -| array_flow.rb:1465:12:1465:24 | call to source | array_flow.rb:1465:5:1465:5 | [post] a [element] | -| array_flow.rb:1466:5:1466:5 | b [element 2] | array_flow.rb:1467:10:1467:10 | b [element 2] | -| array_flow.rb:1466:5:1466:5 | b [element] | array_flow.rb:1467:10:1467:10 | b [element] | -| array_flow.rb:1466:9:1466:9 | a [element 2] | array_flow.rb:1466:9:1466:17 | call to take [element 2] | -| array_flow.rb:1466:9:1466:9 | a [element] | array_flow.rb:1466:9:1466:17 | call to take [element] | -| array_flow.rb:1466:9:1466:17 | call to take [element 2] | array_flow.rb:1466:5:1466:5 | b [element 2] | -| array_flow.rb:1466:9:1466:17 | call to take [element] | array_flow.rb:1466:5:1466:5 | b [element] | -| array_flow.rb:1467:10:1467:10 | b [element 2] | array_flow.rb:1467:10:1467:13 | ...[...] | -| array_flow.rb:1467:10:1467:10 | b [element] | array_flow.rb:1467:10:1467:13 | ...[...] | -| array_flow.rb:1471:5:1471:5 | a [element 2] | array_flow.rb:1472:9:1472:9 | a [element 2] | -| array_flow.rb:1471:16:1471:26 | call to source | array_flow.rb:1471:5:1471:5 | a [element 2] | -| array_flow.rb:1472:5:1472:5 | b [element 2] | array_flow.rb:1478:10:1478:10 | b [element 2] | -| array_flow.rb:1472:9:1472:9 | a [element 2] | array_flow.rb:1472:9:1475:7 | call to take_while [element 2] | -| array_flow.rb:1472:9:1472:9 | a [element 2] | array_flow.rb:1472:26:1472:26 | x | -| array_flow.rb:1472:9:1475:7 | call to take_while [element 2] | array_flow.rb:1472:5:1472:5 | b [element 2] | -| array_flow.rb:1472:26:1472:26 | x | array_flow.rb:1473:14:1473:14 | x | -| array_flow.rb:1478:10:1478:10 | b [element 2] | array_flow.rb:1478:10:1478:13 | ...[...] | -| array_flow.rb:1484:5:1484:5 | a [element 3] | array_flow.rb:1485:9:1485:9 | a [element 3] | -| array_flow.rb:1484:19:1484:29 | call to source | array_flow.rb:1484:5:1484:5 | a [element 3] | -| array_flow.rb:1485:5:1485:5 | b [element 3] | array_flow.rb:1486:10:1486:10 | b [element 3] | -| array_flow.rb:1485:9:1485:9 | a [element 3] | array_flow.rb:1485:9:1485:14 | call to to_a [element 3] | -| array_flow.rb:1485:9:1485:14 | call to to_a [element 3] | array_flow.rb:1485:5:1485:5 | b [element 3] | -| array_flow.rb:1486:10:1486:10 | b [element 3] | array_flow.rb:1486:10:1486:13 | ...[...] | -| array_flow.rb:1490:5:1490:5 | a [element 2] | array_flow.rb:1491:9:1491:9 | a [element 2] | -| array_flow.rb:1490:16:1490:26 | call to source | array_flow.rb:1490:5:1490:5 | a [element 2] | -| array_flow.rb:1491:5:1491:5 | b [element 2] | array_flow.rb:1494:10:1494:10 | b [element 2] | -| array_flow.rb:1491:9:1491:9 | a [element 2] | array_flow.rb:1491:9:1491:16 | call to to_ary [element 2] | -| array_flow.rb:1491:9:1491:16 | call to to_ary [element 2] | array_flow.rb:1491:5:1491:5 | b [element 2] | -| array_flow.rb:1494:10:1494:10 | b [element 2] | array_flow.rb:1494:10:1494:13 | ...[...] | -| array_flow.rb:1507:5:1507:5 | a [element 0, element 1] | array_flow.rb:1508:9:1508:9 | a [element 0, element 1] | -| array_flow.rb:1507:5:1507:5 | a [element 1, element 1] | array_flow.rb:1508:9:1508:9 | a [element 1, element 1] | -| array_flow.rb:1507:5:1507:5 | a [element 2, element 1] | array_flow.rb:1508:9:1508:9 | a [element 2, element 1] | -| array_flow.rb:1507:14:1507:26 | call to source | array_flow.rb:1507:5:1507:5 | a [element 0, element 1] | -| array_flow.rb:1507:34:1507:46 | call to source | array_flow.rb:1507:5:1507:5 | a [element 1, element 1] | -| array_flow.rb:1507:54:1507:66 | call to source | array_flow.rb:1507:5:1507:5 | a [element 2, element 1] | -| array_flow.rb:1508:5:1508:5 | b [element 1, element 0] | array_flow.rb:1512:10:1512:10 | b [element 1, element 0] | -| array_flow.rb:1508:5:1508:5 | b [element 1, element 1] | array_flow.rb:1513:10:1513:10 | b [element 1, element 1] | -| array_flow.rb:1508:5:1508:5 | b [element 1, element 2] | array_flow.rb:1514:10:1514:10 | b [element 1, element 2] | -| array_flow.rb:1508:9:1508:9 | a [element 0, element 1] | array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 0] | -| array_flow.rb:1508:9:1508:9 | a [element 1, element 1] | array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 1] | -| array_flow.rb:1508:9:1508:9 | a [element 2, element 1] | array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 2] | -| array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 0] | array_flow.rb:1508:5:1508:5 | b [element 1, element 0] | -| array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 1] | array_flow.rb:1508:5:1508:5 | b [element 1, element 1] | -| array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 2] | array_flow.rb:1508:5:1508:5 | b [element 1, element 2] | -| array_flow.rb:1512:10:1512:10 | b [element 1, element 0] | array_flow.rb:1512:10:1512:13 | ...[...] [element 0] | -| array_flow.rb:1512:10:1512:13 | ...[...] [element 0] | array_flow.rb:1512:10:1512:16 | ...[...] | -| array_flow.rb:1513:10:1513:10 | b [element 1, element 1] | array_flow.rb:1513:10:1513:13 | ...[...] [element 1] | -| array_flow.rb:1513:10:1513:13 | ...[...] [element 1] | array_flow.rb:1513:10:1513:16 | ...[...] | -| array_flow.rb:1514:10:1514:10 | b [element 1, element 2] | array_flow.rb:1514:10:1514:13 | ...[...] [element 2] | -| array_flow.rb:1514:10:1514:13 | ...[...] [element 2] | array_flow.rb:1514:10:1514:16 | ...[...] | -| array_flow.rb:1518:5:1518:5 | a [element 2] | array_flow.rb:1521:9:1521:9 | a [element 2] | -| array_flow.rb:1518:16:1518:28 | call to source | array_flow.rb:1518:5:1518:5 | a [element 2] | -| array_flow.rb:1519:5:1519:5 | b [element 1] | array_flow.rb:1521:17:1521:17 | b [element 1] | -| array_flow.rb:1519:13:1519:25 | call to source | array_flow.rb:1519:5:1519:5 | b [element 1] | -| array_flow.rb:1520:5:1520:5 | c [element 1] | array_flow.rb:1521:20:1521:20 | c [element 1] | -| array_flow.rb:1520:13:1520:25 | call to source | array_flow.rb:1520:5:1520:5 | c [element 1] | -| array_flow.rb:1521:5:1521:5 | d [element] | array_flow.rb:1522:10:1522:10 | d [element] | -| array_flow.rb:1521:5:1521:5 | d [element] | array_flow.rb:1523:10:1523:10 | d [element] | -| array_flow.rb:1521:5:1521:5 | d [element] | array_flow.rb:1524:10:1524:10 | d [element] | -| array_flow.rb:1521:9:1521:9 | a [element 2] | array_flow.rb:1521:9:1521:21 | call to union [element] | -| array_flow.rb:1521:9:1521:21 | call to union [element] | array_flow.rb:1521:5:1521:5 | d [element] | -| array_flow.rb:1521:17:1521:17 | b [element 1] | array_flow.rb:1521:9:1521:21 | call to union [element] | -| array_flow.rb:1521:20:1521:20 | c [element 1] | array_flow.rb:1521:9:1521:21 | call to union [element] | -| array_flow.rb:1522:10:1522:10 | d [element] | array_flow.rb:1522:10:1522:13 | ...[...] | -| array_flow.rb:1523:10:1523:10 | d [element] | array_flow.rb:1523:10:1523:13 | ...[...] | -| array_flow.rb:1524:10:1524:10 | d [element] | array_flow.rb:1524:10:1524:13 | ...[...] | -| array_flow.rb:1528:5:1528:5 | a [element 3] | array_flow.rb:1530:9:1530:9 | a [element 3] | -| array_flow.rb:1528:5:1528:5 | a [element 3] | array_flow.rb:1534:9:1534:9 | a [element 3] | -| array_flow.rb:1528:5:1528:5 | a [element 4] | array_flow.rb:1530:9:1530:9 | a [element 4] | -| array_flow.rb:1528:5:1528:5 | a [element 4] | array_flow.rb:1534:9:1534:9 | a [element 4] | -| array_flow.rb:1528:19:1528:31 | call to source | array_flow.rb:1528:5:1528:5 | a [element 3] | -| array_flow.rb:1528:34:1528:46 | call to source | array_flow.rb:1528:5:1528:5 | a [element 4] | -| array_flow.rb:1530:5:1530:5 | b [element] | array_flow.rb:1531:10:1531:10 | b [element] | -| array_flow.rb:1530:5:1530:5 | b [element] | array_flow.rb:1532:10:1532:10 | b [element] | -| array_flow.rb:1530:9:1530:9 | a [element 3] | array_flow.rb:1530:9:1530:14 | call to uniq [element] | -| array_flow.rb:1530:9:1530:9 | a [element 4] | array_flow.rb:1530:9:1530:14 | call to uniq [element] | -| array_flow.rb:1530:9:1530:14 | call to uniq [element] | array_flow.rb:1530:5:1530:5 | b [element] | -| array_flow.rb:1531:10:1531:10 | b [element] | array_flow.rb:1531:10:1531:13 | ...[...] | -| array_flow.rb:1532:10:1532:10 | b [element] | array_flow.rb:1532:10:1532:13 | ...[...] | -| array_flow.rb:1534:5:1534:5 | c [element] | array_flow.rb:1538:10:1538:10 | c [element] | -| array_flow.rb:1534:9:1534:9 | a [element 3] | array_flow.rb:1534:9:1537:7 | call to uniq [element] | -| array_flow.rb:1534:9:1534:9 | a [element 3] | array_flow.rb:1534:20:1534:20 | x | -| array_flow.rb:1534:9:1534:9 | a [element 4] | array_flow.rb:1534:9:1537:7 | call to uniq [element] | -| array_flow.rb:1534:9:1534:9 | a [element 4] | array_flow.rb:1534:20:1534:20 | x | -| array_flow.rb:1534:9:1537:7 | call to uniq [element] | array_flow.rb:1534:5:1534:5 | c [element] | -| array_flow.rb:1534:20:1534:20 | x | array_flow.rb:1535:14:1535:14 | x | -| array_flow.rb:1538:10:1538:10 | c [element] | array_flow.rb:1538:10:1538:13 | ...[...] | -| array_flow.rb:1542:5:1542:5 | a [element 2] | array_flow.rb:1543:9:1543:9 | a [element 2] | -| array_flow.rb:1542:5:1542:5 | a [element 3] | array_flow.rb:1543:9:1543:9 | a [element 3] | -| array_flow.rb:1542:16:1542:28 | call to source | array_flow.rb:1542:5:1542:5 | a [element 2] | -| array_flow.rb:1542:31:1542:43 | call to source | array_flow.rb:1542:5:1542:5 | a [element 3] | -| array_flow.rb:1543:5:1543:5 | b [element] | array_flow.rb:1544:10:1544:10 | b [element] | -| array_flow.rb:1543:5:1543:5 | b [element] | array_flow.rb:1545:10:1545:10 | b [element] | -| array_flow.rb:1543:9:1543:9 | [post] a [element] | array_flow.rb:1546:10:1546:10 | a [element] | -| array_flow.rb:1543:9:1543:9 | [post] a [element] | array_flow.rb:1547:10:1547:10 | a [element] | -| array_flow.rb:1543:9:1543:9 | a [element 2] | array_flow.rb:1543:9:1543:9 | [post] a [element] | -| array_flow.rb:1543:9:1543:9 | a [element 2] | array_flow.rb:1543:9:1543:15 | call to uniq! [element] | -| array_flow.rb:1543:9:1543:9 | a [element 3] | array_flow.rb:1543:9:1543:9 | [post] a [element] | -| array_flow.rb:1543:9:1543:9 | a [element 3] | array_flow.rb:1543:9:1543:15 | call to uniq! [element] | -| array_flow.rb:1543:9:1543:15 | call to uniq! [element] | array_flow.rb:1543:5:1543:5 | b [element] | -| array_flow.rb:1544:10:1544:10 | b [element] | array_flow.rb:1544:10:1544:13 | ...[...] | -| array_flow.rb:1545:10:1545:10 | b [element] | array_flow.rb:1545:10:1545:13 | ...[...] | -| array_flow.rb:1546:10:1546:10 | a [element] | array_flow.rb:1546:10:1546:13 | ...[...] | -| array_flow.rb:1547:10:1547:10 | a [element] | array_flow.rb:1547:10:1547:13 | ...[...] | -| array_flow.rb:1549:5:1549:5 | a [element 2] | array_flow.rb:1550:9:1550:9 | a [element 2] | -| array_flow.rb:1549:5:1549:5 | a [element 3] | array_flow.rb:1550:9:1550:9 | a [element 3] | -| array_flow.rb:1549:16:1549:28 | call to source | array_flow.rb:1549:5:1549:5 | a [element 2] | -| array_flow.rb:1549:31:1549:43 | call to source | array_flow.rb:1549:5:1549:5 | a [element 3] | -| array_flow.rb:1550:5:1550:5 | b [element] | array_flow.rb:1554:10:1554:10 | b [element] | -| array_flow.rb:1550:5:1550:5 | b [element] | array_flow.rb:1555:10:1555:10 | b [element] | -| array_flow.rb:1550:9:1550:9 | [post] a [element] | array_flow.rb:1556:10:1556:10 | a [element] | -| array_flow.rb:1550:9:1550:9 | [post] a [element] | array_flow.rb:1557:10:1557:10 | a [element] | -| array_flow.rb:1550:9:1550:9 | a [element 2] | array_flow.rb:1550:9:1550:9 | [post] a [element] | -| array_flow.rb:1550:9:1550:9 | a [element 2] | array_flow.rb:1550:9:1553:7 | call to uniq! [element] | -| array_flow.rb:1550:9:1550:9 | a [element 2] | array_flow.rb:1550:21:1550:21 | x | -| array_flow.rb:1550:9:1550:9 | a [element 3] | array_flow.rb:1550:9:1550:9 | [post] a [element] | -| array_flow.rb:1550:9:1550:9 | a [element 3] | array_flow.rb:1550:9:1553:7 | call to uniq! [element] | -| array_flow.rb:1550:9:1550:9 | a [element 3] | array_flow.rb:1550:21:1550:21 | x | -| array_flow.rb:1550:9:1553:7 | call to uniq! [element] | array_flow.rb:1550:5:1550:5 | b [element] | -| array_flow.rb:1550:21:1550:21 | x | array_flow.rb:1551:14:1551:14 | x | -| array_flow.rb:1554:10:1554:10 | b [element] | array_flow.rb:1554:10:1554:13 | ...[...] | -| array_flow.rb:1555:10:1555:10 | b [element] | array_flow.rb:1555:10:1555:13 | ...[...] | -| array_flow.rb:1556:10:1556:10 | a [element] | array_flow.rb:1556:10:1556:13 | ...[...] | -| array_flow.rb:1557:10:1557:10 | a [element] | array_flow.rb:1557:10:1557:13 | ...[...] | -| array_flow.rb:1561:5:1561:5 | a [element 2] | array_flow.rb:1562:5:1562:5 | a [element 2] | -| array_flow.rb:1561:16:1561:28 | call to source | array_flow.rb:1561:5:1561:5 | a [element 2] | -| array_flow.rb:1562:5:1562:5 | [post] a [element 2] | array_flow.rb:1565:10:1565:10 | a [element 2] | -| array_flow.rb:1562:5:1562:5 | [post] a [element 5] | array_flow.rb:1568:10:1568:10 | a [element 5] | -| array_flow.rb:1562:5:1562:5 | a [element 2] | array_flow.rb:1562:5:1562:5 | [post] a [element 5] | -| array_flow.rb:1562:21:1562:33 | call to source | array_flow.rb:1562:5:1562:5 | [post] a [element 2] | -| array_flow.rb:1565:10:1565:10 | a [element 2] | array_flow.rb:1565:10:1565:13 | ...[...] | -| array_flow.rb:1568:10:1568:10 | a [element 5] | array_flow.rb:1568:10:1568:13 | ...[...] | -| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1574:9:1574:9 | a [element 1] | -| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1580:9:1580:9 | a [element 1] | -| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1584:9:1584:9 | a [element 1] | -| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1588:9:1588:9 | a [element 1] | -| array_flow.rb:1572:5:1572:5 | a [element 3] | array_flow.rb:1580:9:1580:9 | a [element 3] | -| array_flow.rb:1572:5:1572:5 | a [element 3] | array_flow.rb:1584:9:1584:9 | a [element 3] | -| array_flow.rb:1572:5:1572:5 | a [element 3] | array_flow.rb:1588:9:1588:9 | a [element 3] | -| array_flow.rb:1572:13:1572:25 | call to source | array_flow.rb:1572:5:1572:5 | a [element 1] | -| array_flow.rb:1572:31:1572:43 | call to source | array_flow.rb:1572:5:1572:5 | a [element 3] | -| array_flow.rb:1574:5:1574:5 | b [element 1] | array_flow.rb:1576:10:1576:10 | b [element 1] | -| array_flow.rb:1574:5:1574:5 | b [element 3] | array_flow.rb:1578:10:1578:10 | b [element 3] | -| array_flow.rb:1574:9:1574:9 | a [element 1] | array_flow.rb:1574:9:1574:31 | call to values_at [element 1] | -| array_flow.rb:1574:9:1574:9 | a [element 1] | array_flow.rb:1574:9:1574:31 | call to values_at [element 3] | -| array_flow.rb:1574:9:1574:31 | call to values_at [element 1] | array_flow.rb:1574:5:1574:5 | b [element 1] | -| array_flow.rb:1574:9:1574:31 | call to values_at [element 3] | array_flow.rb:1574:5:1574:5 | b [element 3] | -| array_flow.rb:1576:10:1576:10 | b [element 1] | array_flow.rb:1576:10:1576:13 | ...[...] | -| array_flow.rb:1578:10:1578:10 | b [element 3] | array_flow.rb:1578:10:1578:13 | ...[...] | -| array_flow.rb:1580:5:1580:5 | b [element] | array_flow.rb:1581:10:1581:10 | b [element] | -| array_flow.rb:1580:5:1580:5 | b [element] | array_flow.rb:1582:10:1582:10 | b [element] | -| array_flow.rb:1580:9:1580:9 | a [element 1] | array_flow.rb:1580:9:1580:25 | call to values_at [element] | -| array_flow.rb:1580:9:1580:9 | a [element 3] | array_flow.rb:1580:9:1580:25 | call to values_at [element] | -| array_flow.rb:1580:9:1580:25 | call to values_at [element] | array_flow.rb:1580:5:1580:5 | b [element] | -| array_flow.rb:1581:10:1581:10 | b [element] | array_flow.rb:1581:10:1581:13 | ...[...] | -| array_flow.rb:1582:10:1582:10 | b [element] | array_flow.rb:1582:10:1582:13 | ...[...] | -| array_flow.rb:1584:5:1584:5 | b [element] | array_flow.rb:1585:10:1585:10 | b [element] | -| array_flow.rb:1584:5:1584:5 | b [element] | array_flow.rb:1586:10:1586:10 | b [element] | -| array_flow.rb:1584:9:1584:9 | a [element 1] | array_flow.rb:1584:9:1584:26 | call to values_at [element] | -| array_flow.rb:1584:9:1584:9 | a [element 3] | array_flow.rb:1584:9:1584:26 | call to values_at [element] | -| array_flow.rb:1584:9:1584:26 | call to values_at [element] | array_flow.rb:1584:5:1584:5 | b [element] | -| array_flow.rb:1585:10:1585:10 | b [element] | array_flow.rb:1585:10:1585:13 | ...[...] | -| array_flow.rb:1586:10:1586:10 | b [element] | array_flow.rb:1586:10:1586:13 | ...[...] | -| array_flow.rb:1588:5:1588:5 | b [element 1] | array_flow.rb:1590:10:1590:10 | b [element 1] | -| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1589:10:1589:10 | b [element] | -| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1590:10:1590:10 | b [element] | -| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1591:10:1591:10 | b [element] | -| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1592:10:1592:10 | b [element] | -| array_flow.rb:1588:9:1588:9 | a [element 1] | array_flow.rb:1588:9:1588:28 | call to values_at [element] | -| array_flow.rb:1588:9:1588:9 | a [element 3] | array_flow.rb:1588:9:1588:28 | call to values_at [element 1] | -| array_flow.rb:1588:9:1588:9 | a [element 3] | array_flow.rb:1588:9:1588:28 | call to values_at [element] | -| array_flow.rb:1588:9:1588:28 | call to values_at [element 1] | array_flow.rb:1588:5:1588:5 | b [element 1] | -| array_flow.rb:1588:9:1588:28 | call to values_at [element] | array_flow.rb:1588:5:1588:5 | b [element] | -| array_flow.rb:1589:10:1589:10 | b [element] | array_flow.rb:1589:10:1589:13 | ...[...] | -| array_flow.rb:1590:10:1590:10 | b [element 1] | array_flow.rb:1590:10:1590:13 | ...[...] | -| array_flow.rb:1590:10:1590:10 | b [element] | array_flow.rb:1590:10:1590:13 | ...[...] | -| array_flow.rb:1591:10:1591:10 | b [element] | array_flow.rb:1591:10:1591:13 | ...[...] | -| array_flow.rb:1592:10:1592:10 | b [element] | array_flow.rb:1592:10:1592:13 | ...[...] | -| array_flow.rb:1596:5:1596:5 | a [element 2] | array_flow.rb:1599:9:1599:9 | a [element 2] | -| array_flow.rb:1596:5:1596:5 | a [element 2] | array_flow.rb:1604:5:1604:5 | a [element 2] | -| array_flow.rb:1596:16:1596:28 | call to source | array_flow.rb:1596:5:1596:5 | a [element 2] | -| array_flow.rb:1597:5:1597:5 | b [element 1] | array_flow.rb:1599:15:1599:15 | b [element 1] | -| array_flow.rb:1597:5:1597:5 | b [element 1] | array_flow.rb:1604:11:1604:11 | b [element 1] | -| array_flow.rb:1597:13:1597:25 | call to source | array_flow.rb:1597:5:1597:5 | b [element 1] | -| array_flow.rb:1598:5:1598:5 | c [element 0] | array_flow.rb:1599:18:1599:18 | c [element 0] | -| array_flow.rb:1598:5:1598:5 | c [element 0] | array_flow.rb:1604:14:1604:14 | c [element 0] | -| array_flow.rb:1598:10:1598:22 | call to source | array_flow.rb:1598:5:1598:5 | c [element 0] | -| array_flow.rb:1599:5:1599:5 | d [element 0, element 2] | array_flow.rb:1601:10:1601:10 | d [element 0, element 2] | -| array_flow.rb:1599:5:1599:5 | d [element 1, element 1] | array_flow.rb:1602:10:1602:10 | d [element 1, element 1] | -| array_flow.rb:1599:5:1599:5 | d [element 2, element 0] | array_flow.rb:1603:10:1603:10 | d [element 2, element 0] | -| array_flow.rb:1599:9:1599:9 | a [element 2] | array_flow.rb:1599:9:1599:19 | call to zip [element 2, element 0] | -| array_flow.rb:1599:9:1599:19 | call to zip [element 0, element 2] | array_flow.rb:1599:5:1599:5 | d [element 0, element 2] | -| array_flow.rb:1599:9:1599:19 | call to zip [element 1, element 1] | array_flow.rb:1599:5:1599:5 | d [element 1, element 1] | -| array_flow.rb:1599:9:1599:19 | call to zip [element 2, element 0] | array_flow.rb:1599:5:1599:5 | d [element 2, element 0] | -| array_flow.rb:1599:15:1599:15 | b [element 1] | array_flow.rb:1599:9:1599:19 | call to zip [element 1, element 1] | -| array_flow.rb:1599:18:1599:18 | c [element 0] | array_flow.rb:1599:9:1599:19 | call to zip [element 0, element 2] | -| array_flow.rb:1601:10:1601:10 | d [element 0, element 2] | array_flow.rb:1601:10:1601:13 | ...[...] [element 2] | -| array_flow.rb:1601:10:1601:13 | ...[...] [element 2] | array_flow.rb:1601:10:1601:16 | ...[...] | -| array_flow.rb:1602:10:1602:10 | d [element 1, element 1] | array_flow.rb:1602:10:1602:13 | ...[...] [element 1] | -| array_flow.rb:1602:10:1602:13 | ...[...] [element 1] | array_flow.rb:1602:10:1602:16 | ...[...] | -| array_flow.rb:1603:10:1603:10 | d [element 2, element 0] | array_flow.rb:1603:10:1603:13 | ...[...] [element 0] | -| array_flow.rb:1603:10:1603:13 | ...[...] [element 0] | array_flow.rb:1603:10:1603:16 | ...[...] | -| array_flow.rb:1604:5:1604:5 | a [element 2] | array_flow.rb:1604:21:1604:21 | x [element 0] | -| array_flow.rb:1604:11:1604:11 | b [element 1] | array_flow.rb:1604:21:1604:21 | x [element 1] | -| array_flow.rb:1604:14:1604:14 | c [element 0] | array_flow.rb:1604:21:1604:21 | x [element 2] | -| array_flow.rb:1604:21:1604:21 | x [element 0] | array_flow.rb:1605:14:1605:14 | x [element 0] | -| array_flow.rb:1604:21:1604:21 | x [element 1] | array_flow.rb:1606:14:1606:14 | x [element 1] | -| array_flow.rb:1604:21:1604:21 | x [element 2] | array_flow.rb:1607:14:1607:14 | x [element 2] | -| array_flow.rb:1605:14:1605:14 | x [element 0] | array_flow.rb:1605:14:1605:17 | ...[...] | -| array_flow.rb:1606:14:1606:14 | x [element 1] | array_flow.rb:1606:14:1606:17 | ...[...] | -| array_flow.rb:1607:14:1607:14 | x [element 2] | array_flow.rb:1607:14:1607:17 | ...[...] | -| array_flow.rb:1612:5:1612:5 | a [element 2] | array_flow.rb:1614:9:1614:9 | a [element 2] | -| array_flow.rb:1612:16:1612:28 | call to source | array_flow.rb:1612:5:1612:5 | a [element 2] | -| array_flow.rb:1613:5:1613:5 | b [element 1] | array_flow.rb:1614:13:1614:13 | b [element 1] | -| array_flow.rb:1613:13:1613:25 | call to source | array_flow.rb:1613:5:1613:5 | b [element 1] | -| array_flow.rb:1614:5:1614:5 | c [element] | array_flow.rb:1615:10:1615:10 | c [element] | -| array_flow.rb:1614:5:1614:5 | c [element] | array_flow.rb:1616:10:1616:10 | c [element] | -| array_flow.rb:1614:5:1614:5 | c [element] | array_flow.rb:1617:10:1617:10 | c [element] | -| array_flow.rb:1614:9:1614:9 | a [element 2] | array_flow.rb:1614:9:1614:13 | ... \| ... [element] | -| array_flow.rb:1614:9:1614:13 | ... \| ... [element] | array_flow.rb:1614:5:1614:5 | c [element] | -| array_flow.rb:1614:13:1614:13 | b [element 1] | array_flow.rb:1614:9:1614:13 | ... \| ... [element] | -| array_flow.rb:1615:10:1615:10 | c [element] | array_flow.rb:1615:10:1615:13 | ...[...] | -| array_flow.rb:1616:10:1616:10 | c [element] | array_flow.rb:1616:10:1616:13 | ...[...] | -| array_flow.rb:1617:10:1617:10 | c [element] | array_flow.rb:1617:10:1617:13 | ...[...] | -| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1623:10:1623:10 | a [element, element 0] | -| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1626:10:1626:10 | a [element, element 0] | -| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1627:10:1627:10 | a [element, element 0] | -| array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | -| array_flow.rb:1622:15:1622:27 | call to source | array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | -| array_flow.rb:1623:10:1623:10 | a [element, element 0] | array_flow.rb:1623:10:1623:13 | ...[...] [element 0] | -| array_flow.rb:1623:10:1623:13 | ...[...] [element 0] | array_flow.rb:1623:10:1623:16 | ...[...] | -| array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | array_flow.rb:1626:10:1626:10 | a [element 1, element 0] | -| array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | -| array_flow.rb:1625:15:1625:27 | call to source | array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | -| array_flow.rb:1626:10:1626:10 | a [element 1, element 0] | array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | -| array_flow.rb:1626:10:1626:10 | a [element, element 0] | array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | -| array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | array_flow.rb:1626:10:1626:16 | ...[...] | -| array_flow.rb:1627:10:1627:10 | a [element, element 0] | array_flow.rb:1627:10:1627:13 | ...[...] [element 0] | -| array_flow.rb:1627:10:1627:13 | ...[...] [element 0] | array_flow.rb:1627:10:1627:16 | ...[...] | -| array_flow.rb:1632:5:1632:5 | [post] a [element 0] | array_flow.rb:1641:10:1641:10 | a [element 0] | -| array_flow.rb:1632:5:1632:5 | [post] a [element 0] | array_flow.rb:1643:10:1643:10 | a [element 0] | -| array_flow.rb:1632:12:1632:24 | call to source | array_flow.rb:1632:5:1632:5 | [post] a [element 0] | -| array_flow.rb:1634:5:1634:5 | [post] a [element] | array_flow.rb:1639:10:1639:10 | a [element] | -| array_flow.rb:1634:5:1634:5 | [post] a [element] | array_flow.rb:1641:10:1641:10 | a [element] | -| array_flow.rb:1634:5:1634:5 | [post] a [element] | array_flow.rb:1643:10:1643:10 | a [element] | -| array_flow.rb:1634:16:1634:28 | call to source | array_flow.rb:1634:5:1634:5 | [post] a [element] | -| array_flow.rb:1636:5:1636:5 | [post] a [element] | array_flow.rb:1639:10:1639:10 | a [element] | -| array_flow.rb:1636:5:1636:5 | [post] a [element] | array_flow.rb:1641:10:1641:10 | a [element] | -| array_flow.rb:1636:5:1636:5 | [post] a [element] | array_flow.rb:1643:10:1643:10 | a [element] | -| array_flow.rb:1636:14:1636:26 | call to source | array_flow.rb:1636:5:1636:5 | [post] a [element] | -| array_flow.rb:1638:5:1638:5 | [post] a [element] | array_flow.rb:1639:10:1639:10 | a [element] | -| array_flow.rb:1638:5:1638:5 | [post] a [element] | array_flow.rb:1641:10:1641:10 | a [element] | -| array_flow.rb:1638:5:1638:5 | [post] a [element] | array_flow.rb:1643:10:1643:10 | a [element] | -| array_flow.rb:1638:16:1638:28 | call to source | array_flow.rb:1638:5:1638:5 | [post] a [element] | -| array_flow.rb:1639:10:1639:10 | a [element] | array_flow.rb:1639:10:1639:13 | ...[...] | -| array_flow.rb:1641:10:1641:10 | a [element 0] | array_flow.rb:1641:10:1641:17 | ...[...] | -| array_flow.rb:1641:10:1641:10 | a [element] | array_flow.rb:1641:10:1641:17 | ...[...] | -| array_flow.rb:1643:10:1643:10 | a [element 0] | array_flow.rb:1643:10:1643:15 | ...[...] | -| array_flow.rb:1643:10:1643:10 | a [element] | array_flow.rb:1643:10:1643:15 | ...[...] | -| array_flow.rb:1647:5:1647:5 | a [element 1] | array_flow.rb:1649:10:1649:10 | a [element 1] | -| array_flow.rb:1647:5:1647:5 | a [element 1] | array_flow.rb:1651:10:1651:10 | a [element 1] | -| array_flow.rb:1647:9:1647:32 | ...[...] [element 1] | array_flow.rb:1647:5:1647:5 | a [element 1] | -| array_flow.rb:1647:18:1647:28 | call to source | array_flow.rb:1647:9:1647:32 | ...[...] [element 1] | -| array_flow.rb:1649:10:1649:10 | a [element 1] | array_flow.rb:1649:10:1649:13 | ...[...] | -| array_flow.rb:1651:10:1651:10 | a [element 1] | array_flow.rb:1651:10:1651:13 | ...[...] | -| array_flow.rb:1668:9:1668:10 | a2 [element 1] | array_flow.rb:1670:14:1670:15 | a2 [element 1] | -| array_flow.rb:1668:9:1668:10 | a2 [element 1] | array_flow.rb:1672:14:1672:15 | a2 [element 1] | -| array_flow.rb:1668:14:1668:41 | ...[...] [element 1] | array_flow.rb:1668:9:1668:10 | a2 [element 1] | -| array_flow.rb:1668:25:1668:37 | call to source | array_flow.rb:1668:14:1668:41 | ...[...] [element 1] | -| array_flow.rb:1670:14:1670:15 | a2 [element 1] | array_flow.rb:1670:14:1670:18 | ...[...] | -| array_flow.rb:1672:14:1672:15 | a2 [element 1] | array_flow.rb:1672:14:1672:18 | ...[...] | +| array_flow.rb:2:5:2:5 | a [element 0] | array_flow.rb:3:10:3:10 | a [element 0] | provenance | | +| array_flow.rb:2:5:2:5 | a [element 0] | array_flow.rb:5:10:5:10 | a [element 0] | provenance | | +| array_flow.rb:2:9:2:20 | * ... [element 0] | array_flow.rb:2:5:2:5 | a [element 0] | provenance | | +| array_flow.rb:2:10:2:20 | call to source | array_flow.rb:2:9:2:20 | * ... [element 0] | provenance | | +| array_flow.rb:3:10:3:10 | a [element 0] | array_flow.rb:3:10:3:13 | ...[...] | provenance | | +| array_flow.rb:5:10:5:10 | a [element 0] | array_flow.rb:5:10:5:13 | ...[...] | provenance | | +| array_flow.rb:9:5:9:5 | a [element 1] | array_flow.rb:11:10:11:10 | a [element 1] | provenance | | +| array_flow.rb:9:5:9:5 | a [element 1] | array_flow.rb:13:10:13:10 | a [element 1] | provenance | | +| array_flow.rb:9:13:9:21 | call to source | array_flow.rb:9:5:9:5 | a [element 1] | provenance | | +| array_flow.rb:11:10:11:10 | a [element 1] | array_flow.rb:11:10:11:13 | ...[...] | provenance | | +| array_flow.rb:13:10:13:10 | a [element 1] | array_flow.rb:13:10:13:13 | ...[...] | provenance | | +| array_flow.rb:17:5:17:5 | a [element] | array_flow.rb:18:10:18:10 | a [element] | provenance | | +| array_flow.rb:17:5:17:5 | a [element] | array_flow.rb:19:10:19:10 | a [element] | provenance | | +| array_flow.rb:17:5:17:5 | a [element] | array_flow.rb:21:19:21:19 | a [element] | provenance | | +| array_flow.rb:17:9:17:33 | call to new [element] | array_flow.rb:17:5:17:5 | a [element] | provenance | | +| array_flow.rb:17:22:17:32 | call to source | array_flow.rb:17:9:17:33 | call to new [element] | provenance | | +| array_flow.rb:18:10:18:10 | a [element] | array_flow.rb:18:10:18:13 | ...[...] | provenance | | +| array_flow.rb:19:10:19:10 | a [element] | array_flow.rb:19:10:19:13 | ...[...] | provenance | | +| array_flow.rb:21:5:21:5 | b [element] | array_flow.rb:22:10:22:10 | b [element] | provenance | | +| array_flow.rb:21:5:21:5 | b [element] | array_flow.rb:23:10:23:10 | b [element] | provenance | | +| array_flow.rb:21:9:21:20 | call to new [element] | array_flow.rb:21:5:21:5 | b [element] | provenance | | +| array_flow.rb:21:19:21:19 | a [element] | array_flow.rb:21:9:21:20 | call to new [element] | provenance | | +| array_flow.rb:22:10:22:10 | b [element] | array_flow.rb:22:10:22:13 | ...[...] | provenance | | +| array_flow.rb:23:10:23:10 | b [element] | array_flow.rb:23:10:23:13 | ...[...] | provenance | | +| array_flow.rb:25:5:25:5 | c [element] | array_flow.rb:28:10:28:10 | c [element] | provenance | | +| array_flow.rb:25:5:25:5 | c [element] | array_flow.rb:29:10:29:10 | c [element] | provenance | | +| array_flow.rb:25:9:27:7 | call to new [element] | array_flow.rb:25:5:25:5 | c [element] | provenance | | +| array_flow.rb:26:9:26:19 | call to source | array_flow.rb:25:9:27:7 | call to new [element] | provenance | | +| array_flow.rb:28:10:28:10 | c [element] | array_flow.rb:28:10:28:13 | ...[...] | provenance | | +| array_flow.rb:29:10:29:10 | c [element] | array_flow.rb:29:10:29:13 | ...[...] | provenance | | +| array_flow.rb:33:5:33:5 | a [element 0] | array_flow.rb:34:27:34:27 | a [element 0] | provenance | | +| array_flow.rb:33:10:33:18 | call to source | array_flow.rb:33:5:33:5 | a [element 0] | provenance | | +| array_flow.rb:34:5:34:5 | b [element 0] | array_flow.rb:35:10:35:10 | b [element 0] | provenance | | +| array_flow.rb:34:9:34:28 | call to try_convert [element 0] | array_flow.rb:34:5:34:5 | b [element 0] | provenance | | +| array_flow.rb:34:27:34:27 | a [element 0] | array_flow.rb:34:9:34:28 | call to try_convert [element 0] | provenance | | +| array_flow.rb:35:10:35:10 | b [element 0] | array_flow.rb:35:10:35:13 | ...[...] | provenance | | +| array_flow.rb:40:5:40:5 | a [element 0] | array_flow.rb:42:9:42:9 | a [element 0] | provenance | | +| array_flow.rb:40:10:40:20 | call to source | array_flow.rb:40:5:40:5 | a [element 0] | provenance | | +| array_flow.rb:41:5:41:5 | b [element 2] | array_flow.rb:42:13:42:13 | b [element 2] | provenance | | +| array_flow.rb:41:16:41:26 | call to source | array_flow.rb:41:5:41:5 | b [element 2] | provenance | | +| array_flow.rb:42:5:42:5 | c [element] | array_flow.rb:43:10:43:10 | c [element] | provenance | | +| array_flow.rb:42:5:42:5 | c [element] | array_flow.rb:44:10:44:10 | c [element] | provenance | | +| array_flow.rb:42:9:42:9 | a [element 0] | array_flow.rb:42:9:42:13 | ... & ... [element] | provenance | | +| array_flow.rb:42:9:42:13 | ... & ... [element] | array_flow.rb:42:5:42:5 | c [element] | provenance | | +| array_flow.rb:42:13:42:13 | b [element 2] | array_flow.rb:42:9:42:13 | ... & ... [element] | provenance | | +| array_flow.rb:43:10:43:10 | c [element] | array_flow.rb:43:10:43:13 | ...[...] | provenance | | +| array_flow.rb:44:10:44:10 | c [element] | array_flow.rb:44:10:44:13 | ...[...] | provenance | | +| array_flow.rb:48:5:48:5 | a [element 0] | array_flow.rb:49:9:49:9 | a [element 0] | provenance | | +| array_flow.rb:48:10:48:18 | call to source | array_flow.rb:48:5:48:5 | a [element 0] | provenance | | +| array_flow.rb:49:5:49:5 | b [element] | array_flow.rb:50:10:50:10 | b [element] | provenance | | +| array_flow.rb:49:5:49:5 | b [element] | array_flow.rb:51:10:51:10 | b [element] | provenance | | +| array_flow.rb:49:9:49:9 | a [element 0] | array_flow.rb:49:9:49:13 | ... * ... [element] | provenance | | +| array_flow.rb:49:9:49:13 | ... * ... [element] | array_flow.rb:49:5:49:5 | b [element] | provenance | | +| array_flow.rb:50:10:50:10 | b [element] | array_flow.rb:50:10:50:13 | ...[...] | provenance | | +| array_flow.rb:51:10:51:10 | b [element] | array_flow.rb:51:10:51:13 | ...[...] | provenance | | +| array_flow.rb:55:5:55:5 | a [element 0] | array_flow.rb:57:9:57:9 | a [element 0] | provenance | | +| array_flow.rb:55:10:55:20 | call to source | array_flow.rb:55:5:55:5 | a [element 0] | provenance | | +| array_flow.rb:56:5:56:5 | b [element 1] | array_flow.rb:57:13:57:13 | b [element 1] | provenance | | +| array_flow.rb:56:13:56:23 | call to source | array_flow.rb:56:5:56:5 | b [element 1] | provenance | | +| array_flow.rb:57:5:57:5 | c [element 0] | array_flow.rb:58:10:58:10 | c [element 0] | provenance | | +| array_flow.rb:57:5:57:5 | c [element] | array_flow.rb:58:10:58:10 | c [element] | provenance | | +| array_flow.rb:57:5:57:5 | c [element] | array_flow.rb:59:10:59:10 | c [element] | provenance | | +| array_flow.rb:57:9:57:9 | a [element 0] | array_flow.rb:57:9:57:13 | ... + ... [element 0] | provenance | | +| array_flow.rb:57:9:57:13 | ... + ... [element 0] | array_flow.rb:57:5:57:5 | c [element 0] | provenance | | +| array_flow.rb:57:9:57:13 | ... + ... [element] | array_flow.rb:57:5:57:5 | c [element] | provenance | | +| array_flow.rb:57:13:57:13 | b [element 1] | array_flow.rb:57:9:57:13 | ... + ... [element] | provenance | | +| array_flow.rb:58:10:58:10 | c [element 0] | array_flow.rb:58:10:58:13 | ...[...] | provenance | | +| array_flow.rb:58:10:58:10 | c [element] | array_flow.rb:58:10:58:13 | ...[...] | provenance | | +| array_flow.rb:59:10:59:10 | c [element] | array_flow.rb:59:10:59:13 | ...[...] | provenance | | +| array_flow.rb:63:5:63:5 | a [element 0] | array_flow.rb:65:9:65:9 | a [element 0] | provenance | | +| array_flow.rb:63:10:63:20 | call to source | array_flow.rb:63:5:63:5 | a [element 0] | provenance | | +| array_flow.rb:65:5:65:5 | c [element] | array_flow.rb:66:10:66:10 | c [element] | provenance | | +| array_flow.rb:65:5:65:5 | c [element] | array_flow.rb:67:10:67:10 | c [element] | provenance | | +| array_flow.rb:65:9:65:9 | a [element 0] | array_flow.rb:65:9:65:13 | ... - ... [element] | provenance | | +| array_flow.rb:65:9:65:13 | ... - ... [element] | array_flow.rb:65:5:65:5 | c [element] | provenance | | +| array_flow.rb:66:10:66:10 | c [element] | array_flow.rb:66:10:66:13 | ...[...] | provenance | | +| array_flow.rb:67:10:67:10 | c [element] | array_flow.rb:67:10:67:13 | ...[...] | provenance | | +| array_flow.rb:71:5:71:5 | a [element 0] | array_flow.rb:72:9:72:9 | a [element 0] | provenance | | +| array_flow.rb:71:5:71:5 | a [element 0] | array_flow.rb:73:10:73:10 | a [element 0] | provenance | | +| array_flow.rb:71:10:71:20 | call to source | array_flow.rb:71:5:71:5 | a [element 0] | provenance | | +| array_flow.rb:72:5:72:5 | b [element 0] | array_flow.rb:75:10:75:10 | b [element 0] | provenance | | +| array_flow.rb:72:5:72:5 | b [element] | array_flow.rb:75:10:75:10 | b [element] | provenance | | +| array_flow.rb:72:5:72:5 | b [element] | array_flow.rb:76:10:76:10 | b [element] | provenance | | +| array_flow.rb:72:9:72:9 | [post] a [element] | array_flow.rb:73:10:73:10 | a [element] | provenance | | +| array_flow.rb:72:9:72:9 | [post] a [element] | array_flow.rb:74:10:74:10 | a [element] | provenance | | +| array_flow.rb:72:9:72:9 | a [element 0] | array_flow.rb:72:9:72:24 | ... << ... [element 0] | provenance | | +| array_flow.rb:72:9:72:24 | ... << ... [element 0] | array_flow.rb:72:5:72:5 | b [element 0] | provenance | | +| array_flow.rb:72:9:72:24 | ... << ... [element] | array_flow.rb:72:5:72:5 | b [element] | provenance | | +| array_flow.rb:72:14:72:24 | call to source | array_flow.rb:72:9:72:9 | [post] a [element] | provenance | | +| array_flow.rb:72:14:72:24 | call to source | array_flow.rb:72:9:72:24 | ... << ... [element] | provenance | | +| array_flow.rb:73:10:73:10 | a [element 0] | array_flow.rb:73:10:73:13 | ...[...] | provenance | | +| array_flow.rb:73:10:73:10 | a [element] | array_flow.rb:73:10:73:13 | ...[...] | provenance | | +| array_flow.rb:74:10:74:10 | a [element] | array_flow.rb:74:10:74:13 | ...[...] | provenance | | +| array_flow.rb:75:10:75:10 | b [element 0] | array_flow.rb:75:10:75:13 | ...[...] | provenance | | +| array_flow.rb:75:10:75:10 | b [element] | array_flow.rb:75:10:75:13 | ...[...] | provenance | | +| array_flow.rb:76:10:76:10 | b [element] | array_flow.rb:76:10:76:13 | ...[...] | provenance | | +| array_flow.rb:80:5:80:5 | a [element 1] | array_flow.rb:81:15:81:15 | a [element 1] | provenance | | +| array_flow.rb:80:13:80:21 | call to source | array_flow.rb:80:5:80:5 | a [element 1] | provenance | | +| array_flow.rb:81:8:81:8 | c | array_flow.rb:83:10:83:10 | c | provenance | | +| array_flow.rb:81:15:81:15 | a [element 1] | array_flow.rb:81:8:81:8 | c | provenance | | +| array_flow.rb:88:5:88:5 | a [element 1] | array_flow.rb:89:9:89:9 | a [element 1] | provenance | | +| array_flow.rb:88:13:88:22 | call to source | array_flow.rb:88:5:88:5 | a [element 1] | provenance | | +| array_flow.rb:89:5:89:5 | b [element 1] | array_flow.rb:91:10:91:10 | b [element 1] | provenance | | +| array_flow.rb:89:5:89:5 | b [element 1] | array_flow.rb:92:10:92:10 | b [element 1] | provenance | | +| array_flow.rb:89:9:89:9 | a [element 1] | array_flow.rb:89:9:89:15 | ...[...] [element 1] | provenance | | +| array_flow.rb:89:9:89:15 | ...[...] [element 1] | array_flow.rb:89:5:89:5 | b [element 1] | provenance | | +| array_flow.rb:91:10:91:10 | b [element 1] | array_flow.rb:91:10:91:13 | ...[...] | provenance | | +| array_flow.rb:92:10:92:10 | b [element 1] | array_flow.rb:92:10:92:13 | ...[...] | provenance | | +| array_flow.rb:96:5:96:5 | a [element 1] | array_flow.rb:97:9:97:9 | a [element 1] | provenance | | +| array_flow.rb:96:13:96:22 | call to source | array_flow.rb:96:5:96:5 | a [element 1] | provenance | | +| array_flow.rb:97:5:97:5 | b [element 1] | array_flow.rb:99:10:99:10 | b [element 1] | provenance | | +| array_flow.rb:97:5:97:5 | b [element 1] | array_flow.rb:101:10:101:10 | b [element 1] | provenance | | +| array_flow.rb:97:9:97:9 | a [element 1] | array_flow.rb:97:9:97:15 | ...[...] [element 1] | provenance | | +| array_flow.rb:97:9:97:15 | ...[...] [element 1] | array_flow.rb:97:5:97:5 | b [element 1] | provenance | | +| array_flow.rb:99:10:99:10 | b [element 1] | array_flow.rb:99:10:99:13 | ...[...] | provenance | | +| array_flow.rb:101:10:101:10 | b [element 1] | array_flow.rb:101:10:101:13 | ...[...] | provenance | | +| array_flow.rb:103:5:103:5 | a [element 1] | array_flow.rb:104:9:104:9 | a [element 1] | provenance | | +| array_flow.rb:103:13:103:24 | call to source | array_flow.rb:103:5:103:5 | a [element 1] | provenance | | +| array_flow.rb:104:5:104:5 | b [element 1] | array_flow.rb:106:10:106:10 | b [element 1] | provenance | | +| array_flow.rb:104:9:104:9 | a [element 1] | array_flow.rb:104:9:104:16 | ...[...] [element 1] | provenance | | +| array_flow.rb:104:9:104:16 | ...[...] [element 1] | array_flow.rb:104:5:104:5 | b [element 1] | provenance | | +| array_flow.rb:106:10:106:10 | b [element 1] | array_flow.rb:106:10:106:13 | ...[...] | provenance | | +| array_flow.rb:109:5:109:5 | a [element 1] | array_flow.rb:110:9:110:9 | a [element 1] | provenance | | +| array_flow.rb:109:5:109:5 | a [element 1] | array_flow.rb:114:9:114:9 | a [element 1] | provenance | | +| array_flow.rb:109:5:109:5 | a [element 3] | array_flow.rb:110:9:110:9 | a [element 3] | provenance | | +| array_flow.rb:109:5:109:5 | a [element 3] | array_flow.rb:114:9:114:9 | a [element 3] | provenance | | +| array_flow.rb:109:13:109:24 | call to source | array_flow.rb:109:5:109:5 | a [element 1] | provenance | | +| array_flow.rb:109:30:109:41 | call to source | array_flow.rb:109:5:109:5 | a [element 3] | provenance | | +| array_flow.rb:110:5:110:5 | b [element] | array_flow.rb:111:10:111:10 | b [element] | provenance | | +| array_flow.rb:110:5:110:5 | b [element] | array_flow.rb:112:10:112:10 | b [element] | provenance | | +| array_flow.rb:110:9:110:9 | a [element 1] | array_flow.rb:110:9:110:18 | ...[...] [element] | provenance | | +| array_flow.rb:110:9:110:9 | a [element 3] | array_flow.rb:110:9:110:18 | ...[...] [element] | provenance | | +| array_flow.rb:110:9:110:18 | ...[...] [element] | array_flow.rb:110:5:110:5 | b [element] | provenance | | +| array_flow.rb:111:10:111:10 | b [element] | array_flow.rb:111:10:111:13 | ...[...] | provenance | | +| array_flow.rb:112:10:112:10 | b [element] | array_flow.rb:112:10:112:13 | ...[...] | provenance | | +| array_flow.rb:114:5:114:5 | b [element] | array_flow.rb:115:10:115:10 | b [element] | provenance | | +| array_flow.rb:114:5:114:5 | b [element] | array_flow.rb:116:10:116:10 | b [element] | provenance | | +| array_flow.rb:114:9:114:9 | a [element 1] | array_flow.rb:114:9:114:19 | ...[...] [element] | provenance | | +| array_flow.rb:114:9:114:9 | a [element 3] | array_flow.rb:114:9:114:19 | ...[...] [element] | provenance | | +| array_flow.rb:114:9:114:19 | ...[...] [element] | array_flow.rb:114:5:114:5 | b [element] | provenance | | +| array_flow.rb:115:10:115:10 | b [element] | array_flow.rb:115:10:115:13 | ...[...] | provenance | | +| array_flow.rb:116:10:116:10 | b [element] | array_flow.rb:116:10:116:13 | ...[...] | provenance | | +| array_flow.rb:121:5:121:5 | [post] a [element] | array_flow.rb:122:10:122:10 | a [element] | provenance | | +| array_flow.rb:121:5:121:5 | [post] a [element] | array_flow.rb:123:10:123:10 | a [element] | provenance | | +| array_flow.rb:121:5:121:5 | [post] a [element] | array_flow.rb:124:10:124:10 | a [element] | provenance | | +| array_flow.rb:121:15:121:24 | call to source | array_flow.rb:121:5:121:5 | [post] a [element] | provenance | | +| array_flow.rb:122:10:122:10 | a [element] | array_flow.rb:122:10:122:13 | ...[...] | provenance | | +| array_flow.rb:123:10:123:10 | a [element] | array_flow.rb:123:10:123:13 | ...[...] | provenance | | +| array_flow.rb:124:10:124:10 | a [element] | array_flow.rb:124:10:124:13 | ...[...] | provenance | | +| array_flow.rb:129:5:129:5 | [post] a [element] | array_flow.rb:130:10:130:10 | a [element] | provenance | | +| array_flow.rb:129:5:129:5 | [post] a [element] | array_flow.rb:131:10:131:10 | a [element] | provenance | | +| array_flow.rb:129:5:129:5 | [post] a [element] | array_flow.rb:132:10:132:10 | a [element] | provenance | | +| array_flow.rb:129:19:129:28 | call to source | array_flow.rb:129:5:129:5 | [post] a [element] | provenance | | +| array_flow.rb:130:10:130:10 | a [element] | array_flow.rb:130:10:130:13 | ...[...] | provenance | | +| array_flow.rb:131:10:131:10 | a [element] | array_flow.rb:131:10:131:13 | ...[...] | provenance | | +| array_flow.rb:132:10:132:10 | a [element] | array_flow.rb:132:10:132:13 | ...[...] | provenance | | +| array_flow.rb:137:5:137:5 | [post] a [element] | array_flow.rb:138:10:138:10 | a [element] | provenance | | +| array_flow.rb:137:5:137:5 | [post] a [element] | array_flow.rb:139:10:139:10 | a [element] | provenance | | +| array_flow.rb:137:5:137:5 | [post] a [element] | array_flow.rb:140:10:140:10 | a [element] | provenance | | +| array_flow.rb:137:15:137:24 | call to source | array_flow.rb:137:5:137:5 | [post] a [element] | provenance | | +| array_flow.rb:138:10:138:10 | a [element] | array_flow.rb:138:10:138:13 | ...[...] | provenance | | +| array_flow.rb:139:10:139:10 | a [element] | array_flow.rb:139:10:139:13 | ...[...] | provenance | | +| array_flow.rb:140:10:140:10 | a [element] | array_flow.rb:140:10:140:13 | ...[...] | provenance | | +| array_flow.rb:145:5:145:5 | [post] a [element] | array_flow.rb:146:10:146:10 | a [element] | provenance | | +| array_flow.rb:145:5:145:5 | [post] a [element] | array_flow.rb:147:10:147:10 | a [element] | provenance | | +| array_flow.rb:145:5:145:5 | [post] a [element] | array_flow.rb:148:10:148:10 | a [element] | provenance | | +| array_flow.rb:145:19:145:28 | call to source | array_flow.rb:145:5:145:5 | [post] a [element] | provenance | | +| array_flow.rb:146:10:146:10 | a [element] | array_flow.rb:146:10:146:13 | ...[...] | provenance | | +| array_flow.rb:147:10:147:10 | a [element] | array_flow.rb:147:10:147:13 | ...[...] | provenance | | +| array_flow.rb:148:10:148:10 | a [element] | array_flow.rb:148:10:148:13 | ...[...] | provenance | | +| array_flow.rb:152:5:152:5 | a [element 2] | array_flow.rb:153:5:153:5 | a [element 2] | provenance | | +| array_flow.rb:152:16:152:25 | call to source | array_flow.rb:152:5:152:5 | a [element 2] | provenance | | +| array_flow.rb:153:5:153:5 | a [element 2] | array_flow.rb:153:16:153:16 | x | provenance | | +| array_flow.rb:153:16:153:16 | x | array_flow.rb:154:14:154:14 | x | provenance | | +| array_flow.rb:159:5:159:5 | a [element 2] | array_flow.rb:160:5:160:5 | a [element 2] | provenance | | +| array_flow.rb:159:16:159:25 | call to source | array_flow.rb:159:5:159:5 | a [element 2] | provenance | | +| array_flow.rb:160:5:160:5 | a [element 2] | array_flow.rb:160:16:160:16 | x | provenance | | +| array_flow.rb:160:16:160:16 | x | array_flow.rb:161:14:161:14 | x | provenance | | +| array_flow.rb:166:5:166:5 | a [element 0] | array_flow.rb:167:9:167:9 | a [element 0] | provenance | | +| array_flow.rb:166:5:166:5 | a [element 0] | array_flow.rb:168:10:168:10 | a [element 0] | provenance | | +| array_flow.rb:166:10:166:21 | call to source | array_flow.rb:166:5:166:5 | a [element 0] | provenance | | +| array_flow.rb:167:5:167:5 | b [element 0] | array_flow.rb:170:10:170:10 | b [element 0] | provenance | | +| array_flow.rb:167:5:167:5 | b [element] | array_flow.rb:170:10:170:10 | b [element] | provenance | | +| array_flow.rb:167:5:167:5 | b [element] | array_flow.rb:171:10:171:10 | b [element] | provenance | | +| array_flow.rb:167:9:167:9 | [post] a [element] | array_flow.rb:168:10:168:10 | a [element] | provenance | | +| array_flow.rb:167:9:167:9 | [post] a [element] | array_flow.rb:169:10:169:10 | a [element] | provenance | | +| array_flow.rb:167:9:167:9 | a [element 0] | array_flow.rb:167:9:167:44 | call to append [element 0] | provenance | | +| array_flow.rb:167:9:167:44 | call to append [element 0] | array_flow.rb:167:5:167:5 | b [element 0] | provenance | | +| array_flow.rb:167:9:167:44 | call to append [element] | array_flow.rb:167:5:167:5 | b [element] | provenance | | +| array_flow.rb:167:18:167:29 | call to source | array_flow.rb:167:9:167:9 | [post] a [element] | provenance | | +| array_flow.rb:167:18:167:29 | call to source | array_flow.rb:167:9:167:44 | call to append [element] | provenance | | +| array_flow.rb:167:32:167:43 | call to source | array_flow.rb:167:9:167:9 | [post] a [element] | provenance | | +| array_flow.rb:167:32:167:43 | call to source | array_flow.rb:167:9:167:44 | call to append [element] | provenance | | +| array_flow.rb:168:10:168:10 | a [element 0] | array_flow.rb:168:10:168:13 | ...[...] | provenance | | +| array_flow.rb:168:10:168:10 | a [element] | array_flow.rb:168:10:168:13 | ...[...] | provenance | | +| array_flow.rb:169:10:169:10 | a [element] | array_flow.rb:169:10:169:13 | ...[...] | provenance | | +| array_flow.rb:170:10:170:10 | b [element 0] | array_flow.rb:170:10:170:13 | ...[...] | provenance | | +| array_flow.rb:170:10:170:10 | b [element] | array_flow.rb:170:10:170:13 | ...[...] | provenance | | +| array_flow.rb:171:10:171:10 | b [element] | array_flow.rb:171:10:171:13 | ...[...] | provenance | | +| array_flow.rb:177:5:177:5 | c [element 1] | array_flow.rb:178:16:178:16 | c [element 1] | provenance | | +| array_flow.rb:177:15:177:24 | call to source | array_flow.rb:177:5:177:5 | c [element 1] | provenance | | +| array_flow.rb:178:5:178:5 | d [element 2, element 1] | array_flow.rb:179:11:179:11 | d [element 2, element 1] | provenance | | +| array_flow.rb:178:5:178:5 | d [element 2, element 1] | array_flow.rb:180:11:180:11 | d [element 2, element 1] | provenance | | +| array_flow.rb:178:16:178:16 | c [element 1] | array_flow.rb:178:5:178:5 | d [element 2, element 1] | provenance | | +| array_flow.rb:179:11:179:11 | d [element 2, element 1] | array_flow.rb:179:11:179:22 | call to assoc [element 1] | provenance | | +| array_flow.rb:179:11:179:22 | call to assoc [element 1] | array_flow.rb:179:11:179:25 | ...[...] | provenance | | +| array_flow.rb:179:11:179:25 | ...[...] | array_flow.rb:179:10:179:26 | ( ... ) | provenance | | +| array_flow.rb:180:11:180:11 | d [element 2, element 1] | array_flow.rb:180:11:180:22 | call to assoc [element 1] | provenance | | +| array_flow.rb:180:11:180:22 | call to assoc [element 1] | array_flow.rb:180:11:180:25 | ...[...] | provenance | | +| array_flow.rb:180:11:180:25 | ...[...] | array_flow.rb:180:10:180:26 | ( ... ) | provenance | | +| array_flow.rb:184:5:184:5 | a [element 1] | array_flow.rb:186:10:186:10 | a [element 1] | provenance | | +| array_flow.rb:184:5:184:5 | a [element 1] | array_flow.rb:188:10:188:10 | a [element 1] | provenance | | +| array_flow.rb:184:13:184:22 | call to source | array_flow.rb:184:5:184:5 | a [element 1] | provenance | | +| array_flow.rb:186:10:186:10 | a [element 1] | array_flow.rb:186:10:186:16 | call to at | provenance | | +| array_flow.rb:188:10:188:10 | a [element 1] | array_flow.rb:188:10:188:16 | call to at | provenance | | +| array_flow.rb:192:5:192:5 | a [element 2] | array_flow.rb:193:9:193:9 | a [element 2] | provenance | | +| array_flow.rb:192:16:192:25 | call to source | array_flow.rb:192:5:192:5 | a [element 2] | provenance | | +| array_flow.rb:193:5:193:5 | b | array_flow.rb:196:10:196:10 | b | provenance | | +| array_flow.rb:193:9:193:9 | a [element 2] | array_flow.rb:193:9:195:7 | call to bsearch | provenance | | +| array_flow.rb:193:9:193:9 | a [element 2] | array_flow.rb:193:23:193:23 | x | provenance | | +| array_flow.rb:193:9:195:7 | call to bsearch | array_flow.rb:193:5:193:5 | b | provenance | | +| array_flow.rb:193:23:193:23 | x | array_flow.rb:194:14:194:14 | x | provenance | | +| array_flow.rb:200:5:200:5 | a [element 2] | array_flow.rb:201:9:201:9 | a [element 2] | provenance | | +| array_flow.rb:200:16:200:25 | call to source | array_flow.rb:200:5:200:5 | a [element 2] | provenance | | +| array_flow.rb:201:9:201:9 | a [element 2] | array_flow.rb:201:29:201:29 | x | provenance | | +| array_flow.rb:201:29:201:29 | x | array_flow.rb:202:14:202:14 | x | provenance | | +| array_flow.rb:208:5:208:5 | a [element 2] | array_flow.rb:209:5:209:5 | a [element 2] | provenance | | +| array_flow.rb:208:16:208:25 | call to source | array_flow.rb:208:5:208:5 | a [element 2] | provenance | | +| array_flow.rb:209:5:209:5 | a [element 2] | array_flow.rb:209:17:209:17 | x | provenance | | +| array_flow.rb:209:17:209:17 | x | array_flow.rb:210:14:210:14 | x | provenance | | +| array_flow.rb:215:5:215:5 | a [element 2] | array_flow.rb:216:9:216:9 | a [element 2] | provenance | | +| array_flow.rb:215:5:215:5 | a [element 3] | array_flow.rb:216:9:216:9 | a [element 3] | provenance | | +| array_flow.rb:215:16:215:27 | call to source | array_flow.rb:215:5:215:5 | a [element 2] | provenance | | +| array_flow.rb:215:30:215:41 | call to source | array_flow.rb:215:5:215:5 | a [element 3] | provenance | | +| array_flow.rb:216:9:216:9 | a [element 2] | array_flow.rb:216:27:216:27 | x | provenance | | +| array_flow.rb:216:9:216:9 | a [element 2] | array_flow.rb:216:30:216:30 | y | provenance | | +| array_flow.rb:216:9:216:9 | a [element 3] | array_flow.rb:216:27:216:27 | x | provenance | | +| array_flow.rb:216:9:216:9 | a [element 3] | array_flow.rb:216:30:216:30 | y | provenance | | +| array_flow.rb:216:27:216:27 | x | array_flow.rb:217:14:217:14 | x | provenance | | +| array_flow.rb:216:30:216:30 | y | array_flow.rb:218:14:218:14 | y | provenance | | +| array_flow.rb:231:5:231:5 | a [element 2] | array_flow.rb:232:9:232:9 | a [element 2] | provenance | | +| array_flow.rb:231:16:231:27 | call to source | array_flow.rb:231:5:231:5 | a [element 2] | provenance | | +| array_flow.rb:232:5:232:5 | b [element] | array_flow.rb:236:10:236:10 | b [element] | provenance | | +| array_flow.rb:232:9:232:9 | a [element 2] | array_flow.rb:232:23:232:23 | x | provenance | | +| array_flow.rb:232:9:235:7 | call to collect [element] | array_flow.rb:232:5:232:5 | b [element] | provenance | | +| array_flow.rb:232:23:232:23 | x | array_flow.rb:233:14:233:14 | x | provenance | | +| array_flow.rb:234:9:234:19 | call to source | array_flow.rb:232:9:235:7 | call to collect [element] | provenance | | +| array_flow.rb:236:10:236:10 | b [element] | array_flow.rb:236:10:236:13 | ...[...] | provenance | | +| array_flow.rb:240:5:240:5 | a [element 2] | array_flow.rb:241:9:241:9 | a [element 2] | provenance | | +| array_flow.rb:240:16:240:27 | call to source | array_flow.rb:240:5:240:5 | a [element 2] | provenance | | +| array_flow.rb:241:5:241:5 | b [element] | array_flow.rb:246:10:246:10 | b [element] | provenance | | +| array_flow.rb:241:9:241:9 | [post] a [element] | array_flow.rb:245:10:245:10 | a [element] | provenance | | +| array_flow.rb:241:9:241:9 | a [element 2] | array_flow.rb:241:24:241:24 | x | provenance | | +| array_flow.rb:241:9:244:7 | call to collect! [element] | array_flow.rb:241:5:241:5 | b [element] | provenance | | +| array_flow.rb:241:24:241:24 | x | array_flow.rb:242:14:242:14 | x | provenance | | +| array_flow.rb:243:9:243:19 | call to source | array_flow.rb:241:9:241:9 | [post] a [element] | provenance | | +| array_flow.rb:243:9:243:19 | call to source | array_flow.rb:241:9:244:7 | call to collect! [element] | provenance | | +| array_flow.rb:245:10:245:10 | a [element] | array_flow.rb:245:10:245:13 | ...[...] | provenance | | +| array_flow.rb:246:10:246:10 | b [element] | array_flow.rb:246:10:246:13 | ...[...] | provenance | | +| array_flow.rb:250:5:250:5 | a [element 2] | array_flow.rb:251:9:251:9 | a [element 2] | provenance | | +| array_flow.rb:250:5:250:5 | a [element 2] | array_flow.rb:256:9:256:9 | a [element 2] | provenance | | +| array_flow.rb:250:16:250:27 | call to source | array_flow.rb:250:5:250:5 | a [element 2] | provenance | | +| array_flow.rb:251:5:251:5 | b [element] | array_flow.rb:255:10:255:10 | b [element] | provenance | | +| array_flow.rb:251:9:251:9 | a [element 2] | array_flow.rb:251:9:254:7 | call to collect_concat [element] | provenance | | +| array_flow.rb:251:9:251:9 | a [element 2] | array_flow.rb:251:30:251:30 | x | provenance | | +| array_flow.rb:251:9:254:7 | call to collect_concat [element] | array_flow.rb:251:5:251:5 | b [element] | provenance | | +| array_flow.rb:251:30:251:30 | x | array_flow.rb:252:14:252:14 | x | provenance | | +| array_flow.rb:253:13:253:24 | call to source | array_flow.rb:251:9:254:7 | call to collect_concat [element] | provenance | | +| array_flow.rb:255:10:255:10 | b [element] | array_flow.rb:255:10:255:13 | ...[...] | provenance | | +| array_flow.rb:256:5:256:5 | b [element] | array_flow.rb:260:10:260:10 | b [element] | provenance | | +| array_flow.rb:256:9:256:9 | a [element 2] | array_flow.rb:256:30:256:30 | x | provenance | | +| array_flow.rb:256:9:259:7 | call to collect_concat [element] | array_flow.rb:256:5:256:5 | b [element] | provenance | | +| array_flow.rb:256:30:256:30 | x | array_flow.rb:257:14:257:14 | x | provenance | | +| array_flow.rb:258:9:258:20 | call to source | array_flow.rb:256:9:259:7 | call to collect_concat [element] | provenance | | +| array_flow.rb:260:10:260:10 | b [element] | array_flow.rb:260:10:260:13 | ...[...] | provenance | | +| array_flow.rb:264:5:264:5 | a [element 2] | array_flow.rb:265:9:265:9 | a [element 2] | provenance | | +| array_flow.rb:264:16:264:25 | call to source | array_flow.rb:264:5:264:5 | a [element 2] | provenance | | +| array_flow.rb:265:5:265:5 | b [element 2] | array_flow.rb:269:10:269:10 | b [element 2] | provenance | | +| array_flow.rb:265:9:265:9 | a [element 2] | array_flow.rb:265:9:267:7 | call to combination [element 2] | provenance | | +| array_flow.rb:265:9:265:9 | a [element 2] | array_flow.rb:265:30:265:30 | x [element] | provenance | | +| array_flow.rb:265:9:267:7 | call to combination [element 2] | array_flow.rb:265:5:265:5 | b [element 2] | provenance | | +| array_flow.rb:265:30:265:30 | x [element] | array_flow.rb:266:14:266:14 | x [element] | provenance | | +| array_flow.rb:266:14:266:14 | x [element] | array_flow.rb:266:14:266:17 | ...[...] | provenance | | +| array_flow.rb:269:10:269:10 | b [element 2] | array_flow.rb:269:10:269:13 | ...[...] | provenance | | +| array_flow.rb:273:5:273:5 | a [element 2] | array_flow.rb:274:9:274:9 | a [element 2] | provenance | | +| array_flow.rb:273:16:273:25 | call to source | array_flow.rb:273:5:273:5 | a [element 2] | provenance | | +| array_flow.rb:274:5:274:5 | b [element] | array_flow.rb:275:10:275:10 | b [element] | provenance | | +| array_flow.rb:274:9:274:9 | a [element 2] | array_flow.rb:274:9:274:17 | call to compact [element] | provenance | | +| array_flow.rb:274:9:274:17 | call to compact [element] | array_flow.rb:274:5:274:5 | b [element] | provenance | | +| array_flow.rb:275:10:275:10 | b [element] | array_flow.rb:275:10:275:13 | ...[...] | provenance | | +| array_flow.rb:279:5:279:5 | a [element 2] | array_flow.rb:280:9:280:9 | a [element 2] | provenance | | +| array_flow.rb:279:16:279:25 | call to source | array_flow.rb:279:5:279:5 | a [element 2] | provenance | | +| array_flow.rb:280:5:280:5 | b [element] | array_flow.rb:282:10:282:10 | b [element] | provenance | | +| array_flow.rb:280:9:280:9 | [post] a [element] | array_flow.rb:281:10:281:10 | a [element] | provenance | | +| array_flow.rb:280:9:280:9 | a [element 2] | array_flow.rb:280:9:280:9 | [post] a [element] | provenance | | +| array_flow.rb:280:9:280:9 | a [element 2] | array_flow.rb:280:9:280:18 | call to compact! [element] | provenance | | +| array_flow.rb:280:9:280:18 | call to compact! [element] | array_flow.rb:280:5:280:5 | b [element] | provenance | | +| array_flow.rb:281:10:281:10 | a [element] | array_flow.rb:281:10:281:13 | ...[...] | provenance | | +| array_flow.rb:282:10:282:10 | b [element] | array_flow.rb:282:10:282:13 | ...[...] | provenance | | +| array_flow.rb:286:5:286:5 | a [element 2] | array_flow.rb:290:10:290:10 | a [element 2] | provenance | | +| array_flow.rb:286:16:286:27 | call to source | array_flow.rb:286:5:286:5 | a [element 2] | provenance | | +| array_flow.rb:287:5:287:5 | b [element 2] | array_flow.rb:288:14:288:14 | b [element 2] | provenance | | +| array_flow.rb:287:16:287:27 | call to source | array_flow.rb:287:5:287:5 | b [element 2] | provenance | | +| array_flow.rb:288:5:288:5 | [post] a [element] | array_flow.rb:289:10:289:10 | a [element] | provenance | | +| array_flow.rb:288:5:288:5 | [post] a [element] | array_flow.rb:290:10:290:10 | a [element] | provenance | | +| array_flow.rb:288:14:288:14 | b [element 2] | array_flow.rb:288:5:288:5 | [post] a [element] | provenance | | +| array_flow.rb:289:10:289:10 | a [element] | array_flow.rb:289:10:289:13 | ...[...] | provenance | | +| array_flow.rb:290:10:290:10 | a [element 2] | array_flow.rb:290:10:290:13 | ...[...] | provenance | | +| array_flow.rb:290:10:290:10 | a [element] | array_flow.rb:290:10:290:13 | ...[...] | provenance | | +| array_flow.rb:294:5:294:5 | a [element 2] | array_flow.rb:295:5:295:5 | a [element 2] | provenance | | +| array_flow.rb:294:16:294:25 | call to source | array_flow.rb:294:5:294:5 | a [element 2] | provenance | | +| array_flow.rb:295:5:295:5 | a [element 2] | array_flow.rb:295:17:295:17 | x | provenance | | +| array_flow.rb:295:17:295:17 | x | array_flow.rb:296:14:296:14 | x | provenance | | +| array_flow.rb:301:5:301:5 | a [element 2] | array_flow.rb:302:5:302:5 | a [element 2] | provenance | | +| array_flow.rb:301:16:301:25 | call to source | array_flow.rb:301:5:301:5 | a [element 2] | provenance | | +| array_flow.rb:302:5:302:5 | a [element 2] | array_flow.rb:302:20:302:20 | x | provenance | | +| array_flow.rb:302:20:302:20 | x | array_flow.rb:303:14:303:14 | x | provenance | | +| array_flow.rb:308:5:308:5 | a [element 2] | array_flow.rb:309:9:309:9 | a [element 2] | provenance | | +| array_flow.rb:308:16:308:25 | call to source | array_flow.rb:308:5:308:5 | a [element 2] | provenance | | +| array_flow.rb:309:5:309:5 | b [element 2] | array_flow.rb:312:10:312:10 | b [element 2] | provenance | | +| array_flow.rb:309:9:309:9 | a [element 2] | array_flow.rb:309:9:309:21 | call to deconstruct [element 2] | provenance | | +| array_flow.rb:309:9:309:21 | call to deconstruct [element 2] | array_flow.rb:309:5:309:5 | b [element 2] | provenance | | +| array_flow.rb:312:10:312:10 | b [element 2] | array_flow.rb:312:10:312:13 | ...[...] | provenance | | +| array_flow.rb:316:5:316:5 | a [element 2] | array_flow.rb:317:9:317:9 | a [element 2] | provenance | | +| array_flow.rb:316:16:316:27 | call to source | array_flow.rb:316:5:316:5 | a [element 2] | provenance | | +| array_flow.rb:317:5:317:5 | b | array_flow.rb:318:10:318:10 | b | provenance | | +| array_flow.rb:317:9:317:9 | a [element 2] | array_flow.rb:317:9:317:36 | call to delete | provenance | | +| array_flow.rb:317:9:317:36 | call to delete | array_flow.rb:317:5:317:5 | b | provenance | | +| array_flow.rb:317:23:317:34 | call to source | array_flow.rb:317:9:317:36 | call to delete | provenance | | +| array_flow.rb:325:5:325:5 | a [element 2] | array_flow.rb:326:9:326:9 | a [element 2] | provenance | | +| array_flow.rb:325:5:325:5 | a [element 3] | array_flow.rb:326:9:326:9 | a [element 3] | provenance | | +| array_flow.rb:325:16:325:27 | call to source | array_flow.rb:325:5:325:5 | a [element 2] | provenance | | +| array_flow.rb:325:30:325:41 | call to source | array_flow.rb:325:5:325:5 | a [element 3] | provenance | | +| array_flow.rb:326:5:326:5 | b | array_flow.rb:327:10:327:10 | b | provenance | | +| array_flow.rb:326:9:326:9 | [post] a [element 2] | array_flow.rb:328:10:328:10 | a [element 2] | provenance | | +| array_flow.rb:326:9:326:9 | a [element 2] | array_flow.rb:326:9:326:22 | call to delete_at | provenance | | +| array_flow.rb:326:9:326:9 | a [element 3] | array_flow.rb:326:9:326:9 | [post] a [element 2] | provenance | | +| array_flow.rb:326:9:326:22 | call to delete_at | array_flow.rb:326:5:326:5 | b | provenance | | +| array_flow.rb:328:10:328:10 | a [element 2] | array_flow.rb:328:10:328:13 | ...[...] | provenance | | +| array_flow.rb:330:5:330:5 | a [element 2] | array_flow.rb:331:9:331:9 | a [element 2] | provenance | | +| array_flow.rb:330:5:330:5 | a [element 3] | array_flow.rb:331:9:331:9 | a [element 3] | provenance | | +| array_flow.rb:330:16:330:27 | call to source | array_flow.rb:330:5:330:5 | a [element 2] | provenance | | +| array_flow.rb:330:30:330:41 | call to source | array_flow.rb:330:5:330:5 | a [element 3] | provenance | | +| array_flow.rb:331:5:331:5 | b | array_flow.rb:332:10:332:10 | b | provenance | | +| array_flow.rb:331:9:331:9 | [post] a [element] | array_flow.rb:333:10:333:10 | a [element] | provenance | | +| array_flow.rb:331:9:331:9 | [post] a [element] | array_flow.rb:334:10:334:10 | a [element] | provenance | | +| array_flow.rb:331:9:331:9 | a [element 2] | array_flow.rb:331:9:331:9 | [post] a [element] | provenance | | +| array_flow.rb:331:9:331:9 | a [element 2] | array_flow.rb:331:9:331:22 | call to delete_at | provenance | | +| array_flow.rb:331:9:331:9 | a [element 3] | array_flow.rb:331:9:331:9 | [post] a [element] | provenance | | +| array_flow.rb:331:9:331:9 | a [element 3] | array_flow.rb:331:9:331:22 | call to delete_at | provenance | | +| array_flow.rb:331:9:331:22 | call to delete_at | array_flow.rb:331:5:331:5 | b | provenance | | +| array_flow.rb:333:10:333:10 | a [element] | array_flow.rb:333:10:333:13 | ...[...] | provenance | | +| array_flow.rb:334:10:334:10 | a [element] | array_flow.rb:334:10:334:13 | ...[...] | provenance | | +| array_flow.rb:338:5:338:5 | a [element 2] | array_flow.rb:339:9:339:9 | a [element 2] | provenance | | +| array_flow.rb:338:16:338:25 | call to source | array_flow.rb:338:5:338:5 | a [element 2] | provenance | | +| array_flow.rb:339:5:339:5 | b [element] | array_flow.rb:342:10:342:10 | b [element] | provenance | | +| array_flow.rb:339:9:339:9 | [post] a [element] | array_flow.rb:343:10:343:10 | a [element] | provenance | | +| array_flow.rb:339:9:339:9 | [post] a [element] | array_flow.rb:344:10:344:10 | a [element] | provenance | | +| array_flow.rb:339:9:339:9 | [post] a [element] | array_flow.rb:345:10:345:10 | a [element] | provenance | | +| array_flow.rb:339:9:339:9 | a [element 2] | array_flow.rb:339:9:339:9 | [post] a [element] | provenance | | +| array_flow.rb:339:9:339:9 | a [element 2] | array_flow.rb:339:9:341:7 | call to delete_if [element] | provenance | | +| array_flow.rb:339:9:339:9 | a [element 2] | array_flow.rb:339:25:339:25 | x | provenance | | +| array_flow.rb:339:9:341:7 | call to delete_if [element] | array_flow.rb:339:5:339:5 | b [element] | provenance | | +| array_flow.rb:339:25:339:25 | x | array_flow.rb:340:14:340:14 | x | provenance | | +| array_flow.rb:342:10:342:10 | b [element] | array_flow.rb:342:10:342:13 | ...[...] | provenance | | +| array_flow.rb:343:10:343:10 | a [element] | array_flow.rb:343:10:343:13 | ...[...] | provenance | | +| array_flow.rb:344:10:344:10 | a [element] | array_flow.rb:344:10:344:13 | ...[...] | provenance | | +| array_flow.rb:345:10:345:10 | a [element] | array_flow.rb:345:10:345:13 | ...[...] | provenance | | +| array_flow.rb:349:5:349:5 | a [element 2] | array_flow.rb:350:9:350:9 | a [element 2] | provenance | | +| array_flow.rb:349:16:349:25 | call to source | array_flow.rb:349:5:349:5 | a [element 2] | provenance | | +| array_flow.rb:350:5:350:5 | b [element] | array_flow.rb:351:10:351:10 | b [element] | provenance | | +| array_flow.rb:350:9:350:9 | a [element 2] | array_flow.rb:350:9:350:25 | call to difference [element] | provenance | | +| array_flow.rb:350:9:350:25 | call to difference [element] | array_flow.rb:350:5:350:5 | b [element] | provenance | | +| array_flow.rb:351:10:351:10 | b [element] | array_flow.rb:351:10:351:13 | ...[...] | provenance | | +| array_flow.rb:355:5:355:5 | a [element 2] | array_flow.rb:357:10:357:10 | a [element 2] | provenance | | +| array_flow.rb:355:5:355:5 | a [element 2] | array_flow.rb:358:10:358:10 | a [element 2] | provenance | | +| array_flow.rb:355:5:355:5 | a [element 3, element 1] | array_flow.rb:360:10:360:10 | a [element 3, element 1] | provenance | | +| array_flow.rb:355:16:355:27 | call to source | array_flow.rb:355:5:355:5 | a [element 2] | provenance | | +| array_flow.rb:355:34:355:45 | call to source | array_flow.rb:355:5:355:5 | a [element 3, element 1] | provenance | | +| array_flow.rb:357:10:357:10 | a [element 2] | array_flow.rb:357:10:357:17 | call to dig | provenance | | +| array_flow.rb:358:10:358:10 | a [element 2] | array_flow.rb:358:10:358:17 | call to dig | provenance | | +| array_flow.rb:360:10:360:10 | a [element 3, element 1] | array_flow.rb:360:10:360:19 | call to dig | provenance | | +| array_flow.rb:364:5:364:5 | a [element 2] | array_flow.rb:365:9:365:9 | a [element 2] | provenance | | +| array_flow.rb:364:16:364:27 | call to source | array_flow.rb:364:5:364:5 | a [element 2] | provenance | | +| array_flow.rb:365:5:365:5 | b | array_flow.rb:368:10:368:10 | b | provenance | | +| array_flow.rb:365:9:365:9 | a [element 2] | array_flow.rb:365:9:367:7 | call to detect | provenance | | +| array_flow.rb:365:9:365:9 | a [element 2] | array_flow.rb:365:43:365:43 | x | provenance | | +| array_flow.rb:365:9:367:7 | call to detect | array_flow.rb:365:5:365:5 | b | provenance | | +| array_flow.rb:365:23:365:34 | call to source | array_flow.rb:365:9:367:7 | call to detect | provenance | | +| array_flow.rb:365:43:365:43 | x | array_flow.rb:366:14:366:14 | x | provenance | | +| array_flow.rb:372:5:372:5 | a [element 2] | array_flow.rb:373:9:373:9 | a [element 2] | provenance | | +| array_flow.rb:372:5:372:5 | a [element 2] | array_flow.rb:375:9:375:9 | a [element 2] | provenance | | +| array_flow.rb:372:5:372:5 | a [element 2] | array_flow.rb:380:9:380:9 | a [element 2] | provenance | | +| array_flow.rb:372:5:372:5 | a [element 3] | array_flow.rb:373:9:373:9 | a [element 3] | provenance | | +| array_flow.rb:372:5:372:5 | a [element 3] | array_flow.rb:375:9:375:9 | a [element 3] | provenance | | +| array_flow.rb:372:16:372:27 | call to source | array_flow.rb:372:5:372:5 | a [element 2] | provenance | | +| array_flow.rb:372:30:372:41 | call to source | array_flow.rb:372:5:372:5 | a [element 3] | provenance | | +| array_flow.rb:373:5:373:5 | b [element] | array_flow.rb:374:10:374:10 | b [element] | provenance | | +| array_flow.rb:373:9:373:9 | a [element 2] | array_flow.rb:373:9:373:17 | call to drop [element] | provenance | | +| array_flow.rb:373:9:373:9 | a [element 3] | array_flow.rb:373:9:373:17 | call to drop [element] | provenance | | +| array_flow.rb:373:9:373:17 | call to drop [element] | array_flow.rb:373:5:373:5 | b [element] | provenance | | +| array_flow.rb:374:10:374:10 | b [element] | array_flow.rb:374:10:374:13 | ...[...] | provenance | | +| array_flow.rb:375:5:375:5 | b [element 1] | array_flow.rb:377:10:377:10 | b [element 1] | provenance | | +| array_flow.rb:375:5:375:5 | b [element 1] | array_flow.rb:378:10:378:10 | b [element 1] | provenance | | +| array_flow.rb:375:5:375:5 | b [element 2] | array_flow.rb:378:10:378:10 | b [element 2] | provenance | | +| array_flow.rb:375:9:375:9 | a [element 2] | array_flow.rb:375:9:375:17 | call to drop [element 1] | provenance | | +| array_flow.rb:375:9:375:9 | a [element 3] | array_flow.rb:375:9:375:17 | call to drop [element 2] | provenance | | +| array_flow.rb:375:9:375:17 | call to drop [element 1] | array_flow.rb:375:5:375:5 | b [element 1] | provenance | | +| array_flow.rb:375:9:375:17 | call to drop [element 2] | array_flow.rb:375:5:375:5 | b [element 2] | provenance | | +| array_flow.rb:377:10:377:10 | b [element 1] | array_flow.rb:377:10:377:13 | ...[...] | provenance | | +| array_flow.rb:378:10:378:10 | b [element 1] | array_flow.rb:378:10:378:13 | ...[...] | provenance | | +| array_flow.rb:378:10:378:10 | b [element 2] | array_flow.rb:378:10:378:13 | ...[...] | provenance | | +| array_flow.rb:379:5:379:5 | [post] a [element] | array_flow.rb:380:9:380:9 | a [element] | provenance | | +| array_flow.rb:379:12:379:23 | call to source | array_flow.rb:379:5:379:5 | [post] a [element] | provenance | | +| array_flow.rb:380:5:380:5 | b [element 1] | array_flow.rb:381:10:381:10 | b [element 1] | provenance | | +| array_flow.rb:380:5:380:5 | b [element] | array_flow.rb:381:10:381:10 | b [element] | provenance | | +| array_flow.rb:380:5:380:5 | b [element] | array_flow.rb:382:9:382:9 | b [element] | provenance | | +| array_flow.rb:380:9:380:9 | a [element 2] | array_flow.rb:380:9:380:17 | call to drop [element 1] | provenance | | +| array_flow.rb:380:9:380:9 | a [element] | array_flow.rb:380:9:380:17 | call to drop [element] | provenance | | +| array_flow.rb:380:9:380:17 | call to drop [element 1] | array_flow.rb:380:5:380:5 | b [element 1] | provenance | | +| array_flow.rb:380:9:380:17 | call to drop [element] | array_flow.rb:380:5:380:5 | b [element] | provenance | | +| array_flow.rb:381:10:381:10 | b [element 1] | array_flow.rb:381:10:381:13 | ...[...] | provenance | | +| array_flow.rb:381:10:381:10 | b [element] | array_flow.rb:381:10:381:13 | ...[...] | provenance | | +| array_flow.rb:382:5:382:5 | c [element] | array_flow.rb:383:10:383:10 | c [element] | provenance | | +| array_flow.rb:382:9:382:9 | b [element] | array_flow.rb:382:9:382:19 | call to drop [element] | provenance | | +| array_flow.rb:382:9:382:19 | call to drop [element] | array_flow.rb:382:5:382:5 | c [element] | provenance | | +| array_flow.rb:383:10:383:10 | c [element] | array_flow.rb:383:10:383:13 | ...[...] | provenance | | +| array_flow.rb:387:5:387:5 | a [element 2] | array_flow.rb:388:9:388:9 | a [element 2] | provenance | | +| array_flow.rb:387:5:387:5 | a [element 3] | array_flow.rb:388:9:388:9 | a [element 3] | provenance | | +| array_flow.rb:387:16:387:27 | call to source | array_flow.rb:387:5:387:5 | a [element 2] | provenance | | +| array_flow.rb:387:30:387:41 | call to source | array_flow.rb:387:5:387:5 | a [element 3] | provenance | | +| array_flow.rb:388:5:388:5 | b [element] | array_flow.rb:391:10:391:10 | b [element] | provenance | | +| array_flow.rb:388:9:388:9 | a [element 2] | array_flow.rb:388:9:390:7 | call to drop_while [element] | provenance | | +| array_flow.rb:388:9:388:9 | a [element 2] | array_flow.rb:388:26:388:26 | x | provenance | | +| array_flow.rb:388:9:388:9 | a [element 3] | array_flow.rb:388:9:390:7 | call to drop_while [element] | provenance | | +| array_flow.rb:388:9:388:9 | a [element 3] | array_flow.rb:388:26:388:26 | x | provenance | | +| array_flow.rb:388:9:390:7 | call to drop_while [element] | array_flow.rb:388:5:388:5 | b [element] | provenance | | +| array_flow.rb:388:26:388:26 | x | array_flow.rb:389:14:389:14 | x | provenance | | +| array_flow.rb:391:10:391:10 | b [element] | array_flow.rb:391:10:391:13 | ...[...] | provenance | | +| array_flow.rb:395:5:395:5 | a [element 2] | array_flow.rb:396:9:396:9 | a [element 2] | provenance | | +| array_flow.rb:395:16:395:25 | call to source | array_flow.rb:395:5:395:5 | a [element 2] | provenance | | +| array_flow.rb:396:5:396:5 | b [element 2] | array_flow.rb:399:10:399:10 | b [element 2] | provenance | | +| array_flow.rb:396:9:396:9 | a [element 2] | array_flow.rb:396:9:398:7 | call to each [element 2] | provenance | | +| array_flow.rb:396:9:396:9 | a [element 2] | array_flow.rb:396:20:396:20 | x | provenance | | +| array_flow.rb:396:9:398:7 | call to each [element 2] | array_flow.rb:396:5:396:5 | b [element 2] | provenance | | +| array_flow.rb:396:20:396:20 | x | array_flow.rb:397:14:397:14 | x | provenance | | +| array_flow.rb:399:10:399:10 | b [element 2] | array_flow.rb:399:10:399:13 | ...[...] | provenance | | +| array_flow.rb:403:5:403:5 | a [element 2] | array_flow.rb:404:18:404:18 | a [element 2] | provenance | | +| array_flow.rb:403:16:403:25 | call to source | array_flow.rb:403:5:403:5 | a [element 2] | provenance | | +| array_flow.rb:404:5:404:5 | b [element 2] | array_flow.rb:408:10:408:10 | b [element 2] | provenance | | +| array_flow.rb:404:9:406:7 | [post] { ... } [captured x] | array_flow.rb:407:10:407:10 | x | provenance | | +| array_flow.rb:404:9:406:7 | __synth__0__1 | array_flow.rb:405:14:405:14 | x | provenance | | +| array_flow.rb:404:18:404:18 | a [element 2] | array_flow.rb:404:5:404:5 | b [element 2] | provenance | | +| array_flow.rb:404:18:404:18 | a [element 2] | array_flow.rb:404:9:406:7 | [post] { ... } [captured x] | provenance | | +| array_flow.rb:404:18:404:18 | a [element 2] | array_flow.rb:404:9:406:7 | __synth__0__1 | provenance | | +| array_flow.rb:408:10:408:10 | b [element 2] | array_flow.rb:408:10:408:13 | ...[...] | provenance | | +| array_flow.rb:412:5:412:5 | a [element 2] | array_flow.rb:413:5:413:5 | a [element 2] | provenance | | +| array_flow.rb:412:16:412:25 | call to source | array_flow.rb:412:5:412:5 | a [element 2] | provenance | | +| array_flow.rb:413:5:413:5 | a [element 2] | array_flow.rb:413:24:413:24 | x [element] | provenance | | +| array_flow.rb:413:24:413:24 | x [element] | array_flow.rb:414:15:414:15 | x [element] | provenance | | +| array_flow.rb:414:15:414:15 | x [element] | array_flow.rb:414:15:414:18 | ...[...] | provenance | | +| array_flow.rb:414:15:414:18 | ...[...] | array_flow.rb:414:14:414:19 | ( ... ) | provenance | | +| array_flow.rb:419:5:419:5 | a [element 2] | array_flow.rb:420:9:420:9 | a [element 2] | provenance | | +| array_flow.rb:419:16:419:25 | call to source | array_flow.rb:419:5:419:5 | a [element 2] | provenance | | +| array_flow.rb:420:5:420:5 | b [element 2] | array_flow.rb:423:10:423:10 | b [element 2] | provenance | | +| array_flow.rb:420:9:420:9 | a [element 2] | array_flow.rb:420:9:422:7 | call to each_entry [element 2] | provenance | | +| array_flow.rb:420:9:420:9 | a [element 2] | array_flow.rb:420:26:420:26 | x | provenance | | +| array_flow.rb:420:9:422:7 | call to each_entry [element 2] | array_flow.rb:420:5:420:5 | b [element 2] | provenance | | +| array_flow.rb:420:26:420:26 | x | array_flow.rb:421:14:421:14 | x | provenance | | +| array_flow.rb:423:10:423:10 | b [element 2] | array_flow.rb:423:10:423:13 | ...[...] | provenance | | +| array_flow.rb:427:5:427:5 | a [element 2] | array_flow.rb:428:9:428:9 | a [element 2] | provenance | | +| array_flow.rb:427:16:427:25 | call to source | array_flow.rb:427:5:427:5 | a [element 2] | provenance | | +| array_flow.rb:428:5:428:5 | b [element 2] | array_flow.rb:431:10:431:10 | b [element 2] | provenance | | +| array_flow.rb:428:9:428:9 | a [element 2] | array_flow.rb:428:9:430:7 | call to each_index [element 2] | provenance | | +| array_flow.rb:428:9:430:7 | call to each_index [element 2] | array_flow.rb:428:5:428:5 | b [element 2] | provenance | | +| array_flow.rb:431:10:431:10 | b [element 2] | array_flow.rb:431:10:431:13 | ...[...] | provenance | | +| array_flow.rb:435:5:435:5 | a [element 3] | array_flow.rb:436:5:436:5 | a [element 3] | provenance | | +| array_flow.rb:435:19:435:28 | call to source | array_flow.rb:435:5:435:5 | a [element 3] | provenance | | +| array_flow.rb:436:5:436:5 | a [element 3] | array_flow.rb:436:25:436:25 | x [element] | provenance | | +| array_flow.rb:436:25:436:25 | x [element] | array_flow.rb:437:14:437:14 | x [element] | provenance | | +| array_flow.rb:437:14:437:14 | x [element] | array_flow.rb:437:14:437:17 | ...[...] | provenance | | +| array_flow.rb:442:5:442:5 | a [element 3] | array_flow.rb:443:9:443:9 | a [element 3] | provenance | | +| array_flow.rb:442:19:442:28 | call to source | array_flow.rb:442:5:442:5 | a [element 3] | provenance | | +| array_flow.rb:443:5:443:5 | b [element 3] | array_flow.rb:447:10:447:10 | b [element 3] | provenance | | +| array_flow.rb:443:9:443:9 | a [element 3] | array_flow.rb:443:9:446:7 | call to each_with_index [element 3] | provenance | | +| array_flow.rb:443:9:443:9 | a [element 3] | array_flow.rb:443:31:443:31 | x | provenance | | +| array_flow.rb:443:9:446:7 | call to each_with_index [element 3] | array_flow.rb:443:5:443:5 | b [element 3] | provenance | | +| array_flow.rb:443:31:443:31 | x | array_flow.rb:444:14:444:14 | x | provenance | | +| array_flow.rb:447:10:447:10 | b [element 3] | array_flow.rb:447:10:447:13 | ...[...] | provenance | | +| array_flow.rb:451:5:451:5 | a [element 3] | array_flow.rb:452:9:452:9 | a [element 3] | provenance | | +| array_flow.rb:451:19:451:30 | call to source | array_flow.rb:451:5:451:5 | a [element 3] | provenance | | +| array_flow.rb:452:5:452:5 | b | array_flow.rb:456:10:456:10 | b | provenance | | +| array_flow.rb:452:9:452:9 | a [element 3] | array_flow.rb:452:46:452:46 | x | provenance | | +| array_flow.rb:452:9:455:7 | call to each_with_object | array_flow.rb:452:5:452:5 | b | provenance | | +| array_flow.rb:452:28:452:39 | call to source | array_flow.rb:452:9:455:7 | call to each_with_object | provenance | | +| array_flow.rb:452:28:452:39 | call to source | array_flow.rb:452:48:452:48 | a | provenance | | +| array_flow.rb:452:46:452:46 | x | array_flow.rb:453:14:453:14 | x | provenance | | +| array_flow.rb:452:48:452:48 | a | array_flow.rb:454:14:454:14 | a | provenance | | +| array_flow.rb:460:5:460:5 | a [element 3] | array_flow.rb:461:9:461:9 | a [element 3] | provenance | | +| array_flow.rb:460:19:460:28 | call to source | array_flow.rb:460:5:460:5 | a [element 3] | provenance | | +| array_flow.rb:461:5:461:5 | b [element 3] | array_flow.rb:462:10:462:10 | b [element 3] | provenance | | +| array_flow.rb:461:9:461:9 | a [element 3] | array_flow.rb:461:9:461:17 | call to entries [element 3] | provenance | | +| array_flow.rb:461:9:461:17 | call to entries [element 3] | array_flow.rb:461:5:461:5 | b [element 3] | provenance | | +| array_flow.rb:462:10:462:10 | b [element 3] | array_flow.rb:462:10:462:13 | ...[...] | provenance | | +| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:467:9:467:9 | a [element 3] | provenance | | +| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:471:9:471:9 | a [element 3] | provenance | | +| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:473:9:473:9 | a [element 3] | provenance | | +| array_flow.rb:466:5:466:5 | a [element 3] | array_flow.rb:477:9:477:9 | a [element 3] | provenance | | +| array_flow.rb:466:5:466:5 | a [element 4] | array_flow.rb:467:9:467:9 | a [element 4] | provenance | | +| array_flow.rb:466:5:466:5 | a [element 4] | array_flow.rb:477:9:477:9 | a [element 4] | provenance | | +| array_flow.rb:466:19:466:30 | call to source | array_flow.rb:466:5:466:5 | a [element 3] | provenance | | +| array_flow.rb:466:33:466:44 | call to source | array_flow.rb:466:5:466:5 | a [element 4] | provenance | | +| array_flow.rb:467:5:467:5 | b | array_flow.rb:470:10:470:10 | b | provenance | | +| array_flow.rb:467:9:467:9 | a [element 3] | array_flow.rb:467:9:469:7 | call to fetch | provenance | | +| array_flow.rb:467:9:467:9 | a [element 4] | array_flow.rb:467:9:469:7 | call to fetch | provenance | | +| array_flow.rb:467:9:469:7 | call to fetch | array_flow.rb:467:5:467:5 | b | provenance | | +| array_flow.rb:467:17:467:28 | call to source | array_flow.rb:467:35:467:35 | x | provenance | | +| array_flow.rb:467:35:467:35 | x | array_flow.rb:468:14:468:14 | x | provenance | | +| array_flow.rb:471:5:471:5 | b | array_flow.rb:472:10:472:10 | b | provenance | | +| array_flow.rb:471:9:471:9 | a [element 3] | array_flow.rb:471:9:471:18 | call to fetch | provenance | | +| array_flow.rb:471:9:471:18 | call to fetch | array_flow.rb:471:5:471:5 | b | provenance | | +| array_flow.rb:473:5:473:5 | b | array_flow.rb:474:10:474:10 | b | provenance | | +| array_flow.rb:473:9:473:9 | a [element 3] | array_flow.rb:473:9:473:32 | call to fetch | provenance | | +| array_flow.rb:473:9:473:32 | call to fetch | array_flow.rb:473:5:473:5 | b | provenance | | +| array_flow.rb:473:20:473:31 | call to source | array_flow.rb:473:9:473:32 | call to fetch | provenance | | +| array_flow.rb:475:5:475:5 | b | array_flow.rb:476:10:476:10 | b | provenance | | +| array_flow.rb:475:9:475:34 | call to fetch | array_flow.rb:475:5:475:5 | b | provenance | | +| array_flow.rb:475:22:475:33 | call to source | array_flow.rb:475:9:475:34 | call to fetch | provenance | | +| array_flow.rb:477:5:477:5 | b | array_flow.rb:478:10:478:10 | b | provenance | | +| array_flow.rb:477:9:477:9 | a [element 3] | array_flow.rb:477:9:477:32 | call to fetch | provenance | | +| array_flow.rb:477:9:477:9 | a [element 4] | array_flow.rb:477:9:477:32 | call to fetch | provenance | | +| array_flow.rb:477:9:477:32 | call to fetch | array_flow.rb:477:5:477:5 | b | provenance | | +| array_flow.rb:477:20:477:31 | call to source | array_flow.rb:477:9:477:32 | call to fetch | provenance | | +| array_flow.rb:482:5:482:5 | a [element 3] | array_flow.rb:484:10:484:10 | a [element 3] | provenance | | +| array_flow.rb:482:19:482:30 | call to source | array_flow.rb:482:5:482:5 | a [element 3] | provenance | | +| array_flow.rb:483:5:483:5 | [post] a [element] | array_flow.rb:484:10:484:10 | a [element] | provenance | | +| array_flow.rb:483:12:483:23 | call to source | array_flow.rb:483:5:483:5 | [post] a [element] | provenance | | +| array_flow.rb:484:10:484:10 | a [element 3] | array_flow.rb:484:10:484:13 | ...[...] | provenance | | +| array_flow.rb:484:10:484:10 | a [element] | array_flow.rb:484:10:484:13 | ...[...] | provenance | | +| array_flow.rb:485:5:485:5 | [post] a [element] | array_flow.rb:486:10:486:10 | a [element] | provenance | | +| array_flow.rb:485:12:485:23 | call to source | array_flow.rb:485:5:485:5 | [post] a [element] | provenance | | +| array_flow.rb:486:10:486:10 | a [element] | array_flow.rb:486:10:486:13 | ...[...] | provenance | | +| array_flow.rb:487:5:487:5 | [post] a [element] | array_flow.rb:490:10:490:10 | a [element] | provenance | | +| array_flow.rb:487:5:487:5 | [post] a [element] | array_flow.rb:494:10:494:10 | a [element] | provenance | | +| array_flow.rb:488:9:488:20 | call to source | array_flow.rb:487:5:487:5 | [post] a [element] | provenance | | +| array_flow.rb:490:10:490:10 | a [element] | array_flow.rb:490:10:490:13 | ...[...] | provenance | | +| array_flow.rb:491:5:491:5 | [post] a [element] | array_flow.rb:494:10:494:10 | a [element] | provenance | | +| array_flow.rb:492:9:492:20 | call to source | array_flow.rb:491:5:491:5 | [post] a [element] | provenance | | +| array_flow.rb:494:10:494:10 | a [element] | array_flow.rb:494:10:494:13 | ...[...] | provenance | | +| array_flow.rb:498:5:498:5 | a [element 3] | array_flow.rb:499:9:499:9 | a [element 3] | provenance | | +| array_flow.rb:498:19:498:28 | call to source | array_flow.rb:498:5:498:5 | a [element 3] | provenance | | +| array_flow.rb:499:5:499:5 | b [element] | array_flow.rb:502:10:502:10 | b [element] | provenance | | +| array_flow.rb:499:9:499:9 | a [element 3] | array_flow.rb:499:9:501:7 | call to filter [element] | provenance | | +| array_flow.rb:499:9:499:9 | a [element 3] | array_flow.rb:499:22:499:22 | x | provenance | | +| array_flow.rb:499:9:501:7 | call to filter [element] | array_flow.rb:499:5:499:5 | b [element] | provenance | | +| array_flow.rb:499:22:499:22 | x | array_flow.rb:500:14:500:14 | x | provenance | | +| array_flow.rb:502:10:502:10 | b [element] | array_flow.rb:502:10:502:13 | ...[...] | provenance | | +| array_flow.rb:506:5:506:5 | a [element 3] | array_flow.rb:507:9:507:9 | a [element 3] | provenance | | +| array_flow.rb:506:19:506:28 | call to source | array_flow.rb:506:5:506:5 | a [element 3] | provenance | | +| array_flow.rb:507:5:507:5 | b [element] | array_flow.rb:511:10:511:10 | b [element] | provenance | | +| array_flow.rb:507:9:507:9 | a [element 3] | array_flow.rb:507:9:510:7 | call to filter_map [element] | provenance | | +| array_flow.rb:507:9:507:9 | a [element 3] | array_flow.rb:507:26:507:26 | x | provenance | | +| array_flow.rb:507:9:510:7 | call to filter_map [element] | array_flow.rb:507:5:507:5 | b [element] | provenance | | +| array_flow.rb:507:26:507:26 | x | array_flow.rb:508:14:508:14 | x | provenance | | +| array_flow.rb:511:10:511:10 | b [element] | array_flow.rb:511:10:511:13 | ...[...] | provenance | | +| array_flow.rb:518:5:518:5 | d [element] | array_flow.rb:521:10:521:10 | d [element] | provenance | | +| array_flow.rb:518:9:520:7 | call to filter_map [element] | array_flow.rb:518:5:518:5 | d [element] | provenance | | +| array_flow.rb:519:9:519:20 | call to source | array_flow.rb:518:9:520:7 | call to filter_map [element] | provenance | | +| array_flow.rb:521:10:521:10 | d [element] | array_flow.rb:521:10:521:13 | ...[...] | provenance | | +| array_flow.rb:525:5:525:5 | a [element 3] | array_flow.rb:526:9:526:9 | a [element 3] | provenance | | +| array_flow.rb:525:19:525:28 | call to source | array_flow.rb:525:5:525:5 | a [element 3] | provenance | | +| array_flow.rb:526:5:526:5 | b [element] | array_flow.rb:531:10:531:10 | b [element] | provenance | | +| array_flow.rb:526:9:526:9 | [post] a [element] | array_flow.rb:530:10:530:10 | a [element] | provenance | | +| array_flow.rb:526:9:526:9 | a [element 3] | array_flow.rb:526:9:526:9 | [post] a [element] | provenance | | +| array_flow.rb:526:9:526:9 | a [element 3] | array_flow.rb:526:9:529:7 | call to filter! [element] | provenance | | +| array_flow.rb:526:9:526:9 | a [element 3] | array_flow.rb:526:23:526:23 | x | provenance | | +| array_flow.rb:526:9:529:7 | call to filter! [element] | array_flow.rb:526:5:526:5 | b [element] | provenance | | +| array_flow.rb:526:23:526:23 | x | array_flow.rb:527:14:527:14 | x | provenance | | +| array_flow.rb:530:10:530:10 | a [element] | array_flow.rb:530:10:530:13 | ...[...] | provenance | | +| array_flow.rb:531:10:531:10 | b [element] | array_flow.rb:531:10:531:13 | ...[...] | provenance | | +| array_flow.rb:535:5:535:5 | a [element 3] | array_flow.rb:536:9:536:9 | a [element 3] | provenance | | +| array_flow.rb:535:19:535:30 | call to source | array_flow.rb:535:5:535:5 | a [element 3] | provenance | | +| array_flow.rb:536:5:536:5 | b | array_flow.rb:539:10:539:10 | b | provenance | | +| array_flow.rb:536:9:536:9 | a [element 3] | array_flow.rb:536:9:538:7 | call to find | provenance | | +| array_flow.rb:536:9:536:9 | a [element 3] | array_flow.rb:536:41:536:41 | x | provenance | | +| array_flow.rb:536:9:538:7 | call to find | array_flow.rb:536:5:536:5 | b | provenance | | +| array_flow.rb:536:21:536:32 | call to source | array_flow.rb:536:9:538:7 | call to find | provenance | | +| array_flow.rb:536:41:536:41 | x | array_flow.rb:537:14:537:14 | x | provenance | | +| array_flow.rb:543:5:543:5 | a [element 3] | array_flow.rb:544:9:544:9 | a [element 3] | provenance | | +| array_flow.rb:543:19:543:28 | call to source | array_flow.rb:543:5:543:5 | a [element 3] | provenance | | +| array_flow.rb:544:5:544:5 | b [element] | array_flow.rb:547:10:547:10 | b [element] | provenance | | +| array_flow.rb:544:9:544:9 | a [element 3] | array_flow.rb:544:9:546:7 | call to find_all [element] | provenance | | +| array_flow.rb:544:9:544:9 | a [element 3] | array_flow.rb:544:24:544:24 | x | provenance | | +| array_flow.rb:544:9:546:7 | call to find_all [element] | array_flow.rb:544:5:544:5 | b [element] | provenance | | +| array_flow.rb:544:24:544:24 | x | array_flow.rb:545:14:545:14 | x | provenance | | +| array_flow.rb:547:10:547:10 | b [element] | array_flow.rb:547:10:547:13 | ...[...] | provenance | | +| array_flow.rb:551:5:551:5 | a [element 3] | array_flow.rb:552:5:552:5 | a [element 3] | provenance | | +| array_flow.rb:551:19:551:28 | call to source | array_flow.rb:551:5:551:5 | a [element 3] | provenance | | +| array_flow.rb:552:5:552:5 | a [element 3] | array_flow.rb:552:22:552:22 | x | provenance | | +| array_flow.rb:552:22:552:22 | x | array_flow.rb:553:14:553:14 | x | provenance | | +| array_flow.rb:558:5:558:5 | a [element 0] | array_flow.rb:560:10:560:10 | a [element 0] | provenance | | +| array_flow.rb:558:5:558:5 | a [element 0] | array_flow.rb:561:9:561:9 | a [element 0] | provenance | | +| array_flow.rb:558:5:558:5 | a [element 0] | array_flow.rb:564:9:564:9 | a [element 0] | provenance | | +| array_flow.rb:558:5:558:5 | a [element 3] | array_flow.rb:564:9:564:9 | a [element 3] | provenance | | +| array_flow.rb:558:10:558:21 | call to source | array_flow.rb:558:5:558:5 | a [element 0] | provenance | | +| array_flow.rb:558:30:558:41 | call to source | array_flow.rb:558:5:558:5 | a [element 3] | provenance | | +| array_flow.rb:559:5:559:5 | [post] a [element] | array_flow.rb:560:10:560:10 | a [element] | provenance | | +| array_flow.rb:559:5:559:5 | [post] a [element] | array_flow.rb:561:9:561:9 | a [element] | provenance | | +| array_flow.rb:559:5:559:5 | [post] a [element] | array_flow.rb:564:9:564:9 | a [element] | provenance | | +| array_flow.rb:559:12:559:23 | call to source | array_flow.rb:559:5:559:5 | [post] a [element] | provenance | | +| array_flow.rb:560:10:560:10 | a [element 0] | array_flow.rb:560:10:560:16 | call to first | provenance | | +| array_flow.rb:560:10:560:10 | a [element] | array_flow.rb:560:10:560:16 | call to first | provenance | | +| array_flow.rb:561:5:561:5 | b [element 0] | array_flow.rb:562:10:562:10 | b [element 0] | provenance | | +| array_flow.rb:561:5:561:5 | b [element] | array_flow.rb:562:10:562:10 | b [element] | provenance | | +| array_flow.rb:561:5:561:5 | b [element] | array_flow.rb:563:10:563:10 | b [element] | provenance | | +| array_flow.rb:561:9:561:9 | a [element 0] | array_flow.rb:561:9:561:18 | call to first [element 0] | provenance | | +| array_flow.rb:561:9:561:9 | a [element] | array_flow.rb:561:9:561:18 | call to first [element] | provenance | | +| array_flow.rb:561:9:561:18 | call to first [element 0] | array_flow.rb:561:5:561:5 | b [element 0] | provenance | | +| array_flow.rb:561:9:561:18 | call to first [element] | array_flow.rb:561:5:561:5 | b [element] | provenance | | +| array_flow.rb:562:10:562:10 | b [element 0] | array_flow.rb:562:10:562:13 | ...[...] | provenance | | +| array_flow.rb:562:10:562:10 | b [element] | array_flow.rb:562:10:562:13 | ...[...] | provenance | | +| array_flow.rb:563:10:563:10 | b [element] | array_flow.rb:563:10:563:13 | ...[...] | provenance | | +| array_flow.rb:564:5:564:5 | c [element 0] | array_flow.rb:565:10:565:10 | c [element 0] | provenance | | +| array_flow.rb:564:5:564:5 | c [element 3] | array_flow.rb:566:10:566:10 | c [element 3] | provenance | | +| array_flow.rb:564:5:564:5 | c [element] | array_flow.rb:565:10:565:10 | c [element] | provenance | | +| array_flow.rb:564:5:564:5 | c [element] | array_flow.rb:566:10:566:10 | c [element] | provenance | | +| array_flow.rb:564:9:564:9 | a [element 0] | array_flow.rb:564:9:564:18 | call to first [element 0] | provenance | | +| array_flow.rb:564:9:564:9 | a [element 3] | array_flow.rb:564:9:564:18 | call to first [element 3] | provenance | | +| array_flow.rb:564:9:564:9 | a [element] | array_flow.rb:564:9:564:18 | call to first [element] | provenance | | +| array_flow.rb:564:9:564:18 | call to first [element 0] | array_flow.rb:564:5:564:5 | c [element 0] | provenance | | +| array_flow.rb:564:9:564:18 | call to first [element 3] | array_flow.rb:564:5:564:5 | c [element 3] | provenance | | +| array_flow.rb:564:9:564:18 | call to first [element] | array_flow.rb:564:5:564:5 | c [element] | provenance | | +| array_flow.rb:565:10:565:10 | c [element 0] | array_flow.rb:565:10:565:13 | ...[...] | provenance | | +| array_flow.rb:565:10:565:10 | c [element] | array_flow.rb:565:10:565:13 | ...[...] | provenance | | +| array_flow.rb:566:10:566:10 | c [element 3] | array_flow.rb:566:10:566:13 | ...[...] | provenance | | +| array_flow.rb:566:10:566:10 | c [element] | array_flow.rb:566:10:566:13 | ...[...] | provenance | | +| array_flow.rb:570:5:570:5 | a [element 2] | array_flow.rb:571:9:571:9 | a [element 2] | provenance | | +| array_flow.rb:570:5:570:5 | a [element 2] | array_flow.rb:576:9:576:9 | a [element 2] | provenance | | +| array_flow.rb:570:16:570:27 | call to source | array_flow.rb:570:5:570:5 | a [element 2] | provenance | | +| array_flow.rb:571:5:571:5 | b [element] | array_flow.rb:575:10:575:10 | b [element] | provenance | | +| array_flow.rb:571:9:571:9 | a [element 2] | array_flow.rb:571:9:574:7 | call to flat_map [element] | provenance | | +| array_flow.rb:571:9:571:9 | a [element 2] | array_flow.rb:571:24:571:24 | x | provenance | | +| array_flow.rb:571:9:574:7 | call to flat_map [element] | array_flow.rb:571:5:571:5 | b [element] | provenance | | +| array_flow.rb:571:24:571:24 | x | array_flow.rb:572:14:572:14 | x | provenance | | +| array_flow.rb:573:13:573:24 | call to source | array_flow.rb:571:9:574:7 | call to flat_map [element] | provenance | | +| array_flow.rb:575:10:575:10 | b [element] | array_flow.rb:575:10:575:13 | ...[...] | provenance | | +| array_flow.rb:576:5:576:5 | b [element] | array_flow.rb:580:10:580:10 | b [element] | provenance | | +| array_flow.rb:576:9:576:9 | a [element 2] | array_flow.rb:576:24:576:24 | x | provenance | | +| array_flow.rb:576:9:579:7 | call to flat_map [element] | array_flow.rb:576:5:576:5 | b [element] | provenance | | +| array_flow.rb:576:24:576:24 | x | array_flow.rb:577:14:577:14 | x | provenance | | +| array_flow.rb:578:9:578:20 | call to source | array_flow.rb:576:9:579:7 | call to flat_map [element] | provenance | | +| array_flow.rb:580:10:580:10 | b [element] | array_flow.rb:580:10:580:13 | ...[...] | provenance | | +| array_flow.rb:584:5:584:5 | a [element 2, element 1] | array_flow.rb:585:9:585:9 | a [element 2, element 1] | provenance | | +| array_flow.rb:584:20:584:29 | call to source | array_flow.rb:584:5:584:5 | a [element 2, element 1] | provenance | | +| array_flow.rb:585:5:585:5 | b [element] | array_flow.rb:586:10:586:10 | b [element] | provenance | | +| array_flow.rb:585:9:585:9 | a [element 2, element 1] | array_flow.rb:585:9:585:17 | call to flatten [element] | provenance | | +| array_flow.rb:585:9:585:17 | call to flatten [element] | array_flow.rb:585:5:585:5 | b [element] | provenance | | +| array_flow.rb:586:10:586:10 | b [element] | array_flow.rb:586:10:586:13 | ...[...] | provenance | | +| array_flow.rb:590:5:590:5 | a [element 2, element 1] | array_flow.rb:591:10:591:10 | a [element 2, element 1] | provenance | | +| array_flow.rb:590:5:590:5 | a [element 2, element 1] | array_flow.rb:592:9:592:9 | a [element 2, element 1] | provenance | | +| array_flow.rb:590:20:590:29 | call to source | array_flow.rb:590:5:590:5 | a [element 2, element 1] | provenance | | +| array_flow.rb:591:10:591:10 | a [element 2, element 1] | array_flow.rb:591:10:591:13 | ...[...] [element 1] | provenance | | +| array_flow.rb:591:10:591:13 | ...[...] [element 1] | array_flow.rb:591:10:591:16 | ...[...] | provenance | | +| array_flow.rb:592:5:592:5 | b [element, element 1] | array_flow.rb:596:10:596:10 | b [element, element 1] | provenance | | +| array_flow.rb:592:5:592:5 | b [element] | array_flow.rb:595:10:595:10 | b [element] | provenance | | +| array_flow.rb:592:9:592:9 | [post] a [element, element 1] | array_flow.rb:594:10:594:10 | a [element, element 1] | provenance | | +| array_flow.rb:592:9:592:9 | [post] a [element] | array_flow.rb:593:10:593:10 | a [element] | provenance | | +| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:9 | [post] a [element, element 1] | provenance | | +| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:9 | [post] a [element] | provenance | | +| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:18 | call to flatten! [element, element 1] | provenance | | +| array_flow.rb:592:9:592:9 | a [element 2, element 1] | array_flow.rb:592:9:592:18 | call to flatten! [element] | provenance | | +| array_flow.rb:592:9:592:18 | call to flatten! [element, element 1] | array_flow.rb:592:5:592:5 | b [element, element 1] | provenance | | +| array_flow.rb:592:9:592:18 | call to flatten! [element] | array_flow.rb:592:5:592:5 | b [element] | provenance | | +| array_flow.rb:593:10:593:10 | a [element] | array_flow.rb:593:10:593:13 | ...[...] | provenance | | +| array_flow.rb:594:10:594:10 | a [element, element 1] | array_flow.rb:594:10:594:13 | ...[...] [element 1] | provenance | | +| array_flow.rb:594:10:594:13 | ...[...] [element 1] | array_flow.rb:594:10:594:16 | ...[...] | provenance | | +| array_flow.rb:595:10:595:10 | b [element] | array_flow.rb:595:10:595:13 | ...[...] | provenance | | +| array_flow.rb:596:10:596:10 | b [element, element 1] | array_flow.rb:596:10:596:13 | ...[...] [element 1] | provenance | | +| array_flow.rb:596:10:596:13 | ...[...] [element 1] | array_flow.rb:596:10:596:16 | ...[...] | provenance | | +| array_flow.rb:600:5:600:5 | a [element 3] | array_flow.rb:601:9:601:9 | a [element 3] | provenance | | +| array_flow.rb:600:5:600:5 | a [element 3] | array_flow.rb:603:9:603:9 | a [element 3] | provenance | | +| array_flow.rb:600:19:600:30 | call to source | array_flow.rb:600:5:600:5 | a [element 3] | provenance | | +| array_flow.rb:601:5:601:5 | b [element] | array_flow.rb:602:10:602:10 | b [element] | provenance | | +| array_flow.rb:601:9:601:9 | a [element 3] | array_flow.rb:601:9:601:20 | call to grep [element] | provenance | | +| array_flow.rb:601:9:601:20 | call to grep [element] | array_flow.rb:601:5:601:5 | b [element] | provenance | | +| array_flow.rb:602:10:602:10 | b [element] | array_flow.rb:602:10:602:13 | ...[...] | provenance | | +| array_flow.rb:603:5:603:5 | b [element] | array_flow.rb:607:10:607:10 | b [element] | provenance | | +| array_flow.rb:603:9:603:9 | a [element 3] | array_flow.rb:603:26:603:26 | x | provenance | | +| array_flow.rb:603:9:606:7 | call to grep [element] | array_flow.rb:603:5:603:5 | b [element] | provenance | | +| array_flow.rb:603:26:603:26 | x | array_flow.rb:604:14:604:14 | x | provenance | | +| array_flow.rb:605:9:605:20 | call to source | array_flow.rb:603:9:606:7 | call to grep [element] | provenance | | +| array_flow.rb:607:10:607:10 | b [element] | array_flow.rb:607:10:607:13 | ...[...] | provenance | | +| array_flow.rb:611:5:611:5 | a [element 3] | array_flow.rb:612:9:612:9 | a [element 3] | provenance | | +| array_flow.rb:611:5:611:5 | a [element 3] | array_flow.rb:614:9:614:9 | a [element 3] | provenance | | +| array_flow.rb:611:19:611:30 | call to source | array_flow.rb:611:5:611:5 | a [element 3] | provenance | | +| array_flow.rb:612:5:612:5 | b [element] | array_flow.rb:613:10:613:10 | b [element] | provenance | | +| array_flow.rb:612:9:612:9 | a [element 3] | array_flow.rb:612:9:612:21 | call to grep_v [element] | provenance | | +| array_flow.rb:612:9:612:21 | call to grep_v [element] | array_flow.rb:612:5:612:5 | b [element] | provenance | | +| array_flow.rb:613:10:613:10 | b [element] | array_flow.rb:613:10:613:13 | ...[...] | provenance | | +| array_flow.rb:614:5:614:5 | b [element] | array_flow.rb:618:10:618:10 | b [element] | provenance | | +| array_flow.rb:614:9:614:9 | a [element 3] | array_flow.rb:614:27:614:27 | x | provenance | | +| array_flow.rb:614:9:617:7 | call to grep_v [element] | array_flow.rb:614:5:614:5 | b [element] | provenance | | +| array_flow.rb:614:27:614:27 | x | array_flow.rb:615:14:615:14 | x | provenance | | +| array_flow.rb:616:9:616:20 | call to source | array_flow.rb:614:9:617:7 | call to grep_v [element] | provenance | | +| array_flow.rb:618:10:618:10 | b [element] | array_flow.rb:618:10:618:13 | ...[...] | provenance | | +| array_flow.rb:622:5:622:5 | a [element 3] | array_flow.rb:623:9:623:9 | a [element 3] | provenance | | +| array_flow.rb:622:19:622:30 | call to source | array_flow.rb:622:5:622:5 | a [element 3] | provenance | | +| array_flow.rb:623:9:623:9 | a [element 3] | array_flow.rb:623:24:623:24 | x | provenance | | +| array_flow.rb:623:24:623:24 | x | array_flow.rb:624:14:624:14 | x | provenance | | +| array_flow.rb:631:5:631:5 | a [element 3] | array_flow.rb:632:5:632:5 | a [element 3] | provenance | | +| array_flow.rb:631:19:631:28 | call to source | array_flow.rb:631:5:631:5 | a [element 3] | provenance | | +| array_flow.rb:632:5:632:5 | a [element 3] | array_flow.rb:632:17:632:17 | x | provenance | | +| array_flow.rb:632:17:632:17 | x | array_flow.rb:633:14:633:14 | x | provenance | | +| array_flow.rb:638:5:638:5 | a [element 0] | array_flow.rb:639:9:639:9 | a [element 0] | provenance | | +| array_flow.rb:638:5:638:5 | a [element 0] | array_flow.rb:645:9:645:9 | a [element 0] | provenance | | +| array_flow.rb:638:5:638:5 | a [element 2] | array_flow.rb:639:9:639:9 | a [element 2] | provenance | | +| array_flow.rb:638:5:638:5 | a [element 2] | array_flow.rb:645:9:645:9 | a [element 2] | provenance | | +| array_flow.rb:638:10:638:21 | call to source | array_flow.rb:638:5:638:5 | a [element 0] | provenance | | +| array_flow.rb:638:27:638:38 | call to source | array_flow.rb:638:5:638:5 | a [element 2] | provenance | | +| array_flow.rb:639:5:639:5 | b | array_flow.rb:644:10:644:10 | b | provenance | | +| array_flow.rb:639:9:639:9 | a [element 0] | array_flow.rb:639:22:639:22 | x | provenance | | +| array_flow.rb:639:9:639:9 | a [element 2] | array_flow.rb:639:25:639:25 | y | provenance | | +| array_flow.rb:639:9:643:7 | call to inject | array_flow.rb:639:5:639:5 | b | provenance | | +| array_flow.rb:639:22:639:22 | x | array_flow.rb:640:14:640:14 | x | provenance | | +| array_flow.rb:639:25:639:25 | y | array_flow.rb:641:14:641:14 | y | provenance | | +| array_flow.rb:642:9:642:19 | call to source | array_flow.rb:639:9:643:7 | call to inject | provenance | | +| array_flow.rb:645:5:645:5 | c | array_flow.rb:650:10:650:10 | c | provenance | | +| array_flow.rb:645:9:645:9 | a [element 0] | array_flow.rb:645:28:645:28 | y | provenance | | +| array_flow.rb:645:9:645:9 | a [element 2] | array_flow.rb:645:28:645:28 | y | provenance | | +| array_flow.rb:645:9:649:7 | call to inject | array_flow.rb:645:5:645:5 | c | provenance | | +| array_flow.rb:645:28:645:28 | y | array_flow.rb:647:14:647:14 | y | provenance | | +| array_flow.rb:648:9:648:19 | call to source | array_flow.rb:645:9:649:7 | call to inject | provenance | | +| array_flow.rb:655:5:655:5 | a [element 2] | array_flow.rb:656:9:656:9 | a [element 2] | provenance | | +| array_flow.rb:655:16:655:27 | call to source | array_flow.rb:655:5:655:5 | a [element 2] | provenance | | +| array_flow.rb:656:5:656:5 | b [element 1] | array_flow.rb:663:10:663:10 | b [element 1] | provenance | | +| array_flow.rb:656:5:656:5 | b [element 2] | array_flow.rb:664:10:664:10 | b [element 2] | provenance | | +| array_flow.rb:656:5:656:5 | b [element 4] | array_flow.rb:666:10:666:10 | b [element 4] | provenance | | +| array_flow.rb:656:9:656:9 | [post] a [element 1] | array_flow.rb:658:10:658:10 | a [element 1] | provenance | | +| array_flow.rb:656:9:656:9 | [post] a [element 2] | array_flow.rb:659:10:659:10 | a [element 2] | provenance | | +| array_flow.rb:656:9:656:9 | [post] a [element 4] | array_flow.rb:661:10:661:10 | a [element 4] | provenance | | +| array_flow.rb:656:9:656:9 | a [element 2] | array_flow.rb:656:9:656:9 | [post] a [element 4] | provenance | | +| array_flow.rb:656:9:656:9 | a [element 2] | array_flow.rb:656:9:656:47 | call to insert [element 4] | provenance | | +| array_flow.rb:656:9:656:47 | call to insert [element 1] | array_flow.rb:656:5:656:5 | b [element 1] | provenance | | +| array_flow.rb:656:9:656:47 | call to insert [element 2] | array_flow.rb:656:5:656:5 | b [element 2] | provenance | | +| array_flow.rb:656:9:656:47 | call to insert [element 4] | array_flow.rb:656:5:656:5 | b [element 4] | provenance | | +| array_flow.rb:656:21:656:32 | call to source | array_flow.rb:656:9:656:9 | [post] a [element 1] | provenance | | +| array_flow.rb:656:21:656:32 | call to source | array_flow.rb:656:9:656:47 | call to insert [element 1] | provenance | | +| array_flow.rb:656:35:656:46 | call to source | array_flow.rb:656:9:656:9 | [post] a [element 2] | provenance | | +| array_flow.rb:656:35:656:46 | call to source | array_flow.rb:656:9:656:47 | call to insert [element 2] | provenance | | +| array_flow.rb:658:10:658:10 | a [element 1] | array_flow.rb:658:10:658:13 | ...[...] | provenance | | +| array_flow.rb:659:10:659:10 | a [element 2] | array_flow.rb:659:10:659:13 | ...[...] | provenance | | +| array_flow.rb:661:10:661:10 | a [element 4] | array_flow.rb:661:10:661:13 | ...[...] | provenance | | +| array_flow.rb:663:10:663:10 | b [element 1] | array_flow.rb:663:10:663:13 | ...[...] | provenance | | +| array_flow.rb:664:10:664:10 | b [element 2] | array_flow.rb:664:10:664:13 | ...[...] | provenance | | +| array_flow.rb:666:10:666:10 | b [element 4] | array_flow.rb:666:10:666:13 | ...[...] | provenance | | +| array_flow.rb:669:5:669:5 | c [element 2] | array_flow.rb:670:9:670:9 | c [element 2] | provenance | | +| array_flow.rb:669:16:669:27 | call to source | array_flow.rb:669:5:669:5 | c [element 2] | provenance | | +| array_flow.rb:670:5:670:5 | d [element] | array_flow.rb:672:10:672:10 | d [element] | provenance | | +| array_flow.rb:670:9:670:9 | [post] c [element] | array_flow.rb:671:10:671:10 | c [element] | provenance | | +| array_flow.rb:670:9:670:9 | c [element 2] | array_flow.rb:670:9:670:9 | [post] c [element] | provenance | | +| array_flow.rb:670:9:670:9 | c [element 2] | array_flow.rb:670:9:670:47 | call to insert [element] | provenance | | +| array_flow.rb:670:9:670:47 | call to insert [element] | array_flow.rb:670:5:670:5 | d [element] | provenance | | +| array_flow.rb:670:21:670:32 | call to source | array_flow.rb:670:9:670:9 | [post] c [element] | provenance | | +| array_flow.rb:670:21:670:32 | call to source | array_flow.rb:670:9:670:47 | call to insert [element] | provenance | | +| array_flow.rb:670:35:670:46 | call to source | array_flow.rb:670:9:670:9 | [post] c [element] | provenance | | +| array_flow.rb:670:35:670:46 | call to source | array_flow.rb:670:9:670:47 | call to insert [element] | provenance | | +| array_flow.rb:671:10:671:10 | c [element] | array_flow.rb:671:10:671:13 | ...[...] | provenance | | +| array_flow.rb:672:10:672:10 | d [element] | array_flow.rb:672:10:672:13 | ...[...] | provenance | | +| array_flow.rb:683:5:683:5 | a [element 2] | array_flow.rb:684:9:684:9 | a [element 2] | provenance | | +| array_flow.rb:683:16:683:27 | call to source | array_flow.rb:683:5:683:5 | a [element 2] | provenance | | +| array_flow.rb:684:5:684:5 | b [element] | array_flow.rb:685:10:685:10 | b [element] | provenance | | +| array_flow.rb:684:9:684:9 | a [element 2] | array_flow.rb:684:9:684:60 | call to intersection [element] | provenance | | +| array_flow.rb:684:9:684:60 | call to intersection [element] | array_flow.rb:684:5:684:5 | b [element] | provenance | | +| array_flow.rb:684:31:684:42 | call to source | array_flow.rb:684:9:684:60 | call to intersection [element] | provenance | | +| array_flow.rb:684:47:684:58 | call to source | array_flow.rb:684:9:684:60 | call to intersection [element] | provenance | | +| array_flow.rb:685:10:685:10 | b [element] | array_flow.rb:685:10:685:13 | ...[...] | provenance | | +| array_flow.rb:689:5:689:5 | a [element 2] | array_flow.rb:690:9:690:9 | a [element 2] | provenance | | +| array_flow.rb:689:16:689:25 | call to source | array_flow.rb:689:5:689:5 | a [element 2] | provenance | | +| array_flow.rb:690:5:690:5 | b [element] | array_flow.rb:695:10:695:10 | b [element] | provenance | | +| array_flow.rb:690:9:690:9 | [post] a [element] | array_flow.rb:694:10:694:10 | a [element] | provenance | | +| array_flow.rb:690:9:690:9 | a [element 2] | array_flow.rb:690:9:690:9 | [post] a [element] | provenance | | +| array_flow.rb:690:9:690:9 | a [element 2] | array_flow.rb:690:9:693:7 | call to keep_if [element] | provenance | | +| array_flow.rb:690:9:690:9 | a [element 2] | array_flow.rb:690:23:690:23 | x | provenance | | +| array_flow.rb:690:9:693:7 | call to keep_if [element] | array_flow.rb:690:5:690:5 | b [element] | provenance | | +| array_flow.rb:690:23:690:23 | x | array_flow.rb:691:14:691:14 | x | provenance | | +| array_flow.rb:694:10:694:10 | a [element] | array_flow.rb:694:10:694:13 | ...[...] | provenance | | +| array_flow.rb:695:10:695:10 | b [element] | array_flow.rb:695:10:695:13 | ...[...] | provenance | | +| array_flow.rb:699:5:699:5 | a [element 2] | array_flow.rb:701:10:701:10 | a [element 2] | provenance | | +| array_flow.rb:699:5:699:5 | a [element 2] | array_flow.rb:702:9:702:9 | a [element 2] | provenance | | +| array_flow.rb:699:16:699:27 | call to source | array_flow.rb:699:5:699:5 | a [element 2] | provenance | | +| array_flow.rb:700:5:700:5 | [post] a [element] | array_flow.rb:701:10:701:10 | a [element] | provenance | | +| array_flow.rb:700:5:700:5 | [post] a [element] | array_flow.rb:702:9:702:9 | a [element] | provenance | | +| array_flow.rb:700:12:700:23 | call to source | array_flow.rb:700:5:700:5 | [post] a [element] | provenance | | +| array_flow.rb:701:10:701:10 | a [element 2] | array_flow.rb:701:10:701:15 | call to last | provenance | | +| array_flow.rb:701:10:701:10 | a [element] | array_flow.rb:701:10:701:15 | call to last | provenance | | +| array_flow.rb:702:5:702:5 | b [element] | array_flow.rb:703:10:703:10 | b [element] | provenance | | +| array_flow.rb:702:5:702:5 | b [element] | array_flow.rb:704:10:704:10 | b [element] | provenance | | +| array_flow.rb:702:9:702:9 | a [element 2] | array_flow.rb:702:9:702:17 | call to last [element] | provenance | | +| array_flow.rb:702:9:702:9 | a [element] | array_flow.rb:702:9:702:17 | call to last [element] | provenance | | +| array_flow.rb:702:9:702:17 | call to last [element] | array_flow.rb:702:5:702:5 | b [element] | provenance | | +| array_flow.rb:703:10:703:10 | b [element] | array_flow.rb:703:10:703:13 | ...[...] | provenance | | +| array_flow.rb:704:10:704:10 | b [element] | array_flow.rb:704:10:704:13 | ...[...] | provenance | | +| array_flow.rb:708:5:708:5 | a [element 2] | array_flow.rb:709:9:709:9 | a [element 2] | provenance | | +| array_flow.rb:708:16:708:27 | call to source | array_flow.rb:708:5:708:5 | a [element 2] | provenance | | +| array_flow.rb:709:5:709:5 | b [element] | array_flow.rb:713:10:713:10 | b [element] | provenance | | +| array_flow.rb:709:9:709:9 | a [element 2] | array_flow.rb:709:19:709:19 | x | provenance | | +| array_flow.rb:709:9:712:7 | call to map [element] | array_flow.rb:709:5:709:5 | b [element] | provenance | | +| array_flow.rb:709:19:709:19 | x | array_flow.rb:710:14:710:14 | x | provenance | | +| array_flow.rb:711:9:711:19 | call to source | array_flow.rb:709:9:712:7 | call to map [element] | provenance | | +| array_flow.rb:713:10:713:10 | b [element] | array_flow.rb:713:10:713:13 | ...[...] | provenance | | +| array_flow.rb:717:5:717:5 | a [element 2] | array_flow.rb:718:9:718:9 | a [element 2] | provenance | | +| array_flow.rb:717:16:717:27 | call to source | array_flow.rb:717:5:717:5 | a [element 2] | provenance | | +| array_flow.rb:718:5:718:5 | b [element] | array_flow.rb:722:10:722:10 | b [element] | provenance | | +| array_flow.rb:718:9:718:9 | a [element 2] | array_flow.rb:718:20:718:20 | x | provenance | | +| array_flow.rb:718:9:721:7 | call to map! [element] | array_flow.rb:718:5:718:5 | b [element] | provenance | | +| array_flow.rb:718:20:718:20 | x | array_flow.rb:719:14:719:14 | x | provenance | | +| array_flow.rb:720:9:720:19 | call to source | array_flow.rb:718:9:721:7 | call to map! [element] | provenance | | +| array_flow.rb:722:10:722:10 | b [element] | array_flow.rb:722:10:722:13 | ...[...] | provenance | | +| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:729:9:729:9 | a [element 2] | provenance | | +| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:733:9:733:9 | a [element 2] | provenance | | +| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:737:9:737:9 | a [element 2] | provenance | | +| array_flow.rb:726:5:726:5 | a [element 2] | array_flow.rb:745:9:745:9 | a [element 2] | provenance | | +| array_flow.rb:726:16:726:25 | call to source | array_flow.rb:726:5:726:5 | a [element 2] | provenance | | +| array_flow.rb:729:5:729:5 | b | array_flow.rb:730:10:730:10 | b | provenance | | +| array_flow.rb:729:9:729:9 | a [element 2] | array_flow.rb:729:9:729:13 | call to max | provenance | | +| array_flow.rb:729:9:729:13 | call to max | array_flow.rb:729:5:729:5 | b | provenance | | +| array_flow.rb:733:5:733:5 | c [element] | array_flow.rb:734:10:734:10 | c [element] | provenance | | +| array_flow.rb:733:9:733:9 | a [element 2] | array_flow.rb:733:9:733:16 | call to max [element] | provenance | | +| array_flow.rb:733:9:733:16 | call to max [element] | array_flow.rb:733:5:733:5 | c [element] | provenance | | +| array_flow.rb:734:10:734:10 | c [element] | array_flow.rb:734:10:734:13 | ...[...] | provenance | | +| array_flow.rb:737:5:737:5 | d | array_flow.rb:742:10:742:10 | d | provenance | | +| array_flow.rb:737:9:737:9 | a [element 2] | array_flow.rb:737:9:741:7 | call to max | provenance | | +| array_flow.rb:737:9:737:9 | a [element 2] | array_flow.rb:737:19:737:19 | x | provenance | | +| array_flow.rb:737:9:737:9 | a [element 2] | array_flow.rb:737:22:737:22 | y | provenance | | +| array_flow.rb:737:9:741:7 | call to max | array_flow.rb:737:5:737:5 | d | provenance | | +| array_flow.rb:737:19:737:19 | x | array_flow.rb:738:14:738:14 | x | provenance | | +| array_flow.rb:737:22:737:22 | y | array_flow.rb:739:14:739:14 | y | provenance | | +| array_flow.rb:745:5:745:5 | e [element] | array_flow.rb:750:10:750:10 | e [element] | provenance | | +| array_flow.rb:745:9:745:9 | a [element 2] | array_flow.rb:745:9:749:7 | call to max [element] | provenance | | +| array_flow.rb:745:9:745:9 | a [element 2] | array_flow.rb:745:22:745:22 | x | provenance | | +| array_flow.rb:745:9:745:9 | a [element 2] | array_flow.rb:745:25:745:25 | y | provenance | | +| array_flow.rb:745:9:749:7 | call to max [element] | array_flow.rb:745:5:745:5 | e [element] | provenance | | +| array_flow.rb:745:22:745:22 | x | array_flow.rb:746:14:746:14 | x | provenance | | +| array_flow.rb:745:25:745:25 | y | array_flow.rb:747:14:747:14 | y | provenance | | +| array_flow.rb:750:10:750:10 | e [element] | array_flow.rb:750:10:750:13 | ...[...] | provenance | | +| array_flow.rb:754:5:754:5 | a [element 2] | array_flow.rb:757:9:757:9 | a [element 2] | provenance | | +| array_flow.rb:754:5:754:5 | a [element 2] | array_flow.rb:764:9:764:9 | a [element 2] | provenance | | +| array_flow.rb:754:16:754:25 | call to source | array_flow.rb:754:5:754:5 | a [element 2] | provenance | | +| array_flow.rb:757:5:757:5 | b | array_flow.rb:761:10:761:10 | b | provenance | | +| array_flow.rb:757:9:757:9 | a [element 2] | array_flow.rb:757:9:760:7 | call to max_by | provenance | | +| array_flow.rb:757:9:757:9 | a [element 2] | array_flow.rb:757:22:757:22 | x | provenance | | +| array_flow.rb:757:9:760:7 | call to max_by | array_flow.rb:757:5:757:5 | b | provenance | | +| array_flow.rb:757:22:757:22 | x | array_flow.rb:758:14:758:14 | x | provenance | | +| array_flow.rb:764:5:764:5 | c [element] | array_flow.rb:768:10:768:10 | c [element] | provenance | | +| array_flow.rb:764:9:764:9 | a [element 2] | array_flow.rb:764:9:767:7 | call to max_by [element] | provenance | | +| array_flow.rb:764:9:764:9 | a [element 2] | array_flow.rb:764:25:764:25 | x | provenance | | +| array_flow.rb:764:9:767:7 | call to max_by [element] | array_flow.rb:764:5:764:5 | c [element] | provenance | | +| array_flow.rb:764:25:764:25 | x | array_flow.rb:765:14:765:14 | x | provenance | | +| array_flow.rb:768:10:768:10 | c [element] | array_flow.rb:768:10:768:13 | ...[...] | provenance | | +| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:775:9:775:9 | a [element 2] | provenance | | +| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:779:9:779:9 | a [element 2] | provenance | | +| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:783:9:783:9 | a [element 2] | provenance | | +| array_flow.rb:772:5:772:5 | a [element 2] | array_flow.rb:791:9:791:9 | a [element 2] | provenance | | +| array_flow.rb:772:16:772:25 | call to source | array_flow.rb:772:5:772:5 | a [element 2] | provenance | | +| array_flow.rb:775:5:775:5 | b | array_flow.rb:776:10:776:10 | b | provenance | | +| array_flow.rb:775:9:775:9 | a [element 2] | array_flow.rb:775:9:775:13 | call to min | provenance | | +| array_flow.rb:775:9:775:13 | call to min | array_flow.rb:775:5:775:5 | b | provenance | | +| array_flow.rb:779:5:779:5 | c [element] | array_flow.rb:780:10:780:10 | c [element] | provenance | | +| array_flow.rb:779:9:779:9 | a [element 2] | array_flow.rb:779:9:779:16 | call to min [element] | provenance | | +| array_flow.rb:779:9:779:16 | call to min [element] | array_flow.rb:779:5:779:5 | c [element] | provenance | | +| array_flow.rb:780:10:780:10 | c [element] | array_flow.rb:780:10:780:13 | ...[...] | provenance | | +| array_flow.rb:783:5:783:5 | d | array_flow.rb:788:10:788:10 | d | provenance | | +| array_flow.rb:783:9:783:9 | a [element 2] | array_flow.rb:783:9:787:7 | call to min | provenance | | +| array_flow.rb:783:9:783:9 | a [element 2] | array_flow.rb:783:19:783:19 | x | provenance | | +| array_flow.rb:783:9:783:9 | a [element 2] | array_flow.rb:783:22:783:22 | y | provenance | | +| array_flow.rb:783:9:787:7 | call to min | array_flow.rb:783:5:783:5 | d | provenance | | +| array_flow.rb:783:19:783:19 | x | array_flow.rb:784:14:784:14 | x | provenance | | +| array_flow.rb:783:22:783:22 | y | array_flow.rb:785:14:785:14 | y | provenance | | +| array_flow.rb:791:5:791:5 | e [element] | array_flow.rb:796:10:796:10 | e [element] | provenance | | +| array_flow.rb:791:9:791:9 | a [element 2] | array_flow.rb:791:9:795:7 | call to min [element] | provenance | | +| array_flow.rb:791:9:791:9 | a [element 2] | array_flow.rb:791:22:791:22 | x | provenance | | +| array_flow.rb:791:9:791:9 | a [element 2] | array_flow.rb:791:25:791:25 | y | provenance | | +| array_flow.rb:791:9:795:7 | call to min [element] | array_flow.rb:791:5:791:5 | e [element] | provenance | | +| array_flow.rb:791:22:791:22 | x | array_flow.rb:792:14:792:14 | x | provenance | | +| array_flow.rb:791:25:791:25 | y | array_flow.rb:793:14:793:14 | y | provenance | | +| array_flow.rb:796:10:796:10 | e [element] | array_flow.rb:796:10:796:13 | ...[...] | provenance | | +| array_flow.rb:800:5:800:5 | a [element 2] | array_flow.rb:803:9:803:9 | a [element 2] | provenance | | +| array_flow.rb:800:5:800:5 | a [element 2] | array_flow.rb:810:9:810:9 | a [element 2] | provenance | | +| array_flow.rb:800:16:800:25 | call to source | array_flow.rb:800:5:800:5 | a [element 2] | provenance | | +| array_flow.rb:803:5:803:5 | b | array_flow.rb:807:10:807:10 | b | provenance | | +| array_flow.rb:803:9:803:9 | a [element 2] | array_flow.rb:803:9:806:7 | call to min_by | provenance | | +| array_flow.rb:803:9:803:9 | a [element 2] | array_flow.rb:803:22:803:22 | x | provenance | | +| array_flow.rb:803:9:806:7 | call to min_by | array_flow.rb:803:5:803:5 | b | provenance | | +| array_flow.rb:803:22:803:22 | x | array_flow.rb:804:14:804:14 | x | provenance | | +| array_flow.rb:810:5:810:5 | c [element] | array_flow.rb:814:10:814:10 | c [element] | provenance | | +| array_flow.rb:810:9:810:9 | a [element 2] | array_flow.rb:810:9:813:7 | call to min_by [element] | provenance | | +| array_flow.rb:810:9:810:9 | a [element 2] | array_flow.rb:810:25:810:25 | x | provenance | | +| array_flow.rb:810:9:813:7 | call to min_by [element] | array_flow.rb:810:5:810:5 | c [element] | provenance | | +| array_flow.rb:810:25:810:25 | x | array_flow.rb:811:14:811:14 | x | provenance | | +| array_flow.rb:814:10:814:10 | c [element] | array_flow.rb:814:10:814:13 | ...[...] | provenance | | +| array_flow.rb:818:5:818:5 | a [element 2] | array_flow.rb:820:9:820:9 | a [element 2] | provenance | | +| array_flow.rb:818:5:818:5 | a [element 2] | array_flow.rb:824:9:824:9 | a [element 2] | provenance | | +| array_flow.rb:818:16:818:25 | call to source | array_flow.rb:818:5:818:5 | a [element 2] | provenance | | +| array_flow.rb:820:5:820:5 | b [element] | array_flow.rb:821:10:821:10 | b [element] | provenance | | +| array_flow.rb:820:5:820:5 | b [element] | array_flow.rb:822:10:822:10 | b [element] | provenance | | +| array_flow.rb:820:9:820:9 | a [element 2] | array_flow.rb:820:9:820:16 | call to minmax [element] | provenance | | +| array_flow.rb:820:9:820:16 | call to minmax [element] | array_flow.rb:820:5:820:5 | b [element] | provenance | | +| array_flow.rb:821:10:821:10 | b [element] | array_flow.rb:821:10:821:13 | ...[...] | provenance | | +| array_flow.rb:822:10:822:10 | b [element] | array_flow.rb:822:10:822:13 | ...[...] | provenance | | +| array_flow.rb:824:5:824:5 | c [element] | array_flow.rb:829:10:829:10 | c [element] | provenance | | +| array_flow.rb:824:5:824:5 | c [element] | array_flow.rb:830:10:830:10 | c [element] | provenance | | +| array_flow.rb:824:9:824:9 | a [element 2] | array_flow.rb:824:9:828:7 | call to minmax [element] | provenance | | +| array_flow.rb:824:9:824:9 | a [element 2] | array_flow.rb:824:22:824:22 | x | provenance | | +| array_flow.rb:824:9:824:9 | a [element 2] | array_flow.rb:824:25:824:25 | y | provenance | | +| array_flow.rb:824:9:828:7 | call to minmax [element] | array_flow.rb:824:5:824:5 | c [element] | provenance | | +| array_flow.rb:824:22:824:22 | x | array_flow.rb:825:14:825:14 | x | provenance | | +| array_flow.rb:824:25:824:25 | y | array_flow.rb:826:14:826:14 | y | provenance | | +| array_flow.rb:829:10:829:10 | c [element] | array_flow.rb:829:10:829:13 | ...[...] | provenance | | +| array_flow.rb:830:10:830:10 | c [element] | array_flow.rb:830:10:830:13 | ...[...] | provenance | | +| array_flow.rb:834:5:834:5 | a [element 2] | array_flow.rb:835:9:835:9 | a [element 2] | provenance | | +| array_flow.rb:834:16:834:25 | call to source | array_flow.rb:834:5:834:5 | a [element 2] | provenance | | +| array_flow.rb:835:5:835:5 | b [element] | array_flow.rb:839:10:839:10 | b [element] | provenance | | +| array_flow.rb:835:5:835:5 | b [element] | array_flow.rb:840:10:840:10 | b [element] | provenance | | +| array_flow.rb:835:9:835:9 | a [element 2] | array_flow.rb:835:9:838:7 | call to minmax_by [element] | provenance | | +| array_flow.rb:835:9:835:9 | a [element 2] | array_flow.rb:835:25:835:25 | x | provenance | | +| array_flow.rb:835:9:838:7 | call to minmax_by [element] | array_flow.rb:835:5:835:5 | b [element] | provenance | | +| array_flow.rb:835:25:835:25 | x | array_flow.rb:836:14:836:14 | x | provenance | | +| array_flow.rb:839:10:839:10 | b [element] | array_flow.rb:839:10:839:13 | ...[...] | provenance | | +| array_flow.rb:840:10:840:10 | b [element] | array_flow.rb:840:10:840:13 | ...[...] | provenance | | +| array_flow.rb:844:5:844:5 | a [element 2] | array_flow.rb:845:5:845:5 | a [element 2] | provenance | | +| array_flow.rb:844:16:844:25 | call to source | array_flow.rb:844:5:844:5 | a [element 2] | provenance | | +| array_flow.rb:845:5:845:5 | a [element 2] | array_flow.rb:845:17:845:17 | x | provenance | | +| array_flow.rb:845:17:845:17 | x | array_flow.rb:846:14:846:14 | x | provenance | | +| array_flow.rb:853:5:853:5 | a [element 2] | array_flow.rb:854:5:854:5 | a [element 2] | provenance | | +| array_flow.rb:853:16:853:25 | call to source | array_flow.rb:853:5:853:5 | a [element 2] | provenance | | +| array_flow.rb:854:5:854:5 | a [element 2] | array_flow.rb:854:16:854:16 | x | provenance | | +| array_flow.rb:854:16:854:16 | x | array_flow.rb:855:14:855:14 | x | provenance | | +| array_flow.rb:866:5:866:5 | a [element 2] | array_flow.rb:867:9:867:9 | a [element 2] | provenance | | +| array_flow.rb:866:16:866:25 | call to source | array_flow.rb:866:5:866:5 | a [element 2] | provenance | | +| array_flow.rb:867:5:867:5 | b [element, element] | array_flow.rb:871:10:871:10 | b [element, element] | provenance | | +| array_flow.rb:867:5:867:5 | b [element, element] | array_flow.rb:872:10:872:10 | b [element, element] | provenance | | +| array_flow.rb:867:9:867:9 | a [element 2] | array_flow.rb:867:9:870:7 | call to partition [element, element] | provenance | | +| array_flow.rb:867:9:867:9 | a [element 2] | array_flow.rb:867:25:867:25 | x | provenance | | +| array_flow.rb:867:9:870:7 | call to partition [element, element] | array_flow.rb:867:5:867:5 | b [element, element] | provenance | | +| array_flow.rb:867:25:867:25 | x | array_flow.rb:868:14:868:14 | x | provenance | | +| array_flow.rb:871:10:871:10 | b [element, element] | array_flow.rb:871:10:871:13 | ...[...] [element] | provenance | | +| array_flow.rb:871:10:871:13 | ...[...] [element] | array_flow.rb:871:10:871:16 | ...[...] | provenance | | +| array_flow.rb:872:10:872:10 | b [element, element] | array_flow.rb:872:10:872:13 | ...[...] [element] | provenance | | +| array_flow.rb:872:10:872:13 | ...[...] [element] | array_flow.rb:872:10:872:16 | ...[...] | provenance | | +| array_flow.rb:876:5:876:5 | a [element 2] | array_flow.rb:878:9:878:9 | a [element 2] | provenance | | +| array_flow.rb:876:5:876:5 | a [element 2] | array_flow.rb:886:9:886:9 | a [element 2] | provenance | | +| array_flow.rb:876:5:876:5 | a [element 2] | array_flow.rb:893:9:893:9 | a [element 2] | provenance | | +| array_flow.rb:876:16:876:25 | call to source | array_flow.rb:876:5:876:5 | a [element 2] | provenance | | +| array_flow.rb:878:5:878:5 | b [element 2] | array_flow.rb:884:10:884:10 | b [element 2] | provenance | | +| array_flow.rb:878:9:878:9 | a [element 2] | array_flow.rb:878:9:882:7 | call to permutation [element 2] | provenance | | +| array_flow.rb:878:9:878:9 | a [element 2] | array_flow.rb:878:27:878:27 | x [element] | provenance | | +| array_flow.rb:878:9:882:7 | call to permutation [element 2] | array_flow.rb:878:5:878:5 | b [element 2] | provenance | | +| array_flow.rb:878:27:878:27 | x [element] | array_flow.rb:879:14:879:14 | x [element] | provenance | | +| array_flow.rb:878:27:878:27 | x [element] | array_flow.rb:880:14:880:14 | x [element] | provenance | | +| array_flow.rb:878:27:878:27 | x [element] | array_flow.rb:881:14:881:14 | x [element] | provenance | | +| array_flow.rb:879:14:879:14 | x [element] | array_flow.rb:879:14:879:17 | ...[...] | provenance | | +| array_flow.rb:880:14:880:14 | x [element] | array_flow.rb:880:14:880:17 | ...[...] | provenance | | +| array_flow.rb:881:14:881:14 | x [element] | array_flow.rb:881:14:881:17 | ...[...] | provenance | | +| array_flow.rb:884:10:884:10 | b [element 2] | array_flow.rb:884:10:884:13 | ...[...] | provenance | | +| array_flow.rb:886:5:886:5 | c [element 2] | array_flow.rb:891:10:891:10 | c [element 2] | provenance | | +| array_flow.rb:886:5:886:5 | c [element 2] | array_flow.rb:898:10:898:10 | c [element 2] | provenance | | +| array_flow.rb:886:9:886:9 | a [element 2] | array_flow.rb:886:9:889:7 | call to permutation [element 2] | provenance | | +| array_flow.rb:886:9:886:9 | a [element 2] | array_flow.rb:886:30:886:30 | x [element] | provenance | | +| array_flow.rb:886:9:889:7 | call to permutation [element 2] | array_flow.rb:886:5:886:5 | c [element 2] | provenance | | +| array_flow.rb:886:30:886:30 | x [element] | array_flow.rb:887:14:887:14 | x [element] | provenance | | +| array_flow.rb:886:30:886:30 | x [element] | array_flow.rb:888:14:888:14 | x [element] | provenance | | +| array_flow.rb:887:14:887:14 | x [element] | array_flow.rb:887:14:887:17 | ...[...] | provenance | | +| array_flow.rb:888:14:888:14 | x [element] | array_flow.rb:888:14:888:17 | ...[...] | provenance | | +| array_flow.rb:891:10:891:10 | c [element 2] | array_flow.rb:891:10:891:13 | ...[...] | provenance | | +| array_flow.rb:893:9:893:9 | a [element 2] | array_flow.rb:893:30:893:30 | x [element] | provenance | | +| array_flow.rb:893:30:893:30 | x [element] | array_flow.rb:894:14:894:14 | x [element] | provenance | | +| array_flow.rb:893:30:893:30 | x [element] | array_flow.rb:895:14:895:14 | x [element] | provenance | | +| array_flow.rb:894:14:894:14 | x [element] | array_flow.rb:894:14:894:17 | ...[...] | provenance | | +| array_flow.rb:895:14:895:14 | x [element] | array_flow.rb:895:14:895:17 | ...[...] | provenance | | +| array_flow.rb:898:10:898:10 | c [element 2] | array_flow.rb:898:10:898:13 | ...[...] | provenance | | +| array_flow.rb:905:5:905:5 | a [element 1] | array_flow.rb:906:9:906:9 | a [element 1] | provenance | | +| array_flow.rb:905:5:905:5 | a [element 1] | array_flow.rb:909:10:909:10 | a [element 1] | provenance | | +| array_flow.rb:905:5:905:5 | a [element 3] | array_flow.rb:906:9:906:9 | a [element 3] | provenance | | +| array_flow.rb:905:5:905:5 | a [element 3] | array_flow.rb:911:10:911:10 | a [element 3] | provenance | | +| array_flow.rb:905:13:905:24 | call to source | array_flow.rb:905:5:905:5 | a [element 1] | provenance | | +| array_flow.rb:905:30:905:41 | call to source | array_flow.rb:905:5:905:5 | a [element 3] | provenance | | +| array_flow.rb:906:5:906:5 | b | array_flow.rb:907:10:907:10 | b | provenance | | +| array_flow.rb:906:9:906:9 | a [element 1] | array_flow.rb:906:9:906:13 | call to pop | provenance | | +| array_flow.rb:906:9:906:9 | a [element 3] | array_flow.rb:906:9:906:13 | call to pop | provenance | | +| array_flow.rb:906:9:906:13 | call to pop | array_flow.rb:906:5:906:5 | b | provenance | | +| array_flow.rb:909:10:909:10 | a [element 1] | array_flow.rb:909:10:909:13 | ...[...] | provenance | | +| array_flow.rb:911:10:911:10 | a [element 3] | array_flow.rb:911:10:911:13 | ...[...] | provenance | | +| array_flow.rb:913:5:913:5 | a [element 1] | array_flow.rb:914:9:914:9 | a [element 1] | provenance | | +| array_flow.rb:913:5:913:5 | a [element 1] | array_flow.rb:918:10:918:10 | a [element 1] | provenance | | +| array_flow.rb:913:5:913:5 | a [element 3] | array_flow.rb:914:9:914:9 | a [element 3] | provenance | | +| array_flow.rb:913:5:913:5 | a [element 3] | array_flow.rb:920:10:920:10 | a [element 3] | provenance | | +| array_flow.rb:913:13:913:24 | call to source | array_flow.rb:913:5:913:5 | a [element 1] | provenance | | +| array_flow.rb:913:30:913:41 | call to source | array_flow.rb:913:5:913:5 | a [element 3] | provenance | | +| array_flow.rb:914:5:914:5 | b [element] | array_flow.rb:915:10:915:10 | b [element] | provenance | | +| array_flow.rb:914:5:914:5 | b [element] | array_flow.rb:916:10:916:10 | b [element] | provenance | | +| array_flow.rb:914:9:914:9 | a [element 1] | array_flow.rb:914:9:914:16 | call to pop [element] | provenance | | +| array_flow.rb:914:9:914:9 | a [element 3] | array_flow.rb:914:9:914:16 | call to pop [element] | provenance | | +| array_flow.rb:914:9:914:16 | call to pop [element] | array_flow.rb:914:5:914:5 | b [element] | provenance | | +| array_flow.rb:915:10:915:10 | b [element] | array_flow.rb:915:10:915:13 | ...[...] | provenance | | +| array_flow.rb:916:10:916:10 | b [element] | array_flow.rb:916:10:916:13 | ...[...] | provenance | | +| array_flow.rb:918:10:918:10 | a [element 1] | array_flow.rb:918:10:918:13 | ...[...] | provenance | | +| array_flow.rb:920:10:920:10 | a [element 3] | array_flow.rb:920:10:920:13 | ...[...] | provenance | | +| array_flow.rb:924:5:924:5 | a [element 2] | array_flow.rb:925:5:925:5 | a [element 2] | provenance | | +| array_flow.rb:924:16:924:27 | call to source | array_flow.rb:924:5:924:5 | a [element 2] | provenance | | +| array_flow.rb:925:5:925:5 | [post] a [element 2] | array_flow.rb:928:10:928:10 | a [element 2] | provenance | | +| array_flow.rb:925:5:925:5 | [post] a [element 5] | array_flow.rb:931:10:931:10 | a [element 5] | provenance | | +| array_flow.rb:925:5:925:5 | a [element 2] | array_flow.rb:925:5:925:5 | [post] a [element 5] | provenance | | +| array_flow.rb:925:21:925:32 | call to source | array_flow.rb:925:5:925:5 | [post] a [element 2] | provenance | | +| array_flow.rb:928:10:928:10 | a [element 2] | array_flow.rb:928:10:928:13 | ...[...] | provenance | | +| array_flow.rb:931:10:931:10 | a [element 5] | array_flow.rb:931:10:931:13 | ...[...] | provenance | | +| array_flow.rb:935:5:935:5 | a [element 2] | array_flow.rb:938:9:938:9 | a [element 2] | provenance | | +| array_flow.rb:935:16:935:27 | call to source | array_flow.rb:935:5:935:5 | a [element 2] | provenance | | +| array_flow.rb:936:5:936:5 | b [element 1] | array_flow.rb:938:19:938:19 | b [element 1] | provenance | | +| array_flow.rb:936:13:936:24 | call to source | array_flow.rb:936:5:936:5 | b [element 1] | provenance | | +| array_flow.rb:937:5:937:5 | c [element 0] | array_flow.rb:938:22:938:22 | c [element 0] | provenance | | +| array_flow.rb:937:10:937:21 | call to source | array_flow.rb:937:5:937:5 | c [element 0] | provenance | | +| array_flow.rb:938:5:938:5 | d [element, element] | array_flow.rb:939:10:939:10 | d [element, element] | provenance | | +| array_flow.rb:938:5:938:5 | d [element, element] | array_flow.rb:940:10:940:10 | d [element, element] | provenance | | +| array_flow.rb:938:9:938:9 | a [element 2] | array_flow.rb:938:9:938:22 | call to product [element, element] | provenance | | +| array_flow.rb:938:9:938:22 | call to product [element, element] | array_flow.rb:938:5:938:5 | d [element, element] | provenance | | +| array_flow.rb:938:19:938:19 | b [element 1] | array_flow.rb:938:9:938:22 | call to product [element, element] | provenance | | +| array_flow.rb:938:22:938:22 | c [element 0] | array_flow.rb:938:9:938:22 | call to product [element, element] | provenance | | +| array_flow.rb:939:10:939:10 | d [element, element] | array_flow.rb:939:10:939:13 | ...[...] [element] | provenance | | +| array_flow.rb:939:10:939:13 | ...[...] [element] | array_flow.rb:939:10:939:16 | ...[...] | provenance | | +| array_flow.rb:940:10:940:10 | d [element, element] | array_flow.rb:940:10:940:13 | ...[...] [element] | provenance | | +| array_flow.rb:940:10:940:13 | ...[...] [element] | array_flow.rb:940:10:940:16 | ...[...] | provenance | | +| array_flow.rb:944:5:944:5 | a [element 0] | array_flow.rb:945:9:945:9 | a [element 0] | provenance | | +| array_flow.rb:944:5:944:5 | a [element 0] | array_flow.rb:946:10:946:10 | a [element 0] | provenance | | +| array_flow.rb:944:10:944:21 | call to source | array_flow.rb:944:5:944:5 | a [element 0] | provenance | | +| array_flow.rb:945:5:945:5 | b [element 0] | array_flow.rb:948:10:948:10 | b [element 0] | provenance | | +| array_flow.rb:945:5:945:5 | b [element] | array_flow.rb:948:10:948:10 | b [element] | provenance | | +| array_flow.rb:945:5:945:5 | b [element] | array_flow.rb:949:10:949:10 | b [element] | provenance | | +| array_flow.rb:945:9:945:9 | [post] a [element] | array_flow.rb:946:10:946:10 | a [element] | provenance | | +| array_flow.rb:945:9:945:9 | [post] a [element] | array_flow.rb:947:10:947:10 | a [element] | provenance | | +| array_flow.rb:945:9:945:9 | a [element 0] | array_flow.rb:945:9:945:44 | call to append [element 0] | provenance | | +| array_flow.rb:945:9:945:44 | call to append [element 0] | array_flow.rb:945:5:945:5 | b [element 0] | provenance | | +| array_flow.rb:945:9:945:44 | call to append [element] | array_flow.rb:945:5:945:5 | b [element] | provenance | | +| array_flow.rb:945:18:945:29 | call to source | array_flow.rb:945:9:945:9 | [post] a [element] | provenance | | +| array_flow.rb:945:18:945:29 | call to source | array_flow.rb:945:9:945:44 | call to append [element] | provenance | | +| array_flow.rb:945:32:945:43 | call to source | array_flow.rb:945:9:945:9 | [post] a [element] | provenance | | +| array_flow.rb:945:32:945:43 | call to source | array_flow.rb:945:9:945:44 | call to append [element] | provenance | | +| array_flow.rb:946:10:946:10 | a [element 0] | array_flow.rb:946:10:946:13 | ...[...] | provenance | | +| array_flow.rb:946:10:946:10 | a [element] | array_flow.rb:946:10:946:13 | ...[...] | provenance | | +| array_flow.rb:947:10:947:10 | a [element] | array_flow.rb:947:10:947:13 | ...[...] | provenance | | +| array_flow.rb:948:10:948:10 | b [element 0] | array_flow.rb:948:10:948:13 | ...[...] | provenance | | +| array_flow.rb:948:10:948:10 | b [element] | array_flow.rb:948:10:948:13 | ...[...] | provenance | | +| array_flow.rb:949:10:949:10 | b [element] | array_flow.rb:949:10:949:13 | ...[...] | provenance | | +| array_flow.rb:955:5:955:5 | c [element 0] | array_flow.rb:956:16:956:16 | c [element 0] | provenance | | +| array_flow.rb:955:10:955:19 | call to source | array_flow.rb:955:5:955:5 | c [element 0] | provenance | | +| array_flow.rb:956:5:956:5 | d [element 2, element 0] | array_flow.rb:957:10:957:10 | d [element 2, element 0] | provenance | | +| array_flow.rb:956:5:956:5 | d [element 2, element 0] | array_flow.rb:958:10:958:10 | d [element 2, element 0] | provenance | | +| array_flow.rb:956:16:956:16 | c [element 0] | array_flow.rb:956:5:956:5 | d [element 2, element 0] | provenance | | +| array_flow.rb:957:10:957:10 | d [element 2, element 0] | array_flow.rb:957:10:957:22 | call to rassoc [element 0] | provenance | | +| array_flow.rb:957:10:957:22 | call to rassoc [element 0] | array_flow.rb:957:10:957:25 | ...[...] | provenance | | +| array_flow.rb:958:10:958:10 | d [element 2, element 0] | array_flow.rb:958:10:958:22 | call to rassoc [element 0] | provenance | | +| array_flow.rb:958:10:958:22 | call to rassoc [element 0] | array_flow.rb:958:10:958:25 | ...[...] | provenance | | +| array_flow.rb:962:5:962:5 | a [element 0] | array_flow.rb:963:9:963:9 | a [element 0] | provenance | | +| array_flow.rb:962:5:962:5 | a [element 0] | array_flow.rb:968:9:968:9 | a [element 0] | provenance | | +| array_flow.rb:962:5:962:5 | a [element 2] | array_flow.rb:963:9:963:9 | a [element 2] | provenance | | +| array_flow.rb:962:5:962:5 | a [element 2] | array_flow.rb:968:9:968:9 | a [element 2] | provenance | | +| array_flow.rb:962:10:962:21 | call to source | array_flow.rb:962:5:962:5 | a [element 0] | provenance | | +| array_flow.rb:962:27:962:38 | call to source | array_flow.rb:962:5:962:5 | a [element 2] | provenance | | +| array_flow.rb:963:9:963:9 | a [element 0] | array_flow.rb:963:22:963:22 | x | provenance | | +| array_flow.rb:963:9:963:9 | a [element 2] | array_flow.rb:963:25:963:25 | y | provenance | | +| array_flow.rb:963:22:963:22 | x | array_flow.rb:964:14:964:14 | x | provenance | | +| array_flow.rb:963:25:963:25 | y | array_flow.rb:965:14:965:14 | y | provenance | | +| array_flow.rb:968:9:968:9 | a [element 0] | array_flow.rb:968:28:968:28 | y | provenance | | +| array_flow.rb:968:9:968:9 | a [element 2] | array_flow.rb:968:28:968:28 | y | provenance | | +| array_flow.rb:968:28:968:28 | y | array_flow.rb:970:14:970:14 | y | provenance | | +| array_flow.rb:976:5:976:5 | a [element 2] | array_flow.rb:977:9:977:9 | a [element 2] | provenance | | +| array_flow.rb:976:16:976:25 | call to source | array_flow.rb:976:5:976:5 | a [element 2] | provenance | | +| array_flow.rb:977:5:977:5 | b [element] | array_flow.rb:981:10:981:10 | b [element] | provenance | | +| array_flow.rb:977:9:977:9 | a [element 2] | array_flow.rb:977:9:980:7 | call to reject [element] | provenance | | +| array_flow.rb:977:9:977:9 | a [element 2] | array_flow.rb:977:22:977:22 | x | provenance | | +| array_flow.rb:977:9:980:7 | call to reject [element] | array_flow.rb:977:5:977:5 | b [element] | provenance | | +| array_flow.rb:977:22:977:22 | x | array_flow.rb:978:14:978:14 | x | provenance | | +| array_flow.rb:981:10:981:10 | b [element] | array_flow.rb:981:10:981:13 | ...[...] | provenance | | +| array_flow.rb:985:5:985:5 | a [element 2] | array_flow.rb:986:9:986:9 | a [element 2] | provenance | | +| array_flow.rb:985:16:985:25 | call to source | array_flow.rb:985:5:985:5 | a [element 2] | provenance | | +| array_flow.rb:986:5:986:5 | b [element] | array_flow.rb:991:10:991:10 | b [element] | provenance | | +| array_flow.rb:986:9:986:9 | [post] a [element] | array_flow.rb:990:10:990:10 | a [element] | provenance | | +| array_flow.rb:986:9:986:9 | a [element 2] | array_flow.rb:986:9:986:9 | [post] a [element] | provenance | | +| array_flow.rb:986:9:986:9 | a [element 2] | array_flow.rb:986:9:989:7 | call to reject! [element] | provenance | | +| array_flow.rb:986:9:986:9 | a [element 2] | array_flow.rb:986:23:986:23 | x | provenance | | +| array_flow.rb:986:9:989:7 | call to reject! [element] | array_flow.rb:986:5:986:5 | b [element] | provenance | | +| array_flow.rb:986:23:986:23 | x | array_flow.rb:987:14:987:14 | x | provenance | | +| array_flow.rb:990:10:990:10 | a [element] | array_flow.rb:990:10:990:13 | ...[...] | provenance | | +| array_flow.rb:991:10:991:10 | b [element] | array_flow.rb:991:10:991:13 | ...[...] | provenance | | +| array_flow.rb:995:5:995:5 | a [element 2] | array_flow.rb:996:9:996:9 | a [element 2] | provenance | | +| array_flow.rb:995:16:995:25 | call to source | array_flow.rb:995:5:995:5 | a [element 2] | provenance | | +| array_flow.rb:996:5:996:5 | b [element 2] | array_flow.rb:1001:10:1001:10 | b [element 2] | provenance | | +| array_flow.rb:996:9:996:9 | a [element 2] | array_flow.rb:996:9:999:7 | call to repeated_combination [element 2] | provenance | | +| array_flow.rb:996:9:996:9 | a [element 2] | array_flow.rb:996:39:996:39 | x [element] | provenance | | +| array_flow.rb:996:9:999:7 | call to repeated_combination [element 2] | array_flow.rb:996:5:996:5 | b [element 2] | provenance | | +| array_flow.rb:996:39:996:39 | x [element] | array_flow.rb:997:14:997:14 | x [element] | provenance | | +| array_flow.rb:996:39:996:39 | x [element] | array_flow.rb:998:14:998:14 | x [element] | provenance | | +| array_flow.rb:997:14:997:14 | x [element] | array_flow.rb:997:14:997:17 | ...[...] | provenance | | +| array_flow.rb:998:14:998:14 | x [element] | array_flow.rb:998:14:998:17 | ...[...] | provenance | | +| array_flow.rb:1001:10:1001:10 | b [element 2] | array_flow.rb:1001:10:1001:13 | ...[...] | provenance | | +| array_flow.rb:1005:5:1005:5 | a [element 2] | array_flow.rb:1006:9:1006:9 | a [element 2] | provenance | | +| array_flow.rb:1005:16:1005:25 | call to source | array_flow.rb:1005:5:1005:5 | a [element 2] | provenance | | +| array_flow.rb:1006:5:1006:5 | b [element 2] | array_flow.rb:1011:10:1011:10 | b [element 2] | provenance | | +| array_flow.rb:1006:9:1006:9 | a [element 2] | array_flow.rb:1006:9:1009:7 | call to repeated_permutation [element 2] | provenance | | +| array_flow.rb:1006:9:1006:9 | a [element 2] | array_flow.rb:1006:39:1006:39 | x [element] | provenance | | +| array_flow.rb:1006:9:1009:7 | call to repeated_permutation [element 2] | array_flow.rb:1006:5:1006:5 | b [element 2] | provenance | | +| array_flow.rb:1006:39:1006:39 | x [element] | array_flow.rb:1007:14:1007:14 | x [element] | provenance | | +| array_flow.rb:1006:39:1006:39 | x [element] | array_flow.rb:1008:14:1008:14 | x [element] | provenance | | +| array_flow.rb:1007:14:1007:14 | x [element] | array_flow.rb:1007:14:1007:17 | ...[...] | provenance | | +| array_flow.rb:1008:14:1008:14 | x [element] | array_flow.rb:1008:14:1008:17 | ...[...] | provenance | | +| array_flow.rb:1011:10:1011:10 | b [element 2] | array_flow.rb:1011:10:1011:13 | ...[...] | provenance | | +| array_flow.rb:1017:5:1017:5 | b [element 0] | array_flow.rb:1019:10:1019:10 | b [element 0] | provenance | | +| array_flow.rb:1017:9:1017:9 | [post] a [element 0] | array_flow.rb:1018:10:1018:10 | a [element 0] | provenance | | +| array_flow.rb:1017:9:1017:33 | call to replace [element 0] | array_flow.rb:1017:5:1017:5 | b [element 0] | provenance | | +| array_flow.rb:1017:20:1017:31 | call to source | array_flow.rb:1017:9:1017:9 | [post] a [element 0] | provenance | | +| array_flow.rb:1017:20:1017:31 | call to source | array_flow.rb:1017:9:1017:33 | call to replace [element 0] | provenance | | +| array_flow.rb:1018:10:1018:10 | a [element 0] | array_flow.rb:1018:10:1018:13 | ...[...] | provenance | | +| array_flow.rb:1019:10:1019:10 | b [element 0] | array_flow.rb:1019:10:1019:13 | ...[...] | provenance | | +| array_flow.rb:1023:5:1023:5 | a [element 2] | array_flow.rb:1024:9:1024:9 | a [element 2] | provenance | | +| array_flow.rb:1023:5:1023:5 | a [element 2] | array_flow.rb:1029:10:1029:10 | a [element 2] | provenance | | +| array_flow.rb:1023:5:1023:5 | a [element 3] | array_flow.rb:1024:9:1024:9 | a [element 3] | provenance | | +| array_flow.rb:1023:5:1023:5 | a [element 3] | array_flow.rb:1030:10:1030:10 | a [element 3] | provenance | | +| array_flow.rb:1023:16:1023:28 | call to source | array_flow.rb:1023:5:1023:5 | a [element 2] | provenance | | +| array_flow.rb:1023:31:1023:43 | call to source | array_flow.rb:1023:5:1023:5 | a [element 3] | provenance | | +| array_flow.rb:1024:5:1024:5 | b [element] | array_flow.rb:1025:10:1025:10 | b [element] | provenance | | +| array_flow.rb:1024:5:1024:5 | b [element] | array_flow.rb:1026:10:1026:10 | b [element] | provenance | | +| array_flow.rb:1024:5:1024:5 | b [element] | array_flow.rb:1027:10:1027:10 | b [element] | provenance | | +| array_flow.rb:1024:9:1024:9 | a [element 2] | array_flow.rb:1024:9:1024:17 | call to reverse [element] | provenance | | +| array_flow.rb:1024:9:1024:9 | a [element 3] | array_flow.rb:1024:9:1024:17 | call to reverse [element] | provenance | | +| array_flow.rb:1024:9:1024:17 | call to reverse [element] | array_flow.rb:1024:5:1024:5 | b [element] | provenance | | +| array_flow.rb:1025:10:1025:10 | b [element] | array_flow.rb:1025:10:1025:13 | ...[...] | provenance | | +| array_flow.rb:1026:10:1026:10 | b [element] | array_flow.rb:1026:10:1026:13 | ...[...] | provenance | | +| array_flow.rb:1027:10:1027:10 | b [element] | array_flow.rb:1027:10:1027:13 | ...[...] | provenance | | +| array_flow.rb:1029:10:1029:10 | a [element 2] | array_flow.rb:1029:10:1029:13 | ...[...] | provenance | | +| array_flow.rb:1030:10:1030:10 | a [element 3] | array_flow.rb:1030:10:1030:13 | ...[...] | provenance | | +| array_flow.rb:1034:5:1034:5 | a [element 2] | array_flow.rb:1035:9:1035:9 | a [element 2] | provenance | | +| array_flow.rb:1034:5:1034:5 | a [element 2] | array_flow.rb:1040:10:1040:10 | a [element 2] | provenance | | +| array_flow.rb:1034:5:1034:5 | a [element 3] | array_flow.rb:1035:9:1035:9 | a [element 3] | provenance | | +| array_flow.rb:1034:5:1034:5 | a [element 3] | array_flow.rb:1041:10:1041:10 | a [element 3] | provenance | | +| array_flow.rb:1034:16:1034:28 | call to source | array_flow.rb:1034:5:1034:5 | a [element 2] | provenance | | +| array_flow.rb:1034:31:1034:43 | call to source | array_flow.rb:1034:5:1034:5 | a [element 3] | provenance | | +| array_flow.rb:1035:5:1035:5 | b [element] | array_flow.rb:1036:10:1036:10 | b [element] | provenance | | +| array_flow.rb:1035:5:1035:5 | b [element] | array_flow.rb:1037:10:1037:10 | b [element] | provenance | | +| array_flow.rb:1035:5:1035:5 | b [element] | array_flow.rb:1038:10:1038:10 | b [element] | provenance | | +| array_flow.rb:1035:9:1035:9 | [post] a [element] | array_flow.rb:1039:10:1039:10 | a [element] | provenance | | +| array_flow.rb:1035:9:1035:9 | [post] a [element] | array_flow.rb:1040:10:1040:10 | a [element] | provenance | | +| array_flow.rb:1035:9:1035:9 | [post] a [element] | array_flow.rb:1041:10:1041:10 | a [element] | provenance | | +| array_flow.rb:1035:9:1035:9 | a [element 2] | array_flow.rb:1035:9:1035:9 | [post] a [element] | provenance | | +| array_flow.rb:1035:9:1035:9 | a [element 2] | array_flow.rb:1035:9:1035:18 | call to reverse! [element] | provenance | | +| array_flow.rb:1035:9:1035:9 | a [element 3] | array_flow.rb:1035:9:1035:9 | [post] a [element] | provenance | | +| array_flow.rb:1035:9:1035:9 | a [element 3] | array_flow.rb:1035:9:1035:18 | call to reverse! [element] | provenance | | +| array_flow.rb:1035:9:1035:18 | call to reverse! [element] | array_flow.rb:1035:5:1035:5 | b [element] | provenance | | +| array_flow.rb:1036:10:1036:10 | b [element] | array_flow.rb:1036:10:1036:13 | ...[...] | provenance | | +| array_flow.rb:1037:10:1037:10 | b [element] | array_flow.rb:1037:10:1037:13 | ...[...] | provenance | | +| array_flow.rb:1038:10:1038:10 | b [element] | array_flow.rb:1038:10:1038:13 | ...[...] | provenance | | +| array_flow.rb:1039:10:1039:10 | a [element] | array_flow.rb:1039:10:1039:13 | ...[...] | provenance | | +| array_flow.rb:1040:10:1040:10 | a [element 2] | array_flow.rb:1040:10:1040:13 | ...[...] | provenance | | +| array_flow.rb:1040:10:1040:10 | a [element] | array_flow.rb:1040:10:1040:13 | ...[...] | provenance | | +| array_flow.rb:1041:10:1041:10 | a [element 3] | array_flow.rb:1041:10:1041:13 | ...[...] | provenance | | +| array_flow.rb:1041:10:1041:10 | a [element] | array_flow.rb:1041:10:1041:13 | ...[...] | provenance | | +| array_flow.rb:1045:5:1045:5 | a [element 2] | array_flow.rb:1046:9:1046:9 | a [element 2] | provenance | | +| array_flow.rb:1045:16:1045:26 | call to source | array_flow.rb:1045:5:1045:5 | a [element 2] | provenance | | +| array_flow.rb:1046:5:1046:5 | b [element 2] | array_flow.rb:1049:10:1049:10 | b [element 2] | provenance | | +| array_flow.rb:1046:9:1046:9 | a [element 2] | array_flow.rb:1046:9:1048:7 | call to reverse_each [element 2] | provenance | | +| array_flow.rb:1046:9:1046:9 | a [element 2] | array_flow.rb:1046:28:1046:28 | x | provenance | | +| array_flow.rb:1046:9:1048:7 | call to reverse_each [element 2] | array_flow.rb:1046:5:1046:5 | b [element 2] | provenance | | +| array_flow.rb:1046:28:1046:28 | x | array_flow.rb:1047:14:1047:14 | x | provenance | | +| array_flow.rb:1049:10:1049:10 | b [element 2] | array_flow.rb:1049:10:1049:13 | ...[...] | provenance | | +| array_flow.rb:1053:5:1053:5 | a [element 2] | array_flow.rb:1054:5:1054:5 | a [element 2] | provenance | | +| array_flow.rb:1053:16:1053:26 | call to source | array_flow.rb:1053:5:1053:5 | a [element 2] | provenance | | +| array_flow.rb:1054:5:1054:5 | a [element 2] | array_flow.rb:1054:18:1054:18 | x | provenance | | +| array_flow.rb:1054:18:1054:18 | x | array_flow.rb:1055:14:1055:14 | x | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1065:9:1065:9 | a [element 0] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1071:9:1071:9 | a [element 0] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1077:9:1077:9 | a [element 0] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 0] | array_flow.rb:1083:9:1083:9 | a [element 0] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1065:9:1065:9 | a [element 2] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1071:9:1071:9 | a [element 2] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1077:9:1077:9 | a [element 2] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 2] | array_flow.rb:1083:9:1083:9 | a [element 2] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1065:9:1065:9 | a [element 3] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1071:9:1071:9 | a [element 3] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1077:9:1077:9 | a [element 3] | provenance | | +| array_flow.rb:1063:5:1063:5 | a [element 3] | array_flow.rb:1083:9:1083:9 | a [element 3] | provenance | | +| array_flow.rb:1063:10:1063:22 | call to source | array_flow.rb:1063:5:1063:5 | a [element 0] | provenance | | +| array_flow.rb:1063:28:1063:40 | call to source | array_flow.rb:1063:5:1063:5 | a [element 2] | provenance | | +| array_flow.rb:1063:43:1063:55 | call to source | array_flow.rb:1063:5:1063:5 | a [element 3] | provenance | | +| array_flow.rb:1065:5:1065:5 | b [element 1] | array_flow.rb:1067:10:1067:10 | b [element 1] | provenance | | +| array_flow.rb:1065:5:1065:5 | b [element 2] | array_flow.rb:1068:10:1068:10 | b [element 2] | provenance | | +| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1066:10:1066:10 | b [element] | provenance | | +| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1067:10:1067:10 | b [element] | provenance | | +| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1068:10:1068:10 | b [element] | provenance | | +| array_flow.rb:1065:5:1065:5 | b [element] | array_flow.rb:1069:10:1069:10 | b [element] | provenance | | +| array_flow.rb:1065:9:1065:9 | a [element 0] | array_flow.rb:1065:9:1065:16 | call to rotate [element] | provenance | | +| array_flow.rb:1065:9:1065:9 | a [element 2] | array_flow.rb:1065:9:1065:16 | call to rotate [element 1] | provenance | | +| array_flow.rb:1065:9:1065:9 | a [element 3] | array_flow.rb:1065:9:1065:16 | call to rotate [element 2] | provenance | | +| array_flow.rb:1065:9:1065:16 | call to rotate [element 1] | array_flow.rb:1065:5:1065:5 | b [element 1] | provenance | | +| array_flow.rb:1065:9:1065:16 | call to rotate [element 2] | array_flow.rb:1065:5:1065:5 | b [element 2] | provenance | | +| array_flow.rb:1065:9:1065:16 | call to rotate [element] | array_flow.rb:1065:5:1065:5 | b [element] | provenance | | +| array_flow.rb:1066:10:1066:10 | b [element] | array_flow.rb:1066:10:1066:13 | ...[...] | provenance | | +| array_flow.rb:1067:10:1067:10 | b [element 1] | array_flow.rb:1067:10:1067:13 | ...[...] | provenance | | +| array_flow.rb:1067:10:1067:10 | b [element] | array_flow.rb:1067:10:1067:13 | ...[...] | provenance | | +| array_flow.rb:1068:10:1068:10 | b [element 2] | array_flow.rb:1068:10:1068:13 | ...[...] | provenance | | +| array_flow.rb:1068:10:1068:10 | b [element] | array_flow.rb:1068:10:1068:13 | ...[...] | provenance | | +| array_flow.rb:1069:10:1069:10 | b [element] | array_flow.rb:1069:10:1069:13 | ...[...] | provenance | | +| array_flow.rb:1071:5:1071:5 | b [element 0] | array_flow.rb:1072:10:1072:10 | b [element 0] | provenance | | +| array_flow.rb:1071:5:1071:5 | b [element 1] | array_flow.rb:1073:10:1073:10 | b [element 1] | provenance | | +| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1072:10:1072:10 | b [element] | provenance | | +| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1073:10:1073:10 | b [element] | provenance | | +| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1074:10:1074:10 | b [element] | provenance | | +| array_flow.rb:1071:5:1071:5 | b [element] | array_flow.rb:1075:10:1075:10 | b [element] | provenance | | +| array_flow.rb:1071:9:1071:9 | a [element 0] | array_flow.rb:1071:9:1071:19 | call to rotate [element] | provenance | | +| array_flow.rb:1071:9:1071:9 | a [element 2] | array_flow.rb:1071:9:1071:19 | call to rotate [element 0] | provenance | | +| array_flow.rb:1071:9:1071:9 | a [element 3] | array_flow.rb:1071:9:1071:19 | call to rotate [element 1] | provenance | | +| array_flow.rb:1071:9:1071:19 | call to rotate [element 0] | array_flow.rb:1071:5:1071:5 | b [element 0] | provenance | | +| array_flow.rb:1071:9:1071:19 | call to rotate [element 1] | array_flow.rb:1071:5:1071:5 | b [element 1] | provenance | | +| array_flow.rb:1071:9:1071:19 | call to rotate [element] | array_flow.rb:1071:5:1071:5 | b [element] | provenance | | +| array_flow.rb:1072:10:1072:10 | b [element 0] | array_flow.rb:1072:10:1072:13 | ...[...] | provenance | | +| array_flow.rb:1072:10:1072:10 | b [element] | array_flow.rb:1072:10:1072:13 | ...[...] | provenance | | +| array_flow.rb:1073:10:1073:10 | b [element 1] | array_flow.rb:1073:10:1073:13 | ...[...] | provenance | | +| array_flow.rb:1073:10:1073:10 | b [element] | array_flow.rb:1073:10:1073:13 | ...[...] | provenance | | +| array_flow.rb:1074:10:1074:10 | b [element] | array_flow.rb:1074:10:1074:13 | ...[...] | provenance | | +| array_flow.rb:1075:10:1075:10 | b [element] | array_flow.rb:1075:10:1075:13 | ...[...] | provenance | | +| array_flow.rb:1077:5:1077:5 | b [element 0] | array_flow.rb:1078:10:1078:10 | b [element 0] | provenance | | +| array_flow.rb:1077:5:1077:5 | b [element 2] | array_flow.rb:1080:10:1080:10 | b [element 2] | provenance | | +| array_flow.rb:1077:5:1077:5 | b [element 3] | array_flow.rb:1081:10:1081:10 | b [element 3] | provenance | | +| array_flow.rb:1077:9:1077:9 | a [element 0] | array_flow.rb:1077:9:1077:19 | call to rotate [element 0] | provenance | | +| array_flow.rb:1077:9:1077:9 | a [element 2] | array_flow.rb:1077:9:1077:19 | call to rotate [element 2] | provenance | | +| array_flow.rb:1077:9:1077:9 | a [element 3] | array_flow.rb:1077:9:1077:19 | call to rotate [element 3] | provenance | | +| array_flow.rb:1077:9:1077:19 | call to rotate [element 0] | array_flow.rb:1077:5:1077:5 | b [element 0] | provenance | | +| array_flow.rb:1077:9:1077:19 | call to rotate [element 2] | array_flow.rb:1077:5:1077:5 | b [element 2] | provenance | | +| array_flow.rb:1077:9:1077:19 | call to rotate [element 3] | array_flow.rb:1077:5:1077:5 | b [element 3] | provenance | | +| array_flow.rb:1078:10:1078:10 | b [element 0] | array_flow.rb:1078:10:1078:13 | ...[...] | provenance | | +| array_flow.rb:1080:10:1080:10 | b [element 2] | array_flow.rb:1080:10:1080:13 | ...[...] | provenance | | +| array_flow.rb:1081:10:1081:10 | b [element 3] | array_flow.rb:1081:10:1081:13 | ...[...] | provenance | | +| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1084:10:1084:10 | b [element] | provenance | | +| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1085:10:1085:10 | b [element] | provenance | | +| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1086:10:1086:10 | b [element] | provenance | | +| array_flow.rb:1083:5:1083:5 | b [element] | array_flow.rb:1087:10:1087:10 | b [element] | provenance | | +| array_flow.rb:1083:9:1083:9 | a [element 0] | array_flow.rb:1083:9:1083:19 | call to rotate [element] | provenance | | +| array_flow.rb:1083:9:1083:9 | a [element 2] | array_flow.rb:1083:9:1083:19 | call to rotate [element] | provenance | | +| array_flow.rb:1083:9:1083:9 | a [element 3] | array_flow.rb:1083:9:1083:19 | call to rotate [element] | provenance | | +| array_flow.rb:1083:9:1083:19 | call to rotate [element] | array_flow.rb:1083:5:1083:5 | b [element] | provenance | | +| array_flow.rb:1084:10:1084:10 | b [element] | array_flow.rb:1084:10:1084:13 | ...[...] | provenance | | +| array_flow.rb:1085:10:1085:10 | b [element] | array_flow.rb:1085:10:1085:13 | ...[...] | provenance | | +| array_flow.rb:1086:10:1086:10 | b [element] | array_flow.rb:1086:10:1086:13 | ...[...] | provenance | | +| array_flow.rb:1087:10:1087:10 | b [element] | array_flow.rb:1087:10:1087:13 | ...[...] | provenance | | +| array_flow.rb:1095:5:1095:5 | a [element 0] | array_flow.rb:1096:9:1096:9 | a [element 0] | provenance | | +| array_flow.rb:1095:5:1095:5 | a [element 2] | array_flow.rb:1096:9:1096:9 | a [element 2] | provenance | | +| array_flow.rb:1095:5:1095:5 | a [element 3] | array_flow.rb:1096:9:1096:9 | a [element 3] | provenance | | +| array_flow.rb:1095:10:1095:22 | call to source | array_flow.rb:1095:5:1095:5 | a [element 0] | provenance | | +| array_flow.rb:1095:28:1095:40 | call to source | array_flow.rb:1095:5:1095:5 | a [element 2] | provenance | | +| array_flow.rb:1095:43:1095:55 | call to source | array_flow.rb:1095:5:1095:5 | a [element 3] | provenance | | +| array_flow.rb:1096:5:1096:5 | b [element 1] | array_flow.rb:1102:10:1102:10 | b [element 1] | provenance | | +| array_flow.rb:1096:5:1096:5 | b [element 2] | array_flow.rb:1103:10:1103:10 | b [element 2] | provenance | | +| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1101:10:1101:10 | b [element] | provenance | | +| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1102:10:1102:10 | b [element] | provenance | | +| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1103:10:1103:10 | b [element] | provenance | | +| array_flow.rb:1096:5:1096:5 | b [element] | array_flow.rb:1104:10:1104:10 | b [element] | provenance | | +| array_flow.rb:1096:9:1096:9 | [post] a [element 1] | array_flow.rb:1098:10:1098:10 | a [element 1] | provenance | | +| array_flow.rb:1096:9:1096:9 | [post] a [element 2] | array_flow.rb:1099:10:1099:10 | a [element 2] | provenance | | +| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1097:10:1097:10 | a [element] | provenance | | +| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1098:10:1098:10 | a [element] | provenance | | +| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1099:10:1099:10 | a [element] | provenance | | +| array_flow.rb:1096:9:1096:9 | [post] a [element] | array_flow.rb:1100:10:1100:10 | a [element] | provenance | | +| array_flow.rb:1096:9:1096:9 | a [element 0] | array_flow.rb:1096:9:1096:9 | [post] a [element] | provenance | | +| array_flow.rb:1096:9:1096:9 | a [element 0] | array_flow.rb:1096:9:1096:17 | call to rotate! [element] | provenance | | +| array_flow.rb:1096:9:1096:9 | a [element 2] | array_flow.rb:1096:9:1096:9 | [post] a [element 1] | provenance | | +| array_flow.rb:1096:9:1096:9 | a [element 2] | array_flow.rb:1096:9:1096:17 | call to rotate! [element 1] | provenance | | +| array_flow.rb:1096:9:1096:9 | a [element 3] | array_flow.rb:1096:9:1096:9 | [post] a [element 2] | provenance | | +| array_flow.rb:1096:9:1096:9 | a [element 3] | array_flow.rb:1096:9:1096:17 | call to rotate! [element 2] | provenance | | +| array_flow.rb:1096:9:1096:17 | call to rotate! [element 1] | array_flow.rb:1096:5:1096:5 | b [element 1] | provenance | | +| array_flow.rb:1096:9:1096:17 | call to rotate! [element 2] | array_flow.rb:1096:5:1096:5 | b [element 2] | provenance | | +| array_flow.rb:1096:9:1096:17 | call to rotate! [element] | array_flow.rb:1096:5:1096:5 | b [element] | provenance | | +| array_flow.rb:1097:10:1097:10 | a [element] | array_flow.rb:1097:10:1097:13 | ...[...] | provenance | | +| array_flow.rb:1098:10:1098:10 | a [element 1] | array_flow.rb:1098:10:1098:13 | ...[...] | provenance | | +| array_flow.rb:1098:10:1098:10 | a [element] | array_flow.rb:1098:10:1098:13 | ...[...] | provenance | | +| array_flow.rb:1099:10:1099:10 | a [element 2] | array_flow.rb:1099:10:1099:13 | ...[...] | provenance | | +| array_flow.rb:1099:10:1099:10 | a [element] | array_flow.rb:1099:10:1099:13 | ...[...] | provenance | | +| array_flow.rb:1100:10:1100:10 | a [element] | array_flow.rb:1100:10:1100:13 | ...[...] | provenance | | +| array_flow.rb:1101:10:1101:10 | b [element] | array_flow.rb:1101:10:1101:13 | ...[...] | provenance | | +| array_flow.rb:1102:10:1102:10 | b [element 1] | array_flow.rb:1102:10:1102:13 | ...[...] | provenance | | +| array_flow.rb:1102:10:1102:10 | b [element] | array_flow.rb:1102:10:1102:13 | ...[...] | provenance | | +| array_flow.rb:1103:10:1103:10 | b [element 2] | array_flow.rb:1103:10:1103:13 | ...[...] | provenance | | +| array_flow.rb:1103:10:1103:10 | b [element] | array_flow.rb:1103:10:1103:13 | ...[...] | provenance | | +| array_flow.rb:1104:10:1104:10 | b [element] | array_flow.rb:1104:10:1104:13 | ...[...] | provenance | | +| array_flow.rb:1106:5:1106:5 | a [element 0] | array_flow.rb:1107:9:1107:9 | a [element 0] | provenance | | +| array_flow.rb:1106:5:1106:5 | a [element 2] | array_flow.rb:1107:9:1107:9 | a [element 2] | provenance | | +| array_flow.rb:1106:5:1106:5 | a [element 3] | array_flow.rb:1107:9:1107:9 | a [element 3] | provenance | | +| array_flow.rb:1106:10:1106:22 | call to source | array_flow.rb:1106:5:1106:5 | a [element 0] | provenance | | +| array_flow.rb:1106:28:1106:40 | call to source | array_flow.rb:1106:5:1106:5 | a [element 2] | provenance | | +| array_flow.rb:1106:43:1106:55 | call to source | array_flow.rb:1106:5:1106:5 | a [element 3] | provenance | | +| array_flow.rb:1107:5:1107:5 | b [element 0] | array_flow.rb:1112:10:1112:10 | b [element 0] | provenance | | +| array_flow.rb:1107:5:1107:5 | b [element 1] | array_flow.rb:1113:10:1113:10 | b [element 1] | provenance | | +| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1112:10:1112:10 | b [element] | provenance | | +| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1113:10:1113:10 | b [element] | provenance | | +| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1114:10:1114:10 | b [element] | provenance | | +| array_flow.rb:1107:5:1107:5 | b [element] | array_flow.rb:1115:10:1115:10 | b [element] | provenance | | +| array_flow.rb:1107:9:1107:9 | [post] a [element 0] | array_flow.rb:1108:10:1108:10 | a [element 0] | provenance | | +| array_flow.rb:1107:9:1107:9 | [post] a [element 1] | array_flow.rb:1109:10:1109:10 | a [element 1] | provenance | | +| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1108:10:1108:10 | a [element] | provenance | | +| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1109:10:1109:10 | a [element] | provenance | | +| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1110:10:1110:10 | a [element] | provenance | | +| array_flow.rb:1107:9:1107:9 | [post] a [element] | array_flow.rb:1111:10:1111:10 | a [element] | provenance | | +| array_flow.rb:1107:9:1107:9 | a [element 0] | array_flow.rb:1107:9:1107:9 | [post] a [element] | provenance | | +| array_flow.rb:1107:9:1107:9 | a [element 0] | array_flow.rb:1107:9:1107:20 | call to rotate! [element] | provenance | | +| array_flow.rb:1107:9:1107:9 | a [element 2] | array_flow.rb:1107:9:1107:9 | [post] a [element 0] | provenance | | +| array_flow.rb:1107:9:1107:9 | a [element 2] | array_flow.rb:1107:9:1107:20 | call to rotate! [element 0] | provenance | | +| array_flow.rb:1107:9:1107:9 | a [element 3] | array_flow.rb:1107:9:1107:9 | [post] a [element 1] | provenance | | +| array_flow.rb:1107:9:1107:9 | a [element 3] | array_flow.rb:1107:9:1107:20 | call to rotate! [element 1] | provenance | | +| array_flow.rb:1107:9:1107:20 | call to rotate! [element 0] | array_flow.rb:1107:5:1107:5 | b [element 0] | provenance | | +| array_flow.rb:1107:9:1107:20 | call to rotate! [element 1] | array_flow.rb:1107:5:1107:5 | b [element 1] | provenance | | +| array_flow.rb:1107:9:1107:20 | call to rotate! [element] | array_flow.rb:1107:5:1107:5 | b [element] | provenance | | +| array_flow.rb:1108:10:1108:10 | a [element 0] | array_flow.rb:1108:10:1108:13 | ...[...] | provenance | | +| array_flow.rb:1108:10:1108:10 | a [element] | array_flow.rb:1108:10:1108:13 | ...[...] | provenance | | +| array_flow.rb:1109:10:1109:10 | a [element 1] | array_flow.rb:1109:10:1109:13 | ...[...] | provenance | | +| array_flow.rb:1109:10:1109:10 | a [element] | array_flow.rb:1109:10:1109:13 | ...[...] | provenance | | +| array_flow.rb:1110:10:1110:10 | a [element] | array_flow.rb:1110:10:1110:13 | ...[...] | provenance | | +| array_flow.rb:1111:10:1111:10 | a [element] | array_flow.rb:1111:10:1111:13 | ...[...] | provenance | | +| array_flow.rb:1112:10:1112:10 | b [element 0] | array_flow.rb:1112:10:1112:13 | ...[...] | provenance | | +| array_flow.rb:1112:10:1112:10 | b [element] | array_flow.rb:1112:10:1112:13 | ...[...] | provenance | | +| array_flow.rb:1113:10:1113:10 | b [element 1] | array_flow.rb:1113:10:1113:13 | ...[...] | provenance | | +| array_flow.rb:1113:10:1113:10 | b [element] | array_flow.rb:1113:10:1113:13 | ...[...] | provenance | | +| array_flow.rb:1114:10:1114:10 | b [element] | array_flow.rb:1114:10:1114:13 | ...[...] | provenance | | +| array_flow.rb:1115:10:1115:10 | b [element] | array_flow.rb:1115:10:1115:13 | ...[...] | provenance | | +| array_flow.rb:1117:5:1117:5 | a [element 0] | array_flow.rb:1118:9:1118:9 | a [element 0] | provenance | | +| array_flow.rb:1117:5:1117:5 | a [element 2] | array_flow.rb:1118:9:1118:9 | a [element 2] | provenance | | +| array_flow.rb:1117:5:1117:5 | a [element 3] | array_flow.rb:1118:9:1118:9 | a [element 3] | provenance | | +| array_flow.rb:1117:10:1117:22 | call to source | array_flow.rb:1117:5:1117:5 | a [element 0] | provenance | | +| array_flow.rb:1117:28:1117:40 | call to source | array_flow.rb:1117:5:1117:5 | a [element 2] | provenance | | +| array_flow.rb:1117:43:1117:55 | call to source | array_flow.rb:1117:5:1117:5 | a [element 3] | provenance | | +| array_flow.rb:1118:5:1118:5 | b [element 0] | array_flow.rb:1123:10:1123:10 | b [element 0] | provenance | | +| array_flow.rb:1118:5:1118:5 | b [element 2] | array_flow.rb:1125:10:1125:10 | b [element 2] | provenance | | +| array_flow.rb:1118:5:1118:5 | b [element 3] | array_flow.rb:1126:10:1126:10 | b [element 3] | provenance | | +| array_flow.rb:1118:9:1118:9 | [post] a [element 0] | array_flow.rb:1119:10:1119:10 | a [element 0] | provenance | | +| array_flow.rb:1118:9:1118:9 | [post] a [element 2] | array_flow.rb:1121:10:1121:10 | a [element 2] | provenance | | +| array_flow.rb:1118:9:1118:9 | [post] a [element 3] | array_flow.rb:1122:10:1122:10 | a [element 3] | provenance | | +| array_flow.rb:1118:9:1118:9 | a [element 0] | array_flow.rb:1118:9:1118:9 | [post] a [element 0] | provenance | | +| array_flow.rb:1118:9:1118:9 | a [element 0] | array_flow.rb:1118:9:1118:20 | call to rotate! [element 0] | provenance | | +| array_flow.rb:1118:9:1118:9 | a [element 2] | array_flow.rb:1118:9:1118:9 | [post] a [element 2] | provenance | | +| array_flow.rb:1118:9:1118:9 | a [element 2] | array_flow.rb:1118:9:1118:20 | call to rotate! [element 2] | provenance | | +| array_flow.rb:1118:9:1118:9 | a [element 3] | array_flow.rb:1118:9:1118:9 | [post] a [element 3] | provenance | | +| array_flow.rb:1118:9:1118:9 | a [element 3] | array_flow.rb:1118:9:1118:20 | call to rotate! [element 3] | provenance | | +| array_flow.rb:1118:9:1118:20 | call to rotate! [element 0] | array_flow.rb:1118:5:1118:5 | b [element 0] | provenance | | +| array_flow.rb:1118:9:1118:20 | call to rotate! [element 2] | array_flow.rb:1118:5:1118:5 | b [element 2] | provenance | | +| array_flow.rb:1118:9:1118:20 | call to rotate! [element 3] | array_flow.rb:1118:5:1118:5 | b [element 3] | provenance | | +| array_flow.rb:1119:10:1119:10 | a [element 0] | array_flow.rb:1119:10:1119:13 | ...[...] | provenance | | +| array_flow.rb:1121:10:1121:10 | a [element 2] | array_flow.rb:1121:10:1121:13 | ...[...] | provenance | | +| array_flow.rb:1122:10:1122:10 | a [element 3] | array_flow.rb:1122:10:1122:13 | ...[...] | provenance | | +| array_flow.rb:1123:10:1123:10 | b [element 0] | array_flow.rb:1123:10:1123:13 | ...[...] | provenance | | +| array_flow.rb:1125:10:1125:10 | b [element 2] | array_flow.rb:1125:10:1125:13 | ...[...] | provenance | | +| array_flow.rb:1126:10:1126:10 | b [element 3] | array_flow.rb:1126:10:1126:13 | ...[...] | provenance | | +| array_flow.rb:1128:5:1128:5 | a [element 0] | array_flow.rb:1129:9:1129:9 | a [element 0] | provenance | | +| array_flow.rb:1128:5:1128:5 | a [element 2] | array_flow.rb:1129:9:1129:9 | a [element 2] | provenance | | +| array_flow.rb:1128:5:1128:5 | a [element 3] | array_flow.rb:1129:9:1129:9 | a [element 3] | provenance | | +| array_flow.rb:1128:10:1128:22 | call to source | array_flow.rb:1128:5:1128:5 | a [element 0] | provenance | | +| array_flow.rb:1128:28:1128:40 | call to source | array_flow.rb:1128:5:1128:5 | a [element 2] | provenance | | +| array_flow.rb:1128:43:1128:55 | call to source | array_flow.rb:1128:5:1128:5 | a [element 3] | provenance | | +| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1134:10:1134:10 | b [element] | provenance | | +| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1135:10:1135:10 | b [element] | provenance | | +| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1136:10:1136:10 | b [element] | provenance | | +| array_flow.rb:1129:5:1129:5 | b [element] | array_flow.rb:1137:10:1137:10 | b [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1130:10:1130:10 | a [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1131:10:1131:10 | a [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1132:10:1132:10 | a [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | [post] a [element] | array_flow.rb:1133:10:1133:10 | a [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | a [element 0] | array_flow.rb:1129:9:1129:9 | [post] a [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | a [element 0] | array_flow.rb:1129:9:1129:20 | call to rotate! [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | a [element 2] | array_flow.rb:1129:9:1129:9 | [post] a [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | a [element 2] | array_flow.rb:1129:9:1129:20 | call to rotate! [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | a [element 3] | array_flow.rb:1129:9:1129:9 | [post] a [element] | provenance | | +| array_flow.rb:1129:9:1129:9 | a [element 3] | array_flow.rb:1129:9:1129:20 | call to rotate! [element] | provenance | | +| array_flow.rb:1129:9:1129:20 | call to rotate! [element] | array_flow.rb:1129:5:1129:5 | b [element] | provenance | | +| array_flow.rb:1130:10:1130:10 | a [element] | array_flow.rb:1130:10:1130:13 | ...[...] | provenance | | +| array_flow.rb:1131:10:1131:10 | a [element] | array_flow.rb:1131:10:1131:13 | ...[...] | provenance | | +| array_flow.rb:1132:10:1132:10 | a [element] | array_flow.rb:1132:10:1132:13 | ...[...] | provenance | | +| array_flow.rb:1133:10:1133:10 | a [element] | array_flow.rb:1133:10:1133:13 | ...[...] | provenance | | +| array_flow.rb:1134:10:1134:10 | b [element] | array_flow.rb:1134:10:1134:13 | ...[...] | provenance | | +| array_flow.rb:1135:10:1135:10 | b [element] | array_flow.rb:1135:10:1135:13 | ...[...] | provenance | | +| array_flow.rb:1136:10:1136:10 | b [element] | array_flow.rb:1136:10:1136:13 | ...[...] | provenance | | +| array_flow.rb:1137:10:1137:10 | b [element] | array_flow.rb:1137:10:1137:13 | ...[...] | provenance | | +| array_flow.rb:1141:5:1141:5 | a [element 3] | array_flow.rb:1142:9:1142:9 | a [element 3] | provenance | | +| array_flow.rb:1141:19:1141:29 | call to source | array_flow.rb:1141:5:1141:5 | a [element 3] | provenance | | +| array_flow.rb:1142:5:1142:5 | b [element] | array_flow.rb:1145:10:1145:10 | b [element] | provenance | | +| array_flow.rb:1142:9:1142:9 | a [element 3] | array_flow.rb:1142:9:1144:7 | call to select [element] | provenance | | +| array_flow.rb:1142:9:1142:9 | a [element 3] | array_flow.rb:1142:22:1142:22 | x | provenance | | +| array_flow.rb:1142:9:1144:7 | call to select [element] | array_flow.rb:1142:5:1142:5 | b [element] | provenance | | +| array_flow.rb:1142:22:1142:22 | x | array_flow.rb:1143:14:1143:14 | x | provenance | | +| array_flow.rb:1145:10:1145:10 | b [element] | array_flow.rb:1145:10:1145:13 | ...[...] | provenance | | +| array_flow.rb:1149:5:1149:5 | a [element 2] | array_flow.rb:1150:9:1150:9 | a [element 2] | provenance | | +| array_flow.rb:1149:16:1149:26 | call to source | array_flow.rb:1149:5:1149:5 | a [element 2] | provenance | | +| array_flow.rb:1150:5:1150:5 | b [element] | array_flow.rb:1155:10:1155:10 | b [element] | provenance | | +| array_flow.rb:1150:9:1150:9 | [post] a [element] | array_flow.rb:1154:10:1154:10 | a [element] | provenance | | +| array_flow.rb:1150:9:1150:9 | a [element 2] | array_flow.rb:1150:9:1150:9 | [post] a [element] | provenance | | +| array_flow.rb:1150:9:1150:9 | a [element 2] | array_flow.rb:1150:9:1153:7 | call to select! [element] | provenance | | +| array_flow.rb:1150:9:1150:9 | a [element 2] | array_flow.rb:1150:23:1150:23 | x | provenance | | +| array_flow.rb:1150:9:1153:7 | call to select! [element] | array_flow.rb:1150:5:1150:5 | b [element] | provenance | | +| array_flow.rb:1150:23:1150:23 | x | array_flow.rb:1151:14:1151:14 | x | provenance | | +| array_flow.rb:1154:10:1154:10 | a [element] | array_flow.rb:1154:10:1154:13 | ...[...] | provenance | | +| array_flow.rb:1155:10:1155:10 | b [element] | array_flow.rb:1155:10:1155:13 | ...[...] | provenance | | +| array_flow.rb:1159:5:1159:5 | a [element 0] | array_flow.rb:1160:9:1160:9 | a [element 0] | provenance | | +| array_flow.rb:1159:5:1159:5 | a [element 2] | array_flow.rb:1160:9:1160:9 | a [element 2] | provenance | | +| array_flow.rb:1159:10:1159:22 | call to source | array_flow.rb:1159:5:1159:5 | a [element 0] | provenance | | +| array_flow.rb:1159:28:1159:40 | call to source | array_flow.rb:1159:5:1159:5 | a [element 2] | provenance | | +| array_flow.rb:1160:5:1160:5 | b | array_flow.rb:1161:10:1161:10 | b | provenance | | +| array_flow.rb:1160:9:1160:9 | [post] a [element 1] | array_flow.rb:1163:10:1163:10 | a [element 1] | provenance | | +| array_flow.rb:1160:9:1160:9 | a [element 0] | array_flow.rb:1160:9:1160:15 | call to shift | provenance | | +| array_flow.rb:1160:9:1160:9 | a [element 2] | array_flow.rb:1160:9:1160:9 | [post] a [element 1] | provenance | | +| array_flow.rb:1160:9:1160:15 | call to shift | array_flow.rb:1160:5:1160:5 | b | provenance | | +| array_flow.rb:1163:10:1163:10 | a [element 1] | array_flow.rb:1163:10:1163:13 | ...[...] | provenance | | +| array_flow.rb:1166:5:1166:5 | a [element 0] | array_flow.rb:1167:9:1167:9 | a [element 0] | provenance | | +| array_flow.rb:1166:5:1166:5 | a [element 2] | array_flow.rb:1167:9:1167:9 | a [element 2] | provenance | | +| array_flow.rb:1166:10:1166:22 | call to source | array_flow.rb:1166:5:1166:5 | a [element 0] | provenance | | +| array_flow.rb:1166:28:1166:40 | call to source | array_flow.rb:1166:5:1166:5 | a [element 2] | provenance | | +| array_flow.rb:1167:5:1167:5 | b [element 0] | array_flow.rb:1168:10:1168:10 | b [element 0] | provenance | | +| array_flow.rb:1167:9:1167:9 | [post] a [element 0] | array_flow.rb:1170:10:1170:10 | a [element 0] | provenance | | +| array_flow.rb:1167:9:1167:9 | a [element 0] | array_flow.rb:1167:9:1167:18 | call to shift [element 0] | provenance | | +| array_flow.rb:1167:9:1167:9 | a [element 2] | array_flow.rb:1167:9:1167:9 | [post] a [element 0] | provenance | | +| array_flow.rb:1167:9:1167:18 | call to shift [element 0] | array_flow.rb:1167:5:1167:5 | b [element 0] | provenance | | +| array_flow.rb:1168:10:1168:10 | b [element 0] | array_flow.rb:1168:10:1168:13 | ...[...] | provenance | | +| array_flow.rb:1170:10:1170:10 | a [element 0] | array_flow.rb:1170:10:1170:13 | ...[...] | provenance | | +| array_flow.rb:1174:5:1174:5 | a [element 0] | array_flow.rb:1175:9:1175:9 | a [element 0] | provenance | | +| array_flow.rb:1174:5:1174:5 | a [element 0] | array_flow.rb:1178:10:1178:10 | a [element 0] | provenance | | +| array_flow.rb:1174:5:1174:5 | a [element 2] | array_flow.rb:1175:9:1175:9 | a [element 2] | provenance | | +| array_flow.rb:1174:5:1174:5 | a [element 2] | array_flow.rb:1180:10:1180:10 | a [element 2] | provenance | | +| array_flow.rb:1174:10:1174:22 | call to source | array_flow.rb:1174:5:1174:5 | a [element 0] | provenance | | +| array_flow.rb:1174:28:1174:40 | call to source | array_flow.rb:1174:5:1174:5 | a [element 2] | provenance | | +| array_flow.rb:1175:5:1175:5 | b [element] | array_flow.rb:1176:10:1176:10 | b [element] | provenance | | +| array_flow.rb:1175:5:1175:5 | b [element] | array_flow.rb:1177:10:1177:10 | b [element] | provenance | | +| array_flow.rb:1175:9:1175:9 | [post] a [element] | array_flow.rb:1178:10:1178:10 | a [element] | provenance | | +| array_flow.rb:1175:9:1175:9 | [post] a [element] | array_flow.rb:1179:10:1179:10 | a [element] | provenance | | +| array_flow.rb:1175:9:1175:9 | [post] a [element] | array_flow.rb:1180:10:1180:10 | a [element] | provenance | | +| array_flow.rb:1175:9:1175:9 | a [element 0] | array_flow.rb:1175:9:1175:9 | [post] a [element] | provenance | | +| array_flow.rb:1175:9:1175:9 | a [element 0] | array_flow.rb:1175:9:1175:18 | call to shift [element] | provenance | | +| array_flow.rb:1175:9:1175:9 | a [element 2] | array_flow.rb:1175:9:1175:9 | [post] a [element] | provenance | | +| array_flow.rb:1175:9:1175:9 | a [element 2] | array_flow.rb:1175:9:1175:18 | call to shift [element] | provenance | | +| array_flow.rb:1175:9:1175:18 | call to shift [element] | array_flow.rb:1175:5:1175:5 | b [element] | provenance | | +| array_flow.rb:1176:10:1176:10 | b [element] | array_flow.rb:1176:10:1176:13 | ...[...] | provenance | | +| array_flow.rb:1177:10:1177:10 | b [element] | array_flow.rb:1177:10:1177:13 | ...[...] | provenance | | +| array_flow.rb:1178:10:1178:10 | a [element 0] | array_flow.rb:1178:10:1178:13 | ...[...] | provenance | | +| array_flow.rb:1178:10:1178:10 | a [element] | array_flow.rb:1178:10:1178:13 | ...[...] | provenance | | +| array_flow.rb:1179:10:1179:10 | a [element] | array_flow.rb:1179:10:1179:13 | ...[...] | provenance | | +| array_flow.rb:1180:10:1180:10 | a [element 2] | array_flow.rb:1180:10:1180:13 | ...[...] | provenance | | +| array_flow.rb:1180:10:1180:10 | a [element] | array_flow.rb:1180:10:1180:13 | ...[...] | provenance | | +| array_flow.rb:1184:5:1184:5 | a [element 2] | array_flow.rb:1185:9:1185:9 | a [element 2] | provenance | | +| array_flow.rb:1184:5:1184:5 | a [element 2] | array_flow.rb:1188:10:1188:10 | a [element 2] | provenance | | +| array_flow.rb:1184:16:1184:26 | call to source | array_flow.rb:1184:5:1184:5 | a [element 2] | provenance | | +| array_flow.rb:1185:5:1185:5 | b [element] | array_flow.rb:1189:10:1189:10 | b [element] | provenance | | +| array_flow.rb:1185:5:1185:5 | b [element] | array_flow.rb:1190:10:1190:10 | b [element] | provenance | | +| array_flow.rb:1185:5:1185:5 | b [element] | array_flow.rb:1191:10:1191:10 | b [element] | provenance | | +| array_flow.rb:1185:9:1185:9 | a [element 2] | array_flow.rb:1185:9:1185:17 | call to shuffle [element] | provenance | | +| array_flow.rb:1185:9:1185:17 | call to shuffle [element] | array_flow.rb:1185:5:1185:5 | b [element] | provenance | | +| array_flow.rb:1188:10:1188:10 | a [element 2] | array_flow.rb:1188:10:1188:13 | ...[...] | provenance | | +| array_flow.rb:1189:10:1189:10 | b [element] | array_flow.rb:1189:10:1189:13 | ...[...] | provenance | | +| array_flow.rb:1190:10:1190:10 | b [element] | array_flow.rb:1190:10:1190:13 | ...[...] | provenance | | +| array_flow.rb:1191:10:1191:10 | b [element] | array_flow.rb:1191:10:1191:13 | ...[...] | provenance | | +| array_flow.rb:1195:5:1195:5 | a [element 2] | array_flow.rb:1196:9:1196:9 | a [element 2] | provenance | | +| array_flow.rb:1195:5:1195:5 | a [element 2] | array_flow.rb:1199:10:1199:10 | a [element 2] | provenance | | +| array_flow.rb:1195:16:1195:26 | call to source | array_flow.rb:1195:5:1195:5 | a [element 2] | provenance | | +| array_flow.rb:1196:5:1196:5 | b [element] | array_flow.rb:1200:10:1200:10 | b [element] | provenance | | +| array_flow.rb:1196:5:1196:5 | b [element] | array_flow.rb:1201:10:1201:10 | b [element] | provenance | | +| array_flow.rb:1196:5:1196:5 | b [element] | array_flow.rb:1202:10:1202:10 | b [element] | provenance | | +| array_flow.rb:1196:9:1196:9 | [post] a [element] | array_flow.rb:1197:10:1197:10 | a [element] | provenance | | +| array_flow.rb:1196:9:1196:9 | [post] a [element] | array_flow.rb:1198:10:1198:10 | a [element] | provenance | | +| array_flow.rb:1196:9:1196:9 | [post] a [element] | array_flow.rb:1199:10:1199:10 | a [element] | provenance | | +| array_flow.rb:1196:9:1196:9 | a [element 2] | array_flow.rb:1196:9:1196:9 | [post] a [element] | provenance | | +| array_flow.rb:1196:9:1196:9 | a [element 2] | array_flow.rb:1196:9:1196:18 | call to shuffle! [element] | provenance | | +| array_flow.rb:1196:9:1196:18 | call to shuffle! [element] | array_flow.rb:1196:5:1196:5 | b [element] | provenance | | +| array_flow.rb:1197:10:1197:10 | a [element] | array_flow.rb:1197:10:1197:13 | ...[...] | provenance | | +| array_flow.rb:1198:10:1198:10 | a [element] | array_flow.rb:1198:10:1198:13 | ...[...] | provenance | | +| array_flow.rb:1199:10:1199:10 | a [element 2] | array_flow.rb:1199:10:1199:13 | ...[...] | provenance | | +| array_flow.rb:1199:10:1199:10 | a [element] | array_flow.rb:1199:10:1199:13 | ...[...] | provenance | | +| array_flow.rb:1200:10:1200:10 | b [element] | array_flow.rb:1200:10:1200:13 | ...[...] | provenance | | +| array_flow.rb:1201:10:1201:10 | b [element] | array_flow.rb:1201:10:1201:13 | ...[...] | provenance | | +| array_flow.rb:1202:10:1202:10 | b [element] | array_flow.rb:1202:10:1202:13 | ...[...] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1211:9:1211:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1214:9:1214:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1221:9:1221:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1226:9:1226:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1230:9:1230:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1235:9:1235:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1240:9:1240:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1244:9:1244:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1248:9:1248:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 2] | array_flow.rb:1253:9:1253:9 | a [element 2] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1208:9:1208:9 | a [element 4] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1211:9:1211:9 | a [element 4] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1214:9:1214:9 | a [element 4] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1221:9:1221:9 | a [element 4] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1226:9:1226:9 | a [element 4] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1240:9:1240:9 | a [element 4] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1244:9:1244:9 | a [element 4] | provenance | | +| array_flow.rb:1206:5:1206:5 | a [element 4] | array_flow.rb:1253:9:1253:9 | a [element 4] | provenance | | +| array_flow.rb:1206:16:1206:28 | call to source | array_flow.rb:1206:5:1206:5 | a [element 2] | provenance | | +| array_flow.rb:1206:34:1206:46 | call to source | array_flow.rb:1206:5:1206:5 | a [element 4] | provenance | | +| array_flow.rb:1208:5:1208:5 | b | array_flow.rb:1209:10:1209:10 | b | provenance | | +| array_flow.rb:1208:9:1208:9 | a [element 4] | array_flow.rb:1208:9:1208:17 | call to slice | provenance | | +| array_flow.rb:1208:9:1208:17 | call to slice | array_flow.rb:1208:5:1208:5 | b | provenance | | +| array_flow.rb:1211:5:1211:5 | b | array_flow.rb:1212:10:1212:10 | b | provenance | | +| array_flow.rb:1211:9:1211:9 | a [element 2] | array_flow.rb:1211:9:1211:19 | call to slice | provenance | | +| array_flow.rb:1211:9:1211:9 | a [element 4] | array_flow.rb:1211:9:1211:19 | call to slice | provenance | | +| array_flow.rb:1211:9:1211:19 | call to slice | array_flow.rb:1211:5:1211:5 | b | provenance | | +| array_flow.rb:1214:5:1214:5 | b | array_flow.rb:1216:10:1216:10 | b | provenance | | +| array_flow.rb:1214:9:1214:9 | a [element 2] | array_flow.rb:1214:9:1214:17 | call to slice | provenance | | +| array_flow.rb:1214:9:1214:9 | a [element 4] | array_flow.rb:1214:9:1214:17 | call to slice | provenance | | +| array_flow.rb:1214:9:1214:17 | call to slice | array_flow.rb:1214:5:1214:5 | b | provenance | | +| array_flow.rb:1221:5:1221:5 | b [element 0] | array_flow.rb:1222:10:1222:10 | b [element 0] | provenance | | +| array_flow.rb:1221:5:1221:5 | b [element 2] | array_flow.rb:1224:10:1224:10 | b [element 2] | provenance | | +| array_flow.rb:1221:9:1221:9 | a [element 2] | array_flow.rb:1221:9:1221:21 | call to slice [element 0] | provenance | | +| array_flow.rb:1221:9:1221:9 | a [element 4] | array_flow.rb:1221:9:1221:21 | call to slice [element 2] | provenance | | +| array_flow.rb:1221:9:1221:21 | call to slice [element 0] | array_flow.rb:1221:5:1221:5 | b [element 0] | provenance | | +| array_flow.rb:1221:9:1221:21 | call to slice [element 2] | array_flow.rb:1221:5:1221:5 | b [element 2] | provenance | | +| array_flow.rb:1222:10:1222:10 | b [element 0] | array_flow.rb:1222:10:1222:13 | ...[...] | provenance | | +| array_flow.rb:1224:10:1224:10 | b [element 2] | array_flow.rb:1224:10:1224:13 | ...[...] | provenance | | +| array_flow.rb:1226:5:1226:5 | b [element] | array_flow.rb:1227:10:1227:10 | b [element] | provenance | | +| array_flow.rb:1226:5:1226:5 | b [element] | array_flow.rb:1228:10:1228:10 | b [element] | provenance | | +| array_flow.rb:1226:9:1226:9 | a [element 2] | array_flow.rb:1226:9:1226:21 | call to slice [element] | provenance | | +| array_flow.rb:1226:9:1226:9 | a [element 4] | array_flow.rb:1226:9:1226:21 | call to slice [element] | provenance | | +| array_flow.rb:1226:9:1226:21 | call to slice [element] | array_flow.rb:1226:5:1226:5 | b [element] | provenance | | +| array_flow.rb:1227:10:1227:10 | b [element] | array_flow.rb:1227:10:1227:13 | ...[...] | provenance | | +| array_flow.rb:1228:10:1228:10 | b [element] | array_flow.rb:1228:10:1228:13 | ...[...] | provenance | | +| array_flow.rb:1230:5:1230:5 | b [element 0] | array_flow.rb:1231:10:1231:10 | b [element 0] | provenance | | +| array_flow.rb:1230:9:1230:9 | a [element 2] | array_flow.rb:1230:9:1230:21 | call to slice [element 0] | provenance | | +| array_flow.rb:1230:9:1230:21 | call to slice [element 0] | array_flow.rb:1230:5:1230:5 | b [element 0] | provenance | | +| array_flow.rb:1231:10:1231:10 | b [element 0] | array_flow.rb:1231:10:1231:13 | ...[...] | provenance | | +| array_flow.rb:1235:5:1235:5 | b [element 0] | array_flow.rb:1236:10:1236:10 | b [element 0] | provenance | | +| array_flow.rb:1235:9:1235:9 | a [element 2] | array_flow.rb:1235:9:1235:22 | call to slice [element 0] | provenance | | +| array_flow.rb:1235:9:1235:22 | call to slice [element 0] | array_flow.rb:1235:5:1235:5 | b [element 0] | provenance | | +| array_flow.rb:1236:10:1236:10 | b [element 0] | array_flow.rb:1236:10:1236:13 | ...[...] | provenance | | +| array_flow.rb:1240:5:1240:5 | b [element] | array_flow.rb:1241:10:1241:10 | b [element] | provenance | | +| array_flow.rb:1240:5:1240:5 | b [element] | array_flow.rb:1242:10:1242:10 | b [element] | provenance | | +| array_flow.rb:1240:9:1240:9 | a [element 2] | array_flow.rb:1240:9:1240:21 | call to slice [element] | provenance | | +| array_flow.rb:1240:9:1240:9 | a [element 4] | array_flow.rb:1240:9:1240:21 | call to slice [element] | provenance | | +| array_flow.rb:1240:9:1240:21 | call to slice [element] | array_flow.rb:1240:5:1240:5 | b [element] | provenance | | +| array_flow.rb:1241:10:1241:10 | b [element] | array_flow.rb:1241:10:1241:13 | ...[...] | provenance | | +| array_flow.rb:1242:10:1242:10 | b [element] | array_flow.rb:1242:10:1242:13 | ...[...] | provenance | | +| array_flow.rb:1244:5:1244:5 | b [element] | array_flow.rb:1245:10:1245:10 | b [element] | provenance | | +| array_flow.rb:1244:5:1244:5 | b [element] | array_flow.rb:1246:10:1246:10 | b [element] | provenance | | +| array_flow.rb:1244:9:1244:9 | a [element 2] | array_flow.rb:1244:9:1244:24 | call to slice [element] | provenance | | +| array_flow.rb:1244:9:1244:9 | a [element 4] | array_flow.rb:1244:9:1244:24 | call to slice [element] | provenance | | +| array_flow.rb:1244:9:1244:24 | call to slice [element] | array_flow.rb:1244:5:1244:5 | b [element] | provenance | | +| array_flow.rb:1245:10:1245:10 | b [element] | array_flow.rb:1245:10:1245:13 | ...[...] | provenance | | +| array_flow.rb:1246:10:1246:10 | b [element] | array_flow.rb:1246:10:1246:13 | ...[...] | provenance | | +| array_flow.rb:1248:5:1248:5 | b [element 2] | array_flow.rb:1251:10:1251:10 | b [element 2] | provenance | | +| array_flow.rb:1248:9:1248:9 | a [element 2] | array_flow.rb:1248:9:1248:20 | call to slice [element 2] | provenance | | +| array_flow.rb:1248:9:1248:20 | call to slice [element 2] | array_flow.rb:1248:5:1248:5 | b [element 2] | provenance | | +| array_flow.rb:1251:10:1251:10 | b [element 2] | array_flow.rb:1251:10:1251:13 | ...[...] | provenance | | +| array_flow.rb:1253:5:1253:5 | b [element] | array_flow.rb:1254:10:1254:10 | b [element] | provenance | | +| array_flow.rb:1253:5:1253:5 | b [element] | array_flow.rb:1255:10:1255:10 | b [element] | provenance | | +| array_flow.rb:1253:5:1253:5 | b [element] | array_flow.rb:1256:10:1256:10 | b [element] | provenance | | +| array_flow.rb:1253:9:1253:9 | a [element 2] | array_flow.rb:1253:9:1253:20 | call to slice [element] | provenance | | +| array_flow.rb:1253:9:1253:9 | a [element 4] | array_flow.rb:1253:9:1253:20 | call to slice [element] | provenance | | +| array_flow.rb:1253:9:1253:20 | call to slice [element] | array_flow.rb:1253:5:1253:5 | b [element] | provenance | | +| array_flow.rb:1254:10:1254:10 | b [element] | array_flow.rb:1254:10:1254:13 | ...[...] | provenance | | +| array_flow.rb:1255:10:1255:10 | b [element] | array_flow.rb:1255:10:1255:13 | ...[...] | provenance | | +| array_flow.rb:1256:10:1256:10 | b [element] | array_flow.rb:1256:10:1256:13 | ...[...] | provenance | | +| array_flow.rb:1260:5:1260:5 | a [element 2] | array_flow.rb:1261:9:1261:9 | a [element 2] | provenance | | +| array_flow.rb:1260:5:1260:5 | a [element 4] | array_flow.rb:1261:9:1261:9 | a [element 4] | provenance | | +| array_flow.rb:1260:16:1260:28 | call to source | array_flow.rb:1260:5:1260:5 | a [element 2] | provenance | | +| array_flow.rb:1260:34:1260:46 | call to source | array_flow.rb:1260:5:1260:5 | a [element 4] | provenance | | +| array_flow.rb:1261:5:1261:5 | b | array_flow.rb:1262:10:1262:10 | b | provenance | | +| array_flow.rb:1261:9:1261:9 | [post] a [element 3] | array_flow.rb:1266:10:1266:10 | a [element 3] | provenance | | +| array_flow.rb:1261:9:1261:9 | a [element 2] | array_flow.rb:1261:9:1261:19 | call to slice! | provenance | | +| array_flow.rb:1261:9:1261:9 | a [element 4] | array_flow.rb:1261:9:1261:9 | [post] a [element 3] | provenance | | +| array_flow.rb:1261:9:1261:19 | call to slice! | array_flow.rb:1261:5:1261:5 | b | provenance | | +| array_flow.rb:1266:10:1266:10 | a [element 3] | array_flow.rb:1266:10:1266:13 | ...[...] | provenance | | +| array_flow.rb:1268:5:1268:5 | a [element 2] | array_flow.rb:1269:9:1269:9 | a [element 2] | provenance | | +| array_flow.rb:1268:5:1268:5 | a [element 4] | array_flow.rb:1269:9:1269:9 | a [element 4] | provenance | | +| array_flow.rb:1268:16:1268:28 | call to source | array_flow.rb:1268:5:1268:5 | a [element 2] | provenance | | +| array_flow.rb:1268:34:1268:46 | call to source | array_flow.rb:1268:5:1268:5 | a [element 4] | provenance | | +| array_flow.rb:1269:5:1269:5 | b | array_flow.rb:1275:10:1275:10 | b | provenance | | +| array_flow.rb:1269:5:1269:5 | b [element] | array_flow.rb:1277:10:1277:10 | b [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1270:10:1270:10 | a [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1271:10:1271:10 | a [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1272:10:1272:10 | a [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | [post] a [element] | array_flow.rb:1273:10:1273:10 | a [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | a [element 2] | array_flow.rb:1269:9:1269:9 | [post] a [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | a [element 2] | array_flow.rb:1269:9:1269:19 | call to slice! | provenance | | +| array_flow.rb:1269:9:1269:9 | a [element 2] | array_flow.rb:1269:9:1269:19 | call to slice! [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | a [element 4] | array_flow.rb:1269:9:1269:9 | [post] a [element] | provenance | | +| array_flow.rb:1269:9:1269:9 | a [element 4] | array_flow.rb:1269:9:1269:19 | call to slice! | provenance | | +| array_flow.rb:1269:9:1269:9 | a [element 4] | array_flow.rb:1269:9:1269:19 | call to slice! [element] | provenance | | +| array_flow.rb:1269:9:1269:19 | call to slice! | array_flow.rb:1269:5:1269:5 | b | provenance | | +| array_flow.rb:1269:9:1269:19 | call to slice! [element] | array_flow.rb:1269:5:1269:5 | b [element] | provenance | | +| array_flow.rb:1270:10:1270:10 | a [element] | array_flow.rb:1270:10:1270:13 | ...[...] | provenance | | +| array_flow.rb:1271:10:1271:10 | a [element] | array_flow.rb:1271:10:1271:13 | ...[...] | provenance | | +| array_flow.rb:1272:10:1272:10 | a [element] | array_flow.rb:1272:10:1272:13 | ...[...] | provenance | | +| array_flow.rb:1273:10:1273:10 | a [element] | array_flow.rb:1273:10:1273:13 | ...[...] | provenance | | +| array_flow.rb:1277:10:1277:10 | b [element] | array_flow.rb:1277:10:1277:13 | ...[...] | provenance | | +| array_flow.rb:1279:5:1279:5 | a [element 2] | array_flow.rb:1280:9:1280:9 | a [element 2] | provenance | | +| array_flow.rb:1279:5:1279:5 | a [element 4] | array_flow.rb:1280:9:1280:9 | a [element 4] | provenance | | +| array_flow.rb:1279:16:1279:28 | call to source | array_flow.rb:1279:5:1279:5 | a [element 2] | provenance | | +| array_flow.rb:1279:34:1279:46 | call to source | array_flow.rb:1279:5:1279:5 | a [element 4] | provenance | | +| array_flow.rb:1280:5:1280:5 | b [element 0] | array_flow.rb:1281:10:1281:10 | b [element 0] | provenance | | +| array_flow.rb:1280:5:1280:5 | b [element 2] | array_flow.rb:1283:10:1283:10 | b [element 2] | provenance | | +| array_flow.rb:1280:9:1280:9 | a [element 2] | array_flow.rb:1280:9:1280:22 | call to slice! [element 0] | provenance | | +| array_flow.rb:1280:9:1280:9 | a [element 4] | array_flow.rb:1280:9:1280:22 | call to slice! [element 2] | provenance | | +| array_flow.rb:1280:9:1280:22 | call to slice! [element 0] | array_flow.rb:1280:5:1280:5 | b [element 0] | provenance | | +| array_flow.rb:1280:9:1280:22 | call to slice! [element 2] | array_flow.rb:1280:5:1280:5 | b [element 2] | provenance | | +| array_flow.rb:1281:10:1281:10 | b [element 0] | array_flow.rb:1281:10:1281:13 | ...[...] | provenance | | +| array_flow.rb:1283:10:1283:10 | b [element 2] | array_flow.rb:1283:10:1283:13 | ...[...] | provenance | | +| array_flow.rb:1290:5:1290:5 | a [element 2] | array_flow.rb:1291:9:1291:9 | a [element 2] | provenance | | +| array_flow.rb:1290:5:1290:5 | a [element 4] | array_flow.rb:1291:9:1291:9 | a [element 4] | provenance | | +| array_flow.rb:1290:16:1290:28 | call to source | array_flow.rb:1290:5:1290:5 | a [element 2] | provenance | | +| array_flow.rb:1290:34:1290:46 | call to source | array_flow.rb:1290:5:1290:5 | a [element 4] | provenance | | +| array_flow.rb:1291:5:1291:5 | b [element 0] | array_flow.rb:1292:10:1292:10 | b [element 0] | provenance | | +| array_flow.rb:1291:9:1291:9 | [post] a [element 2] | array_flow.rb:1297:10:1297:10 | a [element 2] | provenance | | +| array_flow.rb:1291:9:1291:9 | a [element 2] | array_flow.rb:1291:9:1291:22 | call to slice! [element 0] | provenance | | +| array_flow.rb:1291:9:1291:9 | a [element 4] | array_flow.rb:1291:9:1291:9 | [post] a [element 2] | provenance | | +| array_flow.rb:1291:9:1291:22 | call to slice! [element 0] | array_flow.rb:1291:5:1291:5 | b [element 0] | provenance | | +| array_flow.rb:1292:10:1292:10 | b [element 0] | array_flow.rb:1292:10:1292:13 | ...[...] | provenance | | +| array_flow.rb:1297:10:1297:10 | a [element 2] | array_flow.rb:1297:10:1297:13 | ...[...] | provenance | | +| array_flow.rb:1301:5:1301:5 | a [element 2] | array_flow.rb:1302:9:1302:9 | a [element 2] | provenance | | +| array_flow.rb:1301:5:1301:5 | a [element 4] | array_flow.rb:1302:9:1302:9 | a [element 4] | provenance | | +| array_flow.rb:1301:16:1301:28 | call to source | array_flow.rb:1301:5:1301:5 | a [element 2] | provenance | | +| array_flow.rb:1301:34:1301:46 | call to source | array_flow.rb:1301:5:1301:5 | a [element 4] | provenance | | +| array_flow.rb:1302:5:1302:5 | b [element 0] | array_flow.rb:1303:10:1303:10 | b [element 0] | provenance | | +| array_flow.rb:1302:9:1302:9 | [post] a [element 2] | array_flow.rb:1308:10:1308:10 | a [element 2] | provenance | | +| array_flow.rb:1302:9:1302:9 | a [element 2] | array_flow.rb:1302:9:1302:23 | call to slice! [element 0] | provenance | | +| array_flow.rb:1302:9:1302:9 | a [element 4] | array_flow.rb:1302:9:1302:9 | [post] a [element 2] | provenance | | +| array_flow.rb:1302:9:1302:23 | call to slice! [element 0] | array_flow.rb:1302:5:1302:5 | b [element 0] | provenance | | +| array_flow.rb:1303:10:1303:10 | b [element 0] | array_flow.rb:1303:10:1303:13 | ...[...] | provenance | | +| array_flow.rb:1308:10:1308:10 | a [element 2] | array_flow.rb:1308:10:1308:13 | ...[...] | provenance | | +| array_flow.rb:1312:5:1312:5 | a [element 2] | array_flow.rb:1313:9:1313:9 | a [element 2] | provenance | | +| array_flow.rb:1312:5:1312:5 | a [element 4] | array_flow.rb:1313:9:1313:9 | a [element 4] | provenance | | +| array_flow.rb:1312:16:1312:28 | call to source | array_flow.rb:1312:5:1312:5 | a [element 2] | provenance | | +| array_flow.rb:1312:34:1312:46 | call to source | array_flow.rb:1312:5:1312:5 | a [element 4] | provenance | | +| array_flow.rb:1313:5:1313:5 | b [element] | array_flow.rb:1314:10:1314:10 | b [element] | provenance | | +| array_flow.rb:1313:5:1313:5 | b [element] | array_flow.rb:1315:10:1315:10 | b [element] | provenance | | +| array_flow.rb:1313:5:1313:5 | b [element] | array_flow.rb:1316:10:1316:10 | b [element] | provenance | | +| array_flow.rb:1313:9:1313:9 | [post] a [element] | array_flow.rb:1317:10:1317:10 | a [element] | provenance | | +| array_flow.rb:1313:9:1313:9 | [post] a [element] | array_flow.rb:1318:10:1318:10 | a [element] | provenance | | +| array_flow.rb:1313:9:1313:9 | [post] a [element] | array_flow.rb:1319:10:1319:10 | a [element] | provenance | | +| array_flow.rb:1313:9:1313:9 | a [element 2] | array_flow.rb:1313:9:1313:9 | [post] a [element] | provenance | | +| array_flow.rb:1313:9:1313:9 | a [element 2] | array_flow.rb:1313:9:1313:22 | call to slice! [element] | provenance | | +| array_flow.rb:1313:9:1313:9 | a [element 4] | array_flow.rb:1313:9:1313:9 | [post] a [element] | provenance | | +| array_flow.rb:1313:9:1313:9 | a [element 4] | array_flow.rb:1313:9:1313:22 | call to slice! [element] | provenance | | +| array_flow.rb:1313:9:1313:22 | call to slice! [element] | array_flow.rb:1313:5:1313:5 | b [element] | provenance | | +| array_flow.rb:1314:10:1314:10 | b [element] | array_flow.rb:1314:10:1314:13 | ...[...] | provenance | | +| array_flow.rb:1315:10:1315:10 | b [element] | array_flow.rb:1315:10:1315:13 | ...[...] | provenance | | +| array_flow.rb:1316:10:1316:10 | b [element] | array_flow.rb:1316:10:1316:13 | ...[...] | provenance | | +| array_flow.rb:1317:10:1317:10 | a [element] | array_flow.rb:1317:10:1317:13 | ...[...] | provenance | | +| array_flow.rb:1318:10:1318:10 | a [element] | array_flow.rb:1318:10:1318:13 | ...[...] | provenance | | +| array_flow.rb:1319:10:1319:10 | a [element] | array_flow.rb:1319:10:1319:13 | ...[...] | provenance | | +| array_flow.rb:1321:5:1321:5 | a [element 2] | array_flow.rb:1322:9:1322:9 | a [element 2] | provenance | | +| array_flow.rb:1321:5:1321:5 | a [element 4] | array_flow.rb:1322:9:1322:9 | a [element 4] | provenance | | +| array_flow.rb:1321:16:1321:28 | call to source | array_flow.rb:1321:5:1321:5 | a [element 2] | provenance | | +| array_flow.rb:1321:34:1321:46 | call to source | array_flow.rb:1321:5:1321:5 | a [element 4] | provenance | | +| array_flow.rb:1322:5:1322:5 | b [element] | array_flow.rb:1323:10:1323:10 | b [element] | provenance | | +| array_flow.rb:1322:5:1322:5 | b [element] | array_flow.rb:1324:10:1324:10 | b [element] | provenance | | +| array_flow.rb:1322:5:1322:5 | b [element] | array_flow.rb:1325:10:1325:10 | b [element] | provenance | | +| array_flow.rb:1322:9:1322:9 | [post] a [element] | array_flow.rb:1326:10:1326:10 | a [element] | provenance | | +| array_flow.rb:1322:9:1322:9 | [post] a [element] | array_flow.rb:1327:10:1327:10 | a [element] | provenance | | +| array_flow.rb:1322:9:1322:9 | [post] a [element] | array_flow.rb:1328:10:1328:10 | a [element] | provenance | | +| array_flow.rb:1322:9:1322:9 | a [element 2] | array_flow.rb:1322:9:1322:9 | [post] a [element] | provenance | | +| array_flow.rb:1322:9:1322:9 | a [element 2] | array_flow.rb:1322:9:1322:22 | call to slice! [element] | provenance | | +| array_flow.rb:1322:9:1322:9 | a [element 4] | array_flow.rb:1322:9:1322:9 | [post] a [element] | provenance | | +| array_flow.rb:1322:9:1322:9 | a [element 4] | array_flow.rb:1322:9:1322:22 | call to slice! [element] | provenance | | +| array_flow.rb:1322:9:1322:22 | call to slice! [element] | array_flow.rb:1322:5:1322:5 | b [element] | provenance | | +| array_flow.rb:1323:10:1323:10 | b [element] | array_flow.rb:1323:10:1323:13 | ...[...] | provenance | | +| array_flow.rb:1324:10:1324:10 | b [element] | array_flow.rb:1324:10:1324:13 | ...[...] | provenance | | +| array_flow.rb:1325:10:1325:10 | b [element] | array_flow.rb:1325:10:1325:13 | ...[...] | provenance | | +| array_flow.rb:1326:10:1326:10 | a [element] | array_flow.rb:1326:10:1326:13 | ...[...] | provenance | | +| array_flow.rb:1327:10:1327:10 | a [element] | array_flow.rb:1327:10:1327:13 | ...[...] | provenance | | +| array_flow.rb:1328:10:1328:10 | a [element] | array_flow.rb:1328:10:1328:13 | ...[...] | provenance | | +| array_flow.rb:1330:5:1330:5 | a [element 2] | array_flow.rb:1331:9:1331:9 | a [element 2] | provenance | | +| array_flow.rb:1330:5:1330:5 | a [element 4] | array_flow.rb:1331:9:1331:9 | a [element 4] | provenance | | +| array_flow.rb:1330:16:1330:28 | call to source | array_flow.rb:1330:5:1330:5 | a [element 2] | provenance | | +| array_flow.rb:1330:34:1330:46 | call to source | array_flow.rb:1330:5:1330:5 | a [element 4] | provenance | | +| array_flow.rb:1331:5:1331:5 | b [element] | array_flow.rb:1332:10:1332:10 | b [element] | provenance | | +| array_flow.rb:1331:5:1331:5 | b [element] | array_flow.rb:1333:10:1333:10 | b [element] | provenance | | +| array_flow.rb:1331:5:1331:5 | b [element] | array_flow.rb:1334:10:1334:10 | b [element] | provenance | | +| array_flow.rb:1331:9:1331:9 | [post] a [element] | array_flow.rb:1335:10:1335:10 | a [element] | provenance | | +| array_flow.rb:1331:9:1331:9 | [post] a [element] | array_flow.rb:1336:10:1336:10 | a [element] | provenance | | +| array_flow.rb:1331:9:1331:9 | [post] a [element] | array_flow.rb:1337:10:1337:10 | a [element] | provenance | | +| array_flow.rb:1331:9:1331:9 | a [element 2] | array_flow.rb:1331:9:1331:9 | [post] a [element] | provenance | | +| array_flow.rb:1331:9:1331:9 | a [element 2] | array_flow.rb:1331:9:1331:25 | call to slice! [element] | provenance | | +| array_flow.rb:1331:9:1331:9 | a [element 4] | array_flow.rb:1331:9:1331:9 | [post] a [element] | provenance | | +| array_flow.rb:1331:9:1331:9 | a [element 4] | array_flow.rb:1331:9:1331:25 | call to slice! [element] | provenance | | +| array_flow.rb:1331:9:1331:25 | call to slice! [element] | array_flow.rb:1331:5:1331:5 | b [element] | provenance | | +| array_flow.rb:1332:10:1332:10 | b [element] | array_flow.rb:1332:10:1332:13 | ...[...] | provenance | | +| array_flow.rb:1333:10:1333:10 | b [element] | array_flow.rb:1333:10:1333:13 | ...[...] | provenance | | +| array_flow.rb:1334:10:1334:10 | b [element] | array_flow.rb:1334:10:1334:13 | ...[...] | provenance | | +| array_flow.rb:1335:10:1335:10 | a [element] | array_flow.rb:1335:10:1335:13 | ...[...] | provenance | | +| array_flow.rb:1336:10:1336:10 | a [element] | array_flow.rb:1336:10:1336:13 | ...[...] | provenance | | +| array_flow.rb:1337:10:1337:10 | a [element] | array_flow.rb:1337:10:1337:13 | ...[...] | provenance | | +| array_flow.rb:1339:5:1339:5 | a [element 2] | array_flow.rb:1340:9:1340:9 | a [element 2] | provenance | | +| array_flow.rb:1339:5:1339:5 | a [element 4] | array_flow.rb:1340:9:1340:9 | a [element 4] | provenance | | +| array_flow.rb:1339:16:1339:28 | call to source | array_flow.rb:1339:5:1339:5 | a [element 2] | provenance | | +| array_flow.rb:1339:34:1339:46 | call to source | array_flow.rb:1339:5:1339:5 | a [element 4] | provenance | | +| array_flow.rb:1340:5:1340:5 | b [element 2] | array_flow.rb:1343:10:1343:10 | b [element 2] | provenance | | +| array_flow.rb:1340:9:1340:9 | [post] a [element 1] | array_flow.rb:1345:10:1345:10 | a [element 1] | provenance | | +| array_flow.rb:1340:9:1340:9 | a [element 2] | array_flow.rb:1340:9:1340:21 | call to slice! [element 2] | provenance | | +| array_flow.rb:1340:9:1340:9 | a [element 4] | array_flow.rb:1340:9:1340:9 | [post] a [element 1] | provenance | | +| array_flow.rb:1340:9:1340:21 | call to slice! [element 2] | array_flow.rb:1340:5:1340:5 | b [element 2] | provenance | | +| array_flow.rb:1343:10:1343:10 | b [element 2] | array_flow.rb:1343:10:1343:13 | ...[...] | provenance | | +| array_flow.rb:1345:10:1345:10 | a [element 1] | array_flow.rb:1345:10:1345:13 | ...[...] | provenance | | +| array_flow.rb:1348:5:1348:5 | a [element 2] | array_flow.rb:1349:9:1349:9 | a [element 2] | provenance | | +| array_flow.rb:1348:5:1348:5 | a [element 4] | array_flow.rb:1349:9:1349:9 | a [element 4] | provenance | | +| array_flow.rb:1348:16:1348:28 | call to source | array_flow.rb:1348:5:1348:5 | a [element 2] | provenance | | +| array_flow.rb:1348:34:1348:46 | call to source | array_flow.rb:1348:5:1348:5 | a [element 4] | provenance | | +| array_flow.rb:1349:5:1349:5 | b [element] | array_flow.rb:1350:10:1350:10 | b [element] | provenance | | +| array_flow.rb:1349:5:1349:5 | b [element] | array_flow.rb:1351:10:1351:10 | b [element] | provenance | | +| array_flow.rb:1349:5:1349:5 | b [element] | array_flow.rb:1352:10:1352:10 | b [element] | provenance | | +| array_flow.rb:1349:9:1349:9 | [post] a [element] | array_flow.rb:1353:10:1353:10 | a [element] | provenance | | +| array_flow.rb:1349:9:1349:9 | [post] a [element] | array_flow.rb:1354:10:1354:10 | a [element] | provenance | | +| array_flow.rb:1349:9:1349:9 | [post] a [element] | array_flow.rb:1355:10:1355:10 | a [element] | provenance | | +| array_flow.rb:1349:9:1349:9 | a [element 2] | array_flow.rb:1349:9:1349:9 | [post] a [element] | provenance | | +| array_flow.rb:1349:9:1349:9 | a [element 2] | array_flow.rb:1349:9:1349:21 | call to slice! [element] | provenance | | +| array_flow.rb:1349:9:1349:9 | a [element 4] | array_flow.rb:1349:9:1349:9 | [post] a [element] | provenance | | +| array_flow.rb:1349:9:1349:9 | a [element 4] | array_flow.rb:1349:9:1349:21 | call to slice! [element] | provenance | | +| array_flow.rb:1349:9:1349:21 | call to slice! [element] | array_flow.rb:1349:5:1349:5 | b [element] | provenance | | +| array_flow.rb:1350:10:1350:10 | b [element] | array_flow.rb:1350:10:1350:13 | ...[...] | provenance | | +| array_flow.rb:1351:10:1351:10 | b [element] | array_flow.rb:1351:10:1351:13 | ...[...] | provenance | | +| array_flow.rb:1352:10:1352:10 | b [element] | array_flow.rb:1352:10:1352:13 | ...[...] | provenance | | +| array_flow.rb:1353:10:1353:10 | a [element] | array_flow.rb:1353:10:1353:13 | ...[...] | provenance | | +| array_flow.rb:1354:10:1354:10 | a [element] | array_flow.rb:1354:10:1354:13 | ...[...] | provenance | | +| array_flow.rb:1355:10:1355:10 | a [element] | array_flow.rb:1355:10:1355:13 | ...[...] | provenance | | +| array_flow.rb:1359:5:1359:5 | a [element 2] | array_flow.rb:1360:9:1360:9 | a [element 2] | provenance | | +| array_flow.rb:1359:16:1359:26 | call to source | array_flow.rb:1359:5:1359:5 | a [element 2] | provenance | | +| array_flow.rb:1360:9:1360:9 | a [element 2] | array_flow.rb:1360:27:1360:27 | x | provenance | | +| array_flow.rb:1360:27:1360:27 | x | array_flow.rb:1361:14:1361:14 | x | provenance | | +| array_flow.rb:1367:5:1367:5 | a [element 2] | array_flow.rb:1368:9:1368:9 | a [element 2] | provenance | | +| array_flow.rb:1367:16:1367:26 | call to source | array_flow.rb:1367:5:1367:5 | a [element 2] | provenance | | +| array_flow.rb:1368:9:1368:9 | a [element 2] | array_flow.rb:1368:28:1368:28 | x | provenance | | +| array_flow.rb:1368:28:1368:28 | x | array_flow.rb:1369:14:1369:14 | x | provenance | | +| array_flow.rb:1375:5:1375:5 | a [element 2] | array_flow.rb:1376:9:1376:9 | a [element 2] | provenance | | +| array_flow.rb:1375:16:1375:26 | call to source | array_flow.rb:1375:5:1375:5 | a [element 2] | provenance | | +| array_flow.rb:1376:9:1376:9 | a [element 2] | array_flow.rb:1376:26:1376:26 | x | provenance | | +| array_flow.rb:1376:9:1376:9 | a [element 2] | array_flow.rb:1376:29:1376:29 | y | provenance | | +| array_flow.rb:1376:26:1376:26 | x | array_flow.rb:1377:14:1377:14 | x | provenance | | +| array_flow.rb:1376:29:1376:29 | y | array_flow.rb:1378:14:1378:14 | y | provenance | | +| array_flow.rb:1383:5:1383:5 | a [element 2] | array_flow.rb:1384:9:1384:9 | a [element 2] | provenance | | +| array_flow.rb:1383:5:1383:5 | a [element 2] | array_flow.rb:1387:9:1387:9 | a [element 2] | provenance | | +| array_flow.rb:1383:16:1383:26 | call to source | array_flow.rb:1383:5:1383:5 | a [element 2] | provenance | | +| array_flow.rb:1384:5:1384:5 | b [element] | array_flow.rb:1385:10:1385:10 | b [element] | provenance | | +| array_flow.rb:1384:5:1384:5 | b [element] | array_flow.rb:1386:10:1386:10 | b [element] | provenance | | +| array_flow.rb:1384:9:1384:9 | a [element 2] | array_flow.rb:1384:9:1384:14 | call to sort [element] | provenance | | +| array_flow.rb:1384:9:1384:14 | call to sort [element] | array_flow.rb:1384:5:1384:5 | b [element] | provenance | | +| array_flow.rb:1385:10:1385:10 | b [element] | array_flow.rb:1385:10:1385:13 | ...[...] | provenance | | +| array_flow.rb:1386:10:1386:10 | b [element] | array_flow.rb:1386:10:1386:13 | ...[...] | provenance | | +| array_flow.rb:1387:5:1387:5 | c [element] | array_flow.rb:1392:10:1392:10 | c [element] | provenance | | +| array_flow.rb:1387:5:1387:5 | c [element] | array_flow.rb:1393:10:1393:10 | c [element] | provenance | | +| array_flow.rb:1387:9:1387:9 | a [element 2] | array_flow.rb:1387:9:1391:7 | call to sort [element] | provenance | | +| array_flow.rb:1387:9:1387:9 | a [element 2] | array_flow.rb:1387:20:1387:20 | x | provenance | | +| array_flow.rb:1387:9:1387:9 | a [element 2] | array_flow.rb:1387:23:1387:23 | y | provenance | | +| array_flow.rb:1387:9:1391:7 | call to sort [element] | array_flow.rb:1387:5:1387:5 | c [element] | provenance | | +| array_flow.rb:1387:20:1387:20 | x | array_flow.rb:1388:14:1388:14 | x | provenance | | +| array_flow.rb:1387:23:1387:23 | y | array_flow.rb:1389:14:1389:14 | y | provenance | | +| array_flow.rb:1392:10:1392:10 | c [element] | array_flow.rb:1392:10:1392:13 | ...[...] | provenance | | +| array_flow.rb:1393:10:1393:10 | c [element] | array_flow.rb:1393:10:1393:13 | ...[...] | provenance | | +| array_flow.rb:1397:5:1397:5 | a [element 2] | array_flow.rb:1398:9:1398:9 | a [element 2] | provenance | | +| array_flow.rb:1397:16:1397:26 | call to source | array_flow.rb:1397:5:1397:5 | a [element 2] | provenance | | +| array_flow.rb:1398:5:1398:5 | b [element] | array_flow.rb:1399:10:1399:10 | b [element] | provenance | | +| array_flow.rb:1398:5:1398:5 | b [element] | array_flow.rb:1400:10:1400:10 | b [element] | provenance | | +| array_flow.rb:1398:9:1398:9 | [post] a [element] | array_flow.rb:1401:10:1401:10 | a [element] | provenance | | +| array_flow.rb:1398:9:1398:9 | [post] a [element] | array_flow.rb:1402:10:1402:10 | a [element] | provenance | | +| array_flow.rb:1398:9:1398:9 | a [element 2] | array_flow.rb:1398:9:1398:9 | [post] a [element] | provenance | | +| array_flow.rb:1398:9:1398:9 | a [element 2] | array_flow.rb:1398:9:1398:15 | call to sort! [element] | provenance | | +| array_flow.rb:1398:9:1398:15 | call to sort! [element] | array_flow.rb:1398:5:1398:5 | b [element] | provenance | | +| array_flow.rb:1399:10:1399:10 | b [element] | array_flow.rb:1399:10:1399:13 | ...[...] | provenance | | +| array_flow.rb:1400:10:1400:10 | b [element] | array_flow.rb:1400:10:1400:13 | ...[...] | provenance | | +| array_flow.rb:1401:10:1401:10 | a [element] | array_flow.rb:1401:10:1401:13 | ...[...] | provenance | | +| array_flow.rb:1402:10:1402:10 | a [element] | array_flow.rb:1402:10:1402:13 | ...[...] | provenance | | +| array_flow.rb:1404:5:1404:5 | a [element 2] | array_flow.rb:1405:9:1405:9 | a [element 2] | provenance | | +| array_flow.rb:1404:16:1404:26 | call to source | array_flow.rb:1404:5:1404:5 | a [element 2] | provenance | | +| array_flow.rb:1405:5:1405:5 | b [element] | array_flow.rb:1410:10:1410:10 | b [element] | provenance | | +| array_flow.rb:1405:5:1405:5 | b [element] | array_flow.rb:1411:10:1411:10 | b [element] | provenance | | +| array_flow.rb:1405:9:1405:9 | [post] a [element] | array_flow.rb:1412:10:1412:10 | a [element] | provenance | | +| array_flow.rb:1405:9:1405:9 | [post] a [element] | array_flow.rb:1413:10:1413:10 | a [element] | provenance | | +| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:9:1405:9 | [post] a [element] | provenance | | +| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:9:1409:7 | call to sort! [element] | provenance | | +| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:21:1405:21 | x | provenance | | +| array_flow.rb:1405:9:1405:9 | a [element 2] | array_flow.rb:1405:24:1405:24 | y | provenance | | +| array_flow.rb:1405:9:1409:7 | call to sort! [element] | array_flow.rb:1405:5:1405:5 | b [element] | provenance | | +| array_flow.rb:1405:21:1405:21 | x | array_flow.rb:1406:14:1406:14 | x | provenance | | +| array_flow.rb:1405:24:1405:24 | y | array_flow.rb:1407:14:1407:14 | y | provenance | | +| array_flow.rb:1410:10:1410:10 | b [element] | array_flow.rb:1410:10:1410:13 | ...[...] | provenance | | +| array_flow.rb:1411:10:1411:10 | b [element] | array_flow.rb:1411:10:1411:13 | ...[...] | provenance | | +| array_flow.rb:1412:10:1412:10 | a [element] | array_flow.rb:1412:10:1412:13 | ...[...] | provenance | | +| array_flow.rb:1413:10:1413:10 | a [element] | array_flow.rb:1413:10:1413:13 | ...[...] | provenance | | +| array_flow.rb:1417:5:1417:5 | a [element 2] | array_flow.rb:1418:9:1418:9 | a [element 2] | provenance | | +| array_flow.rb:1417:16:1417:26 | call to source | array_flow.rb:1417:5:1417:5 | a [element 2] | provenance | | +| array_flow.rb:1418:5:1418:5 | b [element] | array_flow.rb:1422:10:1422:10 | b [element] | provenance | | +| array_flow.rb:1418:5:1418:5 | b [element] | array_flow.rb:1423:10:1423:10 | b [element] | provenance | | +| array_flow.rb:1418:9:1418:9 | a [element 2] | array_flow.rb:1418:9:1421:7 | call to sort_by [element] | provenance | | +| array_flow.rb:1418:9:1418:9 | a [element 2] | array_flow.rb:1418:23:1418:23 | x | provenance | | +| array_flow.rb:1418:9:1421:7 | call to sort_by [element] | array_flow.rb:1418:5:1418:5 | b [element] | provenance | | +| array_flow.rb:1418:23:1418:23 | x | array_flow.rb:1419:14:1419:14 | x | provenance | | +| array_flow.rb:1422:10:1422:10 | b [element] | array_flow.rb:1422:10:1422:13 | ...[...] | provenance | | +| array_flow.rb:1423:10:1423:10 | b [element] | array_flow.rb:1423:10:1423:13 | ...[...] | provenance | | +| array_flow.rb:1427:5:1427:5 | a [element 2] | array_flow.rb:1428:9:1428:9 | a [element 2] | provenance | | +| array_flow.rb:1427:16:1427:26 | call to source | array_flow.rb:1427:5:1427:5 | a [element 2] | provenance | | +| array_flow.rb:1428:5:1428:5 | b [element] | array_flow.rb:1434:10:1434:10 | b [element] | provenance | | +| array_flow.rb:1428:5:1428:5 | b [element] | array_flow.rb:1435:10:1435:10 | b [element] | provenance | | +| array_flow.rb:1428:9:1428:9 | [post] a [element] | array_flow.rb:1432:10:1432:10 | a [element] | provenance | | +| array_flow.rb:1428:9:1428:9 | [post] a [element] | array_flow.rb:1433:10:1433:10 | a [element] | provenance | | +| array_flow.rb:1428:9:1428:9 | a [element 2] | array_flow.rb:1428:9:1428:9 | [post] a [element] | provenance | | +| array_flow.rb:1428:9:1428:9 | a [element 2] | array_flow.rb:1428:9:1431:7 | call to sort_by! [element] | provenance | | +| array_flow.rb:1428:9:1428:9 | a [element 2] | array_flow.rb:1428:24:1428:24 | x | provenance | | +| array_flow.rb:1428:9:1431:7 | call to sort_by! [element] | array_flow.rb:1428:5:1428:5 | b [element] | provenance | | +| array_flow.rb:1428:24:1428:24 | x | array_flow.rb:1429:14:1429:14 | x | provenance | | +| array_flow.rb:1432:10:1432:10 | a [element] | array_flow.rb:1432:10:1432:13 | ...[...] | provenance | | +| array_flow.rb:1433:10:1433:10 | a [element] | array_flow.rb:1433:10:1433:13 | ...[...] | provenance | | +| array_flow.rb:1434:10:1434:10 | b [element] | array_flow.rb:1434:10:1434:13 | ...[...] | provenance | | +| array_flow.rb:1435:10:1435:10 | b [element] | array_flow.rb:1435:10:1435:13 | ...[...] | provenance | | +| array_flow.rb:1439:5:1439:5 | a [element 2] | array_flow.rb:1440:9:1440:9 | a [element 2] | provenance | | +| array_flow.rb:1439:16:1439:26 | call to source | array_flow.rb:1439:5:1439:5 | a [element 2] | provenance | | +| array_flow.rb:1440:9:1440:9 | a [element 2] | array_flow.rb:1440:19:1440:19 | x | provenance | | +| array_flow.rb:1440:19:1440:19 | x | array_flow.rb:1441:14:1441:14 | x | provenance | | +| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1448:9:1448:9 | a [element 2] | provenance | | +| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1453:9:1453:9 | a [element 2] | provenance | | +| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1459:9:1459:9 | a [element 2] | provenance | | +| array_flow.rb:1447:5:1447:5 | a [element 2] | array_flow.rb:1466:9:1466:9 | a [element 2] | provenance | | +| array_flow.rb:1447:5:1447:5 | a [element 3] | array_flow.rb:1448:9:1448:9 | a [element 3] | provenance | | +| array_flow.rb:1447:5:1447:5 | a [element 3] | array_flow.rb:1459:9:1459:9 | a [element 3] | provenance | | +| array_flow.rb:1447:16:1447:28 | call to source | array_flow.rb:1447:5:1447:5 | a [element 2] | provenance | | +| array_flow.rb:1447:31:1447:43 | call to source | array_flow.rb:1447:5:1447:5 | a [element 3] | provenance | | +| array_flow.rb:1448:5:1448:5 | b [element 2] | array_flow.rb:1451:10:1451:10 | b [element 2] | provenance | | +| array_flow.rb:1448:5:1448:5 | b [element 3] | array_flow.rb:1452:10:1452:10 | b [element 3] | provenance | | +| array_flow.rb:1448:9:1448:9 | a [element 2] | array_flow.rb:1448:9:1448:17 | call to take [element 2] | provenance | | +| array_flow.rb:1448:9:1448:9 | a [element 3] | array_flow.rb:1448:9:1448:17 | call to take [element 3] | provenance | | +| array_flow.rb:1448:9:1448:17 | call to take [element 2] | array_flow.rb:1448:5:1448:5 | b [element 2] | provenance | | +| array_flow.rb:1448:9:1448:17 | call to take [element 3] | array_flow.rb:1448:5:1448:5 | b [element 3] | provenance | | +| array_flow.rb:1451:10:1451:10 | b [element 2] | array_flow.rb:1451:10:1451:13 | ...[...] | provenance | | +| array_flow.rb:1452:10:1452:10 | b [element 3] | array_flow.rb:1452:10:1452:13 | ...[...] | provenance | | +| array_flow.rb:1453:5:1453:5 | b [element 2] | array_flow.rb:1456:10:1456:10 | b [element 2] | provenance | | +| array_flow.rb:1453:5:1453:5 | b [element 2] | array_flow.rb:1458:10:1458:10 | b [element 2] | provenance | | +| array_flow.rb:1453:9:1453:9 | a [element 2] | array_flow.rb:1453:9:1453:17 | call to take [element 2] | provenance | | +| array_flow.rb:1453:9:1453:17 | call to take [element 2] | array_flow.rb:1453:5:1453:5 | b [element 2] | provenance | | +| array_flow.rb:1456:10:1456:10 | b [element 2] | array_flow.rb:1456:10:1456:13 | ...[...] | provenance | | +| array_flow.rb:1458:10:1458:10 | b [element 2] | array_flow.rb:1458:10:1458:13 | ...[...] | provenance | | +| array_flow.rb:1459:5:1459:5 | b [element 2] | array_flow.rb:1462:10:1462:10 | b [element 2] | provenance | | +| array_flow.rb:1459:5:1459:5 | b [element 2] | array_flow.rb:1464:10:1464:10 | b [element 2] | provenance | | +| array_flow.rb:1459:5:1459:5 | b [element 3] | array_flow.rb:1463:10:1463:10 | b [element 3] | provenance | | +| array_flow.rb:1459:5:1459:5 | b [element 3] | array_flow.rb:1464:10:1464:10 | b [element 3] | provenance | | +| array_flow.rb:1459:9:1459:9 | a [element 2] | array_flow.rb:1459:9:1459:19 | call to take [element 2] | provenance | | +| array_flow.rb:1459:9:1459:9 | a [element 3] | array_flow.rb:1459:9:1459:19 | call to take [element 3] | provenance | | +| array_flow.rb:1459:9:1459:19 | call to take [element 2] | array_flow.rb:1459:5:1459:5 | b [element 2] | provenance | | +| array_flow.rb:1459:9:1459:19 | call to take [element 3] | array_flow.rb:1459:5:1459:5 | b [element 3] | provenance | | +| array_flow.rb:1462:10:1462:10 | b [element 2] | array_flow.rb:1462:10:1462:13 | ...[...] | provenance | | +| array_flow.rb:1463:10:1463:10 | b [element 3] | array_flow.rb:1463:10:1463:13 | ...[...] | provenance | | +| array_flow.rb:1464:10:1464:10 | b [element 2] | array_flow.rb:1464:10:1464:13 | ...[...] | provenance | | +| array_flow.rb:1464:10:1464:10 | b [element 3] | array_flow.rb:1464:10:1464:13 | ...[...] | provenance | | +| array_flow.rb:1465:5:1465:5 | [post] a [element] | array_flow.rb:1466:9:1466:9 | a [element] | provenance | | +| array_flow.rb:1465:12:1465:24 | call to source | array_flow.rb:1465:5:1465:5 | [post] a [element] | provenance | | +| array_flow.rb:1466:5:1466:5 | b [element 2] | array_flow.rb:1467:10:1467:10 | b [element 2] | provenance | | +| array_flow.rb:1466:5:1466:5 | b [element] | array_flow.rb:1467:10:1467:10 | b [element] | provenance | | +| array_flow.rb:1466:9:1466:9 | a [element 2] | array_flow.rb:1466:9:1466:17 | call to take [element 2] | provenance | | +| array_flow.rb:1466:9:1466:9 | a [element] | array_flow.rb:1466:9:1466:17 | call to take [element] | provenance | | +| array_flow.rb:1466:9:1466:17 | call to take [element 2] | array_flow.rb:1466:5:1466:5 | b [element 2] | provenance | | +| array_flow.rb:1466:9:1466:17 | call to take [element] | array_flow.rb:1466:5:1466:5 | b [element] | provenance | | +| array_flow.rb:1467:10:1467:10 | b [element 2] | array_flow.rb:1467:10:1467:13 | ...[...] | provenance | | +| array_flow.rb:1467:10:1467:10 | b [element] | array_flow.rb:1467:10:1467:13 | ...[...] | provenance | | +| array_flow.rb:1471:5:1471:5 | a [element 2] | array_flow.rb:1472:9:1472:9 | a [element 2] | provenance | | +| array_flow.rb:1471:16:1471:26 | call to source | array_flow.rb:1471:5:1471:5 | a [element 2] | provenance | | +| array_flow.rb:1472:5:1472:5 | b [element 2] | array_flow.rb:1478:10:1478:10 | b [element 2] | provenance | | +| array_flow.rb:1472:9:1472:9 | a [element 2] | array_flow.rb:1472:9:1475:7 | call to take_while [element 2] | provenance | | +| array_flow.rb:1472:9:1472:9 | a [element 2] | array_flow.rb:1472:26:1472:26 | x | provenance | | +| array_flow.rb:1472:9:1475:7 | call to take_while [element 2] | array_flow.rb:1472:5:1472:5 | b [element 2] | provenance | | +| array_flow.rb:1472:26:1472:26 | x | array_flow.rb:1473:14:1473:14 | x | provenance | | +| array_flow.rb:1478:10:1478:10 | b [element 2] | array_flow.rb:1478:10:1478:13 | ...[...] | provenance | | +| array_flow.rb:1484:5:1484:5 | a [element 3] | array_flow.rb:1485:9:1485:9 | a [element 3] | provenance | | +| array_flow.rb:1484:19:1484:29 | call to source | array_flow.rb:1484:5:1484:5 | a [element 3] | provenance | | +| array_flow.rb:1485:5:1485:5 | b [element 3] | array_flow.rb:1486:10:1486:10 | b [element 3] | provenance | | +| array_flow.rb:1485:9:1485:9 | a [element 3] | array_flow.rb:1485:9:1485:14 | call to to_a [element 3] | provenance | | +| array_flow.rb:1485:9:1485:14 | call to to_a [element 3] | array_flow.rb:1485:5:1485:5 | b [element 3] | provenance | | +| array_flow.rb:1486:10:1486:10 | b [element 3] | array_flow.rb:1486:10:1486:13 | ...[...] | provenance | | +| array_flow.rb:1490:5:1490:5 | a [element 2] | array_flow.rb:1491:9:1491:9 | a [element 2] | provenance | | +| array_flow.rb:1490:16:1490:26 | call to source | array_flow.rb:1490:5:1490:5 | a [element 2] | provenance | | +| array_flow.rb:1491:5:1491:5 | b [element 2] | array_flow.rb:1494:10:1494:10 | b [element 2] | provenance | | +| array_flow.rb:1491:9:1491:9 | a [element 2] | array_flow.rb:1491:9:1491:16 | call to to_ary [element 2] | provenance | | +| array_flow.rb:1491:9:1491:16 | call to to_ary [element 2] | array_flow.rb:1491:5:1491:5 | b [element 2] | provenance | | +| array_flow.rb:1494:10:1494:10 | b [element 2] | array_flow.rb:1494:10:1494:13 | ...[...] | provenance | | +| array_flow.rb:1507:5:1507:5 | a [element 0, element 1] | array_flow.rb:1508:9:1508:9 | a [element 0, element 1] | provenance | | +| array_flow.rb:1507:5:1507:5 | a [element 1, element 1] | array_flow.rb:1508:9:1508:9 | a [element 1, element 1] | provenance | | +| array_flow.rb:1507:5:1507:5 | a [element 2, element 1] | array_flow.rb:1508:9:1508:9 | a [element 2, element 1] | provenance | | +| array_flow.rb:1507:14:1507:26 | call to source | array_flow.rb:1507:5:1507:5 | a [element 0, element 1] | provenance | | +| array_flow.rb:1507:34:1507:46 | call to source | array_flow.rb:1507:5:1507:5 | a [element 1, element 1] | provenance | | +| array_flow.rb:1507:54:1507:66 | call to source | array_flow.rb:1507:5:1507:5 | a [element 2, element 1] | provenance | | +| array_flow.rb:1508:5:1508:5 | b [element 1, element 0] | array_flow.rb:1512:10:1512:10 | b [element 1, element 0] | provenance | | +| array_flow.rb:1508:5:1508:5 | b [element 1, element 1] | array_flow.rb:1513:10:1513:10 | b [element 1, element 1] | provenance | | +| array_flow.rb:1508:5:1508:5 | b [element 1, element 2] | array_flow.rb:1514:10:1514:10 | b [element 1, element 2] | provenance | | +| array_flow.rb:1508:9:1508:9 | a [element 0, element 1] | array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 0] | provenance | | +| array_flow.rb:1508:9:1508:9 | a [element 1, element 1] | array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 1] | provenance | | +| array_flow.rb:1508:9:1508:9 | a [element 2, element 1] | array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 2] | provenance | | +| array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 0] | array_flow.rb:1508:5:1508:5 | b [element 1, element 0] | provenance | | +| array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 1] | array_flow.rb:1508:5:1508:5 | b [element 1, element 1] | provenance | | +| array_flow.rb:1508:9:1508:19 | call to transpose [element 1, element 2] | array_flow.rb:1508:5:1508:5 | b [element 1, element 2] | provenance | | +| array_flow.rb:1512:10:1512:10 | b [element 1, element 0] | array_flow.rb:1512:10:1512:13 | ...[...] [element 0] | provenance | | +| array_flow.rb:1512:10:1512:13 | ...[...] [element 0] | array_flow.rb:1512:10:1512:16 | ...[...] | provenance | | +| array_flow.rb:1513:10:1513:10 | b [element 1, element 1] | array_flow.rb:1513:10:1513:13 | ...[...] [element 1] | provenance | | +| array_flow.rb:1513:10:1513:13 | ...[...] [element 1] | array_flow.rb:1513:10:1513:16 | ...[...] | provenance | | +| array_flow.rb:1514:10:1514:10 | b [element 1, element 2] | array_flow.rb:1514:10:1514:13 | ...[...] [element 2] | provenance | | +| array_flow.rb:1514:10:1514:13 | ...[...] [element 2] | array_flow.rb:1514:10:1514:16 | ...[...] | provenance | | +| array_flow.rb:1518:5:1518:5 | a [element 2] | array_flow.rb:1521:9:1521:9 | a [element 2] | provenance | | +| array_flow.rb:1518:16:1518:28 | call to source | array_flow.rb:1518:5:1518:5 | a [element 2] | provenance | | +| array_flow.rb:1519:5:1519:5 | b [element 1] | array_flow.rb:1521:17:1521:17 | b [element 1] | provenance | | +| array_flow.rb:1519:13:1519:25 | call to source | array_flow.rb:1519:5:1519:5 | b [element 1] | provenance | | +| array_flow.rb:1520:5:1520:5 | c [element 1] | array_flow.rb:1521:20:1521:20 | c [element 1] | provenance | | +| array_flow.rb:1520:13:1520:25 | call to source | array_flow.rb:1520:5:1520:5 | c [element 1] | provenance | | +| array_flow.rb:1521:5:1521:5 | d [element] | array_flow.rb:1522:10:1522:10 | d [element] | provenance | | +| array_flow.rb:1521:5:1521:5 | d [element] | array_flow.rb:1523:10:1523:10 | d [element] | provenance | | +| array_flow.rb:1521:5:1521:5 | d [element] | array_flow.rb:1524:10:1524:10 | d [element] | provenance | | +| array_flow.rb:1521:9:1521:9 | a [element 2] | array_flow.rb:1521:9:1521:21 | call to union [element] | provenance | | +| array_flow.rb:1521:9:1521:21 | call to union [element] | array_flow.rb:1521:5:1521:5 | d [element] | provenance | | +| array_flow.rb:1521:17:1521:17 | b [element 1] | array_flow.rb:1521:9:1521:21 | call to union [element] | provenance | | +| array_flow.rb:1521:20:1521:20 | c [element 1] | array_flow.rb:1521:9:1521:21 | call to union [element] | provenance | | +| array_flow.rb:1522:10:1522:10 | d [element] | array_flow.rb:1522:10:1522:13 | ...[...] | provenance | | +| array_flow.rb:1523:10:1523:10 | d [element] | array_flow.rb:1523:10:1523:13 | ...[...] | provenance | | +| array_flow.rb:1524:10:1524:10 | d [element] | array_flow.rb:1524:10:1524:13 | ...[...] | provenance | | +| array_flow.rb:1528:5:1528:5 | a [element 3] | array_flow.rb:1530:9:1530:9 | a [element 3] | provenance | | +| array_flow.rb:1528:5:1528:5 | a [element 3] | array_flow.rb:1534:9:1534:9 | a [element 3] | provenance | | +| array_flow.rb:1528:5:1528:5 | a [element 4] | array_flow.rb:1530:9:1530:9 | a [element 4] | provenance | | +| array_flow.rb:1528:5:1528:5 | a [element 4] | array_flow.rb:1534:9:1534:9 | a [element 4] | provenance | | +| array_flow.rb:1528:19:1528:31 | call to source | array_flow.rb:1528:5:1528:5 | a [element 3] | provenance | | +| array_flow.rb:1528:34:1528:46 | call to source | array_flow.rb:1528:5:1528:5 | a [element 4] | provenance | | +| array_flow.rb:1530:5:1530:5 | b [element] | array_flow.rb:1531:10:1531:10 | b [element] | provenance | | +| array_flow.rb:1530:5:1530:5 | b [element] | array_flow.rb:1532:10:1532:10 | b [element] | provenance | | +| array_flow.rb:1530:9:1530:9 | a [element 3] | array_flow.rb:1530:9:1530:14 | call to uniq [element] | provenance | | +| array_flow.rb:1530:9:1530:9 | a [element 4] | array_flow.rb:1530:9:1530:14 | call to uniq [element] | provenance | | +| array_flow.rb:1530:9:1530:14 | call to uniq [element] | array_flow.rb:1530:5:1530:5 | b [element] | provenance | | +| array_flow.rb:1531:10:1531:10 | b [element] | array_flow.rb:1531:10:1531:13 | ...[...] | provenance | | +| array_flow.rb:1532:10:1532:10 | b [element] | array_flow.rb:1532:10:1532:13 | ...[...] | provenance | | +| array_flow.rb:1534:5:1534:5 | c [element] | array_flow.rb:1538:10:1538:10 | c [element] | provenance | | +| array_flow.rb:1534:9:1534:9 | a [element 3] | array_flow.rb:1534:9:1537:7 | call to uniq [element] | provenance | | +| array_flow.rb:1534:9:1534:9 | a [element 3] | array_flow.rb:1534:20:1534:20 | x | provenance | | +| array_flow.rb:1534:9:1534:9 | a [element 4] | array_flow.rb:1534:9:1537:7 | call to uniq [element] | provenance | | +| array_flow.rb:1534:9:1534:9 | a [element 4] | array_flow.rb:1534:20:1534:20 | x | provenance | | +| array_flow.rb:1534:9:1537:7 | call to uniq [element] | array_flow.rb:1534:5:1534:5 | c [element] | provenance | | +| array_flow.rb:1534:20:1534:20 | x | array_flow.rb:1535:14:1535:14 | x | provenance | | +| array_flow.rb:1538:10:1538:10 | c [element] | array_flow.rb:1538:10:1538:13 | ...[...] | provenance | | +| array_flow.rb:1542:5:1542:5 | a [element 2] | array_flow.rb:1543:9:1543:9 | a [element 2] | provenance | | +| array_flow.rb:1542:5:1542:5 | a [element 3] | array_flow.rb:1543:9:1543:9 | a [element 3] | provenance | | +| array_flow.rb:1542:16:1542:28 | call to source | array_flow.rb:1542:5:1542:5 | a [element 2] | provenance | | +| array_flow.rb:1542:31:1542:43 | call to source | array_flow.rb:1542:5:1542:5 | a [element 3] | provenance | | +| array_flow.rb:1543:5:1543:5 | b [element] | array_flow.rb:1544:10:1544:10 | b [element] | provenance | | +| array_flow.rb:1543:5:1543:5 | b [element] | array_flow.rb:1545:10:1545:10 | b [element] | provenance | | +| array_flow.rb:1543:9:1543:9 | [post] a [element] | array_flow.rb:1546:10:1546:10 | a [element] | provenance | | +| array_flow.rb:1543:9:1543:9 | [post] a [element] | array_flow.rb:1547:10:1547:10 | a [element] | provenance | | +| array_flow.rb:1543:9:1543:9 | a [element 2] | array_flow.rb:1543:9:1543:9 | [post] a [element] | provenance | | +| array_flow.rb:1543:9:1543:9 | a [element 2] | array_flow.rb:1543:9:1543:15 | call to uniq! [element] | provenance | | +| array_flow.rb:1543:9:1543:9 | a [element 3] | array_flow.rb:1543:9:1543:9 | [post] a [element] | provenance | | +| array_flow.rb:1543:9:1543:9 | a [element 3] | array_flow.rb:1543:9:1543:15 | call to uniq! [element] | provenance | | +| array_flow.rb:1543:9:1543:15 | call to uniq! [element] | array_flow.rb:1543:5:1543:5 | b [element] | provenance | | +| array_flow.rb:1544:10:1544:10 | b [element] | array_flow.rb:1544:10:1544:13 | ...[...] | provenance | | +| array_flow.rb:1545:10:1545:10 | b [element] | array_flow.rb:1545:10:1545:13 | ...[...] | provenance | | +| array_flow.rb:1546:10:1546:10 | a [element] | array_flow.rb:1546:10:1546:13 | ...[...] | provenance | | +| array_flow.rb:1547:10:1547:10 | a [element] | array_flow.rb:1547:10:1547:13 | ...[...] | provenance | | +| array_flow.rb:1549:5:1549:5 | a [element 2] | array_flow.rb:1550:9:1550:9 | a [element 2] | provenance | | +| array_flow.rb:1549:5:1549:5 | a [element 3] | array_flow.rb:1550:9:1550:9 | a [element 3] | provenance | | +| array_flow.rb:1549:16:1549:28 | call to source | array_flow.rb:1549:5:1549:5 | a [element 2] | provenance | | +| array_flow.rb:1549:31:1549:43 | call to source | array_flow.rb:1549:5:1549:5 | a [element 3] | provenance | | +| array_flow.rb:1550:5:1550:5 | b [element] | array_flow.rb:1554:10:1554:10 | b [element] | provenance | | +| array_flow.rb:1550:5:1550:5 | b [element] | array_flow.rb:1555:10:1555:10 | b [element] | provenance | | +| array_flow.rb:1550:9:1550:9 | [post] a [element] | array_flow.rb:1556:10:1556:10 | a [element] | provenance | | +| array_flow.rb:1550:9:1550:9 | [post] a [element] | array_flow.rb:1557:10:1557:10 | a [element] | provenance | | +| array_flow.rb:1550:9:1550:9 | a [element 2] | array_flow.rb:1550:9:1550:9 | [post] a [element] | provenance | | +| array_flow.rb:1550:9:1550:9 | a [element 2] | array_flow.rb:1550:9:1553:7 | call to uniq! [element] | provenance | | +| array_flow.rb:1550:9:1550:9 | a [element 2] | array_flow.rb:1550:21:1550:21 | x | provenance | | +| array_flow.rb:1550:9:1550:9 | a [element 3] | array_flow.rb:1550:9:1550:9 | [post] a [element] | provenance | | +| array_flow.rb:1550:9:1550:9 | a [element 3] | array_flow.rb:1550:9:1553:7 | call to uniq! [element] | provenance | | +| array_flow.rb:1550:9:1550:9 | a [element 3] | array_flow.rb:1550:21:1550:21 | x | provenance | | +| array_flow.rb:1550:9:1553:7 | call to uniq! [element] | array_flow.rb:1550:5:1550:5 | b [element] | provenance | | +| array_flow.rb:1550:21:1550:21 | x | array_flow.rb:1551:14:1551:14 | x | provenance | | +| array_flow.rb:1554:10:1554:10 | b [element] | array_flow.rb:1554:10:1554:13 | ...[...] | provenance | | +| array_flow.rb:1555:10:1555:10 | b [element] | array_flow.rb:1555:10:1555:13 | ...[...] | provenance | | +| array_flow.rb:1556:10:1556:10 | a [element] | array_flow.rb:1556:10:1556:13 | ...[...] | provenance | | +| array_flow.rb:1557:10:1557:10 | a [element] | array_flow.rb:1557:10:1557:13 | ...[...] | provenance | | +| array_flow.rb:1561:5:1561:5 | a [element 2] | array_flow.rb:1562:5:1562:5 | a [element 2] | provenance | | +| array_flow.rb:1561:16:1561:28 | call to source | array_flow.rb:1561:5:1561:5 | a [element 2] | provenance | | +| array_flow.rb:1562:5:1562:5 | [post] a [element 2] | array_flow.rb:1565:10:1565:10 | a [element 2] | provenance | | +| array_flow.rb:1562:5:1562:5 | [post] a [element 5] | array_flow.rb:1568:10:1568:10 | a [element 5] | provenance | | +| array_flow.rb:1562:5:1562:5 | a [element 2] | array_flow.rb:1562:5:1562:5 | [post] a [element 5] | provenance | | +| array_flow.rb:1562:21:1562:33 | call to source | array_flow.rb:1562:5:1562:5 | [post] a [element 2] | provenance | | +| array_flow.rb:1565:10:1565:10 | a [element 2] | array_flow.rb:1565:10:1565:13 | ...[...] | provenance | | +| array_flow.rb:1568:10:1568:10 | a [element 5] | array_flow.rb:1568:10:1568:13 | ...[...] | provenance | | +| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1574:9:1574:9 | a [element 1] | provenance | | +| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1580:9:1580:9 | a [element 1] | provenance | | +| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1584:9:1584:9 | a [element 1] | provenance | | +| array_flow.rb:1572:5:1572:5 | a [element 1] | array_flow.rb:1588:9:1588:9 | a [element 1] | provenance | | +| array_flow.rb:1572:5:1572:5 | a [element 3] | array_flow.rb:1580:9:1580:9 | a [element 3] | provenance | | +| array_flow.rb:1572:5:1572:5 | a [element 3] | array_flow.rb:1584:9:1584:9 | a [element 3] | provenance | | +| array_flow.rb:1572:5:1572:5 | a [element 3] | array_flow.rb:1588:9:1588:9 | a [element 3] | provenance | | +| array_flow.rb:1572:13:1572:25 | call to source | array_flow.rb:1572:5:1572:5 | a [element 1] | provenance | | +| array_flow.rb:1572:31:1572:43 | call to source | array_flow.rb:1572:5:1572:5 | a [element 3] | provenance | | +| array_flow.rb:1574:5:1574:5 | b [element 1] | array_flow.rb:1576:10:1576:10 | b [element 1] | provenance | | +| array_flow.rb:1574:5:1574:5 | b [element 3] | array_flow.rb:1578:10:1578:10 | b [element 3] | provenance | | +| array_flow.rb:1574:9:1574:9 | a [element 1] | array_flow.rb:1574:9:1574:31 | call to values_at [element 1] | provenance | | +| array_flow.rb:1574:9:1574:9 | a [element 1] | array_flow.rb:1574:9:1574:31 | call to values_at [element 3] | provenance | | +| array_flow.rb:1574:9:1574:31 | call to values_at [element 1] | array_flow.rb:1574:5:1574:5 | b [element 1] | provenance | | +| array_flow.rb:1574:9:1574:31 | call to values_at [element 3] | array_flow.rb:1574:5:1574:5 | b [element 3] | provenance | | +| array_flow.rb:1576:10:1576:10 | b [element 1] | array_flow.rb:1576:10:1576:13 | ...[...] | provenance | | +| array_flow.rb:1578:10:1578:10 | b [element 3] | array_flow.rb:1578:10:1578:13 | ...[...] | provenance | | +| array_flow.rb:1580:5:1580:5 | b [element] | array_flow.rb:1581:10:1581:10 | b [element] | provenance | | +| array_flow.rb:1580:5:1580:5 | b [element] | array_flow.rb:1582:10:1582:10 | b [element] | provenance | | +| array_flow.rb:1580:9:1580:9 | a [element 1] | array_flow.rb:1580:9:1580:25 | call to values_at [element] | provenance | | +| array_flow.rb:1580:9:1580:9 | a [element 3] | array_flow.rb:1580:9:1580:25 | call to values_at [element] | provenance | | +| array_flow.rb:1580:9:1580:25 | call to values_at [element] | array_flow.rb:1580:5:1580:5 | b [element] | provenance | | +| array_flow.rb:1581:10:1581:10 | b [element] | array_flow.rb:1581:10:1581:13 | ...[...] | provenance | | +| array_flow.rb:1582:10:1582:10 | b [element] | array_flow.rb:1582:10:1582:13 | ...[...] | provenance | | +| array_flow.rb:1584:5:1584:5 | b [element] | array_flow.rb:1585:10:1585:10 | b [element] | provenance | | +| array_flow.rb:1584:5:1584:5 | b [element] | array_flow.rb:1586:10:1586:10 | b [element] | provenance | | +| array_flow.rb:1584:9:1584:9 | a [element 1] | array_flow.rb:1584:9:1584:26 | call to values_at [element] | provenance | | +| array_flow.rb:1584:9:1584:9 | a [element 3] | array_flow.rb:1584:9:1584:26 | call to values_at [element] | provenance | | +| array_flow.rb:1584:9:1584:26 | call to values_at [element] | array_flow.rb:1584:5:1584:5 | b [element] | provenance | | +| array_flow.rb:1585:10:1585:10 | b [element] | array_flow.rb:1585:10:1585:13 | ...[...] | provenance | | +| array_flow.rb:1586:10:1586:10 | b [element] | array_flow.rb:1586:10:1586:13 | ...[...] | provenance | | +| array_flow.rb:1588:5:1588:5 | b [element 1] | array_flow.rb:1590:10:1590:10 | b [element 1] | provenance | | +| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1589:10:1589:10 | b [element] | provenance | | +| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1590:10:1590:10 | b [element] | provenance | | +| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1591:10:1591:10 | b [element] | provenance | | +| array_flow.rb:1588:5:1588:5 | b [element] | array_flow.rb:1592:10:1592:10 | b [element] | provenance | | +| array_flow.rb:1588:9:1588:9 | a [element 1] | array_flow.rb:1588:9:1588:28 | call to values_at [element] | provenance | | +| array_flow.rb:1588:9:1588:9 | a [element 3] | array_flow.rb:1588:9:1588:28 | call to values_at [element 1] | provenance | | +| array_flow.rb:1588:9:1588:9 | a [element 3] | array_flow.rb:1588:9:1588:28 | call to values_at [element] | provenance | | +| array_flow.rb:1588:9:1588:28 | call to values_at [element 1] | array_flow.rb:1588:5:1588:5 | b [element 1] | provenance | | +| array_flow.rb:1588:9:1588:28 | call to values_at [element] | array_flow.rb:1588:5:1588:5 | b [element] | provenance | | +| array_flow.rb:1589:10:1589:10 | b [element] | array_flow.rb:1589:10:1589:13 | ...[...] | provenance | | +| array_flow.rb:1590:10:1590:10 | b [element 1] | array_flow.rb:1590:10:1590:13 | ...[...] | provenance | | +| array_flow.rb:1590:10:1590:10 | b [element] | array_flow.rb:1590:10:1590:13 | ...[...] | provenance | | +| array_flow.rb:1591:10:1591:10 | b [element] | array_flow.rb:1591:10:1591:13 | ...[...] | provenance | | +| array_flow.rb:1592:10:1592:10 | b [element] | array_flow.rb:1592:10:1592:13 | ...[...] | provenance | | +| array_flow.rb:1596:5:1596:5 | a [element 2] | array_flow.rb:1599:9:1599:9 | a [element 2] | provenance | | +| array_flow.rb:1596:5:1596:5 | a [element 2] | array_flow.rb:1604:5:1604:5 | a [element 2] | provenance | | +| array_flow.rb:1596:16:1596:28 | call to source | array_flow.rb:1596:5:1596:5 | a [element 2] | provenance | | +| array_flow.rb:1597:5:1597:5 | b [element 1] | array_flow.rb:1599:15:1599:15 | b [element 1] | provenance | | +| array_flow.rb:1597:5:1597:5 | b [element 1] | array_flow.rb:1604:11:1604:11 | b [element 1] | provenance | | +| array_flow.rb:1597:13:1597:25 | call to source | array_flow.rb:1597:5:1597:5 | b [element 1] | provenance | | +| array_flow.rb:1598:5:1598:5 | c [element 0] | array_flow.rb:1599:18:1599:18 | c [element 0] | provenance | | +| array_flow.rb:1598:5:1598:5 | c [element 0] | array_flow.rb:1604:14:1604:14 | c [element 0] | provenance | | +| array_flow.rb:1598:10:1598:22 | call to source | array_flow.rb:1598:5:1598:5 | c [element 0] | provenance | | +| array_flow.rb:1599:5:1599:5 | d [element 0, element 2] | array_flow.rb:1601:10:1601:10 | d [element 0, element 2] | provenance | | +| array_flow.rb:1599:5:1599:5 | d [element 1, element 1] | array_flow.rb:1602:10:1602:10 | d [element 1, element 1] | provenance | | +| array_flow.rb:1599:5:1599:5 | d [element 2, element 0] | array_flow.rb:1603:10:1603:10 | d [element 2, element 0] | provenance | | +| array_flow.rb:1599:9:1599:9 | a [element 2] | array_flow.rb:1599:9:1599:19 | call to zip [element 2, element 0] | provenance | | +| array_flow.rb:1599:9:1599:19 | call to zip [element 0, element 2] | array_flow.rb:1599:5:1599:5 | d [element 0, element 2] | provenance | | +| array_flow.rb:1599:9:1599:19 | call to zip [element 1, element 1] | array_flow.rb:1599:5:1599:5 | d [element 1, element 1] | provenance | | +| array_flow.rb:1599:9:1599:19 | call to zip [element 2, element 0] | array_flow.rb:1599:5:1599:5 | d [element 2, element 0] | provenance | | +| array_flow.rb:1599:15:1599:15 | b [element 1] | array_flow.rb:1599:9:1599:19 | call to zip [element 1, element 1] | provenance | | +| array_flow.rb:1599:18:1599:18 | c [element 0] | array_flow.rb:1599:9:1599:19 | call to zip [element 0, element 2] | provenance | | +| array_flow.rb:1601:10:1601:10 | d [element 0, element 2] | array_flow.rb:1601:10:1601:13 | ...[...] [element 2] | provenance | | +| array_flow.rb:1601:10:1601:13 | ...[...] [element 2] | array_flow.rb:1601:10:1601:16 | ...[...] | provenance | | +| array_flow.rb:1602:10:1602:10 | d [element 1, element 1] | array_flow.rb:1602:10:1602:13 | ...[...] [element 1] | provenance | | +| array_flow.rb:1602:10:1602:13 | ...[...] [element 1] | array_flow.rb:1602:10:1602:16 | ...[...] | provenance | | +| array_flow.rb:1603:10:1603:10 | d [element 2, element 0] | array_flow.rb:1603:10:1603:13 | ...[...] [element 0] | provenance | | +| array_flow.rb:1603:10:1603:13 | ...[...] [element 0] | array_flow.rb:1603:10:1603:16 | ...[...] | provenance | | +| array_flow.rb:1604:5:1604:5 | a [element 2] | array_flow.rb:1604:21:1604:21 | x [element 0] | provenance | | +| array_flow.rb:1604:11:1604:11 | b [element 1] | array_flow.rb:1604:21:1604:21 | x [element 1] | provenance | | +| array_flow.rb:1604:14:1604:14 | c [element 0] | array_flow.rb:1604:21:1604:21 | x [element 2] | provenance | | +| array_flow.rb:1604:21:1604:21 | x [element 0] | array_flow.rb:1605:14:1605:14 | x [element 0] | provenance | | +| array_flow.rb:1604:21:1604:21 | x [element 1] | array_flow.rb:1606:14:1606:14 | x [element 1] | provenance | | +| array_flow.rb:1604:21:1604:21 | x [element 2] | array_flow.rb:1607:14:1607:14 | x [element 2] | provenance | | +| array_flow.rb:1605:14:1605:14 | x [element 0] | array_flow.rb:1605:14:1605:17 | ...[...] | provenance | | +| array_flow.rb:1606:14:1606:14 | x [element 1] | array_flow.rb:1606:14:1606:17 | ...[...] | provenance | | +| array_flow.rb:1607:14:1607:14 | x [element 2] | array_flow.rb:1607:14:1607:17 | ...[...] | provenance | | +| array_flow.rb:1612:5:1612:5 | a [element 2] | array_flow.rb:1614:9:1614:9 | a [element 2] | provenance | | +| array_flow.rb:1612:16:1612:28 | call to source | array_flow.rb:1612:5:1612:5 | a [element 2] | provenance | | +| array_flow.rb:1613:5:1613:5 | b [element 1] | array_flow.rb:1614:13:1614:13 | b [element 1] | provenance | | +| array_flow.rb:1613:13:1613:25 | call to source | array_flow.rb:1613:5:1613:5 | b [element 1] | provenance | | +| array_flow.rb:1614:5:1614:5 | c [element] | array_flow.rb:1615:10:1615:10 | c [element] | provenance | | +| array_flow.rb:1614:5:1614:5 | c [element] | array_flow.rb:1616:10:1616:10 | c [element] | provenance | | +| array_flow.rb:1614:5:1614:5 | c [element] | array_flow.rb:1617:10:1617:10 | c [element] | provenance | | +| array_flow.rb:1614:9:1614:9 | a [element 2] | array_flow.rb:1614:9:1614:13 | ... \| ... [element] | provenance | | +| array_flow.rb:1614:9:1614:13 | ... \| ... [element] | array_flow.rb:1614:5:1614:5 | c [element] | provenance | | +| array_flow.rb:1614:13:1614:13 | b [element 1] | array_flow.rb:1614:9:1614:13 | ... \| ... [element] | provenance | | +| array_flow.rb:1615:10:1615:10 | c [element] | array_flow.rb:1615:10:1615:13 | ...[...] | provenance | | +| array_flow.rb:1616:10:1616:10 | c [element] | array_flow.rb:1616:10:1616:13 | ...[...] | provenance | | +| array_flow.rb:1617:10:1617:10 | c [element] | array_flow.rb:1617:10:1617:13 | ...[...] | provenance | | +| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1623:10:1623:10 | a [element, element 0] | provenance | | +| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1626:10:1626:10 | a [element, element 0] | provenance | | +| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1627:10:1627:10 | a [element, element 0] | provenance | | +| array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | provenance | | +| array_flow.rb:1622:15:1622:27 | call to source | array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | provenance | | +| array_flow.rb:1623:10:1623:10 | a [element, element 0] | array_flow.rb:1623:10:1623:13 | ...[...] [element 0] | provenance | | +| array_flow.rb:1623:10:1623:13 | ...[...] [element 0] | array_flow.rb:1623:10:1623:16 | ...[...] | provenance | | +| array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | array_flow.rb:1626:10:1626:10 | a [element 1, element 0] | provenance | | +| array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | provenance | | +| array_flow.rb:1625:15:1625:27 | call to source | array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | provenance | | +| array_flow.rb:1626:10:1626:10 | a [element 1, element 0] | array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | provenance | | +| array_flow.rb:1626:10:1626:10 | a [element, element 0] | array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | provenance | | +| array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | array_flow.rb:1626:10:1626:16 | ...[...] | provenance | | +| array_flow.rb:1627:10:1627:10 | a [element, element 0] | array_flow.rb:1627:10:1627:13 | ...[...] [element 0] | provenance | | +| array_flow.rb:1627:10:1627:13 | ...[...] [element 0] | array_flow.rb:1627:10:1627:16 | ...[...] | provenance | | +| array_flow.rb:1632:5:1632:5 | [post] a [element 0] | array_flow.rb:1641:10:1641:10 | a [element 0] | provenance | | +| array_flow.rb:1632:5:1632:5 | [post] a [element 0] | array_flow.rb:1643:10:1643:10 | a [element 0] | provenance | | +| array_flow.rb:1632:12:1632:24 | call to source | array_flow.rb:1632:5:1632:5 | [post] a [element 0] | provenance | | +| array_flow.rb:1634:5:1634:5 | [post] a [element] | array_flow.rb:1639:10:1639:10 | a [element] | provenance | | +| array_flow.rb:1634:5:1634:5 | [post] a [element] | array_flow.rb:1641:10:1641:10 | a [element] | provenance | | +| array_flow.rb:1634:5:1634:5 | [post] a [element] | array_flow.rb:1643:10:1643:10 | a [element] | provenance | | +| array_flow.rb:1634:16:1634:28 | call to source | array_flow.rb:1634:5:1634:5 | [post] a [element] | provenance | | +| array_flow.rb:1636:5:1636:5 | [post] a [element] | array_flow.rb:1639:10:1639:10 | a [element] | provenance | | +| array_flow.rb:1636:5:1636:5 | [post] a [element] | array_flow.rb:1641:10:1641:10 | a [element] | provenance | | +| array_flow.rb:1636:5:1636:5 | [post] a [element] | array_flow.rb:1643:10:1643:10 | a [element] | provenance | | +| array_flow.rb:1636:14:1636:26 | call to source | array_flow.rb:1636:5:1636:5 | [post] a [element] | provenance | | +| array_flow.rb:1638:5:1638:5 | [post] a [element] | array_flow.rb:1639:10:1639:10 | a [element] | provenance | | +| array_flow.rb:1638:5:1638:5 | [post] a [element] | array_flow.rb:1641:10:1641:10 | a [element] | provenance | | +| array_flow.rb:1638:5:1638:5 | [post] a [element] | array_flow.rb:1643:10:1643:10 | a [element] | provenance | | +| array_flow.rb:1638:16:1638:28 | call to source | array_flow.rb:1638:5:1638:5 | [post] a [element] | provenance | | +| array_flow.rb:1639:10:1639:10 | a [element] | array_flow.rb:1639:10:1639:13 | ...[...] | provenance | | +| array_flow.rb:1641:10:1641:10 | a [element 0] | array_flow.rb:1641:10:1641:17 | ...[...] | provenance | | +| array_flow.rb:1641:10:1641:10 | a [element] | array_flow.rb:1641:10:1641:17 | ...[...] | provenance | | +| array_flow.rb:1643:10:1643:10 | a [element 0] | array_flow.rb:1643:10:1643:15 | ...[...] | provenance | | +| array_flow.rb:1643:10:1643:10 | a [element] | array_flow.rb:1643:10:1643:15 | ...[...] | provenance | | +| array_flow.rb:1647:5:1647:5 | a [element 1] | array_flow.rb:1649:10:1649:10 | a [element 1] | provenance | | +| array_flow.rb:1647:5:1647:5 | a [element 1] | array_flow.rb:1651:10:1651:10 | a [element 1] | provenance | | +| array_flow.rb:1647:9:1647:32 | ...[...] [element 1] | array_flow.rb:1647:5:1647:5 | a [element 1] | provenance | | +| array_flow.rb:1647:18:1647:28 | call to source | array_flow.rb:1647:9:1647:32 | ...[...] [element 1] | provenance | | +| array_flow.rb:1649:10:1649:10 | a [element 1] | array_flow.rb:1649:10:1649:13 | ...[...] | provenance | | +| array_flow.rb:1651:10:1651:10 | a [element 1] | array_flow.rb:1651:10:1651:13 | ...[...] | provenance | | +| array_flow.rb:1668:9:1668:10 | a2 [element 1] | array_flow.rb:1670:14:1670:15 | a2 [element 1] | provenance | | +| array_flow.rb:1668:9:1668:10 | a2 [element 1] | array_flow.rb:1672:14:1672:15 | a2 [element 1] | provenance | | +| array_flow.rb:1668:14:1668:41 | ...[...] [element 1] | array_flow.rb:1668:9:1668:10 | a2 [element 1] | provenance | | +| array_flow.rb:1668:25:1668:37 | call to source | array_flow.rb:1668:14:1668:41 | ...[...] [element 1] | provenance | | +| array_flow.rb:1670:14:1670:15 | a2 [element 1] | array_flow.rb:1670:14:1670:18 | ...[...] | provenance | | +| array_flow.rb:1672:14:1672:15 | a2 [element 1] | array_flow.rb:1672:14:1672:18 | ...[...] | provenance | | nodes | array_flow.rb:2:5:2:5 | a [element 0] | semmle.label | a [element 0] | | array_flow.rb:2:9:2:20 | * ... [element 0] | semmle.label | * ... [element 0] | diff --git a/ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected b/ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected index 98330dcaa236..7e55fbf8995b 100644 --- a/ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected +++ b/ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.expected @@ -1,102 +1,102 @@ testFailures edges -| call_sensitivity.rb:9:7:9:13 | call to taint | call_sensitivity.rb:9:6:9:14 | ( ... ) | -| call_sensitivity.rb:11:13:11:13 | x | call_sensitivity.rb:12:11:12:11 | x | -| call_sensitivity.rb:12:11:12:11 | x | call_sensitivity.rb:19:22:19:22 | x | -| call_sensitivity.rb:19:9:19:17 | ( ... ) | call_sensitivity.rb:11:13:11:13 | x | -| call_sensitivity.rb:19:10:19:16 | call to taint | call_sensitivity.rb:19:9:19:17 | ( ... ) | -| call_sensitivity.rb:19:22:19:22 | x | call_sensitivity.rb:19:30:19:30 | x | -| call_sensitivity.rb:21:27:21:27 | x | call_sensitivity.rb:22:17:22:17 | x | -| call_sensitivity.rb:21:27:21:27 | x | call_sensitivity.rb:22:17:22:17 | x | -| call_sensitivity.rb:21:27:21:27 | x | call_sensitivity.rb:22:17:22:17 | x | -| call_sensitivity.rb:22:17:22:17 | x | call_sensitivity.rb:31:17:31:17 | x | -| call_sensitivity.rb:22:17:22:17 | x | call_sensitivity.rb:40:23:40:23 | x | -| call_sensitivity.rb:22:17:22:17 | x | call_sensitivity.rb:43:24:43:24 | x | -| call_sensitivity.rb:31:17:31:17 | x | call_sensitivity.rb:31:27:31:27 | x | -| call_sensitivity.rb:32:25:32:32 | call to taint | call_sensitivity.rb:21:27:21:27 | x | -| call_sensitivity.rb:40:23:40:23 | x | call_sensitivity.rb:40:31:40:31 | x | -| call_sensitivity.rb:41:25:41:32 | call to taint | call_sensitivity.rb:21:27:21:27 | x | -| call_sensitivity.rb:43:24:43:24 | x | call_sensitivity.rb:43:32:43:32 | x | -| call_sensitivity.rb:44:26:44:33 | call to taint | call_sensitivity.rb:21:27:21:27 | x | -| call_sensitivity.rb:50:15:50:15 | x | call_sensitivity.rb:51:10:51:10 | x | -| call_sensitivity.rb:54:15:54:15 | x | call_sensitivity.rb:55:13:55:13 | x | -| call_sensitivity.rb:54:15:54:15 | x | call_sensitivity.rb:55:13:55:13 | x | -| call_sensitivity.rb:55:13:55:13 | x | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:55:13:55:13 | x | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:58:20:58:20 | x | call_sensitivity.rb:59:18:59:18 | x | -| call_sensitivity.rb:59:18:59:18 | x | call_sensitivity.rb:54:15:54:15 | x | -| call_sensitivity.rb:62:18:62:18 | y | call_sensitivity.rb:63:15:63:15 | y | -| call_sensitivity.rb:62:18:62:18 | y | call_sensitivity.rb:63:15:63:15 | y | -| call_sensitivity.rb:63:15:63:15 | y | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:63:15:63:15 | y | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:66:20:66:20 | x | call_sensitivity.rb:67:24:67:24 | x | -| call_sensitivity.rb:67:24:67:24 | x | call_sensitivity.rb:62:18:62:18 | y | -| call_sensitivity.rb:70:30:70:30 | x | call_sensitivity.rb:71:10:71:10 | x | -| call_sensitivity.rb:74:18:74:18 | y | call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | -| call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | call_sensitivity.rb:76:17:76:17 | y | -| call_sensitivity.rb:76:17:76:17 | y | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:80:15:80:15 | x | call_sensitivity.rb:81:18:81:18 | x | -| call_sensitivity.rb:81:18:81:18 | x | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:85:18:85:27 | ( ... ) | call_sensitivity.rb:80:15:80:15 | x | -| call_sensitivity.rb:85:19:85:26 | call to taint | call_sensitivity.rb:85:18:85:27 | ( ... ) | -| call_sensitivity.rb:88:30:88:30 | x | call_sensitivity.rb:89:23:89:23 | x | -| call_sensitivity.rb:88:30:88:30 | x | call_sensitivity.rb:89:23:89:23 | x | -| call_sensitivity.rb:89:23:89:23 | x | call_sensitivity.rb:70:30:70:30 | x | -| call_sensitivity.rb:89:23:89:23 | x | call_sensitivity.rb:70:30:70:30 | x | -| call_sensitivity.rb:92:35:92:35 | x | call_sensitivity.rb:93:28:93:28 | x | -| call_sensitivity.rb:93:28:93:28 | x | call_sensitivity.rb:88:30:88:30 | x | -| call_sensitivity.rb:96:33:96:33 | y | call_sensitivity.rb:97:25:97:25 | y | -| call_sensitivity.rb:96:33:96:33 | y | call_sensitivity.rb:97:25:97:25 | y | -| call_sensitivity.rb:97:25:97:25 | y | call_sensitivity.rb:70:30:70:30 | x | -| call_sensitivity.rb:97:25:97:25 | y | call_sensitivity.rb:70:30:70:30 | x | -| call_sensitivity.rb:100:35:100:35 | x | call_sensitivity.rb:101:34:101:34 | x | -| call_sensitivity.rb:101:34:101:34 | x | call_sensitivity.rb:96:33:96:33 | y | -| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | -| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | -| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | -| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | -| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:106:13:106:13 | x | -| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:106:13:106:13 | x | -| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:106:13:106:13 | x | -| call_sensitivity.rb:106:13:106:13 | x | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:106:13:106:13 | x | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:106:13:106:13 | x | call_sensitivity.rb:50:15:50:15 | x | -| call_sensitivity.rb:109:21:109:21 | x | call_sensitivity.rb:110:9:110:9 | x | -| call_sensitivity.rb:110:9:110:9 | x | call_sensitivity.rb:104:18:104:18 | x | -| call_sensitivity.rb:114:11:114:20 | ( ... ) | call_sensitivity.rb:104:18:104:18 | x | -| call_sensitivity.rb:114:12:114:19 | call to taint | call_sensitivity.rb:114:11:114:20 | ( ... ) | -| call_sensitivity.rb:115:11:115:18 | call to taint | call_sensitivity.rb:54:15:54:15 | x | -| call_sensitivity.rb:116:16:116:23 | call to taint | call_sensitivity.rb:58:20:58:20 | x | -| call_sensitivity.rb:117:14:117:22 | call to taint | call_sensitivity.rb:62:18:62:18 | y | -| call_sensitivity.rb:118:16:118:24 | call to taint | call_sensitivity.rb:66:20:66:20 | x | -| call_sensitivity.rb:119:14:119:22 | call to taint | call_sensitivity.rb:74:18:74:18 | y | -| call_sensitivity.rb:121:21:121:28 | call to taint | call_sensitivity.rb:88:30:88:30 | x | -| call_sensitivity.rb:122:26:122:33 | call to taint | call_sensitivity.rb:92:35:92:35 | x | -| call_sensitivity.rb:123:24:123:32 | call to taint | call_sensitivity.rb:96:33:96:33 | y | -| call_sensitivity.rb:124:26:124:33 | call to taint | call_sensitivity.rb:100:35:100:35 | x | -| call_sensitivity.rb:125:12:125:19 | call to taint | call_sensitivity.rb:109:21:109:21 | x | -| call_sensitivity.rb:166:14:166:22 | call to taint | call_sensitivity.rb:74:18:74:18 | y | -| call_sensitivity.rb:174:19:174:19 | x | call_sensitivity.rb:175:12:175:12 | x | -| call_sensitivity.rb:175:12:175:12 | x | call_sensitivity.rb:104:18:104:18 | x | -| call_sensitivity.rb:178:11:178:19 | call to taint | call_sensitivity.rb:174:19:174:19 | x | -| call_sensitivity.rb:187:11:187:20 | ( ... ) | call_sensitivity.rb:104:18:104:18 | x | -| call_sensitivity.rb:187:12:187:19 | call to taint | call_sensitivity.rb:187:11:187:20 | ( ... ) | -| call_sensitivity.rb:189:19:189:19 | x | call_sensitivity.rb:190:9:190:9 | x | -| call_sensitivity.rb:190:9:190:9 | x | call_sensitivity.rb:194:23:194:23 | x | -| call_sensitivity.rb:193:19:193:19 | x | call_sensitivity.rb:194:17:194:17 | x | -| call_sensitivity.rb:194:17:194:17 | x | call_sensitivity.rb:189:19:189:19 | x | -| call_sensitivity.rb:194:23:194:23 | x | call_sensitivity.rb:195:11:195:11 | x | -| call_sensitivity.rb:195:11:195:11 | x | call_sensitivity.rb:199:30:199:30 | x | -| call_sensitivity.rb:195:11:195:11 | x | call_sensitivity.rb:203:26:203:26 | x | -| call_sensitivity.rb:199:15:199:24 | ( ... ) | call_sensitivity.rb:193:19:193:19 | x | -| call_sensitivity.rb:199:16:199:23 | call to taint | call_sensitivity.rb:199:15:199:24 | ( ... ) | -| call_sensitivity.rb:199:30:199:30 | x | call_sensitivity.rb:200:8:200:8 | x | -| call_sensitivity.rb:203:26:203:26 | x | call_sensitivity.rb:204:8:204:8 | x | -| call_sensitivity.rb:207:16:207:16 | y | call_sensitivity.rb:209:9:209:9 | y | -| call_sensitivity.rb:209:9:209:9 | y | call_sensitivity.rb:214:9:214:9 | x | -| call_sensitivity.rb:214:9:214:9 | x | call_sensitivity.rb:215:10:215:10 | x | -| call_sensitivity.rb:222:15:222:24 | ( ... ) | call_sensitivity.rb:207:16:207:16 | y | -| call_sensitivity.rb:222:16:222:23 | call to taint | call_sensitivity.rb:222:15:222:24 | ( ... ) | +| call_sensitivity.rb:9:7:9:13 | call to taint | call_sensitivity.rb:9:6:9:14 | ( ... ) | provenance | | +| call_sensitivity.rb:11:13:11:13 | x | call_sensitivity.rb:12:11:12:11 | x | provenance | | +| call_sensitivity.rb:12:11:12:11 | x | call_sensitivity.rb:19:22:19:22 | x | provenance | | +| call_sensitivity.rb:19:9:19:17 | ( ... ) | call_sensitivity.rb:11:13:11:13 | x | provenance | | +| call_sensitivity.rb:19:10:19:16 | call to taint | call_sensitivity.rb:19:9:19:17 | ( ... ) | provenance | | +| call_sensitivity.rb:19:22:19:22 | x | call_sensitivity.rb:19:30:19:30 | x | provenance | | +| call_sensitivity.rb:21:27:21:27 | x | call_sensitivity.rb:22:17:22:17 | x | provenance | | +| call_sensitivity.rb:21:27:21:27 | x | call_sensitivity.rb:22:17:22:17 | x | provenance | | +| call_sensitivity.rb:21:27:21:27 | x | call_sensitivity.rb:22:17:22:17 | x | provenance | | +| call_sensitivity.rb:22:17:22:17 | x | call_sensitivity.rb:31:17:31:17 | x | provenance | | +| call_sensitivity.rb:22:17:22:17 | x | call_sensitivity.rb:40:23:40:23 | x | provenance | | +| call_sensitivity.rb:22:17:22:17 | x | call_sensitivity.rb:43:24:43:24 | x | provenance | | +| call_sensitivity.rb:31:17:31:17 | x | call_sensitivity.rb:31:27:31:27 | x | provenance | | +| call_sensitivity.rb:32:25:32:32 | call to taint | call_sensitivity.rb:21:27:21:27 | x | provenance | | +| call_sensitivity.rb:40:23:40:23 | x | call_sensitivity.rb:40:31:40:31 | x | provenance | | +| call_sensitivity.rb:41:25:41:32 | call to taint | call_sensitivity.rb:21:27:21:27 | x | provenance | | +| call_sensitivity.rb:43:24:43:24 | x | call_sensitivity.rb:43:32:43:32 | x | provenance | | +| call_sensitivity.rb:44:26:44:33 | call to taint | call_sensitivity.rb:21:27:21:27 | x | provenance | | +| call_sensitivity.rb:50:15:50:15 | x | call_sensitivity.rb:51:10:51:10 | x | provenance | | +| call_sensitivity.rb:54:15:54:15 | x | call_sensitivity.rb:55:13:55:13 | x | provenance | | +| call_sensitivity.rb:54:15:54:15 | x | call_sensitivity.rb:55:13:55:13 | x | provenance | | +| call_sensitivity.rb:55:13:55:13 | x | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:55:13:55:13 | x | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:58:20:58:20 | x | call_sensitivity.rb:59:18:59:18 | x | provenance | | +| call_sensitivity.rb:59:18:59:18 | x | call_sensitivity.rb:54:15:54:15 | x | provenance | | +| call_sensitivity.rb:62:18:62:18 | y | call_sensitivity.rb:63:15:63:15 | y | provenance | | +| call_sensitivity.rb:62:18:62:18 | y | call_sensitivity.rb:63:15:63:15 | y | provenance | | +| call_sensitivity.rb:63:15:63:15 | y | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:63:15:63:15 | y | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:66:20:66:20 | x | call_sensitivity.rb:67:24:67:24 | x | provenance | | +| call_sensitivity.rb:67:24:67:24 | x | call_sensitivity.rb:62:18:62:18 | y | provenance | | +| call_sensitivity.rb:70:30:70:30 | x | call_sensitivity.rb:71:10:71:10 | x | provenance | | +| call_sensitivity.rb:74:18:74:18 | y | call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | provenance | | +| call_sensitivity.rb:75:20:77:7 | do ... end [captured y] | call_sensitivity.rb:76:17:76:17 | y | provenance | | +| call_sensitivity.rb:76:17:76:17 | y | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:80:15:80:15 | x | call_sensitivity.rb:81:18:81:18 | x | provenance | | +| call_sensitivity.rb:81:18:81:18 | x | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:85:18:85:27 | ( ... ) | call_sensitivity.rb:80:15:80:15 | x | provenance | | +| call_sensitivity.rb:85:19:85:26 | call to taint | call_sensitivity.rb:85:18:85:27 | ( ... ) | provenance | | +| call_sensitivity.rb:88:30:88:30 | x | call_sensitivity.rb:89:23:89:23 | x | provenance | | +| call_sensitivity.rb:88:30:88:30 | x | call_sensitivity.rb:89:23:89:23 | x | provenance | | +| call_sensitivity.rb:89:23:89:23 | x | call_sensitivity.rb:70:30:70:30 | x | provenance | | +| call_sensitivity.rb:89:23:89:23 | x | call_sensitivity.rb:70:30:70:30 | x | provenance | | +| call_sensitivity.rb:92:35:92:35 | x | call_sensitivity.rb:93:28:93:28 | x | provenance | | +| call_sensitivity.rb:93:28:93:28 | x | call_sensitivity.rb:88:30:88:30 | x | provenance | | +| call_sensitivity.rb:96:33:96:33 | y | call_sensitivity.rb:97:25:97:25 | y | provenance | | +| call_sensitivity.rb:96:33:96:33 | y | call_sensitivity.rb:97:25:97:25 | y | provenance | | +| call_sensitivity.rb:97:25:97:25 | y | call_sensitivity.rb:70:30:70:30 | x | provenance | | +| call_sensitivity.rb:97:25:97:25 | y | call_sensitivity.rb:70:30:70:30 | x | provenance | | +| call_sensitivity.rb:100:35:100:35 | x | call_sensitivity.rb:101:34:101:34 | x | provenance | | +| call_sensitivity.rb:101:34:101:34 | x | call_sensitivity.rb:96:33:96:33 | y | provenance | | +| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | provenance | | +| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | provenance | | +| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | provenance | | +| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:105:10:105:10 | x | provenance | | +| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:106:13:106:13 | x | provenance | | +| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:106:13:106:13 | x | provenance | | +| call_sensitivity.rb:104:18:104:18 | x | call_sensitivity.rb:106:13:106:13 | x | provenance | | +| call_sensitivity.rb:106:13:106:13 | x | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:106:13:106:13 | x | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:106:13:106:13 | x | call_sensitivity.rb:50:15:50:15 | x | provenance | | +| call_sensitivity.rb:109:21:109:21 | x | call_sensitivity.rb:110:9:110:9 | x | provenance | | +| call_sensitivity.rb:110:9:110:9 | x | call_sensitivity.rb:104:18:104:18 | x | provenance | | +| call_sensitivity.rb:114:11:114:20 | ( ... ) | call_sensitivity.rb:104:18:104:18 | x | provenance | | +| call_sensitivity.rb:114:12:114:19 | call to taint | call_sensitivity.rb:114:11:114:20 | ( ... ) | provenance | | +| call_sensitivity.rb:115:11:115:18 | call to taint | call_sensitivity.rb:54:15:54:15 | x | provenance | | +| call_sensitivity.rb:116:16:116:23 | call to taint | call_sensitivity.rb:58:20:58:20 | x | provenance | | +| call_sensitivity.rb:117:14:117:22 | call to taint | call_sensitivity.rb:62:18:62:18 | y | provenance | | +| call_sensitivity.rb:118:16:118:24 | call to taint | call_sensitivity.rb:66:20:66:20 | x | provenance | | +| call_sensitivity.rb:119:14:119:22 | call to taint | call_sensitivity.rb:74:18:74:18 | y | provenance | | +| call_sensitivity.rb:121:21:121:28 | call to taint | call_sensitivity.rb:88:30:88:30 | x | provenance | | +| call_sensitivity.rb:122:26:122:33 | call to taint | call_sensitivity.rb:92:35:92:35 | x | provenance | | +| call_sensitivity.rb:123:24:123:32 | call to taint | call_sensitivity.rb:96:33:96:33 | y | provenance | | +| call_sensitivity.rb:124:26:124:33 | call to taint | call_sensitivity.rb:100:35:100:35 | x | provenance | | +| call_sensitivity.rb:125:12:125:19 | call to taint | call_sensitivity.rb:109:21:109:21 | x | provenance | | +| call_sensitivity.rb:166:14:166:22 | call to taint | call_sensitivity.rb:74:18:74:18 | y | provenance | | +| call_sensitivity.rb:174:19:174:19 | x | call_sensitivity.rb:175:12:175:12 | x | provenance | | +| call_sensitivity.rb:175:12:175:12 | x | call_sensitivity.rb:104:18:104:18 | x | provenance | | +| call_sensitivity.rb:178:11:178:19 | call to taint | call_sensitivity.rb:174:19:174:19 | x | provenance | | +| call_sensitivity.rb:187:11:187:20 | ( ... ) | call_sensitivity.rb:104:18:104:18 | x | provenance | | +| call_sensitivity.rb:187:12:187:19 | call to taint | call_sensitivity.rb:187:11:187:20 | ( ... ) | provenance | | +| call_sensitivity.rb:189:19:189:19 | x | call_sensitivity.rb:190:9:190:9 | x | provenance | | +| call_sensitivity.rb:190:9:190:9 | x | call_sensitivity.rb:194:23:194:23 | x | provenance | | +| call_sensitivity.rb:193:19:193:19 | x | call_sensitivity.rb:194:17:194:17 | x | provenance | | +| call_sensitivity.rb:194:17:194:17 | x | call_sensitivity.rb:189:19:189:19 | x | provenance | | +| call_sensitivity.rb:194:23:194:23 | x | call_sensitivity.rb:195:11:195:11 | x | provenance | | +| call_sensitivity.rb:195:11:195:11 | x | call_sensitivity.rb:199:30:199:30 | x | provenance | | +| call_sensitivity.rb:195:11:195:11 | x | call_sensitivity.rb:203:26:203:26 | x | provenance | | +| call_sensitivity.rb:199:15:199:24 | ( ... ) | call_sensitivity.rb:193:19:193:19 | x | provenance | | +| call_sensitivity.rb:199:16:199:23 | call to taint | call_sensitivity.rb:199:15:199:24 | ( ... ) | provenance | | +| call_sensitivity.rb:199:30:199:30 | x | call_sensitivity.rb:200:8:200:8 | x | provenance | | +| call_sensitivity.rb:203:26:203:26 | x | call_sensitivity.rb:204:8:204:8 | x | provenance | | +| call_sensitivity.rb:207:16:207:16 | y | call_sensitivity.rb:209:9:209:9 | y | provenance | | +| call_sensitivity.rb:209:9:209:9 | y | call_sensitivity.rb:214:9:214:9 | x | provenance | | +| call_sensitivity.rb:214:9:214:9 | x | call_sensitivity.rb:215:10:215:10 | x | provenance | | +| call_sensitivity.rb:222:15:222:24 | ( ... ) | call_sensitivity.rb:207:16:207:16 | y | provenance | | +| call_sensitivity.rb:222:16:222:23 | call to taint | call_sensitivity.rb:222:15:222:24 | ( ... ) | provenance | | nodes | call_sensitivity.rb:9:6:9:14 | ( ... ) | semmle.label | ( ... ) | | call_sensitivity.rb:9:7:9:13 | call to taint | semmle.label | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/erb/erb.expected b/ruby/ql/test/library-tests/dataflow/erb/erb.expected index 1ca2216a5590..b78f3c192460 100644 --- a/ruby/ql/test/library-tests/dataflow/erb/erb.expected +++ b/ruby/ql/test/library-tests/dataflow/erb/erb.expected @@ -1,49 +1,49 @@ testFailures edges -| main.rb:3:9:3:9 | x | main.rb:4:26:4:26 | x | -| main.rb:3:13:3:21 | call to source | main.rb:3:9:3:9 | x | -| main.rb:4:9:4:12 | view [@x] | main.rb:5:16:5:19 | view [@x] | -| main.rb:4:16:4:27 | call to new [@x] | main.rb:4:9:4:12 | view [@x] | -| main.rb:4:26:4:26 | x | main.rb:4:16:4:27 | call to new [@x] | -| main.rb:4:26:4:26 | x | view1.rb:5:20:5:20 | x | -| main.rb:5:16:5:19 | view [@x] | view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | -| main.rb:10:16:10:19 | [post] view [@x] | main.rb:11:9:11:12 | view [@x] | -| main.rb:11:9:11:12 | view [@x] | view2.rb:2:5:4:7 | self in foo [@x] | -| main.rb:15:9:15:9 | x | main.rb:16:26:16:26 | x | -| main.rb:15:13:15:21 | call to source | main.rb:15:9:15:9 | x | -| main.rb:16:9:16:12 | view [@x] | main.rb:17:16:17:19 | view [@x] | -| main.rb:16:16:16:27 | call to new [@x] | main.rb:16:9:16:12 | view [@x] | -| main.rb:16:26:16:26 | x | main.rb:16:16:16:27 | call to new [@x] | -| main.rb:16:26:16:26 | x | view3.rb:2:20:2:20 | x | -| main.rb:17:16:17:19 | view [@x] | view3.html.erb:3:1:4:1 | self in view3.html.erb [@x] | -| view1.html.erb:2:5:2:9 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | -| view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | view1.html.erb:2:5:2:9 | self [@x] | -| view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | view1.html.erb:7:1:7:5 | self [@x] | -| view1.html.erb:6:1:6:14 | [post] self [@x] | view1.html.erb:7:1:7:5 | self [@x] | -| view1.html.erb:6:5:6:13 | call to source | view1.html.erb:6:1:6:14 | [post] self [@x] | -| view1.html.erb:6:5:6:13 | call to source | view1.rb:13:13:13:13 | x | -| view1.html.erb:7:1:7:5 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | -| view1.html.erb:7:1:7:5 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | -| view1.rb:5:20:5:20 | x | view1.rb:6:14:6:14 | x | -| view1.rb:6:14:6:14 | x | view1.rb:6:9:6:10 | [post] self [@x] | -| view1.rb:9:5:11:7 | self in foo [@x] | view1.rb:10:14:10:15 | self [@x] | -| view1.rb:10:14:10:15 | self [@x] | view1.rb:10:14:10:15 | @x | -| view1.rb:13:13:13:13 | x | view1.rb:14:14:14:14 | x | -| view1.rb:14:14:14:14 | x | view1.rb:14:9:14:10 | [post] self [@x] | -| view2.html.erb:3:1:3:14 | [post] self [@x] | main.rb:10:16:10:19 | [post] view [@x] | -| view2.html.erb:3:5:3:13 | call to source | view2.html.erb:3:1:3:14 | [post] self [@x] | -| view2.html.erb:3:5:3:13 | call to source | view2.rb:6:13:6:13 | x | -| view2.rb:2:5:4:7 | self in foo [@x] | view2.rb:3:14:3:15 | self [@x] | -| view2.rb:3:14:3:15 | self [@x] | view2.rb:3:14:3:15 | @x | -| view2.rb:6:13:6:13 | x | view2.rb:7:14:7:14 | x | -| view2.rb:7:14:7:14 | x | view2.rb:7:9:7:10 | [post] self [@x] | -| view3.html.erb:3:1:4:1 | self in view3.html.erb [@x] | view3.html.erb:3:6:3:8 | self [@x] | -| view3.html.erb:3:6:3:8 | self [@x] | view3.html.erb:3:6:3:8 | call to get | -| view3.html.erb:3:6:3:8 | self [@x] | view3.rb:6:5:8:7 | self in get [@x] | -| view3.rb:2:20:2:20 | x | view3.rb:3:14:3:14 | x | -| view3.rb:3:14:3:14 | x | view3.rb:3:9:3:10 | [post] self [@x] | -| view3.rb:6:5:8:7 | self in get [@x] | view3.rb:7:9:7:10 | self [@x] | -| view3.rb:7:9:7:10 | self [@x] | view3.rb:7:9:7:10 | @x | +| main.rb:3:9:3:9 | x | main.rb:4:26:4:26 | x | provenance | | +| main.rb:3:13:3:21 | call to source | main.rb:3:9:3:9 | x | provenance | | +| main.rb:4:9:4:12 | view [@x] | main.rb:5:16:5:19 | view [@x] | provenance | | +| main.rb:4:16:4:27 | call to new [@x] | main.rb:4:9:4:12 | view [@x] | provenance | | +| main.rb:4:26:4:26 | x | main.rb:4:16:4:27 | call to new [@x] | provenance | | +| main.rb:4:26:4:26 | x | view1.rb:5:20:5:20 | x | provenance | | +| main.rb:5:16:5:19 | view [@x] | view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | provenance | | +| main.rb:10:16:10:19 | [post] view [@x] | main.rb:11:9:11:12 | view [@x] | provenance | | +| main.rb:11:9:11:12 | view [@x] | view2.rb:2:5:4:7 | self in foo [@x] | provenance | | +| main.rb:15:9:15:9 | x | main.rb:16:26:16:26 | x | provenance | | +| main.rb:15:13:15:21 | call to source | main.rb:15:9:15:9 | x | provenance | | +| main.rb:16:9:16:12 | view [@x] | main.rb:17:16:17:19 | view [@x] | provenance | | +| main.rb:16:16:16:27 | call to new [@x] | main.rb:16:9:16:12 | view [@x] | provenance | | +| main.rb:16:26:16:26 | x | main.rb:16:16:16:27 | call to new [@x] | provenance | | +| main.rb:16:26:16:26 | x | view3.rb:2:20:2:20 | x | provenance | | +| main.rb:17:16:17:19 | view [@x] | view3.html.erb:3:1:4:1 | self in view3.html.erb [@x] | provenance | | +| view1.html.erb:2:5:2:9 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | provenance | | +| view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | view1.html.erb:2:5:2:9 | self [@x] | provenance | | +| view1.html.erb:2:5:8:1 | self in view1.html.erb [@x] | view1.html.erb:7:1:7:5 | self [@x] | provenance | | +| view1.html.erb:6:1:6:14 | [post] self [@x] | view1.html.erb:7:1:7:5 | self [@x] | provenance | | +| view1.html.erb:6:5:6:13 | call to source | view1.html.erb:6:1:6:14 | [post] self [@x] | provenance | | +| view1.html.erb:6:5:6:13 | call to source | view1.rb:13:13:13:13 | x | provenance | | +| view1.html.erb:7:1:7:5 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | provenance | | +| view1.html.erb:7:1:7:5 | self [@x] | view1.rb:9:5:11:7 | self in foo [@x] | provenance | | +| view1.rb:5:20:5:20 | x | view1.rb:6:14:6:14 | x | provenance | | +| view1.rb:6:14:6:14 | x | view1.rb:6:9:6:10 | [post] self [@x] | provenance | | +| view1.rb:9:5:11:7 | self in foo [@x] | view1.rb:10:14:10:15 | self [@x] | provenance | | +| view1.rb:10:14:10:15 | self [@x] | view1.rb:10:14:10:15 | @x | provenance | | +| view1.rb:13:13:13:13 | x | view1.rb:14:14:14:14 | x | provenance | | +| view1.rb:14:14:14:14 | x | view1.rb:14:9:14:10 | [post] self [@x] | provenance | | +| view2.html.erb:3:1:3:14 | [post] self [@x] | main.rb:10:16:10:19 | [post] view [@x] | provenance | | +| view2.html.erb:3:5:3:13 | call to source | view2.html.erb:3:1:3:14 | [post] self [@x] | provenance | | +| view2.html.erb:3:5:3:13 | call to source | view2.rb:6:13:6:13 | x | provenance | | +| view2.rb:2:5:4:7 | self in foo [@x] | view2.rb:3:14:3:15 | self [@x] | provenance | | +| view2.rb:3:14:3:15 | self [@x] | view2.rb:3:14:3:15 | @x | provenance | | +| view2.rb:6:13:6:13 | x | view2.rb:7:14:7:14 | x | provenance | | +| view2.rb:7:14:7:14 | x | view2.rb:7:9:7:10 | [post] self [@x] | provenance | | +| view3.html.erb:3:1:4:1 | self in view3.html.erb [@x] | view3.html.erb:3:6:3:8 | self [@x] | provenance | | +| view3.html.erb:3:6:3:8 | self [@x] | view3.html.erb:3:6:3:8 | call to get | provenance | | +| view3.html.erb:3:6:3:8 | self [@x] | view3.rb:6:5:8:7 | self in get [@x] | provenance | | +| view3.rb:2:20:2:20 | x | view3.rb:3:14:3:14 | x | provenance | | +| view3.rb:3:14:3:14 | x | view3.rb:3:9:3:10 | [post] self [@x] | provenance | | +| view3.rb:6:5:8:7 | self in get [@x] | view3.rb:7:9:7:10 | self [@x] | provenance | | +| view3.rb:7:9:7:10 | self [@x] | view3.rb:7:9:7:10 | @x | provenance | | nodes | main.rb:3:9:3:9 | x | semmle.label | x | | main.rb:3:13:3:21 | call to source | semmle.label | call to source | diff --git a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected index 13366c8733c7..7f40375e9636 100644 --- a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected +++ b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected @@ -1,1089 +1,1089 @@ testFailures edges -| semantics.rb:2:5:2:5 | a | semantics.rb:3:9:3:9 | a | -| semantics.rb:2:5:2:5 | a | semantics.rb:3:9:3:9 | a | -| semantics.rb:2:9:2:18 | call to source | semantics.rb:2:5:2:5 | a | -| semantics.rb:2:9:2:18 | call to source | semantics.rb:2:5:2:5 | a | -| semantics.rb:3:5:3:5 | x | semantics.rb:4:10:4:10 | x | -| semantics.rb:3:5:3:5 | x | semantics.rb:4:10:4:10 | x | -| semantics.rb:3:9:3:9 | a | semantics.rb:3:9:3:14 | call to s1 | -| semantics.rb:3:9:3:9 | a | semantics.rb:3:9:3:14 | call to s1 | -| semantics.rb:3:9:3:14 | call to s1 | semantics.rb:3:5:3:5 | x | -| semantics.rb:3:9:3:14 | call to s1 | semantics.rb:3:5:3:5 | x | -| semantics.rb:8:5:8:5 | a | semantics.rb:9:10:9:10 | a | -| semantics.rb:8:5:8:5 | a | semantics.rb:9:10:9:10 | a | -| semantics.rb:8:9:8:18 | call to source | semantics.rb:8:5:8:5 | a | -| semantics.rb:8:9:8:18 | call to source | semantics.rb:8:5:8:5 | a | -| semantics.rb:9:5:9:5 | [post] x | semantics.rb:10:10:10:10 | x | -| semantics.rb:9:5:9:5 | [post] x | semantics.rb:10:10:10:10 | x | -| semantics.rb:9:10:9:10 | a | semantics.rb:9:5:9:5 | [post] x | -| semantics.rb:9:10:9:10 | a | semantics.rb:9:5:9:5 | [post] x | -| semantics.rb:14:5:14:5 | a | semantics.rb:15:8:15:8 | a | -| semantics.rb:14:5:14:5 | a | semantics.rb:15:8:15:8 | a | -| semantics.rb:14:9:14:18 | call to source | semantics.rb:14:5:14:5 | a | -| semantics.rb:14:9:14:18 | call to source | semantics.rb:14:5:14:5 | a | -| semantics.rb:15:8:15:8 | a | semantics.rb:15:11:15:11 | [post] x | -| semantics.rb:15:8:15:8 | a | semantics.rb:15:11:15:11 | [post] x | -| semantics.rb:15:11:15:11 | [post] x | semantics.rb:16:10:16:10 | x | -| semantics.rb:15:11:15:11 | [post] x | semantics.rb:16:10:16:10 | x | -| semantics.rb:22:18:22:32 | call to source | semantics.rb:22:10:22:33 | call to s4 | -| semantics.rb:22:18:22:32 | call to source | semantics.rb:22:10:22:33 | call to s4 | -| semantics.rb:23:23:23:32 | call to source | semantics.rb:23:10:23:33 | call to s4 | -| semantics.rb:23:23:23:32 | call to source | semantics.rb:23:10:23:33 | call to s4 | -| semantics.rb:28:5:28:5 | a | semantics.rb:29:8:29:8 | a | -| semantics.rb:28:5:28:5 | a | semantics.rb:29:8:29:8 | a | -| semantics.rb:28:9:28:18 | call to source | semantics.rb:28:5:28:5 | a | -| semantics.rb:28:9:28:18 | call to source | semantics.rb:28:5:28:5 | a | -| semantics.rb:29:8:29:8 | a | semantics.rb:29:14:29:14 | [post] y | -| semantics.rb:29:8:29:8 | a | semantics.rb:29:14:29:14 | [post] y | -| semantics.rb:29:8:29:8 | a | semantics.rb:29:17:29:17 | [post] z | -| semantics.rb:29:8:29:8 | a | semantics.rb:29:17:29:17 | [post] z | -| semantics.rb:29:14:29:14 | [post] y | semantics.rb:31:10:31:10 | y | -| semantics.rb:29:14:29:14 | [post] y | semantics.rb:31:10:31:10 | y | -| semantics.rb:29:17:29:17 | [post] z | semantics.rb:32:10:32:10 | z | -| semantics.rb:29:17:29:17 | [post] z | semantics.rb:32:10:32:10 | z | -| semantics.rb:40:5:40:5 | a | semantics.rb:41:8:41:8 | a | -| semantics.rb:40:5:40:5 | a | semantics.rb:41:8:41:8 | a | -| semantics.rb:40:9:40:18 | call to source | semantics.rb:40:5:40:5 | a | -| semantics.rb:40:9:40:18 | call to source | semantics.rb:40:5:40:5 | a | -| semantics.rb:41:8:41:8 | a | semantics.rb:41:16:41:16 | [post] x | -| semantics.rb:41:8:41:8 | a | semantics.rb:41:16:41:16 | [post] x | -| semantics.rb:41:16:41:16 | [post] x | semantics.rb:42:10:42:10 | x | -| semantics.rb:41:16:41:16 | [post] x | semantics.rb:42:10:42:10 | x | -| semantics.rb:46:15:46:24 | call to source | semantics.rb:46:10:46:26 | call to s8 | -| semantics.rb:46:15:46:24 | call to source | semantics.rb:46:10:46:26 | call to s8 | -| semantics.rb:48:9:48:18 | call to source | semantics.rb:47:10:49:7 | call to s8 | -| semantics.rb:48:9:48:18 | call to source | semantics.rb:47:10:49:7 | call to s8 | -| semantics.rb:53:8:53:17 | call to source | semantics.rb:53:23:53:23 | x | -| semantics.rb:53:8:53:17 | call to source | semantics.rb:53:23:53:23 | x | -| semantics.rb:53:23:53:23 | x | semantics.rb:53:31:53:31 | x | -| semantics.rb:53:23:53:23 | x | semantics.rb:53:31:53:31 | x | -| semantics.rb:54:8:54:17 | call to source | semantics.rb:54:24:54:24 | x | -| semantics.rb:54:8:54:17 | call to source | semantics.rb:54:24:54:24 | x | -| semantics.rb:54:24:54:24 | x | semantics.rb:55:14:55:14 | x | -| semantics.rb:54:24:54:24 | x | semantics.rb:55:14:55:14 | x | -| semantics.rb:60:5:60:5 | a | semantics.rb:61:14:61:14 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:61:14:61:14 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:62:17:62:17 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:62:17:62:17 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:63:19:63:19 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:63:19:63:19 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:64:27:64:27 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:64:27:64:27 | a | -| semantics.rb:60:5:60:5 | a | semantics.rb:66:14:66:15 | &... | -| semantics.rb:60:5:60:5 | a | semantics.rb:66:14:66:15 | &... | -| semantics.rb:60:9:60:18 | call to source | semantics.rb:60:5:60:5 | a | -| semantics.rb:60:9:60:18 | call to source | semantics.rb:60:5:60:5 | a | -| semantics.rb:61:10:61:15 | call to s10 [splat position 0] | semantics.rb:61:10:61:15 | call to s10 | -| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 | -| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 | -| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 [splat position 0] | -| semantics.rb:62:10:62:18 | call to s10 [splat position 1] | semantics.rb:62:10:62:18 | call to s10 | -| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 | -| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 | -| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 [splat position 1] | -| semantics.rb:63:19:63:19 | a | semantics.rb:63:10:63:20 | call to s10 | -| semantics.rb:63:19:63:19 | a | semantics.rb:63:10:63:20 | call to s10 | -| semantics.rb:64:27:64:27 | a | semantics.rb:64:10:64:28 | call to s10 | -| semantics.rb:64:27:64:27 | a | semantics.rb:64:10:64:28 | call to s10 | -| semantics.rb:66:14:66:15 | &... | semantics.rb:66:10:66:16 | call to s10 | -| semantics.rb:66:14:66:15 | &... | semantics.rb:66:10:66:16 | call to s10 | -| semantics.rb:80:5:80:5 | a | semantics.rb:81:5:81:5 | a | -| semantics.rb:80:5:80:5 | a | semantics.rb:81:5:81:5 | a | -| semantics.rb:80:9:80:18 | call to source | semantics.rb:80:5:80:5 | a | -| semantics.rb:80:9:80:18 | call to source | semantics.rb:80:5:80:5 | a | -| semantics.rb:81:5:81:5 | a | semantics.rb:81:11:81:11 | [post] x | -| semantics.rb:81:5:81:5 | a | semantics.rb:81:11:81:11 | [post] x | -| semantics.rb:81:5:81:5 | a | semantics.rb:81:14:81:14 | [post] y | -| semantics.rb:81:5:81:5 | a | semantics.rb:81:14:81:14 | [post] y | -| semantics.rb:81:5:81:5 | a | semantics.rb:81:22:81:22 | [post] z | -| semantics.rb:81:5:81:5 | a | semantics.rb:81:22:81:22 | [post] z | -| semantics.rb:81:11:81:11 | [post] x | semantics.rb:82:10:82:10 | x | -| semantics.rb:81:11:81:11 | [post] x | semantics.rb:82:10:82:10 | x | -| semantics.rb:81:14:81:14 | [post] y | semantics.rb:83:10:83:10 | y | -| semantics.rb:81:14:81:14 | [post] y | semantics.rb:83:10:83:10 | y | -| semantics.rb:81:22:81:22 | [post] z | semantics.rb:84:10:84:10 | z | -| semantics.rb:81:22:81:22 | [post] z | semantics.rb:84:10:84:10 | z | -| semantics.rb:89:5:89:5 | a | semantics.rb:91:19:91:19 | a | -| semantics.rb:89:5:89:5 | a | semantics.rb:91:19:91:19 | a | -| semantics.rb:89:5:89:5 | a | semantics.rb:92:27:92:27 | a | -| semantics.rb:89:5:89:5 | a | semantics.rb:92:27:92:27 | a | -| semantics.rb:89:9:89:18 | call to source | semantics.rb:89:5:89:5 | a | -| semantics.rb:89:9:89:18 | call to source | semantics.rb:89:5:89:5 | a | -| semantics.rb:91:19:91:19 | a | semantics.rb:91:10:91:20 | call to s13 | -| semantics.rb:91:19:91:19 | a | semantics.rb:91:10:91:20 | call to s13 | -| semantics.rb:92:27:92:27 | a | semantics.rb:92:10:92:28 | call to s13 | -| semantics.rb:92:27:92:27 | a | semantics.rb:92:10:92:28 | call to s13 | -| semantics.rb:97:5:97:5 | a | semantics.rb:98:5:98:5 | a | -| semantics.rb:97:5:97:5 | a | semantics.rb:98:5:98:5 | a | -| semantics.rb:97:5:97:5 | a | semantics.rb:99:5:99:5 | a | -| semantics.rb:97:5:97:5 | a | semantics.rb:99:5:99:5 | a | -| semantics.rb:97:9:97:18 | call to source | semantics.rb:97:5:97:5 | a | -| semantics.rb:97:9:97:18 | call to source | semantics.rb:97:5:97:5 | a | -| semantics.rb:98:5:98:5 | a | semantics.rb:98:19:98:19 | [post] x | -| semantics.rb:98:5:98:5 | a | semantics.rb:98:19:98:19 | [post] x | -| semantics.rb:98:19:98:19 | [post] x | semantics.rb:101:10:101:10 | x | -| semantics.rb:98:19:98:19 | [post] x | semantics.rb:101:10:101:10 | x | -| semantics.rb:99:5:99:5 | a | semantics.rb:99:16:99:16 | [post] y | -| semantics.rb:99:5:99:5 | a | semantics.rb:99:16:99:16 | [post] y | -| semantics.rb:99:5:99:5 | a | semantics.rb:99:24:99:24 | [post] z | -| semantics.rb:99:5:99:5 | a | semantics.rb:99:24:99:24 | [post] z | -| semantics.rb:99:16:99:16 | [post] y | semantics.rb:102:10:102:10 | y | -| semantics.rb:99:16:99:16 | [post] y | semantics.rb:102:10:102:10 | y | -| semantics.rb:99:24:99:24 | [post] z | semantics.rb:103:10:103:10 | z | -| semantics.rb:99:24:99:24 | [post] z | semantics.rb:103:10:103:10 | z | -| semantics.rb:107:5:107:5 | a | semantics.rb:109:19:109:19 | a | -| semantics.rb:107:5:107:5 | a | semantics.rb:109:19:109:19 | a | -| semantics.rb:107:9:107:18 | call to source | semantics.rb:107:5:107:5 | a | -| semantics.rb:107:9:107:18 | call to source | semantics.rb:107:5:107:5 | a | -| semantics.rb:108:5:108:5 | b | semantics.rb:110:27:110:27 | b | -| semantics.rb:108:5:108:5 | b | semantics.rb:110:27:110:27 | b | -| semantics.rb:108:9:108:18 | call to source | semantics.rb:108:5:108:5 | b | -| semantics.rb:108:9:108:18 | call to source | semantics.rb:108:5:108:5 | b | -| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semantics.rb:109:10:109:34 | ...[...] | -| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semantics.rb:109:10:109:34 | ...[...] | -| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | -| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | -| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semantics.rb:110:10:110:34 | ...[...] | -| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semantics.rb:110:10:110:34 | ...[...] | -| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | -| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | -| semantics.rb:114:5:114:5 | a | semantics.rb:116:14:116:14 | a | -| semantics.rb:114:5:114:5 | a | semantics.rb:116:14:116:14 | a | -| semantics.rb:114:5:114:5 | a | semantics.rb:119:17:119:17 | a | -| semantics.rb:114:5:114:5 | a | semantics.rb:119:17:119:17 | a | -| semantics.rb:114:9:114:18 | call to source | semantics.rb:114:5:114:5 | a | -| semantics.rb:114:9:114:18 | call to source | semantics.rb:114:5:114:5 | a | -| semantics.rb:115:5:115:5 | b | semantics.rb:121:17:121:17 | b | -| semantics.rb:115:5:115:5 | b | semantics.rb:121:17:121:17 | b | -| semantics.rb:115:9:115:18 | call to source | semantics.rb:115:5:115:5 | b | -| semantics.rb:115:9:115:18 | call to source | semantics.rb:115:5:115:5 | b | -| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:117:16:117:16 | h [element :a] | -| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:117:16:117:16 | h [element :a] | -| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:121:22:121:22 | h [element :a] | -| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:121:22:121:22 | h [element :a] | -| semantics.rb:116:14:116:14 | a | semantics.rb:116:5:116:5 | h [element :a] | -| semantics.rb:116:14:116:14 | a | semantics.rb:116:5:116:5 | h [element :a] | -| semantics.rb:117:14:117:16 | ** ... [element :a] | semantics.rb:117:10:117:17 | call to s16 | -| semantics.rb:117:14:117:16 | ** ... [element :a] | semantics.rb:117:10:117:17 | call to s16 | -| semantics.rb:117:16:117:16 | h [element :a] | semantics.rb:117:14:117:16 | ** ... [element :a] | -| semantics.rb:117:16:117:16 | h [element :a] | semantics.rb:117:14:117:16 | ** ... [element :a] | -| semantics.rb:119:17:119:17 | a | semantics.rb:119:10:119:18 | call to s16 | -| semantics.rb:119:17:119:17 | a | semantics.rb:119:10:119:18 | call to s16 | -| semantics.rb:121:17:121:17 | b | semantics.rb:121:10:121:23 | call to s16 | -| semantics.rb:121:17:121:17 | b | semantics.rb:121:10:121:23 | call to s16 | -| semantics.rb:121:20:121:22 | ** ... [element :a] | semantics.rb:121:10:121:23 | call to s16 | -| semantics.rb:121:20:121:22 | ** ... [element :a] | semantics.rb:121:10:121:23 | call to s16 | -| semantics.rb:121:22:121:22 | h [element :a] | semantics.rb:121:20:121:22 | ** ... [element :a] | -| semantics.rb:121:22:121:22 | h [element :a] | semantics.rb:121:20:121:22 | ** ... [element :a] | -| semantics.rb:125:5:125:5 | a | semantics.rb:127:14:127:14 | a | -| semantics.rb:125:5:125:5 | a | semantics.rb:128:14:128:14 | a | -| semantics.rb:125:5:125:5 | a | semantics.rb:128:14:128:14 | a | -| semantics.rb:125:9:125:18 | call to source | semantics.rb:125:5:125:5 | a | -| semantics.rb:125:9:125:18 | call to source | semantics.rb:125:5:125:5 | a | -| semantics.rb:126:5:126:5 | b | semantics.rb:127:17:127:17 | b | -| semantics.rb:126:5:126:5 | b | semantics.rb:129:17:129:17 | b | -| semantics.rb:126:5:126:5 | b | semantics.rb:129:17:129:17 | b | -| semantics.rb:126:9:126:18 | call to source | semantics.rb:126:5:126:5 | b | -| semantics.rb:126:9:126:18 | call to source | semantics.rb:126:5:126:5 | b | -| semantics.rb:127:10:127:18 | call to s17 [splat position 0] | semantics.rb:127:10:127:18 | call to s17 | -| semantics.rb:127:10:127:18 | call to s17 [splat position 1] | semantics.rb:127:10:127:18 | call to s17 | -| semantics.rb:127:14:127:14 | a | semantics.rb:127:10:127:18 | call to s17 [splat position 0] | -| semantics.rb:127:17:127:17 | b | semantics.rb:127:10:127:18 | call to s17 [splat position 1] | -| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semantics.rb:128:10:128:21 | ...[...] | -| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semantics.rb:128:10:128:21 | ...[...] | -| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [splat position 0] | -| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [splat position 0] | -| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semantics.rb:129:10:129:21 | ...[...] | -| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semantics.rb:129:10:129:21 | ...[...] | -| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [splat position 1] | -| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [splat position 1] | -| semantics.rb:133:5:133:5 | a | semantics.rb:135:12:135:12 | a | -| semantics.rb:133:5:133:5 | a | semantics.rb:135:12:135:12 | a | -| semantics.rb:133:5:133:5 | a | semantics.rb:137:14:137:14 | a | -| semantics.rb:133:5:133:5 | a | semantics.rb:137:14:137:14 | a | -| semantics.rb:133:9:133:18 | call to source | semantics.rb:133:5:133:5 | a | -| semantics.rb:133:9:133:18 | call to source | semantics.rb:133:5:133:5 | a | -| semantics.rb:134:5:134:5 | b | semantics.rb:135:15:135:15 | b | -| semantics.rb:134:5:134:5 | b | semantics.rb:135:15:135:15 | b | -| semantics.rb:134:9:134:18 | call to source | semantics.rb:134:5:134:5 | b | -| semantics.rb:134:9:134:18 | call to source | semantics.rb:134:5:134:5 | b | -| semantics.rb:135:5:135:7 | arr [element 0] | semantics.rb:136:15:136:17 | arr [element 0] | -| semantics.rb:135:5:135:7 | arr [element 0] | semantics.rb:136:15:136:17 | arr [element 0] | -| semantics.rb:135:5:135:7 | arr [element 1] | semantics.rb:136:15:136:17 | arr [element 1] | -| semantics.rb:135:5:135:7 | arr [element 1] | semantics.rb:136:15:136:17 | arr [element 1] | -| semantics.rb:135:12:135:12 | a | semantics.rb:135:5:135:7 | arr [element 0] | -| semantics.rb:135:12:135:12 | a | semantics.rb:135:5:135:7 | arr [element 0] | -| semantics.rb:135:15:135:15 | b | semantics.rb:135:5:135:7 | arr [element 1] | -| semantics.rb:135:15:135:15 | b | semantics.rb:135:5:135:7 | arr [element 1] | -| semantics.rb:136:14:136:17 | * ... [element 0] | semantics.rb:136:10:136:18 | call to s18 | -| semantics.rb:136:14:136:17 | * ... [element 0] | semantics.rb:136:10:136:18 | call to s18 | -| semantics.rb:136:14:136:17 | * ... [element 1] | semantics.rb:136:10:136:18 | call to s18 | -| semantics.rb:136:14:136:17 | * ... [element 1] | semantics.rb:136:10:136:18 | call to s18 | -| semantics.rb:136:15:136:17 | arr [element 0] | semantics.rb:136:14:136:17 | * ... [element 0] | -| semantics.rb:136:15:136:17 | arr [element 0] | semantics.rb:136:14:136:17 | * ... [element 0] | -| semantics.rb:136:15:136:17 | arr [element 1] | semantics.rb:136:14:136:17 | * ... [element 1] | -| semantics.rb:136:15:136:17 | arr [element 1] | semantics.rb:136:14:136:17 | * ... [element 1] | -| semantics.rb:137:14:137:14 | a | semantics.rb:137:10:137:15 | call to s18 | -| semantics.rb:137:14:137:14 | a | semantics.rb:137:10:137:15 | call to s18 | -| semantics.rb:142:5:142:5 | b | semantics.rb:146:5:146:5 | [post] h [element] | -| semantics.rb:142:5:142:5 | b | semantics.rb:146:5:146:5 | [post] h [element] | -| semantics.rb:142:9:142:18 | call to source | semantics.rb:142:5:142:5 | b | -| semantics.rb:142:9:142:18 | call to source | semantics.rb:142:5:142:5 | b | -| semantics.rb:146:5:146:5 | [post] h [element] | semantics.rb:148:14:148:14 | h [element] | -| semantics.rb:146:5:146:5 | [post] h [element] | semantics.rb:148:14:148:14 | h [element] | -| semantics.rb:148:14:148:14 | h [element] | semantics.rb:148:10:148:15 | call to s19 | -| semantics.rb:148:14:148:14 | h [element] | semantics.rb:148:10:148:15 | call to s19 | -| semantics.rb:152:5:152:5 | a | semantics.rb:153:13:153:13 | a | -| semantics.rb:152:5:152:5 | a | semantics.rb:153:13:153:13 | a | -| semantics.rb:152:9:152:18 | call to source | semantics.rb:152:5:152:5 | a | -| semantics.rb:152:9:152:18 | call to source | semantics.rb:152:5:152:5 | a | -| semantics.rb:153:5:153:5 | x [element] | semantics.rb:154:10:154:10 | x [element] | -| semantics.rb:153:5:153:5 | x [element] | semantics.rb:154:10:154:10 | x [element] | -| semantics.rb:153:5:153:5 | x [element] | semantics.rb:155:10:155:10 | x [element] | -| semantics.rb:153:5:153:5 | x [element] | semantics.rb:155:10:155:10 | x [element] | -| semantics.rb:153:9:153:14 | call to s20 [element] | semantics.rb:153:5:153:5 | x [element] | -| semantics.rb:153:9:153:14 | call to s20 [element] | semantics.rb:153:5:153:5 | x [element] | -| semantics.rb:153:13:153:13 | a | semantics.rb:153:9:153:14 | call to s20 [element] | -| semantics.rb:153:13:153:13 | a | semantics.rb:153:9:153:14 | call to s20 [element] | -| semantics.rb:154:10:154:10 | x [element] | semantics.rb:154:10:154:13 | ...[...] | -| semantics.rb:154:10:154:10 | x [element] | semantics.rb:154:10:154:13 | ...[...] | -| semantics.rb:155:10:155:10 | x [element] | semantics.rb:155:10:155:13 | ...[...] | -| semantics.rb:155:10:155:10 | x [element] | semantics.rb:155:10:155:13 | ...[...] | -| semantics.rb:159:5:159:5 | a | semantics.rb:163:5:163:5 | [post] h [element 0] | -| semantics.rb:159:5:159:5 | a | semantics.rb:163:5:163:5 | [post] h [element 0] | -| semantics.rb:159:9:159:18 | call to source | semantics.rb:159:5:159:5 | a | -| semantics.rb:159:9:159:18 | call to source | semantics.rb:159:5:159:5 | a | -| semantics.rb:160:5:160:5 | b | semantics.rb:164:5:164:5 | [post] h [element] | -| semantics.rb:160:5:160:5 | b | semantics.rb:164:5:164:5 | [post] h [element] | -| semantics.rb:160:9:160:18 | call to source | semantics.rb:160:5:160:5 | b | -| semantics.rb:160:9:160:18 | call to source | semantics.rb:160:5:160:5 | b | -| semantics.rb:163:5:163:5 | [post] h [element 0] | semantics.rb:166:14:166:14 | h [element 0] | -| semantics.rb:163:5:163:5 | [post] h [element 0] | semantics.rb:166:14:166:14 | h [element 0] | -| semantics.rb:164:5:164:5 | [post] h [element] | semantics.rb:166:14:166:14 | h [element] | -| semantics.rb:164:5:164:5 | [post] h [element] | semantics.rb:166:14:166:14 | h [element] | -| semantics.rb:166:14:166:14 | h [element 0] | semantics.rb:166:10:166:15 | call to s21 | -| semantics.rb:166:14:166:14 | h [element 0] | semantics.rb:166:10:166:15 | call to s21 | -| semantics.rb:166:14:166:14 | h [element] | semantics.rb:166:10:166:15 | call to s21 | -| semantics.rb:166:14:166:14 | h [element] | semantics.rb:166:10:166:15 | call to s21 | -| semantics.rb:170:5:170:5 | a | semantics.rb:171:13:171:13 | a | -| semantics.rb:170:5:170:5 | a | semantics.rb:171:13:171:13 | a | -| semantics.rb:170:9:170:18 | call to source | semantics.rb:170:5:170:5 | a | -| semantics.rb:170:9:170:18 | call to source | semantics.rb:170:5:170:5 | a | -| semantics.rb:171:5:171:5 | x [element] | semantics.rb:172:10:172:10 | x [element] | -| semantics.rb:171:5:171:5 | x [element] | semantics.rb:172:10:172:10 | x [element] | -| semantics.rb:171:5:171:5 | x [element] | semantics.rb:173:10:173:10 | x [element] | -| semantics.rb:171:5:171:5 | x [element] | semantics.rb:173:10:173:10 | x [element] | -| semantics.rb:171:9:171:14 | call to s22 [element] | semantics.rb:171:5:171:5 | x [element] | -| semantics.rb:171:9:171:14 | call to s22 [element] | semantics.rb:171:5:171:5 | x [element] | -| semantics.rb:171:13:171:13 | a | semantics.rb:171:9:171:14 | call to s22 [element] | -| semantics.rb:171:13:171:13 | a | semantics.rb:171:9:171:14 | call to s22 [element] | -| semantics.rb:172:10:172:10 | x [element] | semantics.rb:172:10:172:13 | ...[...] | -| semantics.rb:172:10:172:10 | x [element] | semantics.rb:172:10:172:13 | ...[...] | -| semantics.rb:173:10:173:10 | x [element] | semantics.rb:173:10:173:13 | ...[...] | -| semantics.rb:173:10:173:10 | x [element] | semantics.rb:173:10:173:13 | ...[...] | -| semantics.rb:177:5:177:5 | a | semantics.rb:180:5:180:5 | [post] h [element 0] | -| semantics.rb:177:5:177:5 | a | semantics.rb:180:5:180:5 | [post] h [element 0] | -| semantics.rb:177:9:177:18 | call to source | semantics.rb:177:5:177:5 | a | -| semantics.rb:177:9:177:18 | call to source | semantics.rb:177:5:177:5 | a | -| semantics.rb:180:5:180:5 | [post] h [element 0] | semantics.rb:181:5:181:5 | h [element 0] | -| semantics.rb:180:5:180:5 | [post] h [element 0] | semantics.rb:181:5:181:5 | h [element 0] | -| semantics.rb:181:5:181:5 | [post] h [element 0] | semantics.rb:182:14:182:14 | h [element 0] | -| semantics.rb:181:5:181:5 | [post] h [element 0] | semantics.rb:182:14:182:14 | h [element 0] | -| semantics.rb:181:5:181:5 | h [element 0] | semantics.rb:181:5:181:5 | [post] h [element 0] | -| semantics.rb:181:5:181:5 | h [element 0] | semantics.rb:181:5:181:5 | [post] h [element 0] | -| semantics.rb:182:14:182:14 | h [element 0] | semantics.rb:182:10:182:15 | call to s23 | -| semantics.rb:182:14:182:14 | h [element 0] | semantics.rb:182:10:182:15 | call to s23 | -| semantics.rb:186:5:186:5 | a | semantics.rb:187:13:187:13 | a | -| semantics.rb:186:5:186:5 | a | semantics.rb:187:13:187:13 | a | -| semantics.rb:186:9:186:18 | call to source | semantics.rb:186:5:186:5 | a | -| semantics.rb:186:9:186:18 | call to source | semantics.rb:186:5:186:5 | a | -| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:188:10:188:10 | x [element 0] | -| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:188:10:188:10 | x [element 0] | -| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:190:10:190:10 | x [element 0] | -| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:190:10:190:10 | x [element 0] | -| semantics.rb:187:9:187:14 | call to s24 [element 0] | semantics.rb:187:5:187:5 | x [element 0] | -| semantics.rb:187:9:187:14 | call to s24 [element 0] | semantics.rb:187:5:187:5 | x [element 0] | -| semantics.rb:187:13:187:13 | a | semantics.rb:187:9:187:14 | call to s24 [element 0] | -| semantics.rb:187:13:187:13 | a | semantics.rb:187:9:187:14 | call to s24 [element 0] | -| semantics.rb:188:10:188:10 | x [element 0] | semantics.rb:188:10:188:13 | ...[...] | -| semantics.rb:188:10:188:10 | x [element 0] | semantics.rb:188:10:188:13 | ...[...] | -| semantics.rb:190:10:190:10 | x [element 0] | semantics.rb:190:10:190:13 | ...[...] | -| semantics.rb:190:10:190:10 | x [element 0] | semantics.rb:190:10:190:13 | ...[...] | -| semantics.rb:194:5:194:5 | a | semantics.rb:197:5:197:5 | [post] h [element 0] | -| semantics.rb:194:5:194:5 | a | semantics.rb:197:5:197:5 | [post] h [element 0] | -| semantics.rb:194:9:194:18 | call to source | semantics.rb:194:5:194:5 | a | -| semantics.rb:194:9:194:18 | call to source | semantics.rb:194:5:194:5 | a | -| semantics.rb:197:5:197:5 | [post] h [element 0] | semantics.rb:198:5:198:5 | h [element 0] | -| semantics.rb:197:5:197:5 | [post] h [element 0] | semantics.rb:198:5:198:5 | h [element 0] | -| semantics.rb:198:5:198:5 | [post] h [element 0] | semantics.rb:199:14:199:14 | h [element 0] | -| semantics.rb:198:5:198:5 | [post] h [element 0] | semantics.rb:199:14:199:14 | h [element 0] | -| semantics.rb:198:5:198:5 | h [element 0] | semantics.rb:198:5:198:5 | [post] h [element 0] | -| semantics.rb:198:5:198:5 | h [element 0] | semantics.rb:198:5:198:5 | [post] h [element 0] | -| semantics.rb:199:14:199:14 | h [element 0] | semantics.rb:199:10:199:15 | call to s25 | -| semantics.rb:199:14:199:14 | h [element 0] | semantics.rb:199:10:199:15 | call to s25 | -| semantics.rb:203:5:203:5 | a | semantics.rb:204:13:204:13 | a | -| semantics.rb:203:5:203:5 | a | semantics.rb:204:13:204:13 | a | -| semantics.rb:203:9:203:18 | call to source | semantics.rb:203:5:203:5 | a | -| semantics.rb:203:9:203:18 | call to source | semantics.rb:203:5:203:5 | a | -| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:205:10:205:10 | x [element 0] | -| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:205:10:205:10 | x [element 0] | -| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:207:10:207:10 | x [element 0] | -| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:207:10:207:10 | x [element 0] | -| semantics.rb:204:9:204:14 | call to s26 [element 0] | semantics.rb:204:5:204:5 | x [element 0] | -| semantics.rb:204:9:204:14 | call to s26 [element 0] | semantics.rb:204:5:204:5 | x [element 0] | -| semantics.rb:204:13:204:13 | a | semantics.rb:204:9:204:14 | call to s26 [element 0] | -| semantics.rb:204:13:204:13 | a | semantics.rb:204:9:204:14 | call to s26 [element 0] | -| semantics.rb:205:10:205:10 | x [element 0] | semantics.rb:205:10:205:13 | ...[...] | -| semantics.rb:205:10:205:10 | x [element 0] | semantics.rb:205:10:205:13 | ...[...] | -| semantics.rb:207:10:207:10 | x [element 0] | semantics.rb:207:10:207:13 | ...[...] | -| semantics.rb:207:10:207:10 | x [element 0] | semantics.rb:207:10:207:13 | ...[...] | -| semantics.rb:212:5:212:5 | b | semantics.rb:218:5:218:5 | [post] h [element 1] | -| semantics.rb:212:5:212:5 | b | semantics.rb:218:5:218:5 | [post] h [element 1] | -| semantics.rb:212:9:212:18 | call to source | semantics.rb:212:5:212:5 | b | -| semantics.rb:212:9:212:18 | call to source | semantics.rb:212:5:212:5 | b | -| semantics.rb:213:5:213:5 | c | semantics.rb:219:5:219:5 | [post] h [element 2] | -| semantics.rb:213:5:213:5 | c | semantics.rb:219:5:219:5 | [post] h [element 2] | -| semantics.rb:213:9:213:18 | call to source | semantics.rb:213:5:213:5 | c | -| semantics.rb:213:9:213:18 | call to source | semantics.rb:213:5:213:5 | c | -| semantics.rb:214:5:214:5 | d | semantics.rb:220:5:220:5 | [post] h [element] | -| semantics.rb:214:5:214:5 | d | semantics.rb:220:5:220:5 | [post] h [element] | -| semantics.rb:214:9:214:18 | call to source | semantics.rb:214:5:214:5 | d | -| semantics.rb:214:9:214:18 | call to source | semantics.rb:214:5:214:5 | d | -| semantics.rb:218:5:218:5 | [post] h [element 1] | semantics.rb:219:5:219:5 | h [element 1] | -| semantics.rb:218:5:218:5 | [post] h [element 1] | semantics.rb:219:5:219:5 | h [element 1] | -| semantics.rb:219:5:219:5 | [post] h [element 1] | semantics.rb:222:14:222:14 | h [element 1] | -| semantics.rb:219:5:219:5 | [post] h [element 1] | semantics.rb:222:14:222:14 | h [element 1] | -| semantics.rb:219:5:219:5 | [post] h [element 2] | semantics.rb:222:14:222:14 | h [element 2] | -| semantics.rb:219:5:219:5 | [post] h [element 2] | semantics.rb:222:14:222:14 | h [element 2] | -| semantics.rb:219:5:219:5 | h [element 1] | semantics.rb:219:5:219:5 | [post] h [element 1] | -| semantics.rb:219:5:219:5 | h [element 1] | semantics.rb:219:5:219:5 | [post] h [element 1] | -| semantics.rb:220:5:220:5 | [post] h [element] | semantics.rb:222:14:222:14 | h [element] | -| semantics.rb:220:5:220:5 | [post] h [element] | semantics.rb:222:14:222:14 | h [element] | -| semantics.rb:222:14:222:14 | h [element 1] | semantics.rb:222:10:222:15 | call to s27 | -| semantics.rb:222:14:222:14 | h [element 1] | semantics.rb:222:10:222:15 | call to s27 | -| semantics.rb:222:14:222:14 | h [element 2] | semantics.rb:222:10:222:15 | call to s27 | -| semantics.rb:222:14:222:14 | h [element 2] | semantics.rb:222:10:222:15 | call to s27 | -| semantics.rb:222:14:222:14 | h [element] | semantics.rb:222:10:222:15 | call to s27 | -| semantics.rb:222:14:222:14 | h [element] | semantics.rb:222:10:222:15 | call to s27 | -| semantics.rb:226:5:226:5 | a | semantics.rb:227:13:227:13 | a | -| semantics.rb:226:5:226:5 | a | semantics.rb:227:13:227:13 | a | -| semantics.rb:226:9:226:18 | call to source | semantics.rb:226:5:226:5 | a | -| semantics.rb:226:9:226:18 | call to source | semantics.rb:226:5:226:5 | a | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:228:10:228:10 | x [element] | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:228:10:228:10 | x [element] | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:229:10:229:10 | x [element] | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:229:10:229:10 | x [element] | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:230:10:230:10 | x [element] | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:230:10:230:10 | x [element] | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:231:10:231:10 | x [element] | -| semantics.rb:227:5:227:5 | x [element] | semantics.rb:231:10:231:10 | x [element] | -| semantics.rb:227:9:227:14 | call to s28 [element] | semantics.rb:227:5:227:5 | x [element] | -| semantics.rb:227:9:227:14 | call to s28 [element] | semantics.rb:227:5:227:5 | x [element] | -| semantics.rb:227:13:227:13 | a | semantics.rb:227:9:227:14 | call to s28 [element] | -| semantics.rb:227:13:227:13 | a | semantics.rb:227:9:227:14 | call to s28 [element] | -| semantics.rb:228:10:228:10 | x [element] | semantics.rb:228:10:228:13 | ...[...] | -| semantics.rb:228:10:228:10 | x [element] | semantics.rb:228:10:228:13 | ...[...] | -| semantics.rb:229:10:229:10 | x [element] | semantics.rb:229:10:229:13 | ...[...] | -| semantics.rb:229:10:229:10 | x [element] | semantics.rb:229:10:229:13 | ...[...] | -| semantics.rb:230:10:230:10 | x [element] | semantics.rb:230:10:230:13 | ...[...] | -| semantics.rb:230:10:230:10 | x [element] | semantics.rb:230:10:230:13 | ...[...] | -| semantics.rb:231:10:231:10 | x [element] | semantics.rb:231:10:231:13 | ...[...] | -| semantics.rb:231:10:231:10 | x [element] | semantics.rb:231:10:231:13 | ...[...] | -| semantics.rb:236:5:236:5 | b | semantics.rb:241:5:241:5 | [post] h [element 1] | -| semantics.rb:236:5:236:5 | b | semantics.rb:241:5:241:5 | [post] h [element 1] | -| semantics.rb:236:9:236:18 | call to source | semantics.rb:236:5:236:5 | b | -| semantics.rb:236:9:236:18 | call to source | semantics.rb:236:5:236:5 | b | -| semantics.rb:237:5:237:5 | c | semantics.rb:242:5:242:5 | [post] h [element 2] | -| semantics.rb:237:5:237:5 | c | semantics.rb:242:5:242:5 | [post] h [element 2] | -| semantics.rb:237:9:237:18 | call to source | semantics.rb:237:5:237:5 | c | -| semantics.rb:237:9:237:18 | call to source | semantics.rb:237:5:237:5 | c | -| semantics.rb:241:5:241:5 | [post] h [element 1] | semantics.rb:242:5:242:5 | h [element 1] | -| semantics.rb:241:5:241:5 | [post] h [element 1] | semantics.rb:242:5:242:5 | h [element 1] | -| semantics.rb:242:5:242:5 | [post] h [element 1] | semantics.rb:245:14:245:14 | h [element 1] | -| semantics.rb:242:5:242:5 | [post] h [element 1] | semantics.rb:245:14:245:14 | h [element 1] | -| semantics.rb:242:5:242:5 | [post] h [element 2] | semantics.rb:245:14:245:14 | h [element 2] | -| semantics.rb:242:5:242:5 | [post] h [element 2] | semantics.rb:245:14:245:14 | h [element 2] | -| semantics.rb:242:5:242:5 | h [element 1] | semantics.rb:242:5:242:5 | [post] h [element 1] | -| semantics.rb:242:5:242:5 | h [element 1] | semantics.rb:242:5:242:5 | [post] h [element 1] | -| semantics.rb:245:14:245:14 | h [element 1] | semantics.rb:245:10:245:15 | call to s29 | -| semantics.rb:245:14:245:14 | h [element 1] | semantics.rb:245:10:245:15 | call to s29 | -| semantics.rb:245:14:245:14 | h [element 2] | semantics.rb:245:10:245:15 | call to s29 | -| semantics.rb:245:14:245:14 | h [element 2] | semantics.rb:245:10:245:15 | call to s29 | -| semantics.rb:249:5:249:5 | a | semantics.rb:250:13:250:13 | a | -| semantics.rb:249:5:249:5 | a | semantics.rb:250:13:250:13 | a | -| semantics.rb:249:9:249:18 | call to source | semantics.rb:249:5:249:5 | a | -| semantics.rb:249:9:249:18 | call to source | semantics.rb:249:5:249:5 | a | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:251:10:251:10 | x [element] | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:251:10:251:10 | x [element] | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:252:10:252:10 | x [element] | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:252:10:252:10 | x [element] | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:253:10:253:10 | x [element] | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:253:10:253:10 | x [element] | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:254:10:254:10 | x [element] | -| semantics.rb:250:5:250:5 | x [element] | semantics.rb:254:10:254:10 | x [element] | -| semantics.rb:250:9:250:14 | call to s30 [element] | semantics.rb:250:5:250:5 | x [element] | -| semantics.rb:250:9:250:14 | call to s30 [element] | semantics.rb:250:5:250:5 | x [element] | -| semantics.rb:250:13:250:13 | a | semantics.rb:250:9:250:14 | call to s30 [element] | -| semantics.rb:250:13:250:13 | a | semantics.rb:250:9:250:14 | call to s30 [element] | -| semantics.rb:251:10:251:10 | x [element] | semantics.rb:251:10:251:13 | ...[...] | -| semantics.rb:251:10:251:10 | x [element] | semantics.rb:251:10:251:13 | ...[...] | -| semantics.rb:252:10:252:10 | x [element] | semantics.rb:252:10:252:13 | ...[...] | -| semantics.rb:252:10:252:10 | x [element] | semantics.rb:252:10:252:13 | ...[...] | -| semantics.rb:253:10:253:10 | x [element] | semantics.rb:253:10:253:13 | ...[...] | -| semantics.rb:253:10:253:10 | x [element] | semantics.rb:253:10:253:13 | ...[...] | -| semantics.rb:254:10:254:10 | x [element] | semantics.rb:254:10:254:13 | ...[...] | -| semantics.rb:254:10:254:10 | x [element] | semantics.rb:254:10:254:13 | ...[...] | -| semantics.rb:258:5:258:5 | [post] h [element :foo] | semantics.rb:259:5:259:5 | h [element :foo] | -| semantics.rb:258:5:258:5 | [post] h [element :foo] | semantics.rb:259:5:259:5 | h [element :foo] | -| semantics.rb:258:15:258:25 | call to source | semantics.rb:258:5:258:5 | [post] h [element :foo] | -| semantics.rb:258:15:258:25 | call to source | semantics.rb:258:5:258:5 | [post] h [element :foo] | -| semantics.rb:259:5:259:5 | [post] h [element :foo] | semantics.rb:260:5:260:5 | h [element :foo] | -| semantics.rb:259:5:259:5 | [post] h [element :foo] | semantics.rb:260:5:260:5 | h [element :foo] | -| semantics.rb:259:5:259:5 | h [element :foo] | semantics.rb:259:5:259:5 | [post] h [element :foo] | -| semantics.rb:259:5:259:5 | h [element :foo] | semantics.rb:259:5:259:5 | [post] h [element :foo] | -| semantics.rb:260:5:260:5 | [post] h [element :foo] | semantics.rb:263:14:263:14 | h [element :foo] | -| semantics.rb:260:5:260:5 | [post] h [element :foo] | semantics.rb:263:14:263:14 | h [element :foo] | -| semantics.rb:260:5:260:5 | h [element :foo] | semantics.rb:260:5:260:5 | [post] h [element :foo] | -| semantics.rb:260:5:260:5 | h [element :foo] | semantics.rb:260:5:260:5 | [post] h [element :foo] | -| semantics.rb:261:5:261:5 | [post] h [element] | semantics.rb:263:14:263:14 | h [element] | -| semantics.rb:261:5:261:5 | [post] h [element] | semantics.rb:263:14:263:14 | h [element] | -| semantics.rb:261:12:261:22 | call to source | semantics.rb:261:5:261:5 | [post] h [element] | -| semantics.rb:261:12:261:22 | call to source | semantics.rb:261:5:261:5 | [post] h [element] | -| semantics.rb:263:14:263:14 | h [element :foo] | semantics.rb:263:10:263:15 | call to s31 | -| semantics.rb:263:14:263:14 | h [element :foo] | semantics.rb:263:10:263:15 | call to s31 | -| semantics.rb:263:14:263:14 | h [element] | semantics.rb:263:10:263:15 | call to s31 | -| semantics.rb:263:14:263:14 | h [element] | semantics.rb:263:10:263:15 | call to s31 | -| semantics.rb:268:5:268:5 | [post] h [element foo] | semantics.rb:269:5:269:5 | h [element foo] | -| semantics.rb:268:5:268:5 | [post] h [element foo] | semantics.rb:269:5:269:5 | h [element foo] | -| semantics.rb:268:16:268:26 | call to source | semantics.rb:268:5:268:5 | [post] h [element foo] | -| semantics.rb:268:16:268:26 | call to source | semantics.rb:268:5:268:5 | [post] h [element foo] | -| semantics.rb:269:5:269:5 | [post] h [element foo] | semantics.rb:270:5:270:5 | h [element foo] | -| semantics.rb:269:5:269:5 | [post] h [element foo] | semantics.rb:270:5:270:5 | h [element foo] | -| semantics.rb:269:5:269:5 | h [element foo] | semantics.rb:269:5:269:5 | [post] h [element foo] | -| semantics.rb:269:5:269:5 | h [element foo] | semantics.rb:269:5:269:5 | [post] h [element foo] | -| semantics.rb:270:5:270:5 | [post] h [element foo] | semantics.rb:273:14:273:14 | h [element foo] | -| semantics.rb:270:5:270:5 | [post] h [element foo] | semantics.rb:273:14:273:14 | h [element foo] | -| semantics.rb:270:5:270:5 | h [element foo] | semantics.rb:270:5:270:5 | [post] h [element foo] | -| semantics.rb:270:5:270:5 | h [element foo] | semantics.rb:270:5:270:5 | [post] h [element foo] | -| semantics.rb:271:5:271:5 | [post] h [element] | semantics.rb:273:14:273:14 | h [element] | -| semantics.rb:271:5:271:5 | [post] h [element] | semantics.rb:273:14:273:14 | h [element] | -| semantics.rb:271:12:271:22 | call to source | semantics.rb:271:5:271:5 | [post] h [element] | -| semantics.rb:271:12:271:22 | call to source | semantics.rb:271:5:271:5 | [post] h [element] | -| semantics.rb:273:14:273:14 | h [element foo] | semantics.rb:273:10:273:15 | call to s32 | -| semantics.rb:273:14:273:14 | h [element foo] | semantics.rb:273:10:273:15 | call to s32 | -| semantics.rb:273:14:273:14 | h [element] | semantics.rb:273:10:273:15 | call to s32 | -| semantics.rb:273:14:273:14 | h [element] | semantics.rb:273:10:273:15 | call to s32 | -| semantics.rb:281:5:281:5 | [post] h [element] | semantics.rb:282:5:282:5 | h [element] | -| semantics.rb:281:5:281:5 | [post] h [element] | semantics.rb:282:5:282:5 | h [element] | -| semantics.rb:281:12:281:22 | call to source | semantics.rb:281:5:281:5 | [post] h [element] | -| semantics.rb:281:12:281:22 | call to source | semantics.rb:281:5:281:5 | [post] h [element] | -| semantics.rb:282:5:282:5 | [post] h [element nil] | semantics.rb:283:5:283:5 | h [element nil] | -| semantics.rb:282:5:282:5 | [post] h [element nil] | semantics.rb:283:5:283:5 | h [element nil] | -| semantics.rb:282:5:282:5 | [post] h [element] | semantics.rb:283:5:283:5 | h [element] | -| semantics.rb:282:5:282:5 | [post] h [element] | semantics.rb:283:5:283:5 | h [element] | -| semantics.rb:282:5:282:5 | h [element] | semantics.rb:282:5:282:5 | [post] h [element] | -| semantics.rb:282:5:282:5 | h [element] | semantics.rb:282:5:282:5 | [post] h [element] | -| semantics.rb:282:14:282:24 | call to source | semantics.rb:282:5:282:5 | [post] h [element nil] | -| semantics.rb:282:14:282:24 | call to source | semantics.rb:282:5:282:5 | [post] h [element nil] | -| semantics.rb:283:5:283:5 | [post] h [element nil] | semantics.rb:284:5:284:5 | h [element nil] | -| semantics.rb:283:5:283:5 | [post] h [element nil] | semantics.rb:284:5:284:5 | h [element nil] | -| semantics.rb:283:5:283:5 | [post] h [element true] | semantics.rb:284:5:284:5 | h [element true] | -| semantics.rb:283:5:283:5 | [post] h [element true] | semantics.rb:284:5:284:5 | h [element true] | -| semantics.rb:283:5:283:5 | [post] h [element] | semantics.rb:284:5:284:5 | h [element] | -| semantics.rb:283:5:283:5 | [post] h [element] | semantics.rb:284:5:284:5 | h [element] | -| semantics.rb:283:5:283:5 | h [element nil] | semantics.rb:283:5:283:5 | [post] h [element nil] | -| semantics.rb:283:5:283:5 | h [element nil] | semantics.rb:283:5:283:5 | [post] h [element nil] | -| semantics.rb:283:5:283:5 | h [element] | semantics.rb:283:5:283:5 | [post] h [element] | -| semantics.rb:283:5:283:5 | h [element] | semantics.rb:283:5:283:5 | [post] h [element] | -| semantics.rb:283:15:283:25 | call to source | semantics.rb:283:5:283:5 | [post] h [element true] | -| semantics.rb:283:15:283:25 | call to source | semantics.rb:283:5:283:5 | [post] h [element true] | -| semantics.rb:284:5:284:5 | [post] h [element false] | semantics.rb:286:14:286:14 | h [element false] | -| semantics.rb:284:5:284:5 | [post] h [element false] | semantics.rb:286:14:286:14 | h [element false] | -| semantics.rb:284:5:284:5 | [post] h [element nil] | semantics.rb:286:14:286:14 | h [element nil] | -| semantics.rb:284:5:284:5 | [post] h [element nil] | semantics.rb:286:14:286:14 | h [element nil] | -| semantics.rb:284:5:284:5 | [post] h [element true] | semantics.rb:286:14:286:14 | h [element true] | -| semantics.rb:284:5:284:5 | [post] h [element true] | semantics.rb:286:14:286:14 | h [element true] | -| semantics.rb:284:5:284:5 | [post] h [element] | semantics.rb:286:14:286:14 | h [element] | -| semantics.rb:284:5:284:5 | [post] h [element] | semantics.rb:286:14:286:14 | h [element] | -| semantics.rb:284:5:284:5 | h [element nil] | semantics.rb:284:5:284:5 | [post] h [element nil] | -| semantics.rb:284:5:284:5 | h [element nil] | semantics.rb:284:5:284:5 | [post] h [element nil] | -| semantics.rb:284:5:284:5 | h [element true] | semantics.rb:284:5:284:5 | [post] h [element true] | -| semantics.rb:284:5:284:5 | h [element true] | semantics.rb:284:5:284:5 | [post] h [element true] | -| semantics.rb:284:5:284:5 | h [element] | semantics.rb:284:5:284:5 | [post] h [element] | -| semantics.rb:284:5:284:5 | h [element] | semantics.rb:284:5:284:5 | [post] h [element] | -| semantics.rb:284:16:284:26 | call to source | semantics.rb:284:5:284:5 | [post] h [element false] | -| semantics.rb:284:16:284:26 | call to source | semantics.rb:284:5:284:5 | [post] h [element false] | -| semantics.rb:286:14:286:14 | h [element false] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:286:14:286:14 | h [element false] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:286:14:286:14 | h [element nil] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:286:14:286:14 | h [element nil] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:286:14:286:14 | h [element true] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:286:14:286:14 | h [element true] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:286:14:286:14 | h [element] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:286:14:286:14 | h [element] | semantics.rb:286:10:286:15 | call to s33 | -| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:291:10:291:10 | x [element :foo] | -| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:291:10:291:10 | x [element :foo] | -| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:293:10:293:10 | x [element :foo] | -| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:293:10:293:10 | x [element :foo] | -| semantics.rb:290:9:290:24 | call to s35 [element :foo] | semantics.rb:290:5:290:5 | x [element :foo] | -| semantics.rb:290:9:290:24 | call to s35 [element :foo] | semantics.rb:290:5:290:5 | x [element :foo] | -| semantics.rb:290:13:290:23 | call to source | semantics.rb:290:9:290:24 | call to s35 [element :foo] | -| semantics.rb:290:13:290:23 | call to source | semantics.rb:290:9:290:24 | call to s35 [element :foo] | -| semantics.rb:291:10:291:10 | x [element :foo] | semantics.rb:291:10:291:16 | ...[...] | -| semantics.rb:291:10:291:10 | x [element :foo] | semantics.rb:291:10:291:16 | ...[...] | -| semantics.rb:293:10:293:10 | x [element :foo] | semantics.rb:293:10:293:13 | ...[...] | -| semantics.rb:293:10:293:10 | x [element :foo] | semantics.rb:293:10:293:13 | ...[...] | -| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:299:10:299:10 | x [element foo] | -| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:299:10:299:10 | x [element foo] | -| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:301:10:301:10 | x [element foo] | -| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:301:10:301:10 | x [element foo] | -| semantics.rb:297:9:297:24 | call to s36 [element foo] | semantics.rb:297:5:297:5 | x [element foo] | -| semantics.rb:297:9:297:24 | call to s36 [element foo] | semantics.rb:297:5:297:5 | x [element foo] | -| semantics.rb:297:13:297:23 | call to source | semantics.rb:297:9:297:24 | call to s36 [element foo] | -| semantics.rb:297:13:297:23 | call to source | semantics.rb:297:9:297:24 | call to s36 [element foo] | -| semantics.rb:299:10:299:10 | x [element foo] | semantics.rb:299:10:299:17 | ...[...] | -| semantics.rb:299:10:299:10 | x [element foo] | semantics.rb:299:10:299:17 | ...[...] | -| semantics.rb:301:10:301:10 | x [element foo] | semantics.rb:301:10:301:13 | ...[...] | -| semantics.rb:301:10:301:10 | x [element foo] | semantics.rb:301:10:301:13 | ...[...] | -| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:307:10:307:10 | x [element true] | -| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:307:10:307:10 | x [element true] | -| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:309:10:309:10 | x [element true] | -| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:309:10:309:10 | x [element true] | -| semantics.rb:305:9:305:24 | call to s37 [element true] | semantics.rb:305:5:305:5 | x [element true] | -| semantics.rb:305:9:305:24 | call to s37 [element true] | semantics.rb:305:5:305:5 | x [element true] | -| semantics.rb:305:13:305:23 | call to source | semantics.rb:305:9:305:24 | call to s37 [element true] | -| semantics.rb:305:13:305:23 | call to source | semantics.rb:305:9:305:24 | call to s37 [element true] | -| semantics.rb:307:10:307:10 | x [element true] | semantics.rb:307:10:307:16 | ...[...] | -| semantics.rb:307:10:307:10 | x [element true] | semantics.rb:307:10:307:16 | ...[...] | -| semantics.rb:309:10:309:10 | x [element true] | semantics.rb:309:10:309:13 | ...[...] | -| semantics.rb:309:10:309:10 | x [element true] | semantics.rb:309:10:309:13 | ...[...] | -| semantics.rb:313:5:313:5 | [post] h [element foo] | semantics.rb:316:14:316:14 | h [element foo] | -| semantics.rb:313:5:313:5 | [post] h [element foo] | semantics.rb:316:14:316:14 | h [element foo] | -| semantics.rb:313:16:313:26 | call to source | semantics.rb:313:5:313:5 | [post] h [element foo] | -| semantics.rb:313:16:313:26 | call to source | semantics.rb:313:5:313:5 | [post] h [element foo] | -| semantics.rb:316:14:316:14 | h [element foo] | semantics.rb:316:10:316:15 | call to s38 | -| semantics.rb:316:14:316:14 | h [element foo] | semantics.rb:316:10:316:15 | call to s38 | -| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:322:10:322:10 | x [element :foo] | -| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:322:10:322:10 | x [element :foo] | -| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:323:10:323:10 | x [element :foo] | -| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:323:10:323:10 | x [element :foo] | -| semantics.rb:320:9:320:24 | call to s39 [element :foo] | semantics.rb:320:5:320:5 | x [element :foo] | -| semantics.rb:320:9:320:24 | call to s39 [element :foo] | semantics.rb:320:5:320:5 | x [element :foo] | -| semantics.rb:320:13:320:23 | call to source | semantics.rb:320:9:320:24 | call to s39 [element :foo] | -| semantics.rb:320:13:320:23 | call to source | semantics.rb:320:9:320:24 | call to s39 [element :foo] | -| semantics.rb:322:10:322:10 | x [element :foo] | semantics.rb:322:10:322:16 | ...[...] | -| semantics.rb:322:10:322:10 | x [element :foo] | semantics.rb:322:10:322:16 | ...[...] | -| semantics.rb:323:10:323:10 | x [element :foo] | semantics.rb:323:10:323:13 | ...[...] | -| semantics.rb:323:10:323:10 | x [element :foo] | semantics.rb:323:10:323:13 | ...[...] | -| semantics.rb:328:5:328:5 | [post] x [@foo] | semantics.rb:330:14:330:14 | x [@foo] | -| semantics.rb:328:5:328:5 | [post] x [@foo] | semantics.rb:330:14:330:14 | x [@foo] | -| semantics.rb:328:13:328:23 | call to source | semantics.rb:328:5:328:5 | [post] x [@foo] | -| semantics.rb:328:13:328:23 | call to source | semantics.rb:328:5:328:5 | [post] x [@foo] | -| semantics.rb:330:14:330:14 | x [@foo] | semantics.rb:330:10:330:15 | call to s40 | -| semantics.rb:330:14:330:14 | x [@foo] | semantics.rb:330:10:330:15 | call to s40 | -| semantics.rb:334:5:334:5 | x [@foo] | semantics.rb:335:10:335:10 | x [@foo] | -| semantics.rb:334:5:334:5 | x [@foo] | semantics.rb:335:10:335:10 | x [@foo] | -| semantics.rb:334:9:334:24 | call to s41 [@foo] | semantics.rb:334:5:334:5 | x [@foo] | -| semantics.rb:334:9:334:24 | call to s41 [@foo] | semantics.rb:334:5:334:5 | x [@foo] | -| semantics.rb:334:13:334:23 | call to source | semantics.rb:334:9:334:24 | call to s41 [@foo] | -| semantics.rb:334:13:334:23 | call to source | semantics.rb:334:9:334:24 | call to s41 [@foo] | -| semantics.rb:335:10:335:10 | x [@foo] | semantics.rb:335:10:335:14 | call to foo | -| semantics.rb:335:10:335:10 | x [@foo] | semantics.rb:335:10:335:14 | call to foo | -| semantics.rb:340:5:340:5 | [post] h [element 0] | semantics.rb:343:13:343:13 | h [element 0] | -| semantics.rb:340:5:340:5 | [post] h [element 0] | semantics.rb:343:13:343:13 | h [element 0] | -| semantics.rb:340:12:340:22 | call to source | semantics.rb:340:5:340:5 | [post] h [element 0] | -| semantics.rb:340:12:340:22 | call to source | semantics.rb:340:5:340:5 | [post] h [element 0] | -| semantics.rb:341:5:341:5 | [post] h [element] | semantics.rb:343:13:343:13 | h [element] | -| semantics.rb:341:5:341:5 | [post] h [element] | semantics.rb:343:13:343:13 | h [element] | -| semantics.rb:341:12:341:22 | call to source | semantics.rb:341:5:341:5 | [post] h [element] | -| semantics.rb:341:12:341:22 | call to source | semantics.rb:341:5:341:5 | [post] h [element] | -| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:345:10:345:10 | x [element 0] | -| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:345:10:345:10 | x [element 0] | -| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:347:10:347:10 | x [element 0] | -| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:347:10:347:10 | x [element 0] | -| semantics.rb:343:5:343:5 | x [element] | semantics.rb:345:10:345:10 | x [element] | -| semantics.rb:343:5:343:5 | x [element] | semantics.rb:345:10:345:10 | x [element] | -| semantics.rb:343:5:343:5 | x [element] | semantics.rb:346:10:346:10 | x [element] | -| semantics.rb:343:5:343:5 | x [element] | semantics.rb:346:10:346:10 | x [element] | -| semantics.rb:343:5:343:5 | x [element] | semantics.rb:347:10:347:10 | x [element] | -| semantics.rb:343:5:343:5 | x [element] | semantics.rb:347:10:347:10 | x [element] | -| semantics.rb:343:9:343:14 | call to s42 [element 0] | semantics.rb:343:5:343:5 | x [element 0] | -| semantics.rb:343:9:343:14 | call to s42 [element 0] | semantics.rb:343:5:343:5 | x [element 0] | -| semantics.rb:343:9:343:14 | call to s42 [element] | semantics.rb:343:5:343:5 | x [element] | -| semantics.rb:343:9:343:14 | call to s42 [element] | semantics.rb:343:5:343:5 | x [element] | -| semantics.rb:343:13:343:13 | h [element 0] | semantics.rb:343:9:343:14 | call to s42 [element 0] | -| semantics.rb:343:13:343:13 | h [element 0] | semantics.rb:343:9:343:14 | call to s42 [element 0] | -| semantics.rb:343:13:343:13 | h [element] | semantics.rb:343:9:343:14 | call to s42 [element] | -| semantics.rb:343:13:343:13 | h [element] | semantics.rb:343:9:343:14 | call to s42 [element] | -| semantics.rb:345:10:345:10 | x [element 0] | semantics.rb:345:10:345:13 | ...[...] | -| semantics.rb:345:10:345:10 | x [element 0] | semantics.rb:345:10:345:13 | ...[...] | -| semantics.rb:345:10:345:10 | x [element] | semantics.rb:345:10:345:13 | ...[...] | -| semantics.rb:345:10:345:10 | x [element] | semantics.rb:345:10:345:13 | ...[...] | -| semantics.rb:346:10:346:10 | x [element] | semantics.rb:346:10:346:13 | ...[...] | -| semantics.rb:346:10:346:10 | x [element] | semantics.rb:346:10:346:13 | ...[...] | -| semantics.rb:347:10:347:10 | x [element 0] | semantics.rb:347:10:347:13 | ...[...] | -| semantics.rb:347:10:347:10 | x [element 0] | semantics.rb:347:10:347:13 | ...[...] | -| semantics.rb:347:10:347:10 | x [element] | semantics.rb:347:10:347:13 | ...[...] | -| semantics.rb:347:10:347:10 | x [element] | semantics.rb:347:10:347:13 | ...[...] | -| semantics.rb:351:5:351:5 | [post] h [element 0] | semantics.rb:354:13:354:13 | h [element 0] | -| semantics.rb:351:5:351:5 | [post] h [element 0] | semantics.rb:354:13:354:13 | h [element 0] | -| semantics.rb:351:12:351:22 | call to source | semantics.rb:351:5:351:5 | [post] h [element 0] | -| semantics.rb:351:12:351:22 | call to source | semantics.rb:351:5:351:5 | [post] h [element 0] | -| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:356:10:356:10 | x [element 0] | -| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:356:10:356:10 | x [element 0] | -| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:358:10:358:10 | x [element 0] | -| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:358:10:358:10 | x [element 0] | -| semantics.rb:354:9:354:14 | call to s43 [element 0] | semantics.rb:354:5:354:5 | x [element 0] | -| semantics.rb:354:9:354:14 | call to s43 [element 0] | semantics.rb:354:5:354:5 | x [element 0] | -| semantics.rb:354:13:354:13 | h [element 0] | semantics.rb:354:9:354:14 | call to s43 [element 0] | -| semantics.rb:354:13:354:13 | h [element 0] | semantics.rb:354:9:354:14 | call to s43 [element 0] | -| semantics.rb:356:10:356:10 | x [element 0] | semantics.rb:356:10:356:13 | ...[...] | -| semantics.rb:356:10:356:10 | x [element 0] | semantics.rb:356:10:356:13 | ...[...] | -| semantics.rb:358:10:358:10 | x [element 0] | semantics.rb:358:10:358:13 | ...[...] | -| semantics.rb:358:10:358:10 | x [element 0] | semantics.rb:358:10:358:13 | ...[...] | -| semantics.rb:363:5:363:5 | [post] h [element 1] | semantics.rb:366:9:366:9 | h [element 1] | -| semantics.rb:363:5:363:5 | [post] h [element 1] | semantics.rb:366:9:366:9 | h [element 1] | -| semantics.rb:363:12:363:22 | call to source | semantics.rb:363:5:363:5 | [post] h [element 1] | -| semantics.rb:363:12:363:22 | call to source | semantics.rb:363:5:363:5 | [post] h [element 1] | -| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:369:10:369:10 | h [element 1] | -| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:369:10:369:10 | h [element 1] | -| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:370:10:370:10 | h [element 1] | -| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:370:10:370:10 | h [element 1] | -| semantics.rb:366:9:366:9 | h [element 1] | semantics.rb:366:9:366:9 | [post] h [element 1] | -| semantics.rb:366:9:366:9 | h [element 1] | semantics.rb:366:9:366:9 | [post] h [element 1] | -| semantics.rb:369:10:369:10 | h [element 1] | semantics.rb:369:10:369:13 | ...[...] | -| semantics.rb:369:10:369:10 | h [element 1] | semantics.rb:369:10:369:13 | ...[...] | -| semantics.rb:370:10:370:10 | h [element 1] | semantics.rb:370:10:370:13 | ...[...] | -| semantics.rb:370:10:370:10 | h [element 1] | semantics.rb:370:10:370:13 | ...[...] | -| semantics.rb:374:5:374:5 | [post] h [element 0] | semantics.rb:375:5:375:5 | h [element 0] | -| semantics.rb:374:5:374:5 | [post] h [element 0] | semantics.rb:375:5:375:5 | h [element 0] | -| semantics.rb:374:12:374:22 | call to source | semantics.rb:374:5:374:5 | [post] h [element 0] | -| semantics.rb:374:12:374:22 | call to source | semantics.rb:374:5:374:5 | [post] h [element 0] | -| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:378:10:378:10 | h [element 0] | -| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:378:10:378:10 | h [element 0] | -| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:380:10:380:10 | h [element 0] | -| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:380:10:380:10 | h [element 0] | -| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:379:10:379:10 | h [element 1] | -| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:379:10:379:10 | h [element 1] | -| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:380:10:380:10 | h [element 1] | -| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:380:10:380:10 | h [element 1] | -| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:382:9:382:9 | h [element 1] | -| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:382:9:382:9 | h [element 1] | -| semantics.rb:375:5:375:5 | h [element 0] | semantics.rb:375:5:375:5 | [post] h [element 0] | -| semantics.rb:375:5:375:5 | h [element 0] | semantics.rb:375:5:375:5 | [post] h [element 0] | -| semantics.rb:375:12:375:22 | call to source | semantics.rb:375:5:375:5 | [post] h [element 1] | -| semantics.rb:375:12:375:22 | call to source | semantics.rb:375:5:375:5 | [post] h [element 1] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:378:10:378:10 | h [element] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:378:10:378:10 | h [element] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:379:10:379:10 | h [element] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:379:10:379:10 | h [element] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:380:10:380:10 | h [element] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:380:10:380:10 | h [element] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:382:9:382:9 | h [element] | -| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:382:9:382:9 | h [element] | -| semantics.rb:376:12:376:22 | call to source | semantics.rb:376:5:376:5 | [post] h [element] | -| semantics.rb:376:12:376:22 | call to source | semantics.rb:376:5:376:5 | [post] h [element] | -| semantics.rb:378:10:378:10 | h [element 0] | semantics.rb:378:10:378:13 | ...[...] | -| semantics.rb:378:10:378:10 | h [element 0] | semantics.rb:378:10:378:13 | ...[...] | -| semantics.rb:378:10:378:10 | h [element] | semantics.rb:378:10:378:13 | ...[...] | -| semantics.rb:378:10:378:10 | h [element] | semantics.rb:378:10:378:13 | ...[...] | -| semantics.rb:379:10:379:10 | h [element 1] | semantics.rb:379:10:379:13 | ...[...] | -| semantics.rb:379:10:379:10 | h [element 1] | semantics.rb:379:10:379:13 | ...[...] | -| semantics.rb:379:10:379:10 | h [element] | semantics.rb:379:10:379:13 | ...[...] | -| semantics.rb:379:10:379:10 | h [element] | semantics.rb:379:10:379:13 | ...[...] | -| semantics.rb:380:10:380:10 | h [element 0] | semantics.rb:380:10:380:13 | ...[...] | -| semantics.rb:380:10:380:10 | h [element 0] | semantics.rb:380:10:380:13 | ...[...] | -| semantics.rb:380:10:380:10 | h [element 1] | semantics.rb:380:10:380:13 | ...[...] | -| semantics.rb:380:10:380:10 | h [element 1] | semantics.rb:380:10:380:13 | ...[...] | -| semantics.rb:380:10:380:10 | h [element] | semantics.rb:380:10:380:13 | ...[...] | -| semantics.rb:380:10:380:10 | h [element] | semantics.rb:380:10:380:13 | ...[...] | -| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:385:10:385:10 | h [element 1] | -| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:385:10:385:10 | h [element 1] | -| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:386:10:386:10 | h [element 1] | -| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:386:10:386:10 | h [element 1] | -| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:384:10:384:10 | h [element] | -| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:384:10:384:10 | h [element] | -| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:385:10:385:10 | h [element] | -| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:385:10:385:10 | h [element] | -| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:386:10:386:10 | h [element] | -| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:386:10:386:10 | h [element] | -| semantics.rb:382:9:382:9 | h [element 1] | semantics.rb:382:9:382:9 | [post] h [element 1] | -| semantics.rb:382:9:382:9 | h [element 1] | semantics.rb:382:9:382:9 | [post] h [element 1] | -| semantics.rb:382:9:382:9 | h [element] | semantics.rb:382:9:382:9 | [post] h [element] | -| semantics.rb:382:9:382:9 | h [element] | semantics.rb:382:9:382:9 | [post] h [element] | -| semantics.rb:384:10:384:10 | h [element] | semantics.rb:384:10:384:13 | ...[...] | -| semantics.rb:384:10:384:10 | h [element] | semantics.rb:384:10:384:13 | ...[...] | -| semantics.rb:385:10:385:10 | h [element 1] | semantics.rb:385:10:385:13 | ...[...] | -| semantics.rb:385:10:385:10 | h [element 1] | semantics.rb:385:10:385:13 | ...[...] | -| semantics.rb:385:10:385:10 | h [element] | semantics.rb:385:10:385:13 | ...[...] | -| semantics.rb:385:10:385:10 | h [element] | semantics.rb:385:10:385:13 | ...[...] | -| semantics.rb:386:10:386:10 | h [element 1] | semantics.rb:386:10:386:13 | ...[...] | -| semantics.rb:386:10:386:10 | h [element 1] | semantics.rb:386:10:386:13 | ...[...] | -| semantics.rb:386:10:386:10 | h [element] | semantics.rb:386:10:386:13 | ...[...] | -| semantics.rb:386:10:386:10 | h [element] | semantics.rb:386:10:386:13 | ...[...] | -| semantics.rb:390:5:390:5 | [post] h [element 0] | semantics.rb:391:5:391:5 | h [element 0] | -| semantics.rb:390:5:390:5 | [post] h [element 0] | semantics.rb:391:5:391:5 | h [element 0] | -| semantics.rb:390:12:390:22 | call to source | semantics.rb:390:5:390:5 | [post] h [element 0] | -| semantics.rb:390:12:390:22 | call to source | semantics.rb:390:5:390:5 | [post] h [element 0] | -| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:394:10:394:10 | h [element 0] | -| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:394:10:394:10 | h [element 0] | -| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:396:10:396:10 | h [element 0] | -| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:396:10:396:10 | h [element 0] | -| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:395:10:395:10 | h [element 1] | -| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:395:10:395:10 | h [element 1] | -| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:396:10:396:10 | h [element 1] | -| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:396:10:396:10 | h [element 1] | -| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:398:13:398:13 | h [element 1] | -| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:398:13:398:13 | h [element 1] | -| semantics.rb:391:5:391:5 | h [element 0] | semantics.rb:391:5:391:5 | [post] h [element 0] | -| semantics.rb:391:5:391:5 | h [element 0] | semantics.rb:391:5:391:5 | [post] h [element 0] | -| semantics.rb:391:12:391:22 | call to source | semantics.rb:391:5:391:5 | [post] h [element 1] | -| semantics.rb:391:12:391:22 | call to source | semantics.rb:391:5:391:5 | [post] h [element 1] | -| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:394:10:394:10 | h [element] | -| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:394:10:394:10 | h [element] | -| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:395:10:395:10 | h [element] | -| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:395:10:395:10 | h [element] | -| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:396:10:396:10 | h [element] | -| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:396:10:396:10 | h [element] | -| semantics.rb:392:12:392:22 | call to source | semantics.rb:392:5:392:5 | [post] h [element] | -| semantics.rb:392:12:392:22 | call to source | semantics.rb:392:5:392:5 | [post] h [element] | -| semantics.rb:394:10:394:10 | h [element 0] | semantics.rb:394:10:394:13 | ...[...] | -| semantics.rb:394:10:394:10 | h [element 0] | semantics.rb:394:10:394:13 | ...[...] | -| semantics.rb:394:10:394:10 | h [element] | semantics.rb:394:10:394:13 | ...[...] | -| semantics.rb:394:10:394:10 | h [element] | semantics.rb:394:10:394:13 | ...[...] | -| semantics.rb:395:10:395:10 | h [element 1] | semantics.rb:395:10:395:13 | ...[...] | -| semantics.rb:395:10:395:10 | h [element 1] | semantics.rb:395:10:395:13 | ...[...] | -| semantics.rb:395:10:395:10 | h [element] | semantics.rb:395:10:395:13 | ...[...] | -| semantics.rb:395:10:395:10 | h [element] | semantics.rb:395:10:395:13 | ...[...] | -| semantics.rb:396:10:396:10 | h [element 0] | semantics.rb:396:10:396:13 | ...[...] | -| semantics.rb:396:10:396:10 | h [element 0] | semantics.rb:396:10:396:13 | ...[...] | -| semantics.rb:396:10:396:10 | h [element 1] | semantics.rb:396:10:396:13 | ...[...] | -| semantics.rb:396:10:396:10 | h [element 1] | semantics.rb:396:10:396:13 | ...[...] | -| semantics.rb:396:10:396:10 | h [element] | semantics.rb:396:10:396:13 | ...[...] | -| semantics.rb:396:10:396:10 | h [element] | semantics.rb:396:10:396:13 | ...[...] | -| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:401:10:401:10 | x [element 1] | -| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:401:10:401:10 | x [element 1] | -| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:402:10:402:10 | x [element 1] | -| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:402:10:402:10 | x [element 1] | -| semantics.rb:398:9:398:14 | call to s46 [element 1] | semantics.rb:398:5:398:5 | x [element 1] | -| semantics.rb:398:9:398:14 | call to s46 [element 1] | semantics.rb:398:5:398:5 | x [element 1] | -| semantics.rb:398:13:398:13 | h [element 1] | semantics.rb:398:9:398:14 | call to s46 [element 1] | -| semantics.rb:398:13:398:13 | h [element 1] | semantics.rb:398:9:398:14 | call to s46 [element 1] | -| semantics.rb:401:10:401:10 | x [element 1] | semantics.rb:401:10:401:13 | ...[...] | -| semantics.rb:401:10:401:10 | x [element 1] | semantics.rb:401:10:401:13 | ...[...] | -| semantics.rb:402:10:402:10 | x [element 1] | semantics.rb:402:10:402:13 | ...[...] | -| semantics.rb:402:10:402:10 | x [element 1] | semantics.rb:402:10:402:13 | ...[...] | -| semantics.rb:406:5:406:5 | [post] h [element :foo] | semantics.rb:407:5:407:5 | h [element :foo] | -| semantics.rb:406:5:406:5 | [post] h [element :foo] | semantics.rb:407:5:407:5 | h [element :foo] | -| semantics.rb:406:15:406:25 | call to source | semantics.rb:406:5:406:5 | [post] h [element :foo] | -| semantics.rb:406:15:406:25 | call to source | semantics.rb:406:5:406:5 | [post] h [element :foo] | -| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:411:10:411:10 | h [element :bar] | -| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:411:10:411:10 | h [element :bar] | -| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:413:13:413:13 | h [element :bar] | -| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:413:13:413:13 | h [element :bar] | -| semantics.rb:407:5:407:5 | [post] h [element :foo] | semantics.rb:410:10:410:10 | h [element :foo] | -| semantics.rb:407:5:407:5 | [post] h [element :foo] | semantics.rb:410:10:410:10 | h [element :foo] | -| semantics.rb:407:5:407:5 | h [element :foo] | semantics.rb:407:5:407:5 | [post] h [element :foo] | -| semantics.rb:407:5:407:5 | h [element :foo] | semantics.rb:407:5:407:5 | [post] h [element :foo] | -| semantics.rb:407:15:407:25 | call to source | semantics.rb:407:5:407:5 | [post] h [element :bar] | -| semantics.rb:407:15:407:25 | call to source | semantics.rb:407:5:407:5 | [post] h [element :bar] | -| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:410:10:410:10 | h [element] | -| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:410:10:410:10 | h [element] | -| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:411:10:411:10 | h [element] | -| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:411:10:411:10 | h [element] | -| semantics.rb:408:12:408:22 | call to source | semantics.rb:408:5:408:5 | [post] h [element] | -| semantics.rb:408:12:408:22 | call to source | semantics.rb:408:5:408:5 | [post] h [element] | -| semantics.rb:410:10:410:10 | h [element :foo] | semantics.rb:410:10:410:16 | ...[...] | -| semantics.rb:410:10:410:10 | h [element :foo] | semantics.rb:410:10:410:16 | ...[...] | -| semantics.rb:410:10:410:10 | h [element] | semantics.rb:410:10:410:16 | ...[...] | -| semantics.rb:410:10:410:10 | h [element] | semantics.rb:410:10:410:16 | ...[...] | -| semantics.rb:411:10:411:10 | h [element :bar] | semantics.rb:411:10:411:16 | ...[...] | -| semantics.rb:411:10:411:10 | h [element :bar] | semantics.rb:411:10:411:16 | ...[...] | -| semantics.rb:411:10:411:10 | h [element] | semantics.rb:411:10:411:16 | ...[...] | -| semantics.rb:411:10:411:10 | h [element] | semantics.rb:411:10:411:16 | ...[...] | -| semantics.rb:413:5:413:5 | x [element :bar] | semantics.rb:416:10:416:10 | x [element :bar] | -| semantics.rb:413:5:413:5 | x [element :bar] | semantics.rb:416:10:416:10 | x [element :bar] | -| semantics.rb:413:9:413:14 | call to s47 [element :bar] | semantics.rb:413:5:413:5 | x [element :bar] | -| semantics.rb:413:9:413:14 | call to s47 [element :bar] | semantics.rb:413:5:413:5 | x [element :bar] | -| semantics.rb:413:13:413:13 | h [element :bar] | semantics.rb:413:9:413:14 | call to s47 [element :bar] | -| semantics.rb:413:13:413:13 | h [element :bar] | semantics.rb:413:9:413:14 | call to s47 [element :bar] | -| semantics.rb:416:10:416:10 | x [element :bar] | semantics.rb:416:10:416:16 | ...[...] | -| semantics.rb:416:10:416:10 | x [element :bar] | semantics.rb:416:10:416:16 | ...[...] | -| semantics.rb:420:5:420:5 | [post] h [element :foo] | semantics.rb:421:5:421:5 | h [element :foo] | -| semantics.rb:420:5:420:5 | [post] h [element :foo] | semantics.rb:421:5:421:5 | h [element :foo] | -| semantics.rb:420:15:420:25 | call to source | semantics.rb:420:5:420:5 | [post] h [element :foo] | -| semantics.rb:420:15:420:25 | call to source | semantics.rb:420:5:420:5 | [post] h [element :foo] | -| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:425:10:425:10 | h [element :bar] | -| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:425:10:425:10 | h [element :bar] | -| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:427:13:427:13 | h [element :bar] | -| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:427:13:427:13 | h [element :bar] | -| semantics.rb:421:5:421:5 | [post] h [element :foo] | semantics.rb:424:10:424:10 | h [element :foo] | -| semantics.rb:421:5:421:5 | [post] h [element :foo] | semantics.rb:424:10:424:10 | h [element :foo] | -| semantics.rb:421:5:421:5 | h [element :foo] | semantics.rb:421:5:421:5 | [post] h [element :foo] | -| semantics.rb:421:5:421:5 | h [element :foo] | semantics.rb:421:5:421:5 | [post] h [element :foo] | -| semantics.rb:421:15:421:25 | call to source | semantics.rb:421:5:421:5 | [post] h [element :bar] | -| semantics.rb:421:15:421:25 | call to source | semantics.rb:421:5:421:5 | [post] h [element :bar] | -| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:424:10:424:10 | h [element] | -| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:424:10:424:10 | h [element] | -| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:425:10:425:10 | h [element] | -| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:425:10:425:10 | h [element] | -| semantics.rb:422:12:422:22 | call to source | semantics.rb:422:5:422:5 | [post] h [element] | -| semantics.rb:422:12:422:22 | call to source | semantics.rb:422:5:422:5 | [post] h [element] | -| semantics.rb:424:10:424:10 | h [element :foo] | semantics.rb:424:10:424:16 | ...[...] | -| semantics.rb:424:10:424:10 | h [element :foo] | semantics.rb:424:10:424:16 | ...[...] | -| semantics.rb:424:10:424:10 | h [element] | semantics.rb:424:10:424:16 | ...[...] | -| semantics.rb:424:10:424:10 | h [element] | semantics.rb:424:10:424:16 | ...[...] | -| semantics.rb:425:10:425:10 | h [element :bar] | semantics.rb:425:10:425:16 | ...[...] | -| semantics.rb:425:10:425:10 | h [element :bar] | semantics.rb:425:10:425:16 | ...[...] | -| semantics.rb:425:10:425:10 | h [element] | semantics.rb:425:10:425:16 | ...[...] | -| semantics.rb:425:10:425:10 | h [element] | semantics.rb:425:10:425:16 | ...[...] | -| semantics.rb:427:5:427:5 | x [element :bar] | semantics.rb:430:10:430:10 | x [element :bar] | -| semantics.rb:427:5:427:5 | x [element :bar] | semantics.rb:430:10:430:10 | x [element :bar] | -| semantics.rb:427:9:427:14 | call to s48 [element :bar] | semantics.rb:427:5:427:5 | x [element :bar] | -| semantics.rb:427:9:427:14 | call to s48 [element :bar] | semantics.rb:427:5:427:5 | x [element :bar] | -| semantics.rb:427:13:427:13 | h [element :bar] | semantics.rb:427:9:427:14 | call to s48 [element :bar] | -| semantics.rb:427:13:427:13 | h [element :bar] | semantics.rb:427:9:427:14 | call to s48 [element :bar] | -| semantics.rb:430:10:430:10 | x [element :bar] | semantics.rb:430:10:430:16 | ...[...] | -| semantics.rb:430:10:430:10 | x [element :bar] | semantics.rb:430:10:430:16 | ...[...] | -| semantics.rb:434:5:434:5 | [post] h [element :foo] | semantics.rb:435:5:435:5 | h [element :foo] | -| semantics.rb:434:5:434:5 | [post] h [element :foo] | semantics.rb:435:5:435:5 | h [element :foo] | -| semantics.rb:434:15:434:25 | call to source | semantics.rb:434:5:434:5 | [post] h [element :foo] | -| semantics.rb:434:15:434:25 | call to source | semantics.rb:434:5:434:5 | [post] h [element :foo] | -| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:439:10:439:10 | h [element :bar] | -| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:439:10:439:10 | h [element :bar] | -| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:441:13:441:13 | h [element :bar] | -| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:441:13:441:13 | h [element :bar] | -| semantics.rb:435:5:435:5 | [post] h [element :foo] | semantics.rb:438:10:438:10 | h [element :foo] | -| semantics.rb:435:5:435:5 | [post] h [element :foo] | semantics.rb:438:10:438:10 | h [element :foo] | -| semantics.rb:435:5:435:5 | h [element :foo] | semantics.rb:435:5:435:5 | [post] h [element :foo] | -| semantics.rb:435:5:435:5 | h [element :foo] | semantics.rb:435:5:435:5 | [post] h [element :foo] | -| semantics.rb:435:15:435:25 | call to source | semantics.rb:435:5:435:5 | [post] h [element :bar] | -| semantics.rb:435:15:435:25 | call to source | semantics.rb:435:5:435:5 | [post] h [element :bar] | -| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:438:10:438:10 | h [element] | -| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:438:10:438:10 | h [element] | -| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:439:10:439:10 | h [element] | -| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:439:10:439:10 | h [element] | -| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:441:13:441:13 | h [element] | -| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:441:13:441:13 | h [element] | -| semantics.rb:436:12:436:22 | call to source | semantics.rb:436:5:436:5 | [post] h [element] | -| semantics.rb:436:12:436:22 | call to source | semantics.rb:436:5:436:5 | [post] h [element] | -| semantics.rb:438:10:438:10 | h [element :foo] | semantics.rb:438:10:438:16 | ...[...] | -| semantics.rb:438:10:438:10 | h [element :foo] | semantics.rb:438:10:438:16 | ...[...] | -| semantics.rb:438:10:438:10 | h [element] | semantics.rb:438:10:438:16 | ...[...] | -| semantics.rb:438:10:438:10 | h [element] | semantics.rb:438:10:438:16 | ...[...] | -| semantics.rb:439:10:439:10 | h [element :bar] | semantics.rb:439:10:439:16 | ...[...] | -| semantics.rb:439:10:439:10 | h [element :bar] | semantics.rb:439:10:439:16 | ...[...] | -| semantics.rb:439:10:439:10 | h [element] | semantics.rb:439:10:439:16 | ...[...] | -| semantics.rb:439:10:439:10 | h [element] | semantics.rb:439:10:439:16 | ...[...] | -| semantics.rb:441:5:441:5 | x [element :bar] | semantics.rb:444:10:444:10 | x [element :bar] | -| semantics.rb:441:5:441:5 | x [element :bar] | semantics.rb:444:10:444:10 | x [element :bar] | -| semantics.rb:441:5:441:5 | x [element] | semantics.rb:443:10:443:10 | x [element] | -| semantics.rb:441:5:441:5 | x [element] | semantics.rb:443:10:443:10 | x [element] | -| semantics.rb:441:5:441:5 | x [element] | semantics.rb:444:10:444:10 | x [element] | -| semantics.rb:441:5:441:5 | x [element] | semantics.rb:444:10:444:10 | x [element] | -| semantics.rb:441:9:441:14 | call to s49 [element :bar] | semantics.rb:441:5:441:5 | x [element :bar] | -| semantics.rb:441:9:441:14 | call to s49 [element :bar] | semantics.rb:441:5:441:5 | x [element :bar] | -| semantics.rb:441:9:441:14 | call to s49 [element] | semantics.rb:441:5:441:5 | x [element] | -| semantics.rb:441:9:441:14 | call to s49 [element] | semantics.rb:441:5:441:5 | x [element] | -| semantics.rb:441:13:441:13 | h [element :bar] | semantics.rb:441:9:441:14 | call to s49 [element :bar] | -| semantics.rb:441:13:441:13 | h [element :bar] | semantics.rb:441:9:441:14 | call to s49 [element :bar] | -| semantics.rb:441:13:441:13 | h [element] | semantics.rb:441:9:441:14 | call to s49 [element] | -| semantics.rb:441:13:441:13 | h [element] | semantics.rb:441:9:441:14 | call to s49 [element] | -| semantics.rb:443:10:443:10 | x [element] | semantics.rb:443:10:443:16 | ...[...] | -| semantics.rb:443:10:443:10 | x [element] | semantics.rb:443:10:443:16 | ...[...] | -| semantics.rb:444:10:444:10 | x [element :bar] | semantics.rb:444:10:444:16 | ...[...] | -| semantics.rb:444:10:444:10 | x [element :bar] | semantics.rb:444:10:444:16 | ...[...] | -| semantics.rb:444:10:444:10 | x [element] | semantics.rb:444:10:444:16 | ...[...] | -| semantics.rb:444:10:444:10 | x [element] | semantics.rb:444:10:444:16 | ...[...] | -| semantics.rb:448:5:448:5 | [post] h [element :foo] | semantics.rb:449:5:449:5 | h [element :foo] | -| semantics.rb:448:5:448:5 | [post] h [element :foo] | semantics.rb:449:5:449:5 | h [element :foo] | -| semantics.rb:448:15:448:25 | call to source | semantics.rb:448:5:448:5 | [post] h [element :foo] | -| semantics.rb:448:15:448:25 | call to source | semantics.rb:448:5:448:5 | [post] h [element :foo] | -| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:453:10:453:10 | h [element :bar] | -| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:453:10:453:10 | h [element :bar] | -| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:455:9:455:9 | h [element :bar] | -| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:455:9:455:9 | h [element :bar] | -| semantics.rb:449:5:449:5 | [post] h [element :foo] | semantics.rb:452:10:452:10 | h [element :foo] | -| semantics.rb:449:5:449:5 | [post] h [element :foo] | semantics.rb:452:10:452:10 | h [element :foo] | -| semantics.rb:449:5:449:5 | h [element :foo] | semantics.rb:449:5:449:5 | [post] h [element :foo] | -| semantics.rb:449:5:449:5 | h [element :foo] | semantics.rb:449:5:449:5 | [post] h [element :foo] | -| semantics.rb:449:15:449:25 | call to source | semantics.rb:449:5:449:5 | [post] h [element :bar] | -| semantics.rb:449:15:449:25 | call to source | semantics.rb:449:5:449:5 | [post] h [element :bar] | -| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:452:10:452:10 | h [element] | -| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:452:10:452:10 | h [element] | -| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:453:10:453:10 | h [element] | -| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:453:10:453:10 | h [element] | -| semantics.rb:450:12:450:22 | call to source | semantics.rb:450:5:450:5 | [post] h [element] | -| semantics.rb:450:12:450:22 | call to source | semantics.rb:450:5:450:5 | [post] h [element] | -| semantics.rb:452:10:452:10 | h [element :foo] | semantics.rb:452:10:452:16 | ...[...] | -| semantics.rb:452:10:452:10 | h [element :foo] | semantics.rb:452:10:452:16 | ...[...] | -| semantics.rb:452:10:452:10 | h [element] | semantics.rb:452:10:452:16 | ...[...] | -| semantics.rb:452:10:452:10 | h [element] | semantics.rb:452:10:452:16 | ...[...] | -| semantics.rb:453:10:453:10 | h [element :bar] | semantics.rb:453:10:453:16 | ...[...] | -| semantics.rb:453:10:453:10 | h [element :bar] | semantics.rb:453:10:453:16 | ...[...] | -| semantics.rb:453:10:453:10 | h [element] | semantics.rb:453:10:453:16 | ...[...] | -| semantics.rb:453:10:453:10 | h [element] | semantics.rb:453:10:453:16 | ...[...] | -| semantics.rb:455:9:455:9 | [post] h [element :bar] | semantics.rb:458:10:458:10 | h [element :bar] | -| semantics.rb:455:9:455:9 | [post] h [element :bar] | semantics.rb:458:10:458:10 | h [element :bar] | -| semantics.rb:455:9:455:9 | h [element :bar] | semantics.rb:455:9:455:9 | [post] h [element :bar] | -| semantics.rb:455:9:455:9 | h [element :bar] | semantics.rb:455:9:455:9 | [post] h [element :bar] | -| semantics.rb:458:10:458:10 | h [element :bar] | semantics.rb:458:10:458:16 | ...[...] | -| semantics.rb:458:10:458:10 | h [element :bar] | semantics.rb:458:10:458:16 | ...[...] | -| semantics.rb:462:5:462:5 | [post] h [element :foo] | semantics.rb:463:5:463:5 | h [element :foo] | -| semantics.rb:462:5:462:5 | [post] h [element :foo] | semantics.rb:463:5:463:5 | h [element :foo] | -| semantics.rb:462:15:462:25 | call to source | semantics.rb:462:5:462:5 | [post] h [element :foo] | -| semantics.rb:462:15:462:25 | call to source | semantics.rb:462:5:462:5 | [post] h [element :foo] | -| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:467:10:467:10 | h [element :bar] | -| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:467:10:467:10 | h [element :bar] | -| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:469:9:469:9 | h [element :bar] | -| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:469:9:469:9 | h [element :bar] | -| semantics.rb:463:5:463:5 | [post] h [element :foo] | semantics.rb:466:10:466:10 | h [element :foo] | -| semantics.rb:463:5:463:5 | [post] h [element :foo] | semantics.rb:466:10:466:10 | h [element :foo] | -| semantics.rb:463:5:463:5 | h [element :foo] | semantics.rb:463:5:463:5 | [post] h [element :foo] | -| semantics.rb:463:5:463:5 | h [element :foo] | semantics.rb:463:5:463:5 | [post] h [element :foo] | -| semantics.rb:463:15:463:25 | call to source | semantics.rb:463:5:463:5 | [post] h [element :bar] | -| semantics.rb:463:15:463:25 | call to source | semantics.rb:463:5:463:5 | [post] h [element :bar] | -| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:466:10:466:10 | h [element] | -| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:466:10:466:10 | h [element] | -| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:467:10:467:10 | h [element] | -| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:467:10:467:10 | h [element] | -| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:469:9:469:9 | h [element] | -| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:469:9:469:9 | h [element] | -| semantics.rb:464:12:464:22 | call to source | semantics.rb:464:5:464:5 | [post] h [element] | -| semantics.rb:464:12:464:22 | call to source | semantics.rb:464:5:464:5 | [post] h [element] | -| semantics.rb:466:10:466:10 | h [element :foo] | semantics.rb:466:10:466:16 | ...[...] | -| semantics.rb:466:10:466:10 | h [element :foo] | semantics.rb:466:10:466:16 | ...[...] | -| semantics.rb:466:10:466:10 | h [element] | semantics.rb:466:10:466:16 | ...[...] | -| semantics.rb:466:10:466:10 | h [element] | semantics.rb:466:10:466:16 | ...[...] | -| semantics.rb:467:10:467:10 | h [element :bar] | semantics.rb:467:10:467:16 | ...[...] | -| semantics.rb:467:10:467:10 | h [element :bar] | semantics.rb:467:10:467:16 | ...[...] | -| semantics.rb:467:10:467:10 | h [element] | semantics.rb:467:10:467:16 | ...[...] | -| semantics.rb:467:10:467:10 | h [element] | semantics.rb:467:10:467:16 | ...[...] | -| semantics.rb:469:9:469:9 | [post] h [element :bar] | semantics.rb:472:10:472:10 | h [element :bar] | -| semantics.rb:469:9:469:9 | [post] h [element :bar] | semantics.rb:472:10:472:10 | h [element :bar] | -| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:471:10:471:10 | h [element] | -| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:471:10:471:10 | h [element] | -| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:472:10:472:10 | h [element] | -| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:472:10:472:10 | h [element] | -| semantics.rb:469:9:469:9 | h [element :bar] | semantics.rb:469:9:469:9 | [post] h [element :bar] | -| semantics.rb:469:9:469:9 | h [element :bar] | semantics.rb:469:9:469:9 | [post] h [element :bar] | -| semantics.rb:469:9:469:9 | h [element] | semantics.rb:469:9:469:9 | [post] h [element] | -| semantics.rb:469:9:469:9 | h [element] | semantics.rb:469:9:469:9 | [post] h [element] | -| semantics.rb:471:10:471:10 | h [element] | semantics.rb:471:10:471:16 | ...[...] | -| semantics.rb:471:10:471:10 | h [element] | semantics.rb:471:10:471:16 | ...[...] | -| semantics.rb:472:10:472:10 | h [element :bar] | semantics.rb:472:10:472:16 | ...[...] | -| semantics.rb:472:10:472:10 | h [element :bar] | semantics.rb:472:10:472:16 | ...[...] | -| semantics.rb:472:10:472:10 | h [element] | semantics.rb:472:10:472:16 | ...[...] | -| semantics.rb:472:10:472:10 | h [element] | semantics.rb:472:10:472:16 | ...[...] | -| semantics.rb:476:5:476:5 | [post] h [element :foo] | semantics.rb:477:5:477:5 | h [element :foo] | -| semantics.rb:476:5:476:5 | [post] h [element :foo] | semantics.rb:477:5:477:5 | h [element :foo] | -| semantics.rb:476:15:476:25 | call to source | semantics.rb:476:5:476:5 | [post] h [element :foo] | -| semantics.rb:476:15:476:25 | call to source | semantics.rb:476:5:476:5 | [post] h [element :foo] | -| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:481:10:481:10 | h [element :bar] | -| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:481:10:481:10 | h [element :bar] | -| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:483:5:483:5 | h [element :bar] | -| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:483:5:483:5 | h [element :bar] | -| semantics.rb:477:5:477:5 | [post] h [element :foo] | semantics.rb:480:10:480:10 | h [element :foo] | -| semantics.rb:477:5:477:5 | [post] h [element :foo] | semantics.rb:480:10:480:10 | h [element :foo] | -| semantics.rb:477:5:477:5 | h [element :foo] | semantics.rb:477:5:477:5 | [post] h [element :foo] | -| semantics.rb:477:5:477:5 | h [element :foo] | semantics.rb:477:5:477:5 | [post] h [element :foo] | -| semantics.rb:477:15:477:25 | call to source | semantics.rb:477:5:477:5 | [post] h [element :bar] | -| semantics.rb:477:15:477:25 | call to source | semantics.rb:477:5:477:5 | [post] h [element :bar] | -| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:480:10:480:10 | h [element] | -| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:480:10:480:10 | h [element] | -| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:481:10:481:10 | h [element] | -| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:481:10:481:10 | h [element] | -| semantics.rb:478:12:478:22 | call to source | semantics.rb:478:5:478:5 | [post] h [element] | -| semantics.rb:478:12:478:22 | call to source | semantics.rb:478:5:478:5 | [post] h [element] | -| semantics.rb:480:10:480:10 | h [element :foo] | semantics.rb:480:10:480:16 | ...[...] | -| semantics.rb:480:10:480:10 | h [element :foo] | semantics.rb:480:10:480:16 | ...[...] | -| semantics.rb:480:10:480:10 | h [element] | semantics.rb:480:10:480:16 | ...[...] | -| semantics.rb:480:10:480:10 | h [element] | semantics.rb:480:10:480:16 | ...[...] | -| semantics.rb:481:10:481:10 | h [element :bar] | semantics.rb:481:10:481:16 | ...[...] | -| semantics.rb:481:10:481:10 | h [element :bar] | semantics.rb:481:10:481:16 | ...[...] | -| semantics.rb:481:10:481:10 | h [element] | semantics.rb:481:10:481:16 | ...[...] | -| semantics.rb:481:10:481:10 | h [element] | semantics.rb:481:10:481:16 | ...[...] | -| semantics.rb:483:5:483:5 | [post] h [element :bar] | semantics.rb:486:10:486:10 | h [element :bar] | -| semantics.rb:483:5:483:5 | [post] h [element :bar] | semantics.rb:486:10:486:10 | h [element :bar] | -| semantics.rb:483:5:483:5 | h [element :bar] | semantics.rb:483:5:483:5 | [post] h [element :bar] | -| semantics.rb:483:5:483:5 | h [element :bar] | semantics.rb:483:5:483:5 | [post] h [element :bar] | -| semantics.rb:486:10:486:10 | h [element :bar] | semantics.rb:486:10:486:16 | ...[...] | -| semantics.rb:486:10:486:10 | h [element :bar] | semantics.rb:486:10:486:16 | ...[...] | -| semantics.rb:490:5:490:5 | [post] h [element :foo] | semantics.rb:491:5:491:5 | h [element :foo] | -| semantics.rb:490:5:490:5 | [post] h [element :foo] | semantics.rb:491:5:491:5 | h [element :foo] | -| semantics.rb:490:15:490:25 | call to source | semantics.rb:490:5:490:5 | [post] h [element :foo] | -| semantics.rb:490:15:490:25 | call to source | semantics.rb:490:5:490:5 | [post] h [element :foo] | -| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:495:10:495:10 | h [element :bar] | -| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:495:10:495:10 | h [element :bar] | -| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:497:9:497:9 | h [element :bar] | -| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:497:9:497:9 | h [element :bar] | -| semantics.rb:491:5:491:5 | [post] h [element :foo] | semantics.rb:494:10:494:10 | h [element :foo] | -| semantics.rb:491:5:491:5 | [post] h [element :foo] | semantics.rb:494:10:494:10 | h [element :foo] | -| semantics.rb:491:5:491:5 | h [element :foo] | semantics.rb:491:5:491:5 | [post] h [element :foo] | -| semantics.rb:491:5:491:5 | h [element :foo] | semantics.rb:491:5:491:5 | [post] h [element :foo] | -| semantics.rb:491:15:491:25 | call to source | semantics.rb:491:5:491:5 | [post] h [element :bar] | -| semantics.rb:491:15:491:25 | call to source | semantics.rb:491:5:491:5 | [post] h [element :bar] | -| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:494:10:494:10 | h [element] | -| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:494:10:494:10 | h [element] | -| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:495:10:495:10 | h [element] | -| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:495:10:495:10 | h [element] | -| semantics.rb:492:12:492:22 | call to source | semantics.rb:492:5:492:5 | [post] h [element] | -| semantics.rb:492:12:492:22 | call to source | semantics.rb:492:5:492:5 | [post] h [element] | -| semantics.rb:494:10:494:10 | h [element :foo] | semantics.rb:494:10:494:16 | ...[...] | -| semantics.rb:494:10:494:10 | h [element :foo] | semantics.rb:494:10:494:16 | ...[...] | -| semantics.rb:494:10:494:10 | h [element] | semantics.rb:494:10:494:16 | ...[...] | -| semantics.rb:494:10:494:10 | h [element] | semantics.rb:494:10:494:16 | ...[...] | -| semantics.rb:495:10:495:10 | h [element :bar] | semantics.rb:495:10:495:16 | ...[...] | -| semantics.rb:495:10:495:10 | h [element :bar] | semantics.rb:495:10:495:16 | ...[...] | -| semantics.rb:495:10:495:10 | h [element] | semantics.rb:495:10:495:16 | ...[...] | -| semantics.rb:495:10:495:10 | h [element] | semantics.rb:495:10:495:16 | ...[...] | -| semantics.rb:497:5:497:5 | x [element :bar] | semantics.rb:500:10:500:10 | x [element :bar] | -| semantics.rb:497:5:497:5 | x [element :bar] | semantics.rb:500:10:500:10 | x [element :bar] | -| semantics.rb:497:9:497:9 | h [element :bar] | semantics.rb:497:9:497:15 | call to s53 [element :bar] | -| semantics.rb:497:9:497:9 | h [element :bar] | semantics.rb:497:9:497:15 | call to s53 [element :bar] | -| semantics.rb:497:9:497:15 | call to s53 [element :bar] | semantics.rb:497:5:497:5 | x [element :bar] | -| semantics.rb:497:9:497:15 | call to s53 [element :bar] | semantics.rb:497:5:497:5 | x [element :bar] | -| semantics.rb:500:10:500:10 | x [element :bar] | semantics.rb:500:10:500:16 | ...[...] | -| semantics.rb:500:10:500:10 | x [element :bar] | semantics.rb:500:10:500:16 | ...[...] | -| semantics.rb:502:10:502:20 | call to source | semantics.rb:502:10:502:26 | call to s53 | -| semantics.rb:502:10:502:20 | call to source | semantics.rb:502:10:502:26 | call to s53 | -| semantics.rb:506:5:506:5 | [post] h [element :foo] | semantics.rb:507:5:507:5 | h [element :foo] | -| semantics.rb:506:5:506:5 | [post] h [element :foo] | semantics.rb:507:5:507:5 | h [element :foo] | -| semantics.rb:506:15:506:25 | call to source | semantics.rb:506:5:506:5 | [post] h [element :foo] | -| semantics.rb:506:15:506:25 | call to source | semantics.rb:506:5:506:5 | [post] h [element :foo] | -| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:511:10:511:10 | h [element :bar] | -| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:511:10:511:10 | h [element :bar] | -| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:513:9:513:9 | h [element :bar] | -| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:513:9:513:9 | h [element :bar] | -| semantics.rb:507:5:507:5 | [post] h [element :foo] | semantics.rb:510:10:510:10 | h [element :foo] | -| semantics.rb:507:5:507:5 | [post] h [element :foo] | semantics.rb:510:10:510:10 | h [element :foo] | -| semantics.rb:507:5:507:5 | h [element :foo] | semantics.rb:507:5:507:5 | [post] h [element :foo] | -| semantics.rb:507:5:507:5 | h [element :foo] | semantics.rb:507:5:507:5 | [post] h [element :foo] | -| semantics.rb:507:15:507:25 | call to source | semantics.rb:507:5:507:5 | [post] h [element :bar] | -| semantics.rb:507:15:507:25 | call to source | semantics.rb:507:5:507:5 | [post] h [element :bar] | -| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:510:10:510:10 | h [element] | -| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:510:10:510:10 | h [element] | -| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:511:10:511:10 | h [element] | -| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:511:10:511:10 | h [element] | -| semantics.rb:508:12:508:22 | call to source | semantics.rb:508:5:508:5 | [post] h [element] | -| semantics.rb:508:12:508:22 | call to source | semantics.rb:508:5:508:5 | [post] h [element] | -| semantics.rb:510:10:510:10 | h [element :foo] | semantics.rb:510:10:510:16 | ...[...] | -| semantics.rb:510:10:510:10 | h [element :foo] | semantics.rb:510:10:510:16 | ...[...] | -| semantics.rb:510:10:510:10 | h [element] | semantics.rb:510:10:510:16 | ...[...] | -| semantics.rb:510:10:510:10 | h [element] | semantics.rb:510:10:510:16 | ...[...] | -| semantics.rb:511:10:511:10 | h [element :bar] | semantics.rb:511:10:511:16 | ...[...] | -| semantics.rb:511:10:511:10 | h [element :bar] | semantics.rb:511:10:511:16 | ...[...] | -| semantics.rb:511:10:511:10 | h [element] | semantics.rb:511:10:511:16 | ...[...] | -| semantics.rb:511:10:511:10 | h [element] | semantics.rb:511:10:511:16 | ...[...] | -| semantics.rb:513:5:513:5 | x [element :bar] | semantics.rb:516:10:516:10 | x [element :bar] | -| semantics.rb:513:5:513:5 | x [element :bar] | semantics.rb:516:10:516:10 | x [element :bar] | -| semantics.rb:513:9:513:9 | h [element :bar] | semantics.rb:513:9:513:15 | call to s54 [element :bar] | -| semantics.rb:513:9:513:9 | h [element :bar] | semantics.rb:513:9:513:15 | call to s54 [element :bar] | -| semantics.rb:513:9:513:15 | call to s54 [element :bar] | semantics.rb:513:5:513:5 | x [element :bar] | -| semantics.rb:513:9:513:15 | call to s54 [element :bar] | semantics.rb:513:5:513:5 | x [element :bar] | -| semantics.rb:516:10:516:10 | x [element :bar] | semantics.rb:516:10:516:16 | ...[...] | -| semantics.rb:516:10:516:10 | x [element :bar] | semantics.rb:516:10:516:16 | ...[...] | +| semantics.rb:2:5:2:5 | a | semantics.rb:3:9:3:9 | a | provenance | | +| semantics.rb:2:5:2:5 | a | semantics.rb:3:9:3:9 | a | provenance | | +| semantics.rb:2:9:2:18 | call to source | semantics.rb:2:5:2:5 | a | provenance | | +| semantics.rb:2:9:2:18 | call to source | semantics.rb:2:5:2:5 | a | provenance | | +| semantics.rb:3:5:3:5 | x | semantics.rb:4:10:4:10 | x | provenance | | +| semantics.rb:3:5:3:5 | x | semantics.rb:4:10:4:10 | x | provenance | | +| semantics.rb:3:9:3:9 | a | semantics.rb:3:9:3:14 | call to s1 | provenance | | +| semantics.rb:3:9:3:9 | a | semantics.rb:3:9:3:14 | call to s1 | provenance | | +| semantics.rb:3:9:3:14 | call to s1 | semantics.rb:3:5:3:5 | x | provenance | | +| semantics.rb:3:9:3:14 | call to s1 | semantics.rb:3:5:3:5 | x | provenance | | +| semantics.rb:8:5:8:5 | a | semantics.rb:9:10:9:10 | a | provenance | | +| semantics.rb:8:5:8:5 | a | semantics.rb:9:10:9:10 | a | provenance | | +| semantics.rb:8:9:8:18 | call to source | semantics.rb:8:5:8:5 | a | provenance | | +| semantics.rb:8:9:8:18 | call to source | semantics.rb:8:5:8:5 | a | provenance | | +| semantics.rb:9:5:9:5 | [post] x | semantics.rb:10:10:10:10 | x | provenance | | +| semantics.rb:9:5:9:5 | [post] x | semantics.rb:10:10:10:10 | x | provenance | | +| semantics.rb:9:10:9:10 | a | semantics.rb:9:5:9:5 | [post] x | provenance | | +| semantics.rb:9:10:9:10 | a | semantics.rb:9:5:9:5 | [post] x | provenance | | +| semantics.rb:14:5:14:5 | a | semantics.rb:15:8:15:8 | a | provenance | | +| semantics.rb:14:5:14:5 | a | semantics.rb:15:8:15:8 | a | provenance | | +| semantics.rb:14:9:14:18 | call to source | semantics.rb:14:5:14:5 | a | provenance | | +| semantics.rb:14:9:14:18 | call to source | semantics.rb:14:5:14:5 | a | provenance | | +| semantics.rb:15:8:15:8 | a | semantics.rb:15:11:15:11 | [post] x | provenance | | +| semantics.rb:15:8:15:8 | a | semantics.rb:15:11:15:11 | [post] x | provenance | | +| semantics.rb:15:11:15:11 | [post] x | semantics.rb:16:10:16:10 | x | provenance | | +| semantics.rb:15:11:15:11 | [post] x | semantics.rb:16:10:16:10 | x | provenance | | +| semantics.rb:22:18:22:32 | call to source | semantics.rb:22:10:22:33 | call to s4 | provenance | | +| semantics.rb:22:18:22:32 | call to source | semantics.rb:22:10:22:33 | call to s4 | provenance | | +| semantics.rb:23:23:23:32 | call to source | semantics.rb:23:10:23:33 | call to s4 | provenance | | +| semantics.rb:23:23:23:32 | call to source | semantics.rb:23:10:23:33 | call to s4 | provenance | | +| semantics.rb:28:5:28:5 | a | semantics.rb:29:8:29:8 | a | provenance | | +| semantics.rb:28:5:28:5 | a | semantics.rb:29:8:29:8 | a | provenance | | +| semantics.rb:28:9:28:18 | call to source | semantics.rb:28:5:28:5 | a | provenance | | +| semantics.rb:28:9:28:18 | call to source | semantics.rb:28:5:28:5 | a | provenance | | +| semantics.rb:29:8:29:8 | a | semantics.rb:29:14:29:14 | [post] y | provenance | | +| semantics.rb:29:8:29:8 | a | semantics.rb:29:14:29:14 | [post] y | provenance | | +| semantics.rb:29:8:29:8 | a | semantics.rb:29:17:29:17 | [post] z | provenance | | +| semantics.rb:29:8:29:8 | a | semantics.rb:29:17:29:17 | [post] z | provenance | | +| semantics.rb:29:14:29:14 | [post] y | semantics.rb:31:10:31:10 | y | provenance | | +| semantics.rb:29:14:29:14 | [post] y | semantics.rb:31:10:31:10 | y | provenance | | +| semantics.rb:29:17:29:17 | [post] z | semantics.rb:32:10:32:10 | z | provenance | | +| semantics.rb:29:17:29:17 | [post] z | semantics.rb:32:10:32:10 | z | provenance | | +| semantics.rb:40:5:40:5 | a | semantics.rb:41:8:41:8 | a | provenance | | +| semantics.rb:40:5:40:5 | a | semantics.rb:41:8:41:8 | a | provenance | | +| semantics.rb:40:9:40:18 | call to source | semantics.rb:40:5:40:5 | a | provenance | | +| semantics.rb:40:9:40:18 | call to source | semantics.rb:40:5:40:5 | a | provenance | | +| semantics.rb:41:8:41:8 | a | semantics.rb:41:16:41:16 | [post] x | provenance | | +| semantics.rb:41:8:41:8 | a | semantics.rb:41:16:41:16 | [post] x | provenance | | +| semantics.rb:41:16:41:16 | [post] x | semantics.rb:42:10:42:10 | x | provenance | | +| semantics.rb:41:16:41:16 | [post] x | semantics.rb:42:10:42:10 | x | provenance | | +| semantics.rb:46:15:46:24 | call to source | semantics.rb:46:10:46:26 | call to s8 | provenance | | +| semantics.rb:46:15:46:24 | call to source | semantics.rb:46:10:46:26 | call to s8 | provenance | | +| semantics.rb:48:9:48:18 | call to source | semantics.rb:47:10:49:7 | call to s8 | provenance | | +| semantics.rb:48:9:48:18 | call to source | semantics.rb:47:10:49:7 | call to s8 | provenance | | +| semantics.rb:53:8:53:17 | call to source | semantics.rb:53:23:53:23 | x | provenance | | +| semantics.rb:53:8:53:17 | call to source | semantics.rb:53:23:53:23 | x | provenance | | +| semantics.rb:53:23:53:23 | x | semantics.rb:53:31:53:31 | x | provenance | | +| semantics.rb:53:23:53:23 | x | semantics.rb:53:31:53:31 | x | provenance | | +| semantics.rb:54:8:54:17 | call to source | semantics.rb:54:24:54:24 | x | provenance | | +| semantics.rb:54:8:54:17 | call to source | semantics.rb:54:24:54:24 | x | provenance | | +| semantics.rb:54:24:54:24 | x | semantics.rb:55:14:55:14 | x | provenance | | +| semantics.rb:54:24:54:24 | x | semantics.rb:55:14:55:14 | x | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:61:14:61:14 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:61:14:61:14 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:62:17:62:17 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:62:17:62:17 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:63:19:63:19 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:63:19:63:19 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:64:27:64:27 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:64:27:64:27 | a | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:66:14:66:15 | &... | provenance | | +| semantics.rb:60:5:60:5 | a | semantics.rb:66:14:66:15 | &... | provenance | | +| semantics.rb:60:9:60:18 | call to source | semantics.rb:60:5:60:5 | a | provenance | | +| semantics.rb:60:9:60:18 | call to source | semantics.rb:60:5:60:5 | a | provenance | | +| semantics.rb:61:10:61:15 | call to s10 [splat position 0] | semantics.rb:61:10:61:15 | call to s10 | provenance | | +| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 | provenance | | +| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 | provenance | | +| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 [splat position 0] | provenance | | +| semantics.rb:62:10:62:18 | call to s10 [splat position 1] | semantics.rb:62:10:62:18 | call to s10 | provenance | | +| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 | provenance | | +| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 | provenance | | +| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 [splat position 1] | provenance | | +| semantics.rb:63:19:63:19 | a | semantics.rb:63:10:63:20 | call to s10 | provenance | | +| semantics.rb:63:19:63:19 | a | semantics.rb:63:10:63:20 | call to s10 | provenance | | +| semantics.rb:64:27:64:27 | a | semantics.rb:64:10:64:28 | call to s10 | provenance | | +| semantics.rb:64:27:64:27 | a | semantics.rb:64:10:64:28 | call to s10 | provenance | | +| semantics.rb:66:14:66:15 | &... | semantics.rb:66:10:66:16 | call to s10 | provenance | | +| semantics.rb:66:14:66:15 | &... | semantics.rb:66:10:66:16 | call to s10 | provenance | | +| semantics.rb:80:5:80:5 | a | semantics.rb:81:5:81:5 | a | provenance | | +| semantics.rb:80:5:80:5 | a | semantics.rb:81:5:81:5 | a | provenance | | +| semantics.rb:80:9:80:18 | call to source | semantics.rb:80:5:80:5 | a | provenance | | +| semantics.rb:80:9:80:18 | call to source | semantics.rb:80:5:80:5 | a | provenance | | +| semantics.rb:81:5:81:5 | a | semantics.rb:81:11:81:11 | [post] x | provenance | | +| semantics.rb:81:5:81:5 | a | semantics.rb:81:11:81:11 | [post] x | provenance | | +| semantics.rb:81:5:81:5 | a | semantics.rb:81:14:81:14 | [post] y | provenance | | +| semantics.rb:81:5:81:5 | a | semantics.rb:81:14:81:14 | [post] y | provenance | | +| semantics.rb:81:5:81:5 | a | semantics.rb:81:22:81:22 | [post] z | provenance | | +| semantics.rb:81:5:81:5 | a | semantics.rb:81:22:81:22 | [post] z | provenance | | +| semantics.rb:81:11:81:11 | [post] x | semantics.rb:82:10:82:10 | x | provenance | | +| semantics.rb:81:11:81:11 | [post] x | semantics.rb:82:10:82:10 | x | provenance | | +| semantics.rb:81:14:81:14 | [post] y | semantics.rb:83:10:83:10 | y | provenance | | +| semantics.rb:81:14:81:14 | [post] y | semantics.rb:83:10:83:10 | y | provenance | | +| semantics.rb:81:22:81:22 | [post] z | semantics.rb:84:10:84:10 | z | provenance | | +| semantics.rb:81:22:81:22 | [post] z | semantics.rb:84:10:84:10 | z | provenance | | +| semantics.rb:89:5:89:5 | a | semantics.rb:91:19:91:19 | a | provenance | | +| semantics.rb:89:5:89:5 | a | semantics.rb:91:19:91:19 | a | provenance | | +| semantics.rb:89:5:89:5 | a | semantics.rb:92:27:92:27 | a | provenance | | +| semantics.rb:89:5:89:5 | a | semantics.rb:92:27:92:27 | a | provenance | | +| semantics.rb:89:9:89:18 | call to source | semantics.rb:89:5:89:5 | a | provenance | | +| semantics.rb:89:9:89:18 | call to source | semantics.rb:89:5:89:5 | a | provenance | | +| semantics.rb:91:19:91:19 | a | semantics.rb:91:10:91:20 | call to s13 | provenance | | +| semantics.rb:91:19:91:19 | a | semantics.rb:91:10:91:20 | call to s13 | provenance | | +| semantics.rb:92:27:92:27 | a | semantics.rb:92:10:92:28 | call to s13 | provenance | | +| semantics.rb:92:27:92:27 | a | semantics.rb:92:10:92:28 | call to s13 | provenance | | +| semantics.rb:97:5:97:5 | a | semantics.rb:98:5:98:5 | a | provenance | | +| semantics.rb:97:5:97:5 | a | semantics.rb:98:5:98:5 | a | provenance | | +| semantics.rb:97:5:97:5 | a | semantics.rb:99:5:99:5 | a | provenance | | +| semantics.rb:97:5:97:5 | a | semantics.rb:99:5:99:5 | a | provenance | | +| semantics.rb:97:9:97:18 | call to source | semantics.rb:97:5:97:5 | a | provenance | | +| semantics.rb:97:9:97:18 | call to source | semantics.rb:97:5:97:5 | a | provenance | | +| semantics.rb:98:5:98:5 | a | semantics.rb:98:19:98:19 | [post] x | provenance | | +| semantics.rb:98:5:98:5 | a | semantics.rb:98:19:98:19 | [post] x | provenance | | +| semantics.rb:98:19:98:19 | [post] x | semantics.rb:101:10:101:10 | x | provenance | | +| semantics.rb:98:19:98:19 | [post] x | semantics.rb:101:10:101:10 | x | provenance | | +| semantics.rb:99:5:99:5 | a | semantics.rb:99:16:99:16 | [post] y | provenance | | +| semantics.rb:99:5:99:5 | a | semantics.rb:99:16:99:16 | [post] y | provenance | | +| semantics.rb:99:5:99:5 | a | semantics.rb:99:24:99:24 | [post] z | provenance | | +| semantics.rb:99:5:99:5 | a | semantics.rb:99:24:99:24 | [post] z | provenance | | +| semantics.rb:99:16:99:16 | [post] y | semantics.rb:102:10:102:10 | y | provenance | | +| semantics.rb:99:16:99:16 | [post] y | semantics.rb:102:10:102:10 | y | provenance | | +| semantics.rb:99:24:99:24 | [post] z | semantics.rb:103:10:103:10 | z | provenance | | +| semantics.rb:99:24:99:24 | [post] z | semantics.rb:103:10:103:10 | z | provenance | | +| semantics.rb:107:5:107:5 | a | semantics.rb:109:19:109:19 | a | provenance | | +| semantics.rb:107:5:107:5 | a | semantics.rb:109:19:109:19 | a | provenance | | +| semantics.rb:107:9:107:18 | call to source | semantics.rb:107:5:107:5 | a | provenance | | +| semantics.rb:107:9:107:18 | call to source | semantics.rb:107:5:107:5 | a | provenance | | +| semantics.rb:108:5:108:5 | b | semantics.rb:110:27:110:27 | b | provenance | | +| semantics.rb:108:5:108:5 | b | semantics.rb:110:27:110:27 | b | provenance | | +| semantics.rb:108:9:108:18 | call to source | semantics.rb:108:5:108:5 | b | provenance | | +| semantics.rb:108:9:108:18 | call to source | semantics.rb:108:5:108:5 | b | provenance | | +| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semantics.rb:109:10:109:34 | ...[...] | provenance | | +| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semantics.rb:109:10:109:34 | ...[...] | provenance | | +| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | provenance | | +| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | provenance | | +| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semantics.rb:110:10:110:34 | ...[...] | provenance | | +| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semantics.rb:110:10:110:34 | ...[...] | provenance | | +| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | provenance | | +| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | provenance | | +| semantics.rb:114:5:114:5 | a | semantics.rb:116:14:116:14 | a | provenance | | +| semantics.rb:114:5:114:5 | a | semantics.rb:116:14:116:14 | a | provenance | | +| semantics.rb:114:5:114:5 | a | semantics.rb:119:17:119:17 | a | provenance | | +| semantics.rb:114:5:114:5 | a | semantics.rb:119:17:119:17 | a | provenance | | +| semantics.rb:114:9:114:18 | call to source | semantics.rb:114:5:114:5 | a | provenance | | +| semantics.rb:114:9:114:18 | call to source | semantics.rb:114:5:114:5 | a | provenance | | +| semantics.rb:115:5:115:5 | b | semantics.rb:121:17:121:17 | b | provenance | | +| semantics.rb:115:5:115:5 | b | semantics.rb:121:17:121:17 | b | provenance | | +| semantics.rb:115:9:115:18 | call to source | semantics.rb:115:5:115:5 | b | provenance | | +| semantics.rb:115:9:115:18 | call to source | semantics.rb:115:5:115:5 | b | provenance | | +| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:117:16:117:16 | h [element :a] | provenance | | +| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:117:16:117:16 | h [element :a] | provenance | | +| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:121:22:121:22 | h [element :a] | provenance | | +| semantics.rb:116:5:116:5 | h [element :a] | semantics.rb:121:22:121:22 | h [element :a] | provenance | | +| semantics.rb:116:14:116:14 | a | semantics.rb:116:5:116:5 | h [element :a] | provenance | | +| semantics.rb:116:14:116:14 | a | semantics.rb:116:5:116:5 | h [element :a] | provenance | | +| semantics.rb:117:14:117:16 | ** ... [element :a] | semantics.rb:117:10:117:17 | call to s16 | provenance | | +| semantics.rb:117:14:117:16 | ** ... [element :a] | semantics.rb:117:10:117:17 | call to s16 | provenance | | +| semantics.rb:117:16:117:16 | h [element :a] | semantics.rb:117:14:117:16 | ** ... [element :a] | provenance | | +| semantics.rb:117:16:117:16 | h [element :a] | semantics.rb:117:14:117:16 | ** ... [element :a] | provenance | | +| semantics.rb:119:17:119:17 | a | semantics.rb:119:10:119:18 | call to s16 | provenance | | +| semantics.rb:119:17:119:17 | a | semantics.rb:119:10:119:18 | call to s16 | provenance | | +| semantics.rb:121:17:121:17 | b | semantics.rb:121:10:121:23 | call to s16 | provenance | | +| semantics.rb:121:17:121:17 | b | semantics.rb:121:10:121:23 | call to s16 | provenance | | +| semantics.rb:121:20:121:22 | ** ... [element :a] | semantics.rb:121:10:121:23 | call to s16 | provenance | | +| semantics.rb:121:20:121:22 | ** ... [element :a] | semantics.rb:121:10:121:23 | call to s16 | provenance | | +| semantics.rb:121:22:121:22 | h [element :a] | semantics.rb:121:20:121:22 | ** ... [element :a] | provenance | | +| semantics.rb:121:22:121:22 | h [element :a] | semantics.rb:121:20:121:22 | ** ... [element :a] | provenance | | +| semantics.rb:125:5:125:5 | a | semantics.rb:127:14:127:14 | a | provenance | | +| semantics.rb:125:5:125:5 | a | semantics.rb:128:14:128:14 | a | provenance | | +| semantics.rb:125:5:125:5 | a | semantics.rb:128:14:128:14 | a | provenance | | +| semantics.rb:125:9:125:18 | call to source | semantics.rb:125:5:125:5 | a | provenance | | +| semantics.rb:125:9:125:18 | call to source | semantics.rb:125:5:125:5 | a | provenance | | +| semantics.rb:126:5:126:5 | b | semantics.rb:127:17:127:17 | b | provenance | | +| semantics.rb:126:5:126:5 | b | semantics.rb:129:17:129:17 | b | provenance | | +| semantics.rb:126:5:126:5 | b | semantics.rb:129:17:129:17 | b | provenance | | +| semantics.rb:126:9:126:18 | call to source | semantics.rb:126:5:126:5 | b | provenance | | +| semantics.rb:126:9:126:18 | call to source | semantics.rb:126:5:126:5 | b | provenance | | +| semantics.rb:127:10:127:18 | call to s17 [splat position 0] | semantics.rb:127:10:127:18 | call to s17 | provenance | | +| semantics.rb:127:10:127:18 | call to s17 [splat position 1] | semantics.rb:127:10:127:18 | call to s17 | provenance | | +| semantics.rb:127:14:127:14 | a | semantics.rb:127:10:127:18 | call to s17 [splat position 0] | provenance | | +| semantics.rb:127:17:127:17 | b | semantics.rb:127:10:127:18 | call to s17 [splat position 1] | provenance | | +| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semantics.rb:128:10:128:21 | ...[...] | provenance | | +| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semantics.rb:128:10:128:21 | ...[...] | provenance | | +| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [splat position 0] | provenance | | +| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [splat position 0] | provenance | | +| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semantics.rb:129:10:129:21 | ...[...] | provenance | | +| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semantics.rb:129:10:129:21 | ...[...] | provenance | | +| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [splat position 1] | provenance | | +| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [splat position 1] | provenance | | +| semantics.rb:133:5:133:5 | a | semantics.rb:135:12:135:12 | a | provenance | | +| semantics.rb:133:5:133:5 | a | semantics.rb:135:12:135:12 | a | provenance | | +| semantics.rb:133:5:133:5 | a | semantics.rb:137:14:137:14 | a | provenance | | +| semantics.rb:133:5:133:5 | a | semantics.rb:137:14:137:14 | a | provenance | | +| semantics.rb:133:9:133:18 | call to source | semantics.rb:133:5:133:5 | a | provenance | | +| semantics.rb:133:9:133:18 | call to source | semantics.rb:133:5:133:5 | a | provenance | | +| semantics.rb:134:5:134:5 | b | semantics.rb:135:15:135:15 | b | provenance | | +| semantics.rb:134:5:134:5 | b | semantics.rb:135:15:135:15 | b | provenance | | +| semantics.rb:134:9:134:18 | call to source | semantics.rb:134:5:134:5 | b | provenance | | +| semantics.rb:134:9:134:18 | call to source | semantics.rb:134:5:134:5 | b | provenance | | +| semantics.rb:135:5:135:7 | arr [element 0] | semantics.rb:136:15:136:17 | arr [element 0] | provenance | | +| semantics.rb:135:5:135:7 | arr [element 0] | semantics.rb:136:15:136:17 | arr [element 0] | provenance | | +| semantics.rb:135:5:135:7 | arr [element 1] | semantics.rb:136:15:136:17 | arr [element 1] | provenance | | +| semantics.rb:135:5:135:7 | arr [element 1] | semantics.rb:136:15:136:17 | arr [element 1] | provenance | | +| semantics.rb:135:12:135:12 | a | semantics.rb:135:5:135:7 | arr [element 0] | provenance | | +| semantics.rb:135:12:135:12 | a | semantics.rb:135:5:135:7 | arr [element 0] | provenance | | +| semantics.rb:135:15:135:15 | b | semantics.rb:135:5:135:7 | arr [element 1] | provenance | | +| semantics.rb:135:15:135:15 | b | semantics.rb:135:5:135:7 | arr [element 1] | provenance | | +| semantics.rb:136:14:136:17 | * ... [element 0] | semantics.rb:136:10:136:18 | call to s18 | provenance | | +| semantics.rb:136:14:136:17 | * ... [element 0] | semantics.rb:136:10:136:18 | call to s18 | provenance | | +| semantics.rb:136:14:136:17 | * ... [element 1] | semantics.rb:136:10:136:18 | call to s18 | provenance | | +| semantics.rb:136:14:136:17 | * ... [element 1] | semantics.rb:136:10:136:18 | call to s18 | provenance | | +| semantics.rb:136:15:136:17 | arr [element 0] | semantics.rb:136:14:136:17 | * ... [element 0] | provenance | | +| semantics.rb:136:15:136:17 | arr [element 0] | semantics.rb:136:14:136:17 | * ... [element 0] | provenance | | +| semantics.rb:136:15:136:17 | arr [element 1] | semantics.rb:136:14:136:17 | * ... [element 1] | provenance | | +| semantics.rb:136:15:136:17 | arr [element 1] | semantics.rb:136:14:136:17 | * ... [element 1] | provenance | | +| semantics.rb:137:14:137:14 | a | semantics.rb:137:10:137:15 | call to s18 | provenance | | +| semantics.rb:137:14:137:14 | a | semantics.rb:137:10:137:15 | call to s18 | provenance | | +| semantics.rb:142:5:142:5 | b | semantics.rb:146:5:146:5 | [post] h [element] | provenance | | +| semantics.rb:142:5:142:5 | b | semantics.rb:146:5:146:5 | [post] h [element] | provenance | | +| semantics.rb:142:9:142:18 | call to source | semantics.rb:142:5:142:5 | b | provenance | | +| semantics.rb:142:9:142:18 | call to source | semantics.rb:142:5:142:5 | b | provenance | | +| semantics.rb:146:5:146:5 | [post] h [element] | semantics.rb:148:14:148:14 | h [element] | provenance | | +| semantics.rb:146:5:146:5 | [post] h [element] | semantics.rb:148:14:148:14 | h [element] | provenance | | +| semantics.rb:148:14:148:14 | h [element] | semantics.rb:148:10:148:15 | call to s19 | provenance | | +| semantics.rb:148:14:148:14 | h [element] | semantics.rb:148:10:148:15 | call to s19 | provenance | | +| semantics.rb:152:5:152:5 | a | semantics.rb:153:13:153:13 | a | provenance | | +| semantics.rb:152:5:152:5 | a | semantics.rb:153:13:153:13 | a | provenance | | +| semantics.rb:152:9:152:18 | call to source | semantics.rb:152:5:152:5 | a | provenance | | +| semantics.rb:152:9:152:18 | call to source | semantics.rb:152:5:152:5 | a | provenance | | +| semantics.rb:153:5:153:5 | x [element] | semantics.rb:154:10:154:10 | x [element] | provenance | | +| semantics.rb:153:5:153:5 | x [element] | semantics.rb:154:10:154:10 | x [element] | provenance | | +| semantics.rb:153:5:153:5 | x [element] | semantics.rb:155:10:155:10 | x [element] | provenance | | +| semantics.rb:153:5:153:5 | x [element] | semantics.rb:155:10:155:10 | x [element] | provenance | | +| semantics.rb:153:9:153:14 | call to s20 [element] | semantics.rb:153:5:153:5 | x [element] | provenance | | +| semantics.rb:153:9:153:14 | call to s20 [element] | semantics.rb:153:5:153:5 | x [element] | provenance | | +| semantics.rb:153:13:153:13 | a | semantics.rb:153:9:153:14 | call to s20 [element] | provenance | | +| semantics.rb:153:13:153:13 | a | semantics.rb:153:9:153:14 | call to s20 [element] | provenance | | +| semantics.rb:154:10:154:10 | x [element] | semantics.rb:154:10:154:13 | ...[...] | provenance | | +| semantics.rb:154:10:154:10 | x [element] | semantics.rb:154:10:154:13 | ...[...] | provenance | | +| semantics.rb:155:10:155:10 | x [element] | semantics.rb:155:10:155:13 | ...[...] | provenance | | +| semantics.rb:155:10:155:10 | x [element] | semantics.rb:155:10:155:13 | ...[...] | provenance | | +| semantics.rb:159:5:159:5 | a | semantics.rb:163:5:163:5 | [post] h [element 0] | provenance | | +| semantics.rb:159:5:159:5 | a | semantics.rb:163:5:163:5 | [post] h [element 0] | provenance | | +| semantics.rb:159:9:159:18 | call to source | semantics.rb:159:5:159:5 | a | provenance | | +| semantics.rb:159:9:159:18 | call to source | semantics.rb:159:5:159:5 | a | provenance | | +| semantics.rb:160:5:160:5 | b | semantics.rb:164:5:164:5 | [post] h [element] | provenance | | +| semantics.rb:160:5:160:5 | b | semantics.rb:164:5:164:5 | [post] h [element] | provenance | | +| semantics.rb:160:9:160:18 | call to source | semantics.rb:160:5:160:5 | b | provenance | | +| semantics.rb:160:9:160:18 | call to source | semantics.rb:160:5:160:5 | b | provenance | | +| semantics.rb:163:5:163:5 | [post] h [element 0] | semantics.rb:166:14:166:14 | h [element 0] | provenance | | +| semantics.rb:163:5:163:5 | [post] h [element 0] | semantics.rb:166:14:166:14 | h [element 0] | provenance | | +| semantics.rb:164:5:164:5 | [post] h [element] | semantics.rb:166:14:166:14 | h [element] | provenance | | +| semantics.rb:164:5:164:5 | [post] h [element] | semantics.rb:166:14:166:14 | h [element] | provenance | | +| semantics.rb:166:14:166:14 | h [element 0] | semantics.rb:166:10:166:15 | call to s21 | provenance | | +| semantics.rb:166:14:166:14 | h [element 0] | semantics.rb:166:10:166:15 | call to s21 | provenance | | +| semantics.rb:166:14:166:14 | h [element] | semantics.rb:166:10:166:15 | call to s21 | provenance | | +| semantics.rb:166:14:166:14 | h [element] | semantics.rb:166:10:166:15 | call to s21 | provenance | | +| semantics.rb:170:5:170:5 | a | semantics.rb:171:13:171:13 | a | provenance | | +| semantics.rb:170:5:170:5 | a | semantics.rb:171:13:171:13 | a | provenance | | +| semantics.rb:170:9:170:18 | call to source | semantics.rb:170:5:170:5 | a | provenance | | +| semantics.rb:170:9:170:18 | call to source | semantics.rb:170:5:170:5 | a | provenance | | +| semantics.rb:171:5:171:5 | x [element] | semantics.rb:172:10:172:10 | x [element] | provenance | | +| semantics.rb:171:5:171:5 | x [element] | semantics.rb:172:10:172:10 | x [element] | provenance | | +| semantics.rb:171:5:171:5 | x [element] | semantics.rb:173:10:173:10 | x [element] | provenance | | +| semantics.rb:171:5:171:5 | x [element] | semantics.rb:173:10:173:10 | x [element] | provenance | | +| semantics.rb:171:9:171:14 | call to s22 [element] | semantics.rb:171:5:171:5 | x [element] | provenance | | +| semantics.rb:171:9:171:14 | call to s22 [element] | semantics.rb:171:5:171:5 | x [element] | provenance | | +| semantics.rb:171:13:171:13 | a | semantics.rb:171:9:171:14 | call to s22 [element] | provenance | | +| semantics.rb:171:13:171:13 | a | semantics.rb:171:9:171:14 | call to s22 [element] | provenance | | +| semantics.rb:172:10:172:10 | x [element] | semantics.rb:172:10:172:13 | ...[...] | provenance | | +| semantics.rb:172:10:172:10 | x [element] | semantics.rb:172:10:172:13 | ...[...] | provenance | | +| semantics.rb:173:10:173:10 | x [element] | semantics.rb:173:10:173:13 | ...[...] | provenance | | +| semantics.rb:173:10:173:10 | x [element] | semantics.rb:173:10:173:13 | ...[...] | provenance | | +| semantics.rb:177:5:177:5 | a | semantics.rb:180:5:180:5 | [post] h [element 0] | provenance | | +| semantics.rb:177:5:177:5 | a | semantics.rb:180:5:180:5 | [post] h [element 0] | provenance | | +| semantics.rb:177:9:177:18 | call to source | semantics.rb:177:5:177:5 | a | provenance | | +| semantics.rb:177:9:177:18 | call to source | semantics.rb:177:5:177:5 | a | provenance | | +| semantics.rb:180:5:180:5 | [post] h [element 0] | semantics.rb:181:5:181:5 | h [element 0] | provenance | | +| semantics.rb:180:5:180:5 | [post] h [element 0] | semantics.rb:181:5:181:5 | h [element 0] | provenance | | +| semantics.rb:181:5:181:5 | [post] h [element 0] | semantics.rb:182:14:182:14 | h [element 0] | provenance | | +| semantics.rb:181:5:181:5 | [post] h [element 0] | semantics.rb:182:14:182:14 | h [element 0] | provenance | | +| semantics.rb:181:5:181:5 | h [element 0] | semantics.rb:181:5:181:5 | [post] h [element 0] | provenance | | +| semantics.rb:181:5:181:5 | h [element 0] | semantics.rb:181:5:181:5 | [post] h [element 0] | provenance | | +| semantics.rb:182:14:182:14 | h [element 0] | semantics.rb:182:10:182:15 | call to s23 | provenance | | +| semantics.rb:182:14:182:14 | h [element 0] | semantics.rb:182:10:182:15 | call to s23 | provenance | | +| semantics.rb:186:5:186:5 | a | semantics.rb:187:13:187:13 | a | provenance | | +| semantics.rb:186:5:186:5 | a | semantics.rb:187:13:187:13 | a | provenance | | +| semantics.rb:186:9:186:18 | call to source | semantics.rb:186:5:186:5 | a | provenance | | +| semantics.rb:186:9:186:18 | call to source | semantics.rb:186:5:186:5 | a | provenance | | +| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:188:10:188:10 | x [element 0] | provenance | | +| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:188:10:188:10 | x [element 0] | provenance | | +| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:190:10:190:10 | x [element 0] | provenance | | +| semantics.rb:187:5:187:5 | x [element 0] | semantics.rb:190:10:190:10 | x [element 0] | provenance | | +| semantics.rb:187:9:187:14 | call to s24 [element 0] | semantics.rb:187:5:187:5 | x [element 0] | provenance | | +| semantics.rb:187:9:187:14 | call to s24 [element 0] | semantics.rb:187:5:187:5 | x [element 0] | provenance | | +| semantics.rb:187:13:187:13 | a | semantics.rb:187:9:187:14 | call to s24 [element 0] | provenance | | +| semantics.rb:187:13:187:13 | a | semantics.rb:187:9:187:14 | call to s24 [element 0] | provenance | | +| semantics.rb:188:10:188:10 | x [element 0] | semantics.rb:188:10:188:13 | ...[...] | provenance | | +| semantics.rb:188:10:188:10 | x [element 0] | semantics.rb:188:10:188:13 | ...[...] | provenance | | +| semantics.rb:190:10:190:10 | x [element 0] | semantics.rb:190:10:190:13 | ...[...] | provenance | | +| semantics.rb:190:10:190:10 | x [element 0] | semantics.rb:190:10:190:13 | ...[...] | provenance | | +| semantics.rb:194:5:194:5 | a | semantics.rb:197:5:197:5 | [post] h [element 0] | provenance | | +| semantics.rb:194:5:194:5 | a | semantics.rb:197:5:197:5 | [post] h [element 0] | provenance | | +| semantics.rb:194:9:194:18 | call to source | semantics.rb:194:5:194:5 | a | provenance | | +| semantics.rb:194:9:194:18 | call to source | semantics.rb:194:5:194:5 | a | provenance | | +| semantics.rb:197:5:197:5 | [post] h [element 0] | semantics.rb:198:5:198:5 | h [element 0] | provenance | | +| semantics.rb:197:5:197:5 | [post] h [element 0] | semantics.rb:198:5:198:5 | h [element 0] | provenance | | +| semantics.rb:198:5:198:5 | [post] h [element 0] | semantics.rb:199:14:199:14 | h [element 0] | provenance | | +| semantics.rb:198:5:198:5 | [post] h [element 0] | semantics.rb:199:14:199:14 | h [element 0] | provenance | | +| semantics.rb:198:5:198:5 | h [element 0] | semantics.rb:198:5:198:5 | [post] h [element 0] | provenance | | +| semantics.rb:198:5:198:5 | h [element 0] | semantics.rb:198:5:198:5 | [post] h [element 0] | provenance | | +| semantics.rb:199:14:199:14 | h [element 0] | semantics.rb:199:10:199:15 | call to s25 | provenance | | +| semantics.rb:199:14:199:14 | h [element 0] | semantics.rb:199:10:199:15 | call to s25 | provenance | | +| semantics.rb:203:5:203:5 | a | semantics.rb:204:13:204:13 | a | provenance | | +| semantics.rb:203:5:203:5 | a | semantics.rb:204:13:204:13 | a | provenance | | +| semantics.rb:203:9:203:18 | call to source | semantics.rb:203:5:203:5 | a | provenance | | +| semantics.rb:203:9:203:18 | call to source | semantics.rb:203:5:203:5 | a | provenance | | +| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:205:10:205:10 | x [element 0] | provenance | | +| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:205:10:205:10 | x [element 0] | provenance | | +| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:207:10:207:10 | x [element 0] | provenance | | +| semantics.rb:204:5:204:5 | x [element 0] | semantics.rb:207:10:207:10 | x [element 0] | provenance | | +| semantics.rb:204:9:204:14 | call to s26 [element 0] | semantics.rb:204:5:204:5 | x [element 0] | provenance | | +| semantics.rb:204:9:204:14 | call to s26 [element 0] | semantics.rb:204:5:204:5 | x [element 0] | provenance | | +| semantics.rb:204:13:204:13 | a | semantics.rb:204:9:204:14 | call to s26 [element 0] | provenance | | +| semantics.rb:204:13:204:13 | a | semantics.rb:204:9:204:14 | call to s26 [element 0] | provenance | | +| semantics.rb:205:10:205:10 | x [element 0] | semantics.rb:205:10:205:13 | ...[...] | provenance | | +| semantics.rb:205:10:205:10 | x [element 0] | semantics.rb:205:10:205:13 | ...[...] | provenance | | +| semantics.rb:207:10:207:10 | x [element 0] | semantics.rb:207:10:207:13 | ...[...] | provenance | | +| semantics.rb:207:10:207:10 | x [element 0] | semantics.rb:207:10:207:13 | ...[...] | provenance | | +| semantics.rb:212:5:212:5 | b | semantics.rb:218:5:218:5 | [post] h [element 1] | provenance | | +| semantics.rb:212:5:212:5 | b | semantics.rb:218:5:218:5 | [post] h [element 1] | provenance | | +| semantics.rb:212:9:212:18 | call to source | semantics.rb:212:5:212:5 | b | provenance | | +| semantics.rb:212:9:212:18 | call to source | semantics.rb:212:5:212:5 | b | provenance | | +| semantics.rb:213:5:213:5 | c | semantics.rb:219:5:219:5 | [post] h [element 2] | provenance | | +| semantics.rb:213:5:213:5 | c | semantics.rb:219:5:219:5 | [post] h [element 2] | provenance | | +| semantics.rb:213:9:213:18 | call to source | semantics.rb:213:5:213:5 | c | provenance | | +| semantics.rb:213:9:213:18 | call to source | semantics.rb:213:5:213:5 | c | provenance | | +| semantics.rb:214:5:214:5 | d | semantics.rb:220:5:220:5 | [post] h [element] | provenance | | +| semantics.rb:214:5:214:5 | d | semantics.rb:220:5:220:5 | [post] h [element] | provenance | | +| semantics.rb:214:9:214:18 | call to source | semantics.rb:214:5:214:5 | d | provenance | | +| semantics.rb:214:9:214:18 | call to source | semantics.rb:214:5:214:5 | d | provenance | | +| semantics.rb:218:5:218:5 | [post] h [element 1] | semantics.rb:219:5:219:5 | h [element 1] | provenance | | +| semantics.rb:218:5:218:5 | [post] h [element 1] | semantics.rb:219:5:219:5 | h [element 1] | provenance | | +| semantics.rb:219:5:219:5 | [post] h [element 1] | semantics.rb:222:14:222:14 | h [element 1] | provenance | | +| semantics.rb:219:5:219:5 | [post] h [element 1] | semantics.rb:222:14:222:14 | h [element 1] | provenance | | +| semantics.rb:219:5:219:5 | [post] h [element 2] | semantics.rb:222:14:222:14 | h [element 2] | provenance | | +| semantics.rb:219:5:219:5 | [post] h [element 2] | semantics.rb:222:14:222:14 | h [element 2] | provenance | | +| semantics.rb:219:5:219:5 | h [element 1] | semantics.rb:219:5:219:5 | [post] h [element 1] | provenance | | +| semantics.rb:219:5:219:5 | h [element 1] | semantics.rb:219:5:219:5 | [post] h [element 1] | provenance | | +| semantics.rb:220:5:220:5 | [post] h [element] | semantics.rb:222:14:222:14 | h [element] | provenance | | +| semantics.rb:220:5:220:5 | [post] h [element] | semantics.rb:222:14:222:14 | h [element] | provenance | | +| semantics.rb:222:14:222:14 | h [element 1] | semantics.rb:222:10:222:15 | call to s27 | provenance | | +| semantics.rb:222:14:222:14 | h [element 1] | semantics.rb:222:10:222:15 | call to s27 | provenance | | +| semantics.rb:222:14:222:14 | h [element 2] | semantics.rb:222:10:222:15 | call to s27 | provenance | | +| semantics.rb:222:14:222:14 | h [element 2] | semantics.rb:222:10:222:15 | call to s27 | provenance | | +| semantics.rb:222:14:222:14 | h [element] | semantics.rb:222:10:222:15 | call to s27 | provenance | | +| semantics.rb:222:14:222:14 | h [element] | semantics.rb:222:10:222:15 | call to s27 | provenance | | +| semantics.rb:226:5:226:5 | a | semantics.rb:227:13:227:13 | a | provenance | | +| semantics.rb:226:5:226:5 | a | semantics.rb:227:13:227:13 | a | provenance | | +| semantics.rb:226:9:226:18 | call to source | semantics.rb:226:5:226:5 | a | provenance | | +| semantics.rb:226:9:226:18 | call to source | semantics.rb:226:5:226:5 | a | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:228:10:228:10 | x [element] | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:228:10:228:10 | x [element] | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:229:10:229:10 | x [element] | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:229:10:229:10 | x [element] | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:230:10:230:10 | x [element] | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:230:10:230:10 | x [element] | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:231:10:231:10 | x [element] | provenance | | +| semantics.rb:227:5:227:5 | x [element] | semantics.rb:231:10:231:10 | x [element] | provenance | | +| semantics.rb:227:9:227:14 | call to s28 [element] | semantics.rb:227:5:227:5 | x [element] | provenance | | +| semantics.rb:227:9:227:14 | call to s28 [element] | semantics.rb:227:5:227:5 | x [element] | provenance | | +| semantics.rb:227:13:227:13 | a | semantics.rb:227:9:227:14 | call to s28 [element] | provenance | | +| semantics.rb:227:13:227:13 | a | semantics.rb:227:9:227:14 | call to s28 [element] | provenance | | +| semantics.rb:228:10:228:10 | x [element] | semantics.rb:228:10:228:13 | ...[...] | provenance | | +| semantics.rb:228:10:228:10 | x [element] | semantics.rb:228:10:228:13 | ...[...] | provenance | | +| semantics.rb:229:10:229:10 | x [element] | semantics.rb:229:10:229:13 | ...[...] | provenance | | +| semantics.rb:229:10:229:10 | x [element] | semantics.rb:229:10:229:13 | ...[...] | provenance | | +| semantics.rb:230:10:230:10 | x [element] | semantics.rb:230:10:230:13 | ...[...] | provenance | | +| semantics.rb:230:10:230:10 | x [element] | semantics.rb:230:10:230:13 | ...[...] | provenance | | +| semantics.rb:231:10:231:10 | x [element] | semantics.rb:231:10:231:13 | ...[...] | provenance | | +| semantics.rb:231:10:231:10 | x [element] | semantics.rb:231:10:231:13 | ...[...] | provenance | | +| semantics.rb:236:5:236:5 | b | semantics.rb:241:5:241:5 | [post] h [element 1] | provenance | | +| semantics.rb:236:5:236:5 | b | semantics.rb:241:5:241:5 | [post] h [element 1] | provenance | | +| semantics.rb:236:9:236:18 | call to source | semantics.rb:236:5:236:5 | b | provenance | | +| semantics.rb:236:9:236:18 | call to source | semantics.rb:236:5:236:5 | b | provenance | | +| semantics.rb:237:5:237:5 | c | semantics.rb:242:5:242:5 | [post] h [element 2] | provenance | | +| semantics.rb:237:5:237:5 | c | semantics.rb:242:5:242:5 | [post] h [element 2] | provenance | | +| semantics.rb:237:9:237:18 | call to source | semantics.rb:237:5:237:5 | c | provenance | | +| semantics.rb:237:9:237:18 | call to source | semantics.rb:237:5:237:5 | c | provenance | | +| semantics.rb:241:5:241:5 | [post] h [element 1] | semantics.rb:242:5:242:5 | h [element 1] | provenance | | +| semantics.rb:241:5:241:5 | [post] h [element 1] | semantics.rb:242:5:242:5 | h [element 1] | provenance | | +| semantics.rb:242:5:242:5 | [post] h [element 1] | semantics.rb:245:14:245:14 | h [element 1] | provenance | | +| semantics.rb:242:5:242:5 | [post] h [element 1] | semantics.rb:245:14:245:14 | h [element 1] | provenance | | +| semantics.rb:242:5:242:5 | [post] h [element 2] | semantics.rb:245:14:245:14 | h [element 2] | provenance | | +| semantics.rb:242:5:242:5 | [post] h [element 2] | semantics.rb:245:14:245:14 | h [element 2] | provenance | | +| semantics.rb:242:5:242:5 | h [element 1] | semantics.rb:242:5:242:5 | [post] h [element 1] | provenance | | +| semantics.rb:242:5:242:5 | h [element 1] | semantics.rb:242:5:242:5 | [post] h [element 1] | provenance | | +| semantics.rb:245:14:245:14 | h [element 1] | semantics.rb:245:10:245:15 | call to s29 | provenance | | +| semantics.rb:245:14:245:14 | h [element 1] | semantics.rb:245:10:245:15 | call to s29 | provenance | | +| semantics.rb:245:14:245:14 | h [element 2] | semantics.rb:245:10:245:15 | call to s29 | provenance | | +| semantics.rb:245:14:245:14 | h [element 2] | semantics.rb:245:10:245:15 | call to s29 | provenance | | +| semantics.rb:249:5:249:5 | a | semantics.rb:250:13:250:13 | a | provenance | | +| semantics.rb:249:5:249:5 | a | semantics.rb:250:13:250:13 | a | provenance | | +| semantics.rb:249:9:249:18 | call to source | semantics.rb:249:5:249:5 | a | provenance | | +| semantics.rb:249:9:249:18 | call to source | semantics.rb:249:5:249:5 | a | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:251:10:251:10 | x [element] | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:251:10:251:10 | x [element] | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:252:10:252:10 | x [element] | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:252:10:252:10 | x [element] | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:253:10:253:10 | x [element] | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:253:10:253:10 | x [element] | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:254:10:254:10 | x [element] | provenance | | +| semantics.rb:250:5:250:5 | x [element] | semantics.rb:254:10:254:10 | x [element] | provenance | | +| semantics.rb:250:9:250:14 | call to s30 [element] | semantics.rb:250:5:250:5 | x [element] | provenance | | +| semantics.rb:250:9:250:14 | call to s30 [element] | semantics.rb:250:5:250:5 | x [element] | provenance | | +| semantics.rb:250:13:250:13 | a | semantics.rb:250:9:250:14 | call to s30 [element] | provenance | | +| semantics.rb:250:13:250:13 | a | semantics.rb:250:9:250:14 | call to s30 [element] | provenance | | +| semantics.rb:251:10:251:10 | x [element] | semantics.rb:251:10:251:13 | ...[...] | provenance | | +| semantics.rb:251:10:251:10 | x [element] | semantics.rb:251:10:251:13 | ...[...] | provenance | | +| semantics.rb:252:10:252:10 | x [element] | semantics.rb:252:10:252:13 | ...[...] | provenance | | +| semantics.rb:252:10:252:10 | x [element] | semantics.rb:252:10:252:13 | ...[...] | provenance | | +| semantics.rb:253:10:253:10 | x [element] | semantics.rb:253:10:253:13 | ...[...] | provenance | | +| semantics.rb:253:10:253:10 | x [element] | semantics.rb:253:10:253:13 | ...[...] | provenance | | +| semantics.rb:254:10:254:10 | x [element] | semantics.rb:254:10:254:13 | ...[...] | provenance | | +| semantics.rb:254:10:254:10 | x [element] | semantics.rb:254:10:254:13 | ...[...] | provenance | | +| semantics.rb:258:5:258:5 | [post] h [element :foo] | semantics.rb:259:5:259:5 | h [element :foo] | provenance | | +| semantics.rb:258:5:258:5 | [post] h [element :foo] | semantics.rb:259:5:259:5 | h [element :foo] | provenance | | +| semantics.rb:258:15:258:25 | call to source | semantics.rb:258:5:258:5 | [post] h [element :foo] | provenance | | +| semantics.rb:258:15:258:25 | call to source | semantics.rb:258:5:258:5 | [post] h [element :foo] | provenance | | +| semantics.rb:259:5:259:5 | [post] h [element :foo] | semantics.rb:260:5:260:5 | h [element :foo] | provenance | | +| semantics.rb:259:5:259:5 | [post] h [element :foo] | semantics.rb:260:5:260:5 | h [element :foo] | provenance | | +| semantics.rb:259:5:259:5 | h [element :foo] | semantics.rb:259:5:259:5 | [post] h [element :foo] | provenance | | +| semantics.rb:259:5:259:5 | h [element :foo] | semantics.rb:259:5:259:5 | [post] h [element :foo] | provenance | | +| semantics.rb:260:5:260:5 | [post] h [element :foo] | semantics.rb:263:14:263:14 | h [element :foo] | provenance | | +| semantics.rb:260:5:260:5 | [post] h [element :foo] | semantics.rb:263:14:263:14 | h [element :foo] | provenance | | +| semantics.rb:260:5:260:5 | h [element :foo] | semantics.rb:260:5:260:5 | [post] h [element :foo] | provenance | | +| semantics.rb:260:5:260:5 | h [element :foo] | semantics.rb:260:5:260:5 | [post] h [element :foo] | provenance | | +| semantics.rb:261:5:261:5 | [post] h [element] | semantics.rb:263:14:263:14 | h [element] | provenance | | +| semantics.rb:261:5:261:5 | [post] h [element] | semantics.rb:263:14:263:14 | h [element] | provenance | | +| semantics.rb:261:12:261:22 | call to source | semantics.rb:261:5:261:5 | [post] h [element] | provenance | | +| semantics.rb:261:12:261:22 | call to source | semantics.rb:261:5:261:5 | [post] h [element] | provenance | | +| semantics.rb:263:14:263:14 | h [element :foo] | semantics.rb:263:10:263:15 | call to s31 | provenance | | +| semantics.rb:263:14:263:14 | h [element :foo] | semantics.rb:263:10:263:15 | call to s31 | provenance | | +| semantics.rb:263:14:263:14 | h [element] | semantics.rb:263:10:263:15 | call to s31 | provenance | | +| semantics.rb:263:14:263:14 | h [element] | semantics.rb:263:10:263:15 | call to s31 | provenance | | +| semantics.rb:268:5:268:5 | [post] h [element foo] | semantics.rb:269:5:269:5 | h [element foo] | provenance | | +| semantics.rb:268:5:268:5 | [post] h [element foo] | semantics.rb:269:5:269:5 | h [element foo] | provenance | | +| semantics.rb:268:16:268:26 | call to source | semantics.rb:268:5:268:5 | [post] h [element foo] | provenance | | +| semantics.rb:268:16:268:26 | call to source | semantics.rb:268:5:268:5 | [post] h [element foo] | provenance | | +| semantics.rb:269:5:269:5 | [post] h [element foo] | semantics.rb:270:5:270:5 | h [element foo] | provenance | | +| semantics.rb:269:5:269:5 | [post] h [element foo] | semantics.rb:270:5:270:5 | h [element foo] | provenance | | +| semantics.rb:269:5:269:5 | h [element foo] | semantics.rb:269:5:269:5 | [post] h [element foo] | provenance | | +| semantics.rb:269:5:269:5 | h [element foo] | semantics.rb:269:5:269:5 | [post] h [element foo] | provenance | | +| semantics.rb:270:5:270:5 | [post] h [element foo] | semantics.rb:273:14:273:14 | h [element foo] | provenance | | +| semantics.rb:270:5:270:5 | [post] h [element foo] | semantics.rb:273:14:273:14 | h [element foo] | provenance | | +| semantics.rb:270:5:270:5 | h [element foo] | semantics.rb:270:5:270:5 | [post] h [element foo] | provenance | | +| semantics.rb:270:5:270:5 | h [element foo] | semantics.rb:270:5:270:5 | [post] h [element foo] | provenance | | +| semantics.rb:271:5:271:5 | [post] h [element] | semantics.rb:273:14:273:14 | h [element] | provenance | | +| semantics.rb:271:5:271:5 | [post] h [element] | semantics.rb:273:14:273:14 | h [element] | provenance | | +| semantics.rb:271:12:271:22 | call to source | semantics.rb:271:5:271:5 | [post] h [element] | provenance | | +| semantics.rb:271:12:271:22 | call to source | semantics.rb:271:5:271:5 | [post] h [element] | provenance | | +| semantics.rb:273:14:273:14 | h [element foo] | semantics.rb:273:10:273:15 | call to s32 | provenance | | +| semantics.rb:273:14:273:14 | h [element foo] | semantics.rb:273:10:273:15 | call to s32 | provenance | | +| semantics.rb:273:14:273:14 | h [element] | semantics.rb:273:10:273:15 | call to s32 | provenance | | +| semantics.rb:273:14:273:14 | h [element] | semantics.rb:273:10:273:15 | call to s32 | provenance | | +| semantics.rb:281:5:281:5 | [post] h [element] | semantics.rb:282:5:282:5 | h [element] | provenance | | +| semantics.rb:281:5:281:5 | [post] h [element] | semantics.rb:282:5:282:5 | h [element] | provenance | | +| semantics.rb:281:12:281:22 | call to source | semantics.rb:281:5:281:5 | [post] h [element] | provenance | | +| semantics.rb:281:12:281:22 | call to source | semantics.rb:281:5:281:5 | [post] h [element] | provenance | | +| semantics.rb:282:5:282:5 | [post] h [element nil] | semantics.rb:283:5:283:5 | h [element nil] | provenance | | +| semantics.rb:282:5:282:5 | [post] h [element nil] | semantics.rb:283:5:283:5 | h [element nil] | provenance | | +| semantics.rb:282:5:282:5 | [post] h [element] | semantics.rb:283:5:283:5 | h [element] | provenance | | +| semantics.rb:282:5:282:5 | [post] h [element] | semantics.rb:283:5:283:5 | h [element] | provenance | | +| semantics.rb:282:5:282:5 | h [element] | semantics.rb:282:5:282:5 | [post] h [element] | provenance | | +| semantics.rb:282:5:282:5 | h [element] | semantics.rb:282:5:282:5 | [post] h [element] | provenance | | +| semantics.rb:282:14:282:24 | call to source | semantics.rb:282:5:282:5 | [post] h [element nil] | provenance | | +| semantics.rb:282:14:282:24 | call to source | semantics.rb:282:5:282:5 | [post] h [element nil] | provenance | | +| semantics.rb:283:5:283:5 | [post] h [element nil] | semantics.rb:284:5:284:5 | h [element nil] | provenance | | +| semantics.rb:283:5:283:5 | [post] h [element nil] | semantics.rb:284:5:284:5 | h [element nil] | provenance | | +| semantics.rb:283:5:283:5 | [post] h [element true] | semantics.rb:284:5:284:5 | h [element true] | provenance | | +| semantics.rb:283:5:283:5 | [post] h [element true] | semantics.rb:284:5:284:5 | h [element true] | provenance | | +| semantics.rb:283:5:283:5 | [post] h [element] | semantics.rb:284:5:284:5 | h [element] | provenance | | +| semantics.rb:283:5:283:5 | [post] h [element] | semantics.rb:284:5:284:5 | h [element] | provenance | | +| semantics.rb:283:5:283:5 | h [element nil] | semantics.rb:283:5:283:5 | [post] h [element nil] | provenance | | +| semantics.rb:283:5:283:5 | h [element nil] | semantics.rb:283:5:283:5 | [post] h [element nil] | provenance | | +| semantics.rb:283:5:283:5 | h [element] | semantics.rb:283:5:283:5 | [post] h [element] | provenance | | +| semantics.rb:283:5:283:5 | h [element] | semantics.rb:283:5:283:5 | [post] h [element] | provenance | | +| semantics.rb:283:15:283:25 | call to source | semantics.rb:283:5:283:5 | [post] h [element true] | provenance | | +| semantics.rb:283:15:283:25 | call to source | semantics.rb:283:5:283:5 | [post] h [element true] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element false] | semantics.rb:286:14:286:14 | h [element false] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element false] | semantics.rb:286:14:286:14 | h [element false] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element nil] | semantics.rb:286:14:286:14 | h [element nil] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element nil] | semantics.rb:286:14:286:14 | h [element nil] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element true] | semantics.rb:286:14:286:14 | h [element true] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element true] | semantics.rb:286:14:286:14 | h [element true] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element] | semantics.rb:286:14:286:14 | h [element] | provenance | | +| semantics.rb:284:5:284:5 | [post] h [element] | semantics.rb:286:14:286:14 | h [element] | provenance | | +| semantics.rb:284:5:284:5 | h [element nil] | semantics.rb:284:5:284:5 | [post] h [element nil] | provenance | | +| semantics.rb:284:5:284:5 | h [element nil] | semantics.rb:284:5:284:5 | [post] h [element nil] | provenance | | +| semantics.rb:284:5:284:5 | h [element true] | semantics.rb:284:5:284:5 | [post] h [element true] | provenance | | +| semantics.rb:284:5:284:5 | h [element true] | semantics.rb:284:5:284:5 | [post] h [element true] | provenance | | +| semantics.rb:284:5:284:5 | h [element] | semantics.rb:284:5:284:5 | [post] h [element] | provenance | | +| semantics.rb:284:5:284:5 | h [element] | semantics.rb:284:5:284:5 | [post] h [element] | provenance | | +| semantics.rb:284:16:284:26 | call to source | semantics.rb:284:5:284:5 | [post] h [element false] | provenance | | +| semantics.rb:284:16:284:26 | call to source | semantics.rb:284:5:284:5 | [post] h [element false] | provenance | | +| semantics.rb:286:14:286:14 | h [element false] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:286:14:286:14 | h [element false] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:286:14:286:14 | h [element nil] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:286:14:286:14 | h [element nil] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:286:14:286:14 | h [element true] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:286:14:286:14 | h [element true] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:286:14:286:14 | h [element] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:286:14:286:14 | h [element] | semantics.rb:286:10:286:15 | call to s33 | provenance | | +| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:291:10:291:10 | x [element :foo] | provenance | | +| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:291:10:291:10 | x [element :foo] | provenance | | +| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:293:10:293:10 | x [element :foo] | provenance | | +| semantics.rb:290:5:290:5 | x [element :foo] | semantics.rb:293:10:293:10 | x [element :foo] | provenance | | +| semantics.rb:290:9:290:24 | call to s35 [element :foo] | semantics.rb:290:5:290:5 | x [element :foo] | provenance | | +| semantics.rb:290:9:290:24 | call to s35 [element :foo] | semantics.rb:290:5:290:5 | x [element :foo] | provenance | | +| semantics.rb:290:13:290:23 | call to source | semantics.rb:290:9:290:24 | call to s35 [element :foo] | provenance | | +| semantics.rb:290:13:290:23 | call to source | semantics.rb:290:9:290:24 | call to s35 [element :foo] | provenance | | +| semantics.rb:291:10:291:10 | x [element :foo] | semantics.rb:291:10:291:16 | ...[...] | provenance | | +| semantics.rb:291:10:291:10 | x [element :foo] | semantics.rb:291:10:291:16 | ...[...] | provenance | | +| semantics.rb:293:10:293:10 | x [element :foo] | semantics.rb:293:10:293:13 | ...[...] | provenance | | +| semantics.rb:293:10:293:10 | x [element :foo] | semantics.rb:293:10:293:13 | ...[...] | provenance | | +| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:299:10:299:10 | x [element foo] | provenance | | +| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:299:10:299:10 | x [element foo] | provenance | | +| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:301:10:301:10 | x [element foo] | provenance | | +| semantics.rb:297:5:297:5 | x [element foo] | semantics.rb:301:10:301:10 | x [element foo] | provenance | | +| semantics.rb:297:9:297:24 | call to s36 [element foo] | semantics.rb:297:5:297:5 | x [element foo] | provenance | | +| semantics.rb:297:9:297:24 | call to s36 [element foo] | semantics.rb:297:5:297:5 | x [element foo] | provenance | | +| semantics.rb:297:13:297:23 | call to source | semantics.rb:297:9:297:24 | call to s36 [element foo] | provenance | | +| semantics.rb:297:13:297:23 | call to source | semantics.rb:297:9:297:24 | call to s36 [element foo] | provenance | | +| semantics.rb:299:10:299:10 | x [element foo] | semantics.rb:299:10:299:17 | ...[...] | provenance | | +| semantics.rb:299:10:299:10 | x [element foo] | semantics.rb:299:10:299:17 | ...[...] | provenance | | +| semantics.rb:301:10:301:10 | x [element foo] | semantics.rb:301:10:301:13 | ...[...] | provenance | | +| semantics.rb:301:10:301:10 | x [element foo] | semantics.rb:301:10:301:13 | ...[...] | provenance | | +| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:307:10:307:10 | x [element true] | provenance | | +| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:307:10:307:10 | x [element true] | provenance | | +| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:309:10:309:10 | x [element true] | provenance | | +| semantics.rb:305:5:305:5 | x [element true] | semantics.rb:309:10:309:10 | x [element true] | provenance | | +| semantics.rb:305:9:305:24 | call to s37 [element true] | semantics.rb:305:5:305:5 | x [element true] | provenance | | +| semantics.rb:305:9:305:24 | call to s37 [element true] | semantics.rb:305:5:305:5 | x [element true] | provenance | | +| semantics.rb:305:13:305:23 | call to source | semantics.rb:305:9:305:24 | call to s37 [element true] | provenance | | +| semantics.rb:305:13:305:23 | call to source | semantics.rb:305:9:305:24 | call to s37 [element true] | provenance | | +| semantics.rb:307:10:307:10 | x [element true] | semantics.rb:307:10:307:16 | ...[...] | provenance | | +| semantics.rb:307:10:307:10 | x [element true] | semantics.rb:307:10:307:16 | ...[...] | provenance | | +| semantics.rb:309:10:309:10 | x [element true] | semantics.rb:309:10:309:13 | ...[...] | provenance | | +| semantics.rb:309:10:309:10 | x [element true] | semantics.rb:309:10:309:13 | ...[...] | provenance | | +| semantics.rb:313:5:313:5 | [post] h [element foo] | semantics.rb:316:14:316:14 | h [element foo] | provenance | | +| semantics.rb:313:5:313:5 | [post] h [element foo] | semantics.rb:316:14:316:14 | h [element foo] | provenance | | +| semantics.rb:313:16:313:26 | call to source | semantics.rb:313:5:313:5 | [post] h [element foo] | provenance | | +| semantics.rb:313:16:313:26 | call to source | semantics.rb:313:5:313:5 | [post] h [element foo] | provenance | | +| semantics.rb:316:14:316:14 | h [element foo] | semantics.rb:316:10:316:15 | call to s38 | provenance | | +| semantics.rb:316:14:316:14 | h [element foo] | semantics.rb:316:10:316:15 | call to s38 | provenance | | +| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:322:10:322:10 | x [element :foo] | provenance | | +| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:322:10:322:10 | x [element :foo] | provenance | | +| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:323:10:323:10 | x [element :foo] | provenance | | +| semantics.rb:320:5:320:5 | x [element :foo] | semantics.rb:323:10:323:10 | x [element :foo] | provenance | | +| semantics.rb:320:9:320:24 | call to s39 [element :foo] | semantics.rb:320:5:320:5 | x [element :foo] | provenance | | +| semantics.rb:320:9:320:24 | call to s39 [element :foo] | semantics.rb:320:5:320:5 | x [element :foo] | provenance | | +| semantics.rb:320:13:320:23 | call to source | semantics.rb:320:9:320:24 | call to s39 [element :foo] | provenance | | +| semantics.rb:320:13:320:23 | call to source | semantics.rb:320:9:320:24 | call to s39 [element :foo] | provenance | | +| semantics.rb:322:10:322:10 | x [element :foo] | semantics.rb:322:10:322:16 | ...[...] | provenance | | +| semantics.rb:322:10:322:10 | x [element :foo] | semantics.rb:322:10:322:16 | ...[...] | provenance | | +| semantics.rb:323:10:323:10 | x [element :foo] | semantics.rb:323:10:323:13 | ...[...] | provenance | | +| semantics.rb:323:10:323:10 | x [element :foo] | semantics.rb:323:10:323:13 | ...[...] | provenance | | +| semantics.rb:328:5:328:5 | [post] x [@foo] | semantics.rb:330:14:330:14 | x [@foo] | provenance | | +| semantics.rb:328:5:328:5 | [post] x [@foo] | semantics.rb:330:14:330:14 | x [@foo] | provenance | | +| semantics.rb:328:13:328:23 | call to source | semantics.rb:328:5:328:5 | [post] x [@foo] | provenance | | +| semantics.rb:328:13:328:23 | call to source | semantics.rb:328:5:328:5 | [post] x [@foo] | provenance | | +| semantics.rb:330:14:330:14 | x [@foo] | semantics.rb:330:10:330:15 | call to s40 | provenance | | +| semantics.rb:330:14:330:14 | x [@foo] | semantics.rb:330:10:330:15 | call to s40 | provenance | | +| semantics.rb:334:5:334:5 | x [@foo] | semantics.rb:335:10:335:10 | x [@foo] | provenance | | +| semantics.rb:334:5:334:5 | x [@foo] | semantics.rb:335:10:335:10 | x [@foo] | provenance | | +| semantics.rb:334:9:334:24 | call to s41 [@foo] | semantics.rb:334:5:334:5 | x [@foo] | provenance | | +| semantics.rb:334:9:334:24 | call to s41 [@foo] | semantics.rb:334:5:334:5 | x [@foo] | provenance | | +| semantics.rb:334:13:334:23 | call to source | semantics.rb:334:9:334:24 | call to s41 [@foo] | provenance | | +| semantics.rb:334:13:334:23 | call to source | semantics.rb:334:9:334:24 | call to s41 [@foo] | provenance | | +| semantics.rb:335:10:335:10 | x [@foo] | semantics.rb:335:10:335:14 | call to foo | provenance | | +| semantics.rb:335:10:335:10 | x [@foo] | semantics.rb:335:10:335:14 | call to foo | provenance | | +| semantics.rb:340:5:340:5 | [post] h [element 0] | semantics.rb:343:13:343:13 | h [element 0] | provenance | | +| semantics.rb:340:5:340:5 | [post] h [element 0] | semantics.rb:343:13:343:13 | h [element 0] | provenance | | +| semantics.rb:340:12:340:22 | call to source | semantics.rb:340:5:340:5 | [post] h [element 0] | provenance | | +| semantics.rb:340:12:340:22 | call to source | semantics.rb:340:5:340:5 | [post] h [element 0] | provenance | | +| semantics.rb:341:5:341:5 | [post] h [element] | semantics.rb:343:13:343:13 | h [element] | provenance | | +| semantics.rb:341:5:341:5 | [post] h [element] | semantics.rb:343:13:343:13 | h [element] | provenance | | +| semantics.rb:341:12:341:22 | call to source | semantics.rb:341:5:341:5 | [post] h [element] | provenance | | +| semantics.rb:341:12:341:22 | call to source | semantics.rb:341:5:341:5 | [post] h [element] | provenance | | +| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:345:10:345:10 | x [element 0] | provenance | | +| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:345:10:345:10 | x [element 0] | provenance | | +| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:347:10:347:10 | x [element 0] | provenance | | +| semantics.rb:343:5:343:5 | x [element 0] | semantics.rb:347:10:347:10 | x [element 0] | provenance | | +| semantics.rb:343:5:343:5 | x [element] | semantics.rb:345:10:345:10 | x [element] | provenance | | +| semantics.rb:343:5:343:5 | x [element] | semantics.rb:345:10:345:10 | x [element] | provenance | | +| semantics.rb:343:5:343:5 | x [element] | semantics.rb:346:10:346:10 | x [element] | provenance | | +| semantics.rb:343:5:343:5 | x [element] | semantics.rb:346:10:346:10 | x [element] | provenance | | +| semantics.rb:343:5:343:5 | x [element] | semantics.rb:347:10:347:10 | x [element] | provenance | | +| semantics.rb:343:5:343:5 | x [element] | semantics.rb:347:10:347:10 | x [element] | provenance | | +| semantics.rb:343:9:343:14 | call to s42 [element 0] | semantics.rb:343:5:343:5 | x [element 0] | provenance | | +| semantics.rb:343:9:343:14 | call to s42 [element 0] | semantics.rb:343:5:343:5 | x [element 0] | provenance | | +| semantics.rb:343:9:343:14 | call to s42 [element] | semantics.rb:343:5:343:5 | x [element] | provenance | | +| semantics.rb:343:9:343:14 | call to s42 [element] | semantics.rb:343:5:343:5 | x [element] | provenance | | +| semantics.rb:343:13:343:13 | h [element 0] | semantics.rb:343:9:343:14 | call to s42 [element 0] | provenance | | +| semantics.rb:343:13:343:13 | h [element 0] | semantics.rb:343:9:343:14 | call to s42 [element 0] | provenance | | +| semantics.rb:343:13:343:13 | h [element] | semantics.rb:343:9:343:14 | call to s42 [element] | provenance | | +| semantics.rb:343:13:343:13 | h [element] | semantics.rb:343:9:343:14 | call to s42 [element] | provenance | | +| semantics.rb:345:10:345:10 | x [element 0] | semantics.rb:345:10:345:13 | ...[...] | provenance | | +| semantics.rb:345:10:345:10 | x [element 0] | semantics.rb:345:10:345:13 | ...[...] | provenance | | +| semantics.rb:345:10:345:10 | x [element] | semantics.rb:345:10:345:13 | ...[...] | provenance | | +| semantics.rb:345:10:345:10 | x [element] | semantics.rb:345:10:345:13 | ...[...] | provenance | | +| semantics.rb:346:10:346:10 | x [element] | semantics.rb:346:10:346:13 | ...[...] | provenance | | +| semantics.rb:346:10:346:10 | x [element] | semantics.rb:346:10:346:13 | ...[...] | provenance | | +| semantics.rb:347:10:347:10 | x [element 0] | semantics.rb:347:10:347:13 | ...[...] | provenance | | +| semantics.rb:347:10:347:10 | x [element 0] | semantics.rb:347:10:347:13 | ...[...] | provenance | | +| semantics.rb:347:10:347:10 | x [element] | semantics.rb:347:10:347:13 | ...[...] | provenance | | +| semantics.rb:347:10:347:10 | x [element] | semantics.rb:347:10:347:13 | ...[...] | provenance | | +| semantics.rb:351:5:351:5 | [post] h [element 0] | semantics.rb:354:13:354:13 | h [element 0] | provenance | | +| semantics.rb:351:5:351:5 | [post] h [element 0] | semantics.rb:354:13:354:13 | h [element 0] | provenance | | +| semantics.rb:351:12:351:22 | call to source | semantics.rb:351:5:351:5 | [post] h [element 0] | provenance | | +| semantics.rb:351:12:351:22 | call to source | semantics.rb:351:5:351:5 | [post] h [element 0] | provenance | | +| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:356:10:356:10 | x [element 0] | provenance | | +| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:356:10:356:10 | x [element 0] | provenance | | +| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:358:10:358:10 | x [element 0] | provenance | | +| semantics.rb:354:5:354:5 | x [element 0] | semantics.rb:358:10:358:10 | x [element 0] | provenance | | +| semantics.rb:354:9:354:14 | call to s43 [element 0] | semantics.rb:354:5:354:5 | x [element 0] | provenance | | +| semantics.rb:354:9:354:14 | call to s43 [element 0] | semantics.rb:354:5:354:5 | x [element 0] | provenance | | +| semantics.rb:354:13:354:13 | h [element 0] | semantics.rb:354:9:354:14 | call to s43 [element 0] | provenance | | +| semantics.rb:354:13:354:13 | h [element 0] | semantics.rb:354:9:354:14 | call to s43 [element 0] | provenance | | +| semantics.rb:356:10:356:10 | x [element 0] | semantics.rb:356:10:356:13 | ...[...] | provenance | | +| semantics.rb:356:10:356:10 | x [element 0] | semantics.rb:356:10:356:13 | ...[...] | provenance | | +| semantics.rb:358:10:358:10 | x [element 0] | semantics.rb:358:10:358:13 | ...[...] | provenance | | +| semantics.rb:358:10:358:10 | x [element 0] | semantics.rb:358:10:358:13 | ...[...] | provenance | | +| semantics.rb:363:5:363:5 | [post] h [element 1] | semantics.rb:366:9:366:9 | h [element 1] | provenance | | +| semantics.rb:363:5:363:5 | [post] h [element 1] | semantics.rb:366:9:366:9 | h [element 1] | provenance | | +| semantics.rb:363:12:363:22 | call to source | semantics.rb:363:5:363:5 | [post] h [element 1] | provenance | | +| semantics.rb:363:12:363:22 | call to source | semantics.rb:363:5:363:5 | [post] h [element 1] | provenance | | +| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:369:10:369:10 | h [element 1] | provenance | | +| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:369:10:369:10 | h [element 1] | provenance | | +| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:370:10:370:10 | h [element 1] | provenance | | +| semantics.rb:366:9:366:9 | [post] h [element 1] | semantics.rb:370:10:370:10 | h [element 1] | provenance | | +| semantics.rb:366:9:366:9 | h [element 1] | semantics.rb:366:9:366:9 | [post] h [element 1] | provenance | | +| semantics.rb:366:9:366:9 | h [element 1] | semantics.rb:366:9:366:9 | [post] h [element 1] | provenance | | +| semantics.rb:369:10:369:10 | h [element 1] | semantics.rb:369:10:369:13 | ...[...] | provenance | | +| semantics.rb:369:10:369:10 | h [element 1] | semantics.rb:369:10:369:13 | ...[...] | provenance | | +| semantics.rb:370:10:370:10 | h [element 1] | semantics.rb:370:10:370:13 | ...[...] | provenance | | +| semantics.rb:370:10:370:10 | h [element 1] | semantics.rb:370:10:370:13 | ...[...] | provenance | | +| semantics.rb:374:5:374:5 | [post] h [element 0] | semantics.rb:375:5:375:5 | h [element 0] | provenance | | +| semantics.rb:374:5:374:5 | [post] h [element 0] | semantics.rb:375:5:375:5 | h [element 0] | provenance | | +| semantics.rb:374:12:374:22 | call to source | semantics.rb:374:5:374:5 | [post] h [element 0] | provenance | | +| semantics.rb:374:12:374:22 | call to source | semantics.rb:374:5:374:5 | [post] h [element 0] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:378:10:378:10 | h [element 0] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:378:10:378:10 | h [element 0] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:380:10:380:10 | h [element 0] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 0] | semantics.rb:380:10:380:10 | h [element 0] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:379:10:379:10 | h [element 1] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:379:10:379:10 | h [element 1] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:380:10:380:10 | h [element 1] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:380:10:380:10 | h [element 1] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:382:9:382:9 | h [element 1] | provenance | | +| semantics.rb:375:5:375:5 | [post] h [element 1] | semantics.rb:382:9:382:9 | h [element 1] | provenance | | +| semantics.rb:375:5:375:5 | h [element 0] | semantics.rb:375:5:375:5 | [post] h [element 0] | provenance | | +| semantics.rb:375:5:375:5 | h [element 0] | semantics.rb:375:5:375:5 | [post] h [element 0] | provenance | | +| semantics.rb:375:12:375:22 | call to source | semantics.rb:375:5:375:5 | [post] h [element 1] | provenance | | +| semantics.rb:375:12:375:22 | call to source | semantics.rb:375:5:375:5 | [post] h [element 1] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:378:10:378:10 | h [element] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:378:10:378:10 | h [element] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:379:10:379:10 | h [element] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:379:10:379:10 | h [element] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:380:10:380:10 | h [element] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:380:10:380:10 | h [element] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:382:9:382:9 | h [element] | provenance | | +| semantics.rb:376:5:376:5 | [post] h [element] | semantics.rb:382:9:382:9 | h [element] | provenance | | +| semantics.rb:376:12:376:22 | call to source | semantics.rb:376:5:376:5 | [post] h [element] | provenance | | +| semantics.rb:376:12:376:22 | call to source | semantics.rb:376:5:376:5 | [post] h [element] | provenance | | +| semantics.rb:378:10:378:10 | h [element 0] | semantics.rb:378:10:378:13 | ...[...] | provenance | | +| semantics.rb:378:10:378:10 | h [element 0] | semantics.rb:378:10:378:13 | ...[...] | provenance | | +| semantics.rb:378:10:378:10 | h [element] | semantics.rb:378:10:378:13 | ...[...] | provenance | | +| semantics.rb:378:10:378:10 | h [element] | semantics.rb:378:10:378:13 | ...[...] | provenance | | +| semantics.rb:379:10:379:10 | h [element 1] | semantics.rb:379:10:379:13 | ...[...] | provenance | | +| semantics.rb:379:10:379:10 | h [element 1] | semantics.rb:379:10:379:13 | ...[...] | provenance | | +| semantics.rb:379:10:379:10 | h [element] | semantics.rb:379:10:379:13 | ...[...] | provenance | | +| semantics.rb:379:10:379:10 | h [element] | semantics.rb:379:10:379:13 | ...[...] | provenance | | +| semantics.rb:380:10:380:10 | h [element 0] | semantics.rb:380:10:380:13 | ...[...] | provenance | | +| semantics.rb:380:10:380:10 | h [element 0] | semantics.rb:380:10:380:13 | ...[...] | provenance | | +| semantics.rb:380:10:380:10 | h [element 1] | semantics.rb:380:10:380:13 | ...[...] | provenance | | +| semantics.rb:380:10:380:10 | h [element 1] | semantics.rb:380:10:380:13 | ...[...] | provenance | | +| semantics.rb:380:10:380:10 | h [element] | semantics.rb:380:10:380:13 | ...[...] | provenance | | +| semantics.rb:380:10:380:10 | h [element] | semantics.rb:380:10:380:13 | ...[...] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:385:10:385:10 | h [element 1] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:385:10:385:10 | h [element 1] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:386:10:386:10 | h [element 1] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element 1] | semantics.rb:386:10:386:10 | h [element 1] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:384:10:384:10 | h [element] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:384:10:384:10 | h [element] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:385:10:385:10 | h [element] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:385:10:385:10 | h [element] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:386:10:386:10 | h [element] | provenance | | +| semantics.rb:382:9:382:9 | [post] h [element] | semantics.rb:386:10:386:10 | h [element] | provenance | | +| semantics.rb:382:9:382:9 | h [element 1] | semantics.rb:382:9:382:9 | [post] h [element 1] | provenance | | +| semantics.rb:382:9:382:9 | h [element 1] | semantics.rb:382:9:382:9 | [post] h [element 1] | provenance | | +| semantics.rb:382:9:382:9 | h [element] | semantics.rb:382:9:382:9 | [post] h [element] | provenance | | +| semantics.rb:382:9:382:9 | h [element] | semantics.rb:382:9:382:9 | [post] h [element] | provenance | | +| semantics.rb:384:10:384:10 | h [element] | semantics.rb:384:10:384:13 | ...[...] | provenance | | +| semantics.rb:384:10:384:10 | h [element] | semantics.rb:384:10:384:13 | ...[...] | provenance | | +| semantics.rb:385:10:385:10 | h [element 1] | semantics.rb:385:10:385:13 | ...[...] | provenance | | +| semantics.rb:385:10:385:10 | h [element 1] | semantics.rb:385:10:385:13 | ...[...] | provenance | | +| semantics.rb:385:10:385:10 | h [element] | semantics.rb:385:10:385:13 | ...[...] | provenance | | +| semantics.rb:385:10:385:10 | h [element] | semantics.rb:385:10:385:13 | ...[...] | provenance | | +| semantics.rb:386:10:386:10 | h [element 1] | semantics.rb:386:10:386:13 | ...[...] | provenance | | +| semantics.rb:386:10:386:10 | h [element 1] | semantics.rb:386:10:386:13 | ...[...] | provenance | | +| semantics.rb:386:10:386:10 | h [element] | semantics.rb:386:10:386:13 | ...[...] | provenance | | +| semantics.rb:386:10:386:10 | h [element] | semantics.rb:386:10:386:13 | ...[...] | provenance | | +| semantics.rb:390:5:390:5 | [post] h [element 0] | semantics.rb:391:5:391:5 | h [element 0] | provenance | | +| semantics.rb:390:5:390:5 | [post] h [element 0] | semantics.rb:391:5:391:5 | h [element 0] | provenance | | +| semantics.rb:390:12:390:22 | call to source | semantics.rb:390:5:390:5 | [post] h [element 0] | provenance | | +| semantics.rb:390:12:390:22 | call to source | semantics.rb:390:5:390:5 | [post] h [element 0] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:394:10:394:10 | h [element 0] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:394:10:394:10 | h [element 0] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:396:10:396:10 | h [element 0] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 0] | semantics.rb:396:10:396:10 | h [element 0] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:395:10:395:10 | h [element 1] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:395:10:395:10 | h [element 1] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:396:10:396:10 | h [element 1] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:396:10:396:10 | h [element 1] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:398:13:398:13 | h [element 1] | provenance | | +| semantics.rb:391:5:391:5 | [post] h [element 1] | semantics.rb:398:13:398:13 | h [element 1] | provenance | | +| semantics.rb:391:5:391:5 | h [element 0] | semantics.rb:391:5:391:5 | [post] h [element 0] | provenance | | +| semantics.rb:391:5:391:5 | h [element 0] | semantics.rb:391:5:391:5 | [post] h [element 0] | provenance | | +| semantics.rb:391:12:391:22 | call to source | semantics.rb:391:5:391:5 | [post] h [element 1] | provenance | | +| semantics.rb:391:12:391:22 | call to source | semantics.rb:391:5:391:5 | [post] h [element 1] | provenance | | +| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:394:10:394:10 | h [element] | provenance | | +| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:394:10:394:10 | h [element] | provenance | | +| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:395:10:395:10 | h [element] | provenance | | +| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:395:10:395:10 | h [element] | provenance | | +| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:396:10:396:10 | h [element] | provenance | | +| semantics.rb:392:5:392:5 | [post] h [element] | semantics.rb:396:10:396:10 | h [element] | provenance | | +| semantics.rb:392:12:392:22 | call to source | semantics.rb:392:5:392:5 | [post] h [element] | provenance | | +| semantics.rb:392:12:392:22 | call to source | semantics.rb:392:5:392:5 | [post] h [element] | provenance | | +| semantics.rb:394:10:394:10 | h [element 0] | semantics.rb:394:10:394:13 | ...[...] | provenance | | +| semantics.rb:394:10:394:10 | h [element 0] | semantics.rb:394:10:394:13 | ...[...] | provenance | | +| semantics.rb:394:10:394:10 | h [element] | semantics.rb:394:10:394:13 | ...[...] | provenance | | +| semantics.rb:394:10:394:10 | h [element] | semantics.rb:394:10:394:13 | ...[...] | provenance | | +| semantics.rb:395:10:395:10 | h [element 1] | semantics.rb:395:10:395:13 | ...[...] | provenance | | +| semantics.rb:395:10:395:10 | h [element 1] | semantics.rb:395:10:395:13 | ...[...] | provenance | | +| semantics.rb:395:10:395:10 | h [element] | semantics.rb:395:10:395:13 | ...[...] | provenance | | +| semantics.rb:395:10:395:10 | h [element] | semantics.rb:395:10:395:13 | ...[...] | provenance | | +| semantics.rb:396:10:396:10 | h [element 0] | semantics.rb:396:10:396:13 | ...[...] | provenance | | +| semantics.rb:396:10:396:10 | h [element 0] | semantics.rb:396:10:396:13 | ...[...] | provenance | | +| semantics.rb:396:10:396:10 | h [element 1] | semantics.rb:396:10:396:13 | ...[...] | provenance | | +| semantics.rb:396:10:396:10 | h [element 1] | semantics.rb:396:10:396:13 | ...[...] | provenance | | +| semantics.rb:396:10:396:10 | h [element] | semantics.rb:396:10:396:13 | ...[...] | provenance | | +| semantics.rb:396:10:396:10 | h [element] | semantics.rb:396:10:396:13 | ...[...] | provenance | | +| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:401:10:401:10 | x [element 1] | provenance | | +| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:401:10:401:10 | x [element 1] | provenance | | +| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:402:10:402:10 | x [element 1] | provenance | | +| semantics.rb:398:5:398:5 | x [element 1] | semantics.rb:402:10:402:10 | x [element 1] | provenance | | +| semantics.rb:398:9:398:14 | call to s46 [element 1] | semantics.rb:398:5:398:5 | x [element 1] | provenance | | +| semantics.rb:398:9:398:14 | call to s46 [element 1] | semantics.rb:398:5:398:5 | x [element 1] | provenance | | +| semantics.rb:398:13:398:13 | h [element 1] | semantics.rb:398:9:398:14 | call to s46 [element 1] | provenance | | +| semantics.rb:398:13:398:13 | h [element 1] | semantics.rb:398:9:398:14 | call to s46 [element 1] | provenance | | +| semantics.rb:401:10:401:10 | x [element 1] | semantics.rb:401:10:401:13 | ...[...] | provenance | | +| semantics.rb:401:10:401:10 | x [element 1] | semantics.rb:401:10:401:13 | ...[...] | provenance | | +| semantics.rb:402:10:402:10 | x [element 1] | semantics.rb:402:10:402:13 | ...[...] | provenance | | +| semantics.rb:402:10:402:10 | x [element 1] | semantics.rb:402:10:402:13 | ...[...] | provenance | | +| semantics.rb:406:5:406:5 | [post] h [element :foo] | semantics.rb:407:5:407:5 | h [element :foo] | provenance | | +| semantics.rb:406:5:406:5 | [post] h [element :foo] | semantics.rb:407:5:407:5 | h [element :foo] | provenance | | +| semantics.rb:406:15:406:25 | call to source | semantics.rb:406:5:406:5 | [post] h [element :foo] | provenance | | +| semantics.rb:406:15:406:25 | call to source | semantics.rb:406:5:406:5 | [post] h [element :foo] | provenance | | +| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:411:10:411:10 | h [element :bar] | provenance | | +| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:411:10:411:10 | h [element :bar] | provenance | | +| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:413:13:413:13 | h [element :bar] | provenance | | +| semantics.rb:407:5:407:5 | [post] h [element :bar] | semantics.rb:413:13:413:13 | h [element :bar] | provenance | | +| semantics.rb:407:5:407:5 | [post] h [element :foo] | semantics.rb:410:10:410:10 | h [element :foo] | provenance | | +| semantics.rb:407:5:407:5 | [post] h [element :foo] | semantics.rb:410:10:410:10 | h [element :foo] | provenance | | +| semantics.rb:407:5:407:5 | h [element :foo] | semantics.rb:407:5:407:5 | [post] h [element :foo] | provenance | | +| semantics.rb:407:5:407:5 | h [element :foo] | semantics.rb:407:5:407:5 | [post] h [element :foo] | provenance | | +| semantics.rb:407:15:407:25 | call to source | semantics.rb:407:5:407:5 | [post] h [element :bar] | provenance | | +| semantics.rb:407:15:407:25 | call to source | semantics.rb:407:5:407:5 | [post] h [element :bar] | provenance | | +| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:410:10:410:10 | h [element] | provenance | | +| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:410:10:410:10 | h [element] | provenance | | +| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:411:10:411:10 | h [element] | provenance | | +| semantics.rb:408:5:408:5 | [post] h [element] | semantics.rb:411:10:411:10 | h [element] | provenance | | +| semantics.rb:408:12:408:22 | call to source | semantics.rb:408:5:408:5 | [post] h [element] | provenance | | +| semantics.rb:408:12:408:22 | call to source | semantics.rb:408:5:408:5 | [post] h [element] | provenance | | +| semantics.rb:410:10:410:10 | h [element :foo] | semantics.rb:410:10:410:16 | ...[...] | provenance | | +| semantics.rb:410:10:410:10 | h [element :foo] | semantics.rb:410:10:410:16 | ...[...] | provenance | | +| semantics.rb:410:10:410:10 | h [element] | semantics.rb:410:10:410:16 | ...[...] | provenance | | +| semantics.rb:410:10:410:10 | h [element] | semantics.rb:410:10:410:16 | ...[...] | provenance | | +| semantics.rb:411:10:411:10 | h [element :bar] | semantics.rb:411:10:411:16 | ...[...] | provenance | | +| semantics.rb:411:10:411:10 | h [element :bar] | semantics.rb:411:10:411:16 | ...[...] | provenance | | +| semantics.rb:411:10:411:10 | h [element] | semantics.rb:411:10:411:16 | ...[...] | provenance | | +| semantics.rb:411:10:411:10 | h [element] | semantics.rb:411:10:411:16 | ...[...] | provenance | | +| semantics.rb:413:5:413:5 | x [element :bar] | semantics.rb:416:10:416:10 | x [element :bar] | provenance | | +| semantics.rb:413:5:413:5 | x [element :bar] | semantics.rb:416:10:416:10 | x [element :bar] | provenance | | +| semantics.rb:413:9:413:14 | call to s47 [element :bar] | semantics.rb:413:5:413:5 | x [element :bar] | provenance | | +| semantics.rb:413:9:413:14 | call to s47 [element :bar] | semantics.rb:413:5:413:5 | x [element :bar] | provenance | | +| semantics.rb:413:13:413:13 | h [element :bar] | semantics.rb:413:9:413:14 | call to s47 [element :bar] | provenance | | +| semantics.rb:413:13:413:13 | h [element :bar] | semantics.rb:413:9:413:14 | call to s47 [element :bar] | provenance | | +| semantics.rb:416:10:416:10 | x [element :bar] | semantics.rb:416:10:416:16 | ...[...] | provenance | | +| semantics.rb:416:10:416:10 | x [element :bar] | semantics.rb:416:10:416:16 | ...[...] | provenance | | +| semantics.rb:420:5:420:5 | [post] h [element :foo] | semantics.rb:421:5:421:5 | h [element :foo] | provenance | | +| semantics.rb:420:5:420:5 | [post] h [element :foo] | semantics.rb:421:5:421:5 | h [element :foo] | provenance | | +| semantics.rb:420:15:420:25 | call to source | semantics.rb:420:5:420:5 | [post] h [element :foo] | provenance | | +| semantics.rb:420:15:420:25 | call to source | semantics.rb:420:5:420:5 | [post] h [element :foo] | provenance | | +| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:425:10:425:10 | h [element :bar] | provenance | | +| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:425:10:425:10 | h [element :bar] | provenance | | +| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:427:13:427:13 | h [element :bar] | provenance | | +| semantics.rb:421:5:421:5 | [post] h [element :bar] | semantics.rb:427:13:427:13 | h [element :bar] | provenance | | +| semantics.rb:421:5:421:5 | [post] h [element :foo] | semantics.rb:424:10:424:10 | h [element :foo] | provenance | | +| semantics.rb:421:5:421:5 | [post] h [element :foo] | semantics.rb:424:10:424:10 | h [element :foo] | provenance | | +| semantics.rb:421:5:421:5 | h [element :foo] | semantics.rb:421:5:421:5 | [post] h [element :foo] | provenance | | +| semantics.rb:421:5:421:5 | h [element :foo] | semantics.rb:421:5:421:5 | [post] h [element :foo] | provenance | | +| semantics.rb:421:15:421:25 | call to source | semantics.rb:421:5:421:5 | [post] h [element :bar] | provenance | | +| semantics.rb:421:15:421:25 | call to source | semantics.rb:421:5:421:5 | [post] h [element :bar] | provenance | | +| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:424:10:424:10 | h [element] | provenance | | +| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:424:10:424:10 | h [element] | provenance | | +| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:425:10:425:10 | h [element] | provenance | | +| semantics.rb:422:5:422:5 | [post] h [element] | semantics.rb:425:10:425:10 | h [element] | provenance | | +| semantics.rb:422:12:422:22 | call to source | semantics.rb:422:5:422:5 | [post] h [element] | provenance | | +| semantics.rb:422:12:422:22 | call to source | semantics.rb:422:5:422:5 | [post] h [element] | provenance | | +| semantics.rb:424:10:424:10 | h [element :foo] | semantics.rb:424:10:424:16 | ...[...] | provenance | | +| semantics.rb:424:10:424:10 | h [element :foo] | semantics.rb:424:10:424:16 | ...[...] | provenance | | +| semantics.rb:424:10:424:10 | h [element] | semantics.rb:424:10:424:16 | ...[...] | provenance | | +| semantics.rb:424:10:424:10 | h [element] | semantics.rb:424:10:424:16 | ...[...] | provenance | | +| semantics.rb:425:10:425:10 | h [element :bar] | semantics.rb:425:10:425:16 | ...[...] | provenance | | +| semantics.rb:425:10:425:10 | h [element :bar] | semantics.rb:425:10:425:16 | ...[...] | provenance | | +| semantics.rb:425:10:425:10 | h [element] | semantics.rb:425:10:425:16 | ...[...] | provenance | | +| semantics.rb:425:10:425:10 | h [element] | semantics.rb:425:10:425:16 | ...[...] | provenance | | +| semantics.rb:427:5:427:5 | x [element :bar] | semantics.rb:430:10:430:10 | x [element :bar] | provenance | | +| semantics.rb:427:5:427:5 | x [element :bar] | semantics.rb:430:10:430:10 | x [element :bar] | provenance | | +| semantics.rb:427:9:427:14 | call to s48 [element :bar] | semantics.rb:427:5:427:5 | x [element :bar] | provenance | | +| semantics.rb:427:9:427:14 | call to s48 [element :bar] | semantics.rb:427:5:427:5 | x [element :bar] | provenance | | +| semantics.rb:427:13:427:13 | h [element :bar] | semantics.rb:427:9:427:14 | call to s48 [element :bar] | provenance | | +| semantics.rb:427:13:427:13 | h [element :bar] | semantics.rb:427:9:427:14 | call to s48 [element :bar] | provenance | | +| semantics.rb:430:10:430:10 | x [element :bar] | semantics.rb:430:10:430:16 | ...[...] | provenance | | +| semantics.rb:430:10:430:10 | x [element :bar] | semantics.rb:430:10:430:16 | ...[...] | provenance | | +| semantics.rb:434:5:434:5 | [post] h [element :foo] | semantics.rb:435:5:435:5 | h [element :foo] | provenance | | +| semantics.rb:434:5:434:5 | [post] h [element :foo] | semantics.rb:435:5:435:5 | h [element :foo] | provenance | | +| semantics.rb:434:15:434:25 | call to source | semantics.rb:434:5:434:5 | [post] h [element :foo] | provenance | | +| semantics.rb:434:15:434:25 | call to source | semantics.rb:434:5:434:5 | [post] h [element :foo] | provenance | | +| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:439:10:439:10 | h [element :bar] | provenance | | +| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:439:10:439:10 | h [element :bar] | provenance | | +| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:441:13:441:13 | h [element :bar] | provenance | | +| semantics.rb:435:5:435:5 | [post] h [element :bar] | semantics.rb:441:13:441:13 | h [element :bar] | provenance | | +| semantics.rb:435:5:435:5 | [post] h [element :foo] | semantics.rb:438:10:438:10 | h [element :foo] | provenance | | +| semantics.rb:435:5:435:5 | [post] h [element :foo] | semantics.rb:438:10:438:10 | h [element :foo] | provenance | | +| semantics.rb:435:5:435:5 | h [element :foo] | semantics.rb:435:5:435:5 | [post] h [element :foo] | provenance | | +| semantics.rb:435:5:435:5 | h [element :foo] | semantics.rb:435:5:435:5 | [post] h [element :foo] | provenance | | +| semantics.rb:435:15:435:25 | call to source | semantics.rb:435:5:435:5 | [post] h [element :bar] | provenance | | +| semantics.rb:435:15:435:25 | call to source | semantics.rb:435:5:435:5 | [post] h [element :bar] | provenance | | +| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:438:10:438:10 | h [element] | provenance | | +| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:438:10:438:10 | h [element] | provenance | | +| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:439:10:439:10 | h [element] | provenance | | +| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:439:10:439:10 | h [element] | provenance | | +| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:441:13:441:13 | h [element] | provenance | | +| semantics.rb:436:5:436:5 | [post] h [element] | semantics.rb:441:13:441:13 | h [element] | provenance | | +| semantics.rb:436:12:436:22 | call to source | semantics.rb:436:5:436:5 | [post] h [element] | provenance | | +| semantics.rb:436:12:436:22 | call to source | semantics.rb:436:5:436:5 | [post] h [element] | provenance | | +| semantics.rb:438:10:438:10 | h [element :foo] | semantics.rb:438:10:438:16 | ...[...] | provenance | | +| semantics.rb:438:10:438:10 | h [element :foo] | semantics.rb:438:10:438:16 | ...[...] | provenance | | +| semantics.rb:438:10:438:10 | h [element] | semantics.rb:438:10:438:16 | ...[...] | provenance | | +| semantics.rb:438:10:438:10 | h [element] | semantics.rb:438:10:438:16 | ...[...] | provenance | | +| semantics.rb:439:10:439:10 | h [element :bar] | semantics.rb:439:10:439:16 | ...[...] | provenance | | +| semantics.rb:439:10:439:10 | h [element :bar] | semantics.rb:439:10:439:16 | ...[...] | provenance | | +| semantics.rb:439:10:439:10 | h [element] | semantics.rb:439:10:439:16 | ...[...] | provenance | | +| semantics.rb:439:10:439:10 | h [element] | semantics.rb:439:10:439:16 | ...[...] | provenance | | +| semantics.rb:441:5:441:5 | x [element :bar] | semantics.rb:444:10:444:10 | x [element :bar] | provenance | | +| semantics.rb:441:5:441:5 | x [element :bar] | semantics.rb:444:10:444:10 | x [element :bar] | provenance | | +| semantics.rb:441:5:441:5 | x [element] | semantics.rb:443:10:443:10 | x [element] | provenance | | +| semantics.rb:441:5:441:5 | x [element] | semantics.rb:443:10:443:10 | x [element] | provenance | | +| semantics.rb:441:5:441:5 | x [element] | semantics.rb:444:10:444:10 | x [element] | provenance | | +| semantics.rb:441:5:441:5 | x [element] | semantics.rb:444:10:444:10 | x [element] | provenance | | +| semantics.rb:441:9:441:14 | call to s49 [element :bar] | semantics.rb:441:5:441:5 | x [element :bar] | provenance | | +| semantics.rb:441:9:441:14 | call to s49 [element :bar] | semantics.rb:441:5:441:5 | x [element :bar] | provenance | | +| semantics.rb:441:9:441:14 | call to s49 [element] | semantics.rb:441:5:441:5 | x [element] | provenance | | +| semantics.rb:441:9:441:14 | call to s49 [element] | semantics.rb:441:5:441:5 | x [element] | provenance | | +| semantics.rb:441:13:441:13 | h [element :bar] | semantics.rb:441:9:441:14 | call to s49 [element :bar] | provenance | | +| semantics.rb:441:13:441:13 | h [element :bar] | semantics.rb:441:9:441:14 | call to s49 [element :bar] | provenance | | +| semantics.rb:441:13:441:13 | h [element] | semantics.rb:441:9:441:14 | call to s49 [element] | provenance | | +| semantics.rb:441:13:441:13 | h [element] | semantics.rb:441:9:441:14 | call to s49 [element] | provenance | | +| semantics.rb:443:10:443:10 | x [element] | semantics.rb:443:10:443:16 | ...[...] | provenance | | +| semantics.rb:443:10:443:10 | x [element] | semantics.rb:443:10:443:16 | ...[...] | provenance | | +| semantics.rb:444:10:444:10 | x [element :bar] | semantics.rb:444:10:444:16 | ...[...] | provenance | | +| semantics.rb:444:10:444:10 | x [element :bar] | semantics.rb:444:10:444:16 | ...[...] | provenance | | +| semantics.rb:444:10:444:10 | x [element] | semantics.rb:444:10:444:16 | ...[...] | provenance | | +| semantics.rb:444:10:444:10 | x [element] | semantics.rb:444:10:444:16 | ...[...] | provenance | | +| semantics.rb:448:5:448:5 | [post] h [element :foo] | semantics.rb:449:5:449:5 | h [element :foo] | provenance | | +| semantics.rb:448:5:448:5 | [post] h [element :foo] | semantics.rb:449:5:449:5 | h [element :foo] | provenance | | +| semantics.rb:448:15:448:25 | call to source | semantics.rb:448:5:448:5 | [post] h [element :foo] | provenance | | +| semantics.rb:448:15:448:25 | call to source | semantics.rb:448:5:448:5 | [post] h [element :foo] | provenance | | +| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:453:10:453:10 | h [element :bar] | provenance | | +| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:453:10:453:10 | h [element :bar] | provenance | | +| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:455:9:455:9 | h [element :bar] | provenance | | +| semantics.rb:449:5:449:5 | [post] h [element :bar] | semantics.rb:455:9:455:9 | h [element :bar] | provenance | | +| semantics.rb:449:5:449:5 | [post] h [element :foo] | semantics.rb:452:10:452:10 | h [element :foo] | provenance | | +| semantics.rb:449:5:449:5 | [post] h [element :foo] | semantics.rb:452:10:452:10 | h [element :foo] | provenance | | +| semantics.rb:449:5:449:5 | h [element :foo] | semantics.rb:449:5:449:5 | [post] h [element :foo] | provenance | | +| semantics.rb:449:5:449:5 | h [element :foo] | semantics.rb:449:5:449:5 | [post] h [element :foo] | provenance | | +| semantics.rb:449:15:449:25 | call to source | semantics.rb:449:5:449:5 | [post] h [element :bar] | provenance | | +| semantics.rb:449:15:449:25 | call to source | semantics.rb:449:5:449:5 | [post] h [element :bar] | provenance | | +| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:452:10:452:10 | h [element] | provenance | | +| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:452:10:452:10 | h [element] | provenance | | +| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:453:10:453:10 | h [element] | provenance | | +| semantics.rb:450:5:450:5 | [post] h [element] | semantics.rb:453:10:453:10 | h [element] | provenance | | +| semantics.rb:450:12:450:22 | call to source | semantics.rb:450:5:450:5 | [post] h [element] | provenance | | +| semantics.rb:450:12:450:22 | call to source | semantics.rb:450:5:450:5 | [post] h [element] | provenance | | +| semantics.rb:452:10:452:10 | h [element :foo] | semantics.rb:452:10:452:16 | ...[...] | provenance | | +| semantics.rb:452:10:452:10 | h [element :foo] | semantics.rb:452:10:452:16 | ...[...] | provenance | | +| semantics.rb:452:10:452:10 | h [element] | semantics.rb:452:10:452:16 | ...[...] | provenance | | +| semantics.rb:452:10:452:10 | h [element] | semantics.rb:452:10:452:16 | ...[...] | provenance | | +| semantics.rb:453:10:453:10 | h [element :bar] | semantics.rb:453:10:453:16 | ...[...] | provenance | | +| semantics.rb:453:10:453:10 | h [element :bar] | semantics.rb:453:10:453:16 | ...[...] | provenance | | +| semantics.rb:453:10:453:10 | h [element] | semantics.rb:453:10:453:16 | ...[...] | provenance | | +| semantics.rb:453:10:453:10 | h [element] | semantics.rb:453:10:453:16 | ...[...] | provenance | | +| semantics.rb:455:9:455:9 | [post] h [element :bar] | semantics.rb:458:10:458:10 | h [element :bar] | provenance | | +| semantics.rb:455:9:455:9 | [post] h [element :bar] | semantics.rb:458:10:458:10 | h [element :bar] | provenance | | +| semantics.rb:455:9:455:9 | h [element :bar] | semantics.rb:455:9:455:9 | [post] h [element :bar] | provenance | | +| semantics.rb:455:9:455:9 | h [element :bar] | semantics.rb:455:9:455:9 | [post] h [element :bar] | provenance | | +| semantics.rb:458:10:458:10 | h [element :bar] | semantics.rb:458:10:458:16 | ...[...] | provenance | | +| semantics.rb:458:10:458:10 | h [element :bar] | semantics.rb:458:10:458:16 | ...[...] | provenance | | +| semantics.rb:462:5:462:5 | [post] h [element :foo] | semantics.rb:463:5:463:5 | h [element :foo] | provenance | | +| semantics.rb:462:5:462:5 | [post] h [element :foo] | semantics.rb:463:5:463:5 | h [element :foo] | provenance | | +| semantics.rb:462:15:462:25 | call to source | semantics.rb:462:5:462:5 | [post] h [element :foo] | provenance | | +| semantics.rb:462:15:462:25 | call to source | semantics.rb:462:5:462:5 | [post] h [element :foo] | provenance | | +| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:467:10:467:10 | h [element :bar] | provenance | | +| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:467:10:467:10 | h [element :bar] | provenance | | +| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:469:9:469:9 | h [element :bar] | provenance | | +| semantics.rb:463:5:463:5 | [post] h [element :bar] | semantics.rb:469:9:469:9 | h [element :bar] | provenance | | +| semantics.rb:463:5:463:5 | [post] h [element :foo] | semantics.rb:466:10:466:10 | h [element :foo] | provenance | | +| semantics.rb:463:5:463:5 | [post] h [element :foo] | semantics.rb:466:10:466:10 | h [element :foo] | provenance | | +| semantics.rb:463:5:463:5 | h [element :foo] | semantics.rb:463:5:463:5 | [post] h [element :foo] | provenance | | +| semantics.rb:463:5:463:5 | h [element :foo] | semantics.rb:463:5:463:5 | [post] h [element :foo] | provenance | | +| semantics.rb:463:15:463:25 | call to source | semantics.rb:463:5:463:5 | [post] h [element :bar] | provenance | | +| semantics.rb:463:15:463:25 | call to source | semantics.rb:463:5:463:5 | [post] h [element :bar] | provenance | | +| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:466:10:466:10 | h [element] | provenance | | +| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:466:10:466:10 | h [element] | provenance | | +| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:467:10:467:10 | h [element] | provenance | | +| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:467:10:467:10 | h [element] | provenance | | +| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:469:9:469:9 | h [element] | provenance | | +| semantics.rb:464:5:464:5 | [post] h [element] | semantics.rb:469:9:469:9 | h [element] | provenance | | +| semantics.rb:464:12:464:22 | call to source | semantics.rb:464:5:464:5 | [post] h [element] | provenance | | +| semantics.rb:464:12:464:22 | call to source | semantics.rb:464:5:464:5 | [post] h [element] | provenance | | +| semantics.rb:466:10:466:10 | h [element :foo] | semantics.rb:466:10:466:16 | ...[...] | provenance | | +| semantics.rb:466:10:466:10 | h [element :foo] | semantics.rb:466:10:466:16 | ...[...] | provenance | | +| semantics.rb:466:10:466:10 | h [element] | semantics.rb:466:10:466:16 | ...[...] | provenance | | +| semantics.rb:466:10:466:10 | h [element] | semantics.rb:466:10:466:16 | ...[...] | provenance | | +| semantics.rb:467:10:467:10 | h [element :bar] | semantics.rb:467:10:467:16 | ...[...] | provenance | | +| semantics.rb:467:10:467:10 | h [element :bar] | semantics.rb:467:10:467:16 | ...[...] | provenance | | +| semantics.rb:467:10:467:10 | h [element] | semantics.rb:467:10:467:16 | ...[...] | provenance | | +| semantics.rb:467:10:467:10 | h [element] | semantics.rb:467:10:467:16 | ...[...] | provenance | | +| semantics.rb:469:9:469:9 | [post] h [element :bar] | semantics.rb:472:10:472:10 | h [element :bar] | provenance | | +| semantics.rb:469:9:469:9 | [post] h [element :bar] | semantics.rb:472:10:472:10 | h [element :bar] | provenance | | +| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:471:10:471:10 | h [element] | provenance | | +| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:471:10:471:10 | h [element] | provenance | | +| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:472:10:472:10 | h [element] | provenance | | +| semantics.rb:469:9:469:9 | [post] h [element] | semantics.rb:472:10:472:10 | h [element] | provenance | | +| semantics.rb:469:9:469:9 | h [element :bar] | semantics.rb:469:9:469:9 | [post] h [element :bar] | provenance | | +| semantics.rb:469:9:469:9 | h [element :bar] | semantics.rb:469:9:469:9 | [post] h [element :bar] | provenance | | +| semantics.rb:469:9:469:9 | h [element] | semantics.rb:469:9:469:9 | [post] h [element] | provenance | | +| semantics.rb:469:9:469:9 | h [element] | semantics.rb:469:9:469:9 | [post] h [element] | provenance | | +| semantics.rb:471:10:471:10 | h [element] | semantics.rb:471:10:471:16 | ...[...] | provenance | | +| semantics.rb:471:10:471:10 | h [element] | semantics.rb:471:10:471:16 | ...[...] | provenance | | +| semantics.rb:472:10:472:10 | h [element :bar] | semantics.rb:472:10:472:16 | ...[...] | provenance | | +| semantics.rb:472:10:472:10 | h [element :bar] | semantics.rb:472:10:472:16 | ...[...] | provenance | | +| semantics.rb:472:10:472:10 | h [element] | semantics.rb:472:10:472:16 | ...[...] | provenance | | +| semantics.rb:472:10:472:10 | h [element] | semantics.rb:472:10:472:16 | ...[...] | provenance | | +| semantics.rb:476:5:476:5 | [post] h [element :foo] | semantics.rb:477:5:477:5 | h [element :foo] | provenance | | +| semantics.rb:476:5:476:5 | [post] h [element :foo] | semantics.rb:477:5:477:5 | h [element :foo] | provenance | | +| semantics.rb:476:15:476:25 | call to source | semantics.rb:476:5:476:5 | [post] h [element :foo] | provenance | | +| semantics.rb:476:15:476:25 | call to source | semantics.rb:476:5:476:5 | [post] h [element :foo] | provenance | | +| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:481:10:481:10 | h [element :bar] | provenance | | +| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:481:10:481:10 | h [element :bar] | provenance | | +| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:483:5:483:5 | h [element :bar] | provenance | | +| semantics.rb:477:5:477:5 | [post] h [element :bar] | semantics.rb:483:5:483:5 | h [element :bar] | provenance | | +| semantics.rb:477:5:477:5 | [post] h [element :foo] | semantics.rb:480:10:480:10 | h [element :foo] | provenance | | +| semantics.rb:477:5:477:5 | [post] h [element :foo] | semantics.rb:480:10:480:10 | h [element :foo] | provenance | | +| semantics.rb:477:5:477:5 | h [element :foo] | semantics.rb:477:5:477:5 | [post] h [element :foo] | provenance | | +| semantics.rb:477:5:477:5 | h [element :foo] | semantics.rb:477:5:477:5 | [post] h [element :foo] | provenance | | +| semantics.rb:477:15:477:25 | call to source | semantics.rb:477:5:477:5 | [post] h [element :bar] | provenance | | +| semantics.rb:477:15:477:25 | call to source | semantics.rb:477:5:477:5 | [post] h [element :bar] | provenance | | +| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:480:10:480:10 | h [element] | provenance | | +| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:480:10:480:10 | h [element] | provenance | | +| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:481:10:481:10 | h [element] | provenance | | +| semantics.rb:478:5:478:5 | [post] h [element] | semantics.rb:481:10:481:10 | h [element] | provenance | | +| semantics.rb:478:12:478:22 | call to source | semantics.rb:478:5:478:5 | [post] h [element] | provenance | | +| semantics.rb:478:12:478:22 | call to source | semantics.rb:478:5:478:5 | [post] h [element] | provenance | | +| semantics.rb:480:10:480:10 | h [element :foo] | semantics.rb:480:10:480:16 | ...[...] | provenance | | +| semantics.rb:480:10:480:10 | h [element :foo] | semantics.rb:480:10:480:16 | ...[...] | provenance | | +| semantics.rb:480:10:480:10 | h [element] | semantics.rb:480:10:480:16 | ...[...] | provenance | | +| semantics.rb:480:10:480:10 | h [element] | semantics.rb:480:10:480:16 | ...[...] | provenance | | +| semantics.rb:481:10:481:10 | h [element :bar] | semantics.rb:481:10:481:16 | ...[...] | provenance | | +| semantics.rb:481:10:481:10 | h [element :bar] | semantics.rb:481:10:481:16 | ...[...] | provenance | | +| semantics.rb:481:10:481:10 | h [element] | semantics.rb:481:10:481:16 | ...[...] | provenance | | +| semantics.rb:481:10:481:10 | h [element] | semantics.rb:481:10:481:16 | ...[...] | provenance | | +| semantics.rb:483:5:483:5 | [post] h [element :bar] | semantics.rb:486:10:486:10 | h [element :bar] | provenance | | +| semantics.rb:483:5:483:5 | [post] h [element :bar] | semantics.rb:486:10:486:10 | h [element :bar] | provenance | | +| semantics.rb:483:5:483:5 | h [element :bar] | semantics.rb:483:5:483:5 | [post] h [element :bar] | provenance | | +| semantics.rb:483:5:483:5 | h [element :bar] | semantics.rb:483:5:483:5 | [post] h [element :bar] | provenance | | +| semantics.rb:486:10:486:10 | h [element :bar] | semantics.rb:486:10:486:16 | ...[...] | provenance | | +| semantics.rb:486:10:486:10 | h [element :bar] | semantics.rb:486:10:486:16 | ...[...] | provenance | | +| semantics.rb:490:5:490:5 | [post] h [element :foo] | semantics.rb:491:5:491:5 | h [element :foo] | provenance | | +| semantics.rb:490:5:490:5 | [post] h [element :foo] | semantics.rb:491:5:491:5 | h [element :foo] | provenance | | +| semantics.rb:490:15:490:25 | call to source | semantics.rb:490:5:490:5 | [post] h [element :foo] | provenance | | +| semantics.rb:490:15:490:25 | call to source | semantics.rb:490:5:490:5 | [post] h [element :foo] | provenance | | +| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:495:10:495:10 | h [element :bar] | provenance | | +| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:495:10:495:10 | h [element :bar] | provenance | | +| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:497:9:497:9 | h [element :bar] | provenance | | +| semantics.rb:491:5:491:5 | [post] h [element :bar] | semantics.rb:497:9:497:9 | h [element :bar] | provenance | | +| semantics.rb:491:5:491:5 | [post] h [element :foo] | semantics.rb:494:10:494:10 | h [element :foo] | provenance | | +| semantics.rb:491:5:491:5 | [post] h [element :foo] | semantics.rb:494:10:494:10 | h [element :foo] | provenance | | +| semantics.rb:491:5:491:5 | h [element :foo] | semantics.rb:491:5:491:5 | [post] h [element :foo] | provenance | | +| semantics.rb:491:5:491:5 | h [element :foo] | semantics.rb:491:5:491:5 | [post] h [element :foo] | provenance | | +| semantics.rb:491:15:491:25 | call to source | semantics.rb:491:5:491:5 | [post] h [element :bar] | provenance | | +| semantics.rb:491:15:491:25 | call to source | semantics.rb:491:5:491:5 | [post] h [element :bar] | provenance | | +| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:494:10:494:10 | h [element] | provenance | | +| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:494:10:494:10 | h [element] | provenance | | +| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:495:10:495:10 | h [element] | provenance | | +| semantics.rb:492:5:492:5 | [post] h [element] | semantics.rb:495:10:495:10 | h [element] | provenance | | +| semantics.rb:492:12:492:22 | call to source | semantics.rb:492:5:492:5 | [post] h [element] | provenance | | +| semantics.rb:492:12:492:22 | call to source | semantics.rb:492:5:492:5 | [post] h [element] | provenance | | +| semantics.rb:494:10:494:10 | h [element :foo] | semantics.rb:494:10:494:16 | ...[...] | provenance | | +| semantics.rb:494:10:494:10 | h [element :foo] | semantics.rb:494:10:494:16 | ...[...] | provenance | | +| semantics.rb:494:10:494:10 | h [element] | semantics.rb:494:10:494:16 | ...[...] | provenance | | +| semantics.rb:494:10:494:10 | h [element] | semantics.rb:494:10:494:16 | ...[...] | provenance | | +| semantics.rb:495:10:495:10 | h [element :bar] | semantics.rb:495:10:495:16 | ...[...] | provenance | | +| semantics.rb:495:10:495:10 | h [element :bar] | semantics.rb:495:10:495:16 | ...[...] | provenance | | +| semantics.rb:495:10:495:10 | h [element] | semantics.rb:495:10:495:16 | ...[...] | provenance | | +| semantics.rb:495:10:495:10 | h [element] | semantics.rb:495:10:495:16 | ...[...] | provenance | | +| semantics.rb:497:5:497:5 | x [element :bar] | semantics.rb:500:10:500:10 | x [element :bar] | provenance | | +| semantics.rb:497:5:497:5 | x [element :bar] | semantics.rb:500:10:500:10 | x [element :bar] | provenance | | +| semantics.rb:497:9:497:9 | h [element :bar] | semantics.rb:497:9:497:15 | call to s53 [element :bar] | provenance | | +| semantics.rb:497:9:497:9 | h [element :bar] | semantics.rb:497:9:497:15 | call to s53 [element :bar] | provenance | | +| semantics.rb:497:9:497:15 | call to s53 [element :bar] | semantics.rb:497:5:497:5 | x [element :bar] | provenance | | +| semantics.rb:497:9:497:15 | call to s53 [element :bar] | semantics.rb:497:5:497:5 | x [element :bar] | provenance | | +| semantics.rb:500:10:500:10 | x [element :bar] | semantics.rb:500:10:500:16 | ...[...] | provenance | | +| semantics.rb:500:10:500:10 | x [element :bar] | semantics.rb:500:10:500:16 | ...[...] | provenance | | +| semantics.rb:502:10:502:20 | call to source | semantics.rb:502:10:502:26 | call to s53 | provenance | | +| semantics.rb:502:10:502:20 | call to source | semantics.rb:502:10:502:26 | call to s53 | provenance | | +| semantics.rb:506:5:506:5 | [post] h [element :foo] | semantics.rb:507:5:507:5 | h [element :foo] | provenance | | +| semantics.rb:506:5:506:5 | [post] h [element :foo] | semantics.rb:507:5:507:5 | h [element :foo] | provenance | | +| semantics.rb:506:15:506:25 | call to source | semantics.rb:506:5:506:5 | [post] h [element :foo] | provenance | | +| semantics.rb:506:15:506:25 | call to source | semantics.rb:506:5:506:5 | [post] h [element :foo] | provenance | | +| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:511:10:511:10 | h [element :bar] | provenance | | +| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:511:10:511:10 | h [element :bar] | provenance | | +| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:513:9:513:9 | h [element :bar] | provenance | | +| semantics.rb:507:5:507:5 | [post] h [element :bar] | semantics.rb:513:9:513:9 | h [element :bar] | provenance | | +| semantics.rb:507:5:507:5 | [post] h [element :foo] | semantics.rb:510:10:510:10 | h [element :foo] | provenance | | +| semantics.rb:507:5:507:5 | [post] h [element :foo] | semantics.rb:510:10:510:10 | h [element :foo] | provenance | | +| semantics.rb:507:5:507:5 | h [element :foo] | semantics.rb:507:5:507:5 | [post] h [element :foo] | provenance | | +| semantics.rb:507:5:507:5 | h [element :foo] | semantics.rb:507:5:507:5 | [post] h [element :foo] | provenance | | +| semantics.rb:507:15:507:25 | call to source | semantics.rb:507:5:507:5 | [post] h [element :bar] | provenance | | +| semantics.rb:507:15:507:25 | call to source | semantics.rb:507:5:507:5 | [post] h [element :bar] | provenance | | +| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:510:10:510:10 | h [element] | provenance | | +| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:510:10:510:10 | h [element] | provenance | | +| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:511:10:511:10 | h [element] | provenance | | +| semantics.rb:508:5:508:5 | [post] h [element] | semantics.rb:511:10:511:10 | h [element] | provenance | | +| semantics.rb:508:12:508:22 | call to source | semantics.rb:508:5:508:5 | [post] h [element] | provenance | | +| semantics.rb:508:12:508:22 | call to source | semantics.rb:508:5:508:5 | [post] h [element] | provenance | | +| semantics.rb:510:10:510:10 | h [element :foo] | semantics.rb:510:10:510:16 | ...[...] | provenance | | +| semantics.rb:510:10:510:10 | h [element :foo] | semantics.rb:510:10:510:16 | ...[...] | provenance | | +| semantics.rb:510:10:510:10 | h [element] | semantics.rb:510:10:510:16 | ...[...] | provenance | | +| semantics.rb:510:10:510:10 | h [element] | semantics.rb:510:10:510:16 | ...[...] | provenance | | +| semantics.rb:511:10:511:10 | h [element :bar] | semantics.rb:511:10:511:16 | ...[...] | provenance | | +| semantics.rb:511:10:511:10 | h [element :bar] | semantics.rb:511:10:511:16 | ...[...] | provenance | | +| semantics.rb:511:10:511:10 | h [element] | semantics.rb:511:10:511:16 | ...[...] | provenance | | +| semantics.rb:511:10:511:10 | h [element] | semantics.rb:511:10:511:16 | ...[...] | provenance | | +| semantics.rb:513:5:513:5 | x [element :bar] | semantics.rb:516:10:516:10 | x [element :bar] | provenance | | +| semantics.rb:513:5:513:5 | x [element :bar] | semantics.rb:516:10:516:10 | x [element :bar] | provenance | | +| semantics.rb:513:9:513:9 | h [element :bar] | semantics.rb:513:9:513:15 | call to s54 [element :bar] | provenance | | +| semantics.rb:513:9:513:9 | h [element :bar] | semantics.rb:513:9:513:15 | call to s54 [element :bar] | provenance | | +| semantics.rb:513:9:513:15 | call to s54 [element :bar] | semantics.rb:513:5:513:5 | x [element :bar] | provenance | | +| semantics.rb:513:9:513:15 | call to s54 [element :bar] | semantics.rb:513:5:513:5 | x [element :bar] | provenance | | +| semantics.rb:516:10:516:10 | x [element :bar] | semantics.rb:516:10:516:16 | ...[...] | provenance | | +| semantics.rb:516:10:516:10 | x [element :bar] | semantics.rb:516:10:516:16 | ...[...] | provenance | | nodes | semantics.rb:2:5:2:5 | a | semmle.label | a | | semantics.rb:2:5:2:5 | a | semmle.label | a | diff --git a/ruby/ql/test/library-tests/dataflow/global/Flow.expected b/ruby/ql/test/library-tests/dataflow/global/Flow.expected index bd8ad749d7dc..5f019f306d3c 100644 --- a/ruby/ql/test/library-tests/dataflow/global/Flow.expected +++ b/ruby/ql/test/library-tests/dataflow/global/Flow.expected @@ -1,258 +1,260 @@ testFailures edges -| blocks.rb:14:12:14:20 | call to source | blocks.rb:8:10:8:14 | yield ... | -| captured_variables.rb:9:24:9:24 | x | captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | -| captured_variables.rb:9:24:9:24 | x | captured_variables.rb:11:5:11:6 | fn [captured x] | -| captured_variables.rb:10:5:10:6 | fn [captured x] | captured_variables.rb:11:5:11:6 | fn [captured x] | -| captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | captured_variables.rb:10:5:10:6 | fn [captured x] | -| captured_variables.rb:11:5:11:6 | fn [captured x] | captured_variables.rb:10:20:10:20 | x | -| captured_variables.rb:13:20:13:29 | call to taint | captured_variables.rb:9:24:9:24 | x | -| captured_variables.rb:15:28:15:28 | x | captured_variables.rb:16:5:18:5 | -> { ... } [captured x] | -| captured_variables.rb:20:1:20:35 | ( ... ) [captured x] | captured_variables.rb:17:14:17:14 | x | -| captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] | captured_variables.rb:20:1:20:35 | ( ... ) [captured x] | -| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:15:28:15:28 | x | -| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] | -| captured_variables.rb:22:28:22:28 | x | captured_variables.rb:23:5:25:5 | -> { ... } [captured x] | -| captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | captured_variables.rb:24:14:24:14 | x | -| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:22:28:22:28 | x | -| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | -| captured_variables.rb:29:33:29:33 | x | captured_variables.rb:30:10:32:5 | -> { ... } [captured x] | -| captured_variables.rb:29:33:29:33 | x | captured_variables.rb:33:29:33:30 | fn [captured x] | -| captured_variables.rb:30:5:30:6 | fn [captured x] | captured_variables.rb:33:29:33:30 | fn [captured x] | -| captured_variables.rb:30:10:32:5 | -> { ... } [captured x] | captured_variables.rb:30:5:30:6 | fn [captured x] | -| captured_variables.rb:33:29:33:30 | fn [captured x] | captured_variables.rb:31:14:31:14 | x | -| captured_variables.rb:35:29:35:38 | call to taint | captured_variables.rb:29:33:29:33 | x | -| captured_variables.rb:37:13:37:14 | fn [captured x] | captured_variables.rb:38:5:38:6 | fn [captured x] | -| captured_variables.rb:38:5:38:6 | fn [captured x] | captured_variables.rb:42:14:42:14 | x | -| captured_variables.rb:40:31:40:31 | x | captured_variables.rb:41:10:43:5 | -> { ... } [captured x] | -| captured_variables.rb:40:31:40:31 | x | captured_variables.rb:44:13:44:14 | fn [captured x] | -| captured_variables.rb:41:5:41:6 | fn [captured x] | captured_variables.rb:44:13:44:14 | fn [captured x] | -| captured_variables.rb:41:10:43:5 | -> { ... } [captured x] | captured_variables.rb:41:5:41:6 | fn [captured x] | -| captured_variables.rb:44:13:44:14 | fn [captured x] | captured_variables.rb:37:13:37:14 | fn [captured x] | -| captured_variables.rb:46:27:46:36 | call to taint | captured_variables.rb:40:31:40:31 | x | -| captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:49:16:52:3 | do ... end [captured x] | -| captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:54:6:54:6 | x | -| captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | captured_variables.rb:54:6:54:6 | x | -| captured_variables.rb:49:16:52:3 | do ... end [captured x] | captured_variables.rb:50:10:50:10 | x | -| captured_variables.rb:51:9:51:16 | call to taint | captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | -| captured_variables.rb:57:19:57:19 | x | captured_variables.rb:58:18:58:18 | x | -| captured_variables.rb:58:18:58:18 | x | captured_variables.rb:58:9:58:14 | [post] self [@field] | -| captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:16:61:21 | self [@field] | -| captured_variables.rb:61:16:61:21 | @field | captured_variables.rb:61:9:61:21 | return | -| captured_variables.rb:61:16:61:21 | self [@field] | captured_variables.rb:61:16:61:21 | @field | -| captured_variables.rb:66:1:66:3 | [post] foo [@field] | captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | -| captured_variables.rb:66:1:66:3 | [post] foo [@field] | captured_variables.rb:72:6:72:8 | foo [@field] | -| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:57:19:57:19 | x | -| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:66:1:66:3 | [post] foo [@field] | -| captured_variables.rb:66:15:66:22 | call to taint | instance_variables.rb:10:19:10:19 | x | -| captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | captured_variables.rb:72:6:72:8 | foo [@field] | -| captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | captured_variables.rb:68:10:68:12 | foo [@field] | -| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:68:10:68:22 | call to get_field | -| captured_variables.rb:68:10:68:12 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| captured_variables.rb:69:5:69:7 | [post] foo [@field] | captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | -| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:57:19:57:19 | x | -| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:69:5:69:7 | [post] foo [@field] | -| captured_variables.rb:69:19:69:26 | call to taint | instance_variables.rb:10:19:10:19 | x | -| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:72:6:72:18 | call to get_field | -| captured_variables.rb:72:6:72:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | captured_variables.rb:83:6:83:8 | foo [@field] | -| captured_variables.rb:79:9:79:11 | [post] foo [@field] | captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | -| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:57:19:57:19 | x | -| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:79:9:79:11 | [post] foo [@field] | -| captured_variables.rb:79:23:79:30 | call to taint | instance_variables.rb:10:19:10:19 | x | -| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:83:6:83:18 | call to get_field | -| captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:86:6:89:1 | -> { ... } [captured y] | -| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:90:1:90:2 | fn [captured y] | -| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:91:6:91:6 | y | -| captured_variables.rb:86:1:86:2 | fn [captured y] | captured_variables.rb:90:1:90:2 | fn [captured y] | -| captured_variables.rb:86:6:89:1 | -> { ... } [captured y] | captured_variables.rb:86:1:86:2 | fn [captured y] | -| captured_variables.rb:88:9:88:16 | call to taint | captured_variables.rb:90:1:90:2 | [post] fn [captured y] | -| captured_variables.rb:90:1:90:2 | [post] fn [captured y] | captured_variables.rb:91:6:91:6 | y | -| captured_variables.rb:90:1:90:2 | fn [captured y] | captured_variables.rb:87:10:87:10 | y | -| captured_variables.rb:93:17:93:17 | x | captured_variables.rb:94:5:96:5 | -> { ... } [captured x] | -| captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | captured_variables.rb:95:14:95:14 | x | -| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:93:17:93:17 | x | -| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | -| captured_variables.rb:100:21:100:21 | x | captured_variables.rb:101:11:101:11 | x | -| captured_variables.rb:101:11:101:11 | x | captured_variables.rb:104:31:104:31 | x | -| captured_variables.rb:104:17:104:24 | call to taint | captured_variables.rb:100:21:100:21 | x | -| captured_variables.rb:104:31:104:31 | x | captured_variables.rb:105:10:105:10 | x | -| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:110:14:116:5 | -> { ... } [captured x] | -| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:117:5:117:10 | middle [captured x] | -| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:118:10:118:10 | x | -| captured_variables.rb:110:5:110:10 | middle [captured x] | captured_variables.rb:117:5:117:10 | middle [captured x] | -| captured_variables.rb:110:14:116:5 | -> { ... } [captured x] | captured_variables.rb:110:5:110:10 | middle [captured x] | -| captured_variables.rb:111:9:111:13 | inner [captured x] | captured_variables.rb:115:9:115:13 | inner [captured x] | -| captured_variables.rb:111:17:114:9 | -> { ... } [captured x] | captured_variables.rb:111:9:111:13 | inner [captured x] | -| captured_variables.rb:113:17:113:25 | call to taint | captured_variables.rb:115:9:115:13 | [post] inner [captured x] | -| captured_variables.rb:115:9:115:13 | [post] inner [captured x] | captured_variables.rb:117:5:117:10 | [post] middle [captured x] | -| captured_variables.rb:115:9:115:13 | inner [captured x] | captured_variables.rb:112:18:112:18 | x | -| captured_variables.rb:117:5:117:10 | [post] middle [captured x] | captured_variables.rb:118:10:118:10 | x | -| captured_variables.rb:117:5:117:10 | middle [captured x] | captured_variables.rb:111:17:114:9 | -> { ... } [captured x] | -| captured_variables.rb:117:5:117:10 | middle [captured x] | captured_variables.rb:115:9:115:13 | inner [captured x] | -| captured_variables.rb:147:5:147:6 | [post] self [@x] | captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | -| captured_variables.rb:147:10:147:18 | call to taint | captured_variables.rb:147:5:147:6 | [post] self [@x] | -| captured_variables.rb:149:5:151:7 | &block [captured self, @x] | captured_variables.rb:154:14:154:15 | self [@x] | -| captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | captured_variables.rb:149:5:151:7 | &block [captured self, @x] | -| captured_variables.rb:154:14:154:15 | self [@x] | captured_variables.rb:154:14:154:15 | @x | -| captured_variables.rb:160:9:160:10 | [post] self [@x] | captured_variables.rb:174:1:174:24 | call to new [@x] | -| captured_variables.rb:160:14:160:22 | call to taint | captured_variables.rb:160:9:160:10 | [post] self [@x] | -| captured_variables.rb:163:5:165:7 | &block [captured self, @x] | captured_variables.rb:169:18:169:19 | self [@x] | -| captured_variables.rb:167:5:171:7 | self in baz [@x] | captured_variables.rb:168:18:170:11 | do ... end [captured self, @x] | -| captured_variables.rb:168:18:170:11 | do ... end [captured self, @x] | captured_variables.rb:163:5:165:7 | &block [captured self, @x] | -| captured_variables.rb:169:18:169:19 | self [@x] | captured_variables.rb:169:18:169:19 | @x | -| captured_variables.rb:174:1:174:24 | call to new [@x] | captured_variables.rb:167:5:171:7 | self in baz [@x] | -| captured_variables.rb:178:9:178:10 | [post] self [@x] | captured_variables.rb:193:1:193:1 | [post] c [@x] | -| captured_variables.rb:178:14:178:22 | call to taint | captured_variables.rb:178:9:178:10 | [post] self [@x] | -| captured_variables.rb:181:5:183:7 | &block [captured self, @x] | captured_variables.rb:187:18:187:19 | self [@x] | -| captured_variables.rb:185:5:189:7 | self in baz [@x] | captured_variables.rb:186:18:188:11 | do ... end [captured self, @x] | -| captured_variables.rb:186:18:188:11 | do ... end [captured self, @x] | captured_variables.rb:181:5:183:7 | &block [captured self, @x] | -| captured_variables.rb:187:18:187:19 | self [@x] | captured_variables.rb:187:18:187:19 | @x | -| captured_variables.rb:193:1:193:1 | [post] c [@x] | captured_variables.rb:194:1:194:1 | c [@x] | -| captured_variables.rb:194:1:194:1 | c [@x] | captured_variables.rb:185:5:189:7 | self in baz [@x] | -| instance_variables.rb:10:19:10:19 | x | instance_variables.rb:11:18:11:18 | x | -| instance_variables.rb:11:18:11:18 | x | instance_variables.rb:11:9:11:14 | [post] self [@field] | -| instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:16:14:21 | self [@field] | -| instance_variables.rb:14:16:14:21 | @field | instance_variables.rb:14:9:14:21 | return | -| instance_variables.rb:14:16:14:21 | self [@field] | instance_variables.rb:14:16:14:21 | @field | -| instance_variables.rb:16:5:18:7 | self in inc_field [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | -| instance_variables.rb:17:9:17:14 | [post] self [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | -| instance_variables.rb:19:5:19:8 | [post] self [@foo] | instance_variables.rb:20:10:20:13 | self [@foo] | -| instance_variables.rb:19:12:19:21 | call to taint | instance_variables.rb:19:5:19:8 | [post] self [@foo] | -| instance_variables.rb:20:10:20:13 | self [@foo] | instance_variables.rb:20:10:20:13 | @foo | -| instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:18:23:22 | field | -| instance_variables.rb:23:18:23:22 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | -| instance_variables.rb:24:9:24:17 | call to taint | instance_variables.rb:28:9:28:25 | call to initialize | -| instance_variables.rb:27:25:27:29 | field | instance_variables.rb:28:20:28:24 | field | -| instance_variables.rb:28:9:28:25 | call to initialize | instance_variables.rb:119:6:119:37 | call to call_initialize | -| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:22:20:22:24 | field | -| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:28:9:28:25 | [post] self [@field] | -| instance_variables.rb:31:18:31:18 | x | instance_variables.rb:33:13:33:13 | x | -| instance_variables.rb:32:13:32:21 | call to taint | instance_variables.rb:22:20:22:24 | field | -| instance_variables.rb:32:13:32:21 | call to taint | instance_variables.rb:48:20:48:20 | x | -| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:22:20:22:24 | field | -| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:33:9:33:14 | call to new [@field] | -| instance_variables.rb:36:10:36:23 | call to new [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:36:10:36:23 | call to new [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:36:10:36:23 | call to new [@field] | instance_variables.rb:36:10:36:33 | call to get_field | -| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:22:20:22:24 | field | -| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:36:10:36:23 | call to new [@field] | -| instance_variables.rb:39:6:39:23 | call to bar [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:39:6:39:23 | call to bar [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:39:6:39:23 | call to bar [@field] | instance_variables.rb:39:6:39:33 | call to get_field | -| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:31:18:31:18 | x | -| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:39:6:39:23 | call to bar [@field] | -| instance_variables.rb:43:9:43:17 | call to taint | instance_variables.rb:121:7:121:24 | call to new | -| instance_variables.rb:48:20:48:20 | x | instance_variables.rb:49:14:49:14 | x | -| instance_variables.rb:54:1:54:3 | [post] foo [@field] | instance_variables.rb:55:6:55:8 | foo [@field] | -| instance_variables.rb:54:15:54:23 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:54:1:54:3 | [post] foo [@field] | -| instance_variables.rb:55:6:55:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:55:6:55:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:55:6:55:8 | foo [@field] | instance_variables.rb:55:6:55:18 | call to get_field | -| instance_variables.rb:58:1:58:3 | [post] bar [@field] | instance_variables.rb:59:6:59:8 | bar [@field] | -| instance_variables.rb:58:15:58:22 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:58:1:58:3 | [post] bar [@field] | -| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:16:5:18:7 | self in inc_field [@field] | -| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:59:6:59:18 | call to inc_field | -| instance_variables.rb:62:1:62:4 | [post] foo1 [@field] | instance_variables.rb:63:6:63:9 | foo1 [@field] | -| instance_variables.rb:62:14:62:22 | call to taint | instance_variables.rb:62:1:62:4 | [post] foo1 [@field] | -| instance_variables.rb:63:6:63:9 | foo1 [@field] | instance_variables.rb:63:6:63:15 | call to field | -| instance_variables.rb:66:1:66:4 | [post] foo2 [@field] | instance_variables.rb:67:6:67:9 | foo2 [@field] | -| instance_variables.rb:66:14:66:22 | call to taint | instance_variables.rb:66:1:66:4 | [post] foo2 [@field] | -| instance_variables.rb:67:6:67:9 | foo2 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:67:6:67:19 | call to get_field | -| instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | instance_variables.rb:71:6:71:9 | foo3 [@field] | -| instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | instance_variables.rb:83:6:83:9 | foo3 [@field] | -| instance_variables.rb:70:16:70:24 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | -| instance_variables.rb:71:6:71:9 | foo3 [@field] | instance_variables.rb:71:6:71:15 | call to field | -| instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | instance_variables.rb:79:6:79:9 | foo5 [@field] | -| instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | instance_variables.rb:84:6:84:9 | foo5 [@field] | -| instance_variables.rb:78:18:78:26 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | -| instance_variables.rb:79:6:79:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:79:6:79:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:79:6:79:9 | foo5 [@field] | instance_variables.rb:79:6:79:19 | call to get_field | -| instance_variables.rb:82:15:82:18 | [post] foo6 [@field] | instance_variables.rb:85:6:85:9 | foo6 [@field] | -| instance_variables.rb:82:32:82:40 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:82:15:82:18 | [post] foo6 [@field] | -| instance_variables.rb:83:6:83:9 | foo3 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:83:6:83:9 | foo3 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:83:6:83:9 | foo3 [@field] | instance_variables.rb:83:6:83:19 | call to get_field | -| instance_variables.rb:84:6:84:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:84:6:84:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:84:6:84:9 | foo5 [@field] | instance_variables.rb:84:6:84:19 | call to get_field | -| instance_variables.rb:85:6:85:9 | foo6 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:85:6:85:9 | foo6 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:85:6:85:9 | foo6 [@field] | instance_variables.rb:85:6:85:19 | call to get_field | -| instance_variables.rb:89:15:89:18 | [post] foo7 [@field] | instance_variables.rb:90:6:90:9 | foo7 [@field] | -| instance_variables.rb:89:25:89:28 | [post] foo8 [@field] | instance_variables.rb:91:6:91:9 | foo8 [@field] | -| instance_variables.rb:89:45:89:53 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:15:89:18 | [post] foo7 [@field] | -| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:25:89:28 | [post] foo8 [@field] | -| instance_variables.rb:90:6:90:9 | foo7 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:90:6:90:9 | foo7 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:90:6:90:9 | foo7 [@field] | instance_variables.rb:90:6:90:19 | call to get_field | -| instance_variables.rb:91:6:91:9 | foo8 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:91:6:91:9 | foo8 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:91:6:91:9 | foo8 [@field] | instance_variables.rb:91:6:91:19 | call to get_field | -| instance_variables.rb:95:22:95:25 | [post] foo9 [@field] | instance_variables.rb:96:6:96:9 | foo9 [@field] | -| instance_variables.rb:95:32:95:36 | [post] foo10 [@field] | instance_variables.rb:97:6:97:10 | foo10 [@field] | -| instance_variables.rb:95:53:95:61 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:22:95:25 | [post] foo9 [@field] | -| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:32:95:36 | [post] foo10 [@field] | -| instance_variables.rb:96:6:96:9 | foo9 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:96:6:96:9 | foo9 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:96:6:96:9 | foo9 [@field] | instance_variables.rb:96:6:96:19 | call to get_field | -| instance_variables.rb:97:6:97:10 | foo10 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:97:6:97:10 | foo10 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:97:6:97:10 | foo10 [@field] | instance_variables.rb:97:6:97:20 | call to get_field | -| instance_variables.rb:100:5:100:5 | [post] x [@field] | instance_variables.rb:104:14:104:18 | [post] foo11 [@field] | -| instance_variables.rb:100:5:100:5 | [post] x [@field] | instance_variables.rb:108:15:108:19 | [post] foo12 [@field] | -| instance_variables.rb:100:5:100:5 | [post] x [@field] | instance_variables.rb:113:22:113:26 | [post] foo13 [@field] | -| instance_variables.rb:100:17:100:25 | call to taint | captured_variables.rb:57:19:57:19 | x | -| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:10:19:10:19 | x | -| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:100:5:100:5 | [post] x [@field] | -| instance_variables.rb:104:14:104:18 | [post] foo11 [@field] | instance_variables.rb:105:6:105:10 | foo11 [@field] | -| instance_variables.rb:105:6:105:10 | foo11 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:105:6:105:10 | foo11 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:105:6:105:10 | foo11 [@field] | instance_variables.rb:105:6:105:20 | call to get_field | -| instance_variables.rb:108:15:108:19 | [post] foo12 [@field] | instance_variables.rb:109:6:109:10 | foo12 [@field] | -| instance_variables.rb:109:6:109:10 | foo12 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:109:6:109:10 | foo12 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:109:6:109:10 | foo12 [@field] | instance_variables.rb:109:6:109:20 | call to get_field | -| instance_variables.rb:113:22:113:26 | [post] foo13 [@field] | instance_variables.rb:114:6:114:10 | foo13 [@field] | -| instance_variables.rb:114:6:114:10 | foo13 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:114:6:114:10 | foo13 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:114:6:114:10 | foo13 [@field] | instance_variables.rb:114:6:114:20 | call to get_field | -| instance_variables.rb:116:1:116:5 | foo15 [@field] | instance_variables.rb:117:6:117:10 | foo15 [@field] | -| instance_variables.rb:116:9:116:26 | call to new [@field] | instance_variables.rb:116:1:116:5 | foo15 [@field] | -| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:22:20:22:24 | field | -| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:116:9:116:26 | call to new [@field] | -| instance_variables.rb:117:6:117:10 | foo15 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:117:6:117:10 | foo15 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:117:6:117:10 | foo15 [@field] | instance_variables.rb:117:6:117:20 | call to get_field | -| instance_variables.rb:119:6:119:10 | [post] foo16 [@field] | instance_variables.rb:120:6:120:10 | foo16 [@field] | -| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:27:25:27:29 | field | -| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:119:6:119:10 | [post] foo16 [@field] | -| instance_variables.rb:120:6:120:10 | foo16 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | -| instance_variables.rb:120:6:120:10 | foo16 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | -| instance_variables.rb:120:6:120:10 | foo16 [@field] | instance_variables.rb:120:6:120:20 | call to get_field | -| instance_variables.rb:121:1:121:3 | bar | instance_variables.rb:122:6:122:8 | bar | -| instance_variables.rb:121:7:121:24 | call to new | instance_variables.rb:121:1:121:3 | bar | +| blocks.rb:14:12:14:20 | call to source | blocks.rb:8:10:8:14 | yield ... | provenance | | +| captured_variables.rb:9:24:9:24 | x | captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:9:24:9:24 | x | captured_variables.rb:11:5:11:6 | fn [captured x] | provenance | | +| captured_variables.rb:10:5:10:6 | fn [captured x] | captured_variables.rb:11:5:11:6 | fn [captured x] | provenance | | +| captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | captured_variables.rb:10:5:10:6 | fn [captured x] | provenance | | +| captured_variables.rb:11:5:11:6 | fn [captured x] | captured_variables.rb:10:20:10:20 | x | provenance | | +| captured_variables.rb:13:20:13:29 | call to taint | captured_variables.rb:9:24:9:24 | x | provenance | | +| captured_variables.rb:15:28:15:28 | x | captured_variables.rb:16:5:18:5 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:20:1:20:35 | ( ... ) [captured x] | captured_variables.rb:17:14:17:14 | x | provenance | | +| captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] | captured_variables.rb:20:1:20:35 | ( ... ) [captured x] | provenance | | +| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:15:28:15:28 | x | provenance | | +| captured_variables.rb:20:25:20:34 | call to taint | captured_variables.rb:20:2:20:34 | call to capture_escape_return1 [captured x] | provenance | | +| captured_variables.rb:22:28:22:28 | x | captured_variables.rb:23:5:25:5 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | captured_variables.rb:24:14:24:14 | x | provenance | | +| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:22:28:22:28 | x | provenance | | +| captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | provenance | | +| captured_variables.rb:29:33:29:33 | x | captured_variables.rb:30:10:32:5 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:29:33:29:33 | x | captured_variables.rb:33:29:33:30 | fn [captured x] | provenance | | +| captured_variables.rb:30:5:30:6 | fn [captured x] | captured_variables.rb:33:29:33:30 | fn [captured x] | provenance | | +| captured_variables.rb:30:10:32:5 | -> { ... } [captured x] | captured_variables.rb:30:5:30:6 | fn [captured x] | provenance | | +| captured_variables.rb:33:29:33:30 | fn [captured x] | captured_variables.rb:31:14:31:14 | x | provenance | | +| captured_variables.rb:35:29:35:38 | call to taint | captured_variables.rb:29:33:29:33 | x | provenance | | +| captured_variables.rb:37:13:37:14 | fn [captured x] | captured_variables.rb:38:5:38:6 | fn [captured x] | provenance | | +| captured_variables.rb:38:5:38:6 | fn [captured x] | captured_variables.rb:42:14:42:14 | x | provenance | | +| captured_variables.rb:40:31:40:31 | x | captured_variables.rb:41:10:43:5 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:40:31:40:31 | x | captured_variables.rb:44:13:44:14 | fn [captured x] | provenance | | +| captured_variables.rb:41:5:41:6 | fn [captured x] | captured_variables.rb:44:13:44:14 | fn [captured x] | provenance | | +| captured_variables.rb:41:10:43:5 | -> { ... } [captured x] | captured_variables.rb:41:5:41:6 | fn [captured x] | provenance | | +| captured_variables.rb:44:13:44:14 | fn [captured x] | captured_variables.rb:37:13:37:14 | fn [captured x] | provenance | | +| captured_variables.rb:46:27:46:36 | call to taint | captured_variables.rb:40:31:40:31 | x | provenance | | +| captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:49:16:52:3 | do ... end [captured x] | provenance | | +| captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:54:6:54:6 | x | provenance | | +| captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | captured_variables.rb:54:6:54:6 | x | provenance | | +| captured_variables.rb:49:16:52:3 | do ... end [captured x] | captured_variables.rb:50:10:50:10 | x | provenance | | +| captured_variables.rb:51:9:51:16 | call to taint | captured_variables.rb:49:16:52:3 | [post] do ... end [captured x] | provenance | | +| captured_variables.rb:57:19:57:19 | x | captured_variables.rb:58:18:58:18 | x | provenance | | +| captured_variables.rb:58:18:58:18 | x | captured_variables.rb:58:9:58:14 | [post] self [@field] | provenance | | +| captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:16:61:21 | self [@field] | provenance | | +| captured_variables.rb:61:16:61:21 | @field | captured_variables.rb:61:9:61:21 | return | provenance | | +| captured_variables.rb:61:16:61:21 | self [@field] | captured_variables.rb:61:16:61:21 | @field | provenance | | +| captured_variables.rb:66:1:66:3 | [post] foo [@field] | captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | provenance | | +| captured_variables.rb:66:1:66:3 | [post] foo [@field] | captured_variables.rb:72:6:72:8 | foo [@field] | provenance | | +| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| captured_variables.rb:66:15:66:22 | call to taint | captured_variables.rb:66:1:66:3 | [post] foo [@field] | provenance | | +| captured_variables.rb:66:15:66:22 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | captured_variables.rb:72:6:72:8 | foo [@field] | provenance | | +| captured_variables.rb:67:16:70:3 | do ... end [captured foo, @field] | captured_variables.rb:68:10:68:12 | foo [@field] | provenance | | +| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| captured_variables.rb:68:10:68:12 | foo [@field] | captured_variables.rb:68:10:68:22 | call to get_field | provenance | | +| captured_variables.rb:68:10:68:12 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| captured_variables.rb:69:5:69:7 | [post] foo [@field] | captured_variables.rb:67:16:70:3 | [post] do ... end [captured foo, @field] | provenance | | +| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| captured_variables.rb:69:19:69:26 | call to taint | captured_variables.rb:69:5:69:7 | [post] foo [@field] | provenance | | +| captured_variables.rb:69:19:69:26 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| captured_variables.rb:72:6:72:8 | foo [@field] | captured_variables.rb:72:6:72:18 | call to get_field | provenance | | +| captured_variables.rb:72:6:72:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | captured_variables.rb:83:6:83:8 | foo [@field] | provenance | | +| captured_variables.rb:79:9:79:11 | [post] foo [@field] | captured_variables.rb:78:20:80:7 | [post] do ... end [captured foo, @field] | provenance | | +| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| captured_variables.rb:79:23:79:30 | call to taint | captured_variables.rb:79:9:79:11 | [post] foo [@field] | provenance | | +| captured_variables.rb:79:23:79:30 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:83:6:83:18 | call to get_field | provenance | | +| captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:86:6:89:1 | -> { ... } [captured y] | provenance | | +| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:90:1:90:2 | fn [captured y] | provenance | | +| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:91:6:91:6 | y | provenance | | +| captured_variables.rb:86:1:86:2 | fn [captured y] | captured_variables.rb:90:1:90:2 | fn [captured y] | provenance | | +| captured_variables.rb:86:6:89:1 | -> { ... } [captured y] | captured_variables.rb:86:1:86:2 | fn [captured y] | provenance | | +| captured_variables.rb:88:9:88:16 | call to taint | captured_variables.rb:90:1:90:2 | [post] fn [captured y] | provenance | | +| captured_variables.rb:90:1:90:2 | [post] fn [captured y] | captured_variables.rb:91:6:91:6 | y | provenance | | +| captured_variables.rb:90:1:90:2 | fn [captured y] | captured_variables.rb:87:10:87:10 | y | provenance | | +| captured_variables.rb:93:17:93:17 | x | captured_variables.rb:94:5:96:5 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | captured_variables.rb:95:14:95:14 | x | provenance | | +| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:93:17:93:17 | x | provenance | | +| captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | provenance | | +| captured_variables.rb:100:21:100:21 | x | captured_variables.rb:101:11:101:11 | x | provenance | | +| captured_variables.rb:101:11:101:11 | x | captured_variables.rb:104:31:104:31 | x | provenance | | +| captured_variables.rb:104:17:104:24 | call to taint | captured_variables.rb:100:21:100:21 | x | provenance | | +| captured_variables.rb:104:31:104:31 | x | captured_variables.rb:105:10:105:10 | x | provenance | | +| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:110:14:116:5 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:117:5:117:10 | middle [captured x] | provenance | | +| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:118:10:118:10 | x | provenance | | +| captured_variables.rb:110:5:110:10 | middle [captured x] | captured_variables.rb:117:5:117:10 | middle [captured x] | provenance | | +| captured_variables.rb:110:14:116:5 | -> { ... } [captured x] | captured_variables.rb:110:5:110:10 | middle [captured x] | provenance | | +| captured_variables.rb:111:9:111:13 | inner [captured x] | captured_variables.rb:115:9:115:13 | inner [captured x] | provenance | | +| captured_variables.rb:111:17:114:9 | -> { ... } [captured x] | captured_variables.rb:111:9:111:13 | inner [captured x] | provenance | | +| captured_variables.rb:113:17:113:25 | call to taint | captured_variables.rb:115:9:115:13 | [post] inner [captured x] | provenance | | +| captured_variables.rb:115:9:115:13 | [post] inner [captured x] | captured_variables.rb:117:5:117:10 | [post] middle [captured x] | provenance | | +| captured_variables.rb:115:9:115:13 | inner [captured x] | captured_variables.rb:112:18:112:18 | x | provenance | | +| captured_variables.rb:117:5:117:10 | [post] middle [captured x] | captured_variables.rb:118:10:118:10 | x | provenance | | +| captured_variables.rb:117:5:117:10 | middle [captured x] | captured_variables.rb:111:17:114:9 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:117:5:117:10 | middle [captured x] | captured_variables.rb:115:9:115:13 | inner [captured x] | provenance | | +| captured_variables.rb:147:5:147:6 | [post] self [@x] | captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | provenance | | +| captured_variables.rb:147:10:147:18 | call to taint | captured_variables.rb:147:5:147:6 | [post] self [@x] | provenance | | +| captured_variables.rb:149:5:151:7 | &block [captured self, @x] | captured_variables.rb:154:14:154:15 | self [@x] | provenance | | +| captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | captured_variables.rb:149:5:151:7 | &block [captured self, @x] | provenance | | +| captured_variables.rb:154:14:154:15 | self [@x] | captured_variables.rb:154:14:154:15 | @x | provenance | | +| captured_variables.rb:160:9:160:10 | [post] self [@x] | captured_variables.rb:174:1:174:24 | call to new [@x] | provenance | | +| captured_variables.rb:160:14:160:22 | call to taint | captured_variables.rb:160:9:160:10 | [post] self [@x] | provenance | | +| captured_variables.rb:163:5:165:7 | &block [captured self, @x] | captured_variables.rb:169:18:169:19 | self [@x] | provenance | | +| captured_variables.rb:167:5:171:7 | self in baz [@x] | captured_variables.rb:168:18:170:11 | do ... end [captured self, @x] | provenance | | +| captured_variables.rb:168:18:170:11 | do ... end [captured self, @x] | captured_variables.rb:163:5:165:7 | &block [captured self, @x] | provenance | | +| captured_variables.rb:169:18:169:19 | self [@x] | captured_variables.rb:169:18:169:19 | @x | provenance | | +| captured_variables.rb:174:1:174:24 | call to new [@x] | captured_variables.rb:167:5:171:7 | self in baz [@x] | provenance | | +| captured_variables.rb:178:9:178:10 | [post] self [@x] | captured_variables.rb:193:1:193:1 | [post] c [@x] | provenance | | +| captured_variables.rb:178:14:178:22 | call to taint | captured_variables.rb:178:9:178:10 | [post] self [@x] | provenance | | +| captured_variables.rb:181:5:183:7 | &block [captured self, @x] | captured_variables.rb:187:18:187:19 | self [@x] | provenance | | +| captured_variables.rb:185:5:189:7 | self in baz [@x] | captured_variables.rb:186:18:188:11 | do ... end [captured self, @x] | provenance | | +| captured_variables.rb:186:18:188:11 | do ... end [captured self, @x] | captured_variables.rb:181:5:183:7 | &block [captured self, @x] | provenance | | +| captured_variables.rb:187:18:187:19 | self [@x] | captured_variables.rb:187:18:187:19 | @x | provenance | | +| captured_variables.rb:193:1:193:1 | [post] c [@x] | captured_variables.rb:194:1:194:1 | c [@x] | provenance | | +| captured_variables.rb:194:1:194:1 | c [@x] | captured_variables.rb:185:5:189:7 | self in baz [@x] | provenance | | +| captured_variables.rb:197:9:197:17 | call to taint | captured_variables.rb:199:10:199:10 | x | provenance | | +| captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:208:14:208:14 | x | provenance | | +| instance_variables.rb:10:19:10:19 | x | instance_variables.rb:11:18:11:18 | x | provenance | | +| instance_variables.rb:11:18:11:18 | x | instance_variables.rb:11:9:11:14 | [post] self [@field] | provenance | | +| instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:16:14:21 | self [@field] | provenance | | +| instance_variables.rb:14:16:14:21 | @field | instance_variables.rb:14:9:14:21 | return | provenance | | +| instance_variables.rb:14:16:14:21 | self [@field] | instance_variables.rb:14:16:14:21 | @field | provenance | | +| instance_variables.rb:16:5:18:7 | self in inc_field [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | provenance | | +| instance_variables.rb:17:9:17:14 | [post] self [@field] | instance_variables.rb:17:9:17:14 | [post] self [@field] | provenance | | +| instance_variables.rb:19:5:19:8 | [post] self [@foo] | instance_variables.rb:20:10:20:13 | self [@foo] | provenance | | +| instance_variables.rb:19:12:19:21 | call to taint | instance_variables.rb:19:5:19:8 | [post] self [@foo] | provenance | | +| instance_variables.rb:20:10:20:13 | self [@foo] | instance_variables.rb:20:10:20:13 | @foo | provenance | | +| instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:18:23:22 | field | provenance | | +| instance_variables.rb:23:18:23:22 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | provenance | | +| instance_variables.rb:24:9:24:17 | call to taint | instance_variables.rb:28:9:28:25 | call to initialize | provenance | | +| instance_variables.rb:27:25:27:29 | field | instance_variables.rb:28:20:28:24 | field | provenance | | +| instance_variables.rb:28:9:28:25 | call to initialize | instance_variables.rb:119:6:119:37 | call to call_initialize | provenance | | +| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:22:20:22:24 | field | provenance | | +| instance_variables.rb:28:20:28:24 | field | instance_variables.rb:28:9:28:25 | [post] self [@field] | provenance | | +| instance_variables.rb:31:18:31:18 | x | instance_variables.rb:33:13:33:13 | x | provenance | | +| instance_variables.rb:32:13:32:21 | call to taint | instance_variables.rb:22:20:22:24 | field | provenance | | +| instance_variables.rb:32:13:32:21 | call to taint | instance_variables.rb:48:20:48:20 | x | provenance | | +| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:22:20:22:24 | field | provenance | | +| instance_variables.rb:33:13:33:13 | x | instance_variables.rb:33:9:33:14 | call to new [@field] | provenance | | +| instance_variables.rb:36:10:36:23 | call to new [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:36:10:36:23 | call to new [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:36:10:36:23 | call to new [@field] | instance_variables.rb:36:10:36:33 | call to get_field | provenance | | +| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:22:20:22:24 | field | provenance | | +| instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:36:10:36:23 | call to new [@field] | provenance | | +| instance_variables.rb:39:6:39:23 | call to bar [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:39:6:39:23 | call to bar [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:39:6:39:23 | call to bar [@field] | instance_variables.rb:39:6:39:33 | call to get_field | provenance | | +| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:31:18:31:18 | x | provenance | | +| instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:39:6:39:23 | call to bar [@field] | provenance | | +| instance_variables.rb:43:9:43:17 | call to taint | instance_variables.rb:121:7:121:24 | call to new | provenance | | +| instance_variables.rb:48:20:48:20 | x | instance_variables.rb:49:14:49:14 | x | provenance | | +| instance_variables.rb:54:1:54:3 | [post] foo [@field] | instance_variables.rb:55:6:55:8 | foo [@field] | provenance | | +| instance_variables.rb:54:15:54:23 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:54:15:54:23 | call to taint | instance_variables.rb:54:1:54:3 | [post] foo [@field] | provenance | | +| instance_variables.rb:55:6:55:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:55:6:55:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:55:6:55:8 | foo [@field] | instance_variables.rb:55:6:55:18 | call to get_field | provenance | | +| instance_variables.rb:58:1:58:3 | [post] bar [@field] | instance_variables.rb:59:6:59:8 | bar [@field] | provenance | | +| instance_variables.rb:58:15:58:22 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:58:15:58:22 | call to taint | instance_variables.rb:58:1:58:3 | [post] bar [@field] | provenance | | +| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:16:5:18:7 | self in inc_field [@field] | provenance | | +| instance_variables.rb:59:6:59:8 | bar [@field] | instance_variables.rb:59:6:59:18 | call to inc_field | provenance | | +| instance_variables.rb:62:1:62:4 | [post] foo1 [@field] | instance_variables.rb:63:6:63:9 | foo1 [@field] | provenance | | +| instance_variables.rb:62:14:62:22 | call to taint | instance_variables.rb:62:1:62:4 | [post] foo1 [@field] | provenance | | +| instance_variables.rb:63:6:63:9 | foo1 [@field] | instance_variables.rb:63:6:63:15 | call to field | provenance | | +| instance_variables.rb:66:1:66:4 | [post] foo2 [@field] | instance_variables.rb:67:6:67:9 | foo2 [@field] | provenance | | +| instance_variables.rb:66:14:66:22 | call to taint | instance_variables.rb:66:1:66:4 | [post] foo2 [@field] | provenance | | +| instance_variables.rb:67:6:67:9 | foo2 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:67:6:67:9 | foo2 [@field] | instance_variables.rb:67:6:67:19 | call to get_field | provenance | | +| instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | instance_variables.rb:71:6:71:9 | foo3 [@field] | provenance | | +| instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | instance_variables.rb:83:6:83:9 | foo3 [@field] | provenance | | +| instance_variables.rb:70:16:70:24 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:70:16:70:24 | call to taint | instance_variables.rb:70:1:70:4 | [post] foo3 [@field] | provenance | | +| instance_variables.rb:71:6:71:9 | foo3 [@field] | instance_variables.rb:71:6:71:15 | call to field | provenance | | +| instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | instance_variables.rb:79:6:79:9 | foo5 [@field] | provenance | | +| instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | instance_variables.rb:84:6:84:9 | foo5 [@field] | provenance | | +| instance_variables.rb:78:18:78:26 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:78:18:78:26 | call to taint | instance_variables.rb:78:2:78:5 | [post] foo5 [@field] | provenance | | +| instance_variables.rb:79:6:79:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:79:6:79:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:79:6:79:9 | foo5 [@field] | instance_variables.rb:79:6:79:19 | call to get_field | provenance | | +| instance_variables.rb:82:15:82:18 | [post] foo6 [@field] | instance_variables.rb:85:6:85:9 | foo6 [@field] | provenance | | +| instance_variables.rb:82:32:82:40 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:82:32:82:40 | call to taint | instance_variables.rb:82:15:82:18 | [post] foo6 [@field] | provenance | | +| instance_variables.rb:83:6:83:9 | foo3 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:83:6:83:9 | foo3 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:83:6:83:9 | foo3 [@field] | instance_variables.rb:83:6:83:19 | call to get_field | provenance | | +| instance_variables.rb:84:6:84:9 | foo5 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:84:6:84:9 | foo5 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:84:6:84:9 | foo5 [@field] | instance_variables.rb:84:6:84:19 | call to get_field | provenance | | +| instance_variables.rb:85:6:85:9 | foo6 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:85:6:85:9 | foo6 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:85:6:85:9 | foo6 [@field] | instance_variables.rb:85:6:85:19 | call to get_field | provenance | | +| instance_variables.rb:89:15:89:18 | [post] foo7 [@field] | instance_variables.rb:90:6:90:9 | foo7 [@field] | provenance | | +| instance_variables.rb:89:25:89:28 | [post] foo8 [@field] | instance_variables.rb:91:6:91:9 | foo8 [@field] | provenance | | +| instance_variables.rb:89:45:89:53 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:15:89:18 | [post] foo7 [@field] | provenance | | +| instance_variables.rb:89:45:89:53 | call to taint | instance_variables.rb:89:25:89:28 | [post] foo8 [@field] | provenance | | +| instance_variables.rb:90:6:90:9 | foo7 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:90:6:90:9 | foo7 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:90:6:90:9 | foo7 [@field] | instance_variables.rb:90:6:90:19 | call to get_field | provenance | | +| instance_variables.rb:91:6:91:9 | foo8 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:91:6:91:9 | foo8 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:91:6:91:9 | foo8 [@field] | instance_variables.rb:91:6:91:19 | call to get_field | provenance | | +| instance_variables.rb:95:22:95:25 | [post] foo9 [@field] | instance_variables.rb:96:6:96:9 | foo9 [@field] | provenance | | +| instance_variables.rb:95:32:95:36 | [post] foo10 [@field] | instance_variables.rb:97:6:97:10 | foo10 [@field] | provenance | | +| instance_variables.rb:95:53:95:61 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:22:95:25 | [post] foo9 [@field] | provenance | | +| instance_variables.rb:95:53:95:61 | call to taint | instance_variables.rb:95:32:95:36 | [post] foo10 [@field] | provenance | | +| instance_variables.rb:96:6:96:9 | foo9 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:96:6:96:9 | foo9 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:96:6:96:9 | foo9 [@field] | instance_variables.rb:96:6:96:19 | call to get_field | provenance | | +| instance_variables.rb:97:6:97:10 | foo10 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:97:6:97:10 | foo10 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:97:6:97:10 | foo10 [@field] | instance_variables.rb:97:6:97:20 | call to get_field | provenance | | +| instance_variables.rb:100:5:100:5 | [post] x [@field] | instance_variables.rb:104:14:104:18 | [post] foo11 [@field] | provenance | | +| instance_variables.rb:100:5:100:5 | [post] x [@field] | instance_variables.rb:108:15:108:19 | [post] foo12 [@field] | provenance | | +| instance_variables.rb:100:5:100:5 | [post] x [@field] | instance_variables.rb:113:22:113:26 | [post] foo13 [@field] | provenance | | +| instance_variables.rb:100:17:100:25 | call to taint | captured_variables.rb:57:19:57:19 | x | provenance | | +| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:10:19:10:19 | x | provenance | | +| instance_variables.rb:100:17:100:25 | call to taint | instance_variables.rb:100:5:100:5 | [post] x [@field] | provenance | | +| instance_variables.rb:104:14:104:18 | [post] foo11 [@field] | instance_variables.rb:105:6:105:10 | foo11 [@field] | provenance | | +| instance_variables.rb:105:6:105:10 | foo11 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:105:6:105:10 | foo11 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:105:6:105:10 | foo11 [@field] | instance_variables.rb:105:6:105:20 | call to get_field | provenance | | +| instance_variables.rb:108:15:108:19 | [post] foo12 [@field] | instance_variables.rb:109:6:109:10 | foo12 [@field] | provenance | | +| instance_variables.rb:109:6:109:10 | foo12 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:109:6:109:10 | foo12 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:109:6:109:10 | foo12 [@field] | instance_variables.rb:109:6:109:20 | call to get_field | provenance | | +| instance_variables.rb:113:22:113:26 | [post] foo13 [@field] | instance_variables.rb:114:6:114:10 | foo13 [@field] | provenance | | +| instance_variables.rb:114:6:114:10 | foo13 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:114:6:114:10 | foo13 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:114:6:114:10 | foo13 [@field] | instance_variables.rb:114:6:114:20 | call to get_field | provenance | | +| instance_variables.rb:116:1:116:5 | foo15 [@field] | instance_variables.rb:117:6:117:10 | foo15 [@field] | provenance | | +| instance_variables.rb:116:9:116:26 | call to new [@field] | instance_variables.rb:116:1:116:5 | foo15 [@field] | provenance | | +| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:22:20:22:24 | field | provenance | | +| instance_variables.rb:116:17:116:25 | call to taint | instance_variables.rb:116:9:116:26 | call to new [@field] | provenance | | +| instance_variables.rb:117:6:117:10 | foo15 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:117:6:117:10 | foo15 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:117:6:117:10 | foo15 [@field] | instance_variables.rb:117:6:117:20 | call to get_field | provenance | | +| instance_variables.rb:119:6:119:10 | [post] foo16 [@field] | instance_variables.rb:120:6:120:10 | foo16 [@field] | provenance | | +| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:27:25:27:29 | field | provenance | | +| instance_variables.rb:119:28:119:36 | call to taint | instance_variables.rb:119:6:119:10 | [post] foo16 [@field] | provenance | | +| instance_variables.rb:120:6:120:10 | foo16 [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:120:6:120:10 | foo16 [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | +| instance_variables.rb:120:6:120:10 | foo16 [@field] | instance_variables.rb:120:6:120:20 | call to get_field | provenance | | +| instance_variables.rb:121:1:121:3 | bar | instance_variables.rb:122:6:122:8 | bar | provenance | | +| instance_variables.rb:121:7:121:24 | call to new | instance_variables.rb:121:1:121:3 | bar | provenance | | nodes | blocks.rb:8:10:8:14 | yield ... | semmle.label | yield ... | | blocks.rb:14:12:14:20 | call to source | semmle.label | call to source | @@ -368,6 +370,10 @@ nodes | captured_variables.rb:187:18:187:19 | self [@x] | semmle.label | self [@x] | | captured_variables.rb:193:1:193:1 | [post] c [@x] | semmle.label | [post] c [@x] | | captured_variables.rb:194:1:194:1 | c [@x] | semmle.label | c [@x] | +| captured_variables.rb:197:9:197:17 | call to taint | semmle.label | call to taint | +| captured_variables.rb:199:10:199:10 | x | semmle.label | x | +| captured_variables.rb:206:13:206:21 | call to taint | semmle.label | call to taint | +| captured_variables.rb:208:14:208:14 | x | semmle.label | x | | instance_variables.rb:10:19:10:19 | x | semmle.label | x | | instance_variables.rb:11:9:11:14 | [post] self [@field] | semmle.label | [post] self [@field] | | instance_variables.rb:11:18:11:18 | x | semmle.label | x | @@ -575,6 +581,8 @@ subpaths | captured_variables.rb:154:14:154:15 | @x | captured_variables.rb:147:10:147:18 | call to taint | captured_variables.rb:154:14:154:15 | @x | $@ | captured_variables.rb:147:10:147:18 | call to taint | call to taint | | captured_variables.rb:169:18:169:19 | @x | captured_variables.rb:160:14:160:22 | call to taint | captured_variables.rb:169:18:169:19 | @x | $@ | captured_variables.rb:160:14:160:22 | call to taint | call to taint | | captured_variables.rb:187:18:187:19 | @x | captured_variables.rb:178:14:178:22 | call to taint | captured_variables.rb:187:18:187:19 | @x | $@ | captured_variables.rb:178:14:178:22 | call to taint | call to taint | +| captured_variables.rb:199:10:199:10 | x | captured_variables.rb:197:9:197:17 | call to taint | captured_variables.rb:199:10:199:10 | x | $@ | captured_variables.rb:197:9:197:17 | call to taint | call to taint | +| captured_variables.rb:208:14:208:14 | x | captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:208:14:208:14 | x | $@ | captured_variables.rb:206:13:206:21 | call to taint | call to taint | | instance_variables.rb:20:10:20:13 | @foo | instance_variables.rb:19:12:19:21 | call to taint | instance_variables.rb:20:10:20:13 | @foo | $@ | instance_variables.rb:19:12:19:21 | call to taint | call to taint | | instance_variables.rb:36:10:36:33 | call to get_field | instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:36:10:36:33 | call to get_field | $@ | instance_variables.rb:36:14:36:22 | call to taint | call to taint | | instance_variables.rb:39:6:39:33 | call to get_field | instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:39:6:39:33 | call to get_field | $@ | instance_variables.rb:39:14:39:22 | call to taint | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb b/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb index e0ecc1da2c5f..63e2188fcee8 100644 --- a/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb +++ b/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb @@ -192,3 +192,25 @@ def baz c = CaptureInstanceSelf2.new c.foo c.baz + +class CaptureOverwrite + x = taint(16) + + sink(x) # $ hasValueFlow=16 + + x = nil + + sink(x) + + fn = -> { + x = taint(17) + + sink(x) # $ hasValueFlow=17 + + x = nil + + sink(x) + } + + fn.call() +end diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected index 00372d87e00a..df37ffac47a0 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected @@ -1,981 +1,981 @@ testFailures edges -| hash_flow.rb:10:5:10:8 | hash [element 0] | hash_flow.rb:30:10:30:13 | hash [element 0] | -| hash_flow.rb:10:5:10:8 | hash [element :a] | hash_flow.rb:22:10:22:13 | hash [element :a] | -| hash_flow.rb:10:5:10:8 | hash [element :c] | hash_flow.rb:24:10:24:13 | hash [element :c] | -| hash_flow.rb:10:5:10:8 | hash [element e] | hash_flow.rb:26:10:26:13 | hash [element e] | -| hash_flow.rb:10:5:10:8 | hash [element g] | hash_flow.rb:28:10:28:13 | hash [element g] | -| hash_flow.rb:11:15:11:24 | call to taint | hash_flow.rb:10:5:10:8 | hash [element :a] | -| hash_flow.rb:13:12:13:21 | call to taint | hash_flow.rb:10:5:10:8 | hash [element :c] | -| hash_flow.rb:15:14:15:23 | call to taint | hash_flow.rb:10:5:10:8 | hash [element e] | -| hash_flow.rb:17:16:17:25 | call to taint | hash_flow.rb:10:5:10:8 | hash [element g] | -| hash_flow.rb:19:14:19:23 | call to taint | hash_flow.rb:10:5:10:8 | hash [element 0] | -| hash_flow.rb:22:10:22:13 | hash [element :a] | hash_flow.rb:22:10:22:17 | ...[...] | -| hash_flow.rb:24:10:24:13 | hash [element :c] | hash_flow.rb:24:10:24:17 | ...[...] | -| hash_flow.rb:26:10:26:13 | hash [element e] | hash_flow.rb:26:10:26:18 | ...[...] | -| hash_flow.rb:28:10:28:13 | hash [element g] | hash_flow.rb:28:10:28:18 | ...[...] | -| hash_flow.rb:30:10:30:13 | hash [element 0] | hash_flow.rb:30:10:30:16 | ...[...] | -| hash_flow.rb:38:5:38:8 | [post] hash [element 0] | hash_flow.rb:39:5:39:8 | hash [element 0] | -| hash_flow.rb:38:15:38:24 | call to taint | hash_flow.rb:38:5:38:8 | [post] hash [element 0] | -| hash_flow.rb:39:5:39:8 | [post] hash [element 0] | hash_flow.rb:40:5:40:8 | hash [element 0] | -| hash_flow.rb:39:5:39:8 | hash [element 0] | hash_flow.rb:39:5:39:8 | [post] hash [element 0] | -| hash_flow.rb:40:5:40:8 | [post] hash [element 0] | hash_flow.rb:41:5:41:8 | hash [element 0] | -| hash_flow.rb:40:5:40:8 | [post] hash [element :a] | hash_flow.rb:41:5:41:8 | hash [element :a] | -| hash_flow.rb:40:5:40:8 | hash [element 0] | hash_flow.rb:40:5:40:8 | [post] hash [element 0] | -| hash_flow.rb:40:16:40:25 | call to taint | hash_flow.rb:40:5:40:8 | [post] hash [element :a] | -| hash_flow.rb:41:5:41:8 | [post] hash [element 0] | hash_flow.rb:42:5:42:8 | hash [element 0] | -| hash_flow.rb:41:5:41:8 | [post] hash [element :a] | hash_flow.rb:42:5:42:8 | hash [element :a] | -| hash_flow.rb:41:5:41:8 | hash [element 0] | hash_flow.rb:41:5:41:8 | [post] hash [element 0] | -| hash_flow.rb:41:5:41:8 | hash [element :a] | hash_flow.rb:41:5:41:8 | [post] hash [element :a] | -| hash_flow.rb:42:5:42:8 | [post] hash [element 0] | hash_flow.rb:43:5:43:8 | hash [element 0] | -| hash_flow.rb:42:5:42:8 | [post] hash [element :a] | hash_flow.rb:43:5:43:8 | hash [element :a] | -| hash_flow.rb:42:5:42:8 | [post] hash [element a] | hash_flow.rb:43:5:43:8 | hash [element a] | -| hash_flow.rb:42:5:42:8 | hash [element 0] | hash_flow.rb:42:5:42:8 | [post] hash [element 0] | -| hash_flow.rb:42:5:42:8 | hash [element :a] | hash_flow.rb:42:5:42:8 | [post] hash [element :a] | -| hash_flow.rb:42:17:42:26 | call to taint | hash_flow.rb:42:5:42:8 | [post] hash [element a] | -| hash_flow.rb:43:5:43:8 | [post] hash [element 0] | hash_flow.rb:44:10:44:13 | hash [element 0] | -| hash_flow.rb:43:5:43:8 | [post] hash [element :a] | hash_flow.rb:46:10:46:13 | hash [element :a] | -| hash_flow.rb:43:5:43:8 | [post] hash [element a] | hash_flow.rb:48:10:48:13 | hash [element a] | -| hash_flow.rb:43:5:43:8 | hash [element 0] | hash_flow.rb:43:5:43:8 | [post] hash [element 0] | -| hash_flow.rb:43:5:43:8 | hash [element :a] | hash_flow.rb:43:5:43:8 | [post] hash [element :a] | -| hash_flow.rb:43:5:43:8 | hash [element a] | hash_flow.rb:43:5:43:8 | [post] hash [element a] | -| hash_flow.rb:44:10:44:13 | hash [element 0] | hash_flow.rb:44:10:44:16 | ...[...] | -| hash_flow.rb:46:10:46:13 | hash [element :a] | hash_flow.rb:46:10:46:17 | ...[...] | -| hash_flow.rb:48:10:48:13 | hash [element a] | hash_flow.rb:48:10:48:18 | ...[...] | -| hash_flow.rb:55:5:55:9 | hash1 [element :a] | hash_flow.rb:56:10:56:14 | hash1 [element :a] | -| hash_flow.rb:55:13:55:37 | ...[...] [element :a] | hash_flow.rb:55:5:55:9 | hash1 [element :a] | -| hash_flow.rb:55:21:55:30 | call to taint | hash_flow.rb:55:13:55:37 | ...[...] [element :a] | -| hash_flow.rb:56:10:56:14 | hash1 [element :a] | hash_flow.rb:56:10:56:18 | ...[...] | -| hash_flow.rb:59:5:59:5 | x [element :a] | hash_flow.rb:60:18:60:18 | x [element :a] | -| hash_flow.rb:59:13:59:22 | call to taint | hash_flow.rb:59:5:59:5 | x [element :a] | -| hash_flow.rb:60:5:60:9 | hash2 [element :a] | hash_flow.rb:61:10:61:14 | hash2 [element :a] | -| hash_flow.rb:60:13:60:19 | ...[...] [element :a] | hash_flow.rb:60:5:60:9 | hash2 [element :a] | -| hash_flow.rb:60:18:60:18 | x [element :a] | hash_flow.rb:60:13:60:19 | ...[...] [element :a] | -| hash_flow.rb:61:10:61:14 | hash2 [element :a] | hash_flow.rb:61:10:61:18 | ...[...] | -| hash_flow.rb:64:5:64:9 | hash3 [element] | hash_flow.rb:65:10:65:14 | hash3 [element] | -| hash_flow.rb:64:5:64:9 | hash3 [element] | hash_flow.rb:66:10:66:14 | hash3 [element] | -| hash_flow.rb:64:13:64:45 | ...[...] [element] | hash_flow.rb:64:5:64:9 | hash3 [element] | -| hash_flow.rb:64:24:64:33 | call to taint | hash_flow.rb:64:13:64:45 | ...[...] [element] | -| hash_flow.rb:65:10:65:14 | hash3 [element] | hash_flow.rb:65:10:65:18 | ...[...] | -| hash_flow.rb:66:10:66:14 | hash3 [element] | hash_flow.rb:66:10:66:18 | ...[...] | -| hash_flow.rb:68:5:68:9 | hash4 [element :a] | hash_flow.rb:69:10:69:14 | hash4 [element :a] | -| hash_flow.rb:68:13:68:39 | ...[...] [element :a] | hash_flow.rb:68:5:68:9 | hash4 [element :a] | -| hash_flow.rb:68:22:68:31 | call to taint | hash_flow.rb:68:13:68:39 | ...[...] [element :a] | -| hash_flow.rb:69:10:69:14 | hash4 [element :a] | hash_flow.rb:69:10:69:18 | ...[...] | -| hash_flow.rb:72:5:72:9 | hash5 [element a] | hash_flow.rb:73:10:73:14 | hash5 [element a] | -| hash_flow.rb:72:13:72:45 | ...[...] [element a] | hash_flow.rb:72:5:72:9 | hash5 [element a] | -| hash_flow.rb:72:25:72:34 | call to taint | hash_flow.rb:72:13:72:45 | ...[...] [element a] | -| hash_flow.rb:73:10:73:14 | hash5 [element a] | hash_flow.rb:73:10:73:19 | ...[...] | -| hash_flow.rb:76:5:76:9 | hash6 [element a] | hash_flow.rb:77:10:77:14 | hash6 [element a] | -| hash_flow.rb:76:13:76:47 | ...[...] [element a] | hash_flow.rb:76:5:76:9 | hash6 [element a] | -| hash_flow.rb:76:26:76:35 | call to taint | hash_flow.rb:76:13:76:47 | ...[...] [element a] | -| hash_flow.rb:77:10:77:14 | hash6 [element a] | hash_flow.rb:77:10:77:19 | ...[...] | -| hash_flow.rb:84:5:84:9 | hash1 [element :a] | hash_flow.rb:85:10:85:14 | hash1 [element :a] | -| hash_flow.rb:84:13:84:42 | call to [] [element :a] | hash_flow.rb:84:5:84:9 | hash1 [element :a] | -| hash_flow.rb:84:26:84:35 | call to taint | hash_flow.rb:84:13:84:42 | call to [] [element :a] | -| hash_flow.rb:85:10:85:14 | hash1 [element :a] | hash_flow.rb:85:10:85:18 | ...[...] | -| hash_flow.rb:92:5:92:8 | hash [element :a] | hash_flow.rb:96:30:96:33 | hash [element :a] | -| hash_flow.rb:93:15:93:24 | call to taint | hash_flow.rb:92:5:92:8 | hash [element :a] | -| hash_flow.rb:96:5:96:9 | hash2 [element :a] | hash_flow.rb:97:10:97:14 | hash2 [element :a] | -| hash_flow.rb:96:13:96:34 | call to try_convert [element :a] | hash_flow.rb:96:5:96:9 | hash2 [element :a] | -| hash_flow.rb:96:30:96:33 | hash [element :a] | hash_flow.rb:96:13:96:34 | call to try_convert [element :a] | -| hash_flow.rb:97:10:97:14 | hash2 [element :a] | hash_flow.rb:97:10:97:18 | ...[...] | -| hash_flow.rb:105:5:105:5 | b | hash_flow.rb:106:10:106:10 | b | -| hash_flow.rb:105:21:105:30 | call to taint | hash_flow.rb:105:5:105:5 | b | -| hash_flow.rb:113:5:113:5 | b | hash_flow.rb:115:10:115:10 | b | -| hash_flow.rb:113:9:113:12 | [post] hash [element :a] | hash_flow.rb:114:10:114:13 | hash [element :a] | -| hash_flow.rb:113:9:113:34 | call to store | hash_flow.rb:113:5:113:5 | b | -| hash_flow.rb:113:24:113:33 | call to taint | hash_flow.rb:113:9:113:12 | [post] hash [element :a] | -| hash_flow.rb:113:24:113:33 | call to taint | hash_flow.rb:113:9:113:34 | call to store | -| hash_flow.rb:114:10:114:13 | hash [element :a] | hash_flow.rb:114:10:114:17 | ...[...] | -| hash_flow.rb:118:5:118:5 | c | hash_flow.rb:121:10:121:10 | c | -| hash_flow.rb:118:9:118:12 | [post] hash [element] | hash_flow.rb:119:10:119:13 | hash [element] | -| hash_flow.rb:118:9:118:12 | [post] hash [element] | hash_flow.rb:120:10:120:13 | hash [element] | -| hash_flow.rb:118:9:118:33 | call to store | hash_flow.rb:118:5:118:5 | c | -| hash_flow.rb:118:23:118:32 | call to taint | hash_flow.rb:118:9:118:12 | [post] hash [element] | -| hash_flow.rb:118:23:118:32 | call to taint | hash_flow.rb:118:9:118:33 | call to store | -| hash_flow.rb:119:10:119:13 | hash [element] | hash_flow.rb:119:10:119:17 | ...[...] | -| hash_flow.rb:120:10:120:13 | hash [element] | hash_flow.rb:120:10:120:17 | ...[...] | -| hash_flow.rb:127:5:127:8 | hash [element :a] | hash_flow.rb:131:5:131:8 | hash [element :a] | -| hash_flow.rb:127:5:127:8 | hash [element :a] | hash_flow.rb:134:5:134:8 | hash [element :a] | -| hash_flow.rb:128:15:128:24 | call to taint | hash_flow.rb:127:5:127:8 | hash [element :a] | -| hash_flow.rb:131:5:131:8 | hash [element :a] | hash_flow.rb:131:18:131:29 | key_or_value | -| hash_flow.rb:131:18:131:29 | key_or_value | hash_flow.rb:132:14:132:25 | key_or_value | -| hash_flow.rb:134:5:134:8 | hash [element :a] | hash_flow.rb:134:22:134:26 | value | -| hash_flow.rb:134:22:134:26 | value | hash_flow.rb:136:14:136:18 | value | -| hash_flow.rb:143:5:143:8 | hash [element :a] | hash_flow.rb:147:9:147:12 | hash [element :a] | -| hash_flow.rb:143:5:143:8 | hash [element :a] | hash_flow.rb:151:9:151:12 | hash [element :a] | -| hash_flow.rb:144:15:144:25 | call to taint | hash_flow.rb:143:5:143:8 | hash [element :a] | -| hash_flow.rb:147:5:147:5 | b [element 1] | hash_flow.rb:149:10:149:10 | b [element 1] | -| hash_flow.rb:147:5:147:5 | b [element 1] | hash_flow.rb:150:10:150:10 | b [element 1] | -| hash_flow.rb:147:9:147:12 | hash [element :a] | hash_flow.rb:147:9:147:22 | call to assoc [element 1] | -| hash_flow.rb:147:9:147:22 | call to assoc [element 1] | hash_flow.rb:147:5:147:5 | b [element 1] | -| hash_flow.rb:149:10:149:10 | b [element 1] | hash_flow.rb:149:10:149:13 | ...[...] | -| hash_flow.rb:150:10:150:10 | b [element 1] | hash_flow.rb:150:10:150:13 | ...[...] | -| hash_flow.rb:151:5:151:5 | c [element 1] | hash_flow.rb:152:10:152:10 | c [element 1] | -| hash_flow.rb:151:9:151:12 | hash [element :a] | hash_flow.rb:151:9:151:21 | call to assoc [element 1] | -| hash_flow.rb:151:9:151:21 | call to assoc [element 1] | hash_flow.rb:151:5:151:5 | c [element 1] | -| hash_flow.rb:152:10:152:10 | c [element 1] | hash_flow.rb:152:10:152:13 | ...[...] | -| hash_flow.rb:169:5:169:8 | hash [element :a] | hash_flow.rb:173:9:173:12 | hash [element :a] | -| hash_flow.rb:170:15:170:25 | call to taint | hash_flow.rb:169:5:169:8 | hash [element :a] | -| hash_flow.rb:173:5:173:5 | a [element :a] | hash_flow.rb:174:10:174:10 | a [element :a] | -| hash_flow.rb:173:9:173:12 | hash [element :a] | hash_flow.rb:173:9:173:20 | call to compact [element :a] | -| hash_flow.rb:173:9:173:20 | call to compact [element :a] | hash_flow.rb:173:5:173:5 | a [element :a] | -| hash_flow.rb:174:10:174:10 | a [element :a] | hash_flow.rb:174:10:174:14 | ...[...] | -| hash_flow.rb:181:5:181:8 | hash [element :a] | hash_flow.rb:185:9:185:12 | hash [element :a] | -| hash_flow.rb:182:15:182:25 | call to taint | hash_flow.rb:181:5:181:8 | hash [element :a] | -| hash_flow.rb:185:5:185:5 | a | hash_flow.rb:186:10:186:10 | a | -| hash_flow.rb:185:9:185:12 | hash [element :a] | hash_flow.rb:185:9:185:23 | call to delete | -| hash_flow.rb:185:9:185:23 | call to delete | hash_flow.rb:185:5:185:5 | a | -| hash_flow.rb:193:5:193:8 | hash [element :a] | hash_flow.rb:197:9:197:12 | hash [element :a] | -| hash_flow.rb:194:15:194:25 | call to taint | hash_flow.rb:193:5:193:8 | hash [element :a] | -| hash_flow.rb:197:5:197:5 | a [element :a] | hash_flow.rb:201:10:201:10 | a [element :a] | -| hash_flow.rb:197:9:197:12 | [post] hash [element :a] | hash_flow.rb:202:10:202:13 | hash [element :a] | -| hash_flow.rb:197:9:197:12 | hash [element :a] | hash_flow.rb:197:9:197:12 | [post] hash [element :a] | -| hash_flow.rb:197:9:197:12 | hash [element :a] | hash_flow.rb:197:9:200:7 | call to delete_if [element :a] | -| hash_flow.rb:197:9:197:12 | hash [element :a] | hash_flow.rb:197:33:197:37 | value | -| hash_flow.rb:197:9:200:7 | call to delete_if [element :a] | hash_flow.rb:197:5:197:5 | a [element :a] | -| hash_flow.rb:197:33:197:37 | value | hash_flow.rb:199:14:199:18 | value | -| hash_flow.rb:201:10:201:10 | a [element :a] | hash_flow.rb:201:10:201:14 | ...[...] | -| hash_flow.rb:202:10:202:13 | hash [element :a] | hash_flow.rb:202:10:202:17 | ...[...] | -| hash_flow.rb:209:5:209:8 | hash [element :a] | hash_flow.rb:217:10:217:13 | hash [element :a] | -| hash_flow.rb:209:5:209:8 | hash [element :c, element :d] | hash_flow.rb:219:10:219:13 | hash [element :c, element :d] | -| hash_flow.rb:210:15:210:25 | call to taint | hash_flow.rb:209:5:209:8 | hash [element :a] | -| hash_flow.rb:213:19:213:29 | call to taint | hash_flow.rb:209:5:209:8 | hash [element :c, element :d] | -| hash_flow.rb:217:10:217:13 | hash [element :a] | hash_flow.rb:217:10:217:21 | call to dig | -| hash_flow.rb:219:10:219:13 | hash [element :c, element :d] | hash_flow.rb:219:10:219:24 | call to dig | -| hash_flow.rb:226:5:226:8 | hash [element :a] | hash_flow.rb:230:9:230:12 | hash [element :a] | -| hash_flow.rb:227:15:227:25 | call to taint | hash_flow.rb:226:5:226:8 | hash [element :a] | -| hash_flow.rb:230:5:230:5 | x [element :a] | hash_flow.rb:234:10:234:10 | x [element :a] | -| hash_flow.rb:230:9:230:12 | hash [element :a] | hash_flow.rb:230:9:233:7 | call to each [element :a] | -| hash_flow.rb:230:9:230:12 | hash [element :a] | hash_flow.rb:230:28:230:32 | value | -| hash_flow.rb:230:9:233:7 | call to each [element :a] | hash_flow.rb:230:5:230:5 | x [element :a] | -| hash_flow.rb:230:28:230:32 | value | hash_flow.rb:232:14:232:18 | value | -| hash_flow.rb:234:10:234:10 | x [element :a] | hash_flow.rb:234:10:234:14 | ...[...] | -| hash_flow.rb:241:5:241:8 | hash [element :a] | hash_flow.rb:245:9:245:12 | hash [element :a] | -| hash_flow.rb:242:15:242:25 | call to taint | hash_flow.rb:241:5:241:8 | hash [element :a] | -| hash_flow.rb:245:5:245:5 | x [element :a] | hash_flow.rb:248:10:248:10 | x [element :a] | -| hash_flow.rb:245:9:245:12 | hash [element :a] | hash_flow.rb:245:9:247:7 | call to each_key [element :a] | -| hash_flow.rb:245:9:247:7 | call to each_key [element :a] | hash_flow.rb:245:5:245:5 | x [element :a] | -| hash_flow.rb:248:10:248:10 | x [element :a] | hash_flow.rb:248:10:248:14 | ...[...] | -| hash_flow.rb:255:5:255:8 | hash [element :a] | hash_flow.rb:259:9:259:12 | hash [element :a] | -| hash_flow.rb:256:15:256:25 | call to taint | hash_flow.rb:255:5:255:8 | hash [element :a] | -| hash_flow.rb:259:5:259:5 | x [element :a] | hash_flow.rb:263:10:263:10 | x [element :a] | -| hash_flow.rb:259:9:259:12 | hash [element :a] | hash_flow.rb:259:9:262:7 | call to each_pair [element :a] | -| hash_flow.rb:259:9:259:12 | hash [element :a] | hash_flow.rb:259:33:259:37 | value | -| hash_flow.rb:259:9:262:7 | call to each_pair [element :a] | hash_flow.rb:259:5:259:5 | x [element :a] | -| hash_flow.rb:259:33:259:37 | value | hash_flow.rb:261:14:261:18 | value | -| hash_flow.rb:263:10:263:10 | x [element :a] | hash_flow.rb:263:10:263:14 | ...[...] | -| hash_flow.rb:270:5:270:8 | hash [element :a] | hash_flow.rb:274:9:274:12 | hash [element :a] | -| hash_flow.rb:271:15:271:25 | call to taint | hash_flow.rb:270:5:270:8 | hash [element :a] | -| hash_flow.rb:274:5:274:5 | x [element :a] | hash_flow.rb:277:10:277:10 | x [element :a] | -| hash_flow.rb:274:9:274:12 | hash [element :a] | hash_flow.rb:274:9:276:7 | call to each_value [element :a] | -| hash_flow.rb:274:9:274:12 | hash [element :a] | hash_flow.rb:274:29:274:33 | value | -| hash_flow.rb:274:9:276:7 | call to each_value [element :a] | hash_flow.rb:274:5:274:5 | x [element :a] | -| hash_flow.rb:274:29:274:33 | value | hash_flow.rb:275:14:275:18 | value | -| hash_flow.rb:277:10:277:10 | x [element :a] | hash_flow.rb:277:10:277:14 | ...[...] | -| hash_flow.rb:284:5:284:8 | hash [element :c] | hash_flow.rb:290:9:290:12 | hash [element :c] | -| hash_flow.rb:287:15:287:25 | call to taint | hash_flow.rb:284:5:284:8 | hash [element :c] | -| hash_flow.rb:290:5:290:5 | x [element :c] | hash_flow.rb:293:10:293:10 | x [element :c] | -| hash_flow.rb:290:9:290:12 | hash [element :c] | hash_flow.rb:290:9:290:28 | call to except [element :c] | -| hash_flow.rb:290:9:290:28 | call to except [element :c] | hash_flow.rb:290:5:290:5 | x [element :c] | -| hash_flow.rb:293:10:293:10 | x [element :c] | hash_flow.rb:293:10:293:14 | ...[...] | -| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:305:9:305:12 | hash [element :a] | -| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:309:9:309:12 | hash [element :a] | -| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:311:9:311:12 | hash [element :a] | -| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:315:9:315:12 | hash [element :a] | -| hash_flow.rb:300:5:300:8 | hash [element :c] | hash_flow.rb:305:9:305:12 | hash [element :c] | -| hash_flow.rb:300:5:300:8 | hash [element :c] | hash_flow.rb:315:9:315:12 | hash [element :c] | -| hash_flow.rb:301:15:301:25 | call to taint | hash_flow.rb:300:5:300:8 | hash [element :a] | -| hash_flow.rb:303:15:303:25 | call to taint | hash_flow.rb:300:5:300:8 | hash [element :c] | -| hash_flow.rb:305:5:305:5 | b | hash_flow.rb:308:10:308:10 | b | -| hash_flow.rb:305:9:305:12 | hash [element :a] | hash_flow.rb:305:9:307:7 | call to fetch | -| hash_flow.rb:305:9:305:12 | hash [element :c] | hash_flow.rb:305:9:307:7 | call to fetch | -| hash_flow.rb:305:9:307:7 | call to fetch | hash_flow.rb:305:5:305:5 | b | -| hash_flow.rb:305:20:305:30 | call to taint | hash_flow.rb:305:37:305:37 | x | -| hash_flow.rb:305:37:305:37 | x | hash_flow.rb:306:14:306:14 | x | -| hash_flow.rb:309:5:309:5 | b | hash_flow.rb:310:10:310:10 | b | -| hash_flow.rb:309:9:309:12 | hash [element :a] | hash_flow.rb:309:9:309:22 | call to fetch | -| hash_flow.rb:309:9:309:22 | call to fetch | hash_flow.rb:309:5:309:5 | b | -| hash_flow.rb:311:5:311:5 | b | hash_flow.rb:312:10:312:10 | b | -| hash_flow.rb:311:9:311:12 | hash [element :a] | hash_flow.rb:311:9:311:35 | call to fetch | -| hash_flow.rb:311:9:311:35 | call to fetch | hash_flow.rb:311:5:311:5 | b | -| hash_flow.rb:311:24:311:34 | call to taint | hash_flow.rb:311:9:311:35 | call to fetch | -| hash_flow.rb:313:5:313:5 | b | hash_flow.rb:314:10:314:10 | b | -| hash_flow.rb:313:9:313:35 | call to fetch | hash_flow.rb:313:5:313:5 | b | -| hash_flow.rb:313:24:313:34 | call to taint | hash_flow.rb:313:9:313:35 | call to fetch | -| hash_flow.rb:315:5:315:5 | b | hash_flow.rb:316:10:316:10 | b | -| hash_flow.rb:315:9:315:12 | hash [element :a] | hash_flow.rb:315:9:315:34 | call to fetch | -| hash_flow.rb:315:9:315:12 | hash [element :c] | hash_flow.rb:315:9:315:34 | call to fetch | -| hash_flow.rb:315:9:315:34 | call to fetch | hash_flow.rb:315:5:315:5 | b | -| hash_flow.rb:315:23:315:33 | call to taint | hash_flow.rb:315:9:315:34 | call to fetch | -| hash_flow.rb:322:5:322:8 | hash [element :a] | hash_flow.rb:327:9:327:12 | hash [element :a] | -| hash_flow.rb:322:5:322:8 | hash [element :a] | hash_flow.rb:332:9:332:12 | hash [element :a] | -| hash_flow.rb:322:5:322:8 | hash [element :a] | hash_flow.rb:334:9:334:12 | hash [element :a] | -| hash_flow.rb:322:5:322:8 | hash [element :c] | hash_flow.rb:327:9:327:12 | hash [element :c] | -| hash_flow.rb:322:5:322:8 | hash [element :c] | hash_flow.rb:334:9:334:12 | hash [element :c] | -| hash_flow.rb:323:15:323:25 | call to taint | hash_flow.rb:322:5:322:8 | hash [element :a] | -| hash_flow.rb:325:15:325:25 | call to taint | hash_flow.rb:322:5:322:8 | hash [element :c] | -| hash_flow.rb:327:5:327:5 | b [element] | hash_flow.rb:331:10:331:10 | b [element] | -| hash_flow.rb:327:9:327:12 | hash [element :a] | hash_flow.rb:327:9:330:7 | call to fetch_values [element] | -| hash_flow.rb:327:9:327:12 | hash [element :c] | hash_flow.rb:327:9:330:7 | call to fetch_values [element] | -| hash_flow.rb:327:9:330:7 | call to fetch_values [element] | hash_flow.rb:327:5:327:5 | b [element] | -| hash_flow.rb:327:27:327:37 | call to taint | hash_flow.rb:327:44:327:44 | x | -| hash_flow.rb:327:44:327:44 | x | hash_flow.rb:328:14:328:14 | x | -| hash_flow.rb:329:9:329:19 | call to taint | hash_flow.rb:327:9:330:7 | call to fetch_values [element] | -| hash_flow.rb:331:10:331:10 | b [element] | hash_flow.rb:331:10:331:13 | ...[...] | -| hash_flow.rb:332:5:332:5 | b [element] | hash_flow.rb:333:10:333:10 | b [element] | -| hash_flow.rb:332:9:332:12 | hash [element :a] | hash_flow.rb:332:9:332:29 | call to fetch_values [element] | -| hash_flow.rb:332:9:332:29 | call to fetch_values [element] | hash_flow.rb:332:5:332:5 | b [element] | -| hash_flow.rb:333:10:333:10 | b [element] | hash_flow.rb:333:10:333:13 | ...[...] | -| hash_flow.rb:334:5:334:5 | b [element] | hash_flow.rb:335:10:335:10 | b [element] | -| hash_flow.rb:334:9:334:12 | hash [element :a] | hash_flow.rb:334:9:334:31 | call to fetch_values [element] | -| hash_flow.rb:334:9:334:12 | hash [element :c] | hash_flow.rb:334:9:334:31 | call to fetch_values [element] | -| hash_flow.rb:334:9:334:31 | call to fetch_values [element] | hash_flow.rb:334:5:334:5 | b [element] | -| hash_flow.rb:335:10:335:10 | b [element] | hash_flow.rb:335:10:335:13 | ...[...] | -| hash_flow.rb:341:5:341:8 | hash [element :a] | hash_flow.rb:346:9:346:12 | hash [element :a] | -| hash_flow.rb:341:5:341:8 | hash [element :c] | hash_flow.rb:346:9:346:12 | hash [element :c] | -| hash_flow.rb:342:15:342:25 | call to taint | hash_flow.rb:341:5:341:8 | hash [element :a] | -| hash_flow.rb:344:15:344:25 | call to taint | hash_flow.rb:341:5:341:8 | hash [element :c] | -| hash_flow.rb:346:5:346:5 | b [element :a] | hash_flow.rb:351:11:351:11 | b [element :a] | -| hash_flow.rb:346:9:346:12 | hash [element :a] | hash_flow.rb:346:9:350:7 | call to filter [element :a] | -| hash_flow.rb:346:9:346:12 | hash [element :a] | hash_flow.rb:346:30:346:34 | value | -| hash_flow.rb:346:9:346:12 | hash [element :c] | hash_flow.rb:346:30:346:34 | value | -| hash_flow.rb:346:9:350:7 | call to filter [element :a] | hash_flow.rb:346:5:346:5 | b [element :a] | -| hash_flow.rb:346:30:346:34 | value | hash_flow.rb:348:14:348:18 | value | -| hash_flow.rb:351:11:351:11 | b [element :a] | hash_flow.rb:351:11:351:15 | ...[...] | -| hash_flow.rb:351:11:351:15 | ...[...] | hash_flow.rb:351:10:351:16 | ( ... ) | -| hash_flow.rb:357:5:357:8 | hash [element :a] | hash_flow.rb:362:5:362:8 | hash [element :a] | -| hash_flow.rb:357:5:357:8 | hash [element :c] | hash_flow.rb:362:5:362:8 | hash [element :c] | -| hash_flow.rb:358:15:358:25 | call to taint | hash_flow.rb:357:5:357:8 | hash [element :a] | -| hash_flow.rb:360:15:360:25 | call to taint | hash_flow.rb:357:5:357:8 | hash [element :c] | -| hash_flow.rb:362:5:362:8 | [post] hash [element :a] | hash_flow.rb:367:11:367:14 | hash [element :a] | -| hash_flow.rb:362:5:362:8 | hash [element :a] | hash_flow.rb:362:5:362:8 | [post] hash [element :a] | -| hash_flow.rb:362:5:362:8 | hash [element :a] | hash_flow.rb:362:27:362:31 | value | -| hash_flow.rb:362:5:362:8 | hash [element :c] | hash_flow.rb:362:27:362:31 | value | -| hash_flow.rb:362:27:362:31 | value | hash_flow.rb:364:14:364:18 | value | -| hash_flow.rb:367:11:367:14 | hash [element :a] | hash_flow.rb:367:11:367:18 | ...[...] | -| hash_flow.rb:367:11:367:18 | ...[...] | hash_flow.rb:367:10:367:19 | ( ... ) | -| hash_flow.rb:373:5:373:8 | hash [element :a] | hash_flow.rb:378:9:378:12 | hash [element :a] | -| hash_flow.rb:373:5:373:8 | hash [element :c] | hash_flow.rb:378:9:378:12 | hash [element :c] | -| hash_flow.rb:374:15:374:25 | call to taint | hash_flow.rb:373:5:373:8 | hash [element :a] | -| hash_flow.rb:376:15:376:25 | call to taint | hash_flow.rb:373:5:373:8 | hash [element :c] | -| hash_flow.rb:378:5:378:5 | b [element] | hash_flow.rb:379:11:379:11 | b [element] | -| hash_flow.rb:378:9:378:12 | hash [element :a] | hash_flow.rb:378:9:378:20 | call to flatten [element] | -| hash_flow.rb:378:9:378:12 | hash [element :c] | hash_flow.rb:378:9:378:20 | call to flatten [element] | -| hash_flow.rb:378:9:378:20 | call to flatten [element] | hash_flow.rb:378:5:378:5 | b [element] | -| hash_flow.rb:379:11:379:11 | b [element] | hash_flow.rb:379:11:379:14 | ...[...] | -| hash_flow.rb:379:11:379:14 | ...[...] | hash_flow.rb:379:10:379:15 | ( ... ) | -| hash_flow.rb:385:5:385:8 | hash [element :a] | hash_flow.rb:390:9:390:12 | hash [element :a] | -| hash_flow.rb:385:5:385:8 | hash [element :c] | hash_flow.rb:390:9:390:12 | hash [element :c] | -| hash_flow.rb:386:15:386:25 | call to taint | hash_flow.rb:385:5:385:8 | hash [element :a] | -| hash_flow.rb:388:15:388:25 | call to taint | hash_flow.rb:385:5:385:8 | hash [element :c] | -| hash_flow.rb:390:5:390:5 | b [element :a] | hash_flow.rb:396:11:396:11 | b [element :a] | -| hash_flow.rb:390:9:390:12 | [post] hash [element :a] | hash_flow.rb:395:11:395:14 | hash [element :a] | -| hash_flow.rb:390:9:390:12 | hash [element :a] | hash_flow.rb:390:9:390:12 | [post] hash [element :a] | -| hash_flow.rb:390:9:390:12 | hash [element :a] | hash_flow.rb:390:9:394:7 | call to keep_if [element :a] | -| hash_flow.rb:390:9:390:12 | hash [element :a] | hash_flow.rb:390:31:390:35 | value | -| hash_flow.rb:390:9:390:12 | hash [element :c] | hash_flow.rb:390:31:390:35 | value | -| hash_flow.rb:390:9:394:7 | call to keep_if [element :a] | hash_flow.rb:390:5:390:5 | b [element :a] | -| hash_flow.rb:390:31:390:35 | value | hash_flow.rb:392:14:392:18 | value | -| hash_flow.rb:395:11:395:14 | hash [element :a] | hash_flow.rb:395:11:395:18 | ...[...] | -| hash_flow.rb:395:11:395:18 | ...[...] | hash_flow.rb:395:10:395:19 | ( ... ) | -| hash_flow.rb:396:11:396:11 | b [element :a] | hash_flow.rb:396:11:396:15 | ...[...] | -| hash_flow.rb:396:11:396:15 | ...[...] | hash_flow.rb:396:10:396:16 | ( ... ) | -| hash_flow.rb:402:5:402:9 | hash1 [element :a] | hash_flow.rb:412:12:412:16 | hash1 [element :a] | -| hash_flow.rb:402:5:402:9 | hash1 [element :c] | hash_flow.rb:412:12:412:16 | hash1 [element :c] | -| hash_flow.rb:403:15:403:25 | call to taint | hash_flow.rb:402:5:402:9 | hash1 [element :a] | -| hash_flow.rb:405:15:405:25 | call to taint | hash_flow.rb:402:5:402:9 | hash1 [element :c] | -| hash_flow.rb:407:5:407:9 | hash2 [element :d] | hash_flow.rb:412:24:412:28 | hash2 [element :d] | -| hash_flow.rb:407:5:407:9 | hash2 [element :f] | hash_flow.rb:412:24:412:28 | hash2 [element :f] | -| hash_flow.rb:408:15:408:25 | call to taint | hash_flow.rb:407:5:407:9 | hash2 [element :d] | -| hash_flow.rb:410:15:410:25 | call to taint | hash_flow.rb:407:5:407:9 | hash2 [element :f] | -| hash_flow.rb:412:5:412:8 | hash [element :a] | hash_flow.rb:417:11:417:14 | hash [element :a] | -| hash_flow.rb:412:5:412:8 | hash [element :c] | hash_flow.rb:419:11:419:14 | hash [element :c] | -| hash_flow.rb:412:5:412:8 | hash [element :d] | hash_flow.rb:420:11:420:14 | hash [element :d] | -| hash_flow.rb:412:5:412:8 | hash [element :f] | hash_flow.rb:422:11:422:14 | hash [element :f] | -| hash_flow.rb:412:12:412:16 | hash1 [element :a] | hash_flow.rb:412:12:416:7 | call to merge [element :a] | -| hash_flow.rb:412:12:412:16 | hash1 [element :a] | hash_flow.rb:412:40:412:48 | old_value | -| hash_flow.rb:412:12:412:16 | hash1 [element :a] | hash_flow.rb:412:51:412:59 | new_value | -| hash_flow.rb:412:12:412:16 | hash1 [element :c] | hash_flow.rb:412:12:416:7 | call to merge [element :c] | -| hash_flow.rb:412:12:412:16 | hash1 [element :c] | hash_flow.rb:412:40:412:48 | old_value | -| hash_flow.rb:412:12:412:16 | hash1 [element :c] | hash_flow.rb:412:51:412:59 | new_value | -| hash_flow.rb:412:12:416:7 | call to merge [element :a] | hash_flow.rb:412:5:412:8 | hash [element :a] | -| hash_flow.rb:412:12:416:7 | call to merge [element :c] | hash_flow.rb:412:5:412:8 | hash [element :c] | -| hash_flow.rb:412:12:416:7 | call to merge [element :d] | hash_flow.rb:412:5:412:8 | hash [element :d] | -| hash_flow.rb:412:12:416:7 | call to merge [element :f] | hash_flow.rb:412:5:412:8 | hash [element :f] | -| hash_flow.rb:412:24:412:28 | hash2 [element :d] | hash_flow.rb:412:12:416:7 | call to merge [element :d] | -| hash_flow.rb:412:24:412:28 | hash2 [element :d] | hash_flow.rb:412:40:412:48 | old_value | -| hash_flow.rb:412:24:412:28 | hash2 [element :d] | hash_flow.rb:412:51:412:59 | new_value | -| hash_flow.rb:412:24:412:28 | hash2 [element :f] | hash_flow.rb:412:12:416:7 | call to merge [element :f] | -| hash_flow.rb:412:24:412:28 | hash2 [element :f] | hash_flow.rb:412:40:412:48 | old_value | -| hash_flow.rb:412:24:412:28 | hash2 [element :f] | hash_flow.rb:412:51:412:59 | new_value | -| hash_flow.rb:412:40:412:48 | old_value | hash_flow.rb:414:14:414:22 | old_value | -| hash_flow.rb:412:51:412:59 | new_value | hash_flow.rb:415:14:415:22 | new_value | -| hash_flow.rb:417:11:417:14 | hash [element :a] | hash_flow.rb:417:11:417:18 | ...[...] | -| hash_flow.rb:417:11:417:18 | ...[...] | hash_flow.rb:417:10:417:19 | ( ... ) | -| hash_flow.rb:419:11:419:14 | hash [element :c] | hash_flow.rb:419:11:419:18 | ...[...] | -| hash_flow.rb:419:11:419:18 | ...[...] | hash_flow.rb:419:10:419:19 | ( ... ) | -| hash_flow.rb:420:11:420:14 | hash [element :d] | hash_flow.rb:420:11:420:18 | ...[...] | -| hash_flow.rb:420:11:420:18 | ...[...] | hash_flow.rb:420:10:420:19 | ( ... ) | -| hash_flow.rb:422:11:422:14 | hash [element :f] | hash_flow.rb:422:11:422:18 | ...[...] | -| hash_flow.rb:422:11:422:18 | ...[...] | hash_flow.rb:422:10:422:19 | ( ... ) | -| hash_flow.rb:428:5:428:9 | hash1 [element :a] | hash_flow.rb:438:12:438:16 | hash1 [element :a] | -| hash_flow.rb:428:5:428:9 | hash1 [element :c] | hash_flow.rb:438:12:438:16 | hash1 [element :c] | -| hash_flow.rb:429:15:429:25 | call to taint | hash_flow.rb:428:5:428:9 | hash1 [element :a] | -| hash_flow.rb:431:15:431:25 | call to taint | hash_flow.rb:428:5:428:9 | hash1 [element :c] | -| hash_flow.rb:433:5:433:9 | hash2 [element :d] | hash_flow.rb:438:25:438:29 | hash2 [element :d] | -| hash_flow.rb:433:5:433:9 | hash2 [element :f] | hash_flow.rb:438:25:438:29 | hash2 [element :f] | -| hash_flow.rb:434:15:434:25 | call to taint | hash_flow.rb:433:5:433:9 | hash2 [element :d] | -| hash_flow.rb:436:15:436:25 | call to taint | hash_flow.rb:433:5:433:9 | hash2 [element :f] | -| hash_flow.rb:438:5:438:8 | hash [element :a] | hash_flow.rb:443:11:443:14 | hash [element :a] | -| hash_flow.rb:438:5:438:8 | hash [element :c] | hash_flow.rb:445:11:445:14 | hash [element :c] | -| hash_flow.rb:438:5:438:8 | hash [element :d] | hash_flow.rb:446:11:446:14 | hash [element :d] | -| hash_flow.rb:438:5:438:8 | hash [element :f] | hash_flow.rb:448:11:448:14 | hash [element :f] | -| hash_flow.rb:438:12:438:16 | [post] hash1 [element :a] | hash_flow.rb:450:11:450:15 | hash1 [element :a] | -| hash_flow.rb:438:12:438:16 | [post] hash1 [element :c] | hash_flow.rb:452:11:452:15 | hash1 [element :c] | -| hash_flow.rb:438:12:438:16 | [post] hash1 [element :d] | hash_flow.rb:453:11:453:15 | hash1 [element :d] | -| hash_flow.rb:438:12:438:16 | [post] hash1 [element :f] | hash_flow.rb:455:11:455:15 | hash1 [element :f] | -| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :a] | -| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:12:442:7 | call to merge! [element :a] | -| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:41:438:49 | old_value | -| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:52:438:60 | new_value | -| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :c] | -| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:12:442:7 | call to merge! [element :c] | -| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:41:438:49 | old_value | -| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:52:438:60 | new_value | -| hash_flow.rb:438:12:442:7 | call to merge! [element :a] | hash_flow.rb:438:5:438:8 | hash [element :a] | -| hash_flow.rb:438:12:442:7 | call to merge! [element :c] | hash_flow.rb:438:5:438:8 | hash [element :c] | -| hash_flow.rb:438:12:442:7 | call to merge! [element :d] | hash_flow.rb:438:5:438:8 | hash [element :d] | -| hash_flow.rb:438:12:442:7 | call to merge! [element :f] | hash_flow.rb:438:5:438:8 | hash [element :f] | -| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :d] | -| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:12:442:7 | call to merge! [element :d] | -| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:41:438:49 | old_value | -| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:52:438:60 | new_value | -| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :f] | -| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:12:442:7 | call to merge! [element :f] | -| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:41:438:49 | old_value | -| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:52:438:60 | new_value | -| hash_flow.rb:438:41:438:49 | old_value | hash_flow.rb:440:14:440:22 | old_value | -| hash_flow.rb:438:52:438:60 | new_value | hash_flow.rb:441:14:441:22 | new_value | -| hash_flow.rb:443:11:443:14 | hash [element :a] | hash_flow.rb:443:11:443:18 | ...[...] | -| hash_flow.rb:443:11:443:18 | ...[...] | hash_flow.rb:443:10:443:19 | ( ... ) | -| hash_flow.rb:445:11:445:14 | hash [element :c] | hash_flow.rb:445:11:445:18 | ...[...] | -| hash_flow.rb:445:11:445:18 | ...[...] | hash_flow.rb:445:10:445:19 | ( ... ) | -| hash_flow.rb:446:11:446:14 | hash [element :d] | hash_flow.rb:446:11:446:18 | ...[...] | -| hash_flow.rb:446:11:446:18 | ...[...] | hash_flow.rb:446:10:446:19 | ( ... ) | -| hash_flow.rb:448:11:448:14 | hash [element :f] | hash_flow.rb:448:11:448:18 | ...[...] | -| hash_flow.rb:448:11:448:18 | ...[...] | hash_flow.rb:448:10:448:19 | ( ... ) | -| hash_flow.rb:450:11:450:15 | hash1 [element :a] | hash_flow.rb:450:11:450:19 | ...[...] | -| hash_flow.rb:450:11:450:19 | ...[...] | hash_flow.rb:450:10:450:20 | ( ... ) | -| hash_flow.rb:452:11:452:15 | hash1 [element :c] | hash_flow.rb:452:11:452:19 | ...[...] | -| hash_flow.rb:452:11:452:19 | ...[...] | hash_flow.rb:452:10:452:20 | ( ... ) | -| hash_flow.rb:453:11:453:15 | hash1 [element :d] | hash_flow.rb:453:11:453:19 | ...[...] | -| hash_flow.rb:453:11:453:19 | ...[...] | hash_flow.rb:453:10:453:20 | ( ... ) | -| hash_flow.rb:455:11:455:15 | hash1 [element :f] | hash_flow.rb:455:11:455:19 | ...[...] | -| hash_flow.rb:455:11:455:19 | ...[...] | hash_flow.rb:455:10:455:20 | ( ... ) | -| hash_flow.rb:461:5:461:8 | hash [element :a] | hash_flow.rb:465:9:465:12 | hash [element :a] | -| hash_flow.rb:462:15:462:25 | call to taint | hash_flow.rb:461:5:461:8 | hash [element :a] | -| hash_flow.rb:465:5:465:5 | b [element 1] | hash_flow.rb:467:10:467:10 | b [element 1] | -| hash_flow.rb:465:9:465:12 | hash [element :a] | hash_flow.rb:465:9:465:22 | call to rassoc [element 1] | -| hash_flow.rb:465:9:465:22 | call to rassoc [element 1] | hash_flow.rb:465:5:465:5 | b [element 1] | -| hash_flow.rb:467:10:467:10 | b [element 1] | hash_flow.rb:467:10:467:13 | ...[...] | -| hash_flow.rb:473:5:473:8 | hash [element :a] | hash_flow.rb:477:9:477:12 | hash [element :a] | -| hash_flow.rb:474:15:474:25 | call to taint | hash_flow.rb:473:5:473:8 | hash [element :a] | -| hash_flow.rb:477:5:477:5 | b [element :a] | hash_flow.rb:482:10:482:10 | b [element :a] | -| hash_flow.rb:477:9:477:12 | hash [element :a] | hash_flow.rb:477:9:481:7 | call to reject [element :a] | -| hash_flow.rb:477:9:477:12 | hash [element :a] | hash_flow.rb:477:29:477:33 | value | -| hash_flow.rb:477:9:481:7 | call to reject [element :a] | hash_flow.rb:477:5:477:5 | b [element :a] | -| hash_flow.rb:477:29:477:33 | value | hash_flow.rb:479:14:479:18 | value | -| hash_flow.rb:482:10:482:10 | b [element :a] | hash_flow.rb:482:10:482:14 | ...[...] | -| hash_flow.rb:488:5:488:8 | hash [element :a] | hash_flow.rb:492:9:492:12 | hash [element :a] | -| hash_flow.rb:489:15:489:25 | call to taint | hash_flow.rb:488:5:488:8 | hash [element :a] | -| hash_flow.rb:492:5:492:5 | b [element :a] | hash_flow.rb:497:10:497:10 | b [element :a] | -| hash_flow.rb:492:9:492:12 | [post] hash [element :a] | hash_flow.rb:498:10:498:13 | hash [element :a] | -| hash_flow.rb:492:9:492:12 | hash [element :a] | hash_flow.rb:492:9:492:12 | [post] hash [element :a] | -| hash_flow.rb:492:9:492:12 | hash [element :a] | hash_flow.rb:492:9:496:7 | call to reject! [element :a] | -| hash_flow.rb:492:9:492:12 | hash [element :a] | hash_flow.rb:492:30:492:34 | value | -| hash_flow.rb:492:9:496:7 | call to reject! [element :a] | hash_flow.rb:492:5:492:5 | b [element :a] | -| hash_flow.rb:492:30:492:34 | value | hash_flow.rb:494:14:494:18 | value | -| hash_flow.rb:497:10:497:10 | b [element :a] | hash_flow.rb:497:10:497:14 | ...[...] | -| hash_flow.rb:498:10:498:13 | hash [element :a] | hash_flow.rb:498:10:498:17 | ...[...] | -| hash_flow.rb:504:5:504:8 | hash [element :a] | hash_flow.rb:512:19:512:22 | hash [element :a] | -| hash_flow.rb:504:5:504:8 | hash [element :c] | hash_flow.rb:512:19:512:22 | hash [element :c] | -| hash_flow.rb:505:15:505:25 | call to taint | hash_flow.rb:504:5:504:8 | hash [element :a] | -| hash_flow.rb:507:15:507:25 | call to taint | hash_flow.rb:504:5:504:8 | hash [element :c] | -| hash_flow.rb:512:5:512:9 | [post] hash2 [element :a] | hash_flow.rb:513:11:513:15 | hash2 [element :a] | -| hash_flow.rb:512:5:512:9 | [post] hash2 [element :c] | hash_flow.rb:515:11:515:15 | hash2 [element :c] | -| hash_flow.rb:512:19:512:22 | hash [element :a] | hash_flow.rb:512:5:512:9 | [post] hash2 [element :a] | -| hash_flow.rb:512:19:512:22 | hash [element :c] | hash_flow.rb:512:5:512:9 | [post] hash2 [element :c] | -| hash_flow.rb:513:11:513:15 | hash2 [element :a] | hash_flow.rb:513:11:513:19 | ...[...] | -| hash_flow.rb:513:11:513:19 | ...[...] | hash_flow.rb:513:10:513:20 | ( ... ) | -| hash_flow.rb:515:11:515:15 | hash2 [element :c] | hash_flow.rb:515:11:515:19 | ...[...] | -| hash_flow.rb:515:11:515:19 | ...[...] | hash_flow.rb:515:10:515:20 | ( ... ) | -| hash_flow.rb:519:5:519:8 | hash [element :a] | hash_flow.rb:524:9:524:12 | hash [element :a] | -| hash_flow.rb:519:5:519:8 | hash [element :c] | hash_flow.rb:524:9:524:12 | hash [element :c] | -| hash_flow.rb:520:15:520:25 | call to taint | hash_flow.rb:519:5:519:8 | hash [element :a] | -| hash_flow.rb:522:15:522:25 | call to taint | hash_flow.rb:519:5:519:8 | hash [element :c] | -| hash_flow.rb:524:5:524:5 | b [element :a] | hash_flow.rb:529:11:529:11 | b [element :a] | -| hash_flow.rb:524:9:524:12 | hash [element :a] | hash_flow.rb:524:9:528:7 | call to select [element :a] | -| hash_flow.rb:524:9:524:12 | hash [element :a] | hash_flow.rb:524:30:524:34 | value | -| hash_flow.rb:524:9:524:12 | hash [element :c] | hash_flow.rb:524:30:524:34 | value | -| hash_flow.rb:524:9:528:7 | call to select [element :a] | hash_flow.rb:524:5:524:5 | b [element :a] | -| hash_flow.rb:524:30:524:34 | value | hash_flow.rb:526:14:526:18 | value | -| hash_flow.rb:529:11:529:11 | b [element :a] | hash_flow.rb:529:11:529:15 | ...[...] | -| hash_flow.rb:529:11:529:15 | ...[...] | hash_flow.rb:529:10:529:16 | ( ... ) | -| hash_flow.rb:535:5:535:8 | hash [element :a] | hash_flow.rb:540:5:540:8 | hash [element :a] | -| hash_flow.rb:535:5:535:8 | hash [element :c] | hash_flow.rb:540:5:540:8 | hash [element :c] | -| hash_flow.rb:536:15:536:25 | call to taint | hash_flow.rb:535:5:535:8 | hash [element :a] | -| hash_flow.rb:538:15:538:25 | call to taint | hash_flow.rb:535:5:535:8 | hash [element :c] | -| hash_flow.rb:540:5:540:8 | [post] hash [element :a] | hash_flow.rb:545:11:545:14 | hash [element :a] | -| hash_flow.rb:540:5:540:8 | hash [element :a] | hash_flow.rb:540:5:540:8 | [post] hash [element :a] | -| hash_flow.rb:540:5:540:8 | hash [element :a] | hash_flow.rb:540:27:540:31 | value | -| hash_flow.rb:540:5:540:8 | hash [element :c] | hash_flow.rb:540:27:540:31 | value | -| hash_flow.rb:540:27:540:31 | value | hash_flow.rb:542:14:542:18 | value | -| hash_flow.rb:545:11:545:14 | hash [element :a] | hash_flow.rb:545:11:545:18 | ...[...] | -| hash_flow.rb:545:11:545:18 | ...[...] | hash_flow.rb:545:10:545:19 | ( ... ) | -| hash_flow.rb:551:5:551:8 | hash [element :a] | hash_flow.rb:556:9:556:12 | hash [element :a] | -| hash_flow.rb:551:5:551:8 | hash [element :c] | hash_flow.rb:556:9:556:12 | hash [element :c] | -| hash_flow.rb:552:15:552:25 | call to taint | hash_flow.rb:551:5:551:8 | hash [element :a] | -| hash_flow.rb:554:15:554:25 | call to taint | hash_flow.rb:551:5:551:8 | hash [element :c] | -| hash_flow.rb:556:5:556:5 | b [element 1] | hash_flow.rb:559:11:559:11 | b [element 1] | -| hash_flow.rb:556:9:556:12 | [post] hash [element :a] | hash_flow.rb:557:11:557:14 | hash [element :a] | -| hash_flow.rb:556:9:556:12 | hash [element :a] | hash_flow.rb:556:9:556:12 | [post] hash [element :a] | -| hash_flow.rb:556:9:556:12 | hash [element :a] | hash_flow.rb:556:9:556:18 | call to shift [element 1] | -| hash_flow.rb:556:9:556:12 | hash [element :c] | hash_flow.rb:556:9:556:18 | call to shift [element 1] | -| hash_flow.rb:556:9:556:18 | call to shift [element 1] | hash_flow.rb:556:5:556:5 | b [element 1] | -| hash_flow.rb:557:11:557:14 | hash [element :a] | hash_flow.rb:557:11:557:18 | ...[...] | -| hash_flow.rb:557:11:557:18 | ...[...] | hash_flow.rb:557:10:557:19 | ( ... ) | -| hash_flow.rb:559:11:559:11 | b [element 1] | hash_flow.rb:559:11:559:14 | ...[...] | -| hash_flow.rb:559:11:559:14 | ...[...] | hash_flow.rb:559:10:559:15 | ( ... ) | -| hash_flow.rb:565:5:565:8 | hash [element :a] | hash_flow.rb:570:9:570:12 | hash [element :a] | -| hash_flow.rb:565:5:565:8 | hash [element :a] | hash_flow.rb:575:9:575:12 | hash [element :a] | -| hash_flow.rb:565:5:565:8 | hash [element :c] | hash_flow.rb:575:9:575:12 | hash [element :c] | -| hash_flow.rb:566:15:566:25 | call to taint | hash_flow.rb:565:5:565:8 | hash [element :a] | -| hash_flow.rb:568:15:568:25 | call to taint | hash_flow.rb:565:5:565:8 | hash [element :c] | -| hash_flow.rb:570:5:570:5 | b [element :a] | hash_flow.rb:571:11:571:11 | b [element :a] | -| hash_flow.rb:570:9:570:12 | hash [element :a] | hash_flow.rb:570:9:570:26 | call to slice [element :a] | -| hash_flow.rb:570:9:570:26 | call to slice [element :a] | hash_flow.rb:570:5:570:5 | b [element :a] | -| hash_flow.rb:571:11:571:11 | b [element :a] | hash_flow.rb:571:11:571:15 | ...[...] | -| hash_flow.rb:571:11:571:15 | ...[...] | hash_flow.rb:571:10:571:16 | ( ... ) | -| hash_flow.rb:575:5:575:5 | c [element :a] | hash_flow.rb:576:11:576:11 | c [element :a] | -| hash_flow.rb:575:5:575:5 | c [element :c] | hash_flow.rb:578:11:578:11 | c [element :c] | -| hash_flow.rb:575:9:575:12 | hash [element :a] | hash_flow.rb:575:9:575:25 | call to slice [element :a] | -| hash_flow.rb:575:9:575:12 | hash [element :c] | hash_flow.rb:575:9:575:25 | call to slice [element :c] | -| hash_flow.rb:575:9:575:25 | call to slice [element :a] | hash_flow.rb:575:5:575:5 | c [element :a] | -| hash_flow.rb:575:9:575:25 | call to slice [element :c] | hash_flow.rb:575:5:575:5 | c [element :c] | -| hash_flow.rb:576:11:576:11 | c [element :a] | hash_flow.rb:576:11:576:15 | ...[...] | -| hash_flow.rb:576:11:576:15 | ...[...] | hash_flow.rb:576:10:576:16 | ( ... ) | -| hash_flow.rb:578:11:578:11 | c [element :c] | hash_flow.rb:578:11:578:15 | ...[...] | -| hash_flow.rb:578:11:578:15 | ...[...] | hash_flow.rb:578:10:578:16 | ( ... ) | -| hash_flow.rb:584:5:584:8 | hash [element :a] | hash_flow.rb:589:9:589:12 | hash [element :a] | -| hash_flow.rb:584:5:584:8 | hash [element :c] | hash_flow.rb:589:9:589:12 | hash [element :c] | -| hash_flow.rb:585:15:585:25 | call to taint | hash_flow.rb:584:5:584:8 | hash [element :a] | -| hash_flow.rb:587:15:587:25 | call to taint | hash_flow.rb:584:5:584:8 | hash [element :c] | -| hash_flow.rb:589:5:589:5 | a [element, element 1] | hash_flow.rb:591:11:591:11 | a [element, element 1] | -| hash_flow.rb:589:9:589:12 | hash [element :a] | hash_flow.rb:589:9:589:17 | call to to_a [element, element 1] | -| hash_flow.rb:589:9:589:12 | hash [element :c] | hash_flow.rb:589:9:589:17 | call to to_a [element, element 1] | -| hash_flow.rb:589:9:589:17 | call to to_a [element, element 1] | hash_flow.rb:589:5:589:5 | a [element, element 1] | -| hash_flow.rb:591:11:591:11 | a [element, element 1] | hash_flow.rb:591:11:591:14 | ...[...] [element 1] | -| hash_flow.rb:591:11:591:14 | ...[...] [element 1] | hash_flow.rb:591:11:591:17 | ...[...] | -| hash_flow.rb:591:11:591:17 | ...[...] | hash_flow.rb:591:10:591:18 | ( ... ) | -| hash_flow.rb:597:5:597:8 | hash [element :a] | hash_flow.rb:602:9:602:12 | hash [element :a] | -| hash_flow.rb:597:5:597:8 | hash [element :a] | hash_flow.rb:607:9:607:12 | hash [element :a] | -| hash_flow.rb:597:5:597:8 | hash [element :c] | hash_flow.rb:602:9:602:12 | hash [element :c] | -| hash_flow.rb:597:5:597:8 | hash [element :c] | hash_flow.rb:607:9:607:12 | hash [element :c] | -| hash_flow.rb:598:15:598:25 | call to taint | hash_flow.rb:597:5:597:8 | hash [element :a] | -| hash_flow.rb:600:15:600:25 | call to taint | hash_flow.rb:597:5:597:8 | hash [element :c] | -| hash_flow.rb:602:5:602:5 | a [element :a] | hash_flow.rb:603:11:603:11 | a [element :a] | -| hash_flow.rb:602:5:602:5 | a [element :c] | hash_flow.rb:605:11:605:11 | a [element :c] | -| hash_flow.rb:602:9:602:12 | hash [element :a] | hash_flow.rb:602:9:602:17 | call to to_h [element :a] | -| hash_flow.rb:602:9:602:12 | hash [element :c] | hash_flow.rb:602:9:602:17 | call to to_h [element :c] | -| hash_flow.rb:602:9:602:17 | call to to_h [element :a] | hash_flow.rb:602:5:602:5 | a [element :a] | -| hash_flow.rb:602:9:602:17 | call to to_h [element :c] | hash_flow.rb:602:5:602:5 | a [element :c] | -| hash_flow.rb:603:11:603:11 | a [element :a] | hash_flow.rb:603:11:603:15 | ...[...] | -| hash_flow.rb:603:11:603:15 | ...[...] | hash_flow.rb:603:10:603:16 | ( ... ) | -| hash_flow.rb:605:11:605:11 | a [element :c] | hash_flow.rb:605:11:605:15 | ...[...] | -| hash_flow.rb:605:11:605:15 | ...[...] | hash_flow.rb:605:10:605:16 | ( ... ) | -| hash_flow.rb:607:5:607:5 | b [element] | hash_flow.rb:612:11:612:11 | b [element] | -| hash_flow.rb:607:9:607:12 | hash [element :a] | hash_flow.rb:607:28:607:32 | value | -| hash_flow.rb:607:9:607:12 | hash [element :c] | hash_flow.rb:607:28:607:32 | value | -| hash_flow.rb:607:9:611:7 | call to to_h [element] | hash_flow.rb:607:5:607:5 | b [element] | -| hash_flow.rb:607:28:607:32 | value | hash_flow.rb:609:14:609:18 | value | -| hash_flow.rb:610:14:610:24 | call to taint | hash_flow.rb:607:9:611:7 | call to to_h [element] | -| hash_flow.rb:612:11:612:11 | b [element] | hash_flow.rb:612:11:612:15 | ...[...] | -| hash_flow.rb:612:11:612:15 | ...[...] | hash_flow.rb:612:10:612:16 | ( ... ) | -| hash_flow.rb:618:5:618:8 | hash [element :a] | hash_flow.rb:623:9:623:12 | hash [element :a] | -| hash_flow.rb:618:5:618:8 | hash [element :c] | hash_flow.rb:623:9:623:12 | hash [element :c] | -| hash_flow.rb:619:15:619:25 | call to taint | hash_flow.rb:618:5:618:8 | hash [element :a] | -| hash_flow.rb:621:15:621:25 | call to taint | hash_flow.rb:618:5:618:8 | hash [element :c] | -| hash_flow.rb:623:5:623:5 | a [element] | hash_flow.rb:624:11:624:11 | a [element] | -| hash_flow.rb:623:5:623:5 | a [element] | hash_flow.rb:625:11:625:11 | a [element] | -| hash_flow.rb:623:5:623:5 | a [element] | hash_flow.rb:626:11:626:11 | a [element] | -| hash_flow.rb:623:9:623:12 | hash [element :a] | hash_flow.rb:623:9:623:45 | call to transform_keys [element] | -| hash_flow.rb:623:9:623:12 | hash [element :c] | hash_flow.rb:623:9:623:45 | call to transform_keys [element] | -| hash_flow.rb:623:9:623:45 | call to transform_keys [element] | hash_flow.rb:623:5:623:5 | a [element] | -| hash_flow.rb:624:11:624:11 | a [element] | hash_flow.rb:624:11:624:16 | ...[...] | -| hash_flow.rb:624:11:624:16 | ...[...] | hash_flow.rb:624:10:624:17 | ( ... ) | -| hash_flow.rb:625:11:625:11 | a [element] | hash_flow.rb:625:11:625:16 | ...[...] | -| hash_flow.rb:625:11:625:16 | ...[...] | hash_flow.rb:625:10:625:17 | ( ... ) | -| hash_flow.rb:626:11:626:11 | a [element] | hash_flow.rb:626:11:626:16 | ...[...] | -| hash_flow.rb:626:11:626:16 | ...[...] | hash_flow.rb:626:10:626:17 | ( ... ) | -| hash_flow.rb:632:5:632:8 | hash [element :a] | hash_flow.rb:639:5:639:8 | hash [element :a] | -| hash_flow.rb:632:5:632:8 | hash [element :c] | hash_flow.rb:639:5:639:8 | hash [element :c] | -| hash_flow.rb:633:15:633:25 | call to taint | hash_flow.rb:632:5:632:8 | hash [element :a] | -| hash_flow.rb:635:15:635:25 | call to taint | hash_flow.rb:632:5:632:8 | hash [element :c] | -| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:639:5:639:8 | hash [element] | -| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:640:11:640:14 | hash [element] | -| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:641:11:641:14 | hash [element] | -| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:642:11:642:14 | hash [element] | -| hash_flow.rb:637:15:637:25 | call to taint | hash_flow.rb:637:5:637:8 | [post] hash [element] | -| hash_flow.rb:639:5:639:8 | [post] hash [element] | hash_flow.rb:640:11:640:14 | hash [element] | -| hash_flow.rb:639:5:639:8 | [post] hash [element] | hash_flow.rb:641:11:641:14 | hash [element] | -| hash_flow.rb:639:5:639:8 | [post] hash [element] | hash_flow.rb:642:11:642:14 | hash [element] | -| hash_flow.rb:639:5:639:8 | hash [element :a] | hash_flow.rb:639:5:639:8 | [post] hash [element] | -| hash_flow.rb:639:5:639:8 | hash [element :c] | hash_flow.rb:639:5:639:8 | [post] hash [element] | -| hash_flow.rb:639:5:639:8 | hash [element] | hash_flow.rb:639:5:639:8 | [post] hash [element] | -| hash_flow.rb:640:11:640:14 | hash [element] | hash_flow.rb:640:11:640:19 | ...[...] | -| hash_flow.rb:640:11:640:19 | ...[...] | hash_flow.rb:640:10:640:20 | ( ... ) | -| hash_flow.rb:641:11:641:14 | hash [element] | hash_flow.rb:641:11:641:19 | ...[...] | -| hash_flow.rb:641:11:641:19 | ...[...] | hash_flow.rb:641:10:641:20 | ( ... ) | -| hash_flow.rb:642:11:642:14 | hash [element] | hash_flow.rb:642:11:642:19 | ...[...] | -| hash_flow.rb:642:11:642:19 | ...[...] | hash_flow.rb:642:10:642:20 | ( ... ) | -| hash_flow.rb:648:5:648:8 | hash [element :a] | hash_flow.rb:653:9:653:12 | hash [element :a] | -| hash_flow.rb:648:5:648:8 | hash [element :a] | hash_flow.rb:657:11:657:14 | hash [element :a] | -| hash_flow.rb:648:5:648:8 | hash [element :c] | hash_flow.rb:653:9:653:12 | hash [element :c] | -| hash_flow.rb:649:15:649:25 | call to taint | hash_flow.rb:648:5:648:8 | hash [element :a] | -| hash_flow.rb:651:15:651:25 | call to taint | hash_flow.rb:648:5:648:8 | hash [element :c] | -| hash_flow.rb:653:5:653:5 | b [element] | hash_flow.rb:658:11:658:11 | b [element] | -| hash_flow.rb:653:9:653:12 | hash [element :a] | hash_flow.rb:653:35:653:39 | value | -| hash_flow.rb:653:9:653:12 | hash [element :c] | hash_flow.rb:653:35:653:39 | value | -| hash_flow.rb:653:9:656:7 | call to transform_values [element] | hash_flow.rb:653:5:653:5 | b [element] | -| hash_flow.rb:653:35:653:39 | value | hash_flow.rb:654:14:654:18 | value | -| hash_flow.rb:655:9:655:19 | call to taint | hash_flow.rb:653:9:656:7 | call to transform_values [element] | -| hash_flow.rb:657:11:657:14 | hash [element :a] | hash_flow.rb:657:11:657:18 | ...[...] | -| hash_flow.rb:657:11:657:18 | ...[...] | hash_flow.rb:657:10:657:19 | ( ... ) | -| hash_flow.rb:658:11:658:11 | b [element] | hash_flow.rb:658:11:658:15 | ...[...] | -| hash_flow.rb:658:11:658:15 | ...[...] | hash_flow.rb:658:10:658:16 | ( ... ) | -| hash_flow.rb:664:5:664:8 | hash [element :a] | hash_flow.rb:669:5:669:8 | hash [element :a] | -| hash_flow.rb:664:5:664:8 | hash [element :c] | hash_flow.rb:669:5:669:8 | hash [element :c] | -| hash_flow.rb:665:15:665:25 | call to taint | hash_flow.rb:664:5:664:8 | hash [element :a] | -| hash_flow.rb:667:15:667:25 | call to taint | hash_flow.rb:664:5:664:8 | hash [element :c] | -| hash_flow.rb:669:5:669:8 | [post] hash [element] | hash_flow.rb:673:11:673:14 | hash [element] | -| hash_flow.rb:669:5:669:8 | hash [element :a] | hash_flow.rb:669:32:669:36 | value | -| hash_flow.rb:669:5:669:8 | hash [element :c] | hash_flow.rb:669:32:669:36 | value | -| hash_flow.rb:669:32:669:36 | value | hash_flow.rb:670:14:670:18 | value | -| hash_flow.rb:671:9:671:19 | call to taint | hash_flow.rb:669:5:669:8 | [post] hash [element] | -| hash_flow.rb:673:11:673:14 | hash [element] | hash_flow.rb:673:11:673:18 | ...[...] | -| hash_flow.rb:673:11:673:18 | ...[...] | hash_flow.rb:673:10:673:19 | ( ... ) | -| hash_flow.rb:679:5:679:9 | hash1 [element :a] | hash_flow.rb:689:12:689:16 | hash1 [element :a] | -| hash_flow.rb:679:5:679:9 | hash1 [element :c] | hash_flow.rb:689:12:689:16 | hash1 [element :c] | -| hash_flow.rb:680:15:680:25 | call to taint | hash_flow.rb:679:5:679:9 | hash1 [element :a] | -| hash_flow.rb:682:15:682:25 | call to taint | hash_flow.rb:679:5:679:9 | hash1 [element :c] | -| hash_flow.rb:684:5:684:9 | hash2 [element :d] | hash_flow.rb:689:25:689:29 | hash2 [element :d] | -| hash_flow.rb:684:5:684:9 | hash2 [element :f] | hash_flow.rb:689:25:689:29 | hash2 [element :f] | -| hash_flow.rb:685:15:685:25 | call to taint | hash_flow.rb:684:5:684:9 | hash2 [element :d] | -| hash_flow.rb:687:15:687:25 | call to taint | hash_flow.rb:684:5:684:9 | hash2 [element :f] | -| hash_flow.rb:689:5:689:8 | hash [element :a] | hash_flow.rb:694:11:694:14 | hash [element :a] | -| hash_flow.rb:689:5:689:8 | hash [element :c] | hash_flow.rb:696:11:696:14 | hash [element :c] | -| hash_flow.rb:689:5:689:8 | hash [element :d] | hash_flow.rb:697:11:697:14 | hash [element :d] | -| hash_flow.rb:689:5:689:8 | hash [element :f] | hash_flow.rb:699:11:699:14 | hash [element :f] | -| hash_flow.rb:689:12:689:16 | [post] hash1 [element :a] | hash_flow.rb:701:11:701:15 | hash1 [element :a] | -| hash_flow.rb:689:12:689:16 | [post] hash1 [element :c] | hash_flow.rb:703:11:703:15 | hash1 [element :c] | -| hash_flow.rb:689:12:689:16 | [post] hash1 [element :d] | hash_flow.rb:704:11:704:15 | hash1 [element :d] | -| hash_flow.rb:689:12:689:16 | [post] hash1 [element :f] | hash_flow.rb:706:11:706:15 | hash1 [element :f] | -| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :a] | -| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:12:693:7 | call to update [element :a] | -| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:41:689:49 | old_value | -| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:52:689:60 | new_value | -| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :c] | -| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:12:693:7 | call to update [element :c] | -| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:41:689:49 | old_value | -| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:52:689:60 | new_value | -| hash_flow.rb:689:12:693:7 | call to update [element :a] | hash_flow.rb:689:5:689:8 | hash [element :a] | -| hash_flow.rb:689:12:693:7 | call to update [element :c] | hash_flow.rb:689:5:689:8 | hash [element :c] | -| hash_flow.rb:689:12:693:7 | call to update [element :d] | hash_flow.rb:689:5:689:8 | hash [element :d] | -| hash_flow.rb:689:12:693:7 | call to update [element :f] | hash_flow.rb:689:5:689:8 | hash [element :f] | -| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :d] | -| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:12:693:7 | call to update [element :d] | -| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:41:689:49 | old_value | -| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:52:689:60 | new_value | -| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :f] | -| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:12:693:7 | call to update [element :f] | -| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:41:689:49 | old_value | -| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:52:689:60 | new_value | -| hash_flow.rb:689:41:689:49 | old_value | hash_flow.rb:691:14:691:22 | old_value | -| hash_flow.rb:689:52:689:60 | new_value | hash_flow.rb:692:14:692:22 | new_value | -| hash_flow.rb:694:11:694:14 | hash [element :a] | hash_flow.rb:694:11:694:18 | ...[...] | -| hash_flow.rb:694:11:694:18 | ...[...] | hash_flow.rb:694:10:694:19 | ( ... ) | -| hash_flow.rb:696:11:696:14 | hash [element :c] | hash_flow.rb:696:11:696:18 | ...[...] | -| hash_flow.rb:696:11:696:18 | ...[...] | hash_flow.rb:696:10:696:19 | ( ... ) | -| hash_flow.rb:697:11:697:14 | hash [element :d] | hash_flow.rb:697:11:697:18 | ...[...] | -| hash_flow.rb:697:11:697:18 | ...[...] | hash_flow.rb:697:10:697:19 | ( ... ) | -| hash_flow.rb:699:11:699:14 | hash [element :f] | hash_flow.rb:699:11:699:18 | ...[...] | -| hash_flow.rb:699:11:699:18 | ...[...] | hash_flow.rb:699:10:699:19 | ( ... ) | -| hash_flow.rb:701:11:701:15 | hash1 [element :a] | hash_flow.rb:701:11:701:19 | ...[...] | -| hash_flow.rb:701:11:701:19 | ...[...] | hash_flow.rb:701:10:701:20 | ( ... ) | -| hash_flow.rb:703:11:703:15 | hash1 [element :c] | hash_flow.rb:703:11:703:19 | ...[...] | -| hash_flow.rb:703:11:703:19 | ...[...] | hash_flow.rb:703:10:703:20 | ( ... ) | -| hash_flow.rb:704:11:704:15 | hash1 [element :d] | hash_flow.rb:704:11:704:19 | ...[...] | -| hash_flow.rb:704:11:704:19 | ...[...] | hash_flow.rb:704:10:704:20 | ( ... ) | -| hash_flow.rb:706:11:706:15 | hash1 [element :f] | hash_flow.rb:706:11:706:19 | ...[...] | -| hash_flow.rb:706:11:706:19 | ...[...] | hash_flow.rb:706:10:706:20 | ( ... ) | -| hash_flow.rb:712:5:712:8 | hash [element :a] | hash_flow.rb:717:9:717:12 | hash [element :a] | -| hash_flow.rb:712:5:712:8 | hash [element :c] | hash_flow.rb:717:9:717:12 | hash [element :c] | -| hash_flow.rb:713:15:713:25 | call to taint | hash_flow.rb:712:5:712:8 | hash [element :a] | -| hash_flow.rb:715:15:715:25 | call to taint | hash_flow.rb:712:5:712:8 | hash [element :c] | -| hash_flow.rb:717:5:717:5 | a [element] | hash_flow.rb:718:11:718:11 | a [element] | -| hash_flow.rb:717:9:717:12 | hash [element :a] | hash_flow.rb:717:9:717:19 | call to values [element] | -| hash_flow.rb:717:9:717:12 | hash [element :c] | hash_flow.rb:717:9:717:19 | call to values [element] | -| hash_flow.rb:717:9:717:19 | call to values [element] | hash_flow.rb:717:5:717:5 | a [element] | -| hash_flow.rb:718:11:718:11 | a [element] | hash_flow.rb:718:11:718:14 | ...[...] | -| hash_flow.rb:718:11:718:14 | ...[...] | hash_flow.rb:718:10:718:15 | ( ... ) | -| hash_flow.rb:724:5:724:8 | hash [element :a] | hash_flow.rb:729:9:729:12 | hash [element :a] | -| hash_flow.rb:724:5:724:8 | hash [element :a] | hash_flow.rb:731:9:731:12 | hash [element :a] | -| hash_flow.rb:724:5:724:8 | hash [element :c] | hash_flow.rb:731:9:731:12 | hash [element :c] | -| hash_flow.rb:725:15:725:25 | call to taint | hash_flow.rb:724:5:724:8 | hash [element :a] | -| hash_flow.rb:727:15:727:25 | call to taint | hash_flow.rb:724:5:724:8 | hash [element :c] | -| hash_flow.rb:729:5:729:5 | b [element 0] | hash_flow.rb:730:10:730:10 | b [element 0] | -| hash_flow.rb:729:9:729:12 | hash [element :a] | hash_flow.rb:729:9:729:26 | call to values_at [element 0] | -| hash_flow.rb:729:9:729:26 | call to values_at [element 0] | hash_flow.rb:729:5:729:5 | b [element 0] | -| hash_flow.rb:730:10:730:10 | b [element 0] | hash_flow.rb:730:10:730:13 | ...[...] | -| hash_flow.rb:731:5:731:5 | b [element] | hash_flow.rb:732:10:732:10 | b [element] | -| hash_flow.rb:731:9:731:12 | hash [element :a] | hash_flow.rb:731:9:731:31 | call to fetch_values [element] | -| hash_flow.rb:731:9:731:12 | hash [element :c] | hash_flow.rb:731:9:731:31 | call to fetch_values [element] | -| hash_flow.rb:731:9:731:31 | call to fetch_values [element] | hash_flow.rb:731:5:731:5 | b [element] | -| hash_flow.rb:732:10:732:10 | b [element] | hash_flow.rb:732:10:732:13 | ...[...] | -| hash_flow.rb:738:5:738:9 | hash1 [element :a] | hash_flow.rb:748:16:748:20 | hash1 [element :a] | -| hash_flow.rb:738:5:738:9 | hash1 [element :c] | hash_flow.rb:748:16:748:20 | hash1 [element :c] | -| hash_flow.rb:739:15:739:25 | call to taint | hash_flow.rb:738:5:738:9 | hash1 [element :a] | -| hash_flow.rb:741:15:741:25 | call to taint | hash_flow.rb:738:5:738:9 | hash1 [element :c] | -| hash_flow.rb:743:5:743:9 | hash2 [element :d] | hash_flow.rb:748:44:748:48 | hash2 [element :d] | -| hash_flow.rb:743:5:743:9 | hash2 [element :f] | hash_flow.rb:748:44:748:48 | hash2 [element :f] | -| hash_flow.rb:744:15:744:25 | call to taint | hash_flow.rb:743:5:743:9 | hash2 [element :d] | -| hash_flow.rb:746:15:746:25 | call to taint | hash_flow.rb:743:5:743:9 | hash2 [element :f] | -| hash_flow.rb:748:5:748:8 | hash [element :a] | hash_flow.rb:749:10:749:13 | hash [element :a] | -| hash_flow.rb:748:5:748:8 | hash [element :c] | hash_flow.rb:751:10:751:13 | hash [element :c] | -| hash_flow.rb:748:5:748:8 | hash [element :d] | hash_flow.rb:752:10:752:13 | hash [element :d] | -| hash_flow.rb:748:5:748:8 | hash [element :f] | hash_flow.rb:754:10:754:13 | hash [element :f] | -| hash_flow.rb:748:5:748:8 | hash [element :g] | hash_flow.rb:755:10:755:13 | hash [element :g] | -| hash_flow.rb:748:14:748:20 | ** ... [element :a] | hash_flow.rb:748:5:748:8 | hash [element :a] | -| hash_flow.rb:748:14:748:20 | ** ... [element :c] | hash_flow.rb:748:5:748:8 | hash [element :c] | -| hash_flow.rb:748:16:748:20 | hash1 [element :a] | hash_flow.rb:748:14:748:20 | ** ... [element :a] | -| hash_flow.rb:748:16:748:20 | hash1 [element :c] | hash_flow.rb:748:14:748:20 | ** ... [element :c] | -| hash_flow.rb:748:29:748:39 | call to taint | hash_flow.rb:748:5:748:8 | hash [element :g] | -| hash_flow.rb:748:42:748:48 | ** ... [element :d] | hash_flow.rb:748:5:748:8 | hash [element :d] | -| hash_flow.rb:748:42:748:48 | ** ... [element :f] | hash_flow.rb:748:5:748:8 | hash [element :f] | -| hash_flow.rb:748:44:748:48 | hash2 [element :d] | hash_flow.rb:748:42:748:48 | ** ... [element :d] | -| hash_flow.rb:748:44:748:48 | hash2 [element :f] | hash_flow.rb:748:42:748:48 | ** ... [element :f] | -| hash_flow.rb:749:10:749:13 | hash [element :a] | hash_flow.rb:749:10:749:17 | ...[...] | -| hash_flow.rb:751:10:751:13 | hash [element :c] | hash_flow.rb:751:10:751:17 | ...[...] | -| hash_flow.rb:752:10:752:13 | hash [element :d] | hash_flow.rb:752:10:752:17 | ...[...] | -| hash_flow.rb:754:10:754:13 | hash [element :f] | hash_flow.rb:754:10:754:17 | ...[...] | -| hash_flow.rb:755:10:755:13 | hash [element :g] | hash_flow.rb:755:10:755:17 | ...[...] | -| hash_flow.rb:762:5:762:8 | hash [element :a] | hash_flow.rb:769:10:769:13 | hash [element :a] | -| hash_flow.rb:762:5:762:8 | hash [element :c] | hash_flow.rb:771:10:771:13 | hash [element :c] | -| hash_flow.rb:762:5:762:8 | hash [element :c] | hash_flow.rb:774:9:774:12 | hash [element :c] | -| hash_flow.rb:762:5:762:8 | hash [element :d] | hash_flow.rb:772:10:772:13 | hash [element :d] | -| hash_flow.rb:763:15:763:25 | call to taint | hash_flow.rb:762:5:762:8 | hash [element :a] | -| hash_flow.rb:765:15:765:25 | call to taint | hash_flow.rb:762:5:762:8 | hash [element :c] | -| hash_flow.rb:766:15:766:25 | call to taint | hash_flow.rb:762:5:762:8 | hash [element :d] | -| hash_flow.rb:769:10:769:13 | hash [element :a] | hash_flow.rb:769:10:769:17 | ...[...] | -| hash_flow.rb:771:10:771:13 | hash [element :c] | hash_flow.rb:771:10:771:17 | ...[...] | -| hash_flow.rb:772:10:772:13 | hash [element :d] | hash_flow.rb:772:10:772:17 | ...[...] | -| hash_flow.rb:774:5:774:5 | x [element :c] | hash_flow.rb:778:10:778:10 | x [element :c] | -| hash_flow.rb:774:9:774:12 | [post] hash [element :c] | hash_flow.rb:783:10:783:13 | hash [element :c] | -| hash_flow.rb:774:9:774:12 | hash [element :c] | hash_flow.rb:774:9:774:12 | [post] hash [element :c] | -| hash_flow.rb:774:9:774:12 | hash [element :c] | hash_flow.rb:774:9:774:31 | call to except! [element :c] | -| hash_flow.rb:774:9:774:31 | call to except! [element :c] | hash_flow.rb:774:5:774:5 | x [element :c] | -| hash_flow.rb:778:10:778:10 | x [element :c] | hash_flow.rb:778:10:778:14 | ...[...] | -| hash_flow.rb:783:10:783:13 | hash [element :c] | hash_flow.rb:783:10:783:17 | ...[...] | -| hash_flow.rb:790:5:790:9 | hash1 [element :a] | hash_flow.rb:800:12:800:16 | hash1 [element :a] | -| hash_flow.rb:790:5:790:9 | hash1 [element :c] | hash_flow.rb:800:12:800:16 | hash1 [element :c] | -| hash_flow.rb:791:15:791:25 | call to taint | hash_flow.rb:790:5:790:9 | hash1 [element :a] | -| hash_flow.rb:793:15:793:25 | call to taint | hash_flow.rb:790:5:790:9 | hash1 [element :c] | -| hash_flow.rb:795:5:795:9 | hash2 [element :d] | hash_flow.rb:800:29:800:33 | hash2 [element :d] | -| hash_flow.rb:795:5:795:9 | hash2 [element :f] | hash_flow.rb:800:29:800:33 | hash2 [element :f] | -| hash_flow.rb:796:15:796:25 | call to taint | hash_flow.rb:795:5:795:9 | hash2 [element :d] | -| hash_flow.rb:798:15:798:25 | call to taint | hash_flow.rb:795:5:795:9 | hash2 [element :f] | -| hash_flow.rb:800:5:800:8 | hash [element :a] | hash_flow.rb:805:11:805:14 | hash [element :a] | -| hash_flow.rb:800:5:800:8 | hash [element :c] | hash_flow.rb:807:11:807:14 | hash [element :c] | -| hash_flow.rb:800:5:800:8 | hash [element :d] | hash_flow.rb:808:11:808:14 | hash [element :d] | -| hash_flow.rb:800:5:800:8 | hash [element :f] | hash_flow.rb:810:11:810:14 | hash [element :f] | -| hash_flow.rb:800:12:800:16 | hash1 [element :a] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :a] | -| hash_flow.rb:800:12:800:16 | hash1 [element :a] | hash_flow.rb:800:45:800:53 | old_value | -| hash_flow.rb:800:12:800:16 | hash1 [element :a] | hash_flow.rb:800:56:800:64 | new_value | -| hash_flow.rb:800:12:800:16 | hash1 [element :c] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :c] | -| hash_flow.rb:800:12:800:16 | hash1 [element :c] | hash_flow.rb:800:45:800:53 | old_value | -| hash_flow.rb:800:12:800:16 | hash1 [element :c] | hash_flow.rb:800:56:800:64 | new_value | -| hash_flow.rb:800:12:804:7 | call to deep_merge [element :a] | hash_flow.rb:800:5:800:8 | hash [element :a] | -| hash_flow.rb:800:12:804:7 | call to deep_merge [element :c] | hash_flow.rb:800:5:800:8 | hash [element :c] | -| hash_flow.rb:800:12:804:7 | call to deep_merge [element :d] | hash_flow.rb:800:5:800:8 | hash [element :d] | -| hash_flow.rb:800:12:804:7 | call to deep_merge [element :f] | hash_flow.rb:800:5:800:8 | hash [element :f] | -| hash_flow.rb:800:29:800:33 | hash2 [element :d] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :d] | -| hash_flow.rb:800:29:800:33 | hash2 [element :d] | hash_flow.rb:800:45:800:53 | old_value | -| hash_flow.rb:800:29:800:33 | hash2 [element :d] | hash_flow.rb:800:56:800:64 | new_value | -| hash_flow.rb:800:29:800:33 | hash2 [element :f] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :f] | -| hash_flow.rb:800:29:800:33 | hash2 [element :f] | hash_flow.rb:800:45:800:53 | old_value | -| hash_flow.rb:800:29:800:33 | hash2 [element :f] | hash_flow.rb:800:56:800:64 | new_value | -| hash_flow.rb:800:45:800:53 | old_value | hash_flow.rb:802:14:802:22 | old_value | -| hash_flow.rb:800:56:800:64 | new_value | hash_flow.rb:803:14:803:22 | new_value | -| hash_flow.rb:805:11:805:14 | hash [element :a] | hash_flow.rb:805:11:805:18 | ...[...] | -| hash_flow.rb:805:11:805:18 | ...[...] | hash_flow.rb:805:10:805:19 | ( ... ) | -| hash_flow.rb:807:11:807:14 | hash [element :c] | hash_flow.rb:807:11:807:18 | ...[...] | -| hash_flow.rb:807:11:807:18 | ...[...] | hash_flow.rb:807:10:807:19 | ( ... ) | -| hash_flow.rb:808:11:808:14 | hash [element :d] | hash_flow.rb:808:11:808:18 | ...[...] | -| hash_flow.rb:808:11:808:18 | ...[...] | hash_flow.rb:808:10:808:19 | ( ... ) | -| hash_flow.rb:810:11:810:14 | hash [element :f] | hash_flow.rb:810:11:810:18 | ...[...] | -| hash_flow.rb:810:11:810:18 | ...[...] | hash_flow.rb:810:10:810:19 | ( ... ) | -| hash_flow.rb:816:5:816:9 | hash1 [element :a] | hash_flow.rb:826:12:826:16 | hash1 [element :a] | -| hash_flow.rb:816:5:816:9 | hash1 [element :c] | hash_flow.rb:826:12:826:16 | hash1 [element :c] | -| hash_flow.rb:817:15:817:25 | call to taint | hash_flow.rb:816:5:816:9 | hash1 [element :a] | -| hash_flow.rb:819:15:819:25 | call to taint | hash_flow.rb:816:5:816:9 | hash1 [element :c] | -| hash_flow.rb:821:5:821:9 | hash2 [element :d] | hash_flow.rb:826:30:826:34 | hash2 [element :d] | -| hash_flow.rb:821:5:821:9 | hash2 [element :f] | hash_flow.rb:826:30:826:34 | hash2 [element :f] | -| hash_flow.rb:822:15:822:25 | call to taint | hash_flow.rb:821:5:821:9 | hash2 [element :d] | -| hash_flow.rb:824:15:824:25 | call to taint | hash_flow.rb:821:5:821:9 | hash2 [element :f] | -| hash_flow.rb:826:5:826:8 | hash [element :a] | hash_flow.rb:831:11:831:14 | hash [element :a] | -| hash_flow.rb:826:5:826:8 | hash [element :c] | hash_flow.rb:833:11:833:14 | hash [element :c] | -| hash_flow.rb:826:5:826:8 | hash [element :d] | hash_flow.rb:834:11:834:14 | hash [element :d] | -| hash_flow.rb:826:5:826:8 | hash [element :f] | hash_flow.rb:836:11:836:14 | hash [element :f] | -| hash_flow.rb:826:12:826:16 | [post] hash1 [element :a] | hash_flow.rb:838:11:838:15 | hash1 [element :a] | -| hash_flow.rb:826:12:826:16 | [post] hash1 [element :c] | hash_flow.rb:840:11:840:15 | hash1 [element :c] | -| hash_flow.rb:826:12:826:16 | [post] hash1 [element :d] | hash_flow.rb:841:11:841:15 | hash1 [element :d] | -| hash_flow.rb:826:12:826:16 | [post] hash1 [element :f] | hash_flow.rb:843:11:843:15 | hash1 [element :f] | -| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :a] | -| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :a] | -| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:46:826:54 | old_value | -| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:57:826:65 | new_value | -| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :c] | -| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :c] | -| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:46:826:54 | old_value | -| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:57:826:65 | new_value | -| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :a] | hash_flow.rb:826:5:826:8 | hash [element :a] | -| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :c] | hash_flow.rb:826:5:826:8 | hash [element :c] | -| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :d] | hash_flow.rb:826:5:826:8 | hash [element :d] | -| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :f] | hash_flow.rb:826:5:826:8 | hash [element :f] | -| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :d] | -| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :d] | -| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:46:826:54 | old_value | -| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:57:826:65 | new_value | -| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :f] | -| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :f] | -| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:46:826:54 | old_value | -| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:57:826:65 | new_value | -| hash_flow.rb:826:46:826:54 | old_value | hash_flow.rb:828:14:828:22 | old_value | -| hash_flow.rb:826:57:826:65 | new_value | hash_flow.rb:829:14:829:22 | new_value | -| hash_flow.rb:831:11:831:14 | hash [element :a] | hash_flow.rb:831:11:831:18 | ...[...] | -| hash_flow.rb:831:11:831:18 | ...[...] | hash_flow.rb:831:10:831:19 | ( ... ) | -| hash_flow.rb:833:11:833:14 | hash [element :c] | hash_flow.rb:833:11:833:18 | ...[...] | -| hash_flow.rb:833:11:833:18 | ...[...] | hash_flow.rb:833:10:833:19 | ( ... ) | -| hash_flow.rb:834:11:834:14 | hash [element :d] | hash_flow.rb:834:11:834:18 | ...[...] | -| hash_flow.rb:834:11:834:18 | ...[...] | hash_flow.rb:834:10:834:19 | ( ... ) | -| hash_flow.rb:836:11:836:14 | hash [element :f] | hash_flow.rb:836:11:836:18 | ...[...] | -| hash_flow.rb:836:11:836:18 | ...[...] | hash_flow.rb:836:10:836:19 | ( ... ) | -| hash_flow.rb:838:11:838:15 | hash1 [element :a] | hash_flow.rb:838:11:838:19 | ...[...] | -| hash_flow.rb:838:11:838:19 | ...[...] | hash_flow.rb:838:10:838:20 | ( ... ) | -| hash_flow.rb:840:11:840:15 | hash1 [element :c] | hash_flow.rb:840:11:840:19 | ...[...] | -| hash_flow.rb:840:11:840:19 | ...[...] | hash_flow.rb:840:10:840:20 | ( ... ) | -| hash_flow.rb:841:11:841:15 | hash1 [element :d] | hash_flow.rb:841:11:841:19 | ...[...] | -| hash_flow.rb:841:11:841:19 | ...[...] | hash_flow.rb:841:10:841:20 | ( ... ) | -| hash_flow.rb:843:11:843:15 | hash1 [element :f] | hash_flow.rb:843:11:843:19 | ...[...] | -| hash_flow.rb:843:11:843:19 | ...[...] | hash_flow.rb:843:10:843:20 | ( ... ) | -| hash_flow.rb:849:5:849:9 | hash1 [element :a] | hash_flow.rb:860:13:860:17 | hash1 [element :a] | -| hash_flow.rb:849:5:849:9 | hash1 [element :a] | hash_flow.rb:869:13:869:17 | hash1 [element :a] | -| hash_flow.rb:849:5:849:9 | hash1 [element :c] | hash_flow.rb:860:13:860:17 | hash1 [element :c] | -| hash_flow.rb:849:5:849:9 | hash1 [element :c] | hash_flow.rb:869:13:869:17 | hash1 [element :c] | -| hash_flow.rb:850:12:850:22 | call to taint | hash_flow.rb:849:5:849:9 | hash1 [element :a] | -| hash_flow.rb:852:12:852:22 | call to taint | hash_flow.rb:849:5:849:9 | hash1 [element :c] | -| hash_flow.rb:854:5:854:9 | hash2 [element :d] | hash_flow.rb:860:33:860:37 | hash2 [element :d] | -| hash_flow.rb:854:5:854:9 | hash2 [element :d] | hash_flow.rb:869:33:869:37 | hash2 [element :d] | -| hash_flow.rb:854:5:854:9 | hash2 [element :f] | hash_flow.rb:860:33:860:37 | hash2 [element :f] | -| hash_flow.rb:854:5:854:9 | hash2 [element :f] | hash_flow.rb:869:33:869:37 | hash2 [element :f] | -| hash_flow.rb:855:12:855:22 | call to taint | hash_flow.rb:854:5:854:9 | hash2 [element :d] | -| hash_flow.rb:857:12:857:22 | call to taint | hash_flow.rb:854:5:854:9 | hash2 [element :f] | -| hash_flow.rb:860:5:860:9 | hash3 [element :a] | hash_flow.rb:861:11:861:15 | hash3 [element :a] | -| hash_flow.rb:860:5:860:9 | hash3 [element :c] | hash_flow.rb:863:11:863:15 | hash3 [element :c] | -| hash_flow.rb:860:5:860:9 | hash3 [element :d] | hash_flow.rb:864:11:864:15 | hash3 [element :d] | -| hash_flow.rb:860:5:860:9 | hash3 [element :f] | hash_flow.rb:866:11:866:15 | hash3 [element :f] | -| hash_flow.rb:860:13:860:17 | hash1 [element :a] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :a] | -| hash_flow.rb:860:13:860:17 | hash1 [element :c] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :c] | -| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :a] | hash_flow.rb:860:5:860:9 | hash3 [element :a] | -| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :c] | hash_flow.rb:860:5:860:9 | hash3 [element :c] | -| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :d] | hash_flow.rb:860:5:860:9 | hash3 [element :d] | -| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :f] | hash_flow.rb:860:5:860:9 | hash3 [element :f] | -| hash_flow.rb:860:33:860:37 | hash2 [element :d] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :d] | -| hash_flow.rb:860:33:860:37 | hash2 [element :f] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :f] | -| hash_flow.rb:861:11:861:15 | hash3 [element :a] | hash_flow.rb:861:11:861:19 | ...[...] | -| hash_flow.rb:861:11:861:19 | ...[...] | hash_flow.rb:861:10:861:20 | ( ... ) | -| hash_flow.rb:863:11:863:15 | hash3 [element :c] | hash_flow.rb:863:11:863:19 | ...[...] | -| hash_flow.rb:863:11:863:19 | ...[...] | hash_flow.rb:863:10:863:20 | ( ... ) | -| hash_flow.rb:864:11:864:15 | hash3 [element :d] | hash_flow.rb:864:11:864:19 | ...[...] | -| hash_flow.rb:864:11:864:19 | ...[...] | hash_flow.rb:864:10:864:20 | ( ... ) | -| hash_flow.rb:866:11:866:15 | hash3 [element :f] | hash_flow.rb:866:11:866:19 | ...[...] | -| hash_flow.rb:866:11:866:19 | ...[...] | hash_flow.rb:866:10:866:20 | ( ... ) | -| hash_flow.rb:869:5:869:9 | hash4 [element :a] | hash_flow.rb:870:11:870:15 | hash4 [element :a] | -| hash_flow.rb:869:5:869:9 | hash4 [element :c] | hash_flow.rb:872:11:872:15 | hash4 [element :c] | -| hash_flow.rb:869:5:869:9 | hash4 [element :d] | hash_flow.rb:873:11:873:15 | hash4 [element :d] | -| hash_flow.rb:869:5:869:9 | hash4 [element :f] | hash_flow.rb:875:11:875:15 | hash4 [element :f] | -| hash_flow.rb:869:13:869:17 | hash1 [element :a] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :a] | -| hash_flow.rb:869:13:869:17 | hash1 [element :c] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :c] | -| hash_flow.rb:869:13:869:38 | call to with_defaults [element :a] | hash_flow.rb:869:5:869:9 | hash4 [element :a] | -| hash_flow.rb:869:13:869:38 | call to with_defaults [element :c] | hash_flow.rb:869:5:869:9 | hash4 [element :c] | -| hash_flow.rb:869:13:869:38 | call to with_defaults [element :d] | hash_flow.rb:869:5:869:9 | hash4 [element :d] | -| hash_flow.rb:869:13:869:38 | call to with_defaults [element :f] | hash_flow.rb:869:5:869:9 | hash4 [element :f] | -| hash_flow.rb:869:33:869:37 | hash2 [element :d] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :d] | -| hash_flow.rb:869:33:869:37 | hash2 [element :f] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :f] | -| hash_flow.rb:870:11:870:15 | hash4 [element :a] | hash_flow.rb:870:11:870:19 | ...[...] | -| hash_flow.rb:870:11:870:19 | ...[...] | hash_flow.rb:870:10:870:20 | ( ... ) | -| hash_flow.rb:872:11:872:15 | hash4 [element :c] | hash_flow.rb:872:11:872:19 | ...[...] | -| hash_flow.rb:872:11:872:19 | ...[...] | hash_flow.rb:872:10:872:20 | ( ... ) | -| hash_flow.rb:873:11:873:15 | hash4 [element :d] | hash_flow.rb:873:11:873:19 | ...[...] | -| hash_flow.rb:873:11:873:19 | ...[...] | hash_flow.rb:873:10:873:20 | ( ... ) | -| hash_flow.rb:875:11:875:15 | hash4 [element :f] | hash_flow.rb:875:11:875:19 | ...[...] | -| hash_flow.rb:875:11:875:19 | ...[...] | hash_flow.rb:875:10:875:20 | ( ... ) | -| hash_flow.rb:881:5:881:9 | hash1 [element :a] | hash_flow.rb:892:12:892:16 | hash1 [element :a] | -| hash_flow.rb:881:5:881:9 | hash1 [element :c] | hash_flow.rb:892:12:892:16 | hash1 [element :c] | -| hash_flow.rb:882:12:882:22 | call to taint | hash_flow.rb:881:5:881:9 | hash1 [element :a] | -| hash_flow.rb:884:12:884:22 | call to taint | hash_flow.rb:881:5:881:9 | hash1 [element :c] | -| hash_flow.rb:886:5:886:9 | hash2 [element :d] | hash_flow.rb:892:33:892:37 | hash2 [element :d] | -| hash_flow.rb:886:5:886:9 | hash2 [element :f] | hash_flow.rb:892:33:892:37 | hash2 [element :f] | -| hash_flow.rb:887:12:887:22 | call to taint | hash_flow.rb:886:5:886:9 | hash2 [element :d] | -| hash_flow.rb:889:12:889:22 | call to taint | hash_flow.rb:886:5:886:9 | hash2 [element :f] | -| hash_flow.rb:892:5:892:8 | hash [element :a] | hash_flow.rb:893:11:893:14 | hash [element :a] | -| hash_flow.rb:892:5:892:8 | hash [element :c] | hash_flow.rb:895:11:895:14 | hash [element :c] | -| hash_flow.rb:892:5:892:8 | hash [element :d] | hash_flow.rb:896:11:896:14 | hash [element :d] | -| hash_flow.rb:892:5:892:8 | hash [element :f] | hash_flow.rb:898:11:898:14 | hash [element :f] | -| hash_flow.rb:892:12:892:16 | [post] hash1 [element :a] | hash_flow.rb:900:11:900:15 | hash1 [element :a] | -| hash_flow.rb:892:12:892:16 | [post] hash1 [element :c] | hash_flow.rb:902:11:902:15 | hash1 [element :c] | -| hash_flow.rb:892:12:892:16 | [post] hash1 [element :d] | hash_flow.rb:903:11:903:15 | hash1 [element :d] | -| hash_flow.rb:892:12:892:16 | [post] hash1 [element :f] | hash_flow.rb:905:11:905:15 | hash1 [element :f] | -| hash_flow.rb:892:12:892:16 | hash1 [element :a] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :a] | -| hash_flow.rb:892:12:892:16 | hash1 [element :a] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :a] | -| hash_flow.rb:892:12:892:16 | hash1 [element :c] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :c] | -| hash_flow.rb:892:12:892:16 | hash1 [element :c] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :c] | -| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :a] | hash_flow.rb:892:5:892:8 | hash [element :a] | -| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :c] | hash_flow.rb:892:5:892:8 | hash [element :c] | -| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :d] | hash_flow.rb:892:5:892:8 | hash [element :d] | -| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :f] | hash_flow.rb:892:5:892:8 | hash [element :f] | -| hash_flow.rb:892:33:892:37 | hash2 [element :d] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :d] | -| hash_flow.rb:892:33:892:37 | hash2 [element :d] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :d] | -| hash_flow.rb:892:33:892:37 | hash2 [element :f] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :f] | -| hash_flow.rb:892:33:892:37 | hash2 [element :f] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :f] | -| hash_flow.rb:893:11:893:14 | hash [element :a] | hash_flow.rb:893:11:893:18 | ...[...] | -| hash_flow.rb:893:11:893:18 | ...[...] | hash_flow.rb:893:10:893:19 | ( ... ) | -| hash_flow.rb:895:11:895:14 | hash [element :c] | hash_flow.rb:895:11:895:18 | ...[...] | -| hash_flow.rb:895:11:895:18 | ...[...] | hash_flow.rb:895:10:895:19 | ( ... ) | -| hash_flow.rb:896:11:896:14 | hash [element :d] | hash_flow.rb:896:11:896:18 | ...[...] | -| hash_flow.rb:896:11:896:18 | ...[...] | hash_flow.rb:896:10:896:19 | ( ... ) | -| hash_flow.rb:898:11:898:14 | hash [element :f] | hash_flow.rb:898:11:898:18 | ...[...] | -| hash_flow.rb:898:11:898:18 | ...[...] | hash_flow.rb:898:10:898:19 | ( ... ) | -| hash_flow.rb:900:11:900:15 | hash1 [element :a] | hash_flow.rb:900:11:900:19 | ...[...] | -| hash_flow.rb:900:11:900:19 | ...[...] | hash_flow.rb:900:10:900:20 | ( ... ) | -| hash_flow.rb:902:11:902:15 | hash1 [element :c] | hash_flow.rb:902:11:902:19 | ...[...] | -| hash_flow.rb:902:11:902:19 | ...[...] | hash_flow.rb:902:10:902:20 | ( ... ) | -| hash_flow.rb:903:11:903:15 | hash1 [element :d] | hash_flow.rb:903:11:903:19 | ...[...] | -| hash_flow.rb:903:11:903:19 | ...[...] | hash_flow.rb:903:10:903:20 | ( ... ) | -| hash_flow.rb:905:11:905:15 | hash1 [element :f] | hash_flow.rb:905:11:905:19 | ...[...] | -| hash_flow.rb:905:11:905:19 | ...[...] | hash_flow.rb:905:10:905:20 | ( ... ) | -| hash_flow.rb:911:5:911:9 | hash1 [element :a] | hash_flow.rb:922:12:922:16 | hash1 [element :a] | -| hash_flow.rb:911:5:911:9 | hash1 [element :c] | hash_flow.rb:922:12:922:16 | hash1 [element :c] | -| hash_flow.rb:912:12:912:22 | call to taint | hash_flow.rb:911:5:911:9 | hash1 [element :a] | -| hash_flow.rb:914:12:914:22 | call to taint | hash_flow.rb:911:5:911:9 | hash1 [element :c] | -| hash_flow.rb:916:5:916:9 | hash2 [element :d] | hash_flow.rb:922:33:922:37 | hash2 [element :d] | -| hash_flow.rb:916:5:916:9 | hash2 [element :f] | hash_flow.rb:922:33:922:37 | hash2 [element :f] | -| hash_flow.rb:917:12:917:22 | call to taint | hash_flow.rb:916:5:916:9 | hash2 [element :d] | -| hash_flow.rb:919:12:919:22 | call to taint | hash_flow.rb:916:5:916:9 | hash2 [element :f] | -| hash_flow.rb:922:5:922:8 | hash [element :a] | hash_flow.rb:923:11:923:14 | hash [element :a] | -| hash_flow.rb:922:5:922:8 | hash [element :c] | hash_flow.rb:925:11:925:14 | hash [element :c] | -| hash_flow.rb:922:5:922:8 | hash [element :d] | hash_flow.rb:926:11:926:14 | hash [element :d] | -| hash_flow.rb:922:5:922:8 | hash [element :f] | hash_flow.rb:928:11:928:14 | hash [element :f] | -| hash_flow.rb:922:12:922:16 | [post] hash1 [element :a] | hash_flow.rb:930:11:930:15 | hash1 [element :a] | -| hash_flow.rb:922:12:922:16 | [post] hash1 [element :c] | hash_flow.rb:932:11:932:15 | hash1 [element :c] | -| hash_flow.rb:922:12:922:16 | [post] hash1 [element :d] | hash_flow.rb:933:11:933:15 | hash1 [element :d] | -| hash_flow.rb:922:12:922:16 | [post] hash1 [element :f] | hash_flow.rb:935:11:935:15 | hash1 [element :f] | -| hash_flow.rb:922:12:922:16 | hash1 [element :a] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :a] | -| hash_flow.rb:922:12:922:16 | hash1 [element :a] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :a] | -| hash_flow.rb:922:12:922:16 | hash1 [element :c] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :c] | -| hash_flow.rb:922:12:922:16 | hash1 [element :c] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :c] | -| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :a] | hash_flow.rb:922:5:922:8 | hash [element :a] | -| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :c] | hash_flow.rb:922:5:922:8 | hash [element :c] | -| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :d] | hash_flow.rb:922:5:922:8 | hash [element :d] | -| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :f] | hash_flow.rb:922:5:922:8 | hash [element :f] | -| hash_flow.rb:922:33:922:37 | hash2 [element :d] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :d] | -| hash_flow.rb:922:33:922:37 | hash2 [element :d] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :d] | -| hash_flow.rb:922:33:922:37 | hash2 [element :f] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :f] | -| hash_flow.rb:922:33:922:37 | hash2 [element :f] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :f] | -| hash_flow.rb:923:11:923:14 | hash [element :a] | hash_flow.rb:923:11:923:18 | ...[...] | -| hash_flow.rb:923:11:923:18 | ...[...] | hash_flow.rb:923:10:923:19 | ( ... ) | -| hash_flow.rb:925:11:925:14 | hash [element :c] | hash_flow.rb:925:11:925:18 | ...[...] | -| hash_flow.rb:925:11:925:18 | ...[...] | hash_flow.rb:925:10:925:19 | ( ... ) | -| hash_flow.rb:926:11:926:14 | hash [element :d] | hash_flow.rb:926:11:926:18 | ...[...] | -| hash_flow.rb:926:11:926:18 | ...[...] | hash_flow.rb:926:10:926:19 | ( ... ) | -| hash_flow.rb:928:11:928:14 | hash [element :f] | hash_flow.rb:928:11:928:18 | ...[...] | -| hash_flow.rb:928:11:928:18 | ...[...] | hash_flow.rb:928:10:928:19 | ( ... ) | -| hash_flow.rb:930:11:930:15 | hash1 [element :a] | hash_flow.rb:930:11:930:19 | ...[...] | -| hash_flow.rb:930:11:930:19 | ...[...] | hash_flow.rb:930:10:930:20 | ( ... ) | -| hash_flow.rb:932:11:932:15 | hash1 [element :c] | hash_flow.rb:932:11:932:19 | ...[...] | -| hash_flow.rb:932:11:932:19 | ...[...] | hash_flow.rb:932:10:932:20 | ( ... ) | -| hash_flow.rb:933:11:933:15 | hash1 [element :d] | hash_flow.rb:933:11:933:19 | ...[...] | -| hash_flow.rb:933:11:933:19 | ...[...] | hash_flow.rb:933:10:933:20 | ( ... ) | -| hash_flow.rb:935:11:935:15 | hash1 [element :f] | hash_flow.rb:935:11:935:19 | ...[...] | -| hash_flow.rb:935:11:935:19 | ...[...] | hash_flow.rb:935:10:935:20 | ( ... ) | -| hash_flow.rb:941:5:941:9 | hash1 [element :a] | hash_flow.rb:952:12:952:16 | hash1 [element :a] | -| hash_flow.rb:941:5:941:9 | hash1 [element :c] | hash_flow.rb:952:12:952:16 | hash1 [element :c] | -| hash_flow.rb:942:12:942:22 | call to taint | hash_flow.rb:941:5:941:9 | hash1 [element :a] | -| hash_flow.rb:944:12:944:22 | call to taint | hash_flow.rb:941:5:941:9 | hash1 [element :c] | -| hash_flow.rb:946:5:946:9 | hash2 [element :d] | hash_flow.rb:952:33:952:37 | hash2 [element :d] | -| hash_flow.rb:946:5:946:9 | hash2 [element :f] | hash_flow.rb:952:33:952:37 | hash2 [element :f] | -| hash_flow.rb:947:12:947:22 | call to taint | hash_flow.rb:946:5:946:9 | hash2 [element :d] | -| hash_flow.rb:949:12:949:22 | call to taint | hash_flow.rb:946:5:946:9 | hash2 [element :f] | -| hash_flow.rb:952:5:952:8 | hash [element :a] | hash_flow.rb:953:11:953:14 | hash [element :a] | -| hash_flow.rb:952:5:952:8 | hash [element :c] | hash_flow.rb:955:11:955:14 | hash [element :c] | -| hash_flow.rb:952:5:952:8 | hash [element :d] | hash_flow.rb:956:11:956:14 | hash [element :d] | -| hash_flow.rb:952:5:952:8 | hash [element :f] | hash_flow.rb:958:11:958:14 | hash [element :f] | -| hash_flow.rb:952:12:952:16 | [post] hash1 [element :a] | hash_flow.rb:960:11:960:15 | hash1 [element :a] | -| hash_flow.rb:952:12:952:16 | [post] hash1 [element :c] | hash_flow.rb:962:11:962:15 | hash1 [element :c] | -| hash_flow.rb:952:12:952:16 | [post] hash1 [element :d] | hash_flow.rb:963:11:963:15 | hash1 [element :d] | -| hash_flow.rb:952:12:952:16 | [post] hash1 [element :f] | hash_flow.rb:965:11:965:15 | hash1 [element :f] | -| hash_flow.rb:952:12:952:16 | hash1 [element :a] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :a] | -| hash_flow.rb:952:12:952:16 | hash1 [element :a] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :a] | -| hash_flow.rb:952:12:952:16 | hash1 [element :c] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :c] | -| hash_flow.rb:952:12:952:16 | hash1 [element :c] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :c] | -| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :a] | hash_flow.rb:952:5:952:8 | hash [element :a] | -| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :c] | hash_flow.rb:952:5:952:8 | hash [element :c] | -| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :d] | hash_flow.rb:952:5:952:8 | hash [element :d] | -| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :f] | hash_flow.rb:952:5:952:8 | hash [element :f] | -| hash_flow.rb:952:33:952:37 | hash2 [element :d] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :d] | -| hash_flow.rb:952:33:952:37 | hash2 [element :d] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :d] | -| hash_flow.rb:952:33:952:37 | hash2 [element :f] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :f] | -| hash_flow.rb:952:33:952:37 | hash2 [element :f] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :f] | -| hash_flow.rb:953:11:953:14 | hash [element :a] | hash_flow.rb:953:11:953:18 | ...[...] | -| hash_flow.rb:953:11:953:18 | ...[...] | hash_flow.rb:953:10:953:19 | ( ... ) | -| hash_flow.rb:955:11:955:14 | hash [element :c] | hash_flow.rb:955:11:955:18 | ...[...] | -| hash_flow.rb:955:11:955:18 | ...[...] | hash_flow.rb:955:10:955:19 | ( ... ) | -| hash_flow.rb:956:11:956:14 | hash [element :d] | hash_flow.rb:956:11:956:18 | ...[...] | -| hash_flow.rb:956:11:956:18 | ...[...] | hash_flow.rb:956:10:956:19 | ( ... ) | -| hash_flow.rb:958:11:958:14 | hash [element :f] | hash_flow.rb:958:11:958:18 | ...[...] | -| hash_flow.rb:958:11:958:18 | ...[...] | hash_flow.rb:958:10:958:19 | ( ... ) | -| hash_flow.rb:960:11:960:15 | hash1 [element :a] | hash_flow.rb:960:11:960:19 | ...[...] | -| hash_flow.rb:960:11:960:19 | ...[...] | hash_flow.rb:960:10:960:20 | ( ... ) | -| hash_flow.rb:962:11:962:15 | hash1 [element :c] | hash_flow.rb:962:11:962:19 | ...[...] | -| hash_flow.rb:962:11:962:19 | ...[...] | hash_flow.rb:962:10:962:20 | ( ... ) | -| hash_flow.rb:963:11:963:15 | hash1 [element :d] | hash_flow.rb:963:11:963:19 | ...[...] | -| hash_flow.rb:963:11:963:19 | ...[...] | hash_flow.rb:963:10:963:20 | ( ... ) | -| hash_flow.rb:965:11:965:15 | hash1 [element :f] | hash_flow.rb:965:11:965:19 | ...[...] | -| hash_flow.rb:965:11:965:19 | ...[...] | hash_flow.rb:965:10:965:20 | ( ... ) | -| hash_flow.rb:971:5:971:5 | h [element :b] | hash_flow.rb:973:10:973:10 | h [element :b] | -| hash_flow.rb:971:5:971:5 | h [element :b] | hash_flow.rb:975:10:975:10 | h [element :b] | -| hash_flow.rb:971:9:971:38 | ...[...] [element :b] | hash_flow.rb:971:5:971:5 | h [element :b] | -| hash_flow.rb:971:23:971:31 | call to taint | hash_flow.rb:971:9:971:38 | ...[...] [element :b] | -| hash_flow.rb:973:10:973:10 | h [element :b] | hash_flow.rb:973:10:973:14 | ...[...] | -| hash_flow.rb:975:10:975:10 | h [element :b] | hash_flow.rb:975:10:975:13 | ...[...] | -| hash_flow.rb:994:9:994:10 | h2 [element :b] | hash_flow.rb:996:14:996:15 | h2 [element :b] | -| hash_flow.rb:994:9:994:10 | h2 [element :b] | hash_flow.rb:998:14:998:15 | h2 [element :b] | -| hash_flow.rb:994:14:994:47 | ...[...] [element :b] | hash_flow.rb:994:9:994:10 | h2 [element :b] | -| hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:994:14:994:47 | ...[...] [element :b] | -| hash_flow.rb:996:14:996:15 | h2 [element :b] | hash_flow.rb:996:14:996:19 | ...[...] | -| hash_flow.rb:998:14:998:15 | h2 [element :b] | hash_flow.rb:998:14:998:18 | ...[...] | +| hash_flow.rb:10:5:10:8 | hash [element 0] | hash_flow.rb:30:10:30:13 | hash [element 0] | provenance | | +| hash_flow.rb:10:5:10:8 | hash [element :a] | hash_flow.rb:22:10:22:13 | hash [element :a] | provenance | | +| hash_flow.rb:10:5:10:8 | hash [element :c] | hash_flow.rb:24:10:24:13 | hash [element :c] | provenance | | +| hash_flow.rb:10:5:10:8 | hash [element e] | hash_flow.rb:26:10:26:13 | hash [element e] | provenance | | +| hash_flow.rb:10:5:10:8 | hash [element g] | hash_flow.rb:28:10:28:13 | hash [element g] | provenance | | +| hash_flow.rb:11:15:11:24 | call to taint | hash_flow.rb:10:5:10:8 | hash [element :a] | provenance | | +| hash_flow.rb:13:12:13:21 | call to taint | hash_flow.rb:10:5:10:8 | hash [element :c] | provenance | | +| hash_flow.rb:15:14:15:23 | call to taint | hash_flow.rb:10:5:10:8 | hash [element e] | provenance | | +| hash_flow.rb:17:16:17:25 | call to taint | hash_flow.rb:10:5:10:8 | hash [element g] | provenance | | +| hash_flow.rb:19:14:19:23 | call to taint | hash_flow.rb:10:5:10:8 | hash [element 0] | provenance | | +| hash_flow.rb:22:10:22:13 | hash [element :a] | hash_flow.rb:22:10:22:17 | ...[...] | provenance | | +| hash_flow.rb:24:10:24:13 | hash [element :c] | hash_flow.rb:24:10:24:17 | ...[...] | provenance | | +| hash_flow.rb:26:10:26:13 | hash [element e] | hash_flow.rb:26:10:26:18 | ...[...] | provenance | | +| hash_flow.rb:28:10:28:13 | hash [element g] | hash_flow.rb:28:10:28:18 | ...[...] | provenance | | +| hash_flow.rb:30:10:30:13 | hash [element 0] | hash_flow.rb:30:10:30:16 | ...[...] | provenance | | +| hash_flow.rb:38:5:38:8 | [post] hash [element 0] | hash_flow.rb:39:5:39:8 | hash [element 0] | provenance | | +| hash_flow.rb:38:15:38:24 | call to taint | hash_flow.rb:38:5:38:8 | [post] hash [element 0] | provenance | | +| hash_flow.rb:39:5:39:8 | [post] hash [element 0] | hash_flow.rb:40:5:40:8 | hash [element 0] | provenance | | +| hash_flow.rb:39:5:39:8 | hash [element 0] | hash_flow.rb:39:5:39:8 | [post] hash [element 0] | provenance | | +| hash_flow.rb:40:5:40:8 | [post] hash [element 0] | hash_flow.rb:41:5:41:8 | hash [element 0] | provenance | | +| hash_flow.rb:40:5:40:8 | [post] hash [element :a] | hash_flow.rb:41:5:41:8 | hash [element :a] | provenance | | +| hash_flow.rb:40:5:40:8 | hash [element 0] | hash_flow.rb:40:5:40:8 | [post] hash [element 0] | provenance | | +| hash_flow.rb:40:16:40:25 | call to taint | hash_flow.rb:40:5:40:8 | [post] hash [element :a] | provenance | | +| hash_flow.rb:41:5:41:8 | [post] hash [element 0] | hash_flow.rb:42:5:42:8 | hash [element 0] | provenance | | +| hash_flow.rb:41:5:41:8 | [post] hash [element :a] | hash_flow.rb:42:5:42:8 | hash [element :a] | provenance | | +| hash_flow.rb:41:5:41:8 | hash [element 0] | hash_flow.rb:41:5:41:8 | [post] hash [element 0] | provenance | | +| hash_flow.rb:41:5:41:8 | hash [element :a] | hash_flow.rb:41:5:41:8 | [post] hash [element :a] | provenance | | +| hash_flow.rb:42:5:42:8 | [post] hash [element 0] | hash_flow.rb:43:5:43:8 | hash [element 0] | provenance | | +| hash_flow.rb:42:5:42:8 | [post] hash [element :a] | hash_flow.rb:43:5:43:8 | hash [element :a] | provenance | | +| hash_flow.rb:42:5:42:8 | [post] hash [element a] | hash_flow.rb:43:5:43:8 | hash [element a] | provenance | | +| hash_flow.rb:42:5:42:8 | hash [element 0] | hash_flow.rb:42:5:42:8 | [post] hash [element 0] | provenance | | +| hash_flow.rb:42:5:42:8 | hash [element :a] | hash_flow.rb:42:5:42:8 | [post] hash [element :a] | provenance | | +| hash_flow.rb:42:17:42:26 | call to taint | hash_flow.rb:42:5:42:8 | [post] hash [element a] | provenance | | +| hash_flow.rb:43:5:43:8 | [post] hash [element 0] | hash_flow.rb:44:10:44:13 | hash [element 0] | provenance | | +| hash_flow.rb:43:5:43:8 | [post] hash [element :a] | hash_flow.rb:46:10:46:13 | hash [element :a] | provenance | | +| hash_flow.rb:43:5:43:8 | [post] hash [element a] | hash_flow.rb:48:10:48:13 | hash [element a] | provenance | | +| hash_flow.rb:43:5:43:8 | hash [element 0] | hash_flow.rb:43:5:43:8 | [post] hash [element 0] | provenance | | +| hash_flow.rb:43:5:43:8 | hash [element :a] | hash_flow.rb:43:5:43:8 | [post] hash [element :a] | provenance | | +| hash_flow.rb:43:5:43:8 | hash [element a] | hash_flow.rb:43:5:43:8 | [post] hash [element a] | provenance | | +| hash_flow.rb:44:10:44:13 | hash [element 0] | hash_flow.rb:44:10:44:16 | ...[...] | provenance | | +| hash_flow.rb:46:10:46:13 | hash [element :a] | hash_flow.rb:46:10:46:17 | ...[...] | provenance | | +| hash_flow.rb:48:10:48:13 | hash [element a] | hash_flow.rb:48:10:48:18 | ...[...] | provenance | | +| hash_flow.rb:55:5:55:9 | hash1 [element :a] | hash_flow.rb:56:10:56:14 | hash1 [element :a] | provenance | | +| hash_flow.rb:55:13:55:37 | ...[...] [element :a] | hash_flow.rb:55:5:55:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:55:21:55:30 | call to taint | hash_flow.rb:55:13:55:37 | ...[...] [element :a] | provenance | | +| hash_flow.rb:56:10:56:14 | hash1 [element :a] | hash_flow.rb:56:10:56:18 | ...[...] | provenance | | +| hash_flow.rb:59:5:59:5 | x [element :a] | hash_flow.rb:60:18:60:18 | x [element :a] | provenance | | +| hash_flow.rb:59:13:59:22 | call to taint | hash_flow.rb:59:5:59:5 | x [element :a] | provenance | | +| hash_flow.rb:60:5:60:9 | hash2 [element :a] | hash_flow.rb:61:10:61:14 | hash2 [element :a] | provenance | | +| hash_flow.rb:60:13:60:19 | ...[...] [element :a] | hash_flow.rb:60:5:60:9 | hash2 [element :a] | provenance | | +| hash_flow.rb:60:18:60:18 | x [element :a] | hash_flow.rb:60:13:60:19 | ...[...] [element :a] | provenance | | +| hash_flow.rb:61:10:61:14 | hash2 [element :a] | hash_flow.rb:61:10:61:18 | ...[...] | provenance | | +| hash_flow.rb:64:5:64:9 | hash3 [element] | hash_flow.rb:65:10:65:14 | hash3 [element] | provenance | | +| hash_flow.rb:64:5:64:9 | hash3 [element] | hash_flow.rb:66:10:66:14 | hash3 [element] | provenance | | +| hash_flow.rb:64:13:64:45 | ...[...] [element] | hash_flow.rb:64:5:64:9 | hash3 [element] | provenance | | +| hash_flow.rb:64:24:64:33 | call to taint | hash_flow.rb:64:13:64:45 | ...[...] [element] | provenance | | +| hash_flow.rb:65:10:65:14 | hash3 [element] | hash_flow.rb:65:10:65:18 | ...[...] | provenance | | +| hash_flow.rb:66:10:66:14 | hash3 [element] | hash_flow.rb:66:10:66:18 | ...[...] | provenance | | +| hash_flow.rb:68:5:68:9 | hash4 [element :a] | hash_flow.rb:69:10:69:14 | hash4 [element :a] | provenance | | +| hash_flow.rb:68:13:68:39 | ...[...] [element :a] | hash_flow.rb:68:5:68:9 | hash4 [element :a] | provenance | | +| hash_flow.rb:68:22:68:31 | call to taint | hash_flow.rb:68:13:68:39 | ...[...] [element :a] | provenance | | +| hash_flow.rb:69:10:69:14 | hash4 [element :a] | hash_flow.rb:69:10:69:18 | ...[...] | provenance | | +| hash_flow.rb:72:5:72:9 | hash5 [element a] | hash_flow.rb:73:10:73:14 | hash5 [element a] | provenance | | +| hash_flow.rb:72:13:72:45 | ...[...] [element a] | hash_flow.rb:72:5:72:9 | hash5 [element a] | provenance | | +| hash_flow.rb:72:25:72:34 | call to taint | hash_flow.rb:72:13:72:45 | ...[...] [element a] | provenance | | +| hash_flow.rb:73:10:73:14 | hash5 [element a] | hash_flow.rb:73:10:73:19 | ...[...] | provenance | | +| hash_flow.rb:76:5:76:9 | hash6 [element a] | hash_flow.rb:77:10:77:14 | hash6 [element a] | provenance | | +| hash_flow.rb:76:13:76:47 | ...[...] [element a] | hash_flow.rb:76:5:76:9 | hash6 [element a] | provenance | | +| hash_flow.rb:76:26:76:35 | call to taint | hash_flow.rb:76:13:76:47 | ...[...] [element a] | provenance | | +| hash_flow.rb:77:10:77:14 | hash6 [element a] | hash_flow.rb:77:10:77:19 | ...[...] | provenance | | +| hash_flow.rb:84:5:84:9 | hash1 [element :a] | hash_flow.rb:85:10:85:14 | hash1 [element :a] | provenance | | +| hash_flow.rb:84:13:84:42 | call to [] [element :a] | hash_flow.rb:84:5:84:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:84:26:84:35 | call to taint | hash_flow.rb:84:13:84:42 | call to [] [element :a] | provenance | | +| hash_flow.rb:85:10:85:14 | hash1 [element :a] | hash_flow.rb:85:10:85:18 | ...[...] | provenance | | +| hash_flow.rb:92:5:92:8 | hash [element :a] | hash_flow.rb:96:30:96:33 | hash [element :a] | provenance | | +| hash_flow.rb:93:15:93:24 | call to taint | hash_flow.rb:92:5:92:8 | hash [element :a] | provenance | | +| hash_flow.rb:96:5:96:9 | hash2 [element :a] | hash_flow.rb:97:10:97:14 | hash2 [element :a] | provenance | | +| hash_flow.rb:96:13:96:34 | call to try_convert [element :a] | hash_flow.rb:96:5:96:9 | hash2 [element :a] | provenance | | +| hash_flow.rb:96:30:96:33 | hash [element :a] | hash_flow.rb:96:13:96:34 | call to try_convert [element :a] | provenance | | +| hash_flow.rb:97:10:97:14 | hash2 [element :a] | hash_flow.rb:97:10:97:18 | ...[...] | provenance | | +| hash_flow.rb:105:5:105:5 | b | hash_flow.rb:106:10:106:10 | b | provenance | | +| hash_flow.rb:105:21:105:30 | call to taint | hash_flow.rb:105:5:105:5 | b | provenance | | +| hash_flow.rb:113:5:113:5 | b | hash_flow.rb:115:10:115:10 | b | provenance | | +| hash_flow.rb:113:9:113:12 | [post] hash [element :a] | hash_flow.rb:114:10:114:13 | hash [element :a] | provenance | | +| hash_flow.rb:113:9:113:34 | call to store | hash_flow.rb:113:5:113:5 | b | provenance | | +| hash_flow.rb:113:24:113:33 | call to taint | hash_flow.rb:113:9:113:12 | [post] hash [element :a] | provenance | | +| hash_flow.rb:113:24:113:33 | call to taint | hash_flow.rb:113:9:113:34 | call to store | provenance | | +| hash_flow.rb:114:10:114:13 | hash [element :a] | hash_flow.rb:114:10:114:17 | ...[...] | provenance | | +| hash_flow.rb:118:5:118:5 | c | hash_flow.rb:121:10:121:10 | c | provenance | | +| hash_flow.rb:118:9:118:12 | [post] hash [element] | hash_flow.rb:119:10:119:13 | hash [element] | provenance | | +| hash_flow.rb:118:9:118:12 | [post] hash [element] | hash_flow.rb:120:10:120:13 | hash [element] | provenance | | +| hash_flow.rb:118:9:118:33 | call to store | hash_flow.rb:118:5:118:5 | c | provenance | | +| hash_flow.rb:118:23:118:32 | call to taint | hash_flow.rb:118:9:118:12 | [post] hash [element] | provenance | | +| hash_flow.rb:118:23:118:32 | call to taint | hash_flow.rb:118:9:118:33 | call to store | provenance | | +| hash_flow.rb:119:10:119:13 | hash [element] | hash_flow.rb:119:10:119:17 | ...[...] | provenance | | +| hash_flow.rb:120:10:120:13 | hash [element] | hash_flow.rb:120:10:120:17 | ...[...] | provenance | | +| hash_flow.rb:127:5:127:8 | hash [element :a] | hash_flow.rb:131:5:131:8 | hash [element :a] | provenance | | +| hash_flow.rb:127:5:127:8 | hash [element :a] | hash_flow.rb:134:5:134:8 | hash [element :a] | provenance | | +| hash_flow.rb:128:15:128:24 | call to taint | hash_flow.rb:127:5:127:8 | hash [element :a] | provenance | | +| hash_flow.rb:131:5:131:8 | hash [element :a] | hash_flow.rb:131:18:131:29 | key_or_value | provenance | | +| hash_flow.rb:131:18:131:29 | key_or_value | hash_flow.rb:132:14:132:25 | key_or_value | provenance | | +| hash_flow.rb:134:5:134:8 | hash [element :a] | hash_flow.rb:134:22:134:26 | value | provenance | | +| hash_flow.rb:134:22:134:26 | value | hash_flow.rb:136:14:136:18 | value | provenance | | +| hash_flow.rb:143:5:143:8 | hash [element :a] | hash_flow.rb:147:9:147:12 | hash [element :a] | provenance | | +| hash_flow.rb:143:5:143:8 | hash [element :a] | hash_flow.rb:151:9:151:12 | hash [element :a] | provenance | | +| hash_flow.rb:144:15:144:25 | call to taint | hash_flow.rb:143:5:143:8 | hash [element :a] | provenance | | +| hash_flow.rb:147:5:147:5 | b [element 1] | hash_flow.rb:149:10:149:10 | b [element 1] | provenance | | +| hash_flow.rb:147:5:147:5 | b [element 1] | hash_flow.rb:150:10:150:10 | b [element 1] | provenance | | +| hash_flow.rb:147:9:147:12 | hash [element :a] | hash_flow.rb:147:9:147:22 | call to assoc [element 1] | provenance | | +| hash_flow.rb:147:9:147:22 | call to assoc [element 1] | hash_flow.rb:147:5:147:5 | b [element 1] | provenance | | +| hash_flow.rb:149:10:149:10 | b [element 1] | hash_flow.rb:149:10:149:13 | ...[...] | provenance | | +| hash_flow.rb:150:10:150:10 | b [element 1] | hash_flow.rb:150:10:150:13 | ...[...] | provenance | | +| hash_flow.rb:151:5:151:5 | c [element 1] | hash_flow.rb:152:10:152:10 | c [element 1] | provenance | | +| hash_flow.rb:151:9:151:12 | hash [element :a] | hash_flow.rb:151:9:151:21 | call to assoc [element 1] | provenance | | +| hash_flow.rb:151:9:151:21 | call to assoc [element 1] | hash_flow.rb:151:5:151:5 | c [element 1] | provenance | | +| hash_flow.rb:152:10:152:10 | c [element 1] | hash_flow.rb:152:10:152:13 | ...[...] | provenance | | +| hash_flow.rb:169:5:169:8 | hash [element :a] | hash_flow.rb:173:9:173:12 | hash [element :a] | provenance | | +| hash_flow.rb:170:15:170:25 | call to taint | hash_flow.rb:169:5:169:8 | hash [element :a] | provenance | | +| hash_flow.rb:173:5:173:5 | a [element :a] | hash_flow.rb:174:10:174:10 | a [element :a] | provenance | | +| hash_flow.rb:173:9:173:12 | hash [element :a] | hash_flow.rb:173:9:173:20 | call to compact [element :a] | provenance | | +| hash_flow.rb:173:9:173:20 | call to compact [element :a] | hash_flow.rb:173:5:173:5 | a [element :a] | provenance | | +| hash_flow.rb:174:10:174:10 | a [element :a] | hash_flow.rb:174:10:174:14 | ...[...] | provenance | | +| hash_flow.rb:181:5:181:8 | hash [element :a] | hash_flow.rb:185:9:185:12 | hash [element :a] | provenance | | +| hash_flow.rb:182:15:182:25 | call to taint | hash_flow.rb:181:5:181:8 | hash [element :a] | provenance | | +| hash_flow.rb:185:5:185:5 | a | hash_flow.rb:186:10:186:10 | a | provenance | | +| hash_flow.rb:185:9:185:12 | hash [element :a] | hash_flow.rb:185:9:185:23 | call to delete | provenance | | +| hash_flow.rb:185:9:185:23 | call to delete | hash_flow.rb:185:5:185:5 | a | provenance | | +| hash_flow.rb:193:5:193:8 | hash [element :a] | hash_flow.rb:197:9:197:12 | hash [element :a] | provenance | | +| hash_flow.rb:194:15:194:25 | call to taint | hash_flow.rb:193:5:193:8 | hash [element :a] | provenance | | +| hash_flow.rb:197:5:197:5 | a [element :a] | hash_flow.rb:201:10:201:10 | a [element :a] | provenance | | +| hash_flow.rb:197:9:197:12 | [post] hash [element :a] | hash_flow.rb:202:10:202:13 | hash [element :a] | provenance | | +| hash_flow.rb:197:9:197:12 | hash [element :a] | hash_flow.rb:197:9:197:12 | [post] hash [element :a] | provenance | | +| hash_flow.rb:197:9:197:12 | hash [element :a] | hash_flow.rb:197:9:200:7 | call to delete_if [element :a] | provenance | | +| hash_flow.rb:197:9:197:12 | hash [element :a] | hash_flow.rb:197:33:197:37 | value | provenance | | +| hash_flow.rb:197:9:200:7 | call to delete_if [element :a] | hash_flow.rb:197:5:197:5 | a [element :a] | provenance | | +| hash_flow.rb:197:33:197:37 | value | hash_flow.rb:199:14:199:18 | value | provenance | | +| hash_flow.rb:201:10:201:10 | a [element :a] | hash_flow.rb:201:10:201:14 | ...[...] | provenance | | +| hash_flow.rb:202:10:202:13 | hash [element :a] | hash_flow.rb:202:10:202:17 | ...[...] | provenance | | +| hash_flow.rb:209:5:209:8 | hash [element :a] | hash_flow.rb:217:10:217:13 | hash [element :a] | provenance | | +| hash_flow.rb:209:5:209:8 | hash [element :c, element :d] | hash_flow.rb:219:10:219:13 | hash [element :c, element :d] | provenance | | +| hash_flow.rb:210:15:210:25 | call to taint | hash_flow.rb:209:5:209:8 | hash [element :a] | provenance | | +| hash_flow.rb:213:19:213:29 | call to taint | hash_flow.rb:209:5:209:8 | hash [element :c, element :d] | provenance | | +| hash_flow.rb:217:10:217:13 | hash [element :a] | hash_flow.rb:217:10:217:21 | call to dig | provenance | | +| hash_flow.rb:219:10:219:13 | hash [element :c, element :d] | hash_flow.rb:219:10:219:24 | call to dig | provenance | | +| hash_flow.rb:226:5:226:8 | hash [element :a] | hash_flow.rb:230:9:230:12 | hash [element :a] | provenance | | +| hash_flow.rb:227:15:227:25 | call to taint | hash_flow.rb:226:5:226:8 | hash [element :a] | provenance | | +| hash_flow.rb:230:5:230:5 | x [element :a] | hash_flow.rb:234:10:234:10 | x [element :a] | provenance | | +| hash_flow.rb:230:9:230:12 | hash [element :a] | hash_flow.rb:230:9:233:7 | call to each [element :a] | provenance | | +| hash_flow.rb:230:9:230:12 | hash [element :a] | hash_flow.rb:230:28:230:32 | value | provenance | | +| hash_flow.rb:230:9:233:7 | call to each [element :a] | hash_flow.rb:230:5:230:5 | x [element :a] | provenance | | +| hash_flow.rb:230:28:230:32 | value | hash_flow.rb:232:14:232:18 | value | provenance | | +| hash_flow.rb:234:10:234:10 | x [element :a] | hash_flow.rb:234:10:234:14 | ...[...] | provenance | | +| hash_flow.rb:241:5:241:8 | hash [element :a] | hash_flow.rb:245:9:245:12 | hash [element :a] | provenance | | +| hash_flow.rb:242:15:242:25 | call to taint | hash_flow.rb:241:5:241:8 | hash [element :a] | provenance | | +| hash_flow.rb:245:5:245:5 | x [element :a] | hash_flow.rb:248:10:248:10 | x [element :a] | provenance | | +| hash_flow.rb:245:9:245:12 | hash [element :a] | hash_flow.rb:245:9:247:7 | call to each_key [element :a] | provenance | | +| hash_flow.rb:245:9:247:7 | call to each_key [element :a] | hash_flow.rb:245:5:245:5 | x [element :a] | provenance | | +| hash_flow.rb:248:10:248:10 | x [element :a] | hash_flow.rb:248:10:248:14 | ...[...] | provenance | | +| hash_flow.rb:255:5:255:8 | hash [element :a] | hash_flow.rb:259:9:259:12 | hash [element :a] | provenance | | +| hash_flow.rb:256:15:256:25 | call to taint | hash_flow.rb:255:5:255:8 | hash [element :a] | provenance | | +| hash_flow.rb:259:5:259:5 | x [element :a] | hash_flow.rb:263:10:263:10 | x [element :a] | provenance | | +| hash_flow.rb:259:9:259:12 | hash [element :a] | hash_flow.rb:259:9:262:7 | call to each_pair [element :a] | provenance | | +| hash_flow.rb:259:9:259:12 | hash [element :a] | hash_flow.rb:259:33:259:37 | value | provenance | | +| hash_flow.rb:259:9:262:7 | call to each_pair [element :a] | hash_flow.rb:259:5:259:5 | x [element :a] | provenance | | +| hash_flow.rb:259:33:259:37 | value | hash_flow.rb:261:14:261:18 | value | provenance | | +| hash_flow.rb:263:10:263:10 | x [element :a] | hash_flow.rb:263:10:263:14 | ...[...] | provenance | | +| hash_flow.rb:270:5:270:8 | hash [element :a] | hash_flow.rb:274:9:274:12 | hash [element :a] | provenance | | +| hash_flow.rb:271:15:271:25 | call to taint | hash_flow.rb:270:5:270:8 | hash [element :a] | provenance | | +| hash_flow.rb:274:5:274:5 | x [element :a] | hash_flow.rb:277:10:277:10 | x [element :a] | provenance | | +| hash_flow.rb:274:9:274:12 | hash [element :a] | hash_flow.rb:274:9:276:7 | call to each_value [element :a] | provenance | | +| hash_flow.rb:274:9:274:12 | hash [element :a] | hash_flow.rb:274:29:274:33 | value | provenance | | +| hash_flow.rb:274:9:276:7 | call to each_value [element :a] | hash_flow.rb:274:5:274:5 | x [element :a] | provenance | | +| hash_flow.rb:274:29:274:33 | value | hash_flow.rb:275:14:275:18 | value | provenance | | +| hash_flow.rb:277:10:277:10 | x [element :a] | hash_flow.rb:277:10:277:14 | ...[...] | provenance | | +| hash_flow.rb:284:5:284:8 | hash [element :c] | hash_flow.rb:290:9:290:12 | hash [element :c] | provenance | | +| hash_flow.rb:287:15:287:25 | call to taint | hash_flow.rb:284:5:284:8 | hash [element :c] | provenance | | +| hash_flow.rb:290:5:290:5 | x [element :c] | hash_flow.rb:293:10:293:10 | x [element :c] | provenance | | +| hash_flow.rb:290:9:290:12 | hash [element :c] | hash_flow.rb:290:9:290:28 | call to except [element :c] | provenance | | +| hash_flow.rb:290:9:290:28 | call to except [element :c] | hash_flow.rb:290:5:290:5 | x [element :c] | provenance | | +| hash_flow.rb:293:10:293:10 | x [element :c] | hash_flow.rb:293:10:293:14 | ...[...] | provenance | | +| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:305:9:305:12 | hash [element :a] | provenance | | +| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:309:9:309:12 | hash [element :a] | provenance | | +| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:311:9:311:12 | hash [element :a] | provenance | | +| hash_flow.rb:300:5:300:8 | hash [element :a] | hash_flow.rb:315:9:315:12 | hash [element :a] | provenance | | +| hash_flow.rb:300:5:300:8 | hash [element :c] | hash_flow.rb:305:9:305:12 | hash [element :c] | provenance | | +| hash_flow.rb:300:5:300:8 | hash [element :c] | hash_flow.rb:315:9:315:12 | hash [element :c] | provenance | | +| hash_flow.rb:301:15:301:25 | call to taint | hash_flow.rb:300:5:300:8 | hash [element :a] | provenance | | +| hash_flow.rb:303:15:303:25 | call to taint | hash_flow.rb:300:5:300:8 | hash [element :c] | provenance | | +| hash_flow.rb:305:5:305:5 | b | hash_flow.rb:308:10:308:10 | b | provenance | | +| hash_flow.rb:305:9:305:12 | hash [element :a] | hash_flow.rb:305:9:307:7 | call to fetch | provenance | | +| hash_flow.rb:305:9:305:12 | hash [element :c] | hash_flow.rb:305:9:307:7 | call to fetch | provenance | | +| hash_flow.rb:305:9:307:7 | call to fetch | hash_flow.rb:305:5:305:5 | b | provenance | | +| hash_flow.rb:305:20:305:30 | call to taint | hash_flow.rb:305:37:305:37 | x | provenance | | +| hash_flow.rb:305:37:305:37 | x | hash_flow.rb:306:14:306:14 | x | provenance | | +| hash_flow.rb:309:5:309:5 | b | hash_flow.rb:310:10:310:10 | b | provenance | | +| hash_flow.rb:309:9:309:12 | hash [element :a] | hash_flow.rb:309:9:309:22 | call to fetch | provenance | | +| hash_flow.rb:309:9:309:22 | call to fetch | hash_flow.rb:309:5:309:5 | b | provenance | | +| hash_flow.rb:311:5:311:5 | b | hash_flow.rb:312:10:312:10 | b | provenance | | +| hash_flow.rb:311:9:311:12 | hash [element :a] | hash_flow.rb:311:9:311:35 | call to fetch | provenance | | +| hash_flow.rb:311:9:311:35 | call to fetch | hash_flow.rb:311:5:311:5 | b | provenance | | +| hash_flow.rb:311:24:311:34 | call to taint | hash_flow.rb:311:9:311:35 | call to fetch | provenance | | +| hash_flow.rb:313:5:313:5 | b | hash_flow.rb:314:10:314:10 | b | provenance | | +| hash_flow.rb:313:9:313:35 | call to fetch | hash_flow.rb:313:5:313:5 | b | provenance | | +| hash_flow.rb:313:24:313:34 | call to taint | hash_flow.rb:313:9:313:35 | call to fetch | provenance | | +| hash_flow.rb:315:5:315:5 | b | hash_flow.rb:316:10:316:10 | b | provenance | | +| hash_flow.rb:315:9:315:12 | hash [element :a] | hash_flow.rb:315:9:315:34 | call to fetch | provenance | | +| hash_flow.rb:315:9:315:12 | hash [element :c] | hash_flow.rb:315:9:315:34 | call to fetch | provenance | | +| hash_flow.rb:315:9:315:34 | call to fetch | hash_flow.rb:315:5:315:5 | b | provenance | | +| hash_flow.rb:315:23:315:33 | call to taint | hash_flow.rb:315:9:315:34 | call to fetch | provenance | | +| hash_flow.rb:322:5:322:8 | hash [element :a] | hash_flow.rb:327:9:327:12 | hash [element :a] | provenance | | +| hash_flow.rb:322:5:322:8 | hash [element :a] | hash_flow.rb:332:9:332:12 | hash [element :a] | provenance | | +| hash_flow.rb:322:5:322:8 | hash [element :a] | hash_flow.rb:334:9:334:12 | hash [element :a] | provenance | | +| hash_flow.rb:322:5:322:8 | hash [element :c] | hash_flow.rb:327:9:327:12 | hash [element :c] | provenance | | +| hash_flow.rb:322:5:322:8 | hash [element :c] | hash_flow.rb:334:9:334:12 | hash [element :c] | provenance | | +| hash_flow.rb:323:15:323:25 | call to taint | hash_flow.rb:322:5:322:8 | hash [element :a] | provenance | | +| hash_flow.rb:325:15:325:25 | call to taint | hash_flow.rb:322:5:322:8 | hash [element :c] | provenance | | +| hash_flow.rb:327:5:327:5 | b [element] | hash_flow.rb:331:10:331:10 | b [element] | provenance | | +| hash_flow.rb:327:9:327:12 | hash [element :a] | hash_flow.rb:327:9:330:7 | call to fetch_values [element] | provenance | | +| hash_flow.rb:327:9:327:12 | hash [element :c] | hash_flow.rb:327:9:330:7 | call to fetch_values [element] | provenance | | +| hash_flow.rb:327:9:330:7 | call to fetch_values [element] | hash_flow.rb:327:5:327:5 | b [element] | provenance | | +| hash_flow.rb:327:27:327:37 | call to taint | hash_flow.rb:327:44:327:44 | x | provenance | | +| hash_flow.rb:327:44:327:44 | x | hash_flow.rb:328:14:328:14 | x | provenance | | +| hash_flow.rb:329:9:329:19 | call to taint | hash_flow.rb:327:9:330:7 | call to fetch_values [element] | provenance | | +| hash_flow.rb:331:10:331:10 | b [element] | hash_flow.rb:331:10:331:13 | ...[...] | provenance | | +| hash_flow.rb:332:5:332:5 | b [element] | hash_flow.rb:333:10:333:10 | b [element] | provenance | | +| hash_flow.rb:332:9:332:12 | hash [element :a] | hash_flow.rb:332:9:332:29 | call to fetch_values [element] | provenance | | +| hash_flow.rb:332:9:332:29 | call to fetch_values [element] | hash_flow.rb:332:5:332:5 | b [element] | provenance | | +| hash_flow.rb:333:10:333:10 | b [element] | hash_flow.rb:333:10:333:13 | ...[...] | provenance | | +| hash_flow.rb:334:5:334:5 | b [element] | hash_flow.rb:335:10:335:10 | b [element] | provenance | | +| hash_flow.rb:334:9:334:12 | hash [element :a] | hash_flow.rb:334:9:334:31 | call to fetch_values [element] | provenance | | +| hash_flow.rb:334:9:334:12 | hash [element :c] | hash_flow.rb:334:9:334:31 | call to fetch_values [element] | provenance | | +| hash_flow.rb:334:9:334:31 | call to fetch_values [element] | hash_flow.rb:334:5:334:5 | b [element] | provenance | | +| hash_flow.rb:335:10:335:10 | b [element] | hash_flow.rb:335:10:335:13 | ...[...] | provenance | | +| hash_flow.rb:341:5:341:8 | hash [element :a] | hash_flow.rb:346:9:346:12 | hash [element :a] | provenance | | +| hash_flow.rb:341:5:341:8 | hash [element :c] | hash_flow.rb:346:9:346:12 | hash [element :c] | provenance | | +| hash_flow.rb:342:15:342:25 | call to taint | hash_flow.rb:341:5:341:8 | hash [element :a] | provenance | | +| hash_flow.rb:344:15:344:25 | call to taint | hash_flow.rb:341:5:341:8 | hash [element :c] | provenance | | +| hash_flow.rb:346:5:346:5 | b [element :a] | hash_flow.rb:351:11:351:11 | b [element :a] | provenance | | +| hash_flow.rb:346:9:346:12 | hash [element :a] | hash_flow.rb:346:9:350:7 | call to filter [element :a] | provenance | | +| hash_flow.rb:346:9:346:12 | hash [element :a] | hash_flow.rb:346:30:346:34 | value | provenance | | +| hash_flow.rb:346:9:346:12 | hash [element :c] | hash_flow.rb:346:30:346:34 | value | provenance | | +| hash_flow.rb:346:9:350:7 | call to filter [element :a] | hash_flow.rb:346:5:346:5 | b [element :a] | provenance | | +| hash_flow.rb:346:30:346:34 | value | hash_flow.rb:348:14:348:18 | value | provenance | | +| hash_flow.rb:351:11:351:11 | b [element :a] | hash_flow.rb:351:11:351:15 | ...[...] | provenance | | +| hash_flow.rb:351:11:351:15 | ...[...] | hash_flow.rb:351:10:351:16 | ( ... ) | provenance | | +| hash_flow.rb:357:5:357:8 | hash [element :a] | hash_flow.rb:362:5:362:8 | hash [element :a] | provenance | | +| hash_flow.rb:357:5:357:8 | hash [element :c] | hash_flow.rb:362:5:362:8 | hash [element :c] | provenance | | +| hash_flow.rb:358:15:358:25 | call to taint | hash_flow.rb:357:5:357:8 | hash [element :a] | provenance | | +| hash_flow.rb:360:15:360:25 | call to taint | hash_flow.rb:357:5:357:8 | hash [element :c] | provenance | | +| hash_flow.rb:362:5:362:8 | [post] hash [element :a] | hash_flow.rb:367:11:367:14 | hash [element :a] | provenance | | +| hash_flow.rb:362:5:362:8 | hash [element :a] | hash_flow.rb:362:5:362:8 | [post] hash [element :a] | provenance | | +| hash_flow.rb:362:5:362:8 | hash [element :a] | hash_flow.rb:362:27:362:31 | value | provenance | | +| hash_flow.rb:362:5:362:8 | hash [element :c] | hash_flow.rb:362:27:362:31 | value | provenance | | +| hash_flow.rb:362:27:362:31 | value | hash_flow.rb:364:14:364:18 | value | provenance | | +| hash_flow.rb:367:11:367:14 | hash [element :a] | hash_flow.rb:367:11:367:18 | ...[...] | provenance | | +| hash_flow.rb:367:11:367:18 | ...[...] | hash_flow.rb:367:10:367:19 | ( ... ) | provenance | | +| hash_flow.rb:373:5:373:8 | hash [element :a] | hash_flow.rb:378:9:378:12 | hash [element :a] | provenance | | +| hash_flow.rb:373:5:373:8 | hash [element :c] | hash_flow.rb:378:9:378:12 | hash [element :c] | provenance | | +| hash_flow.rb:374:15:374:25 | call to taint | hash_flow.rb:373:5:373:8 | hash [element :a] | provenance | | +| hash_flow.rb:376:15:376:25 | call to taint | hash_flow.rb:373:5:373:8 | hash [element :c] | provenance | | +| hash_flow.rb:378:5:378:5 | b [element] | hash_flow.rb:379:11:379:11 | b [element] | provenance | | +| hash_flow.rb:378:9:378:12 | hash [element :a] | hash_flow.rb:378:9:378:20 | call to flatten [element] | provenance | | +| hash_flow.rb:378:9:378:12 | hash [element :c] | hash_flow.rb:378:9:378:20 | call to flatten [element] | provenance | | +| hash_flow.rb:378:9:378:20 | call to flatten [element] | hash_flow.rb:378:5:378:5 | b [element] | provenance | | +| hash_flow.rb:379:11:379:11 | b [element] | hash_flow.rb:379:11:379:14 | ...[...] | provenance | | +| hash_flow.rb:379:11:379:14 | ...[...] | hash_flow.rb:379:10:379:15 | ( ... ) | provenance | | +| hash_flow.rb:385:5:385:8 | hash [element :a] | hash_flow.rb:390:9:390:12 | hash [element :a] | provenance | | +| hash_flow.rb:385:5:385:8 | hash [element :c] | hash_flow.rb:390:9:390:12 | hash [element :c] | provenance | | +| hash_flow.rb:386:15:386:25 | call to taint | hash_flow.rb:385:5:385:8 | hash [element :a] | provenance | | +| hash_flow.rb:388:15:388:25 | call to taint | hash_flow.rb:385:5:385:8 | hash [element :c] | provenance | | +| hash_flow.rb:390:5:390:5 | b [element :a] | hash_flow.rb:396:11:396:11 | b [element :a] | provenance | | +| hash_flow.rb:390:9:390:12 | [post] hash [element :a] | hash_flow.rb:395:11:395:14 | hash [element :a] | provenance | | +| hash_flow.rb:390:9:390:12 | hash [element :a] | hash_flow.rb:390:9:390:12 | [post] hash [element :a] | provenance | | +| hash_flow.rb:390:9:390:12 | hash [element :a] | hash_flow.rb:390:9:394:7 | call to keep_if [element :a] | provenance | | +| hash_flow.rb:390:9:390:12 | hash [element :a] | hash_flow.rb:390:31:390:35 | value | provenance | | +| hash_flow.rb:390:9:390:12 | hash [element :c] | hash_flow.rb:390:31:390:35 | value | provenance | | +| hash_flow.rb:390:9:394:7 | call to keep_if [element :a] | hash_flow.rb:390:5:390:5 | b [element :a] | provenance | | +| hash_flow.rb:390:31:390:35 | value | hash_flow.rb:392:14:392:18 | value | provenance | | +| hash_flow.rb:395:11:395:14 | hash [element :a] | hash_flow.rb:395:11:395:18 | ...[...] | provenance | | +| hash_flow.rb:395:11:395:18 | ...[...] | hash_flow.rb:395:10:395:19 | ( ... ) | provenance | | +| hash_flow.rb:396:11:396:11 | b [element :a] | hash_flow.rb:396:11:396:15 | ...[...] | provenance | | +| hash_flow.rb:396:11:396:15 | ...[...] | hash_flow.rb:396:10:396:16 | ( ... ) | provenance | | +| hash_flow.rb:402:5:402:9 | hash1 [element :a] | hash_flow.rb:412:12:412:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:402:5:402:9 | hash1 [element :c] | hash_flow.rb:412:12:412:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:403:15:403:25 | call to taint | hash_flow.rb:402:5:402:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:405:15:405:25 | call to taint | hash_flow.rb:402:5:402:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:407:5:407:9 | hash2 [element :d] | hash_flow.rb:412:24:412:28 | hash2 [element :d] | provenance | | +| hash_flow.rb:407:5:407:9 | hash2 [element :f] | hash_flow.rb:412:24:412:28 | hash2 [element :f] | provenance | | +| hash_flow.rb:408:15:408:25 | call to taint | hash_flow.rb:407:5:407:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:410:15:410:25 | call to taint | hash_flow.rb:407:5:407:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:412:5:412:8 | hash [element :a] | hash_flow.rb:417:11:417:14 | hash [element :a] | provenance | | +| hash_flow.rb:412:5:412:8 | hash [element :c] | hash_flow.rb:419:11:419:14 | hash [element :c] | provenance | | +| hash_flow.rb:412:5:412:8 | hash [element :d] | hash_flow.rb:420:11:420:14 | hash [element :d] | provenance | | +| hash_flow.rb:412:5:412:8 | hash [element :f] | hash_flow.rb:422:11:422:14 | hash [element :f] | provenance | | +| hash_flow.rb:412:12:412:16 | hash1 [element :a] | hash_flow.rb:412:12:416:7 | call to merge [element :a] | provenance | | +| hash_flow.rb:412:12:412:16 | hash1 [element :a] | hash_flow.rb:412:40:412:48 | old_value | provenance | | +| hash_flow.rb:412:12:412:16 | hash1 [element :a] | hash_flow.rb:412:51:412:59 | new_value | provenance | | +| hash_flow.rb:412:12:412:16 | hash1 [element :c] | hash_flow.rb:412:12:416:7 | call to merge [element :c] | provenance | | +| hash_flow.rb:412:12:412:16 | hash1 [element :c] | hash_flow.rb:412:40:412:48 | old_value | provenance | | +| hash_flow.rb:412:12:412:16 | hash1 [element :c] | hash_flow.rb:412:51:412:59 | new_value | provenance | | +| hash_flow.rb:412:12:416:7 | call to merge [element :a] | hash_flow.rb:412:5:412:8 | hash [element :a] | provenance | | +| hash_flow.rb:412:12:416:7 | call to merge [element :c] | hash_flow.rb:412:5:412:8 | hash [element :c] | provenance | | +| hash_flow.rb:412:12:416:7 | call to merge [element :d] | hash_flow.rb:412:5:412:8 | hash [element :d] | provenance | | +| hash_flow.rb:412:12:416:7 | call to merge [element :f] | hash_flow.rb:412:5:412:8 | hash [element :f] | provenance | | +| hash_flow.rb:412:24:412:28 | hash2 [element :d] | hash_flow.rb:412:12:416:7 | call to merge [element :d] | provenance | | +| hash_flow.rb:412:24:412:28 | hash2 [element :d] | hash_flow.rb:412:40:412:48 | old_value | provenance | | +| hash_flow.rb:412:24:412:28 | hash2 [element :d] | hash_flow.rb:412:51:412:59 | new_value | provenance | | +| hash_flow.rb:412:24:412:28 | hash2 [element :f] | hash_flow.rb:412:12:416:7 | call to merge [element :f] | provenance | | +| hash_flow.rb:412:24:412:28 | hash2 [element :f] | hash_flow.rb:412:40:412:48 | old_value | provenance | | +| hash_flow.rb:412:24:412:28 | hash2 [element :f] | hash_flow.rb:412:51:412:59 | new_value | provenance | | +| hash_flow.rb:412:40:412:48 | old_value | hash_flow.rb:414:14:414:22 | old_value | provenance | | +| hash_flow.rb:412:51:412:59 | new_value | hash_flow.rb:415:14:415:22 | new_value | provenance | | +| hash_flow.rb:417:11:417:14 | hash [element :a] | hash_flow.rb:417:11:417:18 | ...[...] | provenance | | +| hash_flow.rb:417:11:417:18 | ...[...] | hash_flow.rb:417:10:417:19 | ( ... ) | provenance | | +| hash_flow.rb:419:11:419:14 | hash [element :c] | hash_flow.rb:419:11:419:18 | ...[...] | provenance | | +| hash_flow.rb:419:11:419:18 | ...[...] | hash_flow.rb:419:10:419:19 | ( ... ) | provenance | | +| hash_flow.rb:420:11:420:14 | hash [element :d] | hash_flow.rb:420:11:420:18 | ...[...] | provenance | | +| hash_flow.rb:420:11:420:18 | ...[...] | hash_flow.rb:420:10:420:19 | ( ... ) | provenance | | +| hash_flow.rb:422:11:422:14 | hash [element :f] | hash_flow.rb:422:11:422:18 | ...[...] | provenance | | +| hash_flow.rb:422:11:422:18 | ...[...] | hash_flow.rb:422:10:422:19 | ( ... ) | provenance | | +| hash_flow.rb:428:5:428:9 | hash1 [element :a] | hash_flow.rb:438:12:438:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:428:5:428:9 | hash1 [element :c] | hash_flow.rb:438:12:438:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:429:15:429:25 | call to taint | hash_flow.rb:428:5:428:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:431:15:431:25 | call to taint | hash_flow.rb:428:5:428:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:433:5:433:9 | hash2 [element :d] | hash_flow.rb:438:25:438:29 | hash2 [element :d] | provenance | | +| hash_flow.rb:433:5:433:9 | hash2 [element :f] | hash_flow.rb:438:25:438:29 | hash2 [element :f] | provenance | | +| hash_flow.rb:434:15:434:25 | call to taint | hash_flow.rb:433:5:433:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:436:15:436:25 | call to taint | hash_flow.rb:433:5:433:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:438:5:438:8 | hash [element :a] | hash_flow.rb:443:11:443:14 | hash [element :a] | provenance | | +| hash_flow.rb:438:5:438:8 | hash [element :c] | hash_flow.rb:445:11:445:14 | hash [element :c] | provenance | | +| hash_flow.rb:438:5:438:8 | hash [element :d] | hash_flow.rb:446:11:446:14 | hash [element :d] | provenance | | +| hash_flow.rb:438:5:438:8 | hash [element :f] | hash_flow.rb:448:11:448:14 | hash [element :f] | provenance | | +| hash_flow.rb:438:12:438:16 | [post] hash1 [element :a] | hash_flow.rb:450:11:450:15 | hash1 [element :a] | provenance | | +| hash_flow.rb:438:12:438:16 | [post] hash1 [element :c] | hash_flow.rb:452:11:452:15 | hash1 [element :c] | provenance | | +| hash_flow.rb:438:12:438:16 | [post] hash1 [element :d] | hash_flow.rb:453:11:453:15 | hash1 [element :d] | provenance | | +| hash_flow.rb:438:12:438:16 | [post] hash1 [element :f] | hash_flow.rb:455:11:455:15 | hash1 [element :f] | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :a] | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:12:442:7 | call to merge! [element :a] | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:41:438:49 | old_value | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :a] | hash_flow.rb:438:52:438:60 | new_value | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :c] | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:12:442:7 | call to merge! [element :c] | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:41:438:49 | old_value | provenance | | +| hash_flow.rb:438:12:438:16 | hash1 [element :c] | hash_flow.rb:438:52:438:60 | new_value | provenance | | +| hash_flow.rb:438:12:442:7 | call to merge! [element :a] | hash_flow.rb:438:5:438:8 | hash [element :a] | provenance | | +| hash_flow.rb:438:12:442:7 | call to merge! [element :c] | hash_flow.rb:438:5:438:8 | hash [element :c] | provenance | | +| hash_flow.rb:438:12:442:7 | call to merge! [element :d] | hash_flow.rb:438:5:438:8 | hash [element :d] | provenance | | +| hash_flow.rb:438:12:442:7 | call to merge! [element :f] | hash_flow.rb:438:5:438:8 | hash [element :f] | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :d] | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:12:442:7 | call to merge! [element :d] | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:41:438:49 | old_value | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :d] | hash_flow.rb:438:52:438:60 | new_value | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:12:438:16 | [post] hash1 [element :f] | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:12:442:7 | call to merge! [element :f] | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:41:438:49 | old_value | provenance | | +| hash_flow.rb:438:25:438:29 | hash2 [element :f] | hash_flow.rb:438:52:438:60 | new_value | provenance | | +| hash_flow.rb:438:41:438:49 | old_value | hash_flow.rb:440:14:440:22 | old_value | provenance | | +| hash_flow.rb:438:52:438:60 | new_value | hash_flow.rb:441:14:441:22 | new_value | provenance | | +| hash_flow.rb:443:11:443:14 | hash [element :a] | hash_flow.rb:443:11:443:18 | ...[...] | provenance | | +| hash_flow.rb:443:11:443:18 | ...[...] | hash_flow.rb:443:10:443:19 | ( ... ) | provenance | | +| hash_flow.rb:445:11:445:14 | hash [element :c] | hash_flow.rb:445:11:445:18 | ...[...] | provenance | | +| hash_flow.rb:445:11:445:18 | ...[...] | hash_flow.rb:445:10:445:19 | ( ... ) | provenance | | +| hash_flow.rb:446:11:446:14 | hash [element :d] | hash_flow.rb:446:11:446:18 | ...[...] | provenance | | +| hash_flow.rb:446:11:446:18 | ...[...] | hash_flow.rb:446:10:446:19 | ( ... ) | provenance | | +| hash_flow.rb:448:11:448:14 | hash [element :f] | hash_flow.rb:448:11:448:18 | ...[...] | provenance | | +| hash_flow.rb:448:11:448:18 | ...[...] | hash_flow.rb:448:10:448:19 | ( ... ) | provenance | | +| hash_flow.rb:450:11:450:15 | hash1 [element :a] | hash_flow.rb:450:11:450:19 | ...[...] | provenance | | +| hash_flow.rb:450:11:450:19 | ...[...] | hash_flow.rb:450:10:450:20 | ( ... ) | provenance | | +| hash_flow.rb:452:11:452:15 | hash1 [element :c] | hash_flow.rb:452:11:452:19 | ...[...] | provenance | | +| hash_flow.rb:452:11:452:19 | ...[...] | hash_flow.rb:452:10:452:20 | ( ... ) | provenance | | +| hash_flow.rb:453:11:453:15 | hash1 [element :d] | hash_flow.rb:453:11:453:19 | ...[...] | provenance | | +| hash_flow.rb:453:11:453:19 | ...[...] | hash_flow.rb:453:10:453:20 | ( ... ) | provenance | | +| hash_flow.rb:455:11:455:15 | hash1 [element :f] | hash_flow.rb:455:11:455:19 | ...[...] | provenance | | +| hash_flow.rb:455:11:455:19 | ...[...] | hash_flow.rb:455:10:455:20 | ( ... ) | provenance | | +| hash_flow.rb:461:5:461:8 | hash [element :a] | hash_flow.rb:465:9:465:12 | hash [element :a] | provenance | | +| hash_flow.rb:462:15:462:25 | call to taint | hash_flow.rb:461:5:461:8 | hash [element :a] | provenance | | +| hash_flow.rb:465:5:465:5 | b [element 1] | hash_flow.rb:467:10:467:10 | b [element 1] | provenance | | +| hash_flow.rb:465:9:465:12 | hash [element :a] | hash_flow.rb:465:9:465:22 | call to rassoc [element 1] | provenance | | +| hash_flow.rb:465:9:465:22 | call to rassoc [element 1] | hash_flow.rb:465:5:465:5 | b [element 1] | provenance | | +| hash_flow.rb:467:10:467:10 | b [element 1] | hash_flow.rb:467:10:467:13 | ...[...] | provenance | | +| hash_flow.rb:473:5:473:8 | hash [element :a] | hash_flow.rb:477:9:477:12 | hash [element :a] | provenance | | +| hash_flow.rb:474:15:474:25 | call to taint | hash_flow.rb:473:5:473:8 | hash [element :a] | provenance | | +| hash_flow.rb:477:5:477:5 | b [element :a] | hash_flow.rb:482:10:482:10 | b [element :a] | provenance | | +| hash_flow.rb:477:9:477:12 | hash [element :a] | hash_flow.rb:477:9:481:7 | call to reject [element :a] | provenance | | +| hash_flow.rb:477:9:477:12 | hash [element :a] | hash_flow.rb:477:29:477:33 | value | provenance | | +| hash_flow.rb:477:9:481:7 | call to reject [element :a] | hash_flow.rb:477:5:477:5 | b [element :a] | provenance | | +| hash_flow.rb:477:29:477:33 | value | hash_flow.rb:479:14:479:18 | value | provenance | | +| hash_flow.rb:482:10:482:10 | b [element :a] | hash_flow.rb:482:10:482:14 | ...[...] | provenance | | +| hash_flow.rb:488:5:488:8 | hash [element :a] | hash_flow.rb:492:9:492:12 | hash [element :a] | provenance | | +| hash_flow.rb:489:15:489:25 | call to taint | hash_flow.rb:488:5:488:8 | hash [element :a] | provenance | | +| hash_flow.rb:492:5:492:5 | b [element :a] | hash_flow.rb:497:10:497:10 | b [element :a] | provenance | | +| hash_flow.rb:492:9:492:12 | [post] hash [element :a] | hash_flow.rb:498:10:498:13 | hash [element :a] | provenance | | +| hash_flow.rb:492:9:492:12 | hash [element :a] | hash_flow.rb:492:9:492:12 | [post] hash [element :a] | provenance | | +| hash_flow.rb:492:9:492:12 | hash [element :a] | hash_flow.rb:492:9:496:7 | call to reject! [element :a] | provenance | | +| hash_flow.rb:492:9:492:12 | hash [element :a] | hash_flow.rb:492:30:492:34 | value | provenance | | +| hash_flow.rb:492:9:496:7 | call to reject! [element :a] | hash_flow.rb:492:5:492:5 | b [element :a] | provenance | | +| hash_flow.rb:492:30:492:34 | value | hash_flow.rb:494:14:494:18 | value | provenance | | +| hash_flow.rb:497:10:497:10 | b [element :a] | hash_flow.rb:497:10:497:14 | ...[...] | provenance | | +| hash_flow.rb:498:10:498:13 | hash [element :a] | hash_flow.rb:498:10:498:17 | ...[...] | provenance | | +| hash_flow.rb:504:5:504:8 | hash [element :a] | hash_flow.rb:512:19:512:22 | hash [element :a] | provenance | | +| hash_flow.rb:504:5:504:8 | hash [element :c] | hash_flow.rb:512:19:512:22 | hash [element :c] | provenance | | +| hash_flow.rb:505:15:505:25 | call to taint | hash_flow.rb:504:5:504:8 | hash [element :a] | provenance | | +| hash_flow.rb:507:15:507:25 | call to taint | hash_flow.rb:504:5:504:8 | hash [element :c] | provenance | | +| hash_flow.rb:512:5:512:9 | [post] hash2 [element :a] | hash_flow.rb:513:11:513:15 | hash2 [element :a] | provenance | | +| hash_flow.rb:512:5:512:9 | [post] hash2 [element :c] | hash_flow.rb:515:11:515:15 | hash2 [element :c] | provenance | | +| hash_flow.rb:512:19:512:22 | hash [element :a] | hash_flow.rb:512:5:512:9 | [post] hash2 [element :a] | provenance | | +| hash_flow.rb:512:19:512:22 | hash [element :c] | hash_flow.rb:512:5:512:9 | [post] hash2 [element :c] | provenance | | +| hash_flow.rb:513:11:513:15 | hash2 [element :a] | hash_flow.rb:513:11:513:19 | ...[...] | provenance | | +| hash_flow.rb:513:11:513:19 | ...[...] | hash_flow.rb:513:10:513:20 | ( ... ) | provenance | | +| hash_flow.rb:515:11:515:15 | hash2 [element :c] | hash_flow.rb:515:11:515:19 | ...[...] | provenance | | +| hash_flow.rb:515:11:515:19 | ...[...] | hash_flow.rb:515:10:515:20 | ( ... ) | provenance | | +| hash_flow.rb:519:5:519:8 | hash [element :a] | hash_flow.rb:524:9:524:12 | hash [element :a] | provenance | | +| hash_flow.rb:519:5:519:8 | hash [element :c] | hash_flow.rb:524:9:524:12 | hash [element :c] | provenance | | +| hash_flow.rb:520:15:520:25 | call to taint | hash_flow.rb:519:5:519:8 | hash [element :a] | provenance | | +| hash_flow.rb:522:15:522:25 | call to taint | hash_flow.rb:519:5:519:8 | hash [element :c] | provenance | | +| hash_flow.rb:524:5:524:5 | b [element :a] | hash_flow.rb:529:11:529:11 | b [element :a] | provenance | | +| hash_flow.rb:524:9:524:12 | hash [element :a] | hash_flow.rb:524:9:528:7 | call to select [element :a] | provenance | | +| hash_flow.rb:524:9:524:12 | hash [element :a] | hash_flow.rb:524:30:524:34 | value | provenance | | +| hash_flow.rb:524:9:524:12 | hash [element :c] | hash_flow.rb:524:30:524:34 | value | provenance | | +| hash_flow.rb:524:9:528:7 | call to select [element :a] | hash_flow.rb:524:5:524:5 | b [element :a] | provenance | | +| hash_flow.rb:524:30:524:34 | value | hash_flow.rb:526:14:526:18 | value | provenance | | +| hash_flow.rb:529:11:529:11 | b [element :a] | hash_flow.rb:529:11:529:15 | ...[...] | provenance | | +| hash_flow.rb:529:11:529:15 | ...[...] | hash_flow.rb:529:10:529:16 | ( ... ) | provenance | | +| hash_flow.rb:535:5:535:8 | hash [element :a] | hash_flow.rb:540:5:540:8 | hash [element :a] | provenance | | +| hash_flow.rb:535:5:535:8 | hash [element :c] | hash_flow.rb:540:5:540:8 | hash [element :c] | provenance | | +| hash_flow.rb:536:15:536:25 | call to taint | hash_flow.rb:535:5:535:8 | hash [element :a] | provenance | | +| hash_flow.rb:538:15:538:25 | call to taint | hash_flow.rb:535:5:535:8 | hash [element :c] | provenance | | +| hash_flow.rb:540:5:540:8 | [post] hash [element :a] | hash_flow.rb:545:11:545:14 | hash [element :a] | provenance | | +| hash_flow.rb:540:5:540:8 | hash [element :a] | hash_flow.rb:540:5:540:8 | [post] hash [element :a] | provenance | | +| hash_flow.rb:540:5:540:8 | hash [element :a] | hash_flow.rb:540:27:540:31 | value | provenance | | +| hash_flow.rb:540:5:540:8 | hash [element :c] | hash_flow.rb:540:27:540:31 | value | provenance | | +| hash_flow.rb:540:27:540:31 | value | hash_flow.rb:542:14:542:18 | value | provenance | | +| hash_flow.rb:545:11:545:14 | hash [element :a] | hash_flow.rb:545:11:545:18 | ...[...] | provenance | | +| hash_flow.rb:545:11:545:18 | ...[...] | hash_flow.rb:545:10:545:19 | ( ... ) | provenance | | +| hash_flow.rb:551:5:551:8 | hash [element :a] | hash_flow.rb:556:9:556:12 | hash [element :a] | provenance | | +| hash_flow.rb:551:5:551:8 | hash [element :c] | hash_flow.rb:556:9:556:12 | hash [element :c] | provenance | | +| hash_flow.rb:552:15:552:25 | call to taint | hash_flow.rb:551:5:551:8 | hash [element :a] | provenance | | +| hash_flow.rb:554:15:554:25 | call to taint | hash_flow.rb:551:5:551:8 | hash [element :c] | provenance | | +| hash_flow.rb:556:5:556:5 | b [element 1] | hash_flow.rb:559:11:559:11 | b [element 1] | provenance | | +| hash_flow.rb:556:9:556:12 | [post] hash [element :a] | hash_flow.rb:557:11:557:14 | hash [element :a] | provenance | | +| hash_flow.rb:556:9:556:12 | hash [element :a] | hash_flow.rb:556:9:556:12 | [post] hash [element :a] | provenance | | +| hash_flow.rb:556:9:556:12 | hash [element :a] | hash_flow.rb:556:9:556:18 | call to shift [element 1] | provenance | | +| hash_flow.rb:556:9:556:12 | hash [element :c] | hash_flow.rb:556:9:556:18 | call to shift [element 1] | provenance | | +| hash_flow.rb:556:9:556:18 | call to shift [element 1] | hash_flow.rb:556:5:556:5 | b [element 1] | provenance | | +| hash_flow.rb:557:11:557:14 | hash [element :a] | hash_flow.rb:557:11:557:18 | ...[...] | provenance | | +| hash_flow.rb:557:11:557:18 | ...[...] | hash_flow.rb:557:10:557:19 | ( ... ) | provenance | | +| hash_flow.rb:559:11:559:11 | b [element 1] | hash_flow.rb:559:11:559:14 | ...[...] | provenance | | +| hash_flow.rb:559:11:559:14 | ...[...] | hash_flow.rb:559:10:559:15 | ( ... ) | provenance | | +| hash_flow.rb:565:5:565:8 | hash [element :a] | hash_flow.rb:570:9:570:12 | hash [element :a] | provenance | | +| hash_flow.rb:565:5:565:8 | hash [element :a] | hash_flow.rb:575:9:575:12 | hash [element :a] | provenance | | +| hash_flow.rb:565:5:565:8 | hash [element :c] | hash_flow.rb:575:9:575:12 | hash [element :c] | provenance | | +| hash_flow.rb:566:15:566:25 | call to taint | hash_flow.rb:565:5:565:8 | hash [element :a] | provenance | | +| hash_flow.rb:568:15:568:25 | call to taint | hash_flow.rb:565:5:565:8 | hash [element :c] | provenance | | +| hash_flow.rb:570:5:570:5 | b [element :a] | hash_flow.rb:571:11:571:11 | b [element :a] | provenance | | +| hash_flow.rb:570:9:570:12 | hash [element :a] | hash_flow.rb:570:9:570:26 | call to slice [element :a] | provenance | | +| hash_flow.rb:570:9:570:26 | call to slice [element :a] | hash_flow.rb:570:5:570:5 | b [element :a] | provenance | | +| hash_flow.rb:571:11:571:11 | b [element :a] | hash_flow.rb:571:11:571:15 | ...[...] | provenance | | +| hash_flow.rb:571:11:571:15 | ...[...] | hash_flow.rb:571:10:571:16 | ( ... ) | provenance | | +| hash_flow.rb:575:5:575:5 | c [element :a] | hash_flow.rb:576:11:576:11 | c [element :a] | provenance | | +| hash_flow.rb:575:5:575:5 | c [element :c] | hash_flow.rb:578:11:578:11 | c [element :c] | provenance | | +| hash_flow.rb:575:9:575:12 | hash [element :a] | hash_flow.rb:575:9:575:25 | call to slice [element :a] | provenance | | +| hash_flow.rb:575:9:575:12 | hash [element :c] | hash_flow.rb:575:9:575:25 | call to slice [element :c] | provenance | | +| hash_flow.rb:575:9:575:25 | call to slice [element :a] | hash_flow.rb:575:5:575:5 | c [element :a] | provenance | | +| hash_flow.rb:575:9:575:25 | call to slice [element :c] | hash_flow.rb:575:5:575:5 | c [element :c] | provenance | | +| hash_flow.rb:576:11:576:11 | c [element :a] | hash_flow.rb:576:11:576:15 | ...[...] | provenance | | +| hash_flow.rb:576:11:576:15 | ...[...] | hash_flow.rb:576:10:576:16 | ( ... ) | provenance | | +| hash_flow.rb:578:11:578:11 | c [element :c] | hash_flow.rb:578:11:578:15 | ...[...] | provenance | | +| hash_flow.rb:578:11:578:15 | ...[...] | hash_flow.rb:578:10:578:16 | ( ... ) | provenance | | +| hash_flow.rb:584:5:584:8 | hash [element :a] | hash_flow.rb:589:9:589:12 | hash [element :a] | provenance | | +| hash_flow.rb:584:5:584:8 | hash [element :c] | hash_flow.rb:589:9:589:12 | hash [element :c] | provenance | | +| hash_flow.rb:585:15:585:25 | call to taint | hash_flow.rb:584:5:584:8 | hash [element :a] | provenance | | +| hash_flow.rb:587:15:587:25 | call to taint | hash_flow.rb:584:5:584:8 | hash [element :c] | provenance | | +| hash_flow.rb:589:5:589:5 | a [element, element 1] | hash_flow.rb:591:11:591:11 | a [element, element 1] | provenance | | +| hash_flow.rb:589:9:589:12 | hash [element :a] | hash_flow.rb:589:9:589:17 | call to to_a [element, element 1] | provenance | | +| hash_flow.rb:589:9:589:12 | hash [element :c] | hash_flow.rb:589:9:589:17 | call to to_a [element, element 1] | provenance | | +| hash_flow.rb:589:9:589:17 | call to to_a [element, element 1] | hash_flow.rb:589:5:589:5 | a [element, element 1] | provenance | | +| hash_flow.rb:591:11:591:11 | a [element, element 1] | hash_flow.rb:591:11:591:14 | ...[...] [element 1] | provenance | | +| hash_flow.rb:591:11:591:14 | ...[...] [element 1] | hash_flow.rb:591:11:591:17 | ...[...] | provenance | | +| hash_flow.rb:591:11:591:17 | ...[...] | hash_flow.rb:591:10:591:18 | ( ... ) | provenance | | +| hash_flow.rb:597:5:597:8 | hash [element :a] | hash_flow.rb:602:9:602:12 | hash [element :a] | provenance | | +| hash_flow.rb:597:5:597:8 | hash [element :a] | hash_flow.rb:607:9:607:12 | hash [element :a] | provenance | | +| hash_flow.rb:597:5:597:8 | hash [element :c] | hash_flow.rb:602:9:602:12 | hash [element :c] | provenance | | +| hash_flow.rb:597:5:597:8 | hash [element :c] | hash_flow.rb:607:9:607:12 | hash [element :c] | provenance | | +| hash_flow.rb:598:15:598:25 | call to taint | hash_flow.rb:597:5:597:8 | hash [element :a] | provenance | | +| hash_flow.rb:600:15:600:25 | call to taint | hash_flow.rb:597:5:597:8 | hash [element :c] | provenance | | +| hash_flow.rb:602:5:602:5 | a [element :a] | hash_flow.rb:603:11:603:11 | a [element :a] | provenance | | +| hash_flow.rb:602:5:602:5 | a [element :c] | hash_flow.rb:605:11:605:11 | a [element :c] | provenance | | +| hash_flow.rb:602:9:602:12 | hash [element :a] | hash_flow.rb:602:9:602:17 | call to to_h [element :a] | provenance | | +| hash_flow.rb:602:9:602:12 | hash [element :c] | hash_flow.rb:602:9:602:17 | call to to_h [element :c] | provenance | | +| hash_flow.rb:602:9:602:17 | call to to_h [element :a] | hash_flow.rb:602:5:602:5 | a [element :a] | provenance | | +| hash_flow.rb:602:9:602:17 | call to to_h [element :c] | hash_flow.rb:602:5:602:5 | a [element :c] | provenance | | +| hash_flow.rb:603:11:603:11 | a [element :a] | hash_flow.rb:603:11:603:15 | ...[...] | provenance | | +| hash_flow.rb:603:11:603:15 | ...[...] | hash_flow.rb:603:10:603:16 | ( ... ) | provenance | | +| hash_flow.rb:605:11:605:11 | a [element :c] | hash_flow.rb:605:11:605:15 | ...[...] | provenance | | +| hash_flow.rb:605:11:605:15 | ...[...] | hash_flow.rb:605:10:605:16 | ( ... ) | provenance | | +| hash_flow.rb:607:5:607:5 | b [element] | hash_flow.rb:612:11:612:11 | b [element] | provenance | | +| hash_flow.rb:607:9:607:12 | hash [element :a] | hash_flow.rb:607:28:607:32 | value | provenance | | +| hash_flow.rb:607:9:607:12 | hash [element :c] | hash_flow.rb:607:28:607:32 | value | provenance | | +| hash_flow.rb:607:9:611:7 | call to to_h [element] | hash_flow.rb:607:5:607:5 | b [element] | provenance | | +| hash_flow.rb:607:28:607:32 | value | hash_flow.rb:609:14:609:18 | value | provenance | | +| hash_flow.rb:610:14:610:24 | call to taint | hash_flow.rb:607:9:611:7 | call to to_h [element] | provenance | | +| hash_flow.rb:612:11:612:11 | b [element] | hash_flow.rb:612:11:612:15 | ...[...] | provenance | | +| hash_flow.rb:612:11:612:15 | ...[...] | hash_flow.rb:612:10:612:16 | ( ... ) | provenance | | +| hash_flow.rb:618:5:618:8 | hash [element :a] | hash_flow.rb:623:9:623:12 | hash [element :a] | provenance | | +| hash_flow.rb:618:5:618:8 | hash [element :c] | hash_flow.rb:623:9:623:12 | hash [element :c] | provenance | | +| hash_flow.rb:619:15:619:25 | call to taint | hash_flow.rb:618:5:618:8 | hash [element :a] | provenance | | +| hash_flow.rb:621:15:621:25 | call to taint | hash_flow.rb:618:5:618:8 | hash [element :c] | provenance | | +| hash_flow.rb:623:5:623:5 | a [element] | hash_flow.rb:624:11:624:11 | a [element] | provenance | | +| hash_flow.rb:623:5:623:5 | a [element] | hash_flow.rb:625:11:625:11 | a [element] | provenance | | +| hash_flow.rb:623:5:623:5 | a [element] | hash_flow.rb:626:11:626:11 | a [element] | provenance | | +| hash_flow.rb:623:9:623:12 | hash [element :a] | hash_flow.rb:623:9:623:45 | call to transform_keys [element] | provenance | | +| hash_flow.rb:623:9:623:12 | hash [element :c] | hash_flow.rb:623:9:623:45 | call to transform_keys [element] | provenance | | +| hash_flow.rb:623:9:623:45 | call to transform_keys [element] | hash_flow.rb:623:5:623:5 | a [element] | provenance | | +| hash_flow.rb:624:11:624:11 | a [element] | hash_flow.rb:624:11:624:16 | ...[...] | provenance | | +| hash_flow.rb:624:11:624:16 | ...[...] | hash_flow.rb:624:10:624:17 | ( ... ) | provenance | | +| hash_flow.rb:625:11:625:11 | a [element] | hash_flow.rb:625:11:625:16 | ...[...] | provenance | | +| hash_flow.rb:625:11:625:16 | ...[...] | hash_flow.rb:625:10:625:17 | ( ... ) | provenance | | +| hash_flow.rb:626:11:626:11 | a [element] | hash_flow.rb:626:11:626:16 | ...[...] | provenance | | +| hash_flow.rb:626:11:626:16 | ...[...] | hash_flow.rb:626:10:626:17 | ( ... ) | provenance | | +| hash_flow.rb:632:5:632:8 | hash [element :a] | hash_flow.rb:639:5:639:8 | hash [element :a] | provenance | | +| hash_flow.rb:632:5:632:8 | hash [element :c] | hash_flow.rb:639:5:639:8 | hash [element :c] | provenance | | +| hash_flow.rb:633:15:633:25 | call to taint | hash_flow.rb:632:5:632:8 | hash [element :a] | provenance | | +| hash_flow.rb:635:15:635:25 | call to taint | hash_flow.rb:632:5:632:8 | hash [element :c] | provenance | | +| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:639:5:639:8 | hash [element] | provenance | | +| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:640:11:640:14 | hash [element] | provenance | | +| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:641:11:641:14 | hash [element] | provenance | | +| hash_flow.rb:637:5:637:8 | [post] hash [element] | hash_flow.rb:642:11:642:14 | hash [element] | provenance | | +| hash_flow.rb:637:15:637:25 | call to taint | hash_flow.rb:637:5:637:8 | [post] hash [element] | provenance | | +| hash_flow.rb:639:5:639:8 | [post] hash [element] | hash_flow.rb:640:11:640:14 | hash [element] | provenance | | +| hash_flow.rb:639:5:639:8 | [post] hash [element] | hash_flow.rb:641:11:641:14 | hash [element] | provenance | | +| hash_flow.rb:639:5:639:8 | [post] hash [element] | hash_flow.rb:642:11:642:14 | hash [element] | provenance | | +| hash_flow.rb:639:5:639:8 | hash [element :a] | hash_flow.rb:639:5:639:8 | [post] hash [element] | provenance | | +| hash_flow.rb:639:5:639:8 | hash [element :c] | hash_flow.rb:639:5:639:8 | [post] hash [element] | provenance | | +| hash_flow.rb:639:5:639:8 | hash [element] | hash_flow.rb:639:5:639:8 | [post] hash [element] | provenance | | +| hash_flow.rb:640:11:640:14 | hash [element] | hash_flow.rb:640:11:640:19 | ...[...] | provenance | | +| hash_flow.rb:640:11:640:19 | ...[...] | hash_flow.rb:640:10:640:20 | ( ... ) | provenance | | +| hash_flow.rb:641:11:641:14 | hash [element] | hash_flow.rb:641:11:641:19 | ...[...] | provenance | | +| hash_flow.rb:641:11:641:19 | ...[...] | hash_flow.rb:641:10:641:20 | ( ... ) | provenance | | +| hash_flow.rb:642:11:642:14 | hash [element] | hash_flow.rb:642:11:642:19 | ...[...] | provenance | | +| hash_flow.rb:642:11:642:19 | ...[...] | hash_flow.rb:642:10:642:20 | ( ... ) | provenance | | +| hash_flow.rb:648:5:648:8 | hash [element :a] | hash_flow.rb:653:9:653:12 | hash [element :a] | provenance | | +| hash_flow.rb:648:5:648:8 | hash [element :a] | hash_flow.rb:657:11:657:14 | hash [element :a] | provenance | | +| hash_flow.rb:648:5:648:8 | hash [element :c] | hash_flow.rb:653:9:653:12 | hash [element :c] | provenance | | +| hash_flow.rb:649:15:649:25 | call to taint | hash_flow.rb:648:5:648:8 | hash [element :a] | provenance | | +| hash_flow.rb:651:15:651:25 | call to taint | hash_flow.rb:648:5:648:8 | hash [element :c] | provenance | | +| hash_flow.rb:653:5:653:5 | b [element] | hash_flow.rb:658:11:658:11 | b [element] | provenance | | +| hash_flow.rb:653:9:653:12 | hash [element :a] | hash_flow.rb:653:35:653:39 | value | provenance | | +| hash_flow.rb:653:9:653:12 | hash [element :c] | hash_flow.rb:653:35:653:39 | value | provenance | | +| hash_flow.rb:653:9:656:7 | call to transform_values [element] | hash_flow.rb:653:5:653:5 | b [element] | provenance | | +| hash_flow.rb:653:35:653:39 | value | hash_flow.rb:654:14:654:18 | value | provenance | | +| hash_flow.rb:655:9:655:19 | call to taint | hash_flow.rb:653:9:656:7 | call to transform_values [element] | provenance | | +| hash_flow.rb:657:11:657:14 | hash [element :a] | hash_flow.rb:657:11:657:18 | ...[...] | provenance | | +| hash_flow.rb:657:11:657:18 | ...[...] | hash_flow.rb:657:10:657:19 | ( ... ) | provenance | | +| hash_flow.rb:658:11:658:11 | b [element] | hash_flow.rb:658:11:658:15 | ...[...] | provenance | | +| hash_flow.rb:658:11:658:15 | ...[...] | hash_flow.rb:658:10:658:16 | ( ... ) | provenance | | +| hash_flow.rb:664:5:664:8 | hash [element :a] | hash_flow.rb:669:5:669:8 | hash [element :a] | provenance | | +| hash_flow.rb:664:5:664:8 | hash [element :c] | hash_flow.rb:669:5:669:8 | hash [element :c] | provenance | | +| hash_flow.rb:665:15:665:25 | call to taint | hash_flow.rb:664:5:664:8 | hash [element :a] | provenance | | +| hash_flow.rb:667:15:667:25 | call to taint | hash_flow.rb:664:5:664:8 | hash [element :c] | provenance | | +| hash_flow.rb:669:5:669:8 | [post] hash [element] | hash_flow.rb:673:11:673:14 | hash [element] | provenance | | +| hash_flow.rb:669:5:669:8 | hash [element :a] | hash_flow.rb:669:32:669:36 | value | provenance | | +| hash_flow.rb:669:5:669:8 | hash [element :c] | hash_flow.rb:669:32:669:36 | value | provenance | | +| hash_flow.rb:669:32:669:36 | value | hash_flow.rb:670:14:670:18 | value | provenance | | +| hash_flow.rb:671:9:671:19 | call to taint | hash_flow.rb:669:5:669:8 | [post] hash [element] | provenance | | +| hash_flow.rb:673:11:673:14 | hash [element] | hash_flow.rb:673:11:673:18 | ...[...] | provenance | | +| hash_flow.rb:673:11:673:18 | ...[...] | hash_flow.rb:673:10:673:19 | ( ... ) | provenance | | +| hash_flow.rb:679:5:679:9 | hash1 [element :a] | hash_flow.rb:689:12:689:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:679:5:679:9 | hash1 [element :c] | hash_flow.rb:689:12:689:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:680:15:680:25 | call to taint | hash_flow.rb:679:5:679:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:682:15:682:25 | call to taint | hash_flow.rb:679:5:679:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:684:5:684:9 | hash2 [element :d] | hash_flow.rb:689:25:689:29 | hash2 [element :d] | provenance | | +| hash_flow.rb:684:5:684:9 | hash2 [element :f] | hash_flow.rb:689:25:689:29 | hash2 [element :f] | provenance | | +| hash_flow.rb:685:15:685:25 | call to taint | hash_flow.rb:684:5:684:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:687:15:687:25 | call to taint | hash_flow.rb:684:5:684:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:689:5:689:8 | hash [element :a] | hash_flow.rb:694:11:694:14 | hash [element :a] | provenance | | +| hash_flow.rb:689:5:689:8 | hash [element :c] | hash_flow.rb:696:11:696:14 | hash [element :c] | provenance | | +| hash_flow.rb:689:5:689:8 | hash [element :d] | hash_flow.rb:697:11:697:14 | hash [element :d] | provenance | | +| hash_flow.rb:689:5:689:8 | hash [element :f] | hash_flow.rb:699:11:699:14 | hash [element :f] | provenance | | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :a] | hash_flow.rb:701:11:701:15 | hash1 [element :a] | provenance | | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :c] | hash_flow.rb:703:11:703:15 | hash1 [element :c] | provenance | | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :d] | hash_flow.rb:704:11:704:15 | hash1 [element :d] | provenance | | +| hash_flow.rb:689:12:689:16 | [post] hash1 [element :f] | hash_flow.rb:706:11:706:15 | hash1 [element :f] | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :a] | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:12:693:7 | call to update [element :a] | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:41:689:49 | old_value | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :a] | hash_flow.rb:689:52:689:60 | new_value | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :c] | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:12:693:7 | call to update [element :c] | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:41:689:49 | old_value | provenance | | +| hash_flow.rb:689:12:689:16 | hash1 [element :c] | hash_flow.rb:689:52:689:60 | new_value | provenance | | +| hash_flow.rb:689:12:693:7 | call to update [element :a] | hash_flow.rb:689:5:689:8 | hash [element :a] | provenance | | +| hash_flow.rb:689:12:693:7 | call to update [element :c] | hash_flow.rb:689:5:689:8 | hash [element :c] | provenance | | +| hash_flow.rb:689:12:693:7 | call to update [element :d] | hash_flow.rb:689:5:689:8 | hash [element :d] | provenance | | +| hash_flow.rb:689:12:693:7 | call to update [element :f] | hash_flow.rb:689:5:689:8 | hash [element :f] | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :d] | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:12:693:7 | call to update [element :d] | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:41:689:49 | old_value | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :d] | hash_flow.rb:689:52:689:60 | new_value | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:12:689:16 | [post] hash1 [element :f] | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:12:693:7 | call to update [element :f] | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:41:689:49 | old_value | provenance | | +| hash_flow.rb:689:25:689:29 | hash2 [element :f] | hash_flow.rb:689:52:689:60 | new_value | provenance | | +| hash_flow.rb:689:41:689:49 | old_value | hash_flow.rb:691:14:691:22 | old_value | provenance | | +| hash_flow.rb:689:52:689:60 | new_value | hash_flow.rb:692:14:692:22 | new_value | provenance | | +| hash_flow.rb:694:11:694:14 | hash [element :a] | hash_flow.rb:694:11:694:18 | ...[...] | provenance | | +| hash_flow.rb:694:11:694:18 | ...[...] | hash_flow.rb:694:10:694:19 | ( ... ) | provenance | | +| hash_flow.rb:696:11:696:14 | hash [element :c] | hash_flow.rb:696:11:696:18 | ...[...] | provenance | | +| hash_flow.rb:696:11:696:18 | ...[...] | hash_flow.rb:696:10:696:19 | ( ... ) | provenance | | +| hash_flow.rb:697:11:697:14 | hash [element :d] | hash_flow.rb:697:11:697:18 | ...[...] | provenance | | +| hash_flow.rb:697:11:697:18 | ...[...] | hash_flow.rb:697:10:697:19 | ( ... ) | provenance | | +| hash_flow.rb:699:11:699:14 | hash [element :f] | hash_flow.rb:699:11:699:18 | ...[...] | provenance | | +| hash_flow.rb:699:11:699:18 | ...[...] | hash_flow.rb:699:10:699:19 | ( ... ) | provenance | | +| hash_flow.rb:701:11:701:15 | hash1 [element :a] | hash_flow.rb:701:11:701:19 | ...[...] | provenance | | +| hash_flow.rb:701:11:701:19 | ...[...] | hash_flow.rb:701:10:701:20 | ( ... ) | provenance | | +| hash_flow.rb:703:11:703:15 | hash1 [element :c] | hash_flow.rb:703:11:703:19 | ...[...] | provenance | | +| hash_flow.rb:703:11:703:19 | ...[...] | hash_flow.rb:703:10:703:20 | ( ... ) | provenance | | +| hash_flow.rb:704:11:704:15 | hash1 [element :d] | hash_flow.rb:704:11:704:19 | ...[...] | provenance | | +| hash_flow.rb:704:11:704:19 | ...[...] | hash_flow.rb:704:10:704:20 | ( ... ) | provenance | | +| hash_flow.rb:706:11:706:15 | hash1 [element :f] | hash_flow.rb:706:11:706:19 | ...[...] | provenance | | +| hash_flow.rb:706:11:706:19 | ...[...] | hash_flow.rb:706:10:706:20 | ( ... ) | provenance | | +| hash_flow.rb:712:5:712:8 | hash [element :a] | hash_flow.rb:717:9:717:12 | hash [element :a] | provenance | | +| hash_flow.rb:712:5:712:8 | hash [element :c] | hash_flow.rb:717:9:717:12 | hash [element :c] | provenance | | +| hash_flow.rb:713:15:713:25 | call to taint | hash_flow.rb:712:5:712:8 | hash [element :a] | provenance | | +| hash_flow.rb:715:15:715:25 | call to taint | hash_flow.rb:712:5:712:8 | hash [element :c] | provenance | | +| hash_flow.rb:717:5:717:5 | a [element] | hash_flow.rb:718:11:718:11 | a [element] | provenance | | +| hash_flow.rb:717:9:717:12 | hash [element :a] | hash_flow.rb:717:9:717:19 | call to values [element] | provenance | | +| hash_flow.rb:717:9:717:12 | hash [element :c] | hash_flow.rb:717:9:717:19 | call to values [element] | provenance | | +| hash_flow.rb:717:9:717:19 | call to values [element] | hash_flow.rb:717:5:717:5 | a [element] | provenance | | +| hash_flow.rb:718:11:718:11 | a [element] | hash_flow.rb:718:11:718:14 | ...[...] | provenance | | +| hash_flow.rb:718:11:718:14 | ...[...] | hash_flow.rb:718:10:718:15 | ( ... ) | provenance | | +| hash_flow.rb:724:5:724:8 | hash [element :a] | hash_flow.rb:729:9:729:12 | hash [element :a] | provenance | | +| hash_flow.rb:724:5:724:8 | hash [element :a] | hash_flow.rb:731:9:731:12 | hash [element :a] | provenance | | +| hash_flow.rb:724:5:724:8 | hash [element :c] | hash_flow.rb:731:9:731:12 | hash [element :c] | provenance | | +| hash_flow.rb:725:15:725:25 | call to taint | hash_flow.rb:724:5:724:8 | hash [element :a] | provenance | | +| hash_flow.rb:727:15:727:25 | call to taint | hash_flow.rb:724:5:724:8 | hash [element :c] | provenance | | +| hash_flow.rb:729:5:729:5 | b [element 0] | hash_flow.rb:730:10:730:10 | b [element 0] | provenance | | +| hash_flow.rb:729:9:729:12 | hash [element :a] | hash_flow.rb:729:9:729:26 | call to values_at [element 0] | provenance | | +| hash_flow.rb:729:9:729:26 | call to values_at [element 0] | hash_flow.rb:729:5:729:5 | b [element 0] | provenance | | +| hash_flow.rb:730:10:730:10 | b [element 0] | hash_flow.rb:730:10:730:13 | ...[...] | provenance | | +| hash_flow.rb:731:5:731:5 | b [element] | hash_flow.rb:732:10:732:10 | b [element] | provenance | | +| hash_flow.rb:731:9:731:12 | hash [element :a] | hash_flow.rb:731:9:731:31 | call to fetch_values [element] | provenance | | +| hash_flow.rb:731:9:731:12 | hash [element :c] | hash_flow.rb:731:9:731:31 | call to fetch_values [element] | provenance | | +| hash_flow.rb:731:9:731:31 | call to fetch_values [element] | hash_flow.rb:731:5:731:5 | b [element] | provenance | | +| hash_flow.rb:732:10:732:10 | b [element] | hash_flow.rb:732:10:732:13 | ...[...] | provenance | | +| hash_flow.rb:738:5:738:9 | hash1 [element :a] | hash_flow.rb:748:16:748:20 | hash1 [element :a] | provenance | | +| hash_flow.rb:738:5:738:9 | hash1 [element :c] | hash_flow.rb:748:16:748:20 | hash1 [element :c] | provenance | | +| hash_flow.rb:739:15:739:25 | call to taint | hash_flow.rb:738:5:738:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:741:15:741:25 | call to taint | hash_flow.rb:738:5:738:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:743:5:743:9 | hash2 [element :d] | hash_flow.rb:748:44:748:48 | hash2 [element :d] | provenance | | +| hash_flow.rb:743:5:743:9 | hash2 [element :f] | hash_flow.rb:748:44:748:48 | hash2 [element :f] | provenance | | +| hash_flow.rb:744:15:744:25 | call to taint | hash_flow.rb:743:5:743:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:746:15:746:25 | call to taint | hash_flow.rb:743:5:743:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:748:5:748:8 | hash [element :a] | hash_flow.rb:749:10:749:13 | hash [element :a] | provenance | | +| hash_flow.rb:748:5:748:8 | hash [element :c] | hash_flow.rb:751:10:751:13 | hash [element :c] | provenance | | +| hash_flow.rb:748:5:748:8 | hash [element :d] | hash_flow.rb:752:10:752:13 | hash [element :d] | provenance | | +| hash_flow.rb:748:5:748:8 | hash [element :f] | hash_flow.rb:754:10:754:13 | hash [element :f] | provenance | | +| hash_flow.rb:748:5:748:8 | hash [element :g] | hash_flow.rb:755:10:755:13 | hash [element :g] | provenance | | +| hash_flow.rb:748:14:748:20 | ** ... [element :a] | hash_flow.rb:748:5:748:8 | hash [element :a] | provenance | | +| hash_flow.rb:748:14:748:20 | ** ... [element :c] | hash_flow.rb:748:5:748:8 | hash [element :c] | provenance | | +| hash_flow.rb:748:16:748:20 | hash1 [element :a] | hash_flow.rb:748:14:748:20 | ** ... [element :a] | provenance | | +| hash_flow.rb:748:16:748:20 | hash1 [element :c] | hash_flow.rb:748:14:748:20 | ** ... [element :c] | provenance | | +| hash_flow.rb:748:29:748:39 | call to taint | hash_flow.rb:748:5:748:8 | hash [element :g] | provenance | | +| hash_flow.rb:748:42:748:48 | ** ... [element :d] | hash_flow.rb:748:5:748:8 | hash [element :d] | provenance | | +| hash_flow.rb:748:42:748:48 | ** ... [element :f] | hash_flow.rb:748:5:748:8 | hash [element :f] | provenance | | +| hash_flow.rb:748:44:748:48 | hash2 [element :d] | hash_flow.rb:748:42:748:48 | ** ... [element :d] | provenance | | +| hash_flow.rb:748:44:748:48 | hash2 [element :f] | hash_flow.rb:748:42:748:48 | ** ... [element :f] | provenance | | +| hash_flow.rb:749:10:749:13 | hash [element :a] | hash_flow.rb:749:10:749:17 | ...[...] | provenance | | +| hash_flow.rb:751:10:751:13 | hash [element :c] | hash_flow.rb:751:10:751:17 | ...[...] | provenance | | +| hash_flow.rb:752:10:752:13 | hash [element :d] | hash_flow.rb:752:10:752:17 | ...[...] | provenance | | +| hash_flow.rb:754:10:754:13 | hash [element :f] | hash_flow.rb:754:10:754:17 | ...[...] | provenance | | +| hash_flow.rb:755:10:755:13 | hash [element :g] | hash_flow.rb:755:10:755:17 | ...[...] | provenance | | +| hash_flow.rb:762:5:762:8 | hash [element :a] | hash_flow.rb:769:10:769:13 | hash [element :a] | provenance | | +| hash_flow.rb:762:5:762:8 | hash [element :c] | hash_flow.rb:771:10:771:13 | hash [element :c] | provenance | | +| hash_flow.rb:762:5:762:8 | hash [element :c] | hash_flow.rb:774:9:774:12 | hash [element :c] | provenance | | +| hash_flow.rb:762:5:762:8 | hash [element :d] | hash_flow.rb:772:10:772:13 | hash [element :d] | provenance | | +| hash_flow.rb:763:15:763:25 | call to taint | hash_flow.rb:762:5:762:8 | hash [element :a] | provenance | | +| hash_flow.rb:765:15:765:25 | call to taint | hash_flow.rb:762:5:762:8 | hash [element :c] | provenance | | +| hash_flow.rb:766:15:766:25 | call to taint | hash_flow.rb:762:5:762:8 | hash [element :d] | provenance | | +| hash_flow.rb:769:10:769:13 | hash [element :a] | hash_flow.rb:769:10:769:17 | ...[...] | provenance | | +| hash_flow.rb:771:10:771:13 | hash [element :c] | hash_flow.rb:771:10:771:17 | ...[...] | provenance | | +| hash_flow.rb:772:10:772:13 | hash [element :d] | hash_flow.rb:772:10:772:17 | ...[...] | provenance | | +| hash_flow.rb:774:5:774:5 | x [element :c] | hash_flow.rb:778:10:778:10 | x [element :c] | provenance | | +| hash_flow.rb:774:9:774:12 | [post] hash [element :c] | hash_flow.rb:783:10:783:13 | hash [element :c] | provenance | | +| hash_flow.rb:774:9:774:12 | hash [element :c] | hash_flow.rb:774:9:774:12 | [post] hash [element :c] | provenance | | +| hash_flow.rb:774:9:774:12 | hash [element :c] | hash_flow.rb:774:9:774:31 | call to except! [element :c] | provenance | | +| hash_flow.rb:774:9:774:31 | call to except! [element :c] | hash_flow.rb:774:5:774:5 | x [element :c] | provenance | | +| hash_flow.rb:778:10:778:10 | x [element :c] | hash_flow.rb:778:10:778:14 | ...[...] | provenance | | +| hash_flow.rb:783:10:783:13 | hash [element :c] | hash_flow.rb:783:10:783:17 | ...[...] | provenance | | +| hash_flow.rb:790:5:790:9 | hash1 [element :a] | hash_flow.rb:800:12:800:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:790:5:790:9 | hash1 [element :c] | hash_flow.rb:800:12:800:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:791:15:791:25 | call to taint | hash_flow.rb:790:5:790:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:793:15:793:25 | call to taint | hash_flow.rb:790:5:790:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:795:5:795:9 | hash2 [element :d] | hash_flow.rb:800:29:800:33 | hash2 [element :d] | provenance | | +| hash_flow.rb:795:5:795:9 | hash2 [element :f] | hash_flow.rb:800:29:800:33 | hash2 [element :f] | provenance | | +| hash_flow.rb:796:15:796:25 | call to taint | hash_flow.rb:795:5:795:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:798:15:798:25 | call to taint | hash_flow.rb:795:5:795:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:800:5:800:8 | hash [element :a] | hash_flow.rb:805:11:805:14 | hash [element :a] | provenance | | +| hash_flow.rb:800:5:800:8 | hash [element :c] | hash_flow.rb:807:11:807:14 | hash [element :c] | provenance | | +| hash_flow.rb:800:5:800:8 | hash [element :d] | hash_flow.rb:808:11:808:14 | hash [element :d] | provenance | | +| hash_flow.rb:800:5:800:8 | hash [element :f] | hash_flow.rb:810:11:810:14 | hash [element :f] | provenance | | +| hash_flow.rb:800:12:800:16 | hash1 [element :a] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :a] | provenance | | +| hash_flow.rb:800:12:800:16 | hash1 [element :a] | hash_flow.rb:800:45:800:53 | old_value | provenance | | +| hash_flow.rb:800:12:800:16 | hash1 [element :a] | hash_flow.rb:800:56:800:64 | new_value | provenance | | +| hash_flow.rb:800:12:800:16 | hash1 [element :c] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :c] | provenance | | +| hash_flow.rb:800:12:800:16 | hash1 [element :c] | hash_flow.rb:800:45:800:53 | old_value | provenance | | +| hash_flow.rb:800:12:800:16 | hash1 [element :c] | hash_flow.rb:800:56:800:64 | new_value | provenance | | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :a] | hash_flow.rb:800:5:800:8 | hash [element :a] | provenance | | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :c] | hash_flow.rb:800:5:800:8 | hash [element :c] | provenance | | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :d] | hash_flow.rb:800:5:800:8 | hash [element :d] | provenance | | +| hash_flow.rb:800:12:804:7 | call to deep_merge [element :f] | hash_flow.rb:800:5:800:8 | hash [element :f] | provenance | | +| hash_flow.rb:800:29:800:33 | hash2 [element :d] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :d] | provenance | | +| hash_flow.rb:800:29:800:33 | hash2 [element :d] | hash_flow.rb:800:45:800:53 | old_value | provenance | | +| hash_flow.rb:800:29:800:33 | hash2 [element :d] | hash_flow.rb:800:56:800:64 | new_value | provenance | | +| hash_flow.rb:800:29:800:33 | hash2 [element :f] | hash_flow.rb:800:12:804:7 | call to deep_merge [element :f] | provenance | | +| hash_flow.rb:800:29:800:33 | hash2 [element :f] | hash_flow.rb:800:45:800:53 | old_value | provenance | | +| hash_flow.rb:800:29:800:33 | hash2 [element :f] | hash_flow.rb:800:56:800:64 | new_value | provenance | | +| hash_flow.rb:800:45:800:53 | old_value | hash_flow.rb:802:14:802:22 | old_value | provenance | | +| hash_flow.rb:800:56:800:64 | new_value | hash_flow.rb:803:14:803:22 | new_value | provenance | | +| hash_flow.rb:805:11:805:14 | hash [element :a] | hash_flow.rb:805:11:805:18 | ...[...] | provenance | | +| hash_flow.rb:805:11:805:18 | ...[...] | hash_flow.rb:805:10:805:19 | ( ... ) | provenance | | +| hash_flow.rb:807:11:807:14 | hash [element :c] | hash_flow.rb:807:11:807:18 | ...[...] | provenance | | +| hash_flow.rb:807:11:807:18 | ...[...] | hash_flow.rb:807:10:807:19 | ( ... ) | provenance | | +| hash_flow.rb:808:11:808:14 | hash [element :d] | hash_flow.rb:808:11:808:18 | ...[...] | provenance | | +| hash_flow.rb:808:11:808:18 | ...[...] | hash_flow.rb:808:10:808:19 | ( ... ) | provenance | | +| hash_flow.rb:810:11:810:14 | hash [element :f] | hash_flow.rb:810:11:810:18 | ...[...] | provenance | | +| hash_flow.rb:810:11:810:18 | ...[...] | hash_flow.rb:810:10:810:19 | ( ... ) | provenance | | +| hash_flow.rb:816:5:816:9 | hash1 [element :a] | hash_flow.rb:826:12:826:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:816:5:816:9 | hash1 [element :c] | hash_flow.rb:826:12:826:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:817:15:817:25 | call to taint | hash_flow.rb:816:5:816:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:819:15:819:25 | call to taint | hash_flow.rb:816:5:816:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:821:5:821:9 | hash2 [element :d] | hash_flow.rb:826:30:826:34 | hash2 [element :d] | provenance | | +| hash_flow.rb:821:5:821:9 | hash2 [element :f] | hash_flow.rb:826:30:826:34 | hash2 [element :f] | provenance | | +| hash_flow.rb:822:15:822:25 | call to taint | hash_flow.rb:821:5:821:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:824:15:824:25 | call to taint | hash_flow.rb:821:5:821:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:826:5:826:8 | hash [element :a] | hash_flow.rb:831:11:831:14 | hash [element :a] | provenance | | +| hash_flow.rb:826:5:826:8 | hash [element :c] | hash_flow.rb:833:11:833:14 | hash [element :c] | provenance | | +| hash_flow.rb:826:5:826:8 | hash [element :d] | hash_flow.rb:834:11:834:14 | hash [element :d] | provenance | | +| hash_flow.rb:826:5:826:8 | hash [element :f] | hash_flow.rb:836:11:836:14 | hash [element :f] | provenance | | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :a] | hash_flow.rb:838:11:838:15 | hash1 [element :a] | provenance | | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :c] | hash_flow.rb:840:11:840:15 | hash1 [element :c] | provenance | | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :d] | hash_flow.rb:841:11:841:15 | hash1 [element :d] | provenance | | +| hash_flow.rb:826:12:826:16 | [post] hash1 [element :f] | hash_flow.rb:843:11:843:15 | hash1 [element :f] | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :a] | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :a] | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:46:826:54 | old_value | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :a] | hash_flow.rb:826:57:826:65 | new_value | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :c] | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :c] | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:46:826:54 | old_value | provenance | | +| hash_flow.rb:826:12:826:16 | hash1 [element :c] | hash_flow.rb:826:57:826:65 | new_value | provenance | | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :a] | hash_flow.rb:826:5:826:8 | hash [element :a] | provenance | | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :c] | hash_flow.rb:826:5:826:8 | hash [element :c] | provenance | | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :d] | hash_flow.rb:826:5:826:8 | hash [element :d] | provenance | | +| hash_flow.rb:826:12:830:7 | call to deep_merge! [element :f] | hash_flow.rb:826:5:826:8 | hash [element :f] | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :d] | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :d] | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:46:826:54 | old_value | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :d] | hash_flow.rb:826:57:826:65 | new_value | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:12:826:16 | [post] hash1 [element :f] | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:12:830:7 | call to deep_merge! [element :f] | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:46:826:54 | old_value | provenance | | +| hash_flow.rb:826:30:826:34 | hash2 [element :f] | hash_flow.rb:826:57:826:65 | new_value | provenance | | +| hash_flow.rb:826:46:826:54 | old_value | hash_flow.rb:828:14:828:22 | old_value | provenance | | +| hash_flow.rb:826:57:826:65 | new_value | hash_flow.rb:829:14:829:22 | new_value | provenance | | +| hash_flow.rb:831:11:831:14 | hash [element :a] | hash_flow.rb:831:11:831:18 | ...[...] | provenance | | +| hash_flow.rb:831:11:831:18 | ...[...] | hash_flow.rb:831:10:831:19 | ( ... ) | provenance | | +| hash_flow.rb:833:11:833:14 | hash [element :c] | hash_flow.rb:833:11:833:18 | ...[...] | provenance | | +| hash_flow.rb:833:11:833:18 | ...[...] | hash_flow.rb:833:10:833:19 | ( ... ) | provenance | | +| hash_flow.rb:834:11:834:14 | hash [element :d] | hash_flow.rb:834:11:834:18 | ...[...] | provenance | | +| hash_flow.rb:834:11:834:18 | ...[...] | hash_flow.rb:834:10:834:19 | ( ... ) | provenance | | +| hash_flow.rb:836:11:836:14 | hash [element :f] | hash_flow.rb:836:11:836:18 | ...[...] | provenance | | +| hash_flow.rb:836:11:836:18 | ...[...] | hash_flow.rb:836:10:836:19 | ( ... ) | provenance | | +| hash_flow.rb:838:11:838:15 | hash1 [element :a] | hash_flow.rb:838:11:838:19 | ...[...] | provenance | | +| hash_flow.rb:838:11:838:19 | ...[...] | hash_flow.rb:838:10:838:20 | ( ... ) | provenance | | +| hash_flow.rb:840:11:840:15 | hash1 [element :c] | hash_flow.rb:840:11:840:19 | ...[...] | provenance | | +| hash_flow.rb:840:11:840:19 | ...[...] | hash_flow.rb:840:10:840:20 | ( ... ) | provenance | | +| hash_flow.rb:841:11:841:15 | hash1 [element :d] | hash_flow.rb:841:11:841:19 | ...[...] | provenance | | +| hash_flow.rb:841:11:841:19 | ...[...] | hash_flow.rb:841:10:841:20 | ( ... ) | provenance | | +| hash_flow.rb:843:11:843:15 | hash1 [element :f] | hash_flow.rb:843:11:843:19 | ...[...] | provenance | | +| hash_flow.rb:843:11:843:19 | ...[...] | hash_flow.rb:843:10:843:20 | ( ... ) | provenance | | +| hash_flow.rb:849:5:849:9 | hash1 [element :a] | hash_flow.rb:860:13:860:17 | hash1 [element :a] | provenance | | +| hash_flow.rb:849:5:849:9 | hash1 [element :a] | hash_flow.rb:869:13:869:17 | hash1 [element :a] | provenance | | +| hash_flow.rb:849:5:849:9 | hash1 [element :c] | hash_flow.rb:860:13:860:17 | hash1 [element :c] | provenance | | +| hash_flow.rb:849:5:849:9 | hash1 [element :c] | hash_flow.rb:869:13:869:17 | hash1 [element :c] | provenance | | +| hash_flow.rb:850:12:850:22 | call to taint | hash_flow.rb:849:5:849:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:852:12:852:22 | call to taint | hash_flow.rb:849:5:849:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:854:5:854:9 | hash2 [element :d] | hash_flow.rb:860:33:860:37 | hash2 [element :d] | provenance | | +| hash_flow.rb:854:5:854:9 | hash2 [element :d] | hash_flow.rb:869:33:869:37 | hash2 [element :d] | provenance | | +| hash_flow.rb:854:5:854:9 | hash2 [element :f] | hash_flow.rb:860:33:860:37 | hash2 [element :f] | provenance | | +| hash_flow.rb:854:5:854:9 | hash2 [element :f] | hash_flow.rb:869:33:869:37 | hash2 [element :f] | provenance | | +| hash_flow.rb:855:12:855:22 | call to taint | hash_flow.rb:854:5:854:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:857:12:857:22 | call to taint | hash_flow.rb:854:5:854:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:860:5:860:9 | hash3 [element :a] | hash_flow.rb:861:11:861:15 | hash3 [element :a] | provenance | | +| hash_flow.rb:860:5:860:9 | hash3 [element :c] | hash_flow.rb:863:11:863:15 | hash3 [element :c] | provenance | | +| hash_flow.rb:860:5:860:9 | hash3 [element :d] | hash_flow.rb:864:11:864:15 | hash3 [element :d] | provenance | | +| hash_flow.rb:860:5:860:9 | hash3 [element :f] | hash_flow.rb:866:11:866:15 | hash3 [element :f] | provenance | | +| hash_flow.rb:860:13:860:17 | hash1 [element :a] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :a] | provenance | | +| hash_flow.rb:860:13:860:17 | hash1 [element :c] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :c] | provenance | | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :a] | hash_flow.rb:860:5:860:9 | hash3 [element :a] | provenance | | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :c] | hash_flow.rb:860:5:860:9 | hash3 [element :c] | provenance | | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :d] | hash_flow.rb:860:5:860:9 | hash3 [element :d] | provenance | | +| hash_flow.rb:860:13:860:38 | call to reverse_merge [element :f] | hash_flow.rb:860:5:860:9 | hash3 [element :f] | provenance | | +| hash_flow.rb:860:33:860:37 | hash2 [element :d] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :d] | provenance | | +| hash_flow.rb:860:33:860:37 | hash2 [element :f] | hash_flow.rb:860:13:860:38 | call to reverse_merge [element :f] | provenance | | +| hash_flow.rb:861:11:861:15 | hash3 [element :a] | hash_flow.rb:861:11:861:19 | ...[...] | provenance | | +| hash_flow.rb:861:11:861:19 | ...[...] | hash_flow.rb:861:10:861:20 | ( ... ) | provenance | | +| hash_flow.rb:863:11:863:15 | hash3 [element :c] | hash_flow.rb:863:11:863:19 | ...[...] | provenance | | +| hash_flow.rb:863:11:863:19 | ...[...] | hash_flow.rb:863:10:863:20 | ( ... ) | provenance | | +| hash_flow.rb:864:11:864:15 | hash3 [element :d] | hash_flow.rb:864:11:864:19 | ...[...] | provenance | | +| hash_flow.rb:864:11:864:19 | ...[...] | hash_flow.rb:864:10:864:20 | ( ... ) | provenance | | +| hash_flow.rb:866:11:866:15 | hash3 [element :f] | hash_flow.rb:866:11:866:19 | ...[...] | provenance | | +| hash_flow.rb:866:11:866:19 | ...[...] | hash_flow.rb:866:10:866:20 | ( ... ) | provenance | | +| hash_flow.rb:869:5:869:9 | hash4 [element :a] | hash_flow.rb:870:11:870:15 | hash4 [element :a] | provenance | | +| hash_flow.rb:869:5:869:9 | hash4 [element :c] | hash_flow.rb:872:11:872:15 | hash4 [element :c] | provenance | | +| hash_flow.rb:869:5:869:9 | hash4 [element :d] | hash_flow.rb:873:11:873:15 | hash4 [element :d] | provenance | | +| hash_flow.rb:869:5:869:9 | hash4 [element :f] | hash_flow.rb:875:11:875:15 | hash4 [element :f] | provenance | | +| hash_flow.rb:869:13:869:17 | hash1 [element :a] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :a] | provenance | | +| hash_flow.rb:869:13:869:17 | hash1 [element :c] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :c] | provenance | | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :a] | hash_flow.rb:869:5:869:9 | hash4 [element :a] | provenance | | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :c] | hash_flow.rb:869:5:869:9 | hash4 [element :c] | provenance | | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :d] | hash_flow.rb:869:5:869:9 | hash4 [element :d] | provenance | | +| hash_flow.rb:869:13:869:38 | call to with_defaults [element :f] | hash_flow.rb:869:5:869:9 | hash4 [element :f] | provenance | | +| hash_flow.rb:869:33:869:37 | hash2 [element :d] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :d] | provenance | | +| hash_flow.rb:869:33:869:37 | hash2 [element :f] | hash_flow.rb:869:13:869:38 | call to with_defaults [element :f] | provenance | | +| hash_flow.rb:870:11:870:15 | hash4 [element :a] | hash_flow.rb:870:11:870:19 | ...[...] | provenance | | +| hash_flow.rb:870:11:870:19 | ...[...] | hash_flow.rb:870:10:870:20 | ( ... ) | provenance | | +| hash_flow.rb:872:11:872:15 | hash4 [element :c] | hash_flow.rb:872:11:872:19 | ...[...] | provenance | | +| hash_flow.rb:872:11:872:19 | ...[...] | hash_flow.rb:872:10:872:20 | ( ... ) | provenance | | +| hash_flow.rb:873:11:873:15 | hash4 [element :d] | hash_flow.rb:873:11:873:19 | ...[...] | provenance | | +| hash_flow.rb:873:11:873:19 | ...[...] | hash_flow.rb:873:10:873:20 | ( ... ) | provenance | | +| hash_flow.rb:875:11:875:15 | hash4 [element :f] | hash_flow.rb:875:11:875:19 | ...[...] | provenance | | +| hash_flow.rb:875:11:875:19 | ...[...] | hash_flow.rb:875:10:875:20 | ( ... ) | provenance | | +| hash_flow.rb:881:5:881:9 | hash1 [element :a] | hash_flow.rb:892:12:892:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:881:5:881:9 | hash1 [element :c] | hash_flow.rb:892:12:892:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:882:12:882:22 | call to taint | hash_flow.rb:881:5:881:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:884:12:884:22 | call to taint | hash_flow.rb:881:5:881:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:886:5:886:9 | hash2 [element :d] | hash_flow.rb:892:33:892:37 | hash2 [element :d] | provenance | | +| hash_flow.rb:886:5:886:9 | hash2 [element :f] | hash_flow.rb:892:33:892:37 | hash2 [element :f] | provenance | | +| hash_flow.rb:887:12:887:22 | call to taint | hash_flow.rb:886:5:886:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:889:12:889:22 | call to taint | hash_flow.rb:886:5:886:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:892:5:892:8 | hash [element :a] | hash_flow.rb:893:11:893:14 | hash [element :a] | provenance | | +| hash_flow.rb:892:5:892:8 | hash [element :c] | hash_flow.rb:895:11:895:14 | hash [element :c] | provenance | | +| hash_flow.rb:892:5:892:8 | hash [element :d] | hash_flow.rb:896:11:896:14 | hash [element :d] | provenance | | +| hash_flow.rb:892:5:892:8 | hash [element :f] | hash_flow.rb:898:11:898:14 | hash [element :f] | provenance | | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :a] | hash_flow.rb:900:11:900:15 | hash1 [element :a] | provenance | | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :c] | hash_flow.rb:902:11:902:15 | hash1 [element :c] | provenance | | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :d] | hash_flow.rb:903:11:903:15 | hash1 [element :d] | provenance | | +| hash_flow.rb:892:12:892:16 | [post] hash1 [element :f] | hash_flow.rb:905:11:905:15 | hash1 [element :f] | provenance | | +| hash_flow.rb:892:12:892:16 | hash1 [element :a] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :a] | provenance | | +| hash_flow.rb:892:12:892:16 | hash1 [element :a] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :a] | provenance | | +| hash_flow.rb:892:12:892:16 | hash1 [element :c] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :c] | provenance | | +| hash_flow.rb:892:12:892:16 | hash1 [element :c] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :c] | provenance | | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :a] | hash_flow.rb:892:5:892:8 | hash [element :a] | provenance | | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :c] | hash_flow.rb:892:5:892:8 | hash [element :c] | provenance | | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :d] | hash_flow.rb:892:5:892:8 | hash [element :d] | provenance | | +| hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :f] | hash_flow.rb:892:5:892:8 | hash [element :f] | provenance | | +| hash_flow.rb:892:33:892:37 | hash2 [element :d] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :d] | provenance | | +| hash_flow.rb:892:33:892:37 | hash2 [element :d] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :d] | provenance | | +| hash_flow.rb:892:33:892:37 | hash2 [element :f] | hash_flow.rb:892:12:892:16 | [post] hash1 [element :f] | provenance | | +| hash_flow.rb:892:33:892:37 | hash2 [element :f] | hash_flow.rb:892:12:892:38 | call to reverse_merge! [element :f] | provenance | | +| hash_flow.rb:893:11:893:14 | hash [element :a] | hash_flow.rb:893:11:893:18 | ...[...] | provenance | | +| hash_flow.rb:893:11:893:18 | ...[...] | hash_flow.rb:893:10:893:19 | ( ... ) | provenance | | +| hash_flow.rb:895:11:895:14 | hash [element :c] | hash_flow.rb:895:11:895:18 | ...[...] | provenance | | +| hash_flow.rb:895:11:895:18 | ...[...] | hash_flow.rb:895:10:895:19 | ( ... ) | provenance | | +| hash_flow.rb:896:11:896:14 | hash [element :d] | hash_flow.rb:896:11:896:18 | ...[...] | provenance | | +| hash_flow.rb:896:11:896:18 | ...[...] | hash_flow.rb:896:10:896:19 | ( ... ) | provenance | | +| hash_flow.rb:898:11:898:14 | hash [element :f] | hash_flow.rb:898:11:898:18 | ...[...] | provenance | | +| hash_flow.rb:898:11:898:18 | ...[...] | hash_flow.rb:898:10:898:19 | ( ... ) | provenance | | +| hash_flow.rb:900:11:900:15 | hash1 [element :a] | hash_flow.rb:900:11:900:19 | ...[...] | provenance | | +| hash_flow.rb:900:11:900:19 | ...[...] | hash_flow.rb:900:10:900:20 | ( ... ) | provenance | | +| hash_flow.rb:902:11:902:15 | hash1 [element :c] | hash_flow.rb:902:11:902:19 | ...[...] | provenance | | +| hash_flow.rb:902:11:902:19 | ...[...] | hash_flow.rb:902:10:902:20 | ( ... ) | provenance | | +| hash_flow.rb:903:11:903:15 | hash1 [element :d] | hash_flow.rb:903:11:903:19 | ...[...] | provenance | | +| hash_flow.rb:903:11:903:19 | ...[...] | hash_flow.rb:903:10:903:20 | ( ... ) | provenance | | +| hash_flow.rb:905:11:905:15 | hash1 [element :f] | hash_flow.rb:905:11:905:19 | ...[...] | provenance | | +| hash_flow.rb:905:11:905:19 | ...[...] | hash_flow.rb:905:10:905:20 | ( ... ) | provenance | | +| hash_flow.rb:911:5:911:9 | hash1 [element :a] | hash_flow.rb:922:12:922:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:911:5:911:9 | hash1 [element :c] | hash_flow.rb:922:12:922:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:912:12:912:22 | call to taint | hash_flow.rb:911:5:911:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:914:12:914:22 | call to taint | hash_flow.rb:911:5:911:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:916:5:916:9 | hash2 [element :d] | hash_flow.rb:922:33:922:37 | hash2 [element :d] | provenance | | +| hash_flow.rb:916:5:916:9 | hash2 [element :f] | hash_flow.rb:922:33:922:37 | hash2 [element :f] | provenance | | +| hash_flow.rb:917:12:917:22 | call to taint | hash_flow.rb:916:5:916:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:919:12:919:22 | call to taint | hash_flow.rb:916:5:916:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:922:5:922:8 | hash [element :a] | hash_flow.rb:923:11:923:14 | hash [element :a] | provenance | | +| hash_flow.rb:922:5:922:8 | hash [element :c] | hash_flow.rb:925:11:925:14 | hash [element :c] | provenance | | +| hash_flow.rb:922:5:922:8 | hash [element :d] | hash_flow.rb:926:11:926:14 | hash [element :d] | provenance | | +| hash_flow.rb:922:5:922:8 | hash [element :f] | hash_flow.rb:928:11:928:14 | hash [element :f] | provenance | | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :a] | hash_flow.rb:930:11:930:15 | hash1 [element :a] | provenance | | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :c] | hash_flow.rb:932:11:932:15 | hash1 [element :c] | provenance | | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :d] | hash_flow.rb:933:11:933:15 | hash1 [element :d] | provenance | | +| hash_flow.rb:922:12:922:16 | [post] hash1 [element :f] | hash_flow.rb:935:11:935:15 | hash1 [element :f] | provenance | | +| hash_flow.rb:922:12:922:16 | hash1 [element :a] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :a] | provenance | | +| hash_flow.rb:922:12:922:16 | hash1 [element :a] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :a] | provenance | | +| hash_flow.rb:922:12:922:16 | hash1 [element :c] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :c] | provenance | | +| hash_flow.rb:922:12:922:16 | hash1 [element :c] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :c] | provenance | | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :a] | hash_flow.rb:922:5:922:8 | hash [element :a] | provenance | | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :c] | hash_flow.rb:922:5:922:8 | hash [element :c] | provenance | | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :d] | hash_flow.rb:922:5:922:8 | hash [element :d] | provenance | | +| hash_flow.rb:922:12:922:38 | call to with_defaults! [element :f] | hash_flow.rb:922:5:922:8 | hash [element :f] | provenance | | +| hash_flow.rb:922:33:922:37 | hash2 [element :d] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :d] | provenance | | +| hash_flow.rb:922:33:922:37 | hash2 [element :d] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :d] | provenance | | +| hash_flow.rb:922:33:922:37 | hash2 [element :f] | hash_flow.rb:922:12:922:16 | [post] hash1 [element :f] | provenance | | +| hash_flow.rb:922:33:922:37 | hash2 [element :f] | hash_flow.rb:922:12:922:38 | call to with_defaults! [element :f] | provenance | | +| hash_flow.rb:923:11:923:14 | hash [element :a] | hash_flow.rb:923:11:923:18 | ...[...] | provenance | | +| hash_flow.rb:923:11:923:18 | ...[...] | hash_flow.rb:923:10:923:19 | ( ... ) | provenance | | +| hash_flow.rb:925:11:925:14 | hash [element :c] | hash_flow.rb:925:11:925:18 | ...[...] | provenance | | +| hash_flow.rb:925:11:925:18 | ...[...] | hash_flow.rb:925:10:925:19 | ( ... ) | provenance | | +| hash_flow.rb:926:11:926:14 | hash [element :d] | hash_flow.rb:926:11:926:18 | ...[...] | provenance | | +| hash_flow.rb:926:11:926:18 | ...[...] | hash_flow.rb:926:10:926:19 | ( ... ) | provenance | | +| hash_flow.rb:928:11:928:14 | hash [element :f] | hash_flow.rb:928:11:928:18 | ...[...] | provenance | | +| hash_flow.rb:928:11:928:18 | ...[...] | hash_flow.rb:928:10:928:19 | ( ... ) | provenance | | +| hash_flow.rb:930:11:930:15 | hash1 [element :a] | hash_flow.rb:930:11:930:19 | ...[...] | provenance | | +| hash_flow.rb:930:11:930:19 | ...[...] | hash_flow.rb:930:10:930:20 | ( ... ) | provenance | | +| hash_flow.rb:932:11:932:15 | hash1 [element :c] | hash_flow.rb:932:11:932:19 | ...[...] | provenance | | +| hash_flow.rb:932:11:932:19 | ...[...] | hash_flow.rb:932:10:932:20 | ( ... ) | provenance | | +| hash_flow.rb:933:11:933:15 | hash1 [element :d] | hash_flow.rb:933:11:933:19 | ...[...] | provenance | | +| hash_flow.rb:933:11:933:19 | ...[...] | hash_flow.rb:933:10:933:20 | ( ... ) | provenance | | +| hash_flow.rb:935:11:935:15 | hash1 [element :f] | hash_flow.rb:935:11:935:19 | ...[...] | provenance | | +| hash_flow.rb:935:11:935:19 | ...[...] | hash_flow.rb:935:10:935:20 | ( ... ) | provenance | | +| hash_flow.rb:941:5:941:9 | hash1 [element :a] | hash_flow.rb:952:12:952:16 | hash1 [element :a] | provenance | | +| hash_flow.rb:941:5:941:9 | hash1 [element :c] | hash_flow.rb:952:12:952:16 | hash1 [element :c] | provenance | | +| hash_flow.rb:942:12:942:22 | call to taint | hash_flow.rb:941:5:941:9 | hash1 [element :a] | provenance | | +| hash_flow.rb:944:12:944:22 | call to taint | hash_flow.rb:941:5:941:9 | hash1 [element :c] | provenance | | +| hash_flow.rb:946:5:946:9 | hash2 [element :d] | hash_flow.rb:952:33:952:37 | hash2 [element :d] | provenance | | +| hash_flow.rb:946:5:946:9 | hash2 [element :f] | hash_flow.rb:952:33:952:37 | hash2 [element :f] | provenance | | +| hash_flow.rb:947:12:947:22 | call to taint | hash_flow.rb:946:5:946:9 | hash2 [element :d] | provenance | | +| hash_flow.rb:949:12:949:22 | call to taint | hash_flow.rb:946:5:946:9 | hash2 [element :f] | provenance | | +| hash_flow.rb:952:5:952:8 | hash [element :a] | hash_flow.rb:953:11:953:14 | hash [element :a] | provenance | | +| hash_flow.rb:952:5:952:8 | hash [element :c] | hash_flow.rb:955:11:955:14 | hash [element :c] | provenance | | +| hash_flow.rb:952:5:952:8 | hash [element :d] | hash_flow.rb:956:11:956:14 | hash [element :d] | provenance | | +| hash_flow.rb:952:5:952:8 | hash [element :f] | hash_flow.rb:958:11:958:14 | hash [element :f] | provenance | | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :a] | hash_flow.rb:960:11:960:15 | hash1 [element :a] | provenance | | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :c] | hash_flow.rb:962:11:962:15 | hash1 [element :c] | provenance | | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :d] | hash_flow.rb:963:11:963:15 | hash1 [element :d] | provenance | | +| hash_flow.rb:952:12:952:16 | [post] hash1 [element :f] | hash_flow.rb:965:11:965:15 | hash1 [element :f] | provenance | | +| hash_flow.rb:952:12:952:16 | hash1 [element :a] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :a] | provenance | | +| hash_flow.rb:952:12:952:16 | hash1 [element :a] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :a] | provenance | | +| hash_flow.rb:952:12:952:16 | hash1 [element :c] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :c] | provenance | | +| hash_flow.rb:952:12:952:16 | hash1 [element :c] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :c] | provenance | | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :a] | hash_flow.rb:952:5:952:8 | hash [element :a] | provenance | | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :c] | hash_flow.rb:952:5:952:8 | hash [element :c] | provenance | | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :d] | hash_flow.rb:952:5:952:8 | hash [element :d] | provenance | | +| hash_flow.rb:952:12:952:38 | call to with_defaults! [element :f] | hash_flow.rb:952:5:952:8 | hash [element :f] | provenance | | +| hash_flow.rb:952:33:952:37 | hash2 [element :d] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :d] | provenance | | +| hash_flow.rb:952:33:952:37 | hash2 [element :d] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :d] | provenance | | +| hash_flow.rb:952:33:952:37 | hash2 [element :f] | hash_flow.rb:952:12:952:16 | [post] hash1 [element :f] | provenance | | +| hash_flow.rb:952:33:952:37 | hash2 [element :f] | hash_flow.rb:952:12:952:38 | call to with_defaults! [element :f] | provenance | | +| hash_flow.rb:953:11:953:14 | hash [element :a] | hash_flow.rb:953:11:953:18 | ...[...] | provenance | | +| hash_flow.rb:953:11:953:18 | ...[...] | hash_flow.rb:953:10:953:19 | ( ... ) | provenance | | +| hash_flow.rb:955:11:955:14 | hash [element :c] | hash_flow.rb:955:11:955:18 | ...[...] | provenance | | +| hash_flow.rb:955:11:955:18 | ...[...] | hash_flow.rb:955:10:955:19 | ( ... ) | provenance | | +| hash_flow.rb:956:11:956:14 | hash [element :d] | hash_flow.rb:956:11:956:18 | ...[...] | provenance | | +| hash_flow.rb:956:11:956:18 | ...[...] | hash_flow.rb:956:10:956:19 | ( ... ) | provenance | | +| hash_flow.rb:958:11:958:14 | hash [element :f] | hash_flow.rb:958:11:958:18 | ...[...] | provenance | | +| hash_flow.rb:958:11:958:18 | ...[...] | hash_flow.rb:958:10:958:19 | ( ... ) | provenance | | +| hash_flow.rb:960:11:960:15 | hash1 [element :a] | hash_flow.rb:960:11:960:19 | ...[...] | provenance | | +| hash_flow.rb:960:11:960:19 | ...[...] | hash_flow.rb:960:10:960:20 | ( ... ) | provenance | | +| hash_flow.rb:962:11:962:15 | hash1 [element :c] | hash_flow.rb:962:11:962:19 | ...[...] | provenance | | +| hash_flow.rb:962:11:962:19 | ...[...] | hash_flow.rb:962:10:962:20 | ( ... ) | provenance | | +| hash_flow.rb:963:11:963:15 | hash1 [element :d] | hash_flow.rb:963:11:963:19 | ...[...] | provenance | | +| hash_flow.rb:963:11:963:19 | ...[...] | hash_flow.rb:963:10:963:20 | ( ... ) | provenance | | +| hash_flow.rb:965:11:965:15 | hash1 [element :f] | hash_flow.rb:965:11:965:19 | ...[...] | provenance | | +| hash_flow.rb:965:11:965:19 | ...[...] | hash_flow.rb:965:10:965:20 | ( ... ) | provenance | | +| hash_flow.rb:971:5:971:5 | h [element :b] | hash_flow.rb:973:10:973:10 | h [element :b] | provenance | | +| hash_flow.rb:971:5:971:5 | h [element :b] | hash_flow.rb:975:10:975:10 | h [element :b] | provenance | | +| hash_flow.rb:971:9:971:38 | ...[...] [element :b] | hash_flow.rb:971:5:971:5 | h [element :b] | provenance | | +| hash_flow.rb:971:23:971:31 | call to taint | hash_flow.rb:971:9:971:38 | ...[...] [element :b] | provenance | | +| hash_flow.rb:973:10:973:10 | h [element :b] | hash_flow.rb:973:10:973:14 | ...[...] | provenance | | +| hash_flow.rb:975:10:975:10 | h [element :b] | hash_flow.rb:975:10:975:13 | ...[...] | provenance | | +| hash_flow.rb:994:9:994:10 | h2 [element :b] | hash_flow.rb:996:14:996:15 | h2 [element :b] | provenance | | +| hash_flow.rb:994:9:994:10 | h2 [element :b] | hash_flow.rb:998:14:998:15 | h2 [element :b] | provenance | | +| hash_flow.rb:994:14:994:47 | ...[...] [element :b] | hash_flow.rb:994:9:994:10 | h2 [element :b] | provenance | | +| hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:994:14:994:47 | ...[...] [element :b] | provenance | | +| hash_flow.rb:996:14:996:15 | h2 [element :b] | hash_flow.rb:996:14:996:19 | ...[...] | provenance | | +| hash_flow.rb:998:14:998:15 | h2 [element :b] | hash_flow.rb:998:14:998:18 | ...[...] | provenance | | nodes | hash_flow.rb:10:5:10:8 | hash [element 0] | semmle.label | hash [element 0] | | hash_flow.rb:10:5:10:8 | hash [element :a] | semmle.label | hash [element :a] | diff --git a/ruby/ql/test/library-tests/dataflow/local/InlineFlowTest.expected b/ruby/ql/test/library-tests/dataflow/local/InlineFlowTest.expected index 0efa1cd8b5ac..a8722b1fb507 100644 --- a/ruby/ql/test/library-tests/dataflow/local/InlineFlowTest.expected +++ b/ruby/ql/test/library-tests/dataflow/local/InlineFlowTest.expected @@ -1,50 +1,50 @@ testFailures edges -| local_dataflow.rb:78:3:78:3 | z | local_dataflow.rb:89:8:89:8 | z | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:79:13:79:13 | b | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:80:8:80:8 | a | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:81:9:81:9 | c | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:81:13:81:13 | d | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:81:16:81:16 | e | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:85:13:85:13 | f | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:86:18:86:18 | g | -| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:87:10:87:10 | x | -| local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b | -| local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:29:80:29 | a | -| local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c | -| local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d | -| local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e | -| local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f | -| local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g | -| local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:78:3:78:3 | z | -| local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x | -| local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a | -| local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:3:93:3 | a | -| local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:3:93:3 | a | -| local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b | -| local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:3:95:3 | b | -| local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:3:95:3 | b | -| local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a | -| local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:3:98:3 | a | -| local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b | -| local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:3:100:3 | b | -| local_dataflow.rb:103:3:103:3 | a | local_dataflow.rb:104:3:104:3 | a | -| local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:3 | a | -| local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:105:8:105:8 | a | -| local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:3:104:3 | a | -| local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b | -| local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:3:107:3 | b | -| local_dataflow.rb:112:8:112:16 | call to source | local_dataflow.rb:112:8:112:20 | call to dup | -| local_dataflow.rb:113:8:113:16 | call to source | local_dataflow.rb:113:8:113:20 | call to dup | -| local_dataflow.rb:113:8:113:20 | call to dup | local_dataflow.rb:113:8:113:24 | call to dup | -| local_dataflow.rb:117:8:117:16 | call to source | local_dataflow.rb:117:8:117:23 | call to tap | -| local_dataflow.rb:118:3:118:11 | call to source | local_dataflow.rb:118:20:118:20 | x | -| local_dataflow.rb:118:20:118:20 | x | local_dataflow.rb:118:28:118:28 | x | -| local_dataflow.rb:119:8:119:16 | call to source | local_dataflow.rb:119:8:119:23 | call to tap | -| local_dataflow.rb:119:8:119:23 | call to tap | local_dataflow.rb:119:8:119:30 | call to tap | -| local_dataflow.rb:123:8:123:16 | call to source | local_dataflow.rb:123:8:123:20 | call to dup | -| local_dataflow.rb:123:8:123:20 | call to dup | local_dataflow.rb:123:8:123:45 | call to tap | -| local_dataflow.rb:123:8:123:45 | call to tap | local_dataflow.rb:123:8:123:49 | call to dup | +| local_dataflow.rb:78:3:78:3 | z | local_dataflow.rb:89:8:89:8 | z | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:79:13:79:13 | b | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:80:8:80:8 | a | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:81:9:81:9 | c | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:81:13:81:13 | d | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:81:16:81:16 | e | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:85:13:85:13 | f | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:86:18:86:18 | g | provenance | | +| local_dataflow.rb:78:12:78:20 | call to source | local_dataflow.rb:87:10:87:10 | x | provenance | | +| local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b | provenance | | +| local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:29:80:29 | a | provenance | | +| local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c | provenance | | +| local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d | provenance | | +| local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e | provenance | | +| local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f | provenance | | +| local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g | provenance | | +| local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:78:3:78:3 | z | provenance | | +| local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x | provenance | | +| local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a | provenance | | +| local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:3:93:3 | a | provenance | | +| local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:3:93:3 | a | provenance | | +| local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b | provenance | | +| local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:3:95:3 | b | provenance | | +| local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:3:95:3 | b | provenance | | +| local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a | provenance | | +| local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:3:98:3 | a | provenance | | +| local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b | provenance | | +| local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:3:100:3 | b | provenance | | +| local_dataflow.rb:103:3:103:3 | a | local_dataflow.rb:104:3:104:3 | a | provenance | | +| local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:3 | a | provenance | | +| local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:105:8:105:8 | a | provenance | | +| local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:3:104:3 | a | provenance | | +| local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b | provenance | | +| local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:3:107:3 | b | provenance | | +| local_dataflow.rb:112:8:112:16 | call to source | local_dataflow.rb:112:8:112:20 | call to dup | provenance | | +| local_dataflow.rb:113:8:113:16 | call to source | local_dataflow.rb:113:8:113:20 | call to dup | provenance | | +| local_dataflow.rb:113:8:113:20 | call to dup | local_dataflow.rb:113:8:113:24 | call to dup | provenance | | +| local_dataflow.rb:117:8:117:16 | call to source | local_dataflow.rb:117:8:117:23 | call to tap | provenance | | +| local_dataflow.rb:118:3:118:11 | call to source | local_dataflow.rb:118:20:118:20 | x | provenance | | +| local_dataflow.rb:118:20:118:20 | x | local_dataflow.rb:118:28:118:28 | x | provenance | | +| local_dataflow.rb:119:8:119:16 | call to source | local_dataflow.rb:119:8:119:23 | call to tap | provenance | | +| local_dataflow.rb:119:8:119:23 | call to tap | local_dataflow.rb:119:8:119:30 | call to tap | provenance | | +| local_dataflow.rb:123:8:123:16 | call to source | local_dataflow.rb:123:8:123:20 | call to dup | provenance | | +| local_dataflow.rb:123:8:123:20 | call to dup | local_dataflow.rb:123:8:123:45 | call to tap | provenance | | +| local_dataflow.rb:123:8:123:45 | call to tap | local_dataflow.rb:123:8:123:49 | call to dup | provenance | | nodes | local_dataflow.rb:78:3:78:3 | z | semmle.label | z | | local_dataflow.rb:78:12:78:20 | call to source | semmle.label | call to source | diff --git a/ruby/ql/test/library-tests/dataflow/params/params-flow.expected b/ruby/ql/test/library-tests/dataflow/params/params-flow.expected index 7ed1f7586822..629c99939840 100644 --- a/ruby/ql/test/library-tests/dataflow/params/params-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/params/params-flow.expected @@ -1,174 +1,174 @@ testFailures edges -| params_flow.rb:9:16:9:17 | p1 | params_flow.rb:10:10:10:11 | p1 | -| params_flow.rb:9:20:9:21 | p2 | params_flow.rb:11:10:11:11 | p2 | -| params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:14:22:14:29 | call to taint | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:16:13:16:14 | p1 | params_flow.rb:17:10:17:11 | p1 | -| params_flow.rb:16:18:16:19 | p2 | params_flow.rb:18:10:18:11 | p2 | -| params_flow.rb:21:13:21:20 | call to taint | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:21:27:21:34 | call to taint | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:22:13:22:20 | call to taint | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:22:27:22:34 | call to taint | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:23:16:23:23 | call to taint | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:23:33:23:40 | call to taint | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:25:12:25:13 | p1 | params_flow.rb:26:10:26:11 | p1 | -| params_flow.rb:25:17:25:24 | **kwargs [element :p2] | params_flow.rb:28:11:28:16 | kwargs [element :p2] | -| params_flow.rb:25:17:25:24 | **kwargs [element :p3] | params_flow.rb:29:11:29:16 | kwargs [element :p3] | -| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p2] | params_flow.rb:28:11:28:16 | kwargs [hash-splat position :p2] | -| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p3] | params_flow.rb:29:11:29:16 | kwargs [hash-splat position :p3] | -| params_flow.rb:28:11:28:16 | kwargs [element :p2] | params_flow.rb:28:11:28:21 | ...[...] | -| params_flow.rb:28:11:28:16 | kwargs [hash-splat position :p2] | params_flow.rb:28:11:28:21 | ...[...] | -| params_flow.rb:28:11:28:21 | ...[...] | params_flow.rb:28:10:28:22 | ( ... ) | -| params_flow.rb:29:11:29:16 | kwargs [element :p3] | params_flow.rb:29:11:29:21 | ...[...] | -| params_flow.rb:29:11:29:16 | kwargs [hash-splat position :p3] | params_flow.rb:29:11:29:21 | ...[...] | -| params_flow.rb:29:11:29:21 | ...[...] | params_flow.rb:29:10:29:22 | ( ... ) | -| params_flow.rb:33:12:33:19 | call to taint | params_flow.rb:25:12:25:13 | p1 | -| params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p2] | -| params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p3] | -| params_flow.rb:34:1:34:4 | args [element :p3] | params_flow.rb:35:25:35:28 | args [element :p3] | -| params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:34:1:34:4 | args [element :p3] | -| params_flow.rb:35:12:35:20 | call to taint | params_flow.rb:25:12:25:13 | p1 | -| params_flow.rb:35:23:35:28 | ** ... [element :p3] | params_flow.rb:25:17:25:24 | **kwargs [element :p3] | -| params_flow.rb:35:25:35:28 | args [element :p3] | params_flow.rb:35:23:35:28 | ** ... [element :p3] | -| params_flow.rb:37:1:37:4 | args [element :p1] | params_flow.rb:38:10:38:13 | args [element :p1] | -| params_flow.rb:37:1:37:4 | args [element :p2] | params_flow.rb:38:10:38:13 | args [element :p2] | -| params_flow.rb:37:16:37:24 | call to taint | params_flow.rb:37:1:37:4 | args [element :p1] | -| params_flow.rb:37:34:37:42 | call to taint | params_flow.rb:37:1:37:4 | args [element :p2] | -| params_flow.rb:38:8:38:13 | ** ... [element :p1] | params_flow.rb:25:12:25:13 | p1 | -| params_flow.rb:38:8:38:13 | ** ... [element :p2] | params_flow.rb:25:17:25:24 | **kwargs [element :p2] | -| params_flow.rb:38:10:38:13 | args [element :p1] | params_flow.rb:38:8:38:13 | ** ... [element :p1] | -| params_flow.rb:38:10:38:13 | args [element :p2] | params_flow.rb:38:8:38:13 | ** ... [element :p2] | -| params_flow.rb:40:1:40:4 | args [element :p1] | params_flow.rb:41:26:41:29 | args [element :p1] | -| params_flow.rb:40:16:40:24 | call to taint | params_flow.rb:40:1:40:4 | args [element :p1] | -| params_flow.rb:41:13:41:21 | call to taint | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:41:24:41:29 | ** ... [element :p1] | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:41:26:41:29 | args [element :p1] | params_flow.rb:41:24:41:29 | ** ... [element :p1] | -| params_flow.rb:43:1:43:4 | args [element 0] | params_flow.rb:44:24:44:27 | args [element 0] | -| params_flow.rb:43:9:43:17 | call to taint | params_flow.rb:43:1:43:4 | args [element 0] | -| params_flow.rb:44:12:44:20 | call to taint | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:44:23:44:27 | * ... [element 0] | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:44:24:44:27 | args [element 0] | params_flow.rb:44:23:44:27 | * ... [element 0] | -| params_flow.rb:46:1:46:4 | args [element 0] | params_flow.rb:47:13:47:16 | args [element 0] | -| params_flow.rb:46:1:46:4 | args [element 1] | params_flow.rb:47:13:47:16 | args [element 1] | -| params_flow.rb:46:9:46:17 | call to taint | params_flow.rb:46:1:46:4 | args [element 0] | -| params_flow.rb:46:20:46:28 | call to taint | params_flow.rb:46:1:46:4 | args [element 1] | -| params_flow.rb:47:12:47:16 | * ... [element 0] | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:47:12:47:16 | * ... [element 1] | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:47:13:47:16 | args [element 0] | params_flow.rb:47:12:47:16 | * ... [element 0] | -| params_flow.rb:47:13:47:16 | args [element 1] | params_flow.rb:47:12:47:16 | * ... [element 1] | -| params_flow.rb:49:13:49:14 | p1 | params_flow.rb:50:10:50:11 | p1 | -| params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | -| params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | -| params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | -| params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | -| params_flow.rb:51:11:51:20 | ...[...] | params_flow.rb:51:10:51:21 | ( ... ) | -| params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:55:20:55:28 | call to taint | params_flow.rb:49:17:49:24 | *posargs [element 0] | -| params_flow.rb:57:1:57:4 | args [element 0] | params_flow.rb:58:21:58:24 | args [element 0] | -| params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:57:1:57:4 | args [element 0] | -| params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | -| params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | -| params_flow.rb:58:21:58:24 | args [element 0] | params_flow.rb:58:20:58:24 | * ... [element 0] | -| params_flow.rb:60:1:60:4 | args [element 0] | params_flow.rb:61:10:61:13 | args [element 0] | -| params_flow.rb:60:1:60:4 | args [element 1] | params_flow.rb:61:10:61:13 | args [element 1] | -| params_flow.rb:60:9:60:17 | call to taint | params_flow.rb:60:1:60:4 | args [element 0] | -| params_flow.rb:60:20:60:28 | call to taint | params_flow.rb:60:1:60:4 | args [element 1] | -| params_flow.rb:61:9:61:13 | * ... [element 0] | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:61:9:61:13 | * ... [element 1] | params_flow.rb:49:17:49:24 | *posargs [element 0] | -| params_flow.rb:61:10:61:13 | args [element 0] | params_flow.rb:61:9:61:13 | * ... [element 0] | -| params_flow.rb:61:10:61:13 | args [element 1] | params_flow.rb:61:9:61:13 | * ... [element 1] | -| params_flow.rb:63:1:63:4 | args | params_flow.rb:67:13:67:16 | args | -| params_flow.rb:63:8:63:16 | call to taint | params_flow.rb:63:1:63:4 | args | -| params_flow.rb:64:16:64:17 | *x [element 0] | params_flow.rb:65:10:65:10 | x [element 0] | -| params_flow.rb:65:10:65:10 | x [element 0] | params_flow.rb:65:10:65:13 | ...[...] | -| params_flow.rb:67:12:67:16 | * ... [element 0] | params_flow.rb:64:16:64:17 | *x [element 0] | -| params_flow.rb:67:13:67:16 | args | params_flow.rb:67:12:67:16 | * ... [element 0] | -| params_flow.rb:69:14:69:14 | x | params_flow.rb:70:10:70:10 | x | -| params_flow.rb:69:17:69:17 | y | params_flow.rb:71:10:71:10 | y | -| params_flow.rb:69:24:69:24 | w | params_flow.rb:74:10:74:10 | w | -| params_flow.rb:69:27:69:27 | r | params_flow.rb:75:10:75:10 | r | -| params_flow.rb:78:10:78:18 | call to taint | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:80:1:80:4 | args [element 0] | params_flow.rb:81:22:81:25 | args [element 0] | -| params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:80:1:80:4 | args [element 0] | -| params_flow.rb:81:10:81:18 | call to taint | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:81:21:81:25 | * ... [element 0] | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:81:22:81:25 | args [element 0] | params_flow.rb:81:21:81:25 | * ... [element 0] | -| params_flow.rb:83:14:83:14 | t | params_flow.rb:84:10:84:10 | t | -| params_flow.rb:83:17:83:17 | u | params_flow.rb:85:10:85:10 | u | -| params_flow.rb:83:20:83:20 | v | params_flow.rb:86:10:86:10 | v | -| params_flow.rb:83:23:83:23 | w | params_flow.rb:87:10:87:10 | w | -| params_flow.rb:83:26:83:26 | x | params_flow.rb:88:10:88:10 | x | -| params_flow.rb:83:29:83:29 | y | params_flow.rb:89:10:89:10 | y | -| params_flow.rb:93:1:93:4 | args [element 0] | params_flow.rb:94:33:94:36 | args [element 0] | -| params_flow.rb:93:1:93:4 | args [element 1] | params_flow.rb:94:33:94:36 | args [element 1] | -| params_flow.rb:93:1:93:4 | args [element 2] | params_flow.rb:94:33:94:36 | args [element 2] | -| params_flow.rb:93:1:93:4 | args [element 3] | params_flow.rb:94:33:94:36 | args [element 3] | -| params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:93:1:93:4 | args [element 0] | -| params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:93:1:93:4 | args [element 1] | -| params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:93:1:93:4 | args [element 2] | -| params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:93:1:93:4 | args [element 3] | -| params_flow.rb:94:10:94:18 | call to taint | params_flow.rb:83:14:83:14 | t | -| params_flow.rb:94:21:94:29 | call to taint | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:94:32:94:36 | * ... [element 0] | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:94:32:94:36 | * ... [element 1] | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:94:32:94:36 | * ... [element 2] | params_flow.rb:83:26:83:26 | x | -| params_flow.rb:94:32:94:36 | * ... [element 3] | params_flow.rb:83:29:83:29 | y | -| params_flow.rb:94:33:94:36 | args [element 0] | params_flow.rb:94:32:94:36 | * ... [element 0] | -| params_flow.rb:94:33:94:36 | args [element 1] | params_flow.rb:94:32:94:36 | * ... [element 1] | -| params_flow.rb:94:33:94:36 | args [element 2] | params_flow.rb:94:32:94:36 | * ... [element 2] | -| params_flow.rb:94:33:94:36 | args [element 3] | params_flow.rb:94:32:94:36 | * ... [element 3] | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:98:19:98:19 | a | params_flow.rb:99:10:99:10 | a | -| params_flow.rb:98:31:98:31 | b | params_flow.rb:102:10:102:10 | b | -| params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:108:37:108:37 | a | params_flow.rb:109:10:109:10 | a | -| params_flow.rb:108:40:108:41 | *b [element 0] | params_flow.rb:110:10:110:10 | b [element 0] | -| params_flow.rb:108:44:108:44 | c | params_flow.rb:111:10:111:10 | c | -| params_flow.rb:110:10:110:10 | b [element 0] | params_flow.rb:110:10:110:13 | ...[...] | -| params_flow.rb:114:33:114:41 | call to taint | params_flow.rb:108:37:108:37 | a | -| params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:108:40:108:41 | *b [element 0] | -| params_flow.rb:114:58:114:66 | call to taint | params_flow.rb:108:44:108:44 | c | -| params_flow.rb:117:1:117:1 | [post] x [element] | params_flow.rb:118:13:118:13 | x [element] | -| params_flow.rb:117:19:117:27 | call to taint | params_flow.rb:117:1:117:1 | [post] x [element] | -| params_flow.rb:118:12:118:13 | * ... [element] | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:118:12:118:13 | * ... [element] | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:118:13:118:13 | x [element] | params_flow.rb:118:12:118:13 | * ... [element] | -| params_flow.rb:130:1:130:4 | args [element 0] | params_flow.rb:131:11:131:14 | args [element 0] | -| params_flow.rb:130:1:130:4 | args [element 1] | params_flow.rb:131:11:131:14 | args [element 1] | -| params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:130:1:130:4 | args [element 0] | -| params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:130:1:130:4 | args [element 1] | -| params_flow.rb:131:10:131:14 | * ... [element 0] | params_flow.rb:83:14:83:14 | t | -| params_flow.rb:131:10:131:14 | * ... [element 1] | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:131:11:131:14 | args [element 0] | params_flow.rb:131:10:131:14 | * ... [element 0] | -| params_flow.rb:131:11:131:14 | args [element 1] | params_flow.rb:131:10:131:14 | * ... [element 1] | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:133:14:133:18 | *args [element 1] | params_flow.rb:134:10:134:13 | args [element 1] | -| params_flow.rb:134:10:134:13 | args [element 1] | params_flow.rb:134:10:134:16 | ...[...] | -| params_flow.rb:137:10:137:43 | * ... [element 1] | params_flow.rb:133:14:133:18 | *args [element 1] | -| params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:137:10:137:43 | * ... [element 1] | -| params_flow.rb:153:28:153:29 | p2 | params_flow.rb:154:18:154:19 | p2 | -| params_flow.rb:154:18:154:19 | p2 | params_flow.rb:154:5:154:6 | [post] p1 [element 0] | -| params_flow.rb:164:23:164:24 | [post] p1 [element 0] | params_flow.rb:165:6:165:7 | p1 [element 0] | -| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:153:28:153:29 | p2 | -| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:164:23:164:24 | [post] p1 [element 0] | -| params_flow.rb:165:6:165:7 | p1 [element 0] | params_flow.rb:165:6:165:10 | ...[...] | -| params_flow.rb:181:28:181:29 | p2 | params_flow.rb:182:18:182:19 | p2 | -| params_flow.rb:182:18:182:19 | p2 | params_flow.rb:182:5:182:6 | [post] p1 [element 0] | -| params_flow.rb:192:20:192:21 | [post] p1 [element 0] | params_flow.rb:193:6:193:7 | p1 [element 0] | -| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | -| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:192:20:192:21 | [post] p1 [element 0] | -| params_flow.rb:193:6:193:7 | p1 [element 0] | params_flow.rb:193:6:193:10 | ...[...] | +| params_flow.rb:9:16:9:17 | p1 | params_flow.rb:10:10:10:11 | p1 | provenance | | +| params_flow.rb:9:20:9:21 | p2 | params_flow.rb:11:10:11:11 | p2 | provenance | | +| params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:9:16:9:17 | p1 | provenance | | +| params_flow.rb:14:22:14:29 | call to taint | params_flow.rb:9:20:9:21 | p2 | provenance | | +| params_flow.rb:16:13:16:14 | p1 | params_flow.rb:17:10:17:11 | p1 | provenance | | +| params_flow.rb:16:18:16:19 | p2 | params_flow.rb:18:10:18:11 | p2 | provenance | | +| params_flow.rb:21:13:21:20 | call to taint | params_flow.rb:16:13:16:14 | p1 | provenance | | +| params_flow.rb:21:27:21:34 | call to taint | params_flow.rb:16:18:16:19 | p2 | provenance | | +| params_flow.rb:22:13:22:20 | call to taint | params_flow.rb:16:18:16:19 | p2 | provenance | | +| params_flow.rb:22:27:22:34 | call to taint | params_flow.rb:16:13:16:14 | p1 | provenance | | +| params_flow.rb:23:16:23:23 | call to taint | params_flow.rb:16:18:16:19 | p2 | provenance | | +| params_flow.rb:23:33:23:40 | call to taint | params_flow.rb:16:13:16:14 | p1 | provenance | | +| params_flow.rb:25:12:25:13 | p1 | params_flow.rb:26:10:26:11 | p1 | provenance | | +| params_flow.rb:25:17:25:24 | **kwargs [element :p2] | params_flow.rb:28:11:28:16 | kwargs [element :p2] | provenance | | +| params_flow.rb:25:17:25:24 | **kwargs [element :p3] | params_flow.rb:29:11:29:16 | kwargs [element :p3] | provenance | | +| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p2] | params_flow.rb:28:11:28:16 | kwargs [hash-splat position :p2] | provenance | | +| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p3] | params_flow.rb:29:11:29:16 | kwargs [hash-splat position :p3] | provenance | | +| params_flow.rb:28:11:28:16 | kwargs [element :p2] | params_flow.rb:28:11:28:21 | ...[...] | provenance | | +| params_flow.rb:28:11:28:16 | kwargs [hash-splat position :p2] | params_flow.rb:28:11:28:21 | ...[...] | provenance | | +| params_flow.rb:28:11:28:21 | ...[...] | params_flow.rb:28:10:28:22 | ( ... ) | provenance | | +| params_flow.rb:29:11:29:16 | kwargs [element :p3] | params_flow.rb:29:11:29:21 | ...[...] | provenance | | +| params_flow.rb:29:11:29:16 | kwargs [hash-splat position :p3] | params_flow.rb:29:11:29:21 | ...[...] | provenance | | +| params_flow.rb:29:11:29:21 | ...[...] | params_flow.rb:29:10:29:22 | ( ... ) | provenance | | +| params_flow.rb:33:12:33:19 | call to taint | params_flow.rb:25:12:25:13 | p1 | provenance | | +| params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p2] | provenance | | +| params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p3] | provenance | | +| params_flow.rb:34:1:34:4 | args [element :p3] | params_flow.rb:35:25:35:28 | args [element :p3] | provenance | | +| params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:34:1:34:4 | args [element :p3] | provenance | | +| params_flow.rb:35:12:35:20 | call to taint | params_flow.rb:25:12:25:13 | p1 | provenance | | +| params_flow.rb:35:23:35:28 | ** ... [element :p3] | params_flow.rb:25:17:25:24 | **kwargs [element :p3] | provenance | | +| params_flow.rb:35:25:35:28 | args [element :p3] | params_flow.rb:35:23:35:28 | ** ... [element :p3] | provenance | | +| params_flow.rb:37:1:37:4 | args [element :p1] | params_flow.rb:38:10:38:13 | args [element :p1] | provenance | | +| params_flow.rb:37:1:37:4 | args [element :p2] | params_flow.rb:38:10:38:13 | args [element :p2] | provenance | | +| params_flow.rb:37:16:37:24 | call to taint | params_flow.rb:37:1:37:4 | args [element :p1] | provenance | | +| params_flow.rb:37:34:37:42 | call to taint | params_flow.rb:37:1:37:4 | args [element :p2] | provenance | | +| params_flow.rb:38:8:38:13 | ** ... [element :p1] | params_flow.rb:25:12:25:13 | p1 | provenance | | +| params_flow.rb:38:8:38:13 | ** ... [element :p2] | params_flow.rb:25:17:25:24 | **kwargs [element :p2] | provenance | | +| params_flow.rb:38:10:38:13 | args [element :p1] | params_flow.rb:38:8:38:13 | ** ... [element :p1] | provenance | | +| params_flow.rb:38:10:38:13 | args [element :p2] | params_flow.rb:38:8:38:13 | ** ... [element :p2] | provenance | | +| params_flow.rb:40:1:40:4 | args [element :p1] | params_flow.rb:41:26:41:29 | args [element :p1] | provenance | | +| params_flow.rb:40:16:40:24 | call to taint | params_flow.rb:40:1:40:4 | args [element :p1] | provenance | | +| params_flow.rb:41:13:41:21 | call to taint | params_flow.rb:16:18:16:19 | p2 | provenance | | +| params_flow.rb:41:24:41:29 | ** ... [element :p1] | params_flow.rb:16:13:16:14 | p1 | provenance | | +| params_flow.rb:41:26:41:29 | args [element :p1] | params_flow.rb:41:24:41:29 | ** ... [element :p1] | provenance | | +| params_flow.rb:43:1:43:4 | args [element 0] | params_flow.rb:44:24:44:27 | args [element 0] | provenance | | +| params_flow.rb:43:9:43:17 | call to taint | params_flow.rb:43:1:43:4 | args [element 0] | provenance | | +| params_flow.rb:44:12:44:20 | call to taint | params_flow.rb:9:16:9:17 | p1 | provenance | | +| params_flow.rb:44:23:44:27 | * ... [element 0] | params_flow.rb:9:20:9:21 | p2 | provenance | | +| params_flow.rb:44:24:44:27 | args [element 0] | params_flow.rb:44:23:44:27 | * ... [element 0] | provenance | | +| params_flow.rb:46:1:46:4 | args [element 0] | params_flow.rb:47:13:47:16 | args [element 0] | provenance | | +| params_flow.rb:46:1:46:4 | args [element 1] | params_flow.rb:47:13:47:16 | args [element 1] | provenance | | +| params_flow.rb:46:9:46:17 | call to taint | params_flow.rb:46:1:46:4 | args [element 0] | provenance | | +| params_flow.rb:46:20:46:28 | call to taint | params_flow.rb:46:1:46:4 | args [element 1] | provenance | | +| params_flow.rb:47:12:47:16 | * ... [element 0] | params_flow.rb:9:16:9:17 | p1 | provenance | | +| params_flow.rb:47:12:47:16 | * ... [element 1] | params_flow.rb:9:20:9:21 | p2 | provenance | | +| params_flow.rb:47:13:47:16 | args [element 0] | params_flow.rb:47:12:47:16 | * ... [element 0] | provenance | | +| params_flow.rb:47:13:47:16 | args [element 1] | params_flow.rb:47:12:47:16 | * ... [element 1] | provenance | | +| params_flow.rb:49:13:49:14 | p1 | params_flow.rb:50:10:50:11 | p1 | provenance | | +| params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | provenance | | +| params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | provenance | | +| params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | provenance | | +| params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | provenance | | +| params_flow.rb:51:11:51:20 | ...[...] | params_flow.rb:51:10:51:21 | ( ... ) | provenance | | +| params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | provenance | | +| params_flow.rb:55:20:55:28 | call to taint | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | | +| params_flow.rb:57:1:57:4 | args [element 0] | params_flow.rb:58:21:58:24 | args [element 0] | provenance | | +| params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:57:1:57:4 | args [element 0] | provenance | | +| params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | provenance | | +| params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | | +| params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | | +| params_flow.rb:58:21:58:24 | args [element 0] | params_flow.rb:58:20:58:24 | * ... [element 0] | provenance | | +| params_flow.rb:60:1:60:4 | args [element 0] | params_flow.rb:61:10:61:13 | args [element 0] | provenance | | +| params_flow.rb:60:1:60:4 | args [element 1] | params_flow.rb:61:10:61:13 | args [element 1] | provenance | | +| params_flow.rb:60:9:60:17 | call to taint | params_flow.rb:60:1:60:4 | args [element 0] | provenance | | +| params_flow.rb:60:20:60:28 | call to taint | params_flow.rb:60:1:60:4 | args [element 1] | provenance | | +| params_flow.rb:61:9:61:13 | * ... [element 0] | params_flow.rb:49:13:49:14 | p1 | provenance | | +| params_flow.rb:61:9:61:13 | * ... [element 1] | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | | +| params_flow.rb:61:10:61:13 | args [element 0] | params_flow.rb:61:9:61:13 | * ... [element 0] | provenance | | +| params_flow.rb:61:10:61:13 | args [element 1] | params_flow.rb:61:9:61:13 | * ... [element 1] | provenance | | +| params_flow.rb:63:1:63:4 | args | params_flow.rb:67:13:67:16 | args | provenance | | +| params_flow.rb:63:8:63:16 | call to taint | params_flow.rb:63:1:63:4 | args | provenance | | +| params_flow.rb:64:16:64:17 | *x [element 0] | params_flow.rb:65:10:65:10 | x [element 0] | provenance | | +| params_flow.rb:65:10:65:10 | x [element 0] | params_flow.rb:65:10:65:13 | ...[...] | provenance | | +| params_flow.rb:67:12:67:16 | * ... [element 0] | params_flow.rb:64:16:64:17 | *x [element 0] | provenance | | +| params_flow.rb:67:13:67:16 | args | params_flow.rb:67:12:67:16 | * ... [element 0] | provenance | | +| params_flow.rb:69:14:69:14 | x | params_flow.rb:70:10:70:10 | x | provenance | | +| params_flow.rb:69:17:69:17 | y | params_flow.rb:71:10:71:10 | y | provenance | | +| params_flow.rb:69:24:69:24 | w | params_flow.rb:74:10:74:10 | w | provenance | | +| params_flow.rb:69:27:69:27 | r | params_flow.rb:75:10:75:10 | r | provenance | | +| params_flow.rb:78:10:78:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | | +| params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:69:17:69:17 | y | provenance | | +| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:69:24:69:24 | w | provenance | | +| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:69:27:69:27 | r | provenance | | +| params_flow.rb:80:1:80:4 | args [element 0] | params_flow.rb:81:22:81:25 | args [element 0] | provenance | | +| params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:80:1:80:4 | args [element 0] | provenance | | +| params_flow.rb:81:10:81:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | | +| params_flow.rb:81:21:81:25 | * ... [element 0] | params_flow.rb:69:17:69:17 | y | provenance | | +| params_flow.rb:81:22:81:25 | args [element 0] | params_flow.rb:81:21:81:25 | * ... [element 0] | provenance | | +| params_flow.rb:83:14:83:14 | t | params_flow.rb:84:10:84:10 | t | provenance | | +| params_flow.rb:83:17:83:17 | u | params_flow.rb:85:10:85:10 | u | provenance | | +| params_flow.rb:83:20:83:20 | v | params_flow.rb:86:10:86:10 | v | provenance | | +| params_flow.rb:83:23:83:23 | w | params_flow.rb:87:10:87:10 | w | provenance | | +| params_flow.rb:83:26:83:26 | x | params_flow.rb:88:10:88:10 | x | provenance | | +| params_flow.rb:83:29:83:29 | y | params_flow.rb:89:10:89:10 | y | provenance | | +| params_flow.rb:93:1:93:4 | args [element 0] | params_flow.rb:94:33:94:36 | args [element 0] | provenance | | +| params_flow.rb:93:1:93:4 | args [element 1] | params_flow.rb:94:33:94:36 | args [element 1] | provenance | | +| params_flow.rb:93:1:93:4 | args [element 2] | params_flow.rb:94:33:94:36 | args [element 2] | provenance | | +| params_flow.rb:93:1:93:4 | args [element 3] | params_flow.rb:94:33:94:36 | args [element 3] | provenance | | +| params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:93:1:93:4 | args [element 0] | provenance | | +| params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:93:1:93:4 | args [element 1] | provenance | | +| params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:93:1:93:4 | args [element 2] | provenance | | +| params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:93:1:93:4 | args [element 3] | provenance | | +| params_flow.rb:94:10:94:18 | call to taint | params_flow.rb:83:14:83:14 | t | provenance | | +| params_flow.rb:94:21:94:29 | call to taint | params_flow.rb:83:17:83:17 | u | provenance | | +| params_flow.rb:94:32:94:36 | * ... [element 0] | params_flow.rb:83:20:83:20 | v | provenance | | +| params_flow.rb:94:32:94:36 | * ... [element 1] | params_flow.rb:83:23:83:23 | w | provenance | | +| params_flow.rb:94:32:94:36 | * ... [element 2] | params_flow.rb:83:26:83:26 | x | provenance | | +| params_flow.rb:94:32:94:36 | * ... [element 3] | params_flow.rb:83:29:83:29 | y | provenance | | +| params_flow.rb:94:33:94:36 | args [element 0] | params_flow.rb:94:32:94:36 | * ... [element 0] | provenance | | +| params_flow.rb:94:33:94:36 | args [element 1] | params_flow.rb:94:32:94:36 | * ... [element 1] | provenance | | +| params_flow.rb:94:33:94:36 | args [element 2] | params_flow.rb:94:32:94:36 | * ... [element 2] | provenance | | +| params_flow.rb:94:33:94:36 | args [element 3] | params_flow.rb:94:32:94:36 | * ... [element 3] | provenance | | +| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:83:23:83:23 | w | provenance | | +| params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | | +| params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:69:17:69:17 | y | provenance | | +| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:69:24:69:24 | w | provenance | | +| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:69:27:69:27 | r | provenance | | +| params_flow.rb:98:19:98:19 | a | params_flow.rb:99:10:99:10 | a | provenance | | +| params_flow.rb:98:31:98:31 | b | params_flow.rb:102:10:102:10 | b | provenance | | +| params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:98:19:98:19 | a | provenance | | +| params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:98:19:98:19 | a | provenance | | +| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:98:31:98:31 | b | provenance | | +| params_flow.rb:108:37:108:37 | a | params_flow.rb:109:10:109:10 | a | provenance | | +| params_flow.rb:108:40:108:41 | *b [element 0] | params_flow.rb:110:10:110:10 | b [element 0] | provenance | | +| params_flow.rb:108:44:108:44 | c | params_flow.rb:111:10:111:10 | c | provenance | | +| params_flow.rb:110:10:110:10 | b [element 0] | params_flow.rb:110:10:110:13 | ...[...] | provenance | | +| params_flow.rb:114:33:114:41 | call to taint | params_flow.rb:108:37:108:37 | a | provenance | | +| params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:108:40:108:41 | *b [element 0] | provenance | | +| params_flow.rb:114:58:114:66 | call to taint | params_flow.rb:108:44:108:44 | c | provenance | | +| params_flow.rb:117:1:117:1 | [post] x [element] | params_flow.rb:118:13:118:13 | x [element] | provenance | | +| params_flow.rb:117:19:117:27 | call to taint | params_flow.rb:117:1:117:1 | [post] x [element] | provenance | | +| params_flow.rb:118:12:118:13 | * ... [element] | params_flow.rb:9:16:9:17 | p1 | provenance | | +| params_flow.rb:118:12:118:13 | * ... [element] | params_flow.rb:9:20:9:21 | p2 | provenance | | +| params_flow.rb:118:13:118:13 | x [element] | params_flow.rb:118:12:118:13 | * ... [element] | provenance | | +| params_flow.rb:130:1:130:4 | args [element 0] | params_flow.rb:131:11:131:14 | args [element 0] | provenance | | +| params_flow.rb:130:1:130:4 | args [element 1] | params_flow.rb:131:11:131:14 | args [element 1] | provenance | | +| params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:130:1:130:4 | args [element 0] | provenance | | +| params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:130:1:130:4 | args [element 1] | provenance | | +| params_flow.rb:131:10:131:14 | * ... [element 0] | params_flow.rb:83:14:83:14 | t | provenance | | +| params_flow.rb:131:10:131:14 | * ... [element 1] | params_flow.rb:83:17:83:17 | u | provenance | | +| params_flow.rb:131:11:131:14 | args [element 0] | params_flow.rb:131:10:131:14 | * ... [element 0] | provenance | | +| params_flow.rb:131:11:131:14 | args [element 1] | params_flow.rb:131:10:131:14 | * ... [element 1] | provenance | | +| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:83:17:83:17 | u | provenance | | +| params_flow.rb:133:14:133:18 | *args [element 1] | params_flow.rb:134:10:134:13 | args [element 1] | provenance | | +| params_flow.rb:134:10:134:13 | args [element 1] | params_flow.rb:134:10:134:16 | ...[...] | provenance | | +| params_flow.rb:137:10:137:43 | * ... [element 1] | params_flow.rb:133:14:133:18 | *args [element 1] | provenance | | +| params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:137:10:137:43 | * ... [element 1] | provenance | | +| params_flow.rb:153:28:153:29 | p2 | params_flow.rb:154:18:154:19 | p2 | provenance | | +| params_flow.rb:154:18:154:19 | p2 | params_flow.rb:154:5:154:6 | [post] p1 [element 0] | provenance | | +| params_flow.rb:164:23:164:24 | [post] p1 [element 0] | params_flow.rb:165:6:165:7 | p1 [element 0] | provenance | | +| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:153:28:153:29 | p2 | provenance | | +| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:164:23:164:24 | [post] p1 [element 0] | provenance | | +| params_flow.rb:165:6:165:7 | p1 [element 0] | params_flow.rb:165:6:165:10 | ...[...] | provenance | | +| params_flow.rb:181:28:181:29 | p2 | params_flow.rb:182:18:182:19 | p2 | provenance | | +| params_flow.rb:182:18:182:19 | p2 | params_flow.rb:182:5:182:6 | [post] p1 [element 0] | provenance | | +| params_flow.rb:192:20:192:21 | [post] p1 [element 0] | params_flow.rb:193:6:193:7 | p1 [element 0] | provenance | | +| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | provenance | | +| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:192:20:192:21 | [post] p1 [element 0] | provenance | | +| params_flow.rb:193:6:193:7 | p1 [element 0] | params_flow.rb:193:6:193:10 | ...[...] | provenance | | nodes | params_flow.rb:9:16:9:17 | p1 | semmle.label | p1 | | params_flow.rb:9:20:9:21 | p2 | semmle.label | p2 | diff --git a/ruby/ql/test/library-tests/dataflow/ssa-flow/ssa-flow.expected b/ruby/ql/test/library-tests/dataflow/ssa-flow/ssa-flow.expected index c7a8595c4644..4fc620f68500 100644 --- a/ruby/ql/test/library-tests/dataflow/ssa-flow/ssa-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/ssa-flow/ssa-flow.expected @@ -1,8 +1,8 @@ testFailures edges -| ssa_flow.rb:12:9:12:9 | [post] a [element 0] | ssa_flow.rb:16:10:16:10 | a [element 0] | -| ssa_flow.rb:12:16:12:23 | call to taint | ssa_flow.rb:12:9:12:9 | [post] a [element 0] | -| ssa_flow.rb:16:10:16:10 | a [element 0] | ssa_flow.rb:16:10:16:13 | ...[...] | +| ssa_flow.rb:12:9:12:9 | [post] a [element 0] | ssa_flow.rb:16:10:16:10 | a [element 0] | provenance | | +| ssa_flow.rb:12:16:12:23 | call to taint | ssa_flow.rb:12:9:12:9 | [post] a [element 0] | provenance | | +| ssa_flow.rb:16:10:16:10 | a [element 0] | ssa_flow.rb:16:10:16:13 | ...[...] | provenance | | nodes | ssa_flow.rb:12:9:12:9 | [post] a [element 0] | semmle.label | [post] a [element 0] | | ssa_flow.rb:12:16:12:23 | call to taint | semmle.label | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected b/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected index ec483b6fc8e3..48b62cc592d4 100644 --- a/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/string-flow/string-flow.expected @@ -2,17 +2,17 @@ testFailures | string_flow.rb:85:10:85:10 | a | Unexpected result: hasValueFlow=a | | string_flow.rb:227:10:227:10 | a | Unexpected result: hasValueFlow=a | edges -| string_flow.rb:2:5:2:5 | a | string_flow.rb:3:21:3:21 | a | -| string_flow.rb:2:9:2:18 | call to source | string_flow.rb:2:5:2:5 | a | -| string_flow.rb:3:21:3:21 | a | string_flow.rb:3:10:3:22 | call to new | -| string_flow.rb:83:5:83:5 | a | string_flow.rb:84:5:84:5 | a | -| string_flow.rb:83:9:83:18 | call to source | string_flow.rb:83:5:83:5 | a | -| string_flow.rb:84:5:84:5 | [post] a | string_flow.rb:85:10:85:10 | a | -| string_flow.rb:84:5:84:5 | a | string_flow.rb:84:5:84:5 | [post] a | -| string_flow.rb:223:5:223:5 | a | string_flow.rb:225:10:225:10 | a | -| string_flow.rb:223:9:223:18 | call to source | string_flow.rb:223:5:223:5 | a | -| string_flow.rb:225:10:225:10 | [post] a | string_flow.rb:227:10:227:10 | a | -| string_flow.rb:225:10:225:10 | a | string_flow.rb:225:10:225:10 | [post] a | +| string_flow.rb:2:5:2:5 | a | string_flow.rb:3:21:3:21 | a | provenance | | +| string_flow.rb:2:9:2:18 | call to source | string_flow.rb:2:5:2:5 | a | provenance | | +| string_flow.rb:3:21:3:21 | a | string_flow.rb:3:10:3:22 | call to new | provenance | | +| string_flow.rb:83:5:83:5 | a | string_flow.rb:84:5:84:5 | a | provenance | | +| string_flow.rb:83:9:83:18 | call to source | string_flow.rb:83:5:83:5 | a | provenance | | +| string_flow.rb:84:5:84:5 | [post] a | string_flow.rb:85:10:85:10 | a | provenance | | +| string_flow.rb:84:5:84:5 | a | string_flow.rb:84:5:84:5 | [post] a | provenance | | +| string_flow.rb:223:5:223:5 | a | string_flow.rb:225:10:225:10 | a | provenance | | +| string_flow.rb:223:9:223:18 | call to source | string_flow.rb:223:5:223:5 | a | provenance | | +| string_flow.rb:225:10:225:10 | [post] a | string_flow.rb:227:10:227:10 | a | provenance | | +| string_flow.rb:225:10:225:10 | a | string_flow.rb:225:10:225:10 | [post] a | provenance | | nodes | string_flow.rb:2:5:2:5 | a | semmle.label | a | | string_flow.rb:2:9:2:18 | call to source | semmle.label | call to source | diff --git a/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected b/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected index b8194f74f428..693832e5577a 100644 --- a/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected +++ b/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected @@ -1,258 +1,258 @@ testFailures edges -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:2:6:2:12 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:2:6:2:12 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:4:24:4:30 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:4:24:4:30 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:16:36:16:42 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:16:36:16:42 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:20:25:20:31 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:26:31:26:37 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:30:24:30:30 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:31:27:31:33 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:34:16:34:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:34:16:34:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:35:16:35:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:35:16:35:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:36:21:36:27 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:36:21:36:27 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:37:36:37:42 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:37:36:37:42 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:51:24:51:30 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:56:22:56:28 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:57:17:57:23 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:59:27:59:33 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:63:32:63:38 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:65:23:65:29 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:122:16:122:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:128:14:128:20 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:131:16:131:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:131:16:131:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:131:16:131:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:132:21:132:27 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:132:21:132:27 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:135:26:135:32 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:135:26:135:32 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:137:23:137:29 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:137:23:137:29 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:140:19:140:25 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:140:19:140:25 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:141:19:141:25 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:141:19:141:25 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:145:26:145:32 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:145:26:145:32 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:147:16:147:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:147:16:147:22 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:150:39:150:45 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:150:39:150:45 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:154:20:154:26 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:154:20:154:26 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:155:28:155:34 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:155:28:155:34 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:156:27:156:33 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:156:27:156:33 | tainted | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end [captured tainted] | -| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end [captured tainted] | -| summaries.rb:1:20:1:36 | call to source | summaries.rb:1:11:1:36 | call to identity | -| summaries.rb:1:20:1:36 | call to source | summaries.rb:1:11:1:36 | call to identity | -| summaries.rb:4:1:4:8 | tainted2 | summaries.rb:9:6:9:13 | tainted2 | -| summaries.rb:4:1:4:8 | tainted2 | summaries.rb:9:6:9:13 | tainted2 | -| summaries.rb:4:12:7:3 | call to apply_block | summaries.rb:4:1:4:8 | tainted2 | -| summaries.rb:4:12:7:3 | call to apply_block | summaries.rb:4:1:4:8 | tainted2 | -| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:12:7:3 | call to apply_block | -| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:12:7:3 | call to apply_block | -| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:36:4:36 | x | -| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:36:4:36 | x | -| summaries.rb:4:36:4:36 | x | summaries.rb:5:8:5:8 | x | -| summaries.rb:4:36:4:36 | x | summaries.rb:5:8:5:8 | x | -| summaries.rb:11:17:11:17 | x | summaries.rb:12:8:12:8 | x | -| summaries.rb:11:17:11:17 | x | summaries.rb:12:8:12:8 | x | -| summaries.rb:16:1:16:8 | tainted3 | summaries.rb:18:6:18:13 | tainted3 | -| summaries.rb:16:1:16:8 | tainted3 | summaries.rb:18:6:18:13 | tainted3 | -| summaries.rb:16:12:16:43 | call to apply_lambda | summaries.rb:16:1:16:8 | tainted3 | -| summaries.rb:16:12:16:43 | call to apply_lambda | summaries.rb:16:1:16:8 | tainted3 | -| summaries.rb:16:36:16:42 | tainted | summaries.rb:11:17:11:17 | x | -| summaries.rb:16:36:16:42 | tainted | summaries.rb:11:17:11:17 | x | -| summaries.rb:16:36:16:42 | tainted | summaries.rb:16:12:16:43 | call to apply_lambda | -| summaries.rb:16:36:16:42 | tainted | summaries.rb:16:12:16:43 | call to apply_lambda | -| summaries.rb:20:1:20:8 | tainted4 | summaries.rb:21:6:21:13 | tainted4 | -| summaries.rb:20:12:20:32 | call to firstArg | summaries.rb:20:1:20:8 | tainted4 | -| summaries.rb:20:25:20:31 | tainted | summaries.rb:20:12:20:32 | call to firstArg | -| summaries.rb:26:1:26:8 | tainted5 | summaries.rb:27:6:27:13 | tainted5 | -| summaries.rb:26:12:26:38 | call to secondArg | summaries.rb:26:1:26:8 | tainted5 | -| summaries.rb:26:31:26:37 | tainted | summaries.rb:26:12:26:38 | call to secondArg | -| summaries.rb:30:24:30:30 | tainted | summaries.rb:30:6:30:42 | call to onlyWithBlock | -| summaries.rb:31:27:31:33 | tainted | summaries.rb:31:6:31:34 | call to onlyWithoutBlock | -| summaries.rb:40:3:40:3 | t | summaries.rb:41:24:41:24 | t | -| summaries.rb:40:3:40:3 | t | summaries.rb:42:24:42:24 | t | -| summaries.rb:40:3:40:3 | t | summaries.rb:44:8:44:8 | t | -| summaries.rb:40:7:40:17 | call to source | summaries.rb:40:3:40:3 | t | -| summaries.rb:41:24:41:24 | t | summaries.rb:41:8:41:25 | call to matchedByName | -| summaries.rb:42:24:42:24 | t | summaries.rb:42:8:42:25 | call to matchedByName | -| summaries.rb:44:8:44:8 | t | summaries.rb:44:8:44:27 | call to matchedByNameRcv | -| summaries.rb:48:24:48:41 | call to source | summaries.rb:48:8:48:42 | call to preserveTaint | -| summaries.rb:51:24:51:30 | tainted | summaries.rb:51:6:51:31 | call to namedArg | -| summaries.rb:53:1:53:4 | args [element :foo] | summaries.rb:54:21:54:24 | args [element :foo] | -| summaries.rb:53:15:53:31 | call to source | summaries.rb:53:1:53:4 | args [element :foo] | -| summaries.rb:54:19:54:24 | ** ... [element :foo] | summaries.rb:54:6:54:25 | call to namedArg | -| summaries.rb:54:21:54:24 | args [element :foo] | summaries.rb:54:19:54:24 | ** ... [element :foo] | -| summaries.rb:56:22:56:28 | tainted | summaries.rb:56:6:56:29 | call to anyArg | -| summaries.rb:57:17:57:23 | tainted | summaries.rb:57:6:57:24 | call to anyArg | -| summaries.rb:59:27:59:33 | tainted | summaries.rb:59:6:59:34 | call to anyNamedArg | -| summaries.rb:63:32:63:38 | tainted | summaries.rb:63:6:63:39 | call to anyPositionFromOne | -| summaries.rb:65:23:65:29 | tainted | summaries.rb:65:40:65:40 | x | -| summaries.rb:65:40:65:40 | x | summaries.rb:66:8:66:8 | x | -| summaries.rb:73:24:73:53 | call to source | summaries.rb:73:8:73:54 | call to preserveTaint | -| summaries.rb:76:26:76:56 | call to source | summaries.rb:76:8:76:57 | call to preserveTaint | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:82:6:82:6 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:82:6:82:6 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:83:6:83:6 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:83:6:83:6 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:85:6:85:6 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:85:6:85:6 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:87:5:87:5 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:87:5:87:5 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:91:5:91:5 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:91:5:91:5 | a [element 1] | -| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:86:6:86:6 | a [element 2] | -| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:86:6:86:6 | a [element 2] | -| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:95:1:95:1 | a [element 2] | -| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:95:1:95:1 | a [element 2] | -| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:1:79:1 | a [element 1] | -| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:1:79:1 | a [element 1] | -| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:1:79:1 | a [element 2] | -| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:1:79:1 | a [element 2] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:82:6:82:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:82:6:82:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:84:6:84:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:84:6:84:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:85:6:85:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:85:6:85:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:86:6:86:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:86:6:86:6 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:87:5:87:5 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:87:5:87:5 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:95:1:95:1 | a [element] | -| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:95:1:95:1 | a [element] | -| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a [element] | -| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a [element] | -| summaries.rb:82:6:82:6 | a [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | -| summaries.rb:82:6:82:6 | a [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | -| summaries.rb:82:6:82:6 | a [element] | summaries.rb:82:6:82:24 | call to readElementOne | -| summaries.rb:82:6:82:6 | a [element] | summaries.rb:82:6:82:24 | call to readElementOne | -| summaries.rb:83:6:83:6 | a [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | -| summaries.rb:83:6:83:6 | a [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | -| summaries.rb:84:6:84:6 | a [element] | summaries.rb:84:6:84:9 | ...[...] | -| summaries.rb:84:6:84:6 | a [element] | summaries.rb:84:6:84:9 | ...[...] | -| summaries.rb:85:6:85:6 | a [element 1] | summaries.rb:85:6:85:9 | ...[...] | -| summaries.rb:85:6:85:6 | a [element 1] | summaries.rb:85:6:85:9 | ...[...] | -| summaries.rb:85:6:85:6 | a [element] | summaries.rb:85:6:85:9 | ...[...] | -| summaries.rb:85:6:85:6 | a [element] | summaries.rb:85:6:85:9 | ...[...] | -| summaries.rb:86:6:86:6 | a [element 2] | summaries.rb:86:6:86:9 | ...[...] | -| summaries.rb:86:6:86:6 | a [element 2] | summaries.rb:86:6:86:9 | ...[...] | -| summaries.rb:86:6:86:6 | a [element] | summaries.rb:86:6:86:9 | ...[...] | -| summaries.rb:86:6:86:6 | a [element] | summaries.rb:86:6:86:9 | ...[...] | -| summaries.rb:87:1:87:1 | b [element 1] | summaries.rb:89:6:89:6 | b [element 1] | -| summaries.rb:87:1:87:1 | b [element 1] | summaries.rb:89:6:89:6 | b [element 1] | -| summaries.rb:87:1:87:1 | b [element] | summaries.rb:88:6:88:6 | b [element] | -| summaries.rb:87:1:87:1 | b [element] | summaries.rb:88:6:88:6 | b [element] | -| summaries.rb:87:1:87:1 | b [element] | summaries.rb:89:6:89:6 | b [element] | -| summaries.rb:87:1:87:1 | b [element] | summaries.rb:89:6:89:6 | b [element] | -| summaries.rb:87:1:87:1 | b [element] | summaries.rb:90:6:90:6 | b [element] | -| summaries.rb:87:1:87:1 | b [element] | summaries.rb:90:6:90:6 | b [element] | -| summaries.rb:87:5:87:5 | a [element 1] | summaries.rb:87:5:87:22 | call to withElementOne [element 1] | -| summaries.rb:87:5:87:5 | a [element 1] | summaries.rb:87:5:87:22 | call to withElementOne [element 1] | -| summaries.rb:87:5:87:5 | a [element] | summaries.rb:87:5:87:22 | call to withElementOne [element] | -| summaries.rb:87:5:87:5 | a [element] | summaries.rb:87:5:87:22 | call to withElementOne [element] | -| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | summaries.rb:87:1:87:1 | b [element 1] | -| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | summaries.rb:87:1:87:1 | b [element 1] | -| summaries.rb:87:5:87:22 | call to withElementOne [element] | summaries.rb:87:1:87:1 | b [element] | -| summaries.rb:87:5:87:22 | call to withElementOne [element] | summaries.rb:87:1:87:1 | b [element] | -| summaries.rb:88:6:88:6 | b [element] | summaries.rb:88:6:88:9 | ...[...] | -| summaries.rb:88:6:88:6 | b [element] | summaries.rb:88:6:88:9 | ...[...] | -| summaries.rb:89:6:89:6 | b [element 1] | summaries.rb:89:6:89:9 | ...[...] | -| summaries.rb:89:6:89:6 | b [element 1] | summaries.rb:89:6:89:9 | ...[...] | -| summaries.rb:89:6:89:6 | b [element] | summaries.rb:89:6:89:9 | ...[...] | -| summaries.rb:89:6:89:6 | b [element] | summaries.rb:89:6:89:9 | ...[...] | -| summaries.rb:90:6:90:6 | b [element] | summaries.rb:90:6:90:9 | ...[...] | -| summaries.rb:90:6:90:6 | b [element] | summaries.rb:90:6:90:9 | ...[...] | -| summaries.rb:91:1:91:1 | c [element 1] | summaries.rb:93:6:93:6 | c [element 1] | -| summaries.rb:91:1:91:1 | c [element 1] | summaries.rb:93:6:93:6 | c [element 1] | -| summaries.rb:91:5:91:5 | a [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | -| summaries.rb:91:5:91:5 | a [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | -| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | summaries.rb:91:1:91:1 | c [element 1] | -| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | summaries.rb:91:1:91:1 | c [element 1] | -| summaries.rb:93:6:93:6 | c [element 1] | summaries.rb:93:6:93:9 | ...[...] | -| summaries.rb:93:6:93:6 | c [element 1] | summaries.rb:93:6:93:9 | ...[...] | -| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:98:6:98:6 | a [element 2] | -| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:98:6:98:6 | a [element 2] | -| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:99:1:99:1 | a [element 2] | -| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:99:1:99:1 | a [element 2] | -| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:96:6:96:6 | a [element] | -| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:96:6:96:6 | a [element] | -| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:97:6:97:6 | a [element] | -| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:97:6:97:6 | a [element] | -| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:98:6:98:6 | a [element] | -| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:98:6:98:6 | a [element] | -| summaries.rb:95:1:95:1 | a [element 2] | summaries.rb:95:1:95:1 | [post] a [element 2] | -| summaries.rb:95:1:95:1 | a [element 2] | summaries.rb:95:1:95:1 | [post] a [element 2] | -| summaries.rb:95:1:95:1 | a [element] | summaries.rb:95:1:95:1 | [post] a [element] | -| summaries.rb:95:1:95:1 | a [element] | summaries.rb:95:1:95:1 | [post] a [element] | -| summaries.rb:96:6:96:6 | a [element] | summaries.rb:96:6:96:9 | ...[...] | -| summaries.rb:96:6:96:6 | a [element] | summaries.rb:96:6:96:9 | ...[...] | -| summaries.rb:97:6:97:6 | a [element] | summaries.rb:97:6:97:9 | ...[...] | -| summaries.rb:97:6:97:6 | a [element] | summaries.rb:97:6:97:9 | ...[...] | -| summaries.rb:98:6:98:6 | a [element 2] | summaries.rb:98:6:98:9 | ...[...] | -| summaries.rb:98:6:98:6 | a [element 2] | summaries.rb:98:6:98:9 | ...[...] | -| summaries.rb:98:6:98:6 | a [element] | summaries.rb:98:6:98:9 | ...[...] | -| summaries.rb:98:6:98:6 | a [element] | summaries.rb:98:6:98:9 | ...[...] | -| summaries.rb:99:1:99:1 | [post] a [element 2] | summaries.rb:102:6:102:6 | a [element 2] | -| summaries.rb:99:1:99:1 | [post] a [element 2] | summaries.rb:102:6:102:6 | a [element 2] | -| summaries.rb:99:1:99:1 | a [element 2] | summaries.rb:99:1:99:1 | [post] a [element 2] | -| summaries.rb:99:1:99:1 | a [element 2] | summaries.rb:99:1:99:1 | [post] a [element 2] | -| summaries.rb:102:6:102:6 | a [element 2] | summaries.rb:102:6:102:9 | ...[...] | -| summaries.rb:102:6:102:6 | a [element 2] | summaries.rb:102:6:102:9 | ...[...] | -| summaries.rb:103:1:103:1 | [post] d [element 3] | summaries.rb:104:1:104:1 | d [element 3] | -| summaries.rb:103:1:103:1 | [post] d [element 3] | summaries.rb:104:1:104:1 | d [element 3] | -| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d [element 3] | -| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d [element 3] | -| summaries.rb:104:1:104:1 | [post] d [element 3] | summaries.rb:108:6:108:6 | d [element 3] | -| summaries.rb:104:1:104:1 | [post] d [element 3] | summaries.rb:108:6:108:6 | d [element 3] | -| summaries.rb:104:1:104:1 | d [element 3] | summaries.rb:104:1:104:1 | [post] d [element 3] | -| summaries.rb:104:1:104:1 | d [element 3] | summaries.rb:104:1:104:1 | [post] d [element 3] | -| summaries.rb:108:6:108:6 | d [element 3] | summaries.rb:108:6:108:9 | ...[...] | -| summaries.rb:108:6:108:6 | d [element 3] | summaries.rb:108:6:108:9 | ...[...] | -| summaries.rb:111:1:111:1 | [post] x [@value] | summaries.rb:112:6:112:6 | x [@value] | -| summaries.rb:111:1:111:1 | [post] x [@value] | summaries.rb:112:6:112:6 | x [@value] | -| summaries.rb:111:13:111:26 | call to source | summaries.rb:111:1:111:1 | [post] x [@value] | -| summaries.rb:111:13:111:26 | call to source | summaries.rb:111:1:111:1 | [post] x [@value] | -| summaries.rb:112:6:112:6 | x [@value] | summaries.rb:112:6:112:16 | call to get_value | -| summaries.rb:112:6:112:6 | x [@value] | summaries.rb:112:6:112:16 | call to get_value | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:128:14:128:20 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:131:16:131:22 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:131:16:131:22 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:132:21:132:27 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:135:26:135:32 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:137:23:137:29 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:140:19:140:25 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:141:19:141:25 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:145:26:145:32 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:147:16:147:22 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:150:39:150:45 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:154:20:154:26 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:155:28:155:34 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:156:27:156:33 | tainted | -| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:157:14:160:3 | do ... end [captured tainted] | -| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:16:122:22 | [post] tainted | -| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:25:122:25 | [post] y | -| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:33:122:33 | [post] z | -| summaries.rb:122:25:122:25 | [post] y | summaries.rb:124:6:124:6 | y | -| summaries.rb:122:33:122:33 | [post] z | summaries.rb:125:6:125:6 | z | -| summaries.rb:128:1:128:1 | [post] x | summaries.rb:129:6:129:6 | x | -| summaries.rb:128:14:128:20 | tainted | summaries.rb:128:1:128:1 | [post] x | -| summaries.rb:131:16:131:22 | tainted | summaries.rb:131:1:131:23 | synthetic splat argument | -| summaries.rb:157:14:160:3 | do ... end [captured tainted] | summaries.rb:158:15:158:21 | tainted | -| summaries.rb:157:14:160:3 | do ... end [captured tainted] | summaries.rb:158:15:158:21 | tainted | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:2:6:2:12 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:2:6:2:12 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:4:24:4:30 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:4:24:4:30 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:16:36:16:42 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:16:36:16:42 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:20:25:20:31 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:26:31:26:37 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:30:24:30:30 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:31:27:31:33 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:34:16:34:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:34:16:34:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:35:16:35:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:35:16:35:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:36:21:36:27 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:36:21:36:27 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:37:36:37:42 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:37:36:37:42 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:51:24:51:30 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:56:22:56:28 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:57:17:57:23 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:59:27:59:33 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:63:32:63:38 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:65:23:65:29 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:122:16:122:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:128:14:128:20 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:131:16:131:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:131:16:131:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:131:16:131:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:132:21:132:27 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:132:21:132:27 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:135:26:135:32 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:135:26:135:32 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:137:23:137:29 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:137:23:137:29 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:140:19:140:25 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:140:19:140:25 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:141:19:141:25 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:141:19:141:25 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:145:26:145:32 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:145:26:145:32 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:147:16:147:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:147:16:147:22 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:150:39:150:45 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:150:39:150:45 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:154:20:154:26 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:154:20:154:26 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:155:28:155:34 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:155:28:155:34 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:156:27:156:33 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:156:27:156:33 | tainted | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end [captured tainted] | provenance | | +| summaries.rb:1:11:1:36 | call to identity | summaries.rb:157:14:160:3 | do ... end [captured tainted] | provenance | | +| summaries.rb:1:20:1:36 | call to source | summaries.rb:1:11:1:36 | call to identity | provenance | | +| summaries.rb:1:20:1:36 | call to source | summaries.rb:1:11:1:36 | call to identity | provenance | | +| summaries.rb:4:1:4:8 | tainted2 | summaries.rb:9:6:9:13 | tainted2 | provenance | | +| summaries.rb:4:1:4:8 | tainted2 | summaries.rb:9:6:9:13 | tainted2 | provenance | | +| summaries.rb:4:12:7:3 | call to apply_block | summaries.rb:4:1:4:8 | tainted2 | provenance | | +| summaries.rb:4:12:7:3 | call to apply_block | summaries.rb:4:1:4:8 | tainted2 | provenance | | +| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:12:7:3 | call to apply_block | provenance | | +| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:12:7:3 | call to apply_block | provenance | | +| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:36:4:36 | x | provenance | | +| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:36:4:36 | x | provenance | | +| summaries.rb:4:36:4:36 | x | summaries.rb:5:8:5:8 | x | provenance | | +| summaries.rb:4:36:4:36 | x | summaries.rb:5:8:5:8 | x | provenance | | +| summaries.rb:11:17:11:17 | x | summaries.rb:12:8:12:8 | x | provenance | | +| summaries.rb:11:17:11:17 | x | summaries.rb:12:8:12:8 | x | provenance | | +| summaries.rb:16:1:16:8 | tainted3 | summaries.rb:18:6:18:13 | tainted3 | provenance | | +| summaries.rb:16:1:16:8 | tainted3 | summaries.rb:18:6:18:13 | tainted3 | provenance | | +| summaries.rb:16:12:16:43 | call to apply_lambda | summaries.rb:16:1:16:8 | tainted3 | provenance | | +| summaries.rb:16:12:16:43 | call to apply_lambda | summaries.rb:16:1:16:8 | tainted3 | provenance | | +| summaries.rb:16:36:16:42 | tainted | summaries.rb:11:17:11:17 | x | provenance | | +| summaries.rb:16:36:16:42 | tainted | summaries.rb:11:17:11:17 | x | provenance | | +| summaries.rb:16:36:16:42 | tainted | summaries.rb:16:12:16:43 | call to apply_lambda | provenance | | +| summaries.rb:16:36:16:42 | tainted | summaries.rb:16:12:16:43 | call to apply_lambda | provenance | | +| summaries.rb:20:1:20:8 | tainted4 | summaries.rb:21:6:21:13 | tainted4 | provenance | | +| summaries.rb:20:12:20:32 | call to firstArg | summaries.rb:20:1:20:8 | tainted4 | provenance | | +| summaries.rb:20:25:20:31 | tainted | summaries.rb:20:12:20:32 | call to firstArg | provenance | | +| summaries.rb:26:1:26:8 | tainted5 | summaries.rb:27:6:27:13 | tainted5 | provenance | | +| summaries.rb:26:12:26:38 | call to secondArg | summaries.rb:26:1:26:8 | tainted5 | provenance | | +| summaries.rb:26:31:26:37 | tainted | summaries.rb:26:12:26:38 | call to secondArg | provenance | | +| summaries.rb:30:24:30:30 | tainted | summaries.rb:30:6:30:42 | call to onlyWithBlock | provenance | | +| summaries.rb:31:27:31:33 | tainted | summaries.rb:31:6:31:34 | call to onlyWithoutBlock | provenance | | +| summaries.rb:40:3:40:3 | t | summaries.rb:41:24:41:24 | t | provenance | | +| summaries.rb:40:3:40:3 | t | summaries.rb:42:24:42:24 | t | provenance | | +| summaries.rb:40:3:40:3 | t | summaries.rb:44:8:44:8 | t | provenance | | +| summaries.rb:40:7:40:17 | call to source | summaries.rb:40:3:40:3 | t | provenance | | +| summaries.rb:41:24:41:24 | t | summaries.rb:41:8:41:25 | call to matchedByName | provenance | | +| summaries.rb:42:24:42:24 | t | summaries.rb:42:8:42:25 | call to matchedByName | provenance | | +| summaries.rb:44:8:44:8 | t | summaries.rb:44:8:44:27 | call to matchedByNameRcv | provenance | | +| summaries.rb:48:24:48:41 | call to source | summaries.rb:48:8:48:42 | call to preserveTaint | provenance | | +| summaries.rb:51:24:51:30 | tainted | summaries.rb:51:6:51:31 | call to namedArg | provenance | | +| summaries.rb:53:1:53:4 | args [element :foo] | summaries.rb:54:21:54:24 | args [element :foo] | provenance | | +| summaries.rb:53:15:53:31 | call to source | summaries.rb:53:1:53:4 | args [element :foo] | provenance | | +| summaries.rb:54:19:54:24 | ** ... [element :foo] | summaries.rb:54:6:54:25 | call to namedArg | provenance | | +| summaries.rb:54:21:54:24 | args [element :foo] | summaries.rb:54:19:54:24 | ** ... [element :foo] | provenance | | +| summaries.rb:56:22:56:28 | tainted | summaries.rb:56:6:56:29 | call to anyArg | provenance | | +| summaries.rb:57:17:57:23 | tainted | summaries.rb:57:6:57:24 | call to anyArg | provenance | | +| summaries.rb:59:27:59:33 | tainted | summaries.rb:59:6:59:34 | call to anyNamedArg | provenance | | +| summaries.rb:63:32:63:38 | tainted | summaries.rb:63:6:63:39 | call to anyPositionFromOne | provenance | | +| summaries.rb:65:23:65:29 | tainted | summaries.rb:65:40:65:40 | x | provenance | | +| summaries.rb:65:40:65:40 | x | summaries.rb:66:8:66:8 | x | provenance | | +| summaries.rb:73:24:73:53 | call to source | summaries.rb:73:8:73:54 | call to preserveTaint | provenance | | +| summaries.rb:76:26:76:56 | call to source | summaries.rb:76:8:76:57 | call to preserveTaint | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:82:6:82:6 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:82:6:82:6 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:83:6:83:6 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:83:6:83:6 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:85:6:85:6 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:85:6:85:6 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:87:5:87:5 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:87:5:87:5 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:91:5:91:5 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 1] | summaries.rb:91:5:91:5 | a [element 1] | provenance | | +| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:86:6:86:6 | a [element 2] | provenance | | +| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:86:6:86:6 | a [element 2] | provenance | | +| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:95:1:95:1 | a [element 2] | provenance | | +| summaries.rb:79:1:79:1 | a [element 2] | summaries.rb:95:1:95:1 | a [element 2] | provenance | | +| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:1:79:1 | a [element 1] | provenance | | +| summaries.rb:79:15:79:29 | call to source | summaries.rb:79:1:79:1 | a [element 1] | provenance | | +| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:1:79:1 | a [element 2] | provenance | | +| summaries.rb:79:32:79:46 | call to source | summaries.rb:79:1:79:1 | a [element 2] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:82:6:82:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:82:6:82:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:84:6:84:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:84:6:84:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:85:6:85:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:85:6:85:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:86:6:86:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:86:6:86:6 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:87:5:87:5 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:87:5:87:5 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:95:1:95:1 | a [element] | provenance | | +| summaries.rb:81:1:81:1 | [post] a [element] | summaries.rb:95:1:95:1 | a [element] | provenance | | +| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a [element] | provenance | | +| summaries.rb:81:13:81:27 | call to source | summaries.rb:81:1:81:1 | [post] a [element] | provenance | | +| summaries.rb:82:6:82:6 | a [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | | +| summaries.rb:82:6:82:6 | a [element 1] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | | +| summaries.rb:82:6:82:6 | a [element] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | | +| summaries.rb:82:6:82:6 | a [element] | summaries.rb:82:6:82:24 | call to readElementOne | provenance | | +| summaries.rb:83:6:83:6 | a [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | provenance | | +| summaries.rb:83:6:83:6 | a [element 1] | summaries.rb:83:6:83:31 | call to readExactlyElementOne | provenance | | +| summaries.rb:84:6:84:6 | a [element] | summaries.rb:84:6:84:9 | ...[...] | provenance | | +| summaries.rb:84:6:84:6 | a [element] | summaries.rb:84:6:84:9 | ...[...] | provenance | | +| summaries.rb:85:6:85:6 | a [element 1] | summaries.rb:85:6:85:9 | ...[...] | provenance | | +| summaries.rb:85:6:85:6 | a [element 1] | summaries.rb:85:6:85:9 | ...[...] | provenance | | +| summaries.rb:85:6:85:6 | a [element] | summaries.rb:85:6:85:9 | ...[...] | provenance | | +| summaries.rb:85:6:85:6 | a [element] | summaries.rb:85:6:85:9 | ...[...] | provenance | | +| summaries.rb:86:6:86:6 | a [element 2] | summaries.rb:86:6:86:9 | ...[...] | provenance | | +| summaries.rb:86:6:86:6 | a [element 2] | summaries.rb:86:6:86:9 | ...[...] | provenance | | +| summaries.rb:86:6:86:6 | a [element] | summaries.rb:86:6:86:9 | ...[...] | provenance | | +| summaries.rb:86:6:86:6 | a [element] | summaries.rb:86:6:86:9 | ...[...] | provenance | | +| summaries.rb:87:1:87:1 | b [element 1] | summaries.rb:89:6:89:6 | b [element 1] | provenance | | +| summaries.rb:87:1:87:1 | b [element 1] | summaries.rb:89:6:89:6 | b [element 1] | provenance | | +| summaries.rb:87:1:87:1 | b [element] | summaries.rb:88:6:88:6 | b [element] | provenance | | +| summaries.rb:87:1:87:1 | b [element] | summaries.rb:88:6:88:6 | b [element] | provenance | | +| summaries.rb:87:1:87:1 | b [element] | summaries.rb:89:6:89:6 | b [element] | provenance | | +| summaries.rb:87:1:87:1 | b [element] | summaries.rb:89:6:89:6 | b [element] | provenance | | +| summaries.rb:87:1:87:1 | b [element] | summaries.rb:90:6:90:6 | b [element] | provenance | | +| summaries.rb:87:1:87:1 | b [element] | summaries.rb:90:6:90:6 | b [element] | provenance | | +| summaries.rb:87:5:87:5 | a [element 1] | summaries.rb:87:5:87:22 | call to withElementOne [element 1] | provenance | | +| summaries.rb:87:5:87:5 | a [element 1] | summaries.rb:87:5:87:22 | call to withElementOne [element 1] | provenance | | +| summaries.rb:87:5:87:5 | a [element] | summaries.rb:87:5:87:22 | call to withElementOne [element] | provenance | | +| summaries.rb:87:5:87:5 | a [element] | summaries.rb:87:5:87:22 | call to withElementOne [element] | provenance | | +| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | summaries.rb:87:1:87:1 | b [element 1] | provenance | | +| summaries.rb:87:5:87:22 | call to withElementOne [element 1] | summaries.rb:87:1:87:1 | b [element 1] | provenance | | +| summaries.rb:87:5:87:22 | call to withElementOne [element] | summaries.rb:87:1:87:1 | b [element] | provenance | | +| summaries.rb:87:5:87:22 | call to withElementOne [element] | summaries.rb:87:1:87:1 | b [element] | provenance | | +| summaries.rb:88:6:88:6 | b [element] | summaries.rb:88:6:88:9 | ...[...] | provenance | | +| summaries.rb:88:6:88:6 | b [element] | summaries.rb:88:6:88:9 | ...[...] | provenance | | +| summaries.rb:89:6:89:6 | b [element 1] | summaries.rb:89:6:89:9 | ...[...] | provenance | | +| summaries.rb:89:6:89:6 | b [element 1] | summaries.rb:89:6:89:9 | ...[...] | provenance | | +| summaries.rb:89:6:89:6 | b [element] | summaries.rb:89:6:89:9 | ...[...] | provenance | | +| summaries.rb:89:6:89:6 | b [element] | summaries.rb:89:6:89:9 | ...[...] | provenance | | +| summaries.rb:90:6:90:6 | b [element] | summaries.rb:90:6:90:9 | ...[...] | provenance | | +| summaries.rb:90:6:90:6 | b [element] | summaries.rb:90:6:90:9 | ...[...] | provenance | | +| summaries.rb:91:1:91:1 | c [element 1] | summaries.rb:93:6:93:6 | c [element 1] | provenance | | +| summaries.rb:91:1:91:1 | c [element 1] | summaries.rb:93:6:93:6 | c [element 1] | provenance | | +| summaries.rb:91:5:91:5 | a [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | provenance | | +| summaries.rb:91:5:91:5 | a [element 1] | summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | provenance | | +| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | summaries.rb:91:1:91:1 | c [element 1] | provenance | | +| summaries.rb:91:5:91:29 | call to withExactlyElementOne [element 1] | summaries.rb:91:1:91:1 | c [element 1] | provenance | | +| summaries.rb:93:6:93:6 | c [element 1] | summaries.rb:93:6:93:9 | ...[...] | provenance | | +| summaries.rb:93:6:93:6 | c [element 1] | summaries.rb:93:6:93:9 | ...[...] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:98:6:98:6 | a [element 2] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:98:6:98:6 | a [element 2] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:99:1:99:1 | a [element 2] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element 2] | summaries.rb:99:1:99:1 | a [element 2] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:96:6:96:6 | a [element] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:96:6:96:6 | a [element] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:97:6:97:6 | a [element] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:97:6:97:6 | a [element] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:98:6:98:6 | a [element] | provenance | | +| summaries.rb:95:1:95:1 | [post] a [element] | summaries.rb:98:6:98:6 | a [element] | provenance | | +| summaries.rb:95:1:95:1 | a [element 2] | summaries.rb:95:1:95:1 | [post] a [element 2] | provenance | | +| summaries.rb:95:1:95:1 | a [element 2] | summaries.rb:95:1:95:1 | [post] a [element 2] | provenance | | +| summaries.rb:95:1:95:1 | a [element] | summaries.rb:95:1:95:1 | [post] a [element] | provenance | | +| summaries.rb:95:1:95:1 | a [element] | summaries.rb:95:1:95:1 | [post] a [element] | provenance | | +| summaries.rb:96:6:96:6 | a [element] | summaries.rb:96:6:96:9 | ...[...] | provenance | | +| summaries.rb:96:6:96:6 | a [element] | summaries.rb:96:6:96:9 | ...[...] | provenance | | +| summaries.rb:97:6:97:6 | a [element] | summaries.rb:97:6:97:9 | ...[...] | provenance | | +| summaries.rb:97:6:97:6 | a [element] | summaries.rb:97:6:97:9 | ...[...] | provenance | | +| summaries.rb:98:6:98:6 | a [element 2] | summaries.rb:98:6:98:9 | ...[...] | provenance | | +| summaries.rb:98:6:98:6 | a [element 2] | summaries.rb:98:6:98:9 | ...[...] | provenance | | +| summaries.rb:98:6:98:6 | a [element] | summaries.rb:98:6:98:9 | ...[...] | provenance | | +| summaries.rb:98:6:98:6 | a [element] | summaries.rb:98:6:98:9 | ...[...] | provenance | | +| summaries.rb:99:1:99:1 | [post] a [element 2] | summaries.rb:102:6:102:6 | a [element 2] | provenance | | +| summaries.rb:99:1:99:1 | [post] a [element 2] | summaries.rb:102:6:102:6 | a [element 2] | provenance | | +| summaries.rb:99:1:99:1 | a [element 2] | summaries.rb:99:1:99:1 | [post] a [element 2] | provenance | | +| summaries.rb:99:1:99:1 | a [element 2] | summaries.rb:99:1:99:1 | [post] a [element 2] | provenance | | +| summaries.rb:102:6:102:6 | a [element 2] | summaries.rb:102:6:102:9 | ...[...] | provenance | | +| summaries.rb:102:6:102:6 | a [element 2] | summaries.rb:102:6:102:9 | ...[...] | provenance | | +| summaries.rb:103:1:103:1 | [post] d [element 3] | summaries.rb:104:1:104:1 | d [element 3] | provenance | | +| summaries.rb:103:1:103:1 | [post] d [element 3] | summaries.rb:104:1:104:1 | d [element 3] | provenance | | +| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d [element 3] | provenance | | +| summaries.rb:103:8:103:22 | call to source | summaries.rb:103:1:103:1 | [post] d [element 3] | provenance | | +| summaries.rb:104:1:104:1 | [post] d [element 3] | summaries.rb:108:6:108:6 | d [element 3] | provenance | | +| summaries.rb:104:1:104:1 | [post] d [element 3] | summaries.rb:108:6:108:6 | d [element 3] | provenance | | +| summaries.rb:104:1:104:1 | d [element 3] | summaries.rb:104:1:104:1 | [post] d [element 3] | provenance | | +| summaries.rb:104:1:104:1 | d [element 3] | summaries.rb:104:1:104:1 | [post] d [element 3] | provenance | | +| summaries.rb:108:6:108:6 | d [element 3] | summaries.rb:108:6:108:9 | ...[...] | provenance | | +| summaries.rb:108:6:108:6 | d [element 3] | summaries.rb:108:6:108:9 | ...[...] | provenance | | +| summaries.rb:111:1:111:1 | [post] x [@value] | summaries.rb:112:6:112:6 | x [@value] | provenance | | +| summaries.rb:111:1:111:1 | [post] x [@value] | summaries.rb:112:6:112:6 | x [@value] | provenance | | +| summaries.rb:111:13:111:26 | call to source | summaries.rb:111:1:111:1 | [post] x [@value] | provenance | | +| summaries.rb:111:13:111:26 | call to source | summaries.rb:111:1:111:1 | [post] x [@value] | provenance | | +| summaries.rb:112:6:112:6 | x [@value] | summaries.rb:112:6:112:16 | call to get_value | provenance | | +| summaries.rb:112:6:112:6 | x [@value] | summaries.rb:112:6:112:16 | call to get_value | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:128:14:128:20 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:131:16:131:22 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:131:16:131:22 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:132:21:132:27 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:135:26:135:32 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:137:23:137:29 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:140:19:140:25 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:141:19:141:25 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:145:26:145:32 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:147:16:147:22 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:150:39:150:45 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:154:20:154:26 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:155:28:155:34 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:156:27:156:33 | tainted | provenance | | +| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:157:14:160:3 | do ... end [captured tainted] | provenance | | +| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:16:122:22 | [post] tainted | provenance | | +| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:25:122:25 | [post] y | provenance | | +| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:33:122:33 | [post] z | provenance | | +| summaries.rb:122:25:122:25 | [post] y | summaries.rb:124:6:124:6 | y | provenance | | +| summaries.rb:122:33:122:33 | [post] z | summaries.rb:125:6:125:6 | z | provenance | | +| summaries.rb:128:1:128:1 | [post] x | summaries.rb:129:6:129:6 | x | provenance | | +| summaries.rb:128:14:128:20 | tainted | summaries.rb:128:1:128:1 | [post] x | provenance | | +| summaries.rb:131:16:131:22 | tainted | summaries.rb:131:1:131:23 | synthetic splat argument | provenance | | +| summaries.rb:157:14:160:3 | do ... end [captured tainted] | summaries.rb:158:15:158:21 | tainted | provenance | | +| summaries.rb:157:14:160:3 | do ... end [captured tainted] | summaries.rb:158:15:158:21 | tainted | provenance | | nodes | summaries.rb:1:11:1:36 | call to identity | semmle.label | call to identity | | summaries.rb:1:11:1:36 | call to identity | semmle.label | call to identity | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected index 21262631d7bf..6f2810e13d78 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected @@ -1,11 +1,11 @@ actionControllerControllerClasses -| controllers/application_controller.rb:1:1:13:3 | ApplicationController | -| controllers/comments_controller.rb:1:1:104:3 | CommentsController | -| controllers/foo/bars_controller.rb:3:1:46:3 | BarsController | -| controllers/photos_controller.rb:1:1:10:3 | PhotosController | -| controllers/posts_controller.rb:1:1:32:3 | PostsController | -| controllers/tags_controller.rb:1:1:2:3 | TagsController | -| controllers/users/notifications_controller.rb:2:3:5:5 | Users::NotificationsController | +| app/controllers/application_controller.rb:1:1:13:3 | ApplicationController | +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | +| app/controllers/foo/bars_controller.rb:3:1:46:3 | BarsController | +| app/controllers/photos_controller.rb:1:1:10:3 | PhotosController | +| app/controllers/posts_controller.rb:1:1:32:3 | PostsController | +| app/controllers/tags_controller.rb:1:1:2:3 | TagsController | +| app/controllers/users/notifications_controller.rb:2:3:5:5 | Users::NotificationsController | | filter_flow.rb:9:1:23:3 | OneController | | filter_flow.rb:25:1:40:3 | TwoController | | filter_flow.rb:42:1:57:3 | ThreeController | @@ -15,23 +15,23 @@ actionControllerControllerClasses | params_flow.rb:1:1:162:3 | MyController | | params_flow.rb:170:1:178:3 | Subclass | actionControllerActionMethods -| controllers/comments_controller.rb:17:3:51:5 | index | -| controllers/comments_controller.rb:53:3:54:5 | create | -| controllers/comments_controller.rb:56:3:62:5 | show | -| controllers/comments_controller.rb:64:3:66:5 | photo | -| controllers/comments_controller.rb:68:3:70:5 | destroy | -| controllers/foo/bars_controller.rb:5:3:7:5 | index | -| controllers/foo/bars_controller.rb:9:3:18:5 | show_debug | -| controllers/foo/bars_controller.rb:20:3:24:5 | show | -| controllers/foo/bars_controller.rb:26:3:28:5 | go_back | -| controllers/foo/bars_controller.rb:30:3:32:5 | go_back_2 | -| controllers/foo/bars_controller.rb:34:3:39:5 | show_2 | -| controllers/photos_controller.rb:3:3:6:5 | show | -| controllers/photos_controller.rb:8:3:9:5 | foo | -| controllers/posts_controller.rb:12:3:15:5 | index | -| controllers/posts_controller.rb:17:3:18:5 | show | -| controllers/posts_controller.rb:20:3:21:5 | upvote | -| controllers/users/notifications_controller.rb:3:5:4:7 | mark_as_read | +| app/controllers/comments_controller.rb:17:3:51:5 | index | +| app/controllers/comments_controller.rb:53:3:54:5 | create | +| app/controllers/comments_controller.rb:56:3:62:5 | show | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | +| app/controllers/foo/bars_controller.rb:5:3:7:5 | index | +| app/controllers/foo/bars_controller.rb:9:3:18:5 | show_debug | +| app/controllers/foo/bars_controller.rb:20:3:24:5 | show | +| app/controllers/foo/bars_controller.rb:26:3:28:5 | go_back | +| app/controllers/foo/bars_controller.rb:30:3:32:5 | go_back_2 | +| app/controllers/foo/bars_controller.rb:34:3:39:5 | show_2 | +| app/controllers/photos_controller.rb:3:3:6:5 | show | +| app/controllers/photos_controller.rb:8:3:9:5 | foo | +| app/controllers/posts_controller.rb:12:3:15:5 | index | +| app/controllers/posts_controller.rb:17:3:18:5 | show | +| app/controllers/posts_controller.rb:20:3:21:5 | upvote | +| app/controllers/users/notifications_controller.rb:3:5:4:7 | mark_as_read | | filter_flow.rb:13:3:15:5 | a | | filter_flow.rb:17:3:18:5 | b | | filter_flow.rb:20:3:22:5 | c | @@ -87,12 +87,12 @@ actionControllerActionMethods | params_flow.rb:165:3:167:5 | m34 | | params_flow.rb:171:3:173:5 | m35 | paramsCalls -| controllers/comments_controller.rb:80:36:80:41 | call to params | -| controllers/foo/bars_controller.rb:13:21:13:26 | call to params | -| controllers/foo/bars_controller.rb:14:10:14:15 | call to params | -| controllers/foo/bars_controller.rb:21:21:21:26 | call to params | -| controllers/foo/bars_controller.rb:22:10:22:15 | call to params | -| controllers/posts_controller.rb:26:23:26:28 | call to params | +| app/controllers/comments_controller.rb:80:36:80:41 | call to params | +| app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params | +| app/controllers/foo/bars_controller.rb:14:10:14:15 | call to params | +| app/controllers/foo/bars_controller.rb:21:21:21:26 | call to params | +| app/controllers/foo/bars_controller.rb:22:10:22:15 | call to params | +| app/controllers/posts_controller.rb:26:23:26:28 | call to params | | filter_flow.rb:14:12:14:17 | call to params | | filter_flow.rb:30:12:30:17 | call to params | | filter_flow.rb:47:12:47:17 | call to params | @@ -147,12 +147,12 @@ paramsCalls | params_flow.rb:172:10:172:15 | call to params | | params_flow.rb:176:10:176:15 | call to params | paramsSources -| controllers/comments_controller.rb:80:36:80:41 | call to params | -| controllers/foo/bars_controller.rb:13:21:13:26 | call to params | -| controllers/foo/bars_controller.rb:14:10:14:15 | call to params | -| controllers/foo/bars_controller.rb:21:21:21:26 | call to params | -| controllers/foo/bars_controller.rb:22:10:22:15 | call to params | -| controllers/posts_controller.rb:26:23:26:28 | call to params | +| app/controllers/comments_controller.rb:80:36:80:41 | call to params | +| app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params | +| app/controllers/foo/bars_controller.rb:14:10:14:15 | call to params | +| app/controllers/foo/bars_controller.rb:21:21:21:26 | call to params | +| app/controllers/foo/bars_controller.rb:22:10:22:15 | call to params | +| app/controllers/posts_controller.rb:26:23:26:28 | call to params | | filter_flow.rb:14:12:14:17 | call to params | | filter_flow.rb:30:12:30:17 | call to params | | filter_flow.rb:47:12:47:17 | call to params | @@ -207,22 +207,22 @@ paramsSources | params_flow.rb:172:10:172:15 | call to params | | params_flow.rb:176:10:176:15 | call to params | httpInputAccesses -| controllers/application_controller.rb:11:53:11:64 | call to path | ActionDispatch::Request#path | -| controllers/comments_controller.rb:18:5:18:18 | call to params | ActionDispatch::Request#params | -| controllers/comments_controller.rb:19:5:19:22 | call to parameters | ActionDispatch::Request#parameters | -| controllers/comments_controller.rb:20:5:20:15 | call to GET | ActionDispatch::Request#GET | -| controllers/comments_controller.rb:21:5:21:16 | call to POST | ActionDispatch::Request#POST | -| controllers/comments_controller.rb:22:5:22:28 | call to query_parameters | ActionDispatch::Request#query_parameters | -| controllers/comments_controller.rb:23:5:23:30 | call to request_parameters | ActionDispatch::Request#request_parameters | -| controllers/comments_controller.rb:24:5:24:31 | call to filtered_parameters | ActionDispatch::Request#filtered_parameters | -| controllers/comments_controller.rb:69:12:69:30 | call to body_stream | ActionDispatch::Request#body_stream | -| controllers/comments_controller.rb:80:36:80:41 | call to params | ActionController::Metal#params | -| controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | ActionController::Metal#cookies | -| controllers/foo/bars_controller.rb:13:21:13:26 | call to params | ActionController::Metal#params | -| controllers/foo/bars_controller.rb:14:10:14:15 | call to params | ActionController::Metal#params | -| controllers/foo/bars_controller.rb:21:21:21:26 | call to params | ActionController::Metal#params | -| controllers/foo/bars_controller.rb:22:10:22:15 | call to params | ActionController::Metal#params | -| controllers/posts_controller.rb:26:23:26:28 | call to params | ActionController::Metal#params | +| app/controllers/application_controller.rb:11:53:11:64 | call to path | ActionDispatch::Request#path | +| app/controllers/comments_controller.rb:18:5:18:18 | call to params | ActionDispatch::Request#params | +| app/controllers/comments_controller.rb:19:5:19:22 | call to parameters | ActionDispatch::Request#parameters | +| app/controllers/comments_controller.rb:20:5:20:15 | call to GET | ActionDispatch::Request#GET | +| app/controllers/comments_controller.rb:21:5:21:16 | call to POST | ActionDispatch::Request#POST | +| app/controllers/comments_controller.rb:22:5:22:28 | call to query_parameters | ActionDispatch::Request#query_parameters | +| app/controllers/comments_controller.rb:23:5:23:30 | call to request_parameters | ActionDispatch::Request#request_parameters | +| app/controllers/comments_controller.rb:24:5:24:31 | call to filtered_parameters | ActionDispatch::Request#filtered_parameters | +| app/controllers/comments_controller.rb:69:12:69:30 | call to body_stream | ActionDispatch::Request#body_stream | +| app/controllers/comments_controller.rb:80:36:80:41 | call to params | ActionController::Metal#params | +| app/controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | ActionController::Metal#cookies | +| app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params | ActionController::Metal#params | +| app/controllers/foo/bars_controller.rb:14:10:14:15 | call to params | ActionController::Metal#params | +| app/controllers/foo/bars_controller.rb:21:21:21:26 | call to params | ActionController::Metal#params | +| app/controllers/foo/bars_controller.rb:22:10:22:15 | call to params | ActionController::Metal#params | +| app/controllers/posts_controller.rb:26:23:26:28 | call to params | ActionController::Metal#params | | filter_flow.rb:14:12:14:17 | call to params | ActionController::Metal#params | | filter_flow.rb:30:12:30:17 | call to params | ActionController::Metal#params | | filter_flow.rb:47:12:47:17 | call to params | ActionController::Metal#params | @@ -317,54 +317,72 @@ httpInputAccesses | params_flow.rb:172:10:172:15 | call to params | ActionController::Metal#params | | params_flow.rb:176:10:176:15 | call to params | ActionController::Metal#params | cookiesCalls -| controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | +| app/controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | cookiesSources -| controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | +| app/controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | redirectToCalls -| controllers/comments_controller.rb:58:21:58:49 | call to redirect_to | -| controllers/foo/bars_controller.rb:17:5:17:30 | call to redirect_to | -| controllers/foo/bars_controller.rb:27:5:27:39 | call to redirect_back_or_to | -| controllers/foo/bars_controller.rb:31:5:31:56 | call to redirect_back | +| app/controllers/comments_controller.rb:58:21:58:49 | call to redirect_to | +| app/controllers/foo/bars_controller.rb:17:5:17:30 | call to redirect_to | +| app/controllers/foo/bars_controller.rb:27:5:27:39 | call to redirect_back_or_to | +| app/controllers/foo/bars_controller.rb:31:5:31:56 | call to redirect_back | renderCalls -| controllers/comments_controller.rb:60:21:60:64 | call to render | -| controllers/comments_controller.rb:76:5:76:68 | call to render | -| controllers/foo/bars_controller.rb:6:5:6:37 | call to render | -| controllers/foo/bars_controller.rb:23:5:23:76 | call to render | -| controllers/foo/bars_controller.rb:35:5:35:33 | call to render | -| controllers/foo/bars_controller.rb:38:5:38:50 | call to render | -| controllers/foo/bars_controller.rb:44:5:44:17 | call to render | -| controllers/posts_controller.rb:13:5:13:51 | call to render | -| controllers/posts_controller.rb:14:5:14:127 | call to render | -| controllers/posts_controller.rb:36:5:36:51 | call to render | +| app/controllers/comments_controller.rb:60:21:60:64 | call to render | +| app/controllers/comments_controller.rb:76:5:76:68 | call to render | +| app/controllers/foo/bars_controller.rb:6:5:6:37 | call to render | +| app/controllers/foo/bars_controller.rb:23:5:23:76 | call to render | +| app/controllers/foo/bars_controller.rb:35:5:35:33 | call to render | +| app/controllers/foo/bars_controller.rb:38:5:38:50 | call to render | +| app/controllers/foo/bars_controller.rb:44:5:44:17 | call to render | +| app/controllers/posts_controller.rb:13:5:13:51 | call to render | +| app/controllers/posts_controller.rb:14:5:14:127 | call to render | +| app/controllers/posts_controller.rb:36:5:36:51 | call to render | httpResponses -| controllers/comments_controller.rb:26:5:26:17 | call to body= | controllers/comments_controller.rb:26:21:26:34 | ... = ... | -| controllers/comments_controller.rb:36:5:36:37 | call to send_file | controllers/comments_controller.rb:36:24:36:36 | "my-file.ext" | -| controllers/comments_controller.rb:65:5:65:20 | call to send_data | controllers/comments_controller.rb:65:15:65:20 | @photo | -| controllers/foo/bars_controller.rb:15:16:15:97 | call to render_to_string | controllers/foo/bars_controller.rb:15:33:15:47 | "foo/bars/show" | -| controllers/foo/bars_controller.rb:23:5:23:76 | call to render | controllers/foo/bars_controller.rb:23:12:23:26 | "foo/bars/show" | -| controllers/foo/bars_controller.rb:35:5:35:33 | call to render | controllers/foo/bars_controller.rb:35:18:35:33 | call to [] | -| controllers/foo/bars_controller.rb:36:12:36:67 | call to render_to_string | controllers/foo/bars_controller.rb:36:29:36:33 | @user | -| controllers/foo/bars_controller.rb:38:5:38:50 | call to render | controllers/foo/bars_controller.rb:38:12:38:22 | call to backtrace | -| controllers/foo/bars_controller.rb:44:5:44:17 | call to render | controllers/foo/bars_controller.rb:44:12:44:17 | "show" | +| app/controllers/comments_controller.rb:26:5:26:17 | call to body= | app/controllers/comments_controller.rb:26:21:26:34 | ... = ... | +| app/controllers/comments_controller.rb:36:5:36:37 | call to send_file | app/controllers/comments_controller.rb:36:24:36:36 | "my-file.ext" | +| app/controllers/comments_controller.rb:65:5:65:20 | call to send_data | app/controllers/comments_controller.rb:65:15:65:20 | @photo | +| app/controllers/foo/bars_controller.rb:15:16:15:97 | call to render_to_string | app/controllers/foo/bars_controller.rb:15:33:15:47 | "foo/bars/show" | +| app/controllers/foo/bars_controller.rb:23:5:23:76 | call to render | app/controllers/foo/bars_controller.rb:23:12:23:26 | "foo/bars/show" | +| app/controllers/foo/bars_controller.rb:35:5:35:33 | call to render | app/controllers/foo/bars_controller.rb:35:18:35:33 | call to [] | +| app/controllers/foo/bars_controller.rb:36:12:36:67 | call to render_to_string | app/controllers/foo/bars_controller.rb:36:29:36:33 | @user | +| app/controllers/foo/bars_controller.rb:38:5:38:50 | call to render | app/controllers/foo/bars_controller.rb:38:12:38:22 | call to backtrace | +| app/controllers/foo/bars_controller.rb:44:5:44:17 | call to render | app/controllers/foo/bars_controller.rb:44:12:44:17 | "show" | actionControllerHelperMethods getAssociatedControllerClasses +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/create.html.erb:0:0:0:0 | app/views/comments/create.html.erb | +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/destroy.html.erb:0:0:0:0 | app/views/comments/destroy.html.erb | +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/index.html.erb:0:0:0:0 | app/views/comments/index.html.erb | +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/show.html.erb:0:0:0:0 | app/views/comments/show.html.erb | +| app/controllers/photos_controller.rb:1:1:10:3 | PhotosController | app/views/photos/foo.html.erb:0:0:0:0 | app/views/photos/foo.html.erb | +| app/controllers/photos_controller.rb:1:1:10:3 | PhotosController | app/views/photos/show.html.erb:0:0:0:0 | app/views/photos/show.html.erb | +| app/controllers/posts_controller.rb:1:1:32:3 | PostsController | app/views/posts/index.html.erb:0:0:0:0 | app/views/posts/index.html.erb | +| app/controllers/posts_controller.rb:1:1:32:3 | PostsController | app/views/posts/show.html.erb:0:0:0:0 | app/views/posts/show.html.erb | +| app/controllers/posts_controller.rb:1:1:32:3 | PostsController | app/views/posts/upvote.html.erb:0:0:0:0 | app/views/posts/upvote.html.erb | controllerTemplateFiles +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/create.html.erb:0:0:0:0 | app/views/comments/create.html.erb | +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/destroy.html.erb:0:0:0:0 | app/views/comments/destroy.html.erb | +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/index.html.erb:0:0:0:0 | app/views/comments/index.html.erb | +| app/controllers/comments_controller.rb:1:1:104:3 | CommentsController | app/views/comments/show.html.erb:0:0:0:0 | app/views/comments/show.html.erb | +| app/controllers/photos_controller.rb:1:1:10:3 | PhotosController | app/views/photos/foo.html.erb:0:0:0:0 | app/views/photos/foo.html.erb | +| app/controllers/photos_controller.rb:1:1:10:3 | PhotosController | app/views/photos/show.html.erb:0:0:0:0 | app/views/photos/show.html.erb | +| app/controllers/posts_controller.rb:1:1:32:3 | PostsController | app/views/posts/index.html.erb:0:0:0:0 | app/views/posts/index.html.erb | +| app/controllers/posts_controller.rb:1:1:32:3 | PostsController | app/views/posts/show.html.erb:0:0:0:0 | app/views/posts/show.html.erb | +| app/controllers/posts_controller.rb:1:1:32:3 | PostsController | app/views/posts/upvote.html.erb:0:0:0:0 | app/views/posts/upvote.html.erb | headerWriteAccesses -| controllers/comments_controller.rb:30:5:30:35 | call to []= | content-type | controllers/comments_controller.rb:30:39:30:49 | ... = ... | -| controllers/comments_controller.rb:31:5:31:46 | call to set_header | content-length | controllers/comments_controller.rb:31:43:31:45 | 100 | -| controllers/comments_controller.rb:32:5:32:39 | call to []= | x-custom-header | controllers/comments_controller.rb:32:43:32:46 | ... = ... | -| controllers/comments_controller.rb:33:5:33:39 | call to []= | x-another-custom-header | controllers/comments_controller.rb:33:43:33:47 | ... = ... | -| controllers/comments_controller.rb:34:5:34:49 | call to add_header | x-yet-another | controllers/comments_controller.rb:34:42:34:49 | "indeed" | -| controllers/comments_controller.rb:40:5:40:21 | call to location= | location | controllers/comments_controller.rb:40:25:40:36 | ... = ... | -| controllers/comments_controller.rb:41:5:41:26 | call to cache_control= | cache-control | controllers/comments_controller.rb:41:30:41:36 | ... = ... | -| controllers/comments_controller.rb:42:5:42:27 | call to _cache_control= | cache-control | controllers/comments_controller.rb:42:31:42:37 | ... = ... | -| controllers/comments_controller.rb:43:5:43:17 | call to etag= | etag | controllers/comments_controller.rb:43:21:43:27 | ... = ... | -| controllers/comments_controller.rb:44:5:44:20 | call to charset= | content-type | controllers/comments_controller.rb:44:24:44:30 | ... = ... | -| controllers/comments_controller.rb:45:5:45:25 | call to content_type= | content-type | controllers/comments_controller.rb:45:29:45:35 | ... = ... | -| controllers/comments_controller.rb:47:5:47:17 | call to date= | date | controllers/comments_controller.rb:47:21:47:30 | ... = ... | -| controllers/comments_controller.rb:48:5:48:26 | call to last_modified= | last-modified | controllers/comments_controller.rb:48:30:48:43 | ... = ... | -| controllers/comments_controller.rb:49:5:49:22 | call to weak_etag= | etag | controllers/comments_controller.rb:49:26:49:32 | ... = ... | -| controllers/comments_controller.rb:50:5:50:24 | call to strong_etag= | etag | controllers/comments_controller.rb:50:28:50:34 | ... = ... | +| app/controllers/comments_controller.rb:30:5:30:35 | call to []= | content-type | app/controllers/comments_controller.rb:30:39:30:49 | ... = ... | +| app/controllers/comments_controller.rb:31:5:31:46 | call to set_header | content-length | app/controllers/comments_controller.rb:31:43:31:45 | 100 | +| app/controllers/comments_controller.rb:32:5:32:39 | call to []= | x-custom-header | app/controllers/comments_controller.rb:32:43:32:46 | ... = ... | +| app/controllers/comments_controller.rb:33:5:33:39 | call to []= | x-another-custom-header | app/controllers/comments_controller.rb:33:43:33:47 | ... = ... | +| app/controllers/comments_controller.rb:34:5:34:49 | call to add_header | x-yet-another | app/controllers/comments_controller.rb:34:42:34:49 | "indeed" | +| app/controllers/comments_controller.rb:40:5:40:21 | call to location= | location | app/controllers/comments_controller.rb:40:25:40:36 | ... = ... | +| app/controllers/comments_controller.rb:41:5:41:26 | call to cache_control= | cache-control | app/controllers/comments_controller.rb:41:30:41:36 | ... = ... | +| app/controllers/comments_controller.rb:42:5:42:27 | call to _cache_control= | cache-control | app/controllers/comments_controller.rb:42:31:42:37 | ... = ... | +| app/controllers/comments_controller.rb:43:5:43:17 | call to etag= | etag | app/controllers/comments_controller.rb:43:21:43:27 | ... = ... | +| app/controllers/comments_controller.rb:44:5:44:20 | call to charset= | content-type | app/controllers/comments_controller.rb:44:24:44:30 | ... = ... | +| app/controllers/comments_controller.rb:45:5:45:25 | call to content_type= | content-type | app/controllers/comments_controller.rb:45:29:45:35 | ... = ... | +| app/controllers/comments_controller.rb:47:5:47:17 | call to date= | date | app/controllers/comments_controller.rb:47:21:47:30 | ... = ... | +| app/controllers/comments_controller.rb:48:5:48:26 | call to last_modified= | last-modified | app/controllers/comments_controller.rb:48:30:48:43 | ... = ... | +| app/controllers/comments_controller.rb:49:5:49:22 | call to weak_etag= | etag | app/controllers/comments_controller.rb:49:26:49:32 | ... = ... | +| app/controllers/comments_controller.rb:50:5:50:24 | call to strong_etag= | etag | app/controllers/comments_controller.rb:50:28:50:34 | ... = ... | loggingCalls | logging.rb:3:9:3:31 | call to info | logging.rb:3:21:3:31 | "some info" | | logging.rb:4:9:4:31 | call to warn | logging.rb:4:21:4:31 | "a warning" | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/Filters.expected b/ruby/ql/test/library-tests/frameworks/action_controller/Filters.expected index 6bbab525a172..e25a8d9c66e1 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/Filters.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/Filters.expected @@ -1,95 +1,95 @@ additionalFlowSteps -| controllers/application_controller.rb:6:3:8:5 | self in set_user | controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | -| controllers/application_controller.rb:6:3:8:5 | self in set_user | controllers/comments_controller.rb:79:3:81:5 | self in set_comment | -| controllers/application_controller.rb:6:3:8:5 | self in set_user | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/application_controller.rb:6:3:8:5 | self in set_user | controllers/posts_controller.rb:12:3:15:5 | self in index | -| controllers/application_controller.rb:6:3:8:5 | self in set_user | controllers/posts_controller.rb:17:3:18:5 | self in show | -| controllers/application_controller.rb:6:3:8:5 | self in set_user | controllers/posts_controller.rb:20:3:21:5 | self in upvote | -| controllers/application_controller.rb:7:5:7:9 | [post] self | controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | -| controllers/application_controller.rb:7:5:7:9 | [post] self | controllers/comments_controller.rb:79:3:81:5 | self in set_comment | -| controllers/application_controller.rb:7:5:7:9 | [post] self | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/application_controller.rb:7:5:7:9 | [post] self | controllers/posts_controller.rb:12:3:15:5 | self in index | -| controllers/application_controller.rb:7:5:7:9 | [post] self | controllers/posts_controller.rb:17:3:18:5 | self in show | -| controllers/application_controller.rb:7:5:7:9 | [post] self | controllers/posts_controller.rb:20:3:21:5 | self in upvote | -| controllers/application_controller.rb:7:23:7:29 | [post] self | controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | -| controllers/application_controller.rb:7:23:7:29 | [post] self | controllers/comments_controller.rb:79:3:81:5 | self in set_comment | -| controllers/application_controller.rb:7:23:7:29 | [post] self | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/application_controller.rb:7:23:7:29 | [post] self | controllers/posts_controller.rb:12:3:15:5 | self in index | -| controllers/application_controller.rb:7:23:7:29 | [post] self | controllers/posts_controller.rb:17:3:18:5 | self in show | -| controllers/application_controller.rb:7:23:7:29 | [post] self | controllers/posts_controller.rb:20:3:21:5 | self in upvote | -| controllers/application_controller.rb:10:3:12:5 | self in log_request | controllers/application_controller.rb:6:3:8:5 | self in set_user | -| controllers/application_controller.rb:10:3:12:5 | self in log_request | controllers/photos_controller.rb:3:3:6:5 | self in show | -| controllers/application_controller.rb:10:3:12:5 | self in log_request | controllers/posts_controller.rb:25:3:27:5 | self in set_post | -| controllers/application_controller.rb:11:35:11:41 | [post] self | controllers/application_controller.rb:6:3:8:5 | self in set_user | -| controllers/application_controller.rb:11:35:11:41 | [post] self | controllers/photos_controller.rb:3:3:6:5 | self in show | -| controllers/application_controller.rb:11:35:11:41 | [post] self | controllers/posts_controller.rb:25:3:27:5 | self in set_post | -| controllers/application_controller.rb:11:53:11:59 | [post] self | controllers/application_controller.rb:6:3:8:5 | self in set_user | -| controllers/application_controller.rb:11:53:11:59 | [post] self | controllers/photos_controller.rb:3:3:6:5 | self in show | -| controllers/application_controller.rb:11:53:11:59 | [post] self | controllers/posts_controller.rb:25:3:27:5 | self in set_post | -| controllers/comments_controller.rb:17:3:51:5 | self in index | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:18:5:18:11 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:19:5:19:11 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:20:5:20:11 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:21:5:21:11 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:22:5:22:11 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:23:5:23:11 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:24:5:24:11 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:26:5:26:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:28:5:28:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:30:5:30:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:31:5:31:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:32:5:32:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:33:5:33:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:34:5:34:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:36:5:36:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:38:5:38:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:40:5:40:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:41:5:41:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:42:5:42:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:43:5:43:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:44:5:44:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:45:5:45:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:47:5:47:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:48:5:48:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:49:5:49:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:50:5:50:12 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:53:3:54:5 | self in create | controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | -| controllers/comments_controller.rb:56:3:62:5 | self in show | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:57:5:61:7 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:64:3:66:5 | self in photo | controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | -| controllers/comments_controller.rb:65:5:65:20 | [post] self | controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | -| controllers/comments_controller.rb:65:15:65:20 | [post] self | controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | -| controllers/comments_controller.rb:68:3:70:5 | self in destroy | controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | -| controllers/comments_controller.rb:69:12:69:18 | [post] self | controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | -| controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | controllers/comments_controller.rb:79:3:81:5 | self in set_comment | -| controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/comments_controller.rb:75:15:75:19 | [post] self | controllers/comments_controller.rb:79:3:81:5 | self in set_comment | -| controllers/comments_controller.rb:75:15:75:19 | [post] self | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/comments_controller.rb:76:5:76:68 | [post] self | controllers/comments_controller.rb:79:3:81:5 | self in set_comment | -| controllers/comments_controller.rb:76:5:76:68 | [post] self | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/comments_controller.rb:79:3:81:5 | self in set_comment | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/comments_controller.rb:80:5:80:12 | [post] self | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/comments_controller.rb:80:16:80:20 | [post] self | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/comments_controller.rb:80:36:80:41 | [post] self | controllers/comments_controller.rb:99:3:100:5 | self in foo | -| controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:84:45:84:49 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:84:61:84:68 | [post] self | controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | -| controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | controllers/comments_controller.rb:95:3:97:5 | self in this_must_run_last | -| controllers/comments_controller.rb:88:5:88:28 | [post] self | controllers/comments_controller.rb:95:3:97:5 | self in this_must_run_last | -| controllers/comments_controller.rb:91:3:93:5 | self in this_must_run_first | controllers/application_controller.rb:10:3:12:5 | self in log_request | -| controllers/comments_controller.rb:99:3:100:5 | self in foo | controllers/comments_controller.rb:102:3:103:5 | self in bar | -| controllers/comments_controller.rb:102:3:103:5 | self in bar | controllers/comments_controller.rb:17:3:51:5 | self in index | -| controllers/comments_controller.rb:102:3:103:5 | self in bar | controllers/comments_controller.rb:53:3:54:5 | self in create | -| controllers/comments_controller.rb:102:3:103:5 | self in bar | controllers/comments_controller.rb:56:3:62:5 | self in show | -| controllers/comments_controller.rb:102:3:103:5 | self in bar | controllers/comments_controller.rb:64:3:66:5 | self in photo | -| controllers/comments_controller.rb:102:3:103:5 | self in bar | controllers/comments_controller.rb:68:3:70:5 | self in destroy | -| controllers/photos_controller.rb:3:3:6:5 | self in show | controllers/photos_controller.rb:8:3:9:5 | self in foo | -| controllers/photos_controller.rb:4:5:4:6 | [post] self | controllers/photos_controller.rb:8:3:9:5 | self in foo | -| controllers/photos_controller.rb:5:5:5:6 | [post] self | controllers/photos_controller.rb:8:3:9:5 | self in foo | -| controllers/posts_controller.rb:20:3:21:5 | self in upvote | controllers/posts_controller.rb:29:3:31:5 | self in log_upvote | -| controllers/posts_controller.rb:25:3:27:5 | self in set_post | controllers/application_controller.rb:6:3:8:5 | self in set_user | -| controllers/posts_controller.rb:26:5:26:9 | [post] self | controllers/application_controller.rb:6:3:8:5 | self in set_user | -| controllers/posts_controller.rb:26:23:26:28 | [post] self | controllers/application_controller.rb:6:3:8:5 | self in set_user | +| app/controllers/application_controller.rb:6:3:8:5 | self in set_user | app/controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | +| app/controllers/application_controller.rb:6:3:8:5 | self in set_user | app/controllers/comments_controller.rb:79:3:81:5 | self in set_comment | +| app/controllers/application_controller.rb:6:3:8:5 | self in set_user | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/application_controller.rb:6:3:8:5 | self in set_user | app/controllers/posts_controller.rb:12:3:15:5 | self in index | +| app/controllers/application_controller.rb:6:3:8:5 | self in set_user | app/controllers/posts_controller.rb:17:3:18:5 | self in show | +| app/controllers/application_controller.rb:6:3:8:5 | self in set_user | app/controllers/posts_controller.rb:20:3:21:5 | self in upvote | +| app/controllers/application_controller.rb:7:5:7:9 | [post] self | app/controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | +| app/controllers/application_controller.rb:7:5:7:9 | [post] self | app/controllers/comments_controller.rb:79:3:81:5 | self in set_comment | +| app/controllers/application_controller.rb:7:5:7:9 | [post] self | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/application_controller.rb:7:5:7:9 | [post] self | app/controllers/posts_controller.rb:12:3:15:5 | self in index | +| app/controllers/application_controller.rb:7:5:7:9 | [post] self | app/controllers/posts_controller.rb:17:3:18:5 | self in show | +| app/controllers/application_controller.rb:7:5:7:9 | [post] self | app/controllers/posts_controller.rb:20:3:21:5 | self in upvote | +| app/controllers/application_controller.rb:7:23:7:29 | [post] self | app/controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | +| app/controllers/application_controller.rb:7:23:7:29 | [post] self | app/controllers/comments_controller.rb:79:3:81:5 | self in set_comment | +| app/controllers/application_controller.rb:7:23:7:29 | [post] self | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/application_controller.rb:7:23:7:29 | [post] self | app/controllers/posts_controller.rb:12:3:15:5 | self in index | +| app/controllers/application_controller.rb:7:23:7:29 | [post] self | app/controllers/posts_controller.rb:17:3:18:5 | self in show | +| app/controllers/application_controller.rb:7:23:7:29 | [post] self | app/controllers/posts_controller.rb:20:3:21:5 | self in upvote | +| app/controllers/application_controller.rb:10:3:12:5 | self in log_request | app/controllers/application_controller.rb:6:3:8:5 | self in set_user | +| app/controllers/application_controller.rb:10:3:12:5 | self in log_request | app/controllers/photos_controller.rb:3:3:6:5 | self in show | +| app/controllers/application_controller.rb:10:3:12:5 | self in log_request | app/controllers/posts_controller.rb:25:3:27:5 | self in set_post | +| app/controllers/application_controller.rb:11:35:11:41 | [post] self | app/controllers/application_controller.rb:6:3:8:5 | self in set_user | +| app/controllers/application_controller.rb:11:35:11:41 | [post] self | app/controllers/photos_controller.rb:3:3:6:5 | self in show | +| app/controllers/application_controller.rb:11:35:11:41 | [post] self | app/controllers/posts_controller.rb:25:3:27:5 | self in set_post | +| app/controllers/application_controller.rb:11:53:11:59 | [post] self | app/controllers/application_controller.rb:6:3:8:5 | self in set_user | +| app/controllers/application_controller.rb:11:53:11:59 | [post] self | app/controllers/photos_controller.rb:3:3:6:5 | self in show | +| app/controllers/application_controller.rb:11:53:11:59 | [post] self | app/controllers/posts_controller.rb:25:3:27:5 | self in set_post | +| app/controllers/comments_controller.rb:17:3:51:5 | self in index | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:18:5:18:11 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:19:5:19:11 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:20:5:20:11 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:21:5:21:11 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:22:5:22:11 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:23:5:23:11 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:24:5:24:11 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:26:5:26:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:28:5:28:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:30:5:30:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:31:5:31:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:32:5:32:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:33:5:33:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:34:5:34:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:36:5:36:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:38:5:38:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:40:5:40:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:41:5:41:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:42:5:42:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:43:5:43:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:44:5:44:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:45:5:45:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:47:5:47:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:48:5:48:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:49:5:49:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:50:5:50:12 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:53:3:54:5 | self in create | app/controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | +| app/controllers/comments_controller.rb:56:3:62:5 | self in show | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:57:5:61:7 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:64:3:66:5 | self in photo | app/controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | +| app/controllers/comments_controller.rb:65:5:65:20 | [post] self | app/controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | +| app/controllers/comments_controller.rb:65:15:65:20 | [post] self | app/controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | +| app/controllers/comments_controller.rb:68:3:70:5 | self in destroy | app/controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | +| app/controllers/comments_controller.rb:69:12:69:18 | [post] self | app/controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | +| app/controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | app/controllers/comments_controller.rb:79:3:81:5 | self in set_comment | +| app/controllers/comments_controller.rb:74:3:77:5 | self in ensure_user_can_edit_comments | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/comments_controller.rb:75:15:75:19 | [post] self | app/controllers/comments_controller.rb:79:3:81:5 | self in set_comment | +| app/controllers/comments_controller.rb:75:15:75:19 | [post] self | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/comments_controller.rb:76:5:76:68 | [post] self | app/controllers/comments_controller.rb:79:3:81:5 | self in set_comment | +| app/controllers/comments_controller.rb:76:5:76:68 | [post] self | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/comments_controller.rb:79:3:81:5 | self in set_comment | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/comments_controller.rb:80:5:80:12 | [post] self | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/comments_controller.rb:80:16:80:20 | [post] self | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/comments_controller.rb:80:36:80:41 | [post] self | app/controllers/comments_controller.rb:99:3:100:5 | self in foo | +| app/controllers/comments_controller.rb:83:3:85:5 | self in log_comment_change | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:84:45:84:49 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:84:61:84:68 | [post] self | app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | +| app/controllers/comments_controller.rb:87:3:89:5 | self in check_feature_flags | app/controllers/comments_controller.rb:95:3:97:5 | self in this_must_run_last | +| app/controllers/comments_controller.rb:88:5:88:28 | [post] self | app/controllers/comments_controller.rb:95:3:97:5 | self in this_must_run_last | +| app/controllers/comments_controller.rb:91:3:93:5 | self in this_must_run_first | app/controllers/application_controller.rb:10:3:12:5 | self in log_request | +| app/controllers/comments_controller.rb:99:3:100:5 | self in foo | app/controllers/comments_controller.rb:102:3:103:5 | self in bar | +| app/controllers/comments_controller.rb:102:3:103:5 | self in bar | app/controllers/comments_controller.rb:17:3:51:5 | self in index | +| app/controllers/comments_controller.rb:102:3:103:5 | self in bar | app/controllers/comments_controller.rb:53:3:54:5 | self in create | +| app/controllers/comments_controller.rb:102:3:103:5 | self in bar | app/controllers/comments_controller.rb:56:3:62:5 | self in show | +| app/controllers/comments_controller.rb:102:3:103:5 | self in bar | app/controllers/comments_controller.rb:64:3:66:5 | self in photo | +| app/controllers/comments_controller.rb:102:3:103:5 | self in bar | app/controllers/comments_controller.rb:68:3:70:5 | self in destroy | +| app/controllers/photos_controller.rb:3:3:6:5 | self in show | app/controllers/photos_controller.rb:8:3:9:5 | self in foo | +| app/controllers/photos_controller.rb:4:5:4:6 | [post] self | app/controllers/photos_controller.rb:8:3:9:5 | self in foo | +| app/controllers/photos_controller.rb:5:5:5:6 | [post] self | app/controllers/photos_controller.rb:8:3:9:5 | self in foo | +| app/controllers/posts_controller.rb:20:3:21:5 | self in upvote | app/controllers/posts_controller.rb:29:3:31:5 | self in log_upvote | +| app/controllers/posts_controller.rb:25:3:27:5 | self in set_post | app/controllers/application_controller.rb:6:3:8:5 | self in set_user | +| app/controllers/posts_controller.rb:26:5:26:9 | [post] self | app/controllers/application_controller.rb:6:3:8:5 | self in set_user | +| app/controllers/posts_controller.rb:26:23:26:28 | [post] self | app/controllers/application_controller.rb:6:3:8:5 | self in set_user | | filter_flow.rb:13:3:15:5 | self in a | filter_flow.rb:17:3:18:5 | self in b | | filter_flow.rb:14:5:14:8 | [post] self | filter_flow.rb:17:3:18:5 | self in b | | filter_flow.rb:14:12:14:17 | [post] self | filter_flow.rb:17:3:18:5 | self in b | @@ -112,59 +112,59 @@ additionalFlowSteps | filter_flow.rb:80:5:80:8 | [post] self | filter_flow.rb:83:3:84:5 | self in b | | filter_flow.rb:83:3:84:5 | self in b | filter_flow.rb:86:3:88:5 | self in c | filterChain -| controllers/comments_controller.rb:17:3:51:5 | index | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/comments_controller.rb:99:3:100:5 | foo | -| controllers/comments_controller.rb:17:3:51:5 | index | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/application_controller.rb:6:3:8:5 | set_user | -| controllers/comments_controller.rb:17:3:51:5 | index | controllers/comments_controller.rb:17:3:51:5 | index | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | -| controllers/comments_controller.rb:17:3:51:5 | index | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | -| controllers/comments_controller.rb:17:3:51:5 | index | controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | controllers/application_controller.rb:10:3:12:5 | log_request | -| controllers/comments_controller.rb:17:3:51:5 | index | controllers/comments_controller.rb:99:3:100:5 | foo | controllers/comments_controller.rb:102:3:103:5 | bar | -| controllers/comments_controller.rb:17:3:51:5 | index | controllers/comments_controller.rb:102:3:103:5 | bar | controllers/comments_controller.rb:17:3:51:5 | index | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/application_controller.rb:6:3:8:5 | set_user | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:83:3:85:5 | log_comment_change | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | controllers/comments_controller.rb:99:3:100:5 | foo | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:83:3:85:5 | log_comment_change | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | controllers/application_controller.rb:10:3:12:5 | log_request | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:99:3:100:5 | foo | controllers/comments_controller.rb:102:3:103:5 | bar | -| controllers/comments_controller.rb:53:3:54:5 | create | controllers/comments_controller.rb:102:3:103:5 | bar | controllers/comments_controller.rb:53:3:54:5 | create | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/comments_controller.rb:79:3:81:5 | set_comment | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/application_controller.rb:6:3:8:5 | set_user | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/comments_controller.rb:56:3:62:5 | show | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/comments_controller.rb:79:3:81:5 | set_comment | controllers/comments_controller.rb:99:3:100:5 | foo | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | controllers/application_controller.rb:10:3:12:5 | log_request | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/comments_controller.rb:99:3:100:5 | foo | controllers/comments_controller.rb:102:3:103:5 | bar | -| controllers/comments_controller.rb:56:3:62:5 | show | controllers/comments_controller.rb:102:3:103:5 | bar | controllers/comments_controller.rb:56:3:62:5 | show | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/comments_controller.rb:99:3:100:5 | foo | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/application_controller.rb:6:3:8:5 | set_user | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/comments_controller.rb:64:3:66:5 | photo | controllers/comments_controller.rb:83:3:85:5 | log_comment_change | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/comments_controller.rb:83:3:85:5 | log_comment_change | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | controllers/application_controller.rb:10:3:12:5 | log_request | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/comments_controller.rb:99:3:100:5 | foo | controllers/comments_controller.rb:102:3:103:5 | bar | -| controllers/comments_controller.rb:64:3:66:5 | photo | controllers/comments_controller.rb:102:3:103:5 | bar | controllers/comments_controller.rb:64:3:66:5 | photo | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/application_controller.rb:6:3:8:5 | set_user | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:83:3:85:5 | log_comment_change | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | controllers/comments_controller.rb:79:3:81:5 | set_comment | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:79:3:81:5 | set_comment | controllers/comments_controller.rb:99:3:100:5 | foo | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:83:3:85:5 | log_comment_change | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | controllers/application_controller.rb:10:3:12:5 | log_request | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:99:3:100:5 | foo | controllers/comments_controller.rb:102:3:103:5 | bar | -| controllers/comments_controller.rb:68:3:70:5 | destroy | controllers/comments_controller.rb:102:3:103:5 | bar | controllers/comments_controller.rb:68:3:70:5 | destroy | -| controllers/photos_controller.rb:3:3:6:5 | show | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/photos_controller.rb:3:3:6:5 | show | -| controllers/photos_controller.rb:3:3:6:5 | show | controllers/photos_controller.rb:3:3:6:5 | show | controllers/photos_controller.rb:8:3:9:5 | foo | -| controllers/posts_controller.rb:12:3:15:5 | index | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/posts_controller.rb:12:3:15:5 | index | -| controllers/posts_controller.rb:12:3:15:5 | index | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/application_controller.rb:6:3:8:5 | set_user | -| controllers/posts_controller.rb:17:3:18:5 | show | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/posts_controller.rb:17:3:18:5 | show | -| controllers/posts_controller.rb:17:3:18:5 | show | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/posts_controller.rb:25:3:27:5 | set_post | -| controllers/posts_controller.rb:17:3:18:5 | show | controllers/posts_controller.rb:25:3:27:5 | set_post | controllers/application_controller.rb:6:3:8:5 | set_user | -| controllers/posts_controller.rb:20:3:21:5 | upvote | controllers/application_controller.rb:6:3:8:5 | set_user | controllers/posts_controller.rb:20:3:21:5 | upvote | -| controllers/posts_controller.rb:20:3:21:5 | upvote | controllers/application_controller.rb:10:3:12:5 | log_request | controllers/posts_controller.rb:25:3:27:5 | set_post | -| controllers/posts_controller.rb:20:3:21:5 | upvote | controllers/posts_controller.rb:20:3:21:5 | upvote | controllers/posts_controller.rb:29:3:31:5 | log_upvote | -| controllers/posts_controller.rb:20:3:21:5 | upvote | controllers/posts_controller.rb:25:3:27:5 | set_post | controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/comments_controller.rb:99:3:100:5 | foo | +| app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | +| app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | app/controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | +| app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | app/controllers/application_controller.rb:10:3:12:5 | log_request | +| app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/comments_controller.rb:99:3:100:5 | foo | app/controllers/comments_controller.rb:102:3:103:5 | bar | +| app/controllers/comments_controller.rb:17:3:51:5 | index | app/controllers/comments_controller.rb:102:3:103:5 | bar | app/controllers/comments_controller.rb:17:3:51:5 | index | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:83:3:85:5 | log_comment_change | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | app/controllers/comments_controller.rb:99:3:100:5 | foo | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:83:3:85:5 | log_comment_change | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | app/controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | app/controllers/application_controller.rb:10:3:12:5 | log_request | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:99:3:100:5 | foo | app/controllers/comments_controller.rb:102:3:103:5 | bar | +| app/controllers/comments_controller.rb:53:3:54:5 | create | app/controllers/comments_controller.rb:102:3:103:5 | bar | app/controllers/comments_controller.rb:53:3:54:5 | create | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/comments_controller.rb:79:3:81:5 | set_comment | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/comments_controller.rb:79:3:81:5 | set_comment | app/controllers/comments_controller.rb:99:3:100:5 | foo | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | app/controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | app/controllers/application_controller.rb:10:3:12:5 | log_request | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/comments_controller.rb:99:3:100:5 | foo | app/controllers/comments_controller.rb:102:3:103:5 | bar | +| app/controllers/comments_controller.rb:56:3:62:5 | show | app/controllers/comments_controller.rb:102:3:103:5 | bar | app/controllers/comments_controller.rb:56:3:62:5 | show | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/comments_controller.rb:99:3:100:5 | foo | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/comments_controller.rb:83:3:85:5 | log_comment_change | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/comments_controller.rb:83:3:85:5 | log_comment_change | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | app/controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | app/controllers/application_controller.rb:10:3:12:5 | log_request | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/comments_controller.rb:99:3:100:5 | foo | app/controllers/comments_controller.rb:102:3:103:5 | bar | +| app/controllers/comments_controller.rb:64:3:66:5 | photo | app/controllers/comments_controller.rb:102:3:103:5 | bar | app/controllers/comments_controller.rb:64:3:66:5 | photo | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:83:3:85:5 | log_comment_change | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:74:3:77:5 | ensure_user_can_edit_comments | app/controllers/comments_controller.rb:79:3:81:5 | set_comment | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:79:3:81:5 | set_comment | app/controllers/comments_controller.rb:99:3:100:5 | foo | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:83:3:85:5 | log_comment_change | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:87:3:89:5 | check_feature_flags | app/controllers/comments_controller.rb:95:3:97:5 | this_must_run_last | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:91:3:93:5 | this_must_run_first | app/controllers/application_controller.rb:10:3:12:5 | log_request | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:99:3:100:5 | foo | app/controllers/comments_controller.rb:102:3:103:5 | bar | +| app/controllers/comments_controller.rb:68:3:70:5 | destroy | app/controllers/comments_controller.rb:102:3:103:5 | bar | app/controllers/comments_controller.rb:68:3:70:5 | destroy | +| app/controllers/photos_controller.rb:3:3:6:5 | show | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/photos_controller.rb:3:3:6:5 | show | +| app/controllers/photos_controller.rb:3:3:6:5 | show | app/controllers/photos_controller.rb:3:3:6:5 | show | app/controllers/photos_controller.rb:8:3:9:5 | foo | +| app/controllers/posts_controller.rb:12:3:15:5 | index | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/posts_controller.rb:12:3:15:5 | index | +| app/controllers/posts_controller.rb:12:3:15:5 | index | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/posts_controller.rb:17:3:18:5 | show | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/posts_controller.rb:17:3:18:5 | show | +| app/controllers/posts_controller.rb:17:3:18:5 | show | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/posts_controller.rb:25:3:27:5 | set_post | +| app/controllers/posts_controller.rb:17:3:18:5 | show | app/controllers/posts_controller.rb:25:3:27:5 | set_post | app/controllers/application_controller.rb:6:3:8:5 | set_user | +| app/controllers/posts_controller.rb:20:3:21:5 | upvote | app/controllers/application_controller.rb:6:3:8:5 | set_user | app/controllers/posts_controller.rb:20:3:21:5 | upvote | +| app/controllers/posts_controller.rb:20:3:21:5 | upvote | app/controllers/application_controller.rb:10:3:12:5 | log_request | app/controllers/posts_controller.rb:25:3:27:5 | set_post | +| app/controllers/posts_controller.rb:20:3:21:5 | upvote | app/controllers/posts_controller.rb:20:3:21:5 | upvote | app/controllers/posts_controller.rb:29:3:31:5 | log_upvote | +| app/controllers/posts_controller.rb:20:3:21:5 | upvote | app/controllers/posts_controller.rb:25:3:27:5 | set_post | app/controllers/application_controller.rb:6:3:8:5 | set_user | | filter_flow.rb:17:3:18:5 | b | filter_flow.rb:13:3:15:5 | a | filter_flow.rb:17:3:18:5 | b | | filter_flow.rb:17:3:18:5 | b | filter_flow.rb:17:3:18:5 | b | filter_flow.rb:20:3:22:5 | c | | filter_flow.rb:33:3:35:5 | b | filter_flow.rb:29:3:31:5 | a | filter_flow.rb:33:3:35:5 | b | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/controllers/application_controller.rb b/ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/application_controller.rb similarity index 100% rename from ruby/ql/test/library-tests/frameworks/action_controller/controllers/application_controller.rb rename to ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/application_controller.rb diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/controllers/comments_controller.rb b/ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/comments_controller.rb similarity index 100% rename from ruby/ql/test/library-tests/frameworks/action_controller/controllers/comments_controller.rb rename to ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/comments_controller.rb diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/controllers/foo/bars_controller.rb b/ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/foo/bars_controller.rb similarity index 100% rename from ruby/ql/test/library-tests/frameworks/action_controller/controllers/foo/bars_controller.rb rename to ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/foo/bars_controller.rb diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/controllers/photos_controller.rb b/ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/photos_controller.rb similarity index 100% rename from ruby/ql/test/library-tests/frameworks/action_controller/controllers/photos_controller.rb rename to ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/photos_controller.rb diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/controllers/posts_controller.rb b/ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/posts_controller.rb similarity index 100% rename from ruby/ql/test/library-tests/frameworks/action_controller/controllers/posts_controller.rb rename to ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/posts_controller.rb diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/controllers/tags_controller.rb b/ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/tags_controller.rb similarity index 100% rename from ruby/ql/test/library-tests/frameworks/action_controller/controllers/tags_controller.rb rename to ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/tags_controller.rb diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/controllers/users/notifications_controller.rb b/ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/users/notifications_controller.rb similarity index 100% rename from ruby/ql/test/library-tests/frameworks/action_controller/controllers/users/notifications_controller.rb rename to ruby/ql/test/library-tests/frameworks/action_controller/app/controllers/users/notifications_controller.rb diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/create.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/create.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/destroy.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/destroy.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/index.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/index.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/show.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/show.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/notifications/mark_as_read.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/notifications/mark_as_read.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/photos/foo.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/photos/foo.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/photos/show.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/photos/show.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/index.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/index.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/show.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/show.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/upvote.html.erb b/ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/upvote.html.erb new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected index a0349ec9ee33..69946539384b 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected @@ -5,102 +5,102 @@ testFailures | filter_flow.rb:71:10:71:17 | call to bar | Unexpected result: hasTaintFlow= | | filter_flow.rb:87:11:87:14 | @foo | Unexpected result: hasTaintFlow= | edges -| filter_flow.rb:14:5:14:8 | [post] self [@foo] | filter_flow.rb:17:3:18:5 | self in b [@foo] | -| filter_flow.rb:14:12:14:17 | call to params | filter_flow.rb:14:12:14:23 | ...[...] | -| filter_flow.rb:14:12:14:23 | ...[...] | filter_flow.rb:14:5:14:8 | [post] self [@foo] | -| filter_flow.rb:17:3:18:5 | self in b [@foo] | filter_flow.rb:20:3:22:5 | self in c [@foo] | -| filter_flow.rb:20:3:22:5 | self in c [@foo] | filter_flow.rb:21:10:21:13 | self [@foo] | -| filter_flow.rb:21:10:21:13 | self [@foo] | filter_flow.rb:21:10:21:13 | @foo | -| filter_flow.rb:30:5:30:8 | [post] self [@foo] | filter_flow.rb:33:3:35:5 | self in b [@foo] | -| filter_flow.rb:30:12:30:17 | call to params | filter_flow.rb:30:12:30:23 | ...[...] | -| filter_flow.rb:30:12:30:23 | ...[...] | filter_flow.rb:30:5:30:8 | [post] self [@foo] | -| filter_flow.rb:33:3:35:5 | self in b [@foo] | filter_flow.rb:37:3:39:5 | self in c [@foo] | -| filter_flow.rb:37:3:39:5 | self in c [@foo] | filter_flow.rb:38:10:38:13 | self [@foo] | -| filter_flow.rb:38:10:38:13 | self [@foo] | filter_flow.rb:38:10:38:13 | @foo | -| filter_flow.rb:47:5:47:8 | [post] self [@foo] | filter_flow.rb:51:3:52:5 | self in b [@foo] | -| filter_flow.rb:47:12:47:17 | call to params | filter_flow.rb:47:12:47:23 | ...[...] | -| filter_flow.rb:47:12:47:23 | ...[...] | filter_flow.rb:47:5:47:8 | [post] self [@foo] | -| filter_flow.rb:51:3:52:5 | self in b [@foo] | filter_flow.rb:54:3:56:5 | self in c [@foo] | -| filter_flow.rb:54:3:56:5 | self in c [@foo] | filter_flow.rb:55:10:55:13 | self [@foo] | -| filter_flow.rb:55:10:55:13 | self [@foo] | filter_flow.rb:55:10:55:13 | @foo | -| filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | filter_flow.rb:64:5:64:8 | [post] self [@foo, @bar] | -| filter_flow.rb:64:5:64:8 | [post] self [@foo, @bar] | filter_flow.rb:67:3:68:5 | self in b [@foo, @bar] | -| filter_flow.rb:64:16:64:21 | call to params | filter_flow.rb:64:16:64:27 | ...[...] | -| filter_flow.rb:64:16:64:27 | ...[...] | filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | -| filter_flow.rb:67:3:68:5 | self in b [@foo, @bar] | filter_flow.rb:70:3:72:5 | self in c [@foo, @bar] | -| filter_flow.rb:70:3:72:5 | self in c [@foo, @bar] | filter_flow.rb:71:10:71:13 | self [@foo, @bar] | -| filter_flow.rb:71:10:71:13 | @foo [@bar] | filter_flow.rb:71:10:71:17 | call to bar | -| filter_flow.rb:71:10:71:13 | self [@foo, @bar] | filter_flow.rb:71:10:71:13 | @foo [@bar] | -| filter_flow.rb:80:5:80:8 | [post] self [@foo] | filter_flow.rb:83:3:84:5 | self in b [@foo] | -| filter_flow.rb:83:3:84:5 | self in b [@foo] | filter_flow.rb:86:3:88:5 | self in c [@foo] | -| filter_flow.rb:86:3:88:5 | self in c [@foo] | filter_flow.rb:87:11:87:14 | self [@foo] | -| filter_flow.rb:87:11:87:14 | self [@foo] | filter_flow.rb:87:11:87:14 | @foo | -| filter_flow.rb:91:5:91:8 | [post] self [@foo] | filter_flow.rb:80:5:80:8 | [post] self [@foo] | -| filter_flow.rb:91:12:91:17 | call to params | filter_flow.rb:91:12:91:23 | ...[...] | -| filter_flow.rb:91:12:91:23 | ...[...] | filter_flow.rb:91:5:91:8 | [post] self [@foo] | -| params_flow.rb:3:10:3:15 | call to params | params_flow.rb:3:10:3:19 | ...[...] | -| params_flow.rb:7:10:7:15 | call to params | params_flow.rb:7:10:7:23 | call to as_json | -| params_flow.rb:15:10:15:15 | call to params | params_flow.rb:15:10:15:33 | call to permit | -| params_flow.rb:19:10:19:15 | call to params | params_flow.rb:19:10:19:34 | call to require | -| params_flow.rb:23:10:23:15 | call to params | params_flow.rb:23:10:23:35 | call to required | -| params_flow.rb:27:10:27:15 | call to params | params_flow.rb:27:10:27:24 | call to deep_dup | -| params_flow.rb:31:10:31:15 | call to params | params_flow.rb:31:10:31:45 | call to deep_transform_keys | -| params_flow.rb:35:10:35:15 | call to params | params_flow.rb:35:10:35:46 | call to deep_transform_keys! | -| params_flow.rb:39:10:39:15 | call to params | params_flow.rb:39:10:39:48 | call to delete_if | -| params_flow.rb:43:10:43:15 | call to params | params_flow.rb:43:10:43:32 | call to extract! | -| params_flow.rb:47:10:47:15 | call to params | params_flow.rb:47:10:47:46 | call to keep_if | -| params_flow.rb:51:10:51:15 | call to params | params_flow.rb:51:10:51:45 | call to select | -| params_flow.rb:55:10:55:15 | call to params | params_flow.rb:55:10:55:46 | call to select! | -| params_flow.rb:59:10:59:15 | call to params | params_flow.rb:59:10:59:45 | call to reject | -| params_flow.rb:63:10:63:15 | call to params | params_flow.rb:63:10:63:46 | call to reject! | -| params_flow.rb:67:10:67:15 | call to params | params_flow.rb:67:10:67:20 | call to to_h | -| params_flow.rb:71:10:71:15 | call to params | params_flow.rb:71:10:71:23 | call to to_hash | -| params_flow.rb:75:10:75:15 | call to params | params_flow.rb:75:10:75:24 | call to to_query | -| params_flow.rb:79:10:79:15 | call to params | params_flow.rb:79:10:79:24 | call to to_param | -| params_flow.rb:83:10:83:15 | call to params | params_flow.rb:83:10:83:27 | call to to_unsafe_h | -| params_flow.rb:87:10:87:15 | call to params | params_flow.rb:87:10:87:30 | call to to_unsafe_hash | -| params_flow.rb:91:10:91:15 | call to params | params_flow.rb:91:10:91:40 | call to transform_keys | -| params_flow.rb:91:10:91:15 | call to params | params_flow.rb:91:10:91:40 | call to transform_keys [element] | -| params_flow.rb:91:10:91:40 | call to transform_keys [element] | params_flow.rb:91:10:91:40 | call to transform_keys | -| params_flow.rb:95:10:95:15 | call to params | params_flow.rb:95:10:95:41 | call to transform_keys! | -| params_flow.rb:99:10:99:15 | call to params | params_flow.rb:99:10:99:42 | call to transform_values | -| params_flow.rb:103:10:103:15 | call to params | params_flow.rb:103:10:103:43 | call to transform_values! | -| params_flow.rb:107:10:107:15 | call to params | params_flow.rb:107:10:107:33 | call to values_at | -| params_flow.rb:107:10:107:15 | call to params | params_flow.rb:107:10:107:33 | call to values_at [element 0] | -| params_flow.rb:107:10:107:15 | call to params | params_flow.rb:107:10:107:33 | call to values_at [element 1] | -| params_flow.rb:107:10:107:33 | call to values_at [element 0] | params_flow.rb:107:10:107:33 | call to values_at | -| params_flow.rb:107:10:107:33 | call to values_at [element 1] | params_flow.rb:107:10:107:33 | call to values_at | -| params_flow.rb:111:10:111:15 | call to params | params_flow.rb:111:10:111:29 | call to merge | -| params_flow.rb:112:10:112:29 | call to merge [splat position 0] | params_flow.rb:112:10:112:29 | call to merge | -| params_flow.rb:112:23:112:28 | call to params | params_flow.rb:112:10:112:29 | call to merge | -| params_flow.rb:112:23:112:28 | call to params | params_flow.rb:112:10:112:29 | call to merge [splat position 0] | -| params_flow.rb:116:10:116:15 | call to params | params_flow.rb:116:10:116:37 | call to reverse_merge | -| params_flow.rb:117:31:117:36 | call to params | params_flow.rb:117:10:117:37 | call to reverse_merge | -| params_flow.rb:121:10:121:15 | call to params | params_flow.rb:121:10:121:43 | call to with_defaults | -| params_flow.rb:122:31:122:36 | call to params | params_flow.rb:122:10:122:37 | call to with_defaults | -| params_flow.rb:126:10:126:15 | call to params | params_flow.rb:126:10:126:30 | call to merge! | -| params_flow.rb:127:10:127:30 | call to merge! [splat position 0] | params_flow.rb:127:10:127:30 | call to merge! | -| params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! | -| params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! [splat position 0] | -| params_flow.rb:130:5:130:5 | [post] p | params_flow.rb:131:10:131:10 | p | -| params_flow.rb:130:5:130:5 | [post] p [splat position 0] | params_flow.rb:131:10:131:10 | p | -| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p | -| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p [splat position 0] | -| params_flow.rb:135:10:135:15 | call to params | params_flow.rb:135:10:135:38 | call to reverse_merge! | -| params_flow.rb:136:32:136:37 | call to params | params_flow.rb:136:10:136:38 | call to reverse_merge! | -| params_flow.rb:139:5:139:5 | [post] p | params_flow.rb:140:10:140:10 | p | -| params_flow.rb:139:22:139:27 | call to params | params_flow.rb:139:5:139:5 | [post] p | -| params_flow.rb:144:10:144:15 | call to params | params_flow.rb:144:10:144:44 | call to with_defaults! | -| params_flow.rb:145:32:145:37 | call to params | params_flow.rb:145:10:145:38 | call to with_defaults! | -| params_flow.rb:148:5:148:5 | [post] p | params_flow.rb:149:10:149:10 | p | -| params_flow.rb:148:22:148:27 | call to params | params_flow.rb:148:5:148:5 | [post] p | -| params_flow.rb:153:10:153:15 | call to params | params_flow.rb:153:10:153:44 | call to reverse_update | -| params_flow.rb:154:32:154:37 | call to params | params_flow.rb:154:10:154:38 | call to reverse_update | -| params_flow.rb:157:5:157:5 | [post] p | params_flow.rb:158:10:158:10 | p | -| params_flow.rb:157:22:157:27 | call to params | params_flow.rb:157:5:157:5 | [post] p | -| params_flow.rb:166:10:166:15 | call to params | params_flow.rb:166:10:166:19 | ...[...] | -| params_flow.rb:172:10:172:15 | call to params | params_flow.rb:172:10:172:19 | ...[...] | -| params_flow.rb:176:10:176:15 | call to params | params_flow.rb:176:10:176:19 | ...[...] | +| filter_flow.rb:14:5:14:8 | [post] self [@foo] | filter_flow.rb:17:3:18:5 | self in b [@foo] | provenance | | +| filter_flow.rb:14:12:14:17 | call to params | filter_flow.rb:14:12:14:23 | ...[...] | provenance | | +| filter_flow.rb:14:12:14:23 | ...[...] | filter_flow.rb:14:5:14:8 | [post] self [@foo] | provenance | | +| filter_flow.rb:17:3:18:5 | self in b [@foo] | filter_flow.rb:20:3:22:5 | self in c [@foo] | provenance | | +| filter_flow.rb:20:3:22:5 | self in c [@foo] | filter_flow.rb:21:10:21:13 | self [@foo] | provenance | | +| filter_flow.rb:21:10:21:13 | self [@foo] | filter_flow.rb:21:10:21:13 | @foo | provenance | | +| filter_flow.rb:30:5:30:8 | [post] self [@foo] | filter_flow.rb:33:3:35:5 | self in b [@foo] | provenance | | +| filter_flow.rb:30:12:30:17 | call to params | filter_flow.rb:30:12:30:23 | ...[...] | provenance | | +| filter_flow.rb:30:12:30:23 | ...[...] | filter_flow.rb:30:5:30:8 | [post] self [@foo] | provenance | | +| filter_flow.rb:33:3:35:5 | self in b [@foo] | filter_flow.rb:37:3:39:5 | self in c [@foo] | provenance | | +| filter_flow.rb:37:3:39:5 | self in c [@foo] | filter_flow.rb:38:10:38:13 | self [@foo] | provenance | | +| filter_flow.rb:38:10:38:13 | self [@foo] | filter_flow.rb:38:10:38:13 | @foo | provenance | | +| filter_flow.rb:47:5:47:8 | [post] self [@foo] | filter_flow.rb:51:3:52:5 | self in b [@foo] | provenance | | +| filter_flow.rb:47:12:47:17 | call to params | filter_flow.rb:47:12:47:23 | ...[...] | provenance | | +| filter_flow.rb:47:12:47:23 | ...[...] | filter_flow.rb:47:5:47:8 | [post] self [@foo] | provenance | | +| filter_flow.rb:51:3:52:5 | self in b [@foo] | filter_flow.rb:54:3:56:5 | self in c [@foo] | provenance | | +| filter_flow.rb:54:3:56:5 | self in c [@foo] | filter_flow.rb:55:10:55:13 | self [@foo] | provenance | | +| filter_flow.rb:55:10:55:13 | self [@foo] | filter_flow.rb:55:10:55:13 | @foo | provenance | | +| filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | filter_flow.rb:64:5:64:8 | [post] self [@foo, @bar] | provenance | | +| filter_flow.rb:64:5:64:8 | [post] self [@foo, @bar] | filter_flow.rb:67:3:68:5 | self in b [@foo, @bar] | provenance | | +| filter_flow.rb:64:16:64:21 | call to params | filter_flow.rb:64:16:64:27 | ...[...] | provenance | | +| filter_flow.rb:64:16:64:27 | ...[...] | filter_flow.rb:64:5:64:8 | [post] @foo [@bar] | provenance | | +| filter_flow.rb:67:3:68:5 | self in b [@foo, @bar] | filter_flow.rb:70:3:72:5 | self in c [@foo, @bar] | provenance | | +| filter_flow.rb:70:3:72:5 | self in c [@foo, @bar] | filter_flow.rb:71:10:71:13 | self [@foo, @bar] | provenance | | +| filter_flow.rb:71:10:71:13 | @foo [@bar] | filter_flow.rb:71:10:71:17 | call to bar | provenance | | +| filter_flow.rb:71:10:71:13 | self [@foo, @bar] | filter_flow.rb:71:10:71:13 | @foo [@bar] | provenance | | +| filter_flow.rb:80:5:80:8 | [post] self [@foo] | filter_flow.rb:83:3:84:5 | self in b [@foo] | provenance | | +| filter_flow.rb:83:3:84:5 | self in b [@foo] | filter_flow.rb:86:3:88:5 | self in c [@foo] | provenance | | +| filter_flow.rb:86:3:88:5 | self in c [@foo] | filter_flow.rb:87:11:87:14 | self [@foo] | provenance | | +| filter_flow.rb:87:11:87:14 | self [@foo] | filter_flow.rb:87:11:87:14 | @foo | provenance | | +| filter_flow.rb:91:5:91:8 | [post] self [@foo] | filter_flow.rb:80:5:80:8 | [post] self [@foo] | provenance | | +| filter_flow.rb:91:12:91:17 | call to params | filter_flow.rb:91:12:91:23 | ...[...] | provenance | | +| filter_flow.rb:91:12:91:23 | ...[...] | filter_flow.rb:91:5:91:8 | [post] self [@foo] | provenance | | +| params_flow.rb:3:10:3:15 | call to params | params_flow.rb:3:10:3:19 | ...[...] | provenance | | +| params_flow.rb:7:10:7:15 | call to params | params_flow.rb:7:10:7:23 | call to as_json | provenance | | +| params_flow.rb:15:10:15:15 | call to params | params_flow.rb:15:10:15:33 | call to permit | provenance | | +| params_flow.rb:19:10:19:15 | call to params | params_flow.rb:19:10:19:34 | call to require | provenance | | +| params_flow.rb:23:10:23:15 | call to params | params_flow.rb:23:10:23:35 | call to required | provenance | | +| params_flow.rb:27:10:27:15 | call to params | params_flow.rb:27:10:27:24 | call to deep_dup | provenance | | +| params_flow.rb:31:10:31:15 | call to params | params_flow.rb:31:10:31:45 | call to deep_transform_keys | provenance | | +| params_flow.rb:35:10:35:15 | call to params | params_flow.rb:35:10:35:46 | call to deep_transform_keys! | provenance | | +| params_flow.rb:39:10:39:15 | call to params | params_flow.rb:39:10:39:48 | call to delete_if | provenance | | +| params_flow.rb:43:10:43:15 | call to params | params_flow.rb:43:10:43:32 | call to extract! | provenance | | +| params_flow.rb:47:10:47:15 | call to params | params_flow.rb:47:10:47:46 | call to keep_if | provenance | | +| params_flow.rb:51:10:51:15 | call to params | params_flow.rb:51:10:51:45 | call to select | provenance | | +| params_flow.rb:55:10:55:15 | call to params | params_flow.rb:55:10:55:46 | call to select! | provenance | | +| params_flow.rb:59:10:59:15 | call to params | params_flow.rb:59:10:59:45 | call to reject | provenance | | +| params_flow.rb:63:10:63:15 | call to params | params_flow.rb:63:10:63:46 | call to reject! | provenance | | +| params_flow.rb:67:10:67:15 | call to params | params_flow.rb:67:10:67:20 | call to to_h | provenance | | +| params_flow.rb:71:10:71:15 | call to params | params_flow.rb:71:10:71:23 | call to to_hash | provenance | | +| params_flow.rb:75:10:75:15 | call to params | params_flow.rb:75:10:75:24 | call to to_query | provenance | | +| params_flow.rb:79:10:79:15 | call to params | params_flow.rb:79:10:79:24 | call to to_param | provenance | | +| params_flow.rb:83:10:83:15 | call to params | params_flow.rb:83:10:83:27 | call to to_unsafe_h | provenance | | +| params_flow.rb:87:10:87:15 | call to params | params_flow.rb:87:10:87:30 | call to to_unsafe_hash | provenance | | +| params_flow.rb:91:10:91:15 | call to params | params_flow.rb:91:10:91:40 | call to transform_keys | provenance | | +| params_flow.rb:91:10:91:15 | call to params | params_flow.rb:91:10:91:40 | call to transform_keys [element] | provenance | | +| params_flow.rb:91:10:91:40 | call to transform_keys [element] | params_flow.rb:91:10:91:40 | call to transform_keys | provenance | | +| params_flow.rb:95:10:95:15 | call to params | params_flow.rb:95:10:95:41 | call to transform_keys! | provenance | | +| params_flow.rb:99:10:99:15 | call to params | params_flow.rb:99:10:99:42 | call to transform_values | provenance | | +| params_flow.rb:103:10:103:15 | call to params | params_flow.rb:103:10:103:43 | call to transform_values! | provenance | | +| params_flow.rb:107:10:107:15 | call to params | params_flow.rb:107:10:107:33 | call to values_at | provenance | | +| params_flow.rb:107:10:107:15 | call to params | params_flow.rb:107:10:107:33 | call to values_at [element 0] | provenance | | +| params_flow.rb:107:10:107:15 | call to params | params_flow.rb:107:10:107:33 | call to values_at [element 1] | provenance | | +| params_flow.rb:107:10:107:33 | call to values_at [element 0] | params_flow.rb:107:10:107:33 | call to values_at | provenance | | +| params_flow.rb:107:10:107:33 | call to values_at [element 1] | params_flow.rb:107:10:107:33 | call to values_at | provenance | | +| params_flow.rb:111:10:111:15 | call to params | params_flow.rb:111:10:111:29 | call to merge | provenance | | +| params_flow.rb:112:10:112:29 | call to merge [splat position 0] | params_flow.rb:112:10:112:29 | call to merge | provenance | | +| params_flow.rb:112:23:112:28 | call to params | params_flow.rb:112:10:112:29 | call to merge | provenance | | +| params_flow.rb:112:23:112:28 | call to params | params_flow.rb:112:10:112:29 | call to merge [splat position 0] | provenance | | +| params_flow.rb:116:10:116:15 | call to params | params_flow.rb:116:10:116:37 | call to reverse_merge | provenance | | +| params_flow.rb:117:31:117:36 | call to params | params_flow.rb:117:10:117:37 | call to reverse_merge | provenance | | +| params_flow.rb:121:10:121:15 | call to params | params_flow.rb:121:10:121:43 | call to with_defaults | provenance | | +| params_flow.rb:122:31:122:36 | call to params | params_flow.rb:122:10:122:37 | call to with_defaults | provenance | | +| params_flow.rb:126:10:126:15 | call to params | params_flow.rb:126:10:126:30 | call to merge! | provenance | | +| params_flow.rb:127:10:127:30 | call to merge! [splat position 0] | params_flow.rb:127:10:127:30 | call to merge! | provenance | | +| params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! | provenance | | +| params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! [splat position 0] | provenance | | +| params_flow.rb:130:5:130:5 | [post] p | params_flow.rb:131:10:131:10 | p | provenance | | +| params_flow.rb:130:5:130:5 | [post] p [splat position 0] | params_flow.rb:131:10:131:10 | p | provenance | | +| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p | provenance | | +| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p [splat position 0] | provenance | | +| params_flow.rb:135:10:135:15 | call to params | params_flow.rb:135:10:135:38 | call to reverse_merge! | provenance | | +| params_flow.rb:136:32:136:37 | call to params | params_flow.rb:136:10:136:38 | call to reverse_merge! | provenance | | +| params_flow.rb:139:5:139:5 | [post] p | params_flow.rb:140:10:140:10 | p | provenance | | +| params_flow.rb:139:22:139:27 | call to params | params_flow.rb:139:5:139:5 | [post] p | provenance | | +| params_flow.rb:144:10:144:15 | call to params | params_flow.rb:144:10:144:44 | call to with_defaults! | provenance | | +| params_flow.rb:145:32:145:37 | call to params | params_flow.rb:145:10:145:38 | call to with_defaults! | provenance | | +| params_flow.rb:148:5:148:5 | [post] p | params_flow.rb:149:10:149:10 | p | provenance | | +| params_flow.rb:148:22:148:27 | call to params | params_flow.rb:148:5:148:5 | [post] p | provenance | | +| params_flow.rb:153:10:153:15 | call to params | params_flow.rb:153:10:153:44 | call to reverse_update | provenance | | +| params_flow.rb:154:32:154:37 | call to params | params_flow.rb:154:10:154:38 | call to reverse_update | provenance | | +| params_flow.rb:157:5:157:5 | [post] p | params_flow.rb:158:10:158:10 | p | provenance | | +| params_flow.rb:157:22:157:27 | call to params | params_flow.rb:157:5:157:5 | [post] p | provenance | | +| params_flow.rb:166:10:166:15 | call to params | params_flow.rb:166:10:166:19 | ...[...] | provenance | | +| params_flow.rb:172:10:172:15 | call to params | params_flow.rb:172:10:172:19 | ...[...] | provenance | | +| params_flow.rb:176:10:176:15 | call to params | params_flow.rb:176:10:176:19 | ...[...] | provenance | | nodes | filter_flow.rb:14:5:14:8 | [post] self [@foo] | semmle.label | [post] self [@foo] | | filter_flow.rb:14:12:14:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/library-tests/frameworks/action_mailer/params-flow.expected b/ruby/ql/test/library-tests/frameworks/action_mailer/params-flow.expected index 43d262663521..e69e4a8ebfde 100644 --- a/ruby/ql/test/library-tests/frameworks/action_mailer/params-flow.expected +++ b/ruby/ql/test/library-tests/frameworks/action_mailer/params-flow.expected @@ -1,6 +1,6 @@ testFailures edges -| mailer.rb:3:10:3:15 | call to params | mailer.rb:3:10:3:21 | ...[...] | +| mailer.rb:3:10:3:15 | call to params | mailer.rb:3:10:3:21 | ...[...] | provenance | | nodes | mailer.rb:3:10:3:15 | call to params | semmle.label | call to params | | mailer.rb:3:10:3:21 | ...[...] | semmle.label | ...[...] | diff --git a/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.expected b/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.expected index d7195d11ad7c..b273bddbee64 100644 --- a/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.expected +++ b/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.expected @@ -1,7 +1,7 @@ activeRecordModelClasses | ActiveRecord.rb:1:1:3:3 | UserGroup | -| ActiveRecord.rb:5:1:15:3 | User | -| ActiveRecord.rb:17:1:21:3 | Admin | +| ActiveRecord.rb:5:1:19:3 | User | +| ActiveRecord.rb:21:1:25:3 | Admin | | associations.rb:1:1:3:3 | Author | | associations.rb:5:1:9:3 | Post | | associations.rb:11:1:13:3 | Tag | @@ -10,17 +10,20 @@ activeRecordInstances | ActiveRecord.rb:9:5:9:68 | call to find | | ActiveRecord.rb:13:5:13:40 | call to find_by | | ActiveRecord.rb:13:5:13:46 | call to users | -| ActiveRecord.rb:35:5:35:51 | call to authenticate | -| ActiveRecord.rb:36:5:36:30 | call to find_by_name | -| ActiveRecord.rb:55:5:57:7 | if ... | -| ActiveRecord.rb:55:43:56:40 | then ... | -| ActiveRecord.rb:56:7:56:40 | call to find_by | -| ActiveRecord.rb:60:5:60:33 | call to find_by | -| ActiveRecord.rb:62:5:62:34 | call to find | -| ActiveRecord.rb:72:5:72:24 | call to create | -| ActiveRecord.rb:76:5:76:66 | call to create | -| ActiveRecord.rb:80:5:80:68 | call to create | -| ActiveRecord.rb:84:5:84:16 | call to create | +| ActiveRecord.rb:16:3:18:5 | self (exec) | +| ActiveRecord.rb:16:3:18:5 | self in exec | +| ActiveRecord.rb:17:5:17:14 | self | +| ActiveRecord.rb:39:5:39:51 | call to authenticate | +| ActiveRecord.rb:40:5:40:30 | call to find_by_name | +| ActiveRecord.rb:59:5:61:7 | if ... | +| ActiveRecord.rb:59:43:60:40 | then ... | +| ActiveRecord.rb:60:7:60:40 | call to find_by | +| ActiveRecord.rb:64:5:64:33 | call to find_by | +| ActiveRecord.rb:66:5:66:34 | call to find | +| ActiveRecord.rb:76:5:76:24 | call to create | +| ActiveRecord.rb:80:5:80:66 | call to create | +| ActiveRecord.rb:84:5:84:68 | call to create | +| ActiveRecord.rb:88:5:88:16 | call to create | | associations.rb:19:1:19:7 | author1 | | associations.rb:19:1:19:20 | ... = ... | | associations.rb:19:11:19:20 | call to new | @@ -105,46 +108,47 @@ activeRecordInstances | associations.rb:53:1:53:34 | call to find | activeRecordSqlExecutionRanges | ActiveRecord.rb:9:33:9:67 | "name='#{...}' and pass='#{...}'" | -| ActiveRecord.rb:19:16:19:24 | condition | -| ActiveRecord.rb:28:30:28:44 | ...[...] | -| ActiveRecord.rb:29:20:29:42 | "id = '#{...}'" | -| ActiveRecord.rb:30:21:30:45 | call to [] | -| ActiveRecord.rb:31:16:31:21 | <<-SQL | -| ActiveRecord.rb:34:20:34:47 | "user.id = '#{...}'" | -| ActiveRecord.rb:46:20:46:32 | ... + ... | -| ActiveRecord.rb:52:16:52:28 | "name #{...}" | -| ActiveRecord.rb:56:20:56:39 | "username = #{...}" | -| ActiveRecord.rb:68:21:68:44 | ...[...] | -| ActiveRecord.rb:106:27:106:76 | "this is an unsafe annotation:..." | +| ActiveRecord.rb:17:24:17:24 | q | +| ActiveRecord.rb:23:16:23:24 | condition | +| ActiveRecord.rb:32:30:32:44 | ...[...] | +| ActiveRecord.rb:33:20:33:42 | "id = '#{...}'" | +| ActiveRecord.rb:34:21:34:45 | call to [] | +| ActiveRecord.rb:35:16:35:21 | <<-SQL | +| ActiveRecord.rb:38:20:38:47 | "user.id = '#{...}'" | +| ActiveRecord.rb:50:20:50:32 | ... + ... | +| ActiveRecord.rb:56:16:56:28 | "name #{...}" | +| ActiveRecord.rb:60:20:60:39 | "username = #{...}" | +| ActiveRecord.rb:72:21:72:44 | ...[...] | +| ActiveRecord.rb:110:27:110:76 | "this is an unsafe annotation:..." | activeRecordModelClassMethodCalls | ActiveRecord.rb:2:3:2:17 | call to has_many | | ActiveRecord.rb:6:3:6:24 | call to belongs_to | | ActiveRecord.rb:9:5:9:68 | call to find | | ActiveRecord.rb:13:5:13:40 | call to find_by | | ActiveRecord.rb:13:5:13:46 | call to users | -| ActiveRecord.rb:19:5:19:25 | call to destroy_by | -| ActiveRecord.rb:28:5:28:45 | call to calculate | -| ActiveRecord.rb:29:5:29:43 | call to delete_by | -| ActiveRecord.rb:30:5:30:46 | call to destroy_by | -| ActiveRecord.rb:31:5:31:35 | call to where | -| ActiveRecord.rb:34:5:34:14 | call to where | -| ActiveRecord.rb:34:5:34:48 | call to not | -| ActiveRecord.rb:36:5:36:30 | call to find_by_name | -| ActiveRecord.rb:37:5:37:36 | call to not_a_find_by_method | -| ActiveRecord.rb:46:5:46:33 | call to delete_by | -| ActiveRecord.rb:52:5:52:29 | call to order | -| ActiveRecord.rb:56:7:56:40 | call to find_by | -| ActiveRecord.rb:60:5:60:33 | call to find_by | -| ActiveRecord.rb:62:5:62:34 | call to find | -| ActiveRecord.rb:72:5:72:24 | call to create | -| ActiveRecord.rb:76:5:76:66 | call to create | -| ActiveRecord.rb:80:5:80:68 | call to create | -| ActiveRecord.rb:84:5:84:16 | call to create | -| ActiveRecord.rb:88:5:88:27 | call to update | -| ActiveRecord.rb:92:5:92:69 | call to update | -| ActiveRecord.rb:96:5:96:71 | call to update | -| ActiveRecord.rb:102:13:102:54 | call to annotate | -| ActiveRecord.rb:106:13:106:77 | call to annotate | +| ActiveRecord.rb:23:5:23:25 | call to destroy_by | +| ActiveRecord.rb:32:5:32:45 | call to calculate | +| ActiveRecord.rb:33:5:33:43 | call to delete_by | +| ActiveRecord.rb:34:5:34:46 | call to destroy_by | +| ActiveRecord.rb:35:5:35:35 | call to where | +| ActiveRecord.rb:38:5:38:14 | call to where | +| ActiveRecord.rb:38:5:38:48 | call to not | +| ActiveRecord.rb:40:5:40:30 | call to find_by_name | +| ActiveRecord.rb:41:5:41:36 | call to not_a_find_by_method | +| ActiveRecord.rb:50:5:50:33 | call to delete_by | +| ActiveRecord.rb:56:5:56:29 | call to order | +| ActiveRecord.rb:60:7:60:40 | call to find_by | +| ActiveRecord.rb:64:5:64:33 | call to find_by | +| ActiveRecord.rb:66:5:66:34 | call to find | +| ActiveRecord.rb:76:5:76:24 | call to create | +| ActiveRecord.rb:80:5:80:66 | call to create | +| ActiveRecord.rb:84:5:84:68 | call to create | +| ActiveRecord.rb:88:5:88:16 | call to create | +| ActiveRecord.rb:92:5:92:27 | call to update | +| ActiveRecord.rb:96:5:96:69 | call to update | +| ActiveRecord.rb:100:5:100:71 | call to update | +| ActiveRecord.rb:106:13:106:54 | call to annotate | +| ActiveRecord.rb:110:13:110:77 | call to annotate | | associations.rb:2:3:2:17 | call to has_many | | associations.rb:6:3:6:20 | call to belongs_to | | associations.rb:7:3:7:20 | call to has_many | @@ -200,41 +204,41 @@ activeRecordModelClassMethodCalls activeRecordModelClassMethodCallsReplacement | ActiveRecord.rb:1:1:3:3 | UserGroup | ActiveRecord.rb:2:3:2:17 | call to has_many | | ActiveRecord.rb:1:1:3:3 | UserGroup | ActiveRecord.rb:13:5:13:40 | call to find_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:6:3:6:24 | call to belongs_to | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:9:5:9:68 | call to find | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:19:5:19:25 | call to destroy_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:28:5:28:45 | call to calculate | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:29:5:29:43 | call to delete_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:30:5:30:46 | call to destroy_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:31:5:31:35 | call to where | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:34:5:34:14 | call to where | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:35:5:35:51 | call to authenticate | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:36:5:36:30 | call to find_by_name | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:37:5:37:36 | call to not_a_find_by_method | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:46:5:46:33 | call to delete_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:52:5:52:29 | call to order | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:56:7:56:40 | call to find_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:60:5:60:33 | call to find_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:62:5:62:34 | call to find | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:68:5:68:45 | call to delete_by | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:72:5:72:24 | call to create | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:76:5:76:66 | call to create | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:80:5:80:68 | call to create | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:84:5:84:16 | call to create | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:88:5:88:27 | call to update | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:92:5:92:69 | call to update | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:96:5:96:71 | call to update | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:102:13:102:54 | call to annotate | -| ActiveRecord.rb:5:1:15:3 | User | ActiveRecord.rb:106:13:106:77 | call to annotate | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:19:5:19:25 | call to destroy_by | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:68:5:68:45 | call to delete_by | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:72:5:72:24 | call to create | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:76:5:76:66 | call to create | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:80:5:80:68 | call to create | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:84:5:84:16 | call to create | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:88:5:88:27 | call to update | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:92:5:92:69 | call to update | -| ActiveRecord.rb:17:1:21:3 | Admin | ActiveRecord.rb:96:5:96:71 | call to update | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:6:3:6:24 | call to belongs_to | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:9:5:9:68 | call to find | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:23:5:23:25 | call to destroy_by | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:32:5:32:45 | call to calculate | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:33:5:33:43 | call to delete_by | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:34:5:34:46 | call to destroy_by | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:35:5:35:35 | call to where | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:38:5:38:14 | call to where | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:39:5:39:51 | call to authenticate | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:40:5:40:30 | call to find_by_name | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:41:5:41:36 | call to not_a_find_by_method | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:50:5:50:33 | call to delete_by | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:56:5:56:29 | call to order | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:60:7:60:40 | call to find_by | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:64:5:64:33 | call to find_by | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:66:5:66:34 | call to find | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:72:5:72:45 | call to delete_by | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:76:5:76:24 | call to create | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:80:5:80:66 | call to create | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:84:5:84:68 | call to create | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:88:5:88:16 | call to create | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:92:5:92:27 | call to update | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:96:5:96:69 | call to update | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:100:5:100:71 | call to update | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:106:13:106:54 | call to annotate | +| ActiveRecord.rb:5:1:19:3 | User | ActiveRecord.rb:110:13:110:77 | call to annotate | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:23:5:23:25 | call to destroy_by | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:72:5:72:45 | call to delete_by | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:76:5:76:24 | call to create | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:80:5:80:66 | call to create | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:84:5:84:68 | call to create | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:88:5:88:16 | call to create | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:92:5:92:27 | call to update | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:96:5:96:69 | call to update | +| ActiveRecord.rb:21:1:25:3 | Admin | ActiveRecord.rb:100:5:100:71 | call to update | | associations.rb:1:1:3:3 | Author | associations.rb:2:3:2:17 | call to has_many | | associations.rb:1:1:3:3 | Author | associations.rb:19:11:19:20 | call to new | | associations.rb:5:1:9:3 | Post | associations.rb:6:3:6:20 | call to belongs_to | @@ -244,28 +248,29 @@ activeRecordModelClassMethodCallsReplacement | associations.rb:15:1:17:3 | Comment | associations.rb:16:3:16:18 | call to belongs_to | potentiallyUnsafeSqlExecutingMethodCall | ActiveRecord.rb:9:5:9:68 | call to find | -| ActiveRecord.rb:19:5:19:25 | call to destroy_by | -| ActiveRecord.rb:28:5:28:45 | call to calculate | -| ActiveRecord.rb:29:5:29:43 | call to delete_by | -| ActiveRecord.rb:30:5:30:46 | call to destroy_by | -| ActiveRecord.rb:31:5:31:35 | call to where | -| ActiveRecord.rb:34:5:34:48 | call to not | -| ActiveRecord.rb:46:5:46:33 | call to delete_by | -| ActiveRecord.rb:52:5:52:29 | call to order | -| ActiveRecord.rb:56:7:56:40 | call to find_by | -| ActiveRecord.rb:106:13:106:77 | call to annotate | +| ActiveRecord.rb:23:5:23:25 | call to destroy_by | +| ActiveRecord.rb:32:5:32:45 | call to calculate | +| ActiveRecord.rb:33:5:33:43 | call to delete_by | +| ActiveRecord.rb:34:5:34:46 | call to destroy_by | +| ActiveRecord.rb:35:5:35:35 | call to where | +| ActiveRecord.rb:38:5:38:48 | call to not | +| ActiveRecord.rb:50:5:50:33 | call to delete_by | +| ActiveRecord.rb:56:5:56:29 | call to order | +| ActiveRecord.rb:60:7:60:40 | call to find_by | +| ActiveRecord.rb:110:13:110:77 | call to annotate | activeRecordModelInstantiations -| ActiveRecord.rb:9:5:9:68 | call to find | ActiveRecord.rb:5:1:15:3 | User | +| ActiveRecord.rb:9:5:9:68 | call to find | ActiveRecord.rb:5:1:19:3 | User | | ActiveRecord.rb:13:5:13:40 | call to find_by | ActiveRecord.rb:1:1:3:3 | UserGroup | -| ActiveRecord.rb:13:5:13:46 | call to users | ActiveRecord.rb:5:1:15:3 | User | -| ActiveRecord.rb:36:5:36:30 | call to find_by_name | ActiveRecord.rb:5:1:15:3 | User | -| ActiveRecord.rb:56:7:56:40 | call to find_by | ActiveRecord.rb:5:1:15:3 | User | -| ActiveRecord.rb:60:5:60:33 | call to find_by | ActiveRecord.rb:5:1:15:3 | User | -| ActiveRecord.rb:62:5:62:34 | call to find | ActiveRecord.rb:5:1:15:3 | User | -| ActiveRecord.rb:72:5:72:24 | call to create | ActiveRecord.rb:17:1:21:3 | Admin | -| ActiveRecord.rb:76:5:76:66 | call to create | ActiveRecord.rb:17:1:21:3 | Admin | -| ActiveRecord.rb:80:5:80:68 | call to create | ActiveRecord.rb:17:1:21:3 | Admin | -| ActiveRecord.rb:84:5:84:16 | call to create | ActiveRecord.rb:17:1:21:3 | Admin | +| ActiveRecord.rb:13:5:13:46 | call to users | ActiveRecord.rb:5:1:19:3 | User | +| ActiveRecord.rb:16:3:18:5 | self in exec | ActiveRecord.rb:5:1:19:3 | User | +| ActiveRecord.rb:40:5:40:30 | call to find_by_name | ActiveRecord.rb:5:1:19:3 | User | +| ActiveRecord.rb:60:7:60:40 | call to find_by | ActiveRecord.rb:5:1:19:3 | User | +| ActiveRecord.rb:64:5:64:33 | call to find_by | ActiveRecord.rb:5:1:19:3 | User | +| ActiveRecord.rb:66:5:66:34 | call to find | ActiveRecord.rb:5:1:19:3 | User | +| ActiveRecord.rb:76:5:76:24 | call to create | ActiveRecord.rb:21:1:25:3 | Admin | +| ActiveRecord.rb:80:5:80:66 | call to create | ActiveRecord.rb:21:1:25:3 | Admin | +| ActiveRecord.rb:84:5:84:68 | call to create | ActiveRecord.rb:21:1:25:3 | Admin | +| ActiveRecord.rb:88:5:88:16 | call to create | ActiveRecord.rb:21:1:25:3 | Admin | | associations.rb:19:11:19:20 | call to new | associations.rb:1:1:3:3 | Author | | associations.rb:21:9:21:21 | call to posts | associations.rb:5:1:9:3 | Post | | associations.rb:21:9:21:28 | call to create | associations.rb:5:1:9:3 | Post | @@ -307,13 +312,13 @@ activeRecordModelInstantiations | associations.rb:53:1:53:13 | call to posts | associations.rb:5:1:9:3 | Post | | associations.rb:53:1:53:20 | call to reload | associations.rb:5:1:9:3 | Post | persistentWriteAccesses -| ActiveRecord.rb:72:5:72:24 | call to create | ActiveRecord.rb:72:18:72:23 | call to params | -| ActiveRecord.rb:76:5:76:66 | call to create | ActiveRecord.rb:76:24:76:36 | ...[...] | -| ActiveRecord.rb:76:5:76:66 | call to create | ActiveRecord.rb:76:49:76:65 | ...[...] | -| ActiveRecord.rb:80:5:80:68 | call to create | ActiveRecord.rb:80:25:80:37 | ...[...] | -| ActiveRecord.rb:80:5:80:68 | call to create | ActiveRecord.rb:80:50:80:66 | ...[...] | -| ActiveRecord.rb:88:5:88:27 | call to update | ActiveRecord.rb:88:21:88:26 | call to params | -| ActiveRecord.rb:92:5:92:69 | call to update | ActiveRecord.rb:92:27:92:39 | ...[...] | -| ActiveRecord.rb:92:5:92:69 | call to update | ActiveRecord.rb:92:52:92:68 | ...[...] | -| ActiveRecord.rb:96:5:96:71 | call to update | ActiveRecord.rb:96:21:96:70 | call to [] | +| ActiveRecord.rb:76:5:76:24 | call to create | ActiveRecord.rb:76:18:76:23 | call to params | +| ActiveRecord.rb:80:5:80:66 | call to create | ActiveRecord.rb:80:24:80:36 | ...[...] | +| ActiveRecord.rb:80:5:80:66 | call to create | ActiveRecord.rb:80:49:80:65 | ...[...] | +| ActiveRecord.rb:84:5:84:68 | call to create | ActiveRecord.rb:84:25:84:37 | ...[...] | +| ActiveRecord.rb:84:5:84:68 | call to create | ActiveRecord.rb:84:50:84:66 | ...[...] | +| ActiveRecord.rb:92:5:92:27 | call to update | ActiveRecord.rb:92:21:92:26 | call to params | +| ActiveRecord.rb:96:5:96:69 | call to update | ActiveRecord.rb:96:27:96:39 | ...[...] | +| ActiveRecord.rb:96:5:96:69 | call to update | ActiveRecord.rb:96:52:96:68 | ...[...] | +| ActiveRecord.rb:100:5:100:71 | call to update | ActiveRecord.rb:100:21:100:70 | call to [] | | associations.rb:31:16:31:22 | ... = ... | associations.rb:31:16:31:22 | author2 | diff --git a/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.rb b/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.rb index 8e5961c87710..dca8f3c43d36 100644 --- a/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.rb +++ b/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.rb @@ -12,6 +12,10 @@ def self.authenticate(name, pass) def self.from(user_group_id) UserGroup.find_by(id: user_group_id).users end + + def exec(q) + connection.execute(q) + end end class Admin < User diff --git a/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected b/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected index b4178c9bac50..4eadde7fa544 100644 --- a/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected +++ b/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected @@ -1,208 +1,208 @@ testFailures | hash_extensions.rb:126:10:126:19 | call to sole | Unexpected result: hasValueFlow=b | edges -| active_support.rb:180:5:180:5 | x [element 0] | active_support.rb:181:9:181:9 | x [element 0] | -| active_support.rb:180:10:180:17 | call to source | active_support.rb:180:5:180:5 | x [element 0] | -| active_support.rb:181:5:181:5 | y [element] | active_support.rb:182:10:182:10 | y [element] | -| active_support.rb:181:9:181:9 | x [element 0] | active_support.rb:181:9:181:23 | call to compact_blank [element] | -| active_support.rb:181:9:181:23 | call to compact_blank [element] | active_support.rb:181:5:181:5 | y [element] | -| active_support.rb:182:10:182:10 | y [element] | active_support.rb:182:10:182:13 | ...[...] | -| active_support.rb:186:5:186:5 | x [element 0] | active_support.rb:187:9:187:9 | x [element 0] | -| active_support.rb:186:10:186:18 | call to source | active_support.rb:186:5:186:5 | x [element 0] | -| active_support.rb:187:5:187:5 | y [element] | active_support.rb:188:10:188:10 | y [element] | -| active_support.rb:187:9:187:9 | x [element 0] | active_support.rb:187:9:187:21 | call to excluding [element] | -| active_support.rb:187:9:187:21 | call to excluding [element] | active_support.rb:187:5:187:5 | y [element] | -| active_support.rb:188:10:188:10 | y [element] | active_support.rb:188:10:188:13 | ...[...] | -| active_support.rb:192:5:192:5 | x [element 0] | active_support.rb:193:9:193:9 | x [element 0] | -| active_support.rb:192:10:192:18 | call to source | active_support.rb:192:5:192:5 | x [element 0] | -| active_support.rb:193:5:193:5 | y [element] | active_support.rb:194:10:194:10 | y [element] | -| active_support.rb:193:9:193:9 | x [element 0] | active_support.rb:193:9:193:19 | call to without [element] | -| active_support.rb:193:9:193:19 | call to without [element] | active_support.rb:193:5:193:5 | y [element] | -| active_support.rb:194:10:194:10 | y [element] | active_support.rb:194:10:194:13 | ...[...] | -| active_support.rb:198:5:198:5 | x [element 0] | active_support.rb:199:9:199:9 | x [element 0] | -| active_support.rb:198:10:198:18 | call to source | active_support.rb:198:5:198:5 | x [element 0] | -| active_support.rb:199:5:199:5 | y [element] | active_support.rb:200:10:200:10 | y [element] | -| active_support.rb:199:9:199:9 | x [element 0] | active_support.rb:199:9:199:37 | call to in_order_of [element] | -| active_support.rb:199:9:199:37 | call to in_order_of [element] | active_support.rb:199:5:199:5 | y [element] | -| active_support.rb:200:10:200:10 | y [element] | active_support.rb:200:10:200:13 | ...[...] | -| active_support.rb:204:5:204:5 | a [element 0] | active_support.rb:205:9:205:9 | a [element 0] | -| active_support.rb:204:5:204:5 | a [element 0] | active_support.rb:206:10:206:10 | a [element 0] | -| active_support.rb:204:10:204:18 | call to source | active_support.rb:204:5:204:5 | a [element 0] | -| active_support.rb:205:5:205:5 | b [element 0] | active_support.rb:208:10:208:10 | b [element 0] | -| active_support.rb:205:5:205:5 | b [element] | active_support.rb:208:10:208:10 | b [element] | -| active_support.rb:205:5:205:5 | b [element] | active_support.rb:209:10:209:10 | b [element] | -| active_support.rb:205:5:205:5 | b [element] | active_support.rb:210:10:210:10 | b [element] | -| active_support.rb:205:5:205:5 | b [element] | active_support.rb:211:10:211:10 | b [element] | -| active_support.rb:205:9:205:9 | a [element 0] | active_support.rb:205:9:205:41 | call to including [element 0] | -| active_support.rb:205:9:205:41 | call to including [element 0] | active_support.rb:205:5:205:5 | b [element 0] | -| active_support.rb:205:9:205:41 | call to including [element] | active_support.rb:205:5:205:5 | b [element] | -| active_support.rb:205:21:205:29 | call to source | active_support.rb:205:9:205:41 | call to including [element] | -| active_support.rb:205:32:205:40 | call to source | active_support.rb:205:9:205:41 | call to including [element] | -| active_support.rb:206:10:206:10 | a [element 0] | active_support.rb:206:10:206:13 | ...[...] | -| active_support.rb:208:10:208:10 | b [element 0] | active_support.rb:208:10:208:13 | ...[...] | -| active_support.rb:208:10:208:10 | b [element] | active_support.rb:208:10:208:13 | ...[...] | -| active_support.rb:209:10:209:10 | b [element] | active_support.rb:209:10:209:13 | ...[...] | -| active_support.rb:210:10:210:10 | b [element] | active_support.rb:210:10:210:13 | ...[...] | -| active_support.rb:211:10:211:10 | b [element] | active_support.rb:211:10:211:13 | ...[...] | -| active_support.rb:282:3:282:3 | x | active_support.rb:283:8:283:8 | x | -| active_support.rb:282:7:282:16 | call to source | active_support.rb:282:3:282:3 | x | -| active_support.rb:283:8:283:8 | x | active_support.rb:283:8:283:17 | call to presence | -| active_support.rb:285:3:285:3 | y | active_support.rb:286:8:286:8 | y | -| active_support.rb:285:7:285:16 | call to source | active_support.rb:285:3:285:3 | y | -| active_support.rb:286:8:286:8 | y | active_support.rb:286:8:286:17 | call to presence | -| active_support.rb:290:3:290:3 | x | active_support.rb:291:8:291:8 | x | -| active_support.rb:290:7:290:16 | call to source | active_support.rb:290:3:290:3 | x | -| active_support.rb:291:8:291:8 | x | active_support.rb:291:8:291:17 | call to deep_dup | -| hash_extensions.rb:2:5:2:5 | h [element :a] | hash_extensions.rb:3:9:3:9 | h [element :a] | -| hash_extensions.rb:2:14:2:24 | call to source | hash_extensions.rb:2:5:2:5 | h [element :a] | -| hash_extensions.rb:3:5:3:5 | x [element] | hash_extensions.rb:4:10:4:10 | x [element] | -| hash_extensions.rb:3:9:3:9 | h [element :a] | hash_extensions.rb:3:9:3:24 | call to stringify_keys [element] | -| hash_extensions.rb:3:9:3:24 | call to stringify_keys [element] | hash_extensions.rb:3:5:3:5 | x [element] | -| hash_extensions.rb:4:10:4:10 | x [element] | hash_extensions.rb:4:10:4:14 | ...[...] | -| hash_extensions.rb:10:5:10:5 | h [element :a] | hash_extensions.rb:11:9:11:9 | h [element :a] | -| hash_extensions.rb:10:14:10:24 | call to source | hash_extensions.rb:10:5:10:5 | h [element :a] | -| hash_extensions.rb:11:5:11:5 | x [element] | hash_extensions.rb:12:10:12:10 | x [element] | -| hash_extensions.rb:11:9:11:9 | h [element :a] | hash_extensions.rb:11:9:11:20 | call to to_options [element] | -| hash_extensions.rb:11:9:11:20 | call to to_options [element] | hash_extensions.rb:11:5:11:5 | x [element] | -| hash_extensions.rb:12:10:12:10 | x [element] | hash_extensions.rb:12:10:12:14 | ...[...] | -| hash_extensions.rb:18:5:18:5 | h [element :a] | hash_extensions.rb:19:9:19:9 | h [element :a] | -| hash_extensions.rb:18:14:18:24 | call to source | hash_extensions.rb:18:5:18:5 | h [element :a] | -| hash_extensions.rb:19:5:19:5 | x [element] | hash_extensions.rb:20:10:20:10 | x [element] | -| hash_extensions.rb:19:9:19:9 | h [element :a] | hash_extensions.rb:19:9:19:24 | call to symbolize_keys [element] | -| hash_extensions.rb:19:9:19:24 | call to symbolize_keys [element] | hash_extensions.rb:19:5:19:5 | x [element] | -| hash_extensions.rb:20:10:20:10 | x [element] | hash_extensions.rb:20:10:20:14 | ...[...] | -| hash_extensions.rb:26:5:26:5 | h [element :a] | hash_extensions.rb:27:9:27:9 | h [element :a] | -| hash_extensions.rb:26:14:26:24 | call to source | hash_extensions.rb:26:5:26:5 | h [element :a] | -| hash_extensions.rb:27:5:27:5 | x [element] | hash_extensions.rb:28:10:28:10 | x [element] | -| hash_extensions.rb:27:9:27:9 | h [element :a] | hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys [element] | -| hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys [element] | hash_extensions.rb:27:5:27:5 | x [element] | -| hash_extensions.rb:28:10:28:10 | x [element] | hash_extensions.rb:28:10:28:14 | ...[...] | -| hash_extensions.rb:34:5:34:5 | h [element :a] | hash_extensions.rb:35:9:35:9 | h [element :a] | -| hash_extensions.rb:34:14:34:24 | call to source | hash_extensions.rb:34:5:34:5 | h [element :a] | -| hash_extensions.rb:35:5:35:5 | x [element] | hash_extensions.rb:36:10:36:10 | x [element] | -| hash_extensions.rb:35:9:35:9 | h [element :a] | hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys [element] | -| hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys [element] | hash_extensions.rb:35:5:35:5 | x [element] | -| hash_extensions.rb:36:10:36:10 | x [element] | hash_extensions.rb:36:10:36:14 | ...[...] | -| hash_extensions.rb:42:5:42:5 | h [element :a] | hash_extensions.rb:43:9:43:9 | h [element :a] | -| hash_extensions.rb:42:14:42:24 | call to source | hash_extensions.rb:42:5:42:5 | h [element :a] | -| hash_extensions.rb:43:5:43:5 | x [element] | hash_extensions.rb:44:10:44:10 | x [element] | -| hash_extensions.rb:43:9:43:9 | h [element :a] | hash_extensions.rb:43:9:43:33 | call to with_indifferent_access [element] | -| hash_extensions.rb:43:9:43:33 | call to with_indifferent_access [element] | hash_extensions.rb:43:5:43:5 | x [element] | -| hash_extensions.rb:44:10:44:10 | x [element] | hash_extensions.rb:44:10:44:14 | ...[...] | -| hash_extensions.rb:50:5:50:5 | h [element :a] | hash_extensions.rb:51:9:51:9 | h [element :a] | -| hash_extensions.rb:50:5:50:5 | h [element :b] | hash_extensions.rb:51:9:51:9 | h [element :b] | -| hash_extensions.rb:50:5:50:5 | h [element :d] | hash_extensions.rb:51:9:51:9 | h [element :d] | -| hash_extensions.rb:50:14:50:23 | call to taint | hash_extensions.rb:50:5:50:5 | h [element :a] | -| hash_extensions.rb:50:29:50:38 | call to taint | hash_extensions.rb:50:5:50:5 | h [element :b] | -| hash_extensions.rb:50:52:50:61 | call to taint | hash_extensions.rb:50:5:50:5 | h [element :d] | -| hash_extensions.rb:51:5:51:5 | x [element :a] | hash_extensions.rb:58:10:58:10 | x [element :a] | -| hash_extensions.rb:51:5:51:5 | x [element :b] | hash_extensions.rb:59:10:59:10 | x [element :b] | -| hash_extensions.rb:51:9:51:9 | [post] h [element :d] | hash_extensions.rb:56:10:56:10 | h [element :d] | -| hash_extensions.rb:51:9:51:9 | h [element :a] | hash_extensions.rb:51:9:51:29 | call to extract! [element :a] | -| hash_extensions.rb:51:9:51:9 | h [element :b] | hash_extensions.rb:51:9:51:29 | call to extract! [element :b] | -| hash_extensions.rb:51:9:51:9 | h [element :d] | hash_extensions.rb:51:9:51:9 | [post] h [element :d] | -| hash_extensions.rb:51:9:51:29 | call to extract! [element :a] | hash_extensions.rb:51:5:51:5 | x [element :a] | -| hash_extensions.rb:51:9:51:29 | call to extract! [element :b] | hash_extensions.rb:51:5:51:5 | x [element :b] | -| hash_extensions.rb:56:10:56:10 | h [element :d] | hash_extensions.rb:56:10:56:14 | ...[...] | -| hash_extensions.rb:58:10:58:10 | x [element :a] | hash_extensions.rb:58:10:58:14 | ...[...] | -| hash_extensions.rb:59:10:59:10 | x [element :b] | hash_extensions.rb:59:10:59:14 | ...[...] | -| hash_extensions.rb:67:5:67:10 | values [element 0] | hash_extensions.rb:68:9:68:14 | values [element 0] | -| hash_extensions.rb:67:5:67:10 | values [element 1] | hash_extensions.rb:68:9:68:14 | values [element 1] | -| hash_extensions.rb:67:5:67:10 | values [element 2] | hash_extensions.rb:68:9:68:14 | values [element 2] | -| hash_extensions.rb:67:15:67:25 | call to source | hash_extensions.rb:67:5:67:10 | values [element 0] | -| hash_extensions.rb:67:28:67:38 | call to source | hash_extensions.rb:67:5:67:10 | values [element 1] | -| hash_extensions.rb:67:41:67:51 | call to source | hash_extensions.rb:67:5:67:10 | values [element 2] | -| hash_extensions.rb:68:5:68:5 | h [element] | hash_extensions.rb:73:10:73:10 | h [element] | -| hash_extensions.rb:68:5:68:5 | h [element] | hash_extensions.rb:74:10:74:10 | h [element] | -| hash_extensions.rb:68:9:68:14 | values [element 0] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | -| hash_extensions.rb:68:9:68:14 | values [element 0] | hash_extensions.rb:68:29:68:33 | value | -| hash_extensions.rb:68:9:68:14 | values [element 1] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | -| hash_extensions.rb:68:9:68:14 | values [element 1] | hash_extensions.rb:68:29:68:33 | value | -| hash_extensions.rb:68:9:68:14 | values [element 2] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | -| hash_extensions.rb:68:9:68:14 | values [element 2] | hash_extensions.rb:68:29:68:33 | value | -| hash_extensions.rb:68:9:71:7 | call to index_by [element] | hash_extensions.rb:68:5:68:5 | h [element] | -| hash_extensions.rb:68:29:68:33 | value | hash_extensions.rb:69:14:69:18 | value | -| hash_extensions.rb:73:10:73:10 | h [element] | hash_extensions.rb:73:10:73:16 | ...[...] | -| hash_extensions.rb:74:10:74:10 | h [element] | hash_extensions.rb:74:10:74:16 | ...[...] | -| hash_extensions.rb:80:5:80:10 | values [element 0] | hash_extensions.rb:81:9:81:14 | values [element 0] | -| hash_extensions.rb:80:5:80:10 | values [element 1] | hash_extensions.rb:81:9:81:14 | values [element 1] | -| hash_extensions.rb:80:5:80:10 | values [element 2] | hash_extensions.rb:81:9:81:14 | values [element 2] | -| hash_extensions.rb:80:15:80:25 | call to source | hash_extensions.rb:80:5:80:10 | values [element 0] | -| hash_extensions.rb:80:28:80:38 | call to source | hash_extensions.rb:80:5:80:10 | values [element 1] | -| hash_extensions.rb:80:41:80:51 | call to source | hash_extensions.rb:80:5:80:10 | values [element 2] | -| hash_extensions.rb:81:5:81:5 | h [element] | hash_extensions.rb:86:10:86:10 | h [element] | -| hash_extensions.rb:81:5:81:5 | h [element] | hash_extensions.rb:87:10:87:10 | h [element] | -| hash_extensions.rb:81:9:81:14 | values [element 0] | hash_extensions.rb:81:31:81:33 | key | -| hash_extensions.rb:81:9:81:14 | values [element 1] | hash_extensions.rb:81:31:81:33 | key | -| hash_extensions.rb:81:9:81:14 | values [element 2] | hash_extensions.rb:81:31:81:33 | key | -| hash_extensions.rb:81:9:84:7 | call to index_with [element] | hash_extensions.rb:81:5:81:5 | h [element] | -| hash_extensions.rb:81:31:81:33 | key | hash_extensions.rb:82:14:82:16 | key | -| hash_extensions.rb:83:9:83:19 | call to source | hash_extensions.rb:81:9:84:7 | call to index_with [element] | -| hash_extensions.rb:86:10:86:10 | h [element] | hash_extensions.rb:86:10:86:16 | ...[...] | -| hash_extensions.rb:87:10:87:10 | h [element] | hash_extensions.rb:87:10:87:16 | ...[...] | -| hash_extensions.rb:89:5:89:5 | j [element] | hash_extensions.rb:91:10:91:10 | j [element] | -| hash_extensions.rb:89:5:89:5 | j [element] | hash_extensions.rb:92:10:92:10 | j [element] | -| hash_extensions.rb:89:9:89:38 | call to index_with [element] | hash_extensions.rb:89:5:89:5 | j [element] | -| hash_extensions.rb:89:27:89:37 | call to source | hash_extensions.rb:89:9:89:38 | call to index_with [element] | -| hash_extensions.rb:91:10:91:10 | j [element] | hash_extensions.rb:91:10:91:16 | ...[...] | -| hash_extensions.rb:92:10:92:10 | j [element] | hash_extensions.rb:92:10:92:16 | ...[...] | -| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:99:10:99:15 | values [element 0, element :id] | -| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:101:10:101:15 | values [element 0, element :id] | -| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:104:10:104:15 | values [element 0, element :id] | -| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:100:10:100:15 | values [element 0, element :name] | -| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:102:10:102:15 | values [element 0, element :name] | -| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:103:10:103:15 | values [element 0, element :name] | -| hash_extensions.rb:98:21:98:31 | call to source | hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | -| hash_extensions.rb:98:40:98:54 | call to source | hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | -| hash_extensions.rb:99:10:99:15 | values [element 0, element :id] | hash_extensions.rb:99:10:99:25 | call to pick | -| hash_extensions.rb:100:10:100:15 | values [element 0, element :name] | hash_extensions.rb:100:10:100:27 | call to pick | -| hash_extensions.rb:101:10:101:15 | values [element 0, element :id] | hash_extensions.rb:101:10:101:32 | call to pick [element 0] | -| hash_extensions.rb:101:10:101:32 | call to pick [element 0] | hash_extensions.rb:101:10:101:35 | ...[...] | -| hash_extensions.rb:102:10:102:15 | values [element 0, element :name] | hash_extensions.rb:102:10:102:32 | call to pick [element 1] | -| hash_extensions.rb:102:10:102:32 | call to pick [element 1] | hash_extensions.rb:102:10:102:35 | ...[...] | -| hash_extensions.rb:103:10:103:15 | values [element 0, element :name] | hash_extensions.rb:103:10:103:32 | call to pick [element 0] | -| hash_extensions.rb:103:10:103:32 | call to pick [element 0] | hash_extensions.rb:103:10:103:35 | ...[...] | -| hash_extensions.rb:104:10:104:15 | values [element 0, element :id] | hash_extensions.rb:104:10:104:32 | call to pick [element 1] | -| hash_extensions.rb:104:10:104:32 | call to pick [element 1] | hash_extensions.rb:104:10:104:35 | ...[...] | -| hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | hash_extensions.rb:112:10:112:15 | values [element 0, element :id] | -| hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | hash_extensions.rb:115:10:115:15 | values [element 0, element :id] | -| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:111:10:111:15 | values [element 0, element :name] | -| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:113:10:113:15 | values [element 0, element :name] | -| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:114:10:114:15 | values [element 0, element :name] | -| hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | hash_extensions.rb:112:10:112:15 | values [element 1, element :id] | -| hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | hash_extensions.rb:115:10:115:15 | values [element 1, element :id] | -| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:111:10:111:15 | values [element 1, element :name] | -| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:113:10:113:15 | values [element 1, element :name] | -| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:114:10:114:15 | values [element 1, element :name] | -| hash_extensions.rb:110:21:110:31 | call to source | hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | -| hash_extensions.rb:110:40:110:54 | call to source | hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | -| hash_extensions.rb:110:65:110:75 | call to source | hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | -| hash_extensions.rb:110:84:110:99 | call to source | hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | -| hash_extensions.rb:111:10:111:15 | values [element 0, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck [element] | -| hash_extensions.rb:111:10:111:15 | values [element 1, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck [element] | -| hash_extensions.rb:111:10:111:28 | call to pluck [element] | hash_extensions.rb:111:10:111:31 | ...[...] | -| hash_extensions.rb:112:10:112:15 | values [element 0, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | -| hash_extensions.rb:112:10:112:15 | values [element 1, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | -| hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | -| hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | hash_extensions.rb:112:10:112:39 | ...[...] | -| hash_extensions.rb:113:10:113:15 | values [element 0, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | -| hash_extensions.rb:113:10:113:15 | values [element 1, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | -| hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | -| hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | hash_extensions.rb:113:10:113:39 | ...[...] | -| hash_extensions.rb:114:10:114:15 | values [element 0, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | -| hash_extensions.rb:114:10:114:15 | values [element 1, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | -| hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | -| hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | hash_extensions.rb:114:10:114:39 | ...[...] | -| hash_extensions.rb:115:10:115:15 | values [element 0, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | -| hash_extensions.rb:115:10:115:15 | values [element 1, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | -| hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | -| hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | hash_extensions.rb:115:10:115:39 | ...[...] | -| hash_extensions.rb:122:5:122:10 | single [element 0] | hash_extensions.rb:125:10:125:15 | single [element 0] | -| hash_extensions.rb:122:15:122:25 | call to source | hash_extensions.rb:122:5:122:10 | single [element 0] | -| hash_extensions.rb:123:5:123:9 | multi [element 0] | hash_extensions.rb:126:10:126:14 | multi [element 0] | -| hash_extensions.rb:123:14:123:24 | call to source | hash_extensions.rb:123:5:123:9 | multi [element 0] | -| hash_extensions.rb:125:10:125:15 | single [element 0] | hash_extensions.rb:125:10:125:20 | call to sole | -| hash_extensions.rb:126:10:126:14 | multi [element 0] | hash_extensions.rb:126:10:126:19 | call to sole | +| active_support.rb:180:5:180:5 | x [element 0] | active_support.rb:181:9:181:9 | x [element 0] | provenance | | +| active_support.rb:180:10:180:17 | call to source | active_support.rb:180:5:180:5 | x [element 0] | provenance | | +| active_support.rb:181:5:181:5 | y [element] | active_support.rb:182:10:182:10 | y [element] | provenance | | +| active_support.rb:181:9:181:9 | x [element 0] | active_support.rb:181:9:181:23 | call to compact_blank [element] | provenance | | +| active_support.rb:181:9:181:23 | call to compact_blank [element] | active_support.rb:181:5:181:5 | y [element] | provenance | | +| active_support.rb:182:10:182:10 | y [element] | active_support.rb:182:10:182:13 | ...[...] | provenance | | +| active_support.rb:186:5:186:5 | x [element 0] | active_support.rb:187:9:187:9 | x [element 0] | provenance | | +| active_support.rb:186:10:186:18 | call to source | active_support.rb:186:5:186:5 | x [element 0] | provenance | | +| active_support.rb:187:5:187:5 | y [element] | active_support.rb:188:10:188:10 | y [element] | provenance | | +| active_support.rb:187:9:187:9 | x [element 0] | active_support.rb:187:9:187:21 | call to excluding [element] | provenance | | +| active_support.rb:187:9:187:21 | call to excluding [element] | active_support.rb:187:5:187:5 | y [element] | provenance | | +| active_support.rb:188:10:188:10 | y [element] | active_support.rb:188:10:188:13 | ...[...] | provenance | | +| active_support.rb:192:5:192:5 | x [element 0] | active_support.rb:193:9:193:9 | x [element 0] | provenance | | +| active_support.rb:192:10:192:18 | call to source | active_support.rb:192:5:192:5 | x [element 0] | provenance | | +| active_support.rb:193:5:193:5 | y [element] | active_support.rb:194:10:194:10 | y [element] | provenance | | +| active_support.rb:193:9:193:9 | x [element 0] | active_support.rb:193:9:193:19 | call to without [element] | provenance | | +| active_support.rb:193:9:193:19 | call to without [element] | active_support.rb:193:5:193:5 | y [element] | provenance | | +| active_support.rb:194:10:194:10 | y [element] | active_support.rb:194:10:194:13 | ...[...] | provenance | | +| active_support.rb:198:5:198:5 | x [element 0] | active_support.rb:199:9:199:9 | x [element 0] | provenance | | +| active_support.rb:198:10:198:18 | call to source | active_support.rb:198:5:198:5 | x [element 0] | provenance | | +| active_support.rb:199:5:199:5 | y [element] | active_support.rb:200:10:200:10 | y [element] | provenance | | +| active_support.rb:199:9:199:9 | x [element 0] | active_support.rb:199:9:199:37 | call to in_order_of [element] | provenance | | +| active_support.rb:199:9:199:37 | call to in_order_of [element] | active_support.rb:199:5:199:5 | y [element] | provenance | | +| active_support.rb:200:10:200:10 | y [element] | active_support.rb:200:10:200:13 | ...[...] | provenance | | +| active_support.rb:204:5:204:5 | a [element 0] | active_support.rb:205:9:205:9 | a [element 0] | provenance | | +| active_support.rb:204:5:204:5 | a [element 0] | active_support.rb:206:10:206:10 | a [element 0] | provenance | | +| active_support.rb:204:10:204:18 | call to source | active_support.rb:204:5:204:5 | a [element 0] | provenance | | +| active_support.rb:205:5:205:5 | b [element 0] | active_support.rb:208:10:208:10 | b [element 0] | provenance | | +| active_support.rb:205:5:205:5 | b [element] | active_support.rb:208:10:208:10 | b [element] | provenance | | +| active_support.rb:205:5:205:5 | b [element] | active_support.rb:209:10:209:10 | b [element] | provenance | | +| active_support.rb:205:5:205:5 | b [element] | active_support.rb:210:10:210:10 | b [element] | provenance | | +| active_support.rb:205:5:205:5 | b [element] | active_support.rb:211:10:211:10 | b [element] | provenance | | +| active_support.rb:205:9:205:9 | a [element 0] | active_support.rb:205:9:205:41 | call to including [element 0] | provenance | | +| active_support.rb:205:9:205:41 | call to including [element 0] | active_support.rb:205:5:205:5 | b [element 0] | provenance | | +| active_support.rb:205:9:205:41 | call to including [element] | active_support.rb:205:5:205:5 | b [element] | provenance | | +| active_support.rb:205:21:205:29 | call to source | active_support.rb:205:9:205:41 | call to including [element] | provenance | | +| active_support.rb:205:32:205:40 | call to source | active_support.rb:205:9:205:41 | call to including [element] | provenance | | +| active_support.rb:206:10:206:10 | a [element 0] | active_support.rb:206:10:206:13 | ...[...] | provenance | | +| active_support.rb:208:10:208:10 | b [element 0] | active_support.rb:208:10:208:13 | ...[...] | provenance | | +| active_support.rb:208:10:208:10 | b [element] | active_support.rb:208:10:208:13 | ...[...] | provenance | | +| active_support.rb:209:10:209:10 | b [element] | active_support.rb:209:10:209:13 | ...[...] | provenance | | +| active_support.rb:210:10:210:10 | b [element] | active_support.rb:210:10:210:13 | ...[...] | provenance | | +| active_support.rb:211:10:211:10 | b [element] | active_support.rb:211:10:211:13 | ...[...] | provenance | | +| active_support.rb:282:3:282:3 | x | active_support.rb:283:8:283:8 | x | provenance | | +| active_support.rb:282:7:282:16 | call to source | active_support.rb:282:3:282:3 | x | provenance | | +| active_support.rb:283:8:283:8 | x | active_support.rb:283:8:283:17 | call to presence | provenance | | +| active_support.rb:285:3:285:3 | y | active_support.rb:286:8:286:8 | y | provenance | | +| active_support.rb:285:7:285:16 | call to source | active_support.rb:285:3:285:3 | y | provenance | | +| active_support.rb:286:8:286:8 | y | active_support.rb:286:8:286:17 | call to presence | provenance | | +| active_support.rb:290:3:290:3 | x | active_support.rb:291:8:291:8 | x | provenance | | +| active_support.rb:290:7:290:16 | call to source | active_support.rb:290:3:290:3 | x | provenance | | +| active_support.rb:291:8:291:8 | x | active_support.rb:291:8:291:17 | call to deep_dup | provenance | | +| hash_extensions.rb:2:5:2:5 | h [element :a] | hash_extensions.rb:3:9:3:9 | h [element :a] | provenance | | +| hash_extensions.rb:2:14:2:24 | call to source | hash_extensions.rb:2:5:2:5 | h [element :a] | provenance | | +| hash_extensions.rb:3:5:3:5 | x [element] | hash_extensions.rb:4:10:4:10 | x [element] | provenance | | +| hash_extensions.rb:3:9:3:9 | h [element :a] | hash_extensions.rb:3:9:3:24 | call to stringify_keys [element] | provenance | | +| hash_extensions.rb:3:9:3:24 | call to stringify_keys [element] | hash_extensions.rb:3:5:3:5 | x [element] | provenance | | +| hash_extensions.rb:4:10:4:10 | x [element] | hash_extensions.rb:4:10:4:14 | ...[...] | provenance | | +| hash_extensions.rb:10:5:10:5 | h [element :a] | hash_extensions.rb:11:9:11:9 | h [element :a] | provenance | | +| hash_extensions.rb:10:14:10:24 | call to source | hash_extensions.rb:10:5:10:5 | h [element :a] | provenance | | +| hash_extensions.rb:11:5:11:5 | x [element] | hash_extensions.rb:12:10:12:10 | x [element] | provenance | | +| hash_extensions.rb:11:9:11:9 | h [element :a] | hash_extensions.rb:11:9:11:20 | call to to_options [element] | provenance | | +| hash_extensions.rb:11:9:11:20 | call to to_options [element] | hash_extensions.rb:11:5:11:5 | x [element] | provenance | | +| hash_extensions.rb:12:10:12:10 | x [element] | hash_extensions.rb:12:10:12:14 | ...[...] | provenance | | +| hash_extensions.rb:18:5:18:5 | h [element :a] | hash_extensions.rb:19:9:19:9 | h [element :a] | provenance | | +| hash_extensions.rb:18:14:18:24 | call to source | hash_extensions.rb:18:5:18:5 | h [element :a] | provenance | | +| hash_extensions.rb:19:5:19:5 | x [element] | hash_extensions.rb:20:10:20:10 | x [element] | provenance | | +| hash_extensions.rb:19:9:19:9 | h [element :a] | hash_extensions.rb:19:9:19:24 | call to symbolize_keys [element] | provenance | | +| hash_extensions.rb:19:9:19:24 | call to symbolize_keys [element] | hash_extensions.rb:19:5:19:5 | x [element] | provenance | | +| hash_extensions.rb:20:10:20:10 | x [element] | hash_extensions.rb:20:10:20:14 | ...[...] | provenance | | +| hash_extensions.rb:26:5:26:5 | h [element :a] | hash_extensions.rb:27:9:27:9 | h [element :a] | provenance | | +| hash_extensions.rb:26:14:26:24 | call to source | hash_extensions.rb:26:5:26:5 | h [element :a] | provenance | | +| hash_extensions.rb:27:5:27:5 | x [element] | hash_extensions.rb:28:10:28:10 | x [element] | provenance | | +| hash_extensions.rb:27:9:27:9 | h [element :a] | hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys [element] | provenance | | +| hash_extensions.rb:27:9:27:29 | call to deep_stringify_keys [element] | hash_extensions.rb:27:5:27:5 | x [element] | provenance | | +| hash_extensions.rb:28:10:28:10 | x [element] | hash_extensions.rb:28:10:28:14 | ...[...] | provenance | | +| hash_extensions.rb:34:5:34:5 | h [element :a] | hash_extensions.rb:35:9:35:9 | h [element :a] | provenance | | +| hash_extensions.rb:34:14:34:24 | call to source | hash_extensions.rb:34:5:34:5 | h [element :a] | provenance | | +| hash_extensions.rb:35:5:35:5 | x [element] | hash_extensions.rb:36:10:36:10 | x [element] | provenance | | +| hash_extensions.rb:35:9:35:9 | h [element :a] | hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys [element] | provenance | | +| hash_extensions.rb:35:9:35:29 | call to deep_symbolize_keys [element] | hash_extensions.rb:35:5:35:5 | x [element] | provenance | | +| hash_extensions.rb:36:10:36:10 | x [element] | hash_extensions.rb:36:10:36:14 | ...[...] | provenance | | +| hash_extensions.rb:42:5:42:5 | h [element :a] | hash_extensions.rb:43:9:43:9 | h [element :a] | provenance | | +| hash_extensions.rb:42:14:42:24 | call to source | hash_extensions.rb:42:5:42:5 | h [element :a] | provenance | | +| hash_extensions.rb:43:5:43:5 | x [element] | hash_extensions.rb:44:10:44:10 | x [element] | provenance | | +| hash_extensions.rb:43:9:43:9 | h [element :a] | hash_extensions.rb:43:9:43:33 | call to with_indifferent_access [element] | provenance | | +| hash_extensions.rb:43:9:43:33 | call to with_indifferent_access [element] | hash_extensions.rb:43:5:43:5 | x [element] | provenance | | +| hash_extensions.rb:44:10:44:10 | x [element] | hash_extensions.rb:44:10:44:14 | ...[...] | provenance | | +| hash_extensions.rb:50:5:50:5 | h [element :a] | hash_extensions.rb:51:9:51:9 | h [element :a] | provenance | | +| hash_extensions.rb:50:5:50:5 | h [element :b] | hash_extensions.rb:51:9:51:9 | h [element :b] | provenance | | +| hash_extensions.rb:50:5:50:5 | h [element :d] | hash_extensions.rb:51:9:51:9 | h [element :d] | provenance | | +| hash_extensions.rb:50:14:50:23 | call to taint | hash_extensions.rb:50:5:50:5 | h [element :a] | provenance | | +| hash_extensions.rb:50:29:50:38 | call to taint | hash_extensions.rb:50:5:50:5 | h [element :b] | provenance | | +| hash_extensions.rb:50:52:50:61 | call to taint | hash_extensions.rb:50:5:50:5 | h [element :d] | provenance | | +| hash_extensions.rb:51:5:51:5 | x [element :a] | hash_extensions.rb:58:10:58:10 | x [element :a] | provenance | | +| hash_extensions.rb:51:5:51:5 | x [element :b] | hash_extensions.rb:59:10:59:10 | x [element :b] | provenance | | +| hash_extensions.rb:51:9:51:9 | [post] h [element :d] | hash_extensions.rb:56:10:56:10 | h [element :d] | provenance | | +| hash_extensions.rb:51:9:51:9 | h [element :a] | hash_extensions.rb:51:9:51:29 | call to extract! [element :a] | provenance | | +| hash_extensions.rb:51:9:51:9 | h [element :b] | hash_extensions.rb:51:9:51:29 | call to extract! [element :b] | provenance | | +| hash_extensions.rb:51:9:51:9 | h [element :d] | hash_extensions.rb:51:9:51:9 | [post] h [element :d] | provenance | | +| hash_extensions.rb:51:9:51:29 | call to extract! [element :a] | hash_extensions.rb:51:5:51:5 | x [element :a] | provenance | | +| hash_extensions.rb:51:9:51:29 | call to extract! [element :b] | hash_extensions.rb:51:5:51:5 | x [element :b] | provenance | | +| hash_extensions.rb:56:10:56:10 | h [element :d] | hash_extensions.rb:56:10:56:14 | ...[...] | provenance | | +| hash_extensions.rb:58:10:58:10 | x [element :a] | hash_extensions.rb:58:10:58:14 | ...[...] | provenance | | +| hash_extensions.rb:59:10:59:10 | x [element :b] | hash_extensions.rb:59:10:59:14 | ...[...] | provenance | | +| hash_extensions.rb:67:5:67:10 | values [element 0] | hash_extensions.rb:68:9:68:14 | values [element 0] | provenance | | +| hash_extensions.rb:67:5:67:10 | values [element 1] | hash_extensions.rb:68:9:68:14 | values [element 1] | provenance | | +| hash_extensions.rb:67:5:67:10 | values [element 2] | hash_extensions.rb:68:9:68:14 | values [element 2] | provenance | | +| hash_extensions.rb:67:15:67:25 | call to source | hash_extensions.rb:67:5:67:10 | values [element 0] | provenance | | +| hash_extensions.rb:67:28:67:38 | call to source | hash_extensions.rb:67:5:67:10 | values [element 1] | provenance | | +| hash_extensions.rb:67:41:67:51 | call to source | hash_extensions.rb:67:5:67:10 | values [element 2] | provenance | | +| hash_extensions.rb:68:5:68:5 | h [element] | hash_extensions.rb:73:10:73:10 | h [element] | provenance | | +| hash_extensions.rb:68:5:68:5 | h [element] | hash_extensions.rb:74:10:74:10 | h [element] | provenance | | +| hash_extensions.rb:68:9:68:14 | values [element 0] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | provenance | | +| hash_extensions.rb:68:9:68:14 | values [element 0] | hash_extensions.rb:68:29:68:33 | value | provenance | | +| hash_extensions.rb:68:9:68:14 | values [element 1] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | provenance | | +| hash_extensions.rb:68:9:68:14 | values [element 1] | hash_extensions.rb:68:29:68:33 | value | provenance | | +| hash_extensions.rb:68:9:68:14 | values [element 2] | hash_extensions.rb:68:9:71:7 | call to index_by [element] | provenance | | +| hash_extensions.rb:68:9:68:14 | values [element 2] | hash_extensions.rb:68:29:68:33 | value | provenance | | +| hash_extensions.rb:68:9:71:7 | call to index_by [element] | hash_extensions.rb:68:5:68:5 | h [element] | provenance | | +| hash_extensions.rb:68:29:68:33 | value | hash_extensions.rb:69:14:69:18 | value | provenance | | +| hash_extensions.rb:73:10:73:10 | h [element] | hash_extensions.rb:73:10:73:16 | ...[...] | provenance | | +| hash_extensions.rb:74:10:74:10 | h [element] | hash_extensions.rb:74:10:74:16 | ...[...] | provenance | | +| hash_extensions.rb:80:5:80:10 | values [element 0] | hash_extensions.rb:81:9:81:14 | values [element 0] | provenance | | +| hash_extensions.rb:80:5:80:10 | values [element 1] | hash_extensions.rb:81:9:81:14 | values [element 1] | provenance | | +| hash_extensions.rb:80:5:80:10 | values [element 2] | hash_extensions.rb:81:9:81:14 | values [element 2] | provenance | | +| hash_extensions.rb:80:15:80:25 | call to source | hash_extensions.rb:80:5:80:10 | values [element 0] | provenance | | +| hash_extensions.rb:80:28:80:38 | call to source | hash_extensions.rb:80:5:80:10 | values [element 1] | provenance | | +| hash_extensions.rb:80:41:80:51 | call to source | hash_extensions.rb:80:5:80:10 | values [element 2] | provenance | | +| hash_extensions.rb:81:5:81:5 | h [element] | hash_extensions.rb:86:10:86:10 | h [element] | provenance | | +| hash_extensions.rb:81:5:81:5 | h [element] | hash_extensions.rb:87:10:87:10 | h [element] | provenance | | +| hash_extensions.rb:81:9:81:14 | values [element 0] | hash_extensions.rb:81:31:81:33 | key | provenance | | +| hash_extensions.rb:81:9:81:14 | values [element 1] | hash_extensions.rb:81:31:81:33 | key | provenance | | +| hash_extensions.rb:81:9:81:14 | values [element 2] | hash_extensions.rb:81:31:81:33 | key | provenance | | +| hash_extensions.rb:81:9:84:7 | call to index_with [element] | hash_extensions.rb:81:5:81:5 | h [element] | provenance | | +| hash_extensions.rb:81:31:81:33 | key | hash_extensions.rb:82:14:82:16 | key | provenance | | +| hash_extensions.rb:83:9:83:19 | call to source | hash_extensions.rb:81:9:84:7 | call to index_with [element] | provenance | | +| hash_extensions.rb:86:10:86:10 | h [element] | hash_extensions.rb:86:10:86:16 | ...[...] | provenance | | +| hash_extensions.rb:87:10:87:10 | h [element] | hash_extensions.rb:87:10:87:16 | ...[...] | provenance | | +| hash_extensions.rb:89:5:89:5 | j [element] | hash_extensions.rb:91:10:91:10 | j [element] | provenance | | +| hash_extensions.rb:89:5:89:5 | j [element] | hash_extensions.rb:92:10:92:10 | j [element] | provenance | | +| hash_extensions.rb:89:9:89:38 | call to index_with [element] | hash_extensions.rb:89:5:89:5 | j [element] | provenance | | +| hash_extensions.rb:89:27:89:37 | call to source | hash_extensions.rb:89:9:89:38 | call to index_with [element] | provenance | | +| hash_extensions.rb:91:10:91:10 | j [element] | hash_extensions.rb:91:10:91:16 | ...[...] | provenance | | +| hash_extensions.rb:92:10:92:10 | j [element] | hash_extensions.rb:92:10:92:16 | ...[...] | provenance | | +| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:99:10:99:15 | values [element 0, element :id] | provenance | | +| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:101:10:101:15 | values [element 0, element :id] | provenance | | +| hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | hash_extensions.rb:104:10:104:15 | values [element 0, element :id] | provenance | | +| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:100:10:100:15 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:102:10:102:15 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | hash_extensions.rb:103:10:103:15 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:98:21:98:31 | call to source | hash_extensions.rb:98:5:98:10 | values [element 0, element :id] | provenance | | +| hash_extensions.rb:98:40:98:54 | call to source | hash_extensions.rb:98:5:98:10 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:99:10:99:15 | values [element 0, element :id] | hash_extensions.rb:99:10:99:25 | call to pick | provenance | | +| hash_extensions.rb:100:10:100:15 | values [element 0, element :name] | hash_extensions.rb:100:10:100:27 | call to pick | provenance | | +| hash_extensions.rb:101:10:101:15 | values [element 0, element :id] | hash_extensions.rb:101:10:101:32 | call to pick [element 0] | provenance | | +| hash_extensions.rb:101:10:101:32 | call to pick [element 0] | hash_extensions.rb:101:10:101:35 | ...[...] | provenance | | +| hash_extensions.rb:102:10:102:15 | values [element 0, element :name] | hash_extensions.rb:102:10:102:32 | call to pick [element 1] | provenance | | +| hash_extensions.rb:102:10:102:32 | call to pick [element 1] | hash_extensions.rb:102:10:102:35 | ...[...] | provenance | | +| hash_extensions.rb:103:10:103:15 | values [element 0, element :name] | hash_extensions.rb:103:10:103:32 | call to pick [element 0] | provenance | | +| hash_extensions.rb:103:10:103:32 | call to pick [element 0] | hash_extensions.rb:103:10:103:35 | ...[...] | provenance | | +| hash_extensions.rb:104:10:104:15 | values [element 0, element :id] | hash_extensions.rb:104:10:104:32 | call to pick [element 1] | provenance | | +| hash_extensions.rb:104:10:104:32 | call to pick [element 1] | hash_extensions.rb:104:10:104:35 | ...[...] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | hash_extensions.rb:112:10:112:15 | values [element 0, element :id] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | hash_extensions.rb:115:10:115:15 | values [element 0, element :id] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:111:10:111:15 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:113:10:113:15 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | hash_extensions.rb:114:10:114:15 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | hash_extensions.rb:112:10:112:15 | values [element 1, element :id] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | hash_extensions.rb:115:10:115:15 | values [element 1, element :id] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:111:10:111:15 | values [element 1, element :name] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:113:10:113:15 | values [element 1, element :name] | provenance | | +| hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | hash_extensions.rb:114:10:114:15 | values [element 1, element :name] | provenance | | +| hash_extensions.rb:110:21:110:31 | call to source | hash_extensions.rb:110:5:110:10 | values [element 0, element :id] | provenance | | +| hash_extensions.rb:110:40:110:54 | call to source | hash_extensions.rb:110:5:110:10 | values [element 0, element :name] | provenance | | +| hash_extensions.rb:110:65:110:75 | call to source | hash_extensions.rb:110:5:110:10 | values [element 1, element :id] | provenance | | +| hash_extensions.rb:110:84:110:99 | call to source | hash_extensions.rb:110:5:110:10 | values [element 1, element :name] | provenance | | +| hash_extensions.rb:111:10:111:15 | values [element 0, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck [element] | provenance | | +| hash_extensions.rb:111:10:111:15 | values [element 1, element :name] | hash_extensions.rb:111:10:111:28 | call to pluck [element] | provenance | | +| hash_extensions.rb:111:10:111:28 | call to pluck [element] | hash_extensions.rb:111:10:111:31 | ...[...] | provenance | | +| hash_extensions.rb:112:10:112:15 | values [element 0, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | provenance | | +| hash_extensions.rb:112:10:112:15 | values [element 1, element :id] | hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | provenance | | +| hash_extensions.rb:112:10:112:33 | call to pluck [element, element 0] | hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | provenance | | +| hash_extensions.rb:112:10:112:36 | ...[...] [element 0] | hash_extensions.rb:112:10:112:39 | ...[...] | provenance | | +| hash_extensions.rb:113:10:113:15 | values [element 0, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | provenance | | +| hash_extensions.rb:113:10:113:15 | values [element 1, element :name] | hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | provenance | | +| hash_extensions.rb:113:10:113:33 | call to pluck [element, element 1] | hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | provenance | | +| hash_extensions.rb:113:10:113:36 | ...[...] [element 1] | hash_extensions.rb:113:10:113:39 | ...[...] | provenance | | +| hash_extensions.rb:114:10:114:15 | values [element 0, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | provenance | | +| hash_extensions.rb:114:10:114:15 | values [element 1, element :name] | hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | provenance | | +| hash_extensions.rb:114:10:114:33 | call to pluck [element, element 0] | hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | provenance | | +| hash_extensions.rb:114:10:114:36 | ...[...] [element 0] | hash_extensions.rb:114:10:114:39 | ...[...] | provenance | | +| hash_extensions.rb:115:10:115:15 | values [element 0, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | provenance | | +| hash_extensions.rb:115:10:115:15 | values [element 1, element :id] | hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | provenance | | +| hash_extensions.rb:115:10:115:33 | call to pluck [element, element 1] | hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | provenance | | +| hash_extensions.rb:115:10:115:36 | ...[...] [element 1] | hash_extensions.rb:115:10:115:39 | ...[...] | provenance | | +| hash_extensions.rb:122:5:122:10 | single [element 0] | hash_extensions.rb:125:10:125:15 | single [element 0] | provenance | | +| hash_extensions.rb:122:15:122:25 | call to source | hash_extensions.rb:122:5:122:10 | single [element 0] | provenance | | +| hash_extensions.rb:123:5:123:9 | multi [element 0] | hash_extensions.rb:126:10:126:14 | multi [element 0] | provenance | | +| hash_extensions.rb:123:14:123:24 | call to source | hash_extensions.rb:123:5:123:9 | multi [element 0] | provenance | | +| hash_extensions.rb:125:10:125:15 | single [element 0] | hash_extensions.rb:125:10:125:20 | call to sole | provenance | | +| hash_extensions.rb:126:10:126:14 | multi [element 0] | hash_extensions.rb:126:10:126:19 | call to sole | provenance | | nodes | active_support.rb:180:5:180:5 | x [element 0] | semmle.label | x [element 0] | | active_support.rb:180:10:180:17 | call to source | semmle.label | call to source | diff --git a/ruby/ql/test/library-tests/frameworks/arel/Arel.expected b/ruby/ql/test/library-tests/frameworks/arel/Arel.expected index 1a8eab7e84fa..c2242a7e7d98 100644 --- a/ruby/ql/test/library-tests/frameworks/arel/Arel.expected +++ b/ruby/ql/test/library-tests/frameworks/arel/Arel.expected @@ -1,8 +1,8 @@ testFailures edges -| arel.rb:2:3:2:3 | x | arel.rb:3:17:3:17 | x | -| arel.rb:2:7:2:14 | call to source | arel.rb:2:3:2:3 | x | -| arel.rb:3:17:3:17 | x | arel.rb:3:8:3:18 | call to sql | +| arel.rb:2:3:2:3 | x | arel.rb:3:17:3:17 | x | provenance | | +| arel.rb:2:7:2:14 | call to source | arel.rb:2:3:2:3 | x | provenance | | +| arel.rb:3:17:3:17 | x | arel.rb:3:8:3:18 | call to sql | provenance | | nodes | arel.rb:2:3:2:3 | x | semmle.label | x | | arel.rb:2:7:2:14 | call to source | semmle.label | call to source | diff --git a/ruby/ql/test/library-tests/frameworks/json/JsonDataFlow.expected b/ruby/ql/test/library-tests/frameworks/json/JsonDataFlow.expected index b4ba9ce73741..a12400cf123e 100644 --- a/ruby/ql/test/library-tests/frameworks/json/JsonDataFlow.expected +++ b/ruby/ql/test/library-tests/frameworks/json/JsonDataFlow.expected @@ -1,15 +1,15 @@ testFailures edges -| json.rb:1:17:1:26 | call to source | json.rb:1:6:1:27 | call to parse | -| json.rb:2:18:2:27 | call to source | json.rb:2:6:2:28 | call to parse! | -| json.rb:3:16:3:25 | call to source | json.rb:3:6:3:26 | call to load | -| json.rb:4:19:4:28 | call to source | json.rb:4:6:4:29 | call to restore | -| json.rb:6:20:6:29 | call to source | json.rb:6:6:6:30 | call to generate | -| json.rb:7:25:7:34 | call to source | json.rb:7:6:7:35 | call to fast_generate | -| json.rb:8:27:8:36 | call to source | json.rb:8:6:8:37 | call to pretty_generate | -| json.rb:9:16:9:25 | call to source | json.rb:9:6:9:26 | call to dump | -| json.rb:10:19:10:28 | call to source | json.rb:10:6:10:29 | call to unparse | -| json.rb:11:24:11:33 | call to source | json.rb:11:6:11:34 | call to fast_unparse | +| json.rb:1:17:1:26 | call to source | json.rb:1:6:1:27 | call to parse | provenance | | +| json.rb:2:18:2:27 | call to source | json.rb:2:6:2:28 | call to parse! | provenance | | +| json.rb:3:16:3:25 | call to source | json.rb:3:6:3:26 | call to load | provenance | | +| json.rb:4:19:4:28 | call to source | json.rb:4:6:4:29 | call to restore | provenance | | +| json.rb:6:20:6:29 | call to source | json.rb:6:6:6:30 | call to generate | provenance | | +| json.rb:7:25:7:34 | call to source | json.rb:7:6:7:35 | call to fast_generate | provenance | | +| json.rb:8:27:8:36 | call to source | json.rb:8:6:8:37 | call to pretty_generate | provenance | | +| json.rb:9:16:9:25 | call to source | json.rb:9:6:9:26 | call to dump | provenance | | +| json.rb:10:19:10:28 | call to source | json.rb:10:6:10:29 | call to unparse | provenance | | +| json.rb:11:24:11:33 | call to source | json.rb:11:6:11:34 | call to fast_unparse | provenance | | nodes | json.rb:1:6:1:27 | call to parse | semmle.label | call to parse | | json.rb:1:17:1:26 | call to source | semmle.label | call to source | diff --git a/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected b/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected index 1a3665a31c1c..baad7a63b8d2 100644 --- a/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected +++ b/ruby/ql/test/library-tests/frameworks/sinatra/Flow.expected @@ -1,11 +1,11 @@ testFailures | views/index.erb:2:10:2:12 | call to foo | Unexpected result: hasTaintFlow= | edges -| app.rb:75:5:75:8 | [post] self [@foo] | app.rb:76:32:76:35 | self [@foo] | -| app.rb:75:12:75:17 | call to params | app.rb:75:12:75:24 | ...[...] | -| app.rb:75:12:75:24 | ...[...] | app.rb:75:5:75:8 | [post] self [@foo] | -| app.rb:76:32:76:35 | @foo | views/index.erb:2:10:2:12 | call to foo | -| app.rb:76:32:76:35 | self [@foo] | app.rb:76:32:76:35 | @foo | +| app.rb:75:5:75:8 | [post] self [@foo] | app.rb:76:32:76:35 | self [@foo] | provenance | | +| app.rb:75:12:75:17 | call to params | app.rb:75:12:75:24 | ...[...] | provenance | | +| app.rb:75:12:75:24 | ...[...] | app.rb:75:5:75:8 | [post] self [@foo] | provenance | | +| app.rb:76:32:76:35 | @foo | views/index.erb:2:10:2:12 | call to foo | provenance | | +| app.rb:76:32:76:35 | self [@foo] | app.rb:76:32:76:35 | @foo | provenance | | nodes | app.rb:75:5:75:8 | [post] self [@foo] | semmle.label | [post] self [@foo] | | app.rb:75:12:75:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/library-tests/variables/ssa.expected b/ruby/ql/test/library-tests/variables/ssa.expected index 91ea3085ec82..a729af328ce0 100644 --- a/ruby/ql/test/library-tests/variables/ssa.expected +++ b/ruby/ql/test/library-tests/variables/ssa.expected @@ -90,7 +90,6 @@ definition | scopes.rb:2:9:6:3 | self | scopes.rb:1:1:49:4 | self | | scopes.rb:4:4:4:4 | a | scopes.rb:4:4:4:4 | a | | scopes.rb:7:1:7:1 | a | scopes.rb:7:1:7:1 | a | -| scopes.rb:9:1:18:3 | a | scopes.rb:7:1:7:1 | a | | scopes.rb:9:9:18:3 | a | scopes.rb:7:1:7:1 | a | | scopes.rb:9:9:18:3 | self | scopes.rb:1:1:49:4 | self | | scopes.rb:11:4:11:4 | a | scopes.rb:7:1:7:1 | a | diff --git a/ruby/ql/test/query-tests/experimental/ImproperLdapAuth/ImproperLdapAuth.expected b/ruby/ql/test/query-tests/experimental/ImproperLdapAuth/ImproperLdapAuth.expected index 17c9a009cbd9..1b0e8d4fbb38 100644 --- a/ruby/ql/test/query-tests/experimental/ImproperLdapAuth/ImproperLdapAuth.expected +++ b/ruby/ql/test/query-tests/experimental/ImproperLdapAuth/ImproperLdapAuth.expected @@ -1,10 +1,10 @@ edges -| ImproperLdapAuth.rb:5:5:5:8 | pass | ImproperLdapAuth.rb:15:23:15:26 | pass | -| ImproperLdapAuth.rb:5:12:5:17 | call to params | ImproperLdapAuth.rb:5:12:5:24 | ...[...] | -| ImproperLdapAuth.rb:5:12:5:24 | ...[...] | ImproperLdapAuth.rb:5:5:5:8 | pass | -| ImproperLdapAuth.rb:24:5:24:8 | pass | ImproperLdapAuth.rb:31:24:31:27 | pass | -| ImproperLdapAuth.rb:24:12:24:17 | call to params | ImproperLdapAuth.rb:24:12:24:24 | ...[...] | -| ImproperLdapAuth.rb:24:12:24:24 | ...[...] | ImproperLdapAuth.rb:24:5:24:8 | pass | +| ImproperLdapAuth.rb:5:5:5:8 | pass | ImproperLdapAuth.rb:15:23:15:26 | pass | provenance | | +| ImproperLdapAuth.rb:5:12:5:17 | call to params | ImproperLdapAuth.rb:5:12:5:24 | ...[...] | provenance | | +| ImproperLdapAuth.rb:5:12:5:24 | ...[...] | ImproperLdapAuth.rb:5:5:5:8 | pass | provenance | | +| ImproperLdapAuth.rb:24:5:24:8 | pass | ImproperLdapAuth.rb:31:24:31:27 | pass | provenance | | +| ImproperLdapAuth.rb:24:12:24:17 | call to params | ImproperLdapAuth.rb:24:12:24:24 | ...[...] | provenance | | +| ImproperLdapAuth.rb:24:12:24:24 | ...[...] | ImproperLdapAuth.rb:24:5:24:8 | pass | provenance | | nodes | ImproperLdapAuth.rb:5:5:5:8 | pass | semmle.label | pass | | ImproperLdapAuth.rb:5:12:5:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/experimental/LdapInjection/Ldapinjection.expected b/ruby/ql/test/query-tests/experimental/LdapInjection/Ldapinjection.expected index 2c2aa193d77d..9eddf82c15ca 100644 --- a/ruby/ql/test/query-tests/experimental/LdapInjection/Ldapinjection.expected +++ b/ruby/ql/test/query-tests/experimental/LdapInjection/Ldapinjection.expected @@ -1,16 +1,16 @@ edges -| LdapInjection.rb:5:5:5:6 | dc | LdapInjection.rb:25:23:25:49 | "ou=people,dc=#{...},dc=com" | -| LdapInjection.rb:5:10:5:15 | call to params | LdapInjection.rb:5:10:5:20 | ...[...] | -| LdapInjection.rb:5:10:5:20 | ...[...] | LdapInjection.rb:5:5:5:6 | dc | -| LdapInjection.rb:9:5:9:8 | name | LdapInjection.rb:29:62:29:73 | "cn=#{...}" | -| LdapInjection.rb:9:5:9:8 | name | LdapInjection.rb:33:88:33:91 | name | -| LdapInjection.rb:9:12:9:17 | call to params | LdapInjection.rb:9:12:9:29 | ...[...] | -| LdapInjection.rb:9:12:9:29 | ...[...] | LdapInjection.rb:9:5:9:8 | name | -| LdapInjection.rb:33:88:33:91 | name | LdapInjection.rb:33:87:33:92 | call to [] | -| LdapInjection.rb:33:88:33:91 | name | LdapInjection.rb:37:41:37:44 | name | -| LdapInjection.rb:37:5:37:10 | filter | LdapInjection.rb:38:62:38:67 | filter | -| LdapInjection.rb:37:14:37:45 | call to eq | LdapInjection.rb:37:5:37:10 | filter | -| LdapInjection.rb:37:41:37:44 | name | LdapInjection.rb:37:14:37:45 | call to eq | +| LdapInjection.rb:5:5:5:6 | dc | LdapInjection.rb:25:23:25:49 | "ou=people,dc=#{...},dc=com" | provenance | | +| LdapInjection.rb:5:10:5:15 | call to params | LdapInjection.rb:5:10:5:20 | ...[...] | provenance | | +| LdapInjection.rb:5:10:5:20 | ...[...] | LdapInjection.rb:5:5:5:6 | dc | provenance | | +| LdapInjection.rb:9:5:9:8 | name | LdapInjection.rb:29:62:29:73 | "cn=#{...}" | provenance | | +| LdapInjection.rb:9:5:9:8 | name | LdapInjection.rb:33:88:33:91 | name | provenance | | +| LdapInjection.rb:9:12:9:17 | call to params | LdapInjection.rb:9:12:9:29 | ...[...] | provenance | | +| LdapInjection.rb:9:12:9:29 | ...[...] | LdapInjection.rb:9:5:9:8 | name | provenance | | +| LdapInjection.rb:33:88:33:91 | name | LdapInjection.rb:33:87:33:92 | call to [] | provenance | | +| LdapInjection.rb:33:88:33:91 | name | LdapInjection.rb:37:41:37:44 | name | provenance | | +| LdapInjection.rb:37:5:37:10 | filter | LdapInjection.rb:38:62:38:67 | filter | provenance | | +| LdapInjection.rb:37:14:37:45 | call to eq | LdapInjection.rb:37:5:37:10 | filter | provenance | | +| LdapInjection.rb:37:41:37:44 | name | LdapInjection.rb:37:14:37:45 | call to eq | provenance | | nodes | LdapInjection.rb:5:5:5:6 | dc | semmle.label | dc | | LdapInjection.rb:5:10:5:15 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/experimental/TemplateInjection/TemplateInjection.expected b/ruby/ql/test/query-tests/experimental/TemplateInjection/TemplateInjection.expected index 103dc82bda4f..bf51b4340622 100644 --- a/ruby/ql/test/query-tests/experimental/TemplateInjection/TemplateInjection.expected +++ b/ruby/ql/test/query-tests/experimental/TemplateInjection/TemplateInjection.expected @@ -1,21 +1,21 @@ edges -| ErbInjection.rb:5:5:5:8 | name | ErbInjection.rb:8:5:8:12 | bad_text | -| ErbInjection.rb:5:5:5:8 | name | ErbInjection.rb:11:11:11:14 | name | -| ErbInjection.rb:5:12:5:17 | call to params | ErbInjection.rb:5:12:5:24 | ...[...] | -| ErbInjection.rb:5:12:5:24 | ...[...] | ErbInjection.rb:5:5:5:8 | name | -| ErbInjection.rb:8:5:8:12 | bad_text | ErbInjection.rb:15:24:15:31 | bad_text | -| ErbInjection.rb:8:5:8:12 | bad_text | ErbInjection.rb:19:20:19:27 | bad_text | -| ErbInjection.rb:8:16:11:14 | ... % ... | ErbInjection.rb:8:5:8:12 | bad_text | -| ErbInjection.rb:11:11:11:14 | name | ErbInjection.rb:8:16:11:14 | ... % ... | -| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:11:11:11:14 | name | -| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | -| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:23:23:23:35 | { ... } [captured bad2_text] | -| SlimInjection.rb:5:12:5:17 | call to params | SlimInjection.rb:5:12:5:24 | ...[...] | -| SlimInjection.rb:5:12:5:24 | ...[...] | SlimInjection.rb:5:5:5:8 | name | -| SlimInjection.rb:8:16:11:14 | ... % ... | SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | -| SlimInjection.rb:11:11:11:14 | name | SlimInjection.rb:8:16:11:14 | ... % ... | -| SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | SlimInjection.rb:14:25:14:32 | bad_text | -| SlimInjection.rb:23:23:23:35 | { ... } [captured bad2_text] | SlimInjection.rb:23:25:23:33 | bad2_text | +| ErbInjection.rb:5:5:5:8 | name | ErbInjection.rb:8:5:8:12 | bad_text | provenance | | +| ErbInjection.rb:5:5:5:8 | name | ErbInjection.rb:11:11:11:14 | name | provenance | | +| ErbInjection.rb:5:12:5:17 | call to params | ErbInjection.rb:5:12:5:24 | ...[...] | provenance | | +| ErbInjection.rb:5:12:5:24 | ...[...] | ErbInjection.rb:5:5:5:8 | name | provenance | | +| ErbInjection.rb:8:5:8:12 | bad_text | ErbInjection.rb:15:24:15:31 | bad_text | provenance | | +| ErbInjection.rb:8:5:8:12 | bad_text | ErbInjection.rb:19:20:19:27 | bad_text | provenance | | +| ErbInjection.rb:8:16:11:14 | ... % ... | ErbInjection.rb:8:5:8:12 | bad_text | provenance | | +| ErbInjection.rb:11:11:11:14 | name | ErbInjection.rb:8:16:11:14 | ... % ... | provenance | | +| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:11:11:11:14 | name | provenance | | +| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | provenance | | +| SlimInjection.rb:5:5:5:8 | name | SlimInjection.rb:23:23:23:35 | { ... } [captured bad2_text] | provenance | | +| SlimInjection.rb:5:12:5:17 | call to params | SlimInjection.rb:5:12:5:24 | ...[...] | provenance | | +| SlimInjection.rb:5:12:5:24 | ...[...] | SlimInjection.rb:5:5:5:8 | name | provenance | | +| SlimInjection.rb:8:16:11:14 | ... % ... | SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | provenance | | +| SlimInjection.rb:11:11:11:14 | name | SlimInjection.rb:8:16:11:14 | ... % ... | provenance | | +| SlimInjection.rb:14:23:14:34 | { ... } [captured bad_text] | SlimInjection.rb:14:25:14:32 | bad_text | provenance | | +| SlimInjection.rb:23:23:23:35 | { ... } [captured bad2_text] | SlimInjection.rb:23:25:23:33 | bad2_text | provenance | | nodes | ErbInjection.rb:5:5:5:8 | name | semmle.label | name | | ErbInjection.rb:5:12:5:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/experimental/XPathInjection/XPathInjection.expected b/ruby/ql/test/query-tests/experimental/XPathInjection/XPathInjection.expected index 789eef9f4fcc..d6c6f0b34bc8 100644 --- a/ruby/ql/test/query-tests/experimental/XPathInjection/XPathInjection.expected +++ b/ruby/ql/test/query-tests/experimental/XPathInjection/XPathInjection.expected @@ -1,20 +1,20 @@ edges -| LibxmlInjection.rb:5:5:5:8 | name | LibxmlInjection.rb:21:31:21:41 | "//#{...}" | -| LibxmlInjection.rb:5:5:5:8 | name | LibxmlInjection.rb:27:25:27:35 | "//#{...}" | -| LibxmlInjection.rb:5:12:5:17 | call to params | LibxmlInjection.rb:5:12:5:29 | ...[...] | -| LibxmlInjection.rb:5:12:5:29 | ...[...] | LibxmlInjection.rb:5:5:5:8 | name | -| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:21:23:21:33 | "//#{...}" | -| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:27:26:27:36 | "//#{...}" | -| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:33:29:33:39 | "//#{...}" | -| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:41:15:41:25 | "//#{...}" | -| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:51:16:51:26 | "//#{...}" | -| NokogiriInjection.rb:5:12:5:17 | call to params | NokogiriInjection.rb:5:12:5:29 | ...[...] | -| NokogiriInjection.rb:5:12:5:29 | ...[...] | NokogiriInjection.rb:5:5:5:8 | name | -| RexmlInjection.rb:5:5:5:8 | name | RexmlInjection.rb:21:40:21:50 | "//#{...}" | -| RexmlInjection.rb:5:5:5:8 | name | RexmlInjection.rb:27:40:27:50 | "//#{...}" | -| RexmlInjection.rb:5:5:5:8 | name | RexmlInjection.rb:35:28:35:38 | "//#{...}" | -| RexmlInjection.rb:5:12:5:17 | call to params | RexmlInjection.rb:5:12:5:29 | ...[...] | -| RexmlInjection.rb:5:12:5:29 | ...[...] | RexmlInjection.rb:5:5:5:8 | name | +| LibxmlInjection.rb:5:5:5:8 | name | LibxmlInjection.rb:21:31:21:41 | "//#{...}" | provenance | | +| LibxmlInjection.rb:5:5:5:8 | name | LibxmlInjection.rb:27:25:27:35 | "//#{...}" | provenance | | +| LibxmlInjection.rb:5:12:5:17 | call to params | LibxmlInjection.rb:5:12:5:29 | ...[...] | provenance | | +| LibxmlInjection.rb:5:12:5:29 | ...[...] | LibxmlInjection.rb:5:5:5:8 | name | provenance | | +| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:21:23:21:33 | "//#{...}" | provenance | | +| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:27:26:27:36 | "//#{...}" | provenance | | +| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:33:29:33:39 | "//#{...}" | provenance | | +| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:41:15:41:25 | "//#{...}" | provenance | | +| NokogiriInjection.rb:5:5:5:8 | name | NokogiriInjection.rb:51:16:51:26 | "//#{...}" | provenance | | +| NokogiriInjection.rb:5:12:5:17 | call to params | NokogiriInjection.rb:5:12:5:29 | ...[...] | provenance | | +| NokogiriInjection.rb:5:12:5:29 | ...[...] | NokogiriInjection.rb:5:5:5:8 | name | provenance | | +| RexmlInjection.rb:5:5:5:8 | name | RexmlInjection.rb:21:40:21:50 | "//#{...}" | provenance | | +| RexmlInjection.rb:5:5:5:8 | name | RexmlInjection.rb:27:40:27:50 | "//#{...}" | provenance | | +| RexmlInjection.rb:5:5:5:8 | name | RexmlInjection.rb:35:28:35:38 | "//#{...}" | provenance | | +| RexmlInjection.rb:5:12:5:17 | call to params | RexmlInjection.rb:5:12:5:29 | ...[...] | provenance | | +| RexmlInjection.rb:5:12:5:29 | ...[...] | RexmlInjection.rb:5:5:5:8 | name | provenance | | nodes | LibxmlInjection.rb:5:5:5:8 | name | semmle.label | name | | LibxmlInjection.rb:5:12:5:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/experimental/cwe-022-ZipSlip/ZipSlip.expected b/ruby/ql/test/query-tests/experimental/cwe-022-ZipSlip/ZipSlip.expected index 0c8be5c24633..b7cfcdc42a3f 100644 --- a/ruby/ql/test/query-tests/experimental/cwe-022-ZipSlip/ZipSlip.expected +++ b/ruby/ql/test/query-tests/experimental/cwe-022-ZipSlip/ZipSlip.expected @@ -1,36 +1,36 @@ edges -| zip_slip.rb:8:5:8:11 | tarfile | zip_slip.rb:9:5:9:11 | tarfile | -| zip_slip.rb:8:15:8:54 | call to new | zip_slip.rb:8:5:8:11 | tarfile | -| zip_slip.rb:9:5:9:11 | tarfile | zip_slip.rb:9:22:9:26 | entry | -| zip_slip.rb:9:22:9:26 | entry | zip_slip.rb:10:19:10:23 | entry | -| zip_slip.rb:10:19:10:23 | entry | zip_slip.rb:10:19:10:33 | call to full_name | -| zip_slip.rb:20:50:20:56 | tarfile | zip_slip.rb:21:7:21:13 | tarfile | -| zip_slip.rb:21:7:21:13 | tarfile | zip_slip.rb:21:30:21:34 | entry | -| zip_slip.rb:21:30:21:34 | entry | zip_slip.rb:22:21:22:25 | entry | -| zip_slip.rb:22:21:22:25 | entry | zip_slip.rb:22:21:22:35 | call to full_name | -| zip_slip.rb:46:5:46:24 | call to open | zip_slip.rb:46:35:46:39 | entry | -| zip_slip.rb:46:35:46:39 | entry | zip_slip.rb:47:17:47:21 | entry | -| zip_slip.rb:47:17:47:21 | entry | zip_slip.rb:47:17:47:26 | call to name | -| zip_slip.rb:56:30:56:37 | zip_file | zip_slip.rb:57:7:57:14 | zip_file | -| zip_slip.rb:57:7:57:14 | zip_file | zip_slip.rb:57:25:57:29 | entry | -| zip_slip.rb:57:25:57:29 | entry | zip_slip.rb:58:19:58:23 | entry | -| zip_slip.rb:58:19:58:23 | entry | zip_slip.rb:58:19:58:28 | call to name | -| zip_slip.rb:90:5:90:8 | gzip | zip_slip.rb:91:11:91:14 | gzip | -| zip_slip.rb:90:12:90:54 | call to open | zip_slip.rb:90:5:90:8 | gzip | -| zip_slip.rb:91:11:91:14 | gzip | zip_slip.rb:97:42:97:56 | compressed_file | -| zip_slip.rb:97:42:97:56 | compressed_file | zip_slip.rb:98:7:98:21 | compressed_file | -| zip_slip.rb:98:7:98:21 | compressed_file | zip_slip.rb:98:32:98:36 | entry | -| zip_slip.rb:98:32:98:36 | entry | zip_slip.rb:99:22:99:26 | entry | -| zip_slip.rb:99:9:99:18 | entry_path | zip_slip.rb:100:21:100:30 | entry_path | -| zip_slip.rb:99:22:99:26 | entry | zip_slip.rb:99:22:99:36 | call to full_name | -| zip_slip.rb:99:22:99:36 | call to full_name | zip_slip.rb:99:9:99:18 | entry_path | -| zip_slip.rb:123:7:123:8 | gz | zip_slip.rb:124:7:124:8 | gz | -| zip_slip.rb:123:12:123:34 | call to new | zip_slip.rb:123:7:123:8 | gz | -| zip_slip.rb:124:7:124:8 | gz | zip_slip.rb:124:19:124:23 | entry | -| zip_slip.rb:124:19:124:23 | entry | zip_slip.rb:125:22:125:26 | entry | -| zip_slip.rb:125:9:125:18 | entry_path | zip_slip.rb:126:21:126:30 | entry_path | -| zip_slip.rb:125:22:125:26 | entry | zip_slip.rb:125:22:125:36 | call to full_name | -| zip_slip.rb:125:22:125:36 | call to full_name | zip_slip.rb:125:9:125:18 | entry_path | +| zip_slip.rb:8:5:8:11 | tarfile | zip_slip.rb:9:5:9:11 | tarfile | provenance | | +| zip_slip.rb:8:15:8:54 | call to new | zip_slip.rb:8:5:8:11 | tarfile | provenance | | +| zip_slip.rb:9:5:9:11 | tarfile | zip_slip.rb:9:22:9:26 | entry | provenance | | +| zip_slip.rb:9:22:9:26 | entry | zip_slip.rb:10:19:10:23 | entry | provenance | | +| zip_slip.rb:10:19:10:23 | entry | zip_slip.rb:10:19:10:33 | call to full_name | provenance | | +| zip_slip.rb:20:50:20:56 | tarfile | zip_slip.rb:21:7:21:13 | tarfile | provenance | | +| zip_slip.rb:21:7:21:13 | tarfile | zip_slip.rb:21:30:21:34 | entry | provenance | | +| zip_slip.rb:21:30:21:34 | entry | zip_slip.rb:22:21:22:25 | entry | provenance | | +| zip_slip.rb:22:21:22:25 | entry | zip_slip.rb:22:21:22:35 | call to full_name | provenance | | +| zip_slip.rb:46:5:46:24 | call to open | zip_slip.rb:46:35:46:39 | entry | provenance | | +| zip_slip.rb:46:35:46:39 | entry | zip_slip.rb:47:17:47:21 | entry | provenance | | +| zip_slip.rb:47:17:47:21 | entry | zip_slip.rb:47:17:47:26 | call to name | provenance | | +| zip_slip.rb:56:30:56:37 | zip_file | zip_slip.rb:57:7:57:14 | zip_file | provenance | | +| zip_slip.rb:57:7:57:14 | zip_file | zip_slip.rb:57:25:57:29 | entry | provenance | | +| zip_slip.rb:57:25:57:29 | entry | zip_slip.rb:58:19:58:23 | entry | provenance | | +| zip_slip.rb:58:19:58:23 | entry | zip_slip.rb:58:19:58:28 | call to name | provenance | | +| zip_slip.rb:90:5:90:8 | gzip | zip_slip.rb:91:11:91:14 | gzip | provenance | | +| zip_slip.rb:90:12:90:54 | call to open | zip_slip.rb:90:5:90:8 | gzip | provenance | | +| zip_slip.rb:91:11:91:14 | gzip | zip_slip.rb:97:42:97:56 | compressed_file | provenance | | +| zip_slip.rb:97:42:97:56 | compressed_file | zip_slip.rb:98:7:98:21 | compressed_file | provenance | | +| zip_slip.rb:98:7:98:21 | compressed_file | zip_slip.rb:98:32:98:36 | entry | provenance | | +| zip_slip.rb:98:32:98:36 | entry | zip_slip.rb:99:22:99:26 | entry | provenance | | +| zip_slip.rb:99:9:99:18 | entry_path | zip_slip.rb:100:21:100:30 | entry_path | provenance | | +| zip_slip.rb:99:22:99:26 | entry | zip_slip.rb:99:22:99:36 | call to full_name | provenance | | +| zip_slip.rb:99:22:99:36 | call to full_name | zip_slip.rb:99:9:99:18 | entry_path | provenance | | +| zip_slip.rb:123:7:123:8 | gz | zip_slip.rb:124:7:124:8 | gz | provenance | | +| zip_slip.rb:123:12:123:34 | call to new | zip_slip.rb:123:7:123:8 | gz | provenance | | +| zip_slip.rb:124:7:124:8 | gz | zip_slip.rb:124:19:124:23 | entry | provenance | | +| zip_slip.rb:124:19:124:23 | entry | zip_slip.rb:125:22:125:26 | entry | provenance | | +| zip_slip.rb:125:9:125:18 | entry_path | zip_slip.rb:126:21:126:30 | entry_path | provenance | | +| zip_slip.rb:125:22:125:26 | entry | zip_slip.rb:125:22:125:36 | call to full_name | provenance | | +| zip_slip.rb:125:22:125:36 | call to full_name | zip_slip.rb:125:9:125:18 | entry_path | provenance | | nodes | zip_slip.rb:8:5:8:11 | tarfile | semmle.label | tarfile | | zip_slip.rb:8:15:8:54 | call to new | semmle.label | call to new | diff --git a/ruby/ql/test/query-tests/experimental/cwe-176/UnicodeBypassValidation.expected b/ruby/ql/test/query-tests/experimental/cwe-176/UnicodeBypassValidation.expected index b79057a8479a..da4709abe453 100644 --- a/ruby/ql/test/query-tests/experimental/cwe-176/UnicodeBypassValidation.expected +++ b/ruby/ql/test/query-tests/experimental/cwe-176/UnicodeBypassValidation.expected @@ -1,34 +1,34 @@ edges -| unicode_normalization.rb:7:5:7:17 | unicode_input | unicode_normalization.rb:8:23:8:35 | unicode_input | -| unicode_normalization.rb:7:5:7:17 | unicode_input | unicode_normalization.rb:9:22:9:34 | unicode_input | -| unicode_normalization.rb:7:21:7:26 | call to params | unicode_normalization.rb:7:21:7:42 | ...[...] | -| unicode_normalization.rb:7:21:7:42 | ...[...] | unicode_normalization.rb:7:5:7:17 | unicode_input | -| unicode_normalization.rb:15:5:15:17 | unicode_input | unicode_normalization.rb:16:27:16:39 | unicode_input | -| unicode_normalization.rb:15:5:15:17 | unicode_input | unicode_normalization.rb:16:27:16:39 | unicode_input | -| unicode_normalization.rb:15:21:15:26 | call to params | unicode_normalization.rb:15:21:15:42 | ...[...] | -| unicode_normalization.rb:15:21:15:26 | call to params | unicode_normalization.rb:15:21:15:42 | ...[...] | -| unicode_normalization.rb:15:21:15:42 | ...[...] | unicode_normalization.rb:15:5:15:17 | unicode_input | -| unicode_normalization.rb:15:21:15:42 | ...[...] | unicode_normalization.rb:15:5:15:17 | unicode_input | -| unicode_normalization.rb:16:5:16:23 | unicode_input_manip | unicode_normalization.rb:17:23:17:41 | unicode_input_manip | -| unicode_normalization.rb:16:5:16:23 | unicode_input_manip | unicode_normalization.rb:18:22:18:40 | unicode_input_manip | -| unicode_normalization.rb:16:27:16:39 | unicode_input | unicode_normalization.rb:16:27:16:59 | call to sub | -| unicode_normalization.rb:16:27:16:39 | unicode_input | unicode_normalization.rb:16:27:16:59 | call to sub | -| unicode_normalization.rb:16:27:16:59 | call to sub | unicode_normalization.rb:16:5:16:23 | unicode_input_manip | -| unicode_normalization.rb:24:5:24:17 | unicode_input | unicode_normalization.rb:25:37:25:49 | unicode_input | -| unicode_normalization.rb:24:21:24:26 | call to params | unicode_normalization.rb:24:21:24:42 | ...[...] | -| unicode_normalization.rb:24:21:24:42 | ...[...] | unicode_normalization.rb:24:5:24:17 | unicode_input | -| unicode_normalization.rb:25:5:25:21 | unicode_html_safe | unicode_normalization.rb:26:23:26:39 | unicode_html_safe | -| unicode_normalization.rb:25:5:25:21 | unicode_html_safe | unicode_normalization.rb:27:22:27:38 | unicode_html_safe | -| unicode_normalization.rb:25:25:25:50 | call to html_escape | unicode_normalization.rb:25:5:25:21 | unicode_html_safe | -| unicode_normalization.rb:25:37:25:49 | unicode_input | unicode_normalization.rb:25:25:25:50 | call to html_escape | -| unicode_normalization.rb:33:5:33:17 | unicode_input | unicode_normalization.rb:34:40:34:52 | unicode_input | -| unicode_normalization.rb:33:21:33:26 | call to params | unicode_normalization.rb:33:21:33:42 | ...[...] | -| unicode_normalization.rb:33:21:33:42 | ...[...] | unicode_normalization.rb:33:5:33:17 | unicode_input | -| unicode_normalization.rb:34:5:34:21 | unicode_html_safe | unicode_normalization.rb:35:23:35:39 | unicode_html_safe | -| unicode_normalization.rb:34:5:34:21 | unicode_html_safe | unicode_normalization.rb:36:22:36:38 | unicode_html_safe | -| unicode_normalization.rb:34:25:34:53 | call to escapeHTML | unicode_normalization.rb:34:25:34:63 | call to html_safe | -| unicode_normalization.rb:34:25:34:63 | call to html_safe | unicode_normalization.rb:34:5:34:21 | unicode_html_safe | -| unicode_normalization.rb:34:40:34:52 | unicode_input | unicode_normalization.rb:34:25:34:53 | call to escapeHTML | +| unicode_normalization.rb:7:5:7:17 | unicode_input | unicode_normalization.rb:8:23:8:35 | unicode_input | provenance | | +| unicode_normalization.rb:7:5:7:17 | unicode_input | unicode_normalization.rb:9:22:9:34 | unicode_input | provenance | | +| unicode_normalization.rb:7:21:7:26 | call to params | unicode_normalization.rb:7:21:7:42 | ...[...] | provenance | | +| unicode_normalization.rb:7:21:7:42 | ...[...] | unicode_normalization.rb:7:5:7:17 | unicode_input | provenance | | +| unicode_normalization.rb:15:5:15:17 | unicode_input | unicode_normalization.rb:16:27:16:39 | unicode_input | provenance | | +| unicode_normalization.rb:15:5:15:17 | unicode_input | unicode_normalization.rb:16:27:16:39 | unicode_input | provenance | | +| unicode_normalization.rb:15:21:15:26 | call to params | unicode_normalization.rb:15:21:15:42 | ...[...] | provenance | | +| unicode_normalization.rb:15:21:15:26 | call to params | unicode_normalization.rb:15:21:15:42 | ...[...] | provenance | | +| unicode_normalization.rb:15:21:15:42 | ...[...] | unicode_normalization.rb:15:5:15:17 | unicode_input | provenance | | +| unicode_normalization.rb:15:21:15:42 | ...[...] | unicode_normalization.rb:15:5:15:17 | unicode_input | provenance | | +| unicode_normalization.rb:16:5:16:23 | unicode_input_manip | unicode_normalization.rb:17:23:17:41 | unicode_input_manip | provenance | | +| unicode_normalization.rb:16:5:16:23 | unicode_input_manip | unicode_normalization.rb:18:22:18:40 | unicode_input_manip | provenance | | +| unicode_normalization.rb:16:27:16:39 | unicode_input | unicode_normalization.rb:16:27:16:59 | call to sub | provenance | | +| unicode_normalization.rb:16:27:16:39 | unicode_input | unicode_normalization.rb:16:27:16:59 | call to sub | provenance | | +| unicode_normalization.rb:16:27:16:59 | call to sub | unicode_normalization.rb:16:5:16:23 | unicode_input_manip | provenance | | +| unicode_normalization.rb:24:5:24:17 | unicode_input | unicode_normalization.rb:25:37:25:49 | unicode_input | provenance | | +| unicode_normalization.rb:24:21:24:26 | call to params | unicode_normalization.rb:24:21:24:42 | ...[...] | provenance | | +| unicode_normalization.rb:24:21:24:42 | ...[...] | unicode_normalization.rb:24:5:24:17 | unicode_input | provenance | | +| unicode_normalization.rb:25:5:25:21 | unicode_html_safe | unicode_normalization.rb:26:23:26:39 | unicode_html_safe | provenance | | +| unicode_normalization.rb:25:5:25:21 | unicode_html_safe | unicode_normalization.rb:27:22:27:38 | unicode_html_safe | provenance | | +| unicode_normalization.rb:25:25:25:50 | call to html_escape | unicode_normalization.rb:25:5:25:21 | unicode_html_safe | provenance | | +| unicode_normalization.rb:25:37:25:49 | unicode_input | unicode_normalization.rb:25:25:25:50 | call to html_escape | provenance | | +| unicode_normalization.rb:33:5:33:17 | unicode_input | unicode_normalization.rb:34:40:34:52 | unicode_input | provenance | | +| unicode_normalization.rb:33:21:33:26 | call to params | unicode_normalization.rb:33:21:33:42 | ...[...] | provenance | | +| unicode_normalization.rb:33:21:33:42 | ...[...] | unicode_normalization.rb:33:5:33:17 | unicode_input | provenance | | +| unicode_normalization.rb:34:5:34:21 | unicode_html_safe | unicode_normalization.rb:35:23:35:39 | unicode_html_safe | provenance | | +| unicode_normalization.rb:34:5:34:21 | unicode_html_safe | unicode_normalization.rb:36:22:36:38 | unicode_html_safe | provenance | | +| unicode_normalization.rb:34:25:34:53 | call to escapeHTML | unicode_normalization.rb:34:25:34:63 | call to html_safe | provenance | | +| unicode_normalization.rb:34:25:34:63 | call to html_safe | unicode_normalization.rb:34:5:34:21 | unicode_html_safe | provenance | | +| unicode_normalization.rb:34:40:34:52 | unicode_input | unicode_normalization.rb:34:25:34:53 | call to escapeHTML | provenance | | nodes | unicode_normalization.rb:7:5:7:17 | unicode_input | semmle.label | unicode_input | | unicode_normalization.rb:7:21:7:26 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.expected b/ruby/ql/test/query-tests/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.expected index 1f066c979b49..e0e85b75ebbe 100644 --- a/ruby/ql/test/query-tests/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.expected +++ b/ruby/ql/test/query-tests/experimental/manually-check-http-verb/ManuallyCheckHttpVerb.expected @@ -1,16 +1,16 @@ edges -| ManuallyCheckHttpVerb.rb:11:5:11:10 | method | ManuallyCheckHttpVerb.rb:12:8:12:22 | ... == ... | -| ManuallyCheckHttpVerb.rb:11:14:11:24 | call to env | ManuallyCheckHttpVerb.rb:11:14:11:42 | ...[...] | -| ManuallyCheckHttpVerb.rb:11:14:11:42 | ...[...] | ManuallyCheckHttpVerb.rb:11:5:11:10 | method | -| ManuallyCheckHttpVerb.rb:19:5:19:10 | method | ManuallyCheckHttpVerb.rb:20:8:20:22 | ... == ... | -| ManuallyCheckHttpVerb.rb:19:14:19:35 | call to request_method | ManuallyCheckHttpVerb.rb:19:5:19:10 | method | -| ManuallyCheckHttpVerb.rb:27:5:27:10 | method | ManuallyCheckHttpVerb.rb:28:8:28:22 | ... == ... | -| ManuallyCheckHttpVerb.rb:27:14:27:27 | call to method | ManuallyCheckHttpVerb.rb:27:5:27:10 | method | -| ManuallyCheckHttpVerb.rb:35:5:35:10 | method | ManuallyCheckHttpVerb.rb:36:8:36:22 | ... == ... | -| ManuallyCheckHttpVerb.rb:35:14:35:39 | call to raw_request_method | ManuallyCheckHttpVerb.rb:35:5:35:10 | method | -| ManuallyCheckHttpVerb.rb:51:7:51:12 | method | ManuallyCheckHttpVerb.rb:52:10:52:23 | ... == ... | -| ManuallyCheckHttpVerb.rb:51:16:51:44 | call to request_method_symbol | ManuallyCheckHttpVerb.rb:51:7:51:12 | method | -| ManuallyCheckHttpVerb.rb:59:10:59:20 | call to env | ManuallyCheckHttpVerb.rb:59:10:59:38 | ...[...] | +| ManuallyCheckHttpVerb.rb:11:5:11:10 | method | ManuallyCheckHttpVerb.rb:12:8:12:22 | ... == ... | provenance | | +| ManuallyCheckHttpVerb.rb:11:14:11:24 | call to env | ManuallyCheckHttpVerb.rb:11:14:11:42 | ...[...] | provenance | | +| ManuallyCheckHttpVerb.rb:11:14:11:42 | ...[...] | ManuallyCheckHttpVerb.rb:11:5:11:10 | method | provenance | | +| ManuallyCheckHttpVerb.rb:19:5:19:10 | method | ManuallyCheckHttpVerb.rb:20:8:20:22 | ... == ... | provenance | | +| ManuallyCheckHttpVerb.rb:19:14:19:35 | call to request_method | ManuallyCheckHttpVerb.rb:19:5:19:10 | method | provenance | | +| ManuallyCheckHttpVerb.rb:27:5:27:10 | method | ManuallyCheckHttpVerb.rb:28:8:28:22 | ... == ... | provenance | | +| ManuallyCheckHttpVerb.rb:27:14:27:27 | call to method | ManuallyCheckHttpVerb.rb:27:5:27:10 | method | provenance | | +| ManuallyCheckHttpVerb.rb:35:5:35:10 | method | ManuallyCheckHttpVerb.rb:36:8:36:22 | ... == ... | provenance | | +| ManuallyCheckHttpVerb.rb:35:14:35:39 | call to raw_request_method | ManuallyCheckHttpVerb.rb:35:5:35:10 | method | provenance | | +| ManuallyCheckHttpVerb.rb:51:7:51:12 | method | ManuallyCheckHttpVerb.rb:52:10:52:23 | ... == ... | provenance | | +| ManuallyCheckHttpVerb.rb:51:16:51:44 | call to request_method_symbol | ManuallyCheckHttpVerb.rb:51:7:51:12 | method | provenance | | +| ManuallyCheckHttpVerb.rb:59:10:59:20 | call to env | ManuallyCheckHttpVerb.rb:59:10:59:38 | ...[...] | provenance | | nodes | ManuallyCheckHttpVerb.rb:4:8:4:19 | call to get? | semmle.label | call to get? | | ManuallyCheckHttpVerb.rb:11:5:11:10 | method | semmle.label | method | diff --git a/ruby/ql/test/query-tests/experimental/weak-params/WeakParams.expected b/ruby/ql/test/query-tests/experimental/weak-params/WeakParams.expected index d84d761c17aa..4f72a24cee77 100644 --- a/ruby/ql/test/query-tests/experimental/weak-params/WeakParams.expected +++ b/ruby/ql/test/query-tests/experimental/weak-params/WeakParams.expected @@ -1,8 +1,8 @@ edges -| WeakParams.rb:5:28:5:53 | call to request_parameters | WeakParams.rb:5:28:5:59 | ...[...] | -| WeakParams.rb:10:28:10:51 | call to query_parameters | WeakParams.rb:10:28:10:57 | ...[...] | -| WeakParams.rb:15:28:15:39 | call to POST | WeakParams.rb:15:28:15:45 | ...[...] | -| WeakParams.rb:20:28:20:38 | call to GET | WeakParams.rb:20:28:20:44 | ...[...] | +| WeakParams.rb:5:28:5:53 | call to request_parameters | WeakParams.rb:5:28:5:59 | ...[...] | provenance | | +| WeakParams.rb:10:28:10:51 | call to query_parameters | WeakParams.rb:10:28:10:57 | ...[...] | provenance | | +| WeakParams.rb:15:28:15:39 | call to POST | WeakParams.rb:15:28:15:45 | ...[...] | provenance | | +| WeakParams.rb:20:28:20:38 | call to GET | WeakParams.rb:20:28:20:44 | ...[...] | provenance | | nodes | WeakParams.rb:5:28:5:53 | call to request_parameters | semmle.label | call to request_parameters | | WeakParams.rb:5:28:5:59 | ...[...] | semmle.label | ...[...] | diff --git a/ruby/ql/test/query-tests/security/cwe-020/MissingFullAnchor/MissingFullAnchor.expected b/ruby/ql/test/query-tests/security/cwe-020/MissingFullAnchor/MissingFullAnchor.expected index f9b1241ea069..4032d044fd86 100644 --- a/ruby/ql/test/query-tests/security/cwe-020/MissingFullAnchor/MissingFullAnchor.expected +++ b/ruby/ql/test/query-tests/security/cwe-020/MissingFullAnchor/MissingFullAnchor.expected @@ -1,7 +1,7 @@ edges -| impl/miss-anchor.rb:2:12:2:15 | name | impl/miss-anchor.rb:3:39:3:42 | name | -| impl/miss-anchor.rb:6:12:6:15 | name | impl/miss-anchor.rb:7:43:7:46 | name | -| impl/miss-anchor.rb:14:12:14:15 | name | impl/miss-anchor.rb:15:47:15:50 | name | +| impl/miss-anchor.rb:2:12:2:15 | name | impl/miss-anchor.rb:3:39:3:42 | name | provenance | | +| impl/miss-anchor.rb:6:12:6:15 | name | impl/miss-anchor.rb:7:43:7:46 | name | provenance | | +| impl/miss-anchor.rb:14:12:14:15 | name | impl/miss-anchor.rb:15:47:15:50 | name | provenance | | nodes | impl/miss-anchor.rb:2:12:2:15 | name | semmle.label | name | | impl/miss-anchor.rb:3:39:3:42 | name | semmle.label | name | diff --git a/ruby/ql/test/query-tests/security/cwe-022/PathInjection.expected b/ruby/ql/test/query-tests/security/cwe-022/PathInjection.expected index a93fdd9f008d..fe9751e6585c 100644 --- a/ruby/ql/test/query-tests/security/cwe-022/PathInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-022/PathInjection.expected @@ -1,71 +1,71 @@ edges -| ArchiveApiPathTraversal.rb:5:26:5:31 | call to params | ArchiveApiPathTraversal.rb:5:26:5:42 | ...[...] | -| ArchiveApiPathTraversal.rb:5:26:5:42 | ...[...] | ArchiveApiPathTraversal.rb:49:17:49:27 | destination | -| ArchiveApiPathTraversal.rb:10:11:10:16 | call to params | ArchiveApiPathTraversal.rb:10:11:10:23 | ...[...] | -| ArchiveApiPathTraversal.rb:10:11:10:23 | ...[...] | ArchiveApiPathTraversal.rb:67:13:67:16 | file | -| ArchiveApiPathTraversal.rb:15:9:15:14 | call to params | ArchiveApiPathTraversal.rb:15:9:15:25 | ...[...] | -| ArchiveApiPathTraversal.rb:15:9:15:25 | ...[...] | ArchiveApiPathTraversal.rb:75:11:75:18 | filename | -| ArchiveApiPathTraversal.rb:49:17:49:27 | destination | ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end [captured destination] | -| ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end [captured destination] | ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | -| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | ArchiveApiPathTraversal.rb:52:38:52:48 | destination | -| ArchiveApiPathTraversal.rb:52:9:52:24 | destination_file | ArchiveApiPathTraversal.rb:59:21:59:36 | destination_file | -| ArchiveApiPathTraversal.rb:52:28:52:67 | call to join | ArchiveApiPathTraversal.rb:52:9:52:24 | destination_file | -| ArchiveApiPathTraversal.rb:52:38:52:48 | destination | ArchiveApiPathTraversal.rb:52:28:52:67 | call to join | -| ArchiveApiPathTraversal.rb:67:13:67:16 | file | ArchiveApiPathTraversal.rb:68:20:68:23 | file | -| ArchiveApiPathTraversal.rb:75:11:75:18 | filename | ArchiveApiPathTraversal.rb:76:19:76:26 | filename | -| tainted_path.rb:4:5:4:8 | path | tainted_path.rb:5:26:5:29 | path | -| tainted_path.rb:4:12:4:17 | call to params | tainted_path.rb:4:12:4:24 | ...[...] | -| tainted_path.rb:4:12:4:24 | ...[...] | tainted_path.rb:4:5:4:8 | path | -| tainted_path.rb:10:5:10:8 | path | tainted_path.rb:11:26:11:29 | path | -| tainted_path.rb:10:12:10:43 | call to absolute_path | tainted_path.rb:10:5:10:8 | path | -| tainted_path.rb:10:31:10:36 | call to params | tainted_path.rb:10:31:10:43 | ...[...] | -| tainted_path.rb:10:31:10:43 | ...[...] | tainted_path.rb:10:12:10:43 | call to absolute_path | -| tainted_path.rb:16:5:16:8 | path | tainted_path.rb:17:26:17:29 | path | -| tainted_path.rb:16:15:16:41 | call to dirname | tainted_path.rb:16:5:16:8 | path | -| tainted_path.rb:16:28:16:33 | call to params | tainted_path.rb:16:28:16:40 | ...[...] | -| tainted_path.rb:16:28:16:40 | ...[...] | tainted_path.rb:16:15:16:41 | call to dirname | -| tainted_path.rb:22:5:22:8 | path | tainted_path.rb:23:26:23:29 | path | -| tainted_path.rb:22:12:22:41 | call to expand_path | tainted_path.rb:22:5:22:8 | path | -| tainted_path.rb:22:29:22:34 | call to params | tainted_path.rb:22:29:22:41 | ...[...] | -| tainted_path.rb:22:29:22:41 | ...[...] | tainted_path.rb:22:12:22:41 | call to expand_path | -| tainted_path.rb:28:5:28:8 | path | tainted_path.rb:29:26:29:29 | path | -| tainted_path.rb:28:12:28:34 | call to path | tainted_path.rb:28:5:28:8 | path | -| tainted_path.rb:28:22:28:27 | call to params | tainted_path.rb:28:22:28:34 | ...[...] | -| tainted_path.rb:28:22:28:34 | ...[...] | tainted_path.rb:28:12:28:34 | call to path | -| tainted_path.rb:34:5:34:8 | path | tainted_path.rb:35:26:35:29 | path | -| tainted_path.rb:34:12:34:41 | call to realdirpath | tainted_path.rb:34:5:34:8 | path | -| tainted_path.rb:34:29:34:34 | call to params | tainted_path.rb:34:29:34:41 | ...[...] | -| tainted_path.rb:34:29:34:41 | ...[...] | tainted_path.rb:34:12:34:41 | call to realdirpath | -| tainted_path.rb:40:5:40:8 | path | tainted_path.rb:41:26:41:29 | path | -| tainted_path.rb:40:12:40:38 | call to realpath | tainted_path.rb:40:5:40:8 | path | -| tainted_path.rb:40:26:40:31 | call to params | tainted_path.rb:40:26:40:38 | ...[...] | -| tainted_path.rb:40:26:40:38 | ...[...] | tainted_path.rb:40:12:40:38 | call to realpath | -| tainted_path.rb:47:5:47:8 | path | tainted_path.rb:48:26:48:29 | path | -| tainted_path.rb:47:12:47:63 | call to join | tainted_path.rb:47:5:47:8 | path | -| tainted_path.rb:47:43:47:48 | call to params | tainted_path.rb:47:43:47:55 | ...[...] | -| tainted_path.rb:47:43:47:55 | ...[...] | tainted_path.rb:47:12:47:63 | call to join | -| tainted_path.rb:59:5:59:8 | path | tainted_path.rb:60:26:60:29 | path | -| tainted_path.rb:59:12:59:53 | call to new | tainted_path.rb:59:5:59:8 | path | -| tainted_path.rb:59:40:59:45 | call to params | tainted_path.rb:59:40:59:52 | ...[...] | -| tainted_path.rb:59:40:59:52 | ...[...] | tainted_path.rb:59:12:59:53 | call to new | -| tainted_path.rb:71:5:71:8 | path | tainted_path.rb:72:15:72:18 | path | -| tainted_path.rb:71:12:71:53 | call to new | tainted_path.rb:71:5:71:8 | path | -| tainted_path.rb:71:40:71:45 | call to params | tainted_path.rb:71:40:71:52 | ...[...] | -| tainted_path.rb:71:40:71:52 | ...[...] | tainted_path.rb:71:12:71:53 | call to new | -| tainted_path.rb:77:5:77:8 | path | tainted_path.rb:78:19:78:22 | path | -| tainted_path.rb:77:5:77:8 | path | tainted_path.rb:79:14:79:17 | path | -| tainted_path.rb:77:12:77:53 | call to new | tainted_path.rb:77:5:77:8 | path | -| tainted_path.rb:77:40:77:45 | call to params | tainted_path.rb:77:40:77:52 | ...[...] | -| tainted_path.rb:77:40:77:52 | ...[...] | tainted_path.rb:77:12:77:53 | call to new | -| tainted_path.rb:84:5:84:8 | path | tainted_path.rb:85:10:85:13 | path | -| tainted_path.rb:84:5:84:8 | path | tainted_path.rb:86:25:86:28 | path | -| tainted_path.rb:84:12:84:53 | call to new | tainted_path.rb:84:5:84:8 | path | -| tainted_path.rb:84:40:84:45 | call to params | tainted_path.rb:84:40:84:52 | ...[...] | -| tainted_path.rb:84:40:84:52 | ...[...] | tainted_path.rb:84:12:84:53 | call to new | -| tainted_path.rb:90:5:90:8 | path | tainted_path.rb:92:11:92:14 | path | -| tainted_path.rb:90:12:90:53 | call to new | tainted_path.rb:90:5:90:8 | path | -| tainted_path.rb:90:40:90:45 | call to params | tainted_path.rb:90:40:90:52 | ...[...] | -| tainted_path.rb:90:40:90:52 | ...[...] | tainted_path.rb:90:12:90:53 | call to new | +| ArchiveApiPathTraversal.rb:5:26:5:31 | call to params | ArchiveApiPathTraversal.rb:5:26:5:42 | ...[...] | provenance | | +| ArchiveApiPathTraversal.rb:5:26:5:42 | ...[...] | ArchiveApiPathTraversal.rb:49:17:49:27 | destination | provenance | | +| ArchiveApiPathTraversal.rb:10:11:10:16 | call to params | ArchiveApiPathTraversal.rb:10:11:10:23 | ...[...] | provenance | | +| ArchiveApiPathTraversal.rb:10:11:10:23 | ...[...] | ArchiveApiPathTraversal.rb:67:13:67:16 | file | provenance | | +| ArchiveApiPathTraversal.rb:15:9:15:14 | call to params | ArchiveApiPathTraversal.rb:15:9:15:25 | ...[...] | provenance | | +| ArchiveApiPathTraversal.rb:15:9:15:25 | ...[...] | ArchiveApiPathTraversal.rb:75:11:75:18 | filename | provenance | | +| ArchiveApiPathTraversal.rb:49:17:49:27 | destination | ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end [captured destination] | provenance | | +| ArchiveApiPathTraversal.rb:50:36:64:7 | do ... end [captured destination] | ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | provenance | | +| ArchiveApiPathTraversal.rb:51:16:63:9 | do ... end [captured destination] | ArchiveApiPathTraversal.rb:52:38:52:48 | destination | provenance | | +| ArchiveApiPathTraversal.rb:52:9:52:24 | destination_file | ArchiveApiPathTraversal.rb:59:21:59:36 | destination_file | provenance | | +| ArchiveApiPathTraversal.rb:52:28:52:67 | call to join | ArchiveApiPathTraversal.rb:52:9:52:24 | destination_file | provenance | | +| ArchiveApiPathTraversal.rb:52:38:52:48 | destination | ArchiveApiPathTraversal.rb:52:28:52:67 | call to join | provenance | | +| ArchiveApiPathTraversal.rb:67:13:67:16 | file | ArchiveApiPathTraversal.rb:68:20:68:23 | file | provenance | | +| ArchiveApiPathTraversal.rb:75:11:75:18 | filename | ArchiveApiPathTraversal.rb:76:19:76:26 | filename | provenance | | +| tainted_path.rb:4:5:4:8 | path | tainted_path.rb:5:26:5:29 | path | provenance | | +| tainted_path.rb:4:12:4:17 | call to params | tainted_path.rb:4:12:4:24 | ...[...] | provenance | | +| tainted_path.rb:4:12:4:24 | ...[...] | tainted_path.rb:4:5:4:8 | path | provenance | | +| tainted_path.rb:10:5:10:8 | path | tainted_path.rb:11:26:11:29 | path | provenance | | +| tainted_path.rb:10:12:10:43 | call to absolute_path | tainted_path.rb:10:5:10:8 | path | provenance | | +| tainted_path.rb:10:31:10:36 | call to params | tainted_path.rb:10:31:10:43 | ...[...] | provenance | | +| tainted_path.rb:10:31:10:43 | ...[...] | tainted_path.rb:10:12:10:43 | call to absolute_path | provenance | | +| tainted_path.rb:16:5:16:8 | path | tainted_path.rb:17:26:17:29 | path | provenance | | +| tainted_path.rb:16:15:16:41 | call to dirname | tainted_path.rb:16:5:16:8 | path | provenance | | +| tainted_path.rb:16:28:16:33 | call to params | tainted_path.rb:16:28:16:40 | ...[...] | provenance | | +| tainted_path.rb:16:28:16:40 | ...[...] | tainted_path.rb:16:15:16:41 | call to dirname | provenance | | +| tainted_path.rb:22:5:22:8 | path | tainted_path.rb:23:26:23:29 | path | provenance | | +| tainted_path.rb:22:12:22:41 | call to expand_path | tainted_path.rb:22:5:22:8 | path | provenance | | +| tainted_path.rb:22:29:22:34 | call to params | tainted_path.rb:22:29:22:41 | ...[...] | provenance | | +| tainted_path.rb:22:29:22:41 | ...[...] | tainted_path.rb:22:12:22:41 | call to expand_path | provenance | | +| tainted_path.rb:28:5:28:8 | path | tainted_path.rb:29:26:29:29 | path | provenance | | +| tainted_path.rb:28:12:28:34 | call to path | tainted_path.rb:28:5:28:8 | path | provenance | | +| tainted_path.rb:28:22:28:27 | call to params | tainted_path.rb:28:22:28:34 | ...[...] | provenance | | +| tainted_path.rb:28:22:28:34 | ...[...] | tainted_path.rb:28:12:28:34 | call to path | provenance | | +| tainted_path.rb:34:5:34:8 | path | tainted_path.rb:35:26:35:29 | path | provenance | | +| tainted_path.rb:34:12:34:41 | call to realdirpath | tainted_path.rb:34:5:34:8 | path | provenance | | +| tainted_path.rb:34:29:34:34 | call to params | tainted_path.rb:34:29:34:41 | ...[...] | provenance | | +| tainted_path.rb:34:29:34:41 | ...[...] | tainted_path.rb:34:12:34:41 | call to realdirpath | provenance | | +| tainted_path.rb:40:5:40:8 | path | tainted_path.rb:41:26:41:29 | path | provenance | | +| tainted_path.rb:40:12:40:38 | call to realpath | tainted_path.rb:40:5:40:8 | path | provenance | | +| tainted_path.rb:40:26:40:31 | call to params | tainted_path.rb:40:26:40:38 | ...[...] | provenance | | +| tainted_path.rb:40:26:40:38 | ...[...] | tainted_path.rb:40:12:40:38 | call to realpath | provenance | | +| tainted_path.rb:47:5:47:8 | path | tainted_path.rb:48:26:48:29 | path | provenance | | +| tainted_path.rb:47:12:47:63 | call to join | tainted_path.rb:47:5:47:8 | path | provenance | | +| tainted_path.rb:47:43:47:48 | call to params | tainted_path.rb:47:43:47:55 | ...[...] | provenance | | +| tainted_path.rb:47:43:47:55 | ...[...] | tainted_path.rb:47:12:47:63 | call to join | provenance | | +| tainted_path.rb:59:5:59:8 | path | tainted_path.rb:60:26:60:29 | path | provenance | | +| tainted_path.rb:59:12:59:53 | call to new | tainted_path.rb:59:5:59:8 | path | provenance | | +| tainted_path.rb:59:40:59:45 | call to params | tainted_path.rb:59:40:59:52 | ...[...] | provenance | | +| tainted_path.rb:59:40:59:52 | ...[...] | tainted_path.rb:59:12:59:53 | call to new | provenance | | +| tainted_path.rb:71:5:71:8 | path | tainted_path.rb:72:15:72:18 | path | provenance | | +| tainted_path.rb:71:12:71:53 | call to new | tainted_path.rb:71:5:71:8 | path | provenance | | +| tainted_path.rb:71:40:71:45 | call to params | tainted_path.rb:71:40:71:52 | ...[...] | provenance | | +| tainted_path.rb:71:40:71:52 | ...[...] | tainted_path.rb:71:12:71:53 | call to new | provenance | | +| tainted_path.rb:77:5:77:8 | path | tainted_path.rb:78:19:78:22 | path | provenance | | +| tainted_path.rb:77:5:77:8 | path | tainted_path.rb:79:14:79:17 | path | provenance | | +| tainted_path.rb:77:12:77:53 | call to new | tainted_path.rb:77:5:77:8 | path | provenance | | +| tainted_path.rb:77:40:77:45 | call to params | tainted_path.rb:77:40:77:52 | ...[...] | provenance | | +| tainted_path.rb:77:40:77:52 | ...[...] | tainted_path.rb:77:12:77:53 | call to new | provenance | | +| tainted_path.rb:84:5:84:8 | path | tainted_path.rb:85:10:85:13 | path | provenance | | +| tainted_path.rb:84:5:84:8 | path | tainted_path.rb:86:25:86:28 | path | provenance | | +| tainted_path.rb:84:12:84:53 | call to new | tainted_path.rb:84:5:84:8 | path | provenance | | +| tainted_path.rb:84:40:84:45 | call to params | tainted_path.rb:84:40:84:52 | ...[...] | provenance | | +| tainted_path.rb:84:40:84:52 | ...[...] | tainted_path.rb:84:12:84:53 | call to new | provenance | | +| tainted_path.rb:90:5:90:8 | path | tainted_path.rb:92:11:92:14 | path | provenance | | +| tainted_path.rb:90:12:90:53 | call to new | tainted_path.rb:90:5:90:8 | path | provenance | | +| tainted_path.rb:90:40:90:45 | call to params | tainted_path.rb:90:40:90:52 | ...[...] | provenance | | +| tainted_path.rb:90:40:90:52 | ...[...] | tainted_path.rb:90:12:90:53 | call to new | provenance | | nodes | ArchiveApiPathTraversal.rb:5:26:5:31 | call to params | semmle.label | call to params | | ArchiveApiPathTraversal.rb:5:26:5:42 | ...[...] | semmle.label | ...[...] | diff --git a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected index 24ae9c623200..be4473409b78 100644 --- a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected @@ -1,26 +1,26 @@ edges -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:7:10:7:15 | #{...} | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:8:16:8:18 | cmd | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:10:14:10:16 | cmd | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:11:17:11:22 | #{...} | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:13:9:13:14 | #{...} | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:29:19:29:24 | #{...} | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:33:24:33:36 | "echo #{...}" | -| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:34:39:34:51 | "grep #{...}" | -| CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:6:15:6:26 | ...[...] | -| CommandInjection.rb:6:15:6:26 | ...[...] | CommandInjection.rb:6:9:6:11 | cmd | -| CommandInjection.rb:46:9:46:11 | cmd | CommandInjection.rb:50:24:50:36 | "echo #{...}" | -| CommandInjection.rb:46:15:46:20 | call to params | CommandInjection.rb:46:15:46:26 | ...[...] | -| CommandInjection.rb:46:15:46:26 | ...[...] | CommandInjection.rb:46:9:46:11 | cmd | -| CommandInjection.rb:54:7:54:9 | cmd | CommandInjection.rb:59:14:59:16 | cmd | -| CommandInjection.rb:54:13:54:18 | call to params | CommandInjection.rb:54:13:54:24 | ...[...] | -| CommandInjection.rb:54:13:54:24 | ...[...] | CommandInjection.rb:54:7:54:9 | cmd | -| CommandInjection.rb:73:18:73:23 | number | CommandInjection.rb:74:14:74:29 | "echo #{...}" | -| CommandInjection.rb:81:23:81:33 | blah_number | CommandInjection.rb:82:14:82:34 | "echo #{...}" | -| CommandInjection.rb:91:22:91:37 | ...[...] | CommandInjection.rb:91:14:91:39 | "echo #{...}" | -| CommandInjection.rb:103:9:103:12 | file | CommandInjection.rb:104:16:104:28 | "cat #{...}" | -| CommandInjection.rb:103:16:103:21 | call to params | CommandInjection.rb:103:16:103:28 | ...[...] | -| CommandInjection.rb:103:16:103:28 | ...[...] | CommandInjection.rb:103:9:103:12 | file | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:7:10:7:15 | #{...} | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:8:16:8:18 | cmd | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:10:14:10:16 | cmd | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:11:17:11:22 | #{...} | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:13:9:13:14 | #{...} | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:29:19:29:24 | #{...} | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:33:24:33:36 | "echo #{...}" | provenance | | +| CommandInjection.rb:6:9:6:11 | cmd | CommandInjection.rb:34:39:34:51 | "grep #{...}" | provenance | | +| CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:6:15:6:26 | ...[...] | provenance | | +| CommandInjection.rb:6:15:6:26 | ...[...] | CommandInjection.rb:6:9:6:11 | cmd | provenance | | +| CommandInjection.rb:46:9:46:11 | cmd | CommandInjection.rb:50:24:50:36 | "echo #{...}" | provenance | | +| CommandInjection.rb:46:15:46:20 | call to params | CommandInjection.rb:46:15:46:26 | ...[...] | provenance | | +| CommandInjection.rb:46:15:46:26 | ...[...] | CommandInjection.rb:46:9:46:11 | cmd | provenance | | +| CommandInjection.rb:54:7:54:9 | cmd | CommandInjection.rb:59:14:59:16 | cmd | provenance | | +| CommandInjection.rb:54:13:54:18 | call to params | CommandInjection.rb:54:13:54:24 | ...[...] | provenance | | +| CommandInjection.rb:54:13:54:24 | ...[...] | CommandInjection.rb:54:7:54:9 | cmd | provenance | | +| CommandInjection.rb:73:18:73:23 | number | CommandInjection.rb:74:14:74:29 | "echo #{...}" | provenance | | +| CommandInjection.rb:81:23:81:33 | blah_number | CommandInjection.rb:82:14:82:34 | "echo #{...}" | provenance | | +| CommandInjection.rb:91:22:91:37 | ...[...] | CommandInjection.rb:91:14:91:39 | "echo #{...}" | provenance | | +| CommandInjection.rb:103:9:103:12 | file | CommandInjection.rb:104:16:104:28 | "cat #{...}" | provenance | | +| CommandInjection.rb:103:16:103:21 | call to params | CommandInjection.rb:103:16:103:28 | ...[...] | provenance | | +| CommandInjection.rb:103:16:103:28 | ...[...] | CommandInjection.rb:103:9:103:12 | file | provenance | | nodes | CommandInjection.rb:6:9:6:11 | cmd | semmle.label | cmd | | CommandInjection.rb:6:15:6:20 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-078/KernelOpen/KernelOpen.expected b/ruby/ql/test/query-tests/security/cwe-078/KernelOpen/KernelOpen.expected index 506ea30d53c3..67e618a3a1fd 100644 --- a/ruby/ql/test/query-tests/security/cwe-078/KernelOpen/KernelOpen.expected +++ b/ruby/ql/test/query-tests/security/cwe-078/KernelOpen/KernelOpen.expected @@ -1,17 +1,17 @@ edges -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:4:10:4:13 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:5:13:5:16 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:6:14:6:17 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:7:16:7:19 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:8:17:8:20 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:9:16:9:19 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:10:18:10:21 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:11:14:11:17 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:13:23:13:26 | file | -| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:26:10:26:13 | file | -| KernelOpen.rb:3:12:3:17 | call to params | KernelOpen.rb:3:12:3:24 | ...[...] | -| KernelOpen.rb:3:12:3:24 | ...[...] | KernelOpen.rb:3:5:3:8 | file | -| KernelOpen.rb:13:23:13:26 | file | KernelOpen.rb:13:13:13:31 | call to join | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:4:10:4:13 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:5:13:5:16 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:6:14:6:17 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:7:16:7:19 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:8:17:8:20 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:9:16:9:19 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:10:18:10:21 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:11:14:11:17 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:13:23:13:26 | file | provenance | | +| KernelOpen.rb:3:5:3:8 | file | KernelOpen.rb:26:10:26:13 | file | provenance | | +| KernelOpen.rb:3:12:3:17 | call to params | KernelOpen.rb:3:12:3:24 | ...[...] | provenance | | +| KernelOpen.rb:3:12:3:24 | ...[...] | KernelOpen.rb:3:5:3:8 | file | provenance | | +| KernelOpen.rb:13:23:13:26 | file | KernelOpen.rb:13:13:13:31 | call to join | provenance | | nodes | KernelOpen.rb:3:5:3:8 | file | semmle.label | file | | KernelOpen.rb:3:12:3:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected b/ruby/ql/test/query-tests/security/cwe-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected index a8ded2881ede..ae05501bfa7e 100644 --- a/ruby/ql/test/query-tests/security/cwe-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected +++ b/ruby/ql/test/query-tests/security/cwe-078/UnsafeShellCommandConstruction/UnsafeShellCommandConstruction.expected @@ -1,21 +1,21 @@ edges -| impl/sub/notImported.rb:2:12:2:17 | target | impl/sub/notImported.rb:3:19:3:27 | #{...} | -| impl/sub/other2.rb:2:12:2:17 | target | impl/sub/other2.rb:3:19:3:27 | #{...} | -| impl/sub/other.rb:2:12:2:17 | target | impl/sub/other.rb:3:19:3:27 | #{...} | -| impl/unsafeShell.rb:2:12:2:17 | target | impl/unsafeShell.rb:3:19:3:27 | #{...} | -| impl/unsafeShell.rb:6:12:6:12 | x | impl/unsafeShell.rb:7:32:7:32 | x | -| impl/unsafeShell.rb:15:47:15:64 | innocent_file_path | impl/unsafeShell.rb:20:21:20:41 | #{...} | -| impl/unsafeShell.rb:23:15:23:23 | file_path | impl/unsafeShell.rb:26:19:26:30 | #{...} | -| impl/unsafeShell.rb:33:12:33:17 | target | impl/unsafeShell.rb:34:19:34:27 | #{...} | -| impl/unsafeShell.rb:37:10:37:10 | x | impl/unsafeShell.rb:38:19:38:22 | #{...} | -| impl/unsafeShell.rb:47:16:47:21 | target | impl/unsafeShell.rb:48:19:48:27 | #{...} | -| impl/unsafeShell.rb:51:17:51:17 | x | impl/unsafeShell.rb:52:14:52:14 | x | -| impl/unsafeShell.rb:51:17:51:17 | x | impl/unsafeShell.rb:54:29:54:29 | x | -| impl/unsafeShell.rb:57:21:57:21 | x | impl/unsafeShell.rb:58:23:58:23 | x | -| impl/unsafeShell.rb:61:20:61:20 | x | impl/unsafeShell.rb:63:14:63:14 | x | -| impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | impl/unsafeShell.rb:64:14:64:16 | arr | -| impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | impl/unsafeShell.rb:68:14:68:16 | arr | -| impl/unsafeShell.rb:63:14:63:14 | x | impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | +| impl/sub/notImported.rb:2:12:2:17 | target | impl/sub/notImported.rb:3:19:3:27 | #{...} | provenance | | +| impl/sub/other2.rb:2:12:2:17 | target | impl/sub/other2.rb:3:19:3:27 | #{...} | provenance | | +| impl/sub/other.rb:2:12:2:17 | target | impl/sub/other.rb:3:19:3:27 | #{...} | provenance | | +| impl/unsafeShell.rb:2:12:2:17 | target | impl/unsafeShell.rb:3:19:3:27 | #{...} | provenance | | +| impl/unsafeShell.rb:6:12:6:12 | x | impl/unsafeShell.rb:7:32:7:32 | x | provenance | | +| impl/unsafeShell.rb:15:47:15:64 | innocent_file_path | impl/unsafeShell.rb:20:21:20:41 | #{...} | provenance | | +| impl/unsafeShell.rb:23:15:23:23 | file_path | impl/unsafeShell.rb:26:19:26:30 | #{...} | provenance | | +| impl/unsafeShell.rb:33:12:33:17 | target | impl/unsafeShell.rb:34:19:34:27 | #{...} | provenance | | +| impl/unsafeShell.rb:37:10:37:10 | x | impl/unsafeShell.rb:38:19:38:22 | #{...} | provenance | | +| impl/unsafeShell.rb:47:16:47:21 | target | impl/unsafeShell.rb:48:19:48:27 | #{...} | provenance | | +| impl/unsafeShell.rb:51:17:51:17 | x | impl/unsafeShell.rb:52:14:52:14 | x | provenance | | +| impl/unsafeShell.rb:51:17:51:17 | x | impl/unsafeShell.rb:54:29:54:29 | x | provenance | | +| impl/unsafeShell.rb:57:21:57:21 | x | impl/unsafeShell.rb:58:23:58:23 | x | provenance | | +| impl/unsafeShell.rb:61:20:61:20 | x | impl/unsafeShell.rb:63:14:63:14 | x | provenance | | +| impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | impl/unsafeShell.rb:64:14:64:16 | arr | provenance | | +| impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | impl/unsafeShell.rb:68:14:68:16 | arr | provenance | | +| impl/unsafeShell.rb:63:14:63:14 | x | impl/unsafeShell.rb:63:5:63:7 | [post] arr [element] | provenance | | nodes | impl/sub/notImported.rb:2:12:2:17 | target | semmle.label | target | | impl/sub/notImported.rb:3:19:3:27 | #{...} | semmle.label | #{...} | diff --git a/ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.expected b/ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.expected index 284cd463d023..650168f7bce5 100644 --- a/ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.expected +++ b/ruby/ql/test/query-tests/security/cwe-079/ReflectedXSS.expected @@ -1,46 +1,46 @@ edges -| app/controllers/foo/bars_controller.rb:9:12:9:17 | call to params | app/controllers/foo/bars_controller.rb:9:12:9:29 | ...[...] | -| app/controllers/foo/bars_controller.rb:9:12:9:29 | ...[...] | app/views/foo/bars/show.html.erb:46:5:46:13 | call to user_name | -| app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | -| app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | app/views/foo/bars/show.html.erb:50:5:50:18 | call to user_name_memo | -| app/controllers/foo/bars_controller.rb:13:20:13:25 | call to params | app/controllers/foo/bars_controller.rb:13:20:13:37 | ...[...] | -| app/controllers/foo/bars_controller.rb:13:20:13:37 | ...[...] | app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | -| app/controllers/foo/bars_controller.rb:13:20:13:37 | ...[...] | app/views/foo/bars/show.html.erb:50:5:50:18 | call to user_name_memo | -| app/controllers/foo/bars_controller.rb:17:21:17:26 | call to params | app/controllers/foo/bars_controller.rb:17:21:17:36 | ...[...] | -| app/controllers/foo/bars_controller.rb:17:21:17:36 | ...[...] | app/views/foo/bars/show.html.erb:2:18:2:30 | @user_website | -| app/controllers/foo/bars_controller.rb:18:5:18:6 | dt | app/controllers/foo/bars_controller.rb:19:22:19:23 | dt | -| app/controllers/foo/bars_controller.rb:18:10:18:15 | call to params | app/controllers/foo/bars_controller.rb:18:10:18:22 | ...[...] | -| app/controllers/foo/bars_controller.rb:18:10:18:22 | ...[...] | app/controllers/foo/bars_controller.rb:18:5:18:6 | dt | -| app/controllers/foo/bars_controller.rb:19:22:19:23 | dt | app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | -| app/controllers/foo/bars_controller.rb:19:22:19:23 | dt | app/views/foo/bars/show.html.erb:40:3:40:16 | @instance_text | -| app/controllers/foo/bars_controller.rb:24:39:24:44 | call to params | app/controllers/foo/bars_controller.rb:24:39:24:59 | ...[...] | -| app/controllers/foo/bars_controller.rb:24:39:24:59 | ...[...] | app/controllers/foo/bars_controller.rb:24:39:24:59 | ... = ... | -| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:5:9:5:20 | call to display_text | -| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | -| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns [element :display_text] | -| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns [element :display_text] | -| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:35:3:35:14 | call to display_text | -| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | -| app/controllers/foo/bars_controller.rb:30:5:30:7 | str | app/controllers/foo/bars_controller.rb:31:5:31:7 | str | -| app/controllers/foo/bars_controller.rb:30:11:30:16 | call to params | app/controllers/foo/bars_controller.rb:30:11:30:28 | ...[...] | -| app/controllers/foo/bars_controller.rb:30:11:30:28 | ...[...] | app/controllers/foo/bars_controller.rb:30:5:30:7 | str | -| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | -| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | -| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | -| app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | -| app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:8:9:8:36 | ...[...] | -| app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:12:9:12:26 | ...[...] | -| app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:17:15:17:32 | ...[...] | -| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | -| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | -| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | -| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | -| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | -| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | -| app/views/foo/bars/show.html.erb:53:29:53:34 | call to params | app/views/foo/bars/show.html.erb:53:29:53:44 | ...[...] | -| app/views/foo/bars/show.html.erb:56:13:56:18 | call to params | app/views/foo/bars/show.html.erb:56:13:56:28 | ...[...] | -| app/views/foo/bars/show.html.erb:73:19:73:24 | call to params | app/views/foo/bars/show.html.erb:73:19:73:34 | ...[...] | -| app/views/foo/bars/show.html.erb:76:28:76:33 | call to params | app/views/foo/bars/show.html.erb:76:28:76:39 | ...[...] | +| app/controllers/foo/bars_controller.rb:9:12:9:17 | call to params | app/controllers/foo/bars_controller.rb:9:12:9:29 | ...[...] | provenance | | +| app/controllers/foo/bars_controller.rb:9:12:9:29 | ...[...] | app/views/foo/bars/show.html.erb:46:5:46:13 | call to user_name | provenance | | +| app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | provenance | | +| app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | app/views/foo/bars/show.html.erb:50:5:50:18 | call to user_name_memo | provenance | | +| app/controllers/foo/bars_controller.rb:13:20:13:25 | call to params | app/controllers/foo/bars_controller.rb:13:20:13:37 | ...[...] | provenance | | +| app/controllers/foo/bars_controller.rb:13:20:13:37 | ...[...] | app/controllers/foo/bars_controller.rb:13:5:13:14 | [post] self [@user_name] | provenance | | +| app/controllers/foo/bars_controller.rb:13:20:13:37 | ...[...] | app/views/foo/bars/show.html.erb:50:5:50:18 | call to user_name_memo | provenance | | +| app/controllers/foo/bars_controller.rb:17:21:17:26 | call to params | app/controllers/foo/bars_controller.rb:17:21:17:36 | ...[...] | provenance | | +| app/controllers/foo/bars_controller.rb:17:21:17:36 | ...[...] | app/views/foo/bars/show.html.erb:2:18:2:30 | @user_website | provenance | | +| app/controllers/foo/bars_controller.rb:18:5:18:6 | dt | app/controllers/foo/bars_controller.rb:19:22:19:23 | dt | provenance | | +| app/controllers/foo/bars_controller.rb:18:10:18:15 | call to params | app/controllers/foo/bars_controller.rb:18:10:18:22 | ...[...] | provenance | | +| app/controllers/foo/bars_controller.rb:18:10:18:22 | ...[...] | app/controllers/foo/bars_controller.rb:18:5:18:6 | dt | provenance | | +| app/controllers/foo/bars_controller.rb:19:22:19:23 | dt | app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | provenance | | +| app/controllers/foo/bars_controller.rb:19:22:19:23 | dt | app/views/foo/bars/show.html.erb:40:3:40:16 | @instance_text | provenance | | +| app/controllers/foo/bars_controller.rb:24:39:24:44 | call to params | app/controllers/foo/bars_controller.rb:24:39:24:59 | ...[...] | provenance | | +| app/controllers/foo/bars_controller.rb:24:39:24:59 | ...[...] | app/controllers/foo/bars_controller.rb:24:39:24:59 | ... = ... | provenance | | +| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:5:9:5:20 | call to display_text | provenance | | +| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | provenance | | +| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns [element :display_text] | provenance | | +| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns [element :display_text] | provenance | | +| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:35:3:35:14 | call to display_text | provenance | | +| app/controllers/foo/bars_controller.rb:26:53:26:54 | dt | app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | provenance | | +| app/controllers/foo/bars_controller.rb:30:5:30:7 | str | app/controllers/foo/bars_controller.rb:31:5:31:7 | str | provenance | | +| app/controllers/foo/bars_controller.rb:30:11:30:16 | call to params | app/controllers/foo/bars_controller.rb:30:11:30:28 | ...[...] | provenance | | +| app/controllers/foo/bars_controller.rb:30:11:30:28 | ...[...] | app/controllers/foo/bars_controller.rb:30:5:30:7 | str | provenance | | +| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | | +| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | provenance | | +| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | | +| app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | | +| app/views/foo/bars/show.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:8:9:8:36 | ...[...] | provenance | | +| app/views/foo/bars/show.html.erb:12:9:12:21 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:12:9:12:26 | ...[...] | provenance | | +| app/views/foo/bars/show.html.erb:17:15:17:27 | call to local_assigns [element :display_text] | app/views/foo/bars/show.html.erb:17:15:17:32 | ...[...] | provenance | | +| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | | +| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | provenance | | +| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | provenance | | +| app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | provenance | | +| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... | provenance | | +| app/views/foo/bars/show.html.erb:43:76:43:87 | call to display_text | app/views/foo/bars/show.html.erb:43:64:43:87 | ... + ... [element] | provenance | | +| app/views/foo/bars/show.html.erb:53:29:53:34 | call to params | app/views/foo/bars/show.html.erb:53:29:53:44 | ...[...] | provenance | | +| app/views/foo/bars/show.html.erb:56:13:56:18 | call to params | app/views/foo/bars/show.html.erb:56:13:56:28 | ...[...] | provenance | | +| app/views/foo/bars/show.html.erb:73:19:73:24 | call to params | app/views/foo/bars/show.html.erb:73:19:73:34 | ...[...] | provenance | | +| app/views/foo/bars/show.html.erb:76:28:76:33 | call to params | app/views/foo/bars/show.html.erb:76:28:76:39 | ...[...] | provenance | | nodes | app/controllers/foo/bars_controller.rb:9:12:9:17 | call to params | semmle.label | call to params | | app/controllers/foo/bars_controller.rb:9:12:9:29 | ...[...] | semmle.label | ...[...] | diff --git a/ruby/ql/test/query-tests/security/cwe-079/StoredXSS.expected b/ruby/ql/test/query-tests/security/cwe-079/StoredXSS.expected index 2cf4aff64007..8ae455760c13 100644 --- a/ruby/ql/test/query-tests/security/cwe-079/StoredXSS.expected +++ b/ruby/ql/test/query-tests/security/cwe-079/StoredXSS.expected @@ -1,28 +1,28 @@ edges -| app/controllers/foo/stores_controller.rb:8:5:8:6 | dt | app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | -| app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | app/controllers/foo/stores_controller.rb:8:5:8:6 | dt | -| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | -| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | app/views/foo/stores/show.html.erb:37:3:37:16 | @instance_text | -| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:2:9:2:20 | call to display_text | -| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns [element :display_text] | -| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns [element :display_text] | -| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns [element :display_text] | -| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:32:3:32:14 | call to display_text | -| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | -| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | -| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | -| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | -| app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | -| app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:5:9:5:36 | ...[...] | -| app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:9:9:9:26 | ...[...] | -| app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:14:15:14:32 | ...[...] | -| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | -| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | -| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | -| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | -| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | -| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | -| app/views/foo/stores/show.html.erb:86:17:86:28 | call to handle | app/views/foo/stores/show.html.erb:86:3:86:29 | call to sprintf | +| app/controllers/foo/stores_controller.rb:8:5:8:6 | dt | app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | provenance | | +| app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | app/controllers/foo/stores_controller.rb:8:5:8:6 | dt | provenance | | +| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | provenance | | +| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt | app/views/foo/stores/show.html.erb:37:3:37:16 | @instance_text | provenance | | +| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:2:9:2:20 | call to display_text | provenance | | +| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns [element :display_text] | provenance | | +| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns [element :display_text] | provenance | | +| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns [element :display_text] | provenance | | +| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:32:3:32:14 | call to display_text | provenance | | +| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt | app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | provenance | | +| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | | +| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | provenance | | +| app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | | +| app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] [element] | app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | provenance | | +| app/views/foo/stores/show.html.erb:5:9:5:21 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:5:9:5:36 | ...[...] | provenance | | +| app/views/foo/stores/show.html.erb:9:9:9:21 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:9:9:9:26 | ...[...] | provenance | | +| app/views/foo/stores/show.html.erb:14:15:14:27 | call to local_assigns [element :display_text] | app/views/foo/stores/show.html.erb:14:15:14:32 | ...[...] | provenance | | +| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | provenance | | +| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text] | provenance | | +| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text [element] | provenance | | +| app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | app/views/foo/bars/_widget.html.erb:8:9:8:21 | call to local_assigns [element :display_text, element] | provenance | | +| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... | provenance | | +| app/views/foo/stores/show.html.erb:40:76:40:87 | call to display_text | app/views/foo/stores/show.html.erb:40:64:40:87 | ... + ... [element] | provenance | | +| app/views/foo/stores/show.html.erb:86:17:86:28 | call to handle | app/views/foo/stores/show.html.erb:86:3:86:29 | call to sprintf | provenance | | nodes | app/controllers/foo/stores_controller.rb:8:5:8:6 | dt | semmle.label | dt | | app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | semmle.label | call to read | diff --git a/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected b/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected index 064d5a2e1dcf..b9019c8f1d04 100644 --- a/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected +++ b/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected @@ -1,7 +1,7 @@ edges -| lib/unsafeHtml.rb:2:31:2:34 | name | lib/unsafeHtml.rb:3:10:3:16 | #{...} | -| lib/unsafeHtml.rb:9:27:9:30 | name | lib/unsafeHtml.rb:11:13:11:19 | #{...} | -| lib/unsafeHtml.rb:16:19:16:22 | name | lib/unsafeHtml.rb:17:28:17:31 | name | +| lib/unsafeHtml.rb:2:31:2:34 | name | lib/unsafeHtml.rb:3:10:3:16 | #{...} | provenance | | +| lib/unsafeHtml.rb:9:27:9:30 | name | lib/unsafeHtml.rb:11:13:11:19 | #{...} | provenance | | +| lib/unsafeHtml.rb:16:19:16:22 | name | lib/unsafeHtml.rb:17:28:17:31 | name | provenance | | nodes | lib/unsafeHtml.rb:2:31:2:34 | name | semmle.label | name | | lib/unsafeHtml.rb:3:10:3:16 | #{...} | semmle.label | #{...} | diff --git a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected index 266da5b21fed..1f9b8483f3b0 100644 --- a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected @@ -1,83 +1,83 @@ edges -| ActiveRecordInjection.rb:8:25:8:28 | name | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | -| ActiveRecordInjection.rb:8:31:8:34 | pass | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | -| ActiveRecordInjection.rb:20:22:20:30 | condition | ActiveRecordInjection.rb:23:16:23:24 | condition | -| ActiveRecordInjection.rb:35:30:35:35 | call to params | ActiveRecordInjection.rb:35:30:35:44 | ...[...] | -| ActiveRecordInjection.rb:39:18:39:23 | call to params | ActiveRecordInjection.rb:39:18:39:32 | ...[...] | -| ActiveRecordInjection.rb:43:29:43:34 | call to params | ActiveRecordInjection.rb:43:29:43:39 | ...[...] | -| ActiveRecordInjection.rb:43:29:43:39 | ...[...] | ActiveRecordInjection.rb:43:20:43:42 | "id = '#{...}'" | -| ActiveRecordInjection.rb:48:30:48:35 | call to params | ActiveRecordInjection.rb:48:30:48:40 | ...[...] | -| ActiveRecordInjection.rb:48:30:48:40 | ...[...] | ActiveRecordInjection.rb:48:21:48:43 | "id = '#{...}'" | -| ActiveRecordInjection.rb:52:22:52:44 | "id = '#{...}'" | ActiveRecordInjection.rb:52:21:52:45 | call to [] | -| ActiveRecordInjection.rb:52:31:52:36 | call to params | ActiveRecordInjection.rb:52:31:52:41 | ...[...] | -| ActiveRecordInjection.rb:52:31:52:41 | ...[...] | ActiveRecordInjection.rb:52:22:52:44 | "id = '#{...}'" | -| ActiveRecordInjection.rb:57:23:57:45 | "id = '#{...}'" | ActiveRecordInjection.rb:57:22:57:46 | call to [] | -| ActiveRecordInjection.rb:57:32:57:37 | call to params | ActiveRecordInjection.rb:57:32:57:42 | ...[...] | -| ActiveRecordInjection.rb:57:32:57:42 | ...[...] | ActiveRecordInjection.rb:57:23:57:45 | "id = '#{...}'" | -| ActiveRecordInjection.rb:62:21:62:26 | call to params | ActiveRecordInjection.rb:62:21:62:35 | ...[...] | -| ActiveRecordInjection.rb:62:21:62:35 | ...[...] | ActiveRecordInjection.rb:61:16:61:21 | <<-SQL | -| ActiveRecordInjection.rb:68:34:68:39 | call to params | ActiveRecordInjection.rb:68:34:68:44 | ...[...] | -| ActiveRecordInjection.rb:68:34:68:44 | ...[...] | ActiveRecordInjection.rb:68:20:68:47 | "user.id = '#{...}'" | -| ActiveRecordInjection.rb:70:23:70:28 | call to params | ActiveRecordInjection.rb:70:23:70:35 | ...[...] | -| ActiveRecordInjection.rb:70:23:70:35 | ...[...] | ActiveRecordInjection.rb:8:25:8:28 | name | -| ActiveRecordInjection.rb:70:38:70:43 | call to params | ActiveRecordInjection.rb:70:38:70:50 | ...[...] | -| ActiveRecordInjection.rb:70:38:70:50 | ...[...] | ActiveRecordInjection.rb:8:31:8:34 | pass | -| ActiveRecordInjection.rb:74:41:74:46 | call to params | ActiveRecordInjection.rb:74:41:74:51 | ...[...] | -| ActiveRecordInjection.rb:74:41:74:51 | ...[...] | ActiveRecordInjection.rb:74:32:74:54 | "id = '#{...}'" | -| ActiveRecordInjection.rb:79:23:79:28 | call to params | ActiveRecordInjection.rb:79:23:79:35 | ...[...] | -| ActiveRecordInjection.rb:83:17:83:22 | call to params | ActiveRecordInjection.rb:83:17:83:31 | ...[...] | -| ActiveRecordInjection.rb:84:19:84:24 | call to params | ActiveRecordInjection.rb:84:19:84:33 | ...[...] | -| ActiveRecordInjection.rb:88:18:88:23 | call to params | ActiveRecordInjection.rb:88:18:88:35 | ...[...] | -| ActiveRecordInjection.rb:92:21:92:26 | call to params | ActiveRecordInjection.rb:92:21:92:35 | ...[...] | -| ActiveRecordInjection.rb:100:31:100:36 | call to params | ActiveRecordInjection.rb:100:31:100:52 | ...[...] | -| ActiveRecordInjection.rb:100:31:100:52 | ...[...] | ActiveRecordInjection.rb:100:20:100:55 | "name = '#{...}'" | -| ActiveRecordInjection.rb:104:30:104:35 | call to params | ActiveRecordInjection.rb:104:30:104:51 | ...[...] | -| ActiveRecordInjection.rb:104:30:104:51 | ...[...] | ActiveRecordInjection.rb:104:19:104:54 | "name = '#{...}'" | -| ActiveRecordInjection.rb:106:18:106:23 | call to params | ActiveRecordInjection.rb:106:18:106:35 | ...[...] | -| ActiveRecordInjection.rb:108:23:108:28 | call to params | ActiveRecordInjection.rb:108:23:108:47 | ...[...] | -| ActiveRecordInjection.rb:114:5:114:6 | ps | ActiveRecordInjection.rb:115:11:115:12 | ps | -| ActiveRecordInjection.rb:114:10:114:15 | call to params | ActiveRecordInjection.rb:114:5:114:6 | ps | -| ActiveRecordInjection.rb:115:5:115:7 | uid | ActiveRecordInjection.rb:116:5:116:9 | uidEq | -| ActiveRecordInjection.rb:115:11:115:12 | ps | ActiveRecordInjection.rb:115:11:115:17 | ...[...] | -| ActiveRecordInjection.rb:115:11:115:17 | ...[...] | ActiveRecordInjection.rb:115:5:115:7 | uid | -| ActiveRecordInjection.rb:116:5:116:9 | uidEq | ActiveRecordInjection.rb:120:20:120:32 | ... + ... | -| ActiveRecordInjection.rb:116:5:116:9 | uidEq | ActiveRecordInjection.rb:120:28:120:32 | uidEq | -| ActiveRecordInjection.rb:120:20:120:32 | ... + ... [element] | ActiveRecordInjection.rb:120:20:120:32 | ... + ... | -| ActiveRecordInjection.rb:120:28:120:32 | uidEq | ActiveRecordInjection.rb:120:20:120:32 | ... + ... [element] | -| ActiveRecordInjection.rb:153:21:153:26 | call to params | ActiveRecordInjection.rb:153:21:153:44 | ...[...] | -| ActiveRecordInjection.rb:153:21:153:26 | call to params | ActiveRecordInjection.rb:153:21:153:44 | ...[...] | -| ActiveRecordInjection.rb:153:21:153:44 | ...[...] | ActiveRecordInjection.rb:20:22:20:30 | condition | -| ActiveRecordInjection.rb:167:59:167:64 | call to params | ActiveRecordInjection.rb:167:59:167:74 | ...[...] | -| ActiveRecordInjection.rb:167:59:167:74 | ...[...] | ActiveRecordInjection.rb:167:27:167:76 | "this is an unsafe annotation:..." | -| ActiveRecordInjection.rb:178:5:178:13 | my_params | ActiveRecordInjection.rb:179:47:179:55 | my_params | -| ActiveRecordInjection.rb:178:17:178:32 | call to permitted_params | ActiveRecordInjection.rb:178:5:178:13 | my_params | -| ActiveRecordInjection.rb:179:5:179:9 | query | ActiveRecordInjection.rb:180:37:180:41 | query | -| ActiveRecordInjection.rb:179:47:179:55 | my_params | ActiveRecordInjection.rb:179:47:179:65 | ...[...] | -| ActiveRecordInjection.rb:179:47:179:65 | ...[...] | ActiveRecordInjection.rb:179:5:179:9 | query | -| ActiveRecordInjection.rb:185:5:185:10 | call to params | ActiveRecordInjection.rb:185:5:185:27 | call to require | -| ActiveRecordInjection.rb:185:5:185:27 | call to require | ActiveRecordInjection.rb:185:5:185:59 | call to permit | -| ActiveRecordInjection.rb:185:5:185:59 | call to permit | ActiveRecordInjection.rb:178:17:178:32 | call to permitted_params | -| ActiveRecordInjection.rb:185:5:185:59 | call to permit | ActiveRecordInjection.rb:189:77:189:92 | call to permitted_params | -| ActiveRecordInjection.rb:185:5:185:59 | call to permit | ActiveRecordInjection.rb:190:69:190:84 | call to permitted_params | -| ActiveRecordInjection.rb:189:77:189:92 | call to permitted_params | ActiveRecordInjection.rb:189:77:189:102 | ...[...] | -| ActiveRecordInjection.rb:189:77:189:102 | ...[...] | ActiveRecordInjection.rb:189:43:189:104 | "SELECT * FROM users WHERE id ..." | -| ActiveRecordInjection.rb:190:69:190:84 | call to permitted_params | ActiveRecordInjection.rb:190:69:190:94 | ...[...] | -| ActiveRecordInjection.rb:190:69:190:94 | ...[...] | ActiveRecordInjection.rb:190:35:190:96 | "SELECT * FROM users WHERE id ..." | -| ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | -| ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:4:12:4:29 | ...[...] | -| ArelInjection.rb:4:12:4:29 | ...[...] | ArelInjection.rb:4:5:4:8 | name | -| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:13:5:13:8 | qry1 | -| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:19:5:19:8 | qry2 | -| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:31:5:31:8 | qry3 | -| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:43:5:43:8 | qry3 | -| PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:6:12:6:24 | ...[...] | -| PgInjection.rb:6:12:6:24 | ...[...] | PgInjection.rb:6:5:6:8 | name | -| PgInjection.rb:13:5:13:8 | qry1 | PgInjection.rb:14:15:14:18 | qry1 | -| PgInjection.rb:13:5:13:8 | qry1 | PgInjection.rb:15:21:15:24 | qry1 | -| PgInjection.rb:19:5:19:8 | qry2 | PgInjection.rb:20:22:20:25 | qry2 | -| PgInjection.rb:19:5:19:8 | qry2 | PgInjection.rb:21:28:21:31 | qry2 | -| PgInjection.rb:31:5:31:8 | qry3 | PgInjection.rb:32:29:32:32 | qry3 | -| PgInjection.rb:43:5:43:8 | qry3 | PgInjection.rb:44:29:44:32 | qry3 | +| ActiveRecordInjection.rb:8:25:8:28 | name | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | provenance | | +| ActiveRecordInjection.rb:8:31:8:34 | pass | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | provenance | | +| ActiveRecordInjection.rb:20:22:20:30 | condition | ActiveRecordInjection.rb:23:16:23:24 | condition | provenance | | +| ActiveRecordInjection.rb:35:30:35:35 | call to params | ActiveRecordInjection.rb:35:30:35:44 | ...[...] | provenance | | +| ActiveRecordInjection.rb:39:18:39:23 | call to params | ActiveRecordInjection.rb:39:18:39:32 | ...[...] | provenance | | +| ActiveRecordInjection.rb:43:29:43:34 | call to params | ActiveRecordInjection.rb:43:29:43:39 | ...[...] | provenance | | +| ActiveRecordInjection.rb:43:29:43:39 | ...[...] | ActiveRecordInjection.rb:43:20:43:42 | "id = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:48:30:48:35 | call to params | ActiveRecordInjection.rb:48:30:48:40 | ...[...] | provenance | | +| ActiveRecordInjection.rb:48:30:48:40 | ...[...] | ActiveRecordInjection.rb:48:21:48:43 | "id = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:52:22:52:44 | "id = '#{...}'" | ActiveRecordInjection.rb:52:21:52:45 | call to [] | provenance | | +| ActiveRecordInjection.rb:52:31:52:36 | call to params | ActiveRecordInjection.rb:52:31:52:41 | ...[...] | provenance | | +| ActiveRecordInjection.rb:52:31:52:41 | ...[...] | ActiveRecordInjection.rb:52:22:52:44 | "id = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:57:23:57:45 | "id = '#{...}'" | ActiveRecordInjection.rb:57:22:57:46 | call to [] | provenance | | +| ActiveRecordInjection.rb:57:32:57:37 | call to params | ActiveRecordInjection.rb:57:32:57:42 | ...[...] | provenance | | +| ActiveRecordInjection.rb:57:32:57:42 | ...[...] | ActiveRecordInjection.rb:57:23:57:45 | "id = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:62:21:62:26 | call to params | ActiveRecordInjection.rb:62:21:62:35 | ...[...] | provenance | | +| ActiveRecordInjection.rb:62:21:62:35 | ...[...] | ActiveRecordInjection.rb:61:16:61:21 | <<-SQL | provenance | | +| ActiveRecordInjection.rb:68:34:68:39 | call to params | ActiveRecordInjection.rb:68:34:68:44 | ...[...] | provenance | | +| ActiveRecordInjection.rb:68:34:68:44 | ...[...] | ActiveRecordInjection.rb:68:20:68:47 | "user.id = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:70:23:70:28 | call to params | ActiveRecordInjection.rb:70:23:70:35 | ...[...] | provenance | | +| ActiveRecordInjection.rb:70:23:70:35 | ...[...] | ActiveRecordInjection.rb:8:25:8:28 | name | provenance | | +| ActiveRecordInjection.rb:70:38:70:43 | call to params | ActiveRecordInjection.rb:70:38:70:50 | ...[...] | provenance | | +| ActiveRecordInjection.rb:70:38:70:50 | ...[...] | ActiveRecordInjection.rb:8:31:8:34 | pass | provenance | | +| ActiveRecordInjection.rb:74:41:74:46 | call to params | ActiveRecordInjection.rb:74:41:74:51 | ...[...] | provenance | | +| ActiveRecordInjection.rb:74:41:74:51 | ...[...] | ActiveRecordInjection.rb:74:32:74:54 | "id = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:79:23:79:28 | call to params | ActiveRecordInjection.rb:79:23:79:35 | ...[...] | provenance | | +| ActiveRecordInjection.rb:83:17:83:22 | call to params | ActiveRecordInjection.rb:83:17:83:31 | ...[...] | provenance | | +| ActiveRecordInjection.rb:84:19:84:24 | call to params | ActiveRecordInjection.rb:84:19:84:33 | ...[...] | provenance | | +| ActiveRecordInjection.rb:88:18:88:23 | call to params | ActiveRecordInjection.rb:88:18:88:35 | ...[...] | provenance | | +| ActiveRecordInjection.rb:92:21:92:26 | call to params | ActiveRecordInjection.rb:92:21:92:35 | ...[...] | provenance | | +| ActiveRecordInjection.rb:100:31:100:36 | call to params | ActiveRecordInjection.rb:100:31:100:52 | ...[...] | provenance | | +| ActiveRecordInjection.rb:100:31:100:52 | ...[...] | ActiveRecordInjection.rb:100:20:100:55 | "name = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:104:30:104:35 | call to params | ActiveRecordInjection.rb:104:30:104:51 | ...[...] | provenance | | +| ActiveRecordInjection.rb:104:30:104:51 | ...[...] | ActiveRecordInjection.rb:104:19:104:54 | "name = '#{...}'" | provenance | | +| ActiveRecordInjection.rb:106:18:106:23 | call to params | ActiveRecordInjection.rb:106:18:106:35 | ...[...] | provenance | | +| ActiveRecordInjection.rb:108:23:108:28 | call to params | ActiveRecordInjection.rb:108:23:108:47 | ...[...] | provenance | | +| ActiveRecordInjection.rb:114:5:114:6 | ps | ActiveRecordInjection.rb:115:11:115:12 | ps | provenance | | +| ActiveRecordInjection.rb:114:10:114:15 | call to params | ActiveRecordInjection.rb:114:5:114:6 | ps | provenance | | +| ActiveRecordInjection.rb:115:5:115:7 | uid | ActiveRecordInjection.rb:116:5:116:9 | uidEq | provenance | | +| ActiveRecordInjection.rb:115:11:115:12 | ps | ActiveRecordInjection.rb:115:11:115:17 | ...[...] | provenance | | +| ActiveRecordInjection.rb:115:11:115:17 | ...[...] | ActiveRecordInjection.rb:115:5:115:7 | uid | provenance | | +| ActiveRecordInjection.rb:116:5:116:9 | uidEq | ActiveRecordInjection.rb:120:20:120:32 | ... + ... | provenance | | +| ActiveRecordInjection.rb:116:5:116:9 | uidEq | ActiveRecordInjection.rb:120:28:120:32 | uidEq | provenance | | +| ActiveRecordInjection.rb:120:20:120:32 | ... + ... [element] | ActiveRecordInjection.rb:120:20:120:32 | ... + ... | provenance | | +| ActiveRecordInjection.rb:120:28:120:32 | uidEq | ActiveRecordInjection.rb:120:20:120:32 | ... + ... [element] | provenance | | +| ActiveRecordInjection.rb:153:21:153:26 | call to params | ActiveRecordInjection.rb:153:21:153:44 | ...[...] | provenance | | +| ActiveRecordInjection.rb:153:21:153:26 | call to params | ActiveRecordInjection.rb:153:21:153:44 | ...[...] | provenance | | +| ActiveRecordInjection.rb:153:21:153:44 | ...[...] | ActiveRecordInjection.rb:20:22:20:30 | condition | provenance | | +| ActiveRecordInjection.rb:167:59:167:64 | call to params | ActiveRecordInjection.rb:167:59:167:74 | ...[...] | provenance | | +| ActiveRecordInjection.rb:167:59:167:74 | ...[...] | ActiveRecordInjection.rb:167:27:167:76 | "this is an unsafe annotation:..." | provenance | | +| ActiveRecordInjection.rb:178:5:178:13 | my_params | ActiveRecordInjection.rb:179:47:179:55 | my_params | provenance | | +| ActiveRecordInjection.rb:178:17:178:32 | call to permitted_params | ActiveRecordInjection.rb:178:5:178:13 | my_params | provenance | | +| ActiveRecordInjection.rb:179:5:179:9 | query | ActiveRecordInjection.rb:180:37:180:41 | query | provenance | | +| ActiveRecordInjection.rb:179:47:179:55 | my_params | ActiveRecordInjection.rb:179:47:179:65 | ...[...] | provenance | | +| ActiveRecordInjection.rb:179:47:179:65 | ...[...] | ActiveRecordInjection.rb:179:5:179:9 | query | provenance | | +| ActiveRecordInjection.rb:185:5:185:10 | call to params | ActiveRecordInjection.rb:185:5:185:27 | call to require | provenance | | +| ActiveRecordInjection.rb:185:5:185:27 | call to require | ActiveRecordInjection.rb:185:5:185:59 | call to permit | provenance | | +| ActiveRecordInjection.rb:185:5:185:59 | call to permit | ActiveRecordInjection.rb:178:17:178:32 | call to permitted_params | provenance | | +| ActiveRecordInjection.rb:185:5:185:59 | call to permit | ActiveRecordInjection.rb:189:77:189:92 | call to permitted_params | provenance | | +| ActiveRecordInjection.rb:185:5:185:59 | call to permit | ActiveRecordInjection.rb:190:69:190:84 | call to permitted_params | provenance | | +| ActiveRecordInjection.rb:189:77:189:92 | call to permitted_params | ActiveRecordInjection.rb:189:77:189:102 | ...[...] | provenance | | +| ActiveRecordInjection.rb:189:77:189:102 | ...[...] | ActiveRecordInjection.rb:189:43:189:104 | "SELECT * FROM users WHERE id ..." | provenance | | +| ActiveRecordInjection.rb:190:69:190:84 | call to permitted_params | ActiveRecordInjection.rb:190:69:190:94 | ...[...] | provenance | | +| ActiveRecordInjection.rb:190:69:190:94 | ...[...] | ActiveRecordInjection.rb:190:35:190:96 | "SELECT * FROM users WHERE id ..." | provenance | | +| ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | provenance | | +| ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:4:12:4:29 | ...[...] | provenance | | +| ArelInjection.rb:4:12:4:29 | ...[...] | ArelInjection.rb:4:5:4:8 | name | provenance | | +| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:13:5:13:8 | qry1 | provenance | | +| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:19:5:19:8 | qry2 | provenance | | +| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:31:5:31:8 | qry3 | provenance | | +| PgInjection.rb:6:5:6:8 | name | PgInjection.rb:43:5:43:8 | qry3 | provenance | | +| PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:6:12:6:24 | ...[...] | provenance | | +| PgInjection.rb:6:12:6:24 | ...[...] | PgInjection.rb:6:5:6:8 | name | provenance | | +| PgInjection.rb:13:5:13:8 | qry1 | PgInjection.rb:14:15:14:18 | qry1 | provenance | | +| PgInjection.rb:13:5:13:8 | qry1 | PgInjection.rb:15:21:15:24 | qry1 | provenance | | +| PgInjection.rb:19:5:19:8 | qry2 | PgInjection.rb:20:22:20:25 | qry2 | provenance | | +| PgInjection.rb:19:5:19:8 | qry2 | PgInjection.rb:21:28:21:31 | qry2 | provenance | | +| PgInjection.rb:31:5:31:8 | qry3 | PgInjection.rb:32:29:32:32 | qry3 | provenance | | +| PgInjection.rb:43:5:43:8 | qry3 | PgInjection.rb:44:29:44:32 | qry3 | provenance | | nodes | ActiveRecordInjection.rb:8:25:8:28 | name | semmle.label | name | | ActiveRecordInjection.rb:8:31:8:34 | pass | semmle.label | pass | diff --git a/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected b/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected index 8b9e7e3abed0..b3f6dfcd5e5f 100644 --- a/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-094/CodeInjection/CodeInjection.expected @@ -1,50 +1,50 @@ edges -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:8:10:8:13 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:8:10:8:13 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:20:20:20:23 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:20:20:20:23 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:23:21:23:24 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:23:21:23:24 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:29:15:29:18 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:32:19:32:22 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:38:24:38:27 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:38:24:38:27 | code | -| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:41:40:41:43 | code | -| CodeInjection.rb:5:12:5:17 | call to params | CodeInjection.rb:5:12:5:24 | ...[...] | -| CodeInjection.rb:5:12:5:17 | call to params | CodeInjection.rb:5:12:5:24 | ...[...] | -| CodeInjection.rb:5:12:5:24 | ...[...] | CodeInjection.rb:5:5:5:8 | code | -| CodeInjection.rb:5:12:5:24 | ...[...] | CodeInjection.rb:5:5:5:8 | code | -| CodeInjection.rb:38:24:38:27 | code | CodeInjection.rb:38:10:38:28 | call to escape | -| CodeInjection.rb:38:24:38:27 | code | CodeInjection.rb:38:10:38:28 | call to escape | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:80:16:80:19 | code | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:10:86:25 | ... + ... | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:10:86:37 | ... + ... | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:22:86:25 | code | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:88:10:88:32 | "prefix_#{...}_suffix" | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:90:10:90:13 | code | -| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:90:10:90:13 | code | -| CodeInjection.rb:78:12:78:17 | call to params | CodeInjection.rb:78:12:78:24 | ...[...] | -| CodeInjection.rb:78:12:78:17 | call to params | CodeInjection.rb:78:12:78:24 | ...[...] | -| CodeInjection.rb:78:12:78:24 | ...[...] | CodeInjection.rb:78:5:78:8 | code | -| CodeInjection.rb:78:12:78:24 | ...[...] | CodeInjection.rb:78:5:78:8 | code | -| CodeInjection.rb:86:10:86:25 | ... + ... | CodeInjection.rb:86:10:86:37 | ... + ... | -| CodeInjection.rb:86:10:86:25 | ... + ... [element] | CodeInjection.rb:86:10:86:37 | ... + ... [element] | -| CodeInjection.rb:86:10:86:37 | ... + ... [element] | CodeInjection.rb:86:10:86:37 | ... + ... | -| CodeInjection.rb:86:22:86:25 | code | CodeInjection.rb:86:10:86:25 | ... + ... [element] | -| CodeInjection.rb:101:3:102:5 | self in index [@foo] | CodeInjection.rb:111:3:113:5 | self in baz [@foo] | -| CodeInjection.rb:101:3:102:5 | self in index [@foo] | CodeInjection.rb:111:3:113:5 | self in baz [@foo] | -| CodeInjection.rb:105:5:105:8 | [post] self [@foo] | CodeInjection.rb:108:3:109:5 | self in bar [@foo] | -| CodeInjection.rb:105:5:105:8 | [post] self [@foo] | CodeInjection.rb:108:3:109:5 | self in bar [@foo] | -| CodeInjection.rb:105:12:105:17 | call to params | CodeInjection.rb:105:12:105:23 | ...[...] | -| CodeInjection.rb:105:12:105:17 | call to params | CodeInjection.rb:105:12:105:23 | ...[...] | -| CodeInjection.rb:105:12:105:23 | ...[...] | CodeInjection.rb:105:5:105:8 | [post] self [@foo] | -| CodeInjection.rb:105:12:105:23 | ...[...] | CodeInjection.rb:105:5:105:8 | [post] self [@foo] | -| CodeInjection.rb:108:3:109:5 | self in bar [@foo] | CodeInjection.rb:101:3:102:5 | self in index [@foo] | -| CodeInjection.rb:108:3:109:5 | self in bar [@foo] | CodeInjection.rb:101:3:102:5 | self in index [@foo] | -| CodeInjection.rb:111:3:113:5 | self in baz [@foo] | CodeInjection.rb:112:10:112:13 | self [@foo] | -| CodeInjection.rb:111:3:113:5 | self in baz [@foo] | CodeInjection.rb:112:10:112:13 | self [@foo] | -| CodeInjection.rb:112:10:112:13 | self [@foo] | CodeInjection.rb:112:10:112:13 | @foo | -| CodeInjection.rb:112:10:112:13 | self [@foo] | CodeInjection.rb:112:10:112:13 | @foo | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:8:10:8:13 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:8:10:8:13 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:20:20:20:23 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:20:20:20:23 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:23:21:23:24 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:23:21:23:24 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:29:15:29:18 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:32:19:32:22 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:38:24:38:27 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:38:24:38:27 | code | provenance | | +| CodeInjection.rb:5:5:5:8 | code | CodeInjection.rb:41:40:41:43 | code | provenance | | +| CodeInjection.rb:5:12:5:17 | call to params | CodeInjection.rb:5:12:5:24 | ...[...] | provenance | | +| CodeInjection.rb:5:12:5:17 | call to params | CodeInjection.rb:5:12:5:24 | ...[...] | provenance | | +| CodeInjection.rb:5:12:5:24 | ...[...] | CodeInjection.rb:5:5:5:8 | code | provenance | | +| CodeInjection.rb:5:12:5:24 | ...[...] | CodeInjection.rb:5:5:5:8 | code | provenance | | +| CodeInjection.rb:38:24:38:27 | code | CodeInjection.rb:38:10:38:28 | call to escape | provenance | | +| CodeInjection.rb:38:24:38:27 | code | CodeInjection.rb:38:10:38:28 | call to escape | provenance | | +| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:80:16:80:19 | code | provenance | | +| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:10:86:25 | ... + ... | provenance | | +| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | | +| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:86:22:86:25 | code | provenance | | +| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:88:10:88:32 | "prefix_#{...}_suffix" | provenance | | +| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:90:10:90:13 | code | provenance | | +| CodeInjection.rb:78:5:78:8 | code | CodeInjection.rb:90:10:90:13 | code | provenance | | +| CodeInjection.rb:78:12:78:17 | call to params | CodeInjection.rb:78:12:78:24 | ...[...] | provenance | | +| CodeInjection.rb:78:12:78:17 | call to params | CodeInjection.rb:78:12:78:24 | ...[...] | provenance | | +| CodeInjection.rb:78:12:78:24 | ...[...] | CodeInjection.rb:78:5:78:8 | code | provenance | | +| CodeInjection.rb:78:12:78:24 | ...[...] | CodeInjection.rb:78:5:78:8 | code | provenance | | +| CodeInjection.rb:86:10:86:25 | ... + ... | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | | +| CodeInjection.rb:86:10:86:25 | ... + ... [element] | CodeInjection.rb:86:10:86:37 | ... + ... [element] | provenance | | +| CodeInjection.rb:86:10:86:37 | ... + ... [element] | CodeInjection.rb:86:10:86:37 | ... + ... | provenance | | +| CodeInjection.rb:86:22:86:25 | code | CodeInjection.rb:86:10:86:25 | ... + ... [element] | provenance | | +| CodeInjection.rb:101:3:102:5 | self in index [@foo] | CodeInjection.rb:111:3:113:5 | self in baz [@foo] | provenance | | +| CodeInjection.rb:101:3:102:5 | self in index [@foo] | CodeInjection.rb:111:3:113:5 | self in baz [@foo] | provenance | | +| CodeInjection.rb:105:5:105:8 | [post] self [@foo] | CodeInjection.rb:108:3:109:5 | self in bar [@foo] | provenance | | +| CodeInjection.rb:105:5:105:8 | [post] self [@foo] | CodeInjection.rb:108:3:109:5 | self in bar [@foo] | provenance | | +| CodeInjection.rb:105:12:105:17 | call to params | CodeInjection.rb:105:12:105:23 | ...[...] | provenance | | +| CodeInjection.rb:105:12:105:17 | call to params | CodeInjection.rb:105:12:105:23 | ...[...] | provenance | | +| CodeInjection.rb:105:12:105:23 | ...[...] | CodeInjection.rb:105:5:105:8 | [post] self [@foo] | provenance | | +| CodeInjection.rb:105:12:105:23 | ...[...] | CodeInjection.rb:105:5:105:8 | [post] self [@foo] | provenance | | +| CodeInjection.rb:108:3:109:5 | self in bar [@foo] | CodeInjection.rb:101:3:102:5 | self in index [@foo] | provenance | | +| CodeInjection.rb:108:3:109:5 | self in bar [@foo] | CodeInjection.rb:101:3:102:5 | self in index [@foo] | provenance | | +| CodeInjection.rb:111:3:113:5 | self in baz [@foo] | CodeInjection.rb:112:10:112:13 | self [@foo] | provenance | | +| CodeInjection.rb:111:3:113:5 | self in baz [@foo] | CodeInjection.rb:112:10:112:13 | self [@foo] | provenance | | +| CodeInjection.rb:112:10:112:13 | self [@foo] | CodeInjection.rb:112:10:112:13 | @foo | provenance | | +| CodeInjection.rb:112:10:112:13 | self [@foo] | CodeInjection.rb:112:10:112:13 | @foo | provenance | | nodes | CodeInjection.rb:5:5:5:8 | code | semmle.label | code | | CodeInjection.rb:5:5:5:8 | code | semmle.label | code | diff --git a/ruby/ql/test/query-tests/security/cwe-094/UnsafeCodeConstruction/UnsafeCodeConstruction.expected b/ruby/ql/test/query-tests/security/cwe-094/UnsafeCodeConstruction/UnsafeCodeConstruction.expected index 716cf5591f96..8af3ed306de6 100644 --- a/ruby/ql/test/query-tests/security/cwe-094/UnsafeCodeConstruction/UnsafeCodeConstruction.expected +++ b/ruby/ql/test/query-tests/security/cwe-094/UnsafeCodeConstruction/UnsafeCodeConstruction.expected @@ -1,26 +1,26 @@ edges -| impl/unsafeCode.rb:2:12:2:17 | target | impl/unsafeCode.rb:3:17:3:25 | #{...} | -| impl/unsafeCode.rb:7:12:7:12 | x | impl/unsafeCode.rb:8:30:8:30 | x | -| impl/unsafeCode.rb:12:12:12:12 | x | impl/unsafeCode.rb:13:33:13:33 | x | -| impl/unsafeCode.rb:28:17:28:22 | my_arr | impl/unsafeCode.rb:29:10:29:15 | my_arr | -| impl/unsafeCode.rb:32:21:32:21 | x | impl/unsafeCode.rb:33:12:33:12 | x | -| impl/unsafeCode.rb:33:5:33:7 | arr [element 0] | impl/unsafeCode.rb:34:10:34:12 | arr | -| impl/unsafeCode.rb:33:12:33:12 | x | impl/unsafeCode.rb:33:5:33:7 | arr [element 0] | -| impl/unsafeCode.rb:37:15:37:15 | x | impl/unsafeCode.rb:39:14:39:14 | x | -| impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | impl/unsafeCode.rb:40:10:40:12 | arr | -| impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | impl/unsafeCode.rb:44:10:44:12 | arr | -| impl/unsafeCode.rb:39:14:39:14 | x | impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | -| impl/unsafeCode.rb:47:15:47:15 | x | impl/unsafeCode.rb:49:9:49:12 | #{...} | -| impl/unsafeCode.rb:54:21:54:21 | x | impl/unsafeCode.rb:55:22:55:22 | x | -| impl/unsafeCode.rb:59:21:59:21 | x | impl/unsafeCode.rb:60:17:60:17 | x | -| impl/unsafeCode.rb:59:24:59:24 | y | impl/unsafeCode.rb:63:30:63:30 | y | -| impl/unsafeCode.rb:60:5:60:7 | arr [element 0] | impl/unsafeCode.rb:61:10:61:12 | arr | -| impl/unsafeCode.rb:60:11:60:18 | call to Array [element 0] | impl/unsafeCode.rb:60:5:60:7 | arr [element 0] | -| impl/unsafeCode.rb:60:17:60:17 | x | impl/unsafeCode.rb:60:11:60:18 | call to Array [element 0] | -| impl/unsafeCode.rb:63:5:63:8 | arr2 [element 0] | impl/unsafeCode.rb:64:10:64:13 | arr2 | -| impl/unsafeCode.rb:63:13:63:32 | call to Array [element 1] | impl/unsafeCode.rb:63:13:63:42 | call to join | -| impl/unsafeCode.rb:63:13:63:42 | call to join | impl/unsafeCode.rb:63:5:63:8 | arr2 [element 0] | -| impl/unsafeCode.rb:63:30:63:30 | y | impl/unsafeCode.rb:63:13:63:32 | call to Array [element 1] | +| impl/unsafeCode.rb:2:12:2:17 | target | impl/unsafeCode.rb:3:17:3:25 | #{...} | provenance | | +| impl/unsafeCode.rb:7:12:7:12 | x | impl/unsafeCode.rb:8:30:8:30 | x | provenance | | +| impl/unsafeCode.rb:12:12:12:12 | x | impl/unsafeCode.rb:13:33:13:33 | x | provenance | | +| impl/unsafeCode.rb:28:17:28:22 | my_arr | impl/unsafeCode.rb:29:10:29:15 | my_arr | provenance | | +| impl/unsafeCode.rb:32:21:32:21 | x | impl/unsafeCode.rb:33:12:33:12 | x | provenance | | +| impl/unsafeCode.rb:33:5:33:7 | arr [element 0] | impl/unsafeCode.rb:34:10:34:12 | arr | provenance | | +| impl/unsafeCode.rb:33:12:33:12 | x | impl/unsafeCode.rb:33:5:33:7 | arr [element 0] | provenance | | +| impl/unsafeCode.rb:37:15:37:15 | x | impl/unsafeCode.rb:39:14:39:14 | x | provenance | | +| impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | impl/unsafeCode.rb:40:10:40:12 | arr | provenance | | +| impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | impl/unsafeCode.rb:44:10:44:12 | arr | provenance | | +| impl/unsafeCode.rb:39:14:39:14 | x | impl/unsafeCode.rb:39:5:39:7 | [post] arr [element] | provenance | | +| impl/unsafeCode.rb:47:15:47:15 | x | impl/unsafeCode.rb:49:9:49:12 | #{...} | provenance | | +| impl/unsafeCode.rb:54:21:54:21 | x | impl/unsafeCode.rb:55:22:55:22 | x | provenance | | +| impl/unsafeCode.rb:59:21:59:21 | x | impl/unsafeCode.rb:60:17:60:17 | x | provenance | | +| impl/unsafeCode.rb:59:24:59:24 | y | impl/unsafeCode.rb:63:30:63:30 | y | provenance | | +| impl/unsafeCode.rb:60:5:60:7 | arr [element 0] | impl/unsafeCode.rb:61:10:61:12 | arr | provenance | | +| impl/unsafeCode.rb:60:11:60:18 | call to Array [element 0] | impl/unsafeCode.rb:60:5:60:7 | arr [element 0] | provenance | | +| impl/unsafeCode.rb:60:17:60:17 | x | impl/unsafeCode.rb:60:11:60:18 | call to Array [element 0] | provenance | | +| impl/unsafeCode.rb:63:5:63:8 | arr2 [element 0] | impl/unsafeCode.rb:64:10:64:13 | arr2 | provenance | | +| impl/unsafeCode.rb:63:13:63:32 | call to Array [element 1] | impl/unsafeCode.rb:63:13:63:42 | call to join | provenance | | +| impl/unsafeCode.rb:63:13:63:42 | call to join | impl/unsafeCode.rb:63:5:63:8 | arr2 [element 0] | provenance | | +| impl/unsafeCode.rb:63:30:63:30 | y | impl/unsafeCode.rb:63:13:63:32 | call to Array [element 1] | provenance | | nodes | impl/unsafeCode.rb:2:12:2:17 | target | semmle.label | target | | impl/unsafeCode.rb:3:17:3:25 | #{...} | semmle.label | #{...} | diff --git a/ruby/ql/test/query-tests/security/cwe-117/LogInjection.expected b/ruby/ql/test/query-tests/security/cwe-117/LogInjection.expected index e3ea62b535d6..e0d5101f150f 100644 --- a/ruby/ql/test/query-tests/security/cwe-117/LogInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-117/LogInjection.expected @@ -1,28 +1,28 @@ edges -| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:16:19:16:29 | unsanitized | -| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:17:19:17:41 | ... + ... | -| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:17:31:17:41 | unsanitized | -| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:23:20:23:30 | unsanitized | -| app/controllers/users_controller.rb:15:19:15:24 | call to params | app/controllers/users_controller.rb:15:19:15:30 | ...[...] | -| app/controllers/users_controller.rb:15:19:15:30 | ...[...] | app/controllers/users_controller.rb:15:5:15:15 | unsanitized | -| app/controllers/users_controller.rb:17:19:17:41 | ... + ... [element] | app/controllers/users_controller.rb:17:19:17:41 | ... + ... | -| app/controllers/users_controller.rb:17:31:17:41 | unsanitized | app/controllers/users_controller.rb:17:19:17:41 | ... + ... [element] | -| app/controllers/users_controller.rb:23:20:23:30 | unsanitized | app/controllers/users_controller.rb:23:20:23:44 | call to sub | -| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:24:18:26:7 | do ... end [captured unsanitized2] | -| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:27:16:27:39 | ... + ... | -| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:27:28:27:39 | unsanitized2 | -| app/controllers/users_controller.rb:24:18:26:7 | do ... end [captured unsanitized2] | app/controllers/users_controller.rb:25:7:25:18 | unsanitized2 | -| app/controllers/users_controller.rb:27:16:27:39 | ... + ... [element] | app/controllers/users_controller.rb:27:16:27:39 | ... + ... | -| app/controllers/users_controller.rb:27:28:27:39 | unsanitized2 | app/controllers/users_controller.rb:27:16:27:39 | ... + ... [element] | -| app/controllers/users_controller.rb:33:19:33:25 | call to cookies | app/controllers/users_controller.rb:33:19:33:31 | ...[...] | -| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:34:31:34:45 | { ... } [captured unsanitized] | -| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:35:31:35:57 | { ... } [captured unsanitized] | -| app/controllers/users_controller.rb:34:31:34:45 | { ... } [captured unsanitized] | app/controllers/users_controller.rb:34:33:34:43 | unsanitized | -| app/controllers/users_controller.rb:35:31:35:57 | { ... } [captured unsanitized] | app/controllers/users_controller.rb:35:45:35:55 | unsanitized | -| app/controllers/users_controller.rb:35:33:35:55 | ... + ... [element] | app/controllers/users_controller.rb:35:33:35:55 | ... + ... | -| app/controllers/users_controller.rb:35:45:35:55 | unsanitized | app/controllers/users_controller.rb:35:33:35:55 | ... + ... | -| app/controllers/users_controller.rb:35:45:35:55 | unsanitized | app/controllers/users_controller.rb:35:33:35:55 | ... + ... [element] | -| app/controllers/users_controller.rb:49:19:49:24 | call to params | app/controllers/users_controller.rb:49:19:49:30 | ...[...] | +| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:16:19:16:29 | unsanitized | provenance | | +| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:17:19:17:41 | ... + ... | provenance | | +| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:17:31:17:41 | unsanitized | provenance | | +| app/controllers/users_controller.rb:15:5:15:15 | unsanitized | app/controllers/users_controller.rb:23:20:23:30 | unsanitized | provenance | | +| app/controllers/users_controller.rb:15:19:15:24 | call to params | app/controllers/users_controller.rb:15:19:15:30 | ...[...] | provenance | | +| app/controllers/users_controller.rb:15:19:15:30 | ...[...] | app/controllers/users_controller.rb:15:5:15:15 | unsanitized | provenance | | +| app/controllers/users_controller.rb:17:19:17:41 | ... + ... [element] | app/controllers/users_controller.rb:17:19:17:41 | ... + ... | provenance | | +| app/controllers/users_controller.rb:17:31:17:41 | unsanitized | app/controllers/users_controller.rb:17:19:17:41 | ... + ... [element] | provenance | | +| app/controllers/users_controller.rb:23:20:23:30 | unsanitized | app/controllers/users_controller.rb:23:20:23:44 | call to sub | provenance | | +| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:24:18:26:7 | do ... end [captured unsanitized2] | provenance | | +| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:27:16:27:39 | ... + ... | provenance | | +| app/controllers/users_controller.rb:23:20:23:44 | call to sub | app/controllers/users_controller.rb:27:28:27:39 | unsanitized2 | provenance | | +| app/controllers/users_controller.rb:24:18:26:7 | do ... end [captured unsanitized2] | app/controllers/users_controller.rb:25:7:25:18 | unsanitized2 | provenance | | +| app/controllers/users_controller.rb:27:16:27:39 | ... + ... [element] | app/controllers/users_controller.rb:27:16:27:39 | ... + ... | provenance | | +| app/controllers/users_controller.rb:27:28:27:39 | unsanitized2 | app/controllers/users_controller.rb:27:16:27:39 | ... + ... [element] | provenance | | +| app/controllers/users_controller.rb:33:19:33:25 | call to cookies | app/controllers/users_controller.rb:33:19:33:31 | ...[...] | provenance | | +| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:34:31:34:45 | { ... } [captured unsanitized] | provenance | | +| app/controllers/users_controller.rb:33:19:33:31 | ...[...] | app/controllers/users_controller.rb:35:31:35:57 | { ... } [captured unsanitized] | provenance | | +| app/controllers/users_controller.rb:34:31:34:45 | { ... } [captured unsanitized] | app/controllers/users_controller.rb:34:33:34:43 | unsanitized | provenance | | +| app/controllers/users_controller.rb:35:31:35:57 | { ... } [captured unsanitized] | app/controllers/users_controller.rb:35:45:35:55 | unsanitized | provenance | | +| app/controllers/users_controller.rb:35:33:35:55 | ... + ... [element] | app/controllers/users_controller.rb:35:33:35:55 | ... + ... | provenance | | +| app/controllers/users_controller.rb:35:45:35:55 | unsanitized | app/controllers/users_controller.rb:35:33:35:55 | ... + ... | provenance | | +| app/controllers/users_controller.rb:35:45:35:55 | unsanitized | app/controllers/users_controller.rb:35:33:35:55 | ... + ... [element] | provenance | | +| app/controllers/users_controller.rb:49:19:49:24 | call to params | app/controllers/users_controller.rb:49:19:49:30 | ...[...] | provenance | | nodes | app/controllers/users_controller.rb:15:5:15:15 | unsanitized | semmle.label | unsanitized | | app/controllers/users_controller.rb:15:19:15:24 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected b/ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected index ec079020695f..79d6c72fa3f5 100644 --- a/ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected +++ b/ruby/ql/test/query-tests/security/cwe-1333-polynomial-redos/PolynomialReDoS.expected @@ -1,51 +1,51 @@ edges -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:10:5:10:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:11:5:11:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:12:5:12:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:13:5:13:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:14:5:14:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:15:5:15:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:16:5:16:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:17:5:17:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:18:5:18:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:19:5:19:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:20:5:20:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:21:5:21:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:22:5:22:8 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:23:17:23:20 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:24:18:24:21 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:42:10:42:13 | name | -| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:47:10:47:13 | name | -| PolynomialReDoS.rb:4:12:4:17 | call to params | PolynomialReDoS.rb:4:12:4:24 | ...[...] | -| PolynomialReDoS.rb:4:12:4:24 | ...[...] | PolynomialReDoS.rb:4:5:4:8 | name | -| PolynomialReDoS.rb:27:5:27:5 | a | PolynomialReDoS.rb:28:5:28:5 | a | -| PolynomialReDoS.rb:27:9:27:14 | call to params | PolynomialReDoS.rb:27:9:27:18 | ...[...] | -| PolynomialReDoS.rb:27:9:27:18 | ...[...] | PolynomialReDoS.rb:27:5:27:5 | a | -| PolynomialReDoS.rb:29:5:29:5 | b | PolynomialReDoS.rb:30:5:30:5 | b | -| PolynomialReDoS.rb:29:9:29:14 | call to params | PolynomialReDoS.rb:29:9:29:18 | ...[...] | -| PolynomialReDoS.rb:29:9:29:18 | ...[...] | PolynomialReDoS.rb:29:5:29:5 | b | -| PolynomialReDoS.rb:31:5:31:5 | c | PolynomialReDoS.rb:32:5:32:5 | c | -| PolynomialReDoS.rb:31:9:31:14 | call to params | PolynomialReDoS.rb:31:9:31:18 | ...[...] | -| PolynomialReDoS.rb:31:9:31:18 | ...[...] | PolynomialReDoS.rb:31:5:31:5 | c | -| PolynomialReDoS.rb:54:5:54:8 | name | PolynomialReDoS.rb:56:38:56:41 | name | -| PolynomialReDoS.rb:54:5:54:8 | name | PolynomialReDoS.rb:58:37:58:40 | name | -| PolynomialReDoS.rb:54:12:54:17 | call to params | PolynomialReDoS.rb:54:12:54:24 | ...[...] | -| PolynomialReDoS.rb:54:12:54:24 | ...[...] | PolynomialReDoS.rb:54:5:54:8 | name | -| PolynomialReDoS.rb:56:38:56:41 | name | PolynomialReDoS.rb:61:33:61:37 | input | -| PolynomialReDoS.rb:58:37:58:40 | name | PolynomialReDoS.rb:65:42:65:46 | input | -| PolynomialReDoS.rb:61:33:61:37 | input | PolynomialReDoS.rb:62:5:62:9 | input | -| PolynomialReDoS.rb:65:42:65:46 | input | PolynomialReDoS.rb:66:5:66:9 | input | -| PolynomialReDoS.rb:70:5:70:8 | name | PolynomialReDoS.rb:73:32:73:35 | name | -| PolynomialReDoS.rb:70:12:70:17 | call to params | PolynomialReDoS.rb:70:12:70:24 | ...[...] | -| PolynomialReDoS.rb:70:12:70:24 | ...[...] | PolynomialReDoS.rb:70:5:70:8 | name | -| PolynomialReDoS.rb:73:32:73:35 | name | PolynomialReDoS.rb:76:35:76:39 | input | -| PolynomialReDoS.rb:76:35:76:39 | input | PolynomialReDoS.rb:77:5:77:9 | input | -| PolynomialReDoS.rb:103:5:103:8 | name | PolynomialReDoS.rb:105:5:105:8 | name | -| PolynomialReDoS.rb:103:12:103:17 | call to params | PolynomialReDoS.rb:103:12:103:24 | ...[...] | -| PolynomialReDoS.rb:103:12:103:24 | ...[...] | PolynomialReDoS.rb:103:5:103:8 | name | -| lib/index.rb:2:11:2:11 | x | lib/index.rb:4:13:4:13 | x | -| lib/index.rb:8:13:8:13 | x | lib/index.rb:9:15:9:15 | x | -| lib/index.rb:8:13:8:13 | x | lib/index.rb:11:16:11:16 | x | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:10:5:10:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:11:5:11:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:12:5:12:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:13:5:13:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:14:5:14:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:15:5:15:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:16:5:16:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:17:5:17:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:18:5:18:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:19:5:19:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:20:5:20:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:21:5:21:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:22:5:22:8 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:23:17:23:20 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:24:18:24:21 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:42:10:42:13 | name | provenance | | +| PolynomialReDoS.rb:4:5:4:8 | name | PolynomialReDoS.rb:47:10:47:13 | name | provenance | | +| PolynomialReDoS.rb:4:12:4:17 | call to params | PolynomialReDoS.rb:4:12:4:24 | ...[...] | provenance | | +| PolynomialReDoS.rb:4:12:4:24 | ...[...] | PolynomialReDoS.rb:4:5:4:8 | name | provenance | | +| PolynomialReDoS.rb:27:5:27:5 | a | PolynomialReDoS.rb:28:5:28:5 | a | provenance | | +| PolynomialReDoS.rb:27:9:27:14 | call to params | PolynomialReDoS.rb:27:9:27:18 | ...[...] | provenance | | +| PolynomialReDoS.rb:27:9:27:18 | ...[...] | PolynomialReDoS.rb:27:5:27:5 | a | provenance | | +| PolynomialReDoS.rb:29:5:29:5 | b | PolynomialReDoS.rb:30:5:30:5 | b | provenance | | +| PolynomialReDoS.rb:29:9:29:14 | call to params | PolynomialReDoS.rb:29:9:29:18 | ...[...] | provenance | | +| PolynomialReDoS.rb:29:9:29:18 | ...[...] | PolynomialReDoS.rb:29:5:29:5 | b | provenance | | +| PolynomialReDoS.rb:31:5:31:5 | c | PolynomialReDoS.rb:32:5:32:5 | c | provenance | | +| PolynomialReDoS.rb:31:9:31:14 | call to params | PolynomialReDoS.rb:31:9:31:18 | ...[...] | provenance | | +| PolynomialReDoS.rb:31:9:31:18 | ...[...] | PolynomialReDoS.rb:31:5:31:5 | c | provenance | | +| PolynomialReDoS.rb:54:5:54:8 | name | PolynomialReDoS.rb:56:38:56:41 | name | provenance | | +| PolynomialReDoS.rb:54:5:54:8 | name | PolynomialReDoS.rb:58:37:58:40 | name | provenance | | +| PolynomialReDoS.rb:54:12:54:17 | call to params | PolynomialReDoS.rb:54:12:54:24 | ...[...] | provenance | | +| PolynomialReDoS.rb:54:12:54:24 | ...[...] | PolynomialReDoS.rb:54:5:54:8 | name | provenance | | +| PolynomialReDoS.rb:56:38:56:41 | name | PolynomialReDoS.rb:61:33:61:37 | input | provenance | | +| PolynomialReDoS.rb:58:37:58:40 | name | PolynomialReDoS.rb:65:42:65:46 | input | provenance | | +| PolynomialReDoS.rb:61:33:61:37 | input | PolynomialReDoS.rb:62:5:62:9 | input | provenance | | +| PolynomialReDoS.rb:65:42:65:46 | input | PolynomialReDoS.rb:66:5:66:9 | input | provenance | | +| PolynomialReDoS.rb:70:5:70:8 | name | PolynomialReDoS.rb:73:32:73:35 | name | provenance | | +| PolynomialReDoS.rb:70:12:70:17 | call to params | PolynomialReDoS.rb:70:12:70:24 | ...[...] | provenance | | +| PolynomialReDoS.rb:70:12:70:24 | ...[...] | PolynomialReDoS.rb:70:5:70:8 | name | provenance | | +| PolynomialReDoS.rb:73:32:73:35 | name | PolynomialReDoS.rb:76:35:76:39 | input | provenance | | +| PolynomialReDoS.rb:76:35:76:39 | input | PolynomialReDoS.rb:77:5:77:9 | input | provenance | | +| PolynomialReDoS.rb:103:5:103:8 | name | PolynomialReDoS.rb:105:5:105:8 | name | provenance | | +| PolynomialReDoS.rb:103:12:103:17 | call to params | PolynomialReDoS.rb:103:12:103:24 | ...[...] | provenance | | +| PolynomialReDoS.rb:103:12:103:24 | ...[...] | PolynomialReDoS.rb:103:5:103:8 | name | provenance | | +| lib/index.rb:2:11:2:11 | x | lib/index.rb:4:13:4:13 | x | provenance | | +| lib/index.rb:8:13:8:13 | x | lib/index.rb:9:15:9:15 | x | provenance | | +| lib/index.rb:8:13:8:13 | x | lib/index.rb:11:16:11:16 | x | provenance | | nodes | PolynomialReDoS.rb:4:5:4:8 | name | semmle.label | name | | PolynomialReDoS.rb:4:12:4:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-1333-regexp-injection/RegExpInjection.expected b/ruby/ql/test/query-tests/security/cwe-1333-regexp-injection/RegExpInjection.expected index 3857229d278e..dff126abec1d 100644 --- a/ruby/ql/test/query-tests/security/cwe-1333-regexp-injection/RegExpInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-1333-regexp-injection/RegExpInjection.expected @@ -1,25 +1,25 @@ edges -| RegExpInjection.rb:4:5:4:8 | name | RegExpInjection.rb:5:13:5:21 | /#{...}/ | -| RegExpInjection.rb:4:12:4:17 | call to params | RegExpInjection.rb:4:12:4:24 | ...[...] | -| RegExpInjection.rb:4:12:4:24 | ...[...] | RegExpInjection.rb:4:5:4:8 | name | -| RegExpInjection.rb:10:5:10:8 | name | RegExpInjection.rb:11:13:11:27 | /foo#{...}bar/ | -| RegExpInjection.rb:10:12:10:17 | call to params | RegExpInjection.rb:10:12:10:24 | ...[...] | -| RegExpInjection.rb:10:12:10:24 | ...[...] | RegExpInjection.rb:10:5:10:8 | name | -| RegExpInjection.rb:16:5:16:8 | name | RegExpInjection.rb:17:24:17:27 | name | -| RegExpInjection.rb:16:12:16:17 | call to params | RegExpInjection.rb:16:12:16:24 | ...[...] | -| RegExpInjection.rb:16:12:16:24 | ...[...] | RegExpInjection.rb:16:5:16:8 | name | -| RegExpInjection.rb:22:5:22:8 | name | RegExpInjection.rb:23:24:23:33 | ... + ... | -| RegExpInjection.rb:22:5:22:8 | name | RegExpInjection.rb:23:30:23:33 | name | -| RegExpInjection.rb:22:12:22:17 | call to params | RegExpInjection.rb:22:12:22:24 | ...[...] | -| RegExpInjection.rb:22:12:22:24 | ...[...] | RegExpInjection.rb:22:5:22:8 | name | -| RegExpInjection.rb:23:24:23:33 | ... + ... [element] | RegExpInjection.rb:23:24:23:33 | ... + ... | -| RegExpInjection.rb:23:30:23:33 | name | RegExpInjection.rb:23:24:23:33 | ... + ... [element] | -| RegExpInjection.rb:54:5:54:8 | name | RegExpInjection.rb:55:28:55:37 | ... + ... | -| RegExpInjection.rb:54:5:54:8 | name | RegExpInjection.rb:55:34:55:37 | name | -| RegExpInjection.rb:54:12:54:17 | call to params | RegExpInjection.rb:54:12:54:24 | ...[...] | -| RegExpInjection.rb:54:12:54:24 | ...[...] | RegExpInjection.rb:54:5:54:8 | name | -| RegExpInjection.rb:55:28:55:37 | ... + ... [element] | RegExpInjection.rb:55:28:55:37 | ... + ... | -| RegExpInjection.rb:55:34:55:37 | name | RegExpInjection.rb:55:28:55:37 | ... + ... [element] | +| RegExpInjection.rb:4:5:4:8 | name | RegExpInjection.rb:5:13:5:21 | /#{...}/ | provenance | | +| RegExpInjection.rb:4:12:4:17 | call to params | RegExpInjection.rb:4:12:4:24 | ...[...] | provenance | | +| RegExpInjection.rb:4:12:4:24 | ...[...] | RegExpInjection.rb:4:5:4:8 | name | provenance | | +| RegExpInjection.rb:10:5:10:8 | name | RegExpInjection.rb:11:13:11:27 | /foo#{...}bar/ | provenance | | +| RegExpInjection.rb:10:12:10:17 | call to params | RegExpInjection.rb:10:12:10:24 | ...[...] | provenance | | +| RegExpInjection.rb:10:12:10:24 | ...[...] | RegExpInjection.rb:10:5:10:8 | name | provenance | | +| RegExpInjection.rb:16:5:16:8 | name | RegExpInjection.rb:17:24:17:27 | name | provenance | | +| RegExpInjection.rb:16:12:16:17 | call to params | RegExpInjection.rb:16:12:16:24 | ...[...] | provenance | | +| RegExpInjection.rb:16:12:16:24 | ...[...] | RegExpInjection.rb:16:5:16:8 | name | provenance | | +| RegExpInjection.rb:22:5:22:8 | name | RegExpInjection.rb:23:24:23:33 | ... + ... | provenance | | +| RegExpInjection.rb:22:5:22:8 | name | RegExpInjection.rb:23:30:23:33 | name | provenance | | +| RegExpInjection.rb:22:12:22:17 | call to params | RegExpInjection.rb:22:12:22:24 | ...[...] | provenance | | +| RegExpInjection.rb:22:12:22:24 | ...[...] | RegExpInjection.rb:22:5:22:8 | name | provenance | | +| RegExpInjection.rb:23:24:23:33 | ... + ... [element] | RegExpInjection.rb:23:24:23:33 | ... + ... | provenance | | +| RegExpInjection.rb:23:30:23:33 | name | RegExpInjection.rb:23:24:23:33 | ... + ... [element] | provenance | | +| RegExpInjection.rb:54:5:54:8 | name | RegExpInjection.rb:55:28:55:37 | ... + ... | provenance | | +| RegExpInjection.rb:54:5:54:8 | name | RegExpInjection.rb:55:34:55:37 | name | provenance | | +| RegExpInjection.rb:54:12:54:17 | call to params | RegExpInjection.rb:54:12:54:24 | ...[...] | provenance | | +| RegExpInjection.rb:54:12:54:24 | ...[...] | RegExpInjection.rb:54:5:54:8 | name | provenance | | +| RegExpInjection.rb:55:28:55:37 | ... + ... [element] | RegExpInjection.rb:55:28:55:37 | ... + ... | provenance | | +| RegExpInjection.rb:55:34:55:37 | name | RegExpInjection.rb:55:28:55:37 | ... + ... [element] | provenance | | nodes | RegExpInjection.rb:4:5:4:8 | name | semmle.label | name | | RegExpInjection.rb:4:12:4:17 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-134/TaintedFormatString.expected b/ruby/ql/test/query-tests/security/cwe-134/TaintedFormatString.expected index de044832e237..a84a886c7783 100644 --- a/ruby/ql/test/query-tests/security/cwe-134/TaintedFormatString.expected +++ b/ruby/ql/test/query-tests/security/cwe-134/TaintedFormatString.expected @@ -1,23 +1,23 @@ edges -| tainted_format_string.rb:4:12:4:17 | call to params | tainted_format_string.rb:4:12:4:26 | ...[...] | -| tainted_format_string.rb:5:19:5:24 | call to params | tainted_format_string.rb:5:19:5:33 | ...[...] | -| tainted_format_string.rb:10:23:10:28 | call to params | tainted_format_string.rb:10:23:10:37 | ...[...] | -| tainted_format_string.rb:11:30:11:35 | call to params | tainted_format_string.rb:11:30:11:44 | ...[...] | -| tainted_format_string.rb:18:23:18:28 | call to params | tainted_format_string.rb:18:23:18:37 | ...[...] | -| tainted_format_string.rb:19:30:19:35 | call to params | tainted_format_string.rb:19:30:19:44 | ...[...] | -| tainted_format_string.rb:21:27:21:32 | call to params | tainted_format_string.rb:21:27:21:41 | ...[...] | -| tainted_format_string.rb:22:20:22:25 | call to params | tainted_format_string.rb:22:20:22:34 | ...[...] | -| tainted_format_string.rb:28:19:28:24 | call to params | tainted_format_string.rb:28:19:28:33 | ...[...] | -| tainted_format_string.rb:33:12:33:46 | ... + ... [element] | tainted_format_string.rb:33:12:33:46 | ... + ... | -| tainted_format_string.rb:33:32:33:37 | call to params | tainted_format_string.rb:33:32:33:46 | ...[...] | -| tainted_format_string.rb:33:32:33:46 | ...[...] | tainted_format_string.rb:33:12:33:46 | ... + ... | -| tainted_format_string.rb:33:32:33:46 | ...[...] | tainted_format_string.rb:33:12:33:46 | ... + ... [element] | -| tainted_format_string.rb:36:30:36:35 | call to params | tainted_format_string.rb:36:30:36:44 | ...[...] | -| tainted_format_string.rb:36:30:36:44 | ...[...] | tainted_format_string.rb:36:12:36:46 | "A log message: #{...}" | -| tainted_format_string.rb:39:22:39:27 | call to params | tainted_format_string.rb:39:22:39:36 | ...[...] | -| tainted_format_string.rb:39:22:39:36 | ...[...] | tainted_format_string.rb:39:5:39:45 | "A log message #{...} %{foo}" | -| tainted_format_string.rb:42:22:42:27 | call to params | tainted_format_string.rb:42:22:42:36 | ...[...] | -| tainted_format_string.rb:42:22:42:36 | ...[...] | tainted_format_string.rb:42:5:42:43 | "A log message #{...} %08x" | +| tainted_format_string.rb:4:12:4:17 | call to params | tainted_format_string.rb:4:12:4:26 | ...[...] | provenance | | +| tainted_format_string.rb:5:19:5:24 | call to params | tainted_format_string.rb:5:19:5:33 | ...[...] | provenance | | +| tainted_format_string.rb:10:23:10:28 | call to params | tainted_format_string.rb:10:23:10:37 | ...[...] | provenance | | +| tainted_format_string.rb:11:30:11:35 | call to params | tainted_format_string.rb:11:30:11:44 | ...[...] | provenance | | +| tainted_format_string.rb:18:23:18:28 | call to params | tainted_format_string.rb:18:23:18:37 | ...[...] | provenance | | +| tainted_format_string.rb:19:30:19:35 | call to params | tainted_format_string.rb:19:30:19:44 | ...[...] | provenance | | +| tainted_format_string.rb:21:27:21:32 | call to params | tainted_format_string.rb:21:27:21:41 | ...[...] | provenance | | +| tainted_format_string.rb:22:20:22:25 | call to params | tainted_format_string.rb:22:20:22:34 | ...[...] | provenance | | +| tainted_format_string.rb:28:19:28:24 | call to params | tainted_format_string.rb:28:19:28:33 | ...[...] | provenance | | +| tainted_format_string.rb:33:12:33:46 | ... + ... [element] | tainted_format_string.rb:33:12:33:46 | ... + ... | provenance | | +| tainted_format_string.rb:33:32:33:37 | call to params | tainted_format_string.rb:33:32:33:46 | ...[...] | provenance | | +| tainted_format_string.rb:33:32:33:46 | ...[...] | tainted_format_string.rb:33:12:33:46 | ... + ... | provenance | | +| tainted_format_string.rb:33:32:33:46 | ...[...] | tainted_format_string.rb:33:12:33:46 | ... + ... [element] | provenance | | +| tainted_format_string.rb:36:30:36:35 | call to params | tainted_format_string.rb:36:30:36:44 | ...[...] | provenance | | +| tainted_format_string.rb:36:30:36:44 | ...[...] | tainted_format_string.rb:36:12:36:46 | "A log message: #{...}" | provenance | | +| tainted_format_string.rb:39:22:39:27 | call to params | tainted_format_string.rb:39:22:39:36 | ...[...] | provenance | | +| tainted_format_string.rb:39:22:39:36 | ...[...] | tainted_format_string.rb:39:5:39:45 | "A log message #{...} %{foo}" | provenance | | +| tainted_format_string.rb:42:22:42:27 | call to params | tainted_format_string.rb:42:22:42:36 | ...[...] | provenance | | +| tainted_format_string.rb:42:22:42:36 | ...[...] | tainted_format_string.rb:42:5:42:43 | "A log message #{...} %08x" | provenance | | nodes | tainted_format_string.rb:4:12:4:17 | call to params | semmle.label | call to params | | tainted_format_string.rb:4:12:4:26 | ...[...] | semmle.label | ...[...] | diff --git a/ruby/ql/test/query-tests/security/cwe-209/StackTraceExposure.expected b/ruby/ql/test/query-tests/security/cwe-209/StackTraceExposure.expected index 59dc2e070eef..00e0b4317de2 100644 --- a/ruby/ql/test/query-tests/security/cwe-209/StackTraceExposure.expected +++ b/ruby/ql/test/query-tests/security/cwe-209/StackTraceExposure.expected @@ -1,6 +1,6 @@ edges -| StackTraceExposure.rb:11:5:11:6 | bt | StackTraceExposure.rb:12:18:12:19 | bt | -| StackTraceExposure.rb:11:10:11:17 | call to caller | StackTraceExposure.rb:11:5:11:6 | bt | +| StackTraceExposure.rb:11:5:11:6 | bt | StackTraceExposure.rb:12:18:12:19 | bt | provenance | | +| StackTraceExposure.rb:11:10:11:17 | call to caller | StackTraceExposure.rb:11:5:11:6 | bt | provenance | | nodes | StackTraceExposure.rb:6:18:6:28 | call to backtrace | semmle.label | call to backtrace | | StackTraceExposure.rb:11:5:11:6 | bt | semmle.label | bt | diff --git a/ruby/ql/test/query-tests/security/cwe-312/CleartextLogging.expected b/ruby/ql/test/query-tests/security/cwe-312/CleartextLogging.expected index a35aef729365..cb29945fbee8 100644 --- a/ruby/ql/test/query-tests/security/cwe-312/CleartextLogging.expected +++ b/ruby/ql/test/query-tests/security/cwe-312/CleartextLogging.expected @@ -1,43 +1,43 @@ edges -| logging.rb:3:1:3:8 | password | logging.rb:6:20:6:27 | password | -| logging.rb:3:1:3:8 | password | logging.rb:8:21:8:28 | password | -| logging.rb:3:1:3:8 | password | logging.rb:10:21:10:28 | password | -| logging.rb:3:1:3:8 | password | logging.rb:12:21:12:28 | password | -| logging.rb:3:1:3:8 | password | logging.rb:14:23:14:30 | password | -| logging.rb:3:1:3:8 | password | logging.rb:16:20:16:27 | password | -| logging.rb:3:1:3:8 | password | logging.rb:19:33:19:40 | password | -| logging.rb:3:1:3:8 | password | logging.rb:21:44:21:51 | password | -| logging.rb:3:1:3:8 | password | logging.rb:23:33:23:40 | password | -| logging.rb:3:1:3:8 | password | logging.rb:26:18:26:34 | "pw: #{...}" | -| logging.rb:3:1:3:8 | password | logging.rb:28:26:28:33 | password | -| logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:3:1:3:8 | password | -| logging.rb:30:1:30:4 | hsh1 [element :password] | logging.rb:38:20:38:23 | hsh1 [element :password] | -| logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" | logging.rb:30:1:30:4 | hsh1 [element :password] | -| logging.rb:34:1:34:4 | [post] hsh2 [element :password] | logging.rb:35:1:35:4 | hsh3 [element :password] | -| logging.rb:34:1:34:4 | [post] hsh2 [element :password] | logging.rb:40:20:40:23 | hsh2 [element :password] | -| logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | logging.rb:34:1:34:4 | [post] hsh2 [element :password] | -| logging.rb:35:1:35:4 | hsh3 [element :password] | logging.rb:42:20:42:23 | hsh3 [element :password] | -| logging.rb:38:20:38:23 | hsh1 [element :password] | logging.rb:38:20:38:34 | ...[...] | -| logging.rb:40:20:40:23 | hsh2 [element :password] | logging.rb:40:20:40:34 | ...[...] | -| logging.rb:42:20:42:23 | hsh3 [element :password] | logging.rb:42:20:42:34 | ...[...] | -| logging.rb:64:1:64:31 | password_masked_ineffective_sub | logging.rb:68:35:68:65 | password_masked_ineffective_sub | -| logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:64:1:64:31 | password_masked_ineffective_sub | -| logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex | logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | -| logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex | -| logging.rb:66:1:66:32 | password_masked_ineffective_gsub | logging.rb:70:36:70:67 | password_masked_ineffective_gsub | -| logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:66:1:66:32 | password_masked_ineffective_gsub | -| logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex | logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | -| logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex | -| logging.rb:68:1:68:31 | password_masked_ineffective_sub | logging.rb:74:20:74:50 | password_masked_ineffective_sub | -| logging.rb:68:35:68:65 | password_masked_ineffective_sub | logging.rb:68:35:68:88 | call to sub | -| logging.rb:68:35:68:88 | call to sub | logging.rb:68:1:68:31 | password_masked_ineffective_sub | -| logging.rb:70:1:70:32 | password_masked_ineffective_gsub | logging.rb:76:20:76:51 | password_masked_ineffective_gsub | -| logging.rb:70:36:70:67 | password_masked_ineffective_gsub | logging.rb:70:36:70:86 | call to gsub | -| logging.rb:70:36:70:86 | call to gsub | logging.rb:70:1:70:32 | password_masked_ineffective_gsub | -| logging.rb:82:9:82:16 | password | logging.rb:84:15:84:22 | password | -| logging.rb:87:1:87:12 | password_arg | logging.rb:88:5:88:16 | password_arg | -| logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" | logging.rb:87:1:87:12 | password_arg | -| logging.rb:88:5:88:16 | password_arg | logging.rb:82:9:82:16 | password | +| logging.rb:3:1:3:8 | password | logging.rb:6:20:6:27 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:8:21:8:28 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:10:21:10:28 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:12:21:12:28 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:14:23:14:30 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:16:20:16:27 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:19:33:19:40 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:21:44:21:51 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:23:33:23:40 | password | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:26:18:26:34 | "pw: #{...}" | provenance | | +| logging.rb:3:1:3:8 | password | logging.rb:28:26:28:33 | password | provenance | | +| logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | logging.rb:3:1:3:8 | password | provenance | | +| logging.rb:30:1:30:4 | hsh1 [element :password] | logging.rb:38:20:38:23 | hsh1 [element :password] | provenance | | +| logging.rb:30:20:30:53 | "aec5058e61f7f122998b1a30ee2c66b6" | logging.rb:30:1:30:4 | hsh1 [element :password] | provenance | | +| logging.rb:34:1:34:4 | [post] hsh2 [element :password] | logging.rb:35:1:35:4 | hsh3 [element :password] | provenance | | +| logging.rb:34:1:34:4 | [post] hsh2 [element :password] | logging.rb:40:20:40:23 | hsh2 [element :password] | provenance | | +| logging.rb:34:19:34:52 | "beeda625d7306b45784d91ea0336e201" | logging.rb:34:1:34:4 | [post] hsh2 [element :password] | provenance | | +| logging.rb:35:1:35:4 | hsh3 [element :password] | logging.rb:42:20:42:23 | hsh3 [element :password] | provenance | | +| logging.rb:38:20:38:23 | hsh1 [element :password] | logging.rb:38:20:38:34 | ...[...] | provenance | | +| logging.rb:40:20:40:23 | hsh2 [element :password] | logging.rb:40:20:40:34 | ...[...] | provenance | | +| logging.rb:42:20:42:23 | hsh3 [element :password] | logging.rb:42:20:42:34 | ...[...] | provenance | | +| logging.rb:64:1:64:31 | password_masked_ineffective_sub | logging.rb:68:35:68:65 | password_masked_ineffective_sub | provenance | | +| logging.rb:64:35:64:68 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:64:1:64:31 | password_masked_ineffective_sub | provenance | | +| logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex | logging.rb:78:20:78:53 | password_masked_ineffective_sub_ex | provenance | | +| logging.rb:65:38:65:71 | "ca497451f5e883662fb1a37bc9ec7838" | logging.rb:65:1:65:34 | password_masked_ineffective_sub_ex | provenance | | +| logging.rb:66:1:66:32 | password_masked_ineffective_gsub | logging.rb:70:36:70:67 | password_masked_ineffective_gsub | provenance | | +| logging.rb:66:36:66:69 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:66:1:66:32 | password_masked_ineffective_gsub | provenance | | +| logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex | logging.rb:80:20:80:54 | password_masked_ineffective_gsub_ex | provenance | | +| logging.rb:67:39:67:72 | "a7e3747b19930d4f4b8181047194832f" | logging.rb:67:1:67:35 | password_masked_ineffective_gsub_ex | provenance | | +| logging.rb:68:1:68:31 | password_masked_ineffective_sub | logging.rb:74:20:74:50 | password_masked_ineffective_sub | provenance | | +| logging.rb:68:35:68:65 | password_masked_ineffective_sub | logging.rb:68:35:68:88 | call to sub | provenance | | +| logging.rb:68:35:68:88 | call to sub | logging.rb:68:1:68:31 | password_masked_ineffective_sub | provenance | | +| logging.rb:70:1:70:32 | password_masked_ineffective_gsub | logging.rb:76:20:76:51 | password_masked_ineffective_gsub | provenance | | +| logging.rb:70:36:70:67 | password_masked_ineffective_gsub | logging.rb:70:36:70:86 | call to gsub | provenance | | +| logging.rb:70:36:70:86 | call to gsub | logging.rb:70:1:70:32 | password_masked_ineffective_gsub | provenance | | +| logging.rb:82:9:82:16 | password | logging.rb:84:15:84:22 | password | provenance | | +| logging.rb:87:1:87:12 | password_arg | logging.rb:88:5:88:16 | password_arg | provenance | | +| logging.rb:87:16:87:49 | "65f2950df2f0e2c38d7ba2ccca767291" | logging.rb:87:1:87:12 | password_arg | provenance | | +| logging.rb:88:5:88:16 | password_arg | logging.rb:82:9:82:16 | password | provenance | | nodes | logging.rb:3:1:3:8 | password | semmle.label | password | | logging.rb:3:12:3:45 | "043697b96909e03ca907599d6420555f" | semmle.label | "043697b96909e03ca907599d6420555f" | diff --git a/ruby/ql/test/query-tests/security/cwe-312/CleartextStorage.expected b/ruby/ql/test/query-tests/security/cwe-312/CleartextStorage.expected index 9ec7e50e4600..f740990bceda 100644 --- a/ruby/ql/test/query-tests/security/cwe-312/CleartextStorage.expected +++ b/ruby/ql/test/query-tests/security/cwe-312/CleartextStorage.expected @@ -1,34 +1,34 @@ edges -| app/controllers/users_controller.rb:3:5:3:16 | new_password | app/controllers/users_controller.rb:5:39:5:50 | new_password | -| app/controllers/users_controller.rb:3:5:3:16 | new_password | app/controllers/users_controller.rb:7:41:7:52 | new_password | -| app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | app/controllers/users_controller.rb:3:5:3:16 | new_password | -| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:13:42:13:53 | new_password | -| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | -| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | -| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | -| app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | app/controllers/users_controller.rb:11:5:11:16 | new_password | -| app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | -| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | -| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | -| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | -| app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | app/controllers/users_controller.rb:19:5:19:16 | new_password | -| app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | -| app/controllers/users_controller.rb:26:5:26:16 | new_password | app/controllers/users_controller.rb:28:27:28:38 | new_password | -| app/controllers/users_controller.rb:26:5:26:16 | new_password | app/controllers/users_controller.rb:30:28:30:39 | new_password | -| app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | app/controllers/users_controller.rb:26:5:26:16 | new_password | -| app/controllers/users_controller.rb:35:5:35:16 | new_password | app/controllers/users_controller.rb:37:39:37:50 | new_password | -| app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" | app/controllers/users_controller.rb:35:5:35:16 | new_password | -| app/controllers/users_controller.rb:42:5:42:16 | new_password | app/controllers/users_controller.rb:44:21:44:32 | new_password | -| app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" | app/controllers/users_controller.rb:42:5:42:16 | new_password | -| app/controllers/users_controller.rb:58:5:58:16 | new_password | app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | -| app/controllers/users_controller.rb:58:5:58:16 | new_password | app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | -| app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | app/controllers/users_controller.rb:58:5:58:16 | new_password | -| app/models/user.rb:3:5:3:16 | new_password | app/models/user.rb:5:27:5:38 | new_password | -| app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" | app/models/user.rb:3:5:3:16 | new_password | -| app/models/user.rb:9:5:9:16 | new_password | app/models/user.rb:11:22:11:33 | new_password | -| app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" | app/models/user.rb:9:5:9:16 | new_password | -| app/models/user.rb:15:5:15:16 | new_password | app/models/user.rb:17:21:17:32 | new_password | -| app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" | app/models/user.rb:15:5:15:16 | new_password | +| app/controllers/users_controller.rb:3:5:3:16 | new_password | app/controllers/users_controller.rb:5:39:5:50 | new_password | provenance | | +| app/controllers/users_controller.rb:3:5:3:16 | new_password | app/controllers/users_controller.rb:7:41:7:52 | new_password | provenance | | +| app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | app/controllers/users_controller.rb:3:5:3:16 | new_password | provenance | | +| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:13:42:13:53 | new_password | provenance | | +| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | provenance | | +| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:49:15:60 | new_password | provenance | | +| app/controllers/users_controller.rb:11:5:11:16 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | provenance | | +| app/controllers/users_controller.rb:11:20:11:53 | "083c9e1da4cc0c2f5480bb4dbe6ff141" | app/controllers/users_controller.rb:11:5:11:16 | new_password | provenance | | +| app/controllers/users_controller.rb:15:49:15:60 | new_password | app/controllers/users_controller.rb:15:87:15:98 | new_password | provenance | | +| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | provenance | | +| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:45:21:56 | new_password | provenance | | +| app/controllers/users_controller.rb:19:5:19:16 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | provenance | | +| app/controllers/users_controller.rb:19:20:19:53 | "504d224a806cf8073cd14ef08242d422" | app/controllers/users_controller.rb:19:5:19:16 | new_password | provenance | | +| app/controllers/users_controller.rb:21:45:21:56 | new_password | app/controllers/users_controller.rb:21:83:21:94 | new_password | provenance | | +| app/controllers/users_controller.rb:26:5:26:16 | new_password | app/controllers/users_controller.rb:28:27:28:38 | new_password | provenance | | +| app/controllers/users_controller.rb:26:5:26:16 | new_password | app/controllers/users_controller.rb:30:28:30:39 | new_password | provenance | | +| app/controllers/users_controller.rb:26:20:26:53 | "7d6ae08394c3f284506dca70f05995f6" | app/controllers/users_controller.rb:26:5:26:16 | new_password | provenance | | +| app/controllers/users_controller.rb:35:5:35:16 | new_password | app/controllers/users_controller.rb:37:39:37:50 | new_password | provenance | | +| app/controllers/users_controller.rb:35:20:35:53 | "ff295f8648a406c37fbe378377320e4c" | app/controllers/users_controller.rb:35:5:35:16 | new_password | provenance | | +| app/controllers/users_controller.rb:42:5:42:16 | new_password | app/controllers/users_controller.rb:44:21:44:32 | new_password | provenance | | +| app/controllers/users_controller.rb:42:20:42:53 | "78ffbec583b546bd073efd898f833184" | app/controllers/users_controller.rb:42:5:42:16 | new_password | provenance | | +| app/controllers/users_controller.rb:58:5:58:16 | new_password | app/controllers/users_controller.rb:61:25:61:53 | "password: #{...}\\n" | provenance | | +| app/controllers/users_controller.rb:58:5:58:16 | new_password | app/controllers/users_controller.rb:64:35:64:61 | "password: #{...}" | provenance | | +| app/controllers/users_controller.rb:58:20:58:53 | "0157af7c38cbdd24f1616de4e5321861" | app/controllers/users_controller.rb:58:5:58:16 | new_password | provenance | | +| app/models/user.rb:3:5:3:16 | new_password | app/models/user.rb:5:27:5:38 | new_password | provenance | | +| app/models/user.rb:3:20:3:53 | "06c38c6a8a9c11a9d3b209a3193047b4" | app/models/user.rb:3:5:3:16 | new_password | provenance | | +| app/models/user.rb:9:5:9:16 | new_password | app/models/user.rb:11:22:11:33 | new_password | provenance | | +| app/models/user.rb:9:20:9:53 | "52652fb5c709fb6b9b5a0194af7c6067" | app/models/user.rb:9:5:9:16 | new_password | provenance | | +| app/models/user.rb:15:5:15:16 | new_password | app/models/user.rb:17:21:17:32 | new_password | provenance | | +| app/models/user.rb:15:20:15:53 | "f982bf2531c149a8a1444a951b12e830" | app/models/user.rb:15:5:15:16 | new_password | provenance | | nodes | app/controllers/users_controller.rb:3:5:3:16 | new_password | semmle.label | new_password | | app/controllers/users_controller.rb:3:20:3:53 | "043697b96909e03ca907599d6420555f" | semmle.label | "043697b96909e03ca907599d6420555f" | diff --git a/ruby/ql/test/query-tests/security/cwe-502/oj-global-options/UnsafeDeserialization.expected b/ruby/ql/test/query-tests/security/cwe-502/oj-global-options/UnsafeDeserialization.expected index 27bfc08947fe..44f54744e4b1 100644 --- a/ruby/ql/test/query-tests/security/cwe-502/oj-global-options/UnsafeDeserialization.expected +++ b/ruby/ql/test/query-tests/security/cwe-502/oj-global-options/UnsafeDeserialization.expected @@ -1,7 +1,7 @@ edges -| OjGlobalOptions.rb:13:5:13:13 | json_data | OjGlobalOptions.rb:14:22:14:30 | json_data | -| OjGlobalOptions.rb:13:17:13:22 | call to params | OjGlobalOptions.rb:13:17:13:28 | ...[...] | -| OjGlobalOptions.rb:13:17:13:28 | ...[...] | OjGlobalOptions.rb:13:5:13:13 | json_data | +| OjGlobalOptions.rb:13:5:13:13 | json_data | OjGlobalOptions.rb:14:22:14:30 | json_data | provenance | | +| OjGlobalOptions.rb:13:17:13:22 | call to params | OjGlobalOptions.rb:13:17:13:28 | ...[...] | provenance | | +| OjGlobalOptions.rb:13:17:13:28 | ...[...] | OjGlobalOptions.rb:13:5:13:13 | json_data | provenance | | nodes | OjGlobalOptions.rb:13:5:13:13 | json_data | semmle.label | json_data | | OjGlobalOptions.rb:13:17:13:22 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-502/ox-global-options/UnsafeDeserialization.expected b/ruby/ql/test/query-tests/security/cwe-502/ox-global-options/UnsafeDeserialization.expected index e96275a95ad1..4fa7c85df052 100644 --- a/ruby/ql/test/query-tests/security/cwe-502/ox-global-options/UnsafeDeserialization.expected +++ b/ruby/ql/test/query-tests/security/cwe-502/ox-global-options/UnsafeDeserialization.expected @@ -1,7 +1,7 @@ edges -| OxGlobalOptions.rb:6:5:6:12 | xml_data | OxGlobalOptions.rb:7:22:7:29 | xml_data | -| OxGlobalOptions.rb:6:16:6:21 | call to params | OxGlobalOptions.rb:6:16:6:27 | ...[...] | -| OxGlobalOptions.rb:6:16:6:27 | ...[...] | OxGlobalOptions.rb:6:5:6:12 | xml_data | +| OxGlobalOptions.rb:6:5:6:12 | xml_data | OxGlobalOptions.rb:7:22:7:29 | xml_data | provenance | | +| OxGlobalOptions.rb:6:16:6:21 | call to params | OxGlobalOptions.rb:6:16:6:27 | ...[...] | provenance | | +| OxGlobalOptions.rb:6:16:6:27 | ...[...] | OxGlobalOptions.rb:6:5:6:12 | xml_data | provenance | | nodes | OxGlobalOptions.rb:6:5:6:12 | xml_data | semmle.label | xml_data | | OxGlobalOptions.rb:6:16:6:21 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-502/unsafe-deserialization/UnsafeDeserialization.expected b/ruby/ql/test/query-tests/security/cwe-502/unsafe-deserialization/UnsafeDeserialization.expected index 8a17c569e337..bf0376f39599 100644 --- a/ruby/ql/test/query-tests/security/cwe-502/unsafe-deserialization/UnsafeDeserialization.expected +++ b/ruby/ql/test/query-tests/security/cwe-502/unsafe-deserialization/UnsafeDeserialization.expected @@ -1,55 +1,55 @@ edges -| PlistUnsafeDeserialization.rb:5:30:5:35 | call to params | PlistUnsafeDeserialization.rb:5:30:5:49 | ...[...] | -| PlistUnsafeDeserialization.rb:6:30:6:35 | call to params | PlistUnsafeDeserialization.rb:6:30:6:49 | ...[...] | -| UnsafeDeserialization.rb:11:5:11:19 | serialized_data | UnsafeDeserialization.rb:12:27:12:41 | serialized_data | -| UnsafeDeserialization.rb:11:23:11:50 | call to decode64 | UnsafeDeserialization.rb:11:5:11:19 | serialized_data | -| UnsafeDeserialization.rb:11:39:11:44 | call to params | UnsafeDeserialization.rb:11:39:11:50 | ...[...] | -| UnsafeDeserialization.rb:11:39:11:50 | ...[...] | UnsafeDeserialization.rb:11:23:11:50 | call to decode64 | -| UnsafeDeserialization.rb:17:5:17:19 | serialized_data | UnsafeDeserialization.rb:18:30:18:44 | serialized_data | -| UnsafeDeserialization.rb:17:23:17:50 | call to decode64 | UnsafeDeserialization.rb:17:5:17:19 | serialized_data | -| UnsafeDeserialization.rb:17:39:17:44 | call to params | UnsafeDeserialization.rb:17:39:17:50 | ...[...] | -| UnsafeDeserialization.rb:17:39:17:50 | ...[...] | UnsafeDeserialization.rb:17:23:17:50 | call to decode64 | -| UnsafeDeserialization.rb:23:5:23:13 | json_data | UnsafeDeserialization.rb:24:24:24:32 | json_data | -| UnsafeDeserialization.rb:23:17:23:22 | call to params | UnsafeDeserialization.rb:23:17:23:28 | ...[...] | -| UnsafeDeserialization.rb:23:17:23:28 | ...[...] | UnsafeDeserialization.rb:23:5:23:13 | json_data | -| UnsafeDeserialization.rb:29:5:29:13 | json_data | UnsafeDeserialization.rb:30:27:30:35 | json_data | -| UnsafeDeserialization.rb:29:17:29:22 | call to params | UnsafeDeserialization.rb:29:17:29:28 | ...[...] | -| UnsafeDeserialization.rb:29:17:29:28 | ...[...] | UnsafeDeserialization.rb:29:5:29:13 | json_data | -| UnsafeDeserialization.rb:41:5:41:13 | yaml_data | UnsafeDeserialization.rb:42:24:42:32 | yaml_data | -| UnsafeDeserialization.rb:41:17:41:22 | call to params | UnsafeDeserialization.rb:41:17:41:28 | ...[...] | -| UnsafeDeserialization.rb:41:17:41:28 | ...[...] | UnsafeDeserialization.rb:41:5:41:13 | yaml_data | -| UnsafeDeserialization.rb:53:5:53:13 | json_data | UnsafeDeserialization.rb:54:22:54:30 | json_data | -| UnsafeDeserialization.rb:53:5:53:13 | json_data | UnsafeDeserialization.rb:55:22:55:30 | json_data | -| UnsafeDeserialization.rb:53:17:53:22 | call to params | UnsafeDeserialization.rb:53:17:53:28 | ...[...] | -| UnsafeDeserialization.rb:53:17:53:28 | ...[...] | UnsafeDeserialization.rb:53:5:53:13 | json_data | -| UnsafeDeserialization.rb:60:5:60:13 | json_data | UnsafeDeserialization.rb:70:23:70:31 | json_data | -| UnsafeDeserialization.rb:60:17:60:22 | call to params | UnsafeDeserialization.rb:60:17:60:28 | ...[...] | -| UnsafeDeserialization.rb:60:17:60:28 | ...[...] | UnsafeDeserialization.rb:60:5:60:13 | json_data | -| UnsafeDeserialization.rb:81:4:81:12 | json_data | UnsafeDeserialization.rb:82:28:82:36 | json_data | -| UnsafeDeserialization.rb:81:16:81:21 | call to params | UnsafeDeserialization.rb:81:16:81:27 | ...[...] | -| UnsafeDeserialization.rb:81:16:81:27 | ...[...] | UnsafeDeserialization.rb:81:4:81:12 | json_data | -| UnsafeDeserialization.rb:87:4:87:11 | xml_data | UnsafeDeserialization.rb:88:26:88:33 | xml_data | -| UnsafeDeserialization.rb:87:15:87:20 | call to params | UnsafeDeserialization.rb:87:15:87:26 | ...[...] | -| UnsafeDeserialization.rb:87:15:87:26 | ...[...] | UnsafeDeserialization.rb:87:4:87:11 | xml_data | -| UnsafeDeserialization.rb:93:5:93:12 | xml_data | UnsafeDeserialization.rb:94:22:94:29 | xml_data | -| UnsafeDeserialization.rb:93:16:93:21 | call to params | UnsafeDeserialization.rb:93:16:93:27 | ...[...] | -| UnsafeDeserialization.rb:93:16:93:27 | ...[...] | UnsafeDeserialization.rb:93:5:93:12 | xml_data | -| UnsafeDeserialization.rb:109:5:109:7 | xml | UnsafeDeserialization.rb:110:34:110:36 | xml | -| UnsafeDeserialization.rb:109:11:109:16 | call to params | UnsafeDeserialization.rb:109:11:109:22 | ...[...] | -| UnsafeDeserialization.rb:109:11:109:22 | ...[...] | UnsafeDeserialization.rb:109:5:109:7 | xml | -| UnsafeDeserialization.rb:115:5:115:13 | yaml_data | UnsafeDeserialization.rb:116:25:116:33 | yaml_data | -| UnsafeDeserialization.rb:115:17:115:22 | call to params | UnsafeDeserialization.rb:115:17:115:28 | ...[...] | -| UnsafeDeserialization.rb:115:17:115:28 | ...[...] | UnsafeDeserialization.rb:115:5:115:13 | yaml_data | -| YAMLUnsafeDeserialization.rb:5:16:5:21 | call to params | YAMLUnsafeDeserialization.rb:5:16:5:35 | ...[...] | -| YAMLUnsafeDeserialization.rb:11:23:11:28 | call to params | YAMLUnsafeDeserialization.rb:11:23:11:42 | ...[...] | -| YAMLUnsafeDeserialization.rb:12:28:12:33 | call to params | YAMLUnsafeDeserialization.rb:12:28:12:45 | ...[...] | -| YAMLUnsafeDeserialization.rb:13:23:13:28 | call to params | YAMLUnsafeDeserialization.rb:13:23:13:42 | ...[...] | -| YAMLUnsafeDeserialization.rb:14:39:14:44 | call to params | YAMLUnsafeDeserialization.rb:14:39:14:58 | ...[...] | -| YAMLUnsafeDeserialization.rb:14:39:14:58 | ...[...] | YAMLUnsafeDeserialization.rb:15:5:15:24 | call to to_ruby | -| YAMLUnsafeDeserialization.rb:16:17:16:22 | call to params | YAMLUnsafeDeserialization.rb:16:17:16:36 | ...[...] | -| YAMLUnsafeDeserialization.rb:16:17:16:36 | ...[...] | YAMLUnsafeDeserialization.rb:16:5:16:45 | call to to_ruby | -| YAMLUnsafeDeserialization.rb:17:22:17:27 | call to params | YAMLUnsafeDeserialization.rb:17:22:17:39 | ...[...] | -| YAMLUnsafeDeserialization.rb:17:22:17:39 | ...[...] | YAMLUnsafeDeserialization.rb:17:5:17:48 | call to to_ruby | +| PlistUnsafeDeserialization.rb:5:30:5:35 | call to params | PlistUnsafeDeserialization.rb:5:30:5:49 | ...[...] | provenance | | +| PlistUnsafeDeserialization.rb:6:30:6:35 | call to params | PlistUnsafeDeserialization.rb:6:30:6:49 | ...[...] | provenance | | +| UnsafeDeserialization.rb:11:5:11:19 | serialized_data | UnsafeDeserialization.rb:12:27:12:41 | serialized_data | provenance | | +| UnsafeDeserialization.rb:11:23:11:50 | call to decode64 | UnsafeDeserialization.rb:11:5:11:19 | serialized_data | provenance | | +| UnsafeDeserialization.rb:11:39:11:44 | call to params | UnsafeDeserialization.rb:11:39:11:50 | ...[...] | provenance | | +| UnsafeDeserialization.rb:11:39:11:50 | ...[...] | UnsafeDeserialization.rb:11:23:11:50 | call to decode64 | provenance | | +| UnsafeDeserialization.rb:17:5:17:19 | serialized_data | UnsafeDeserialization.rb:18:30:18:44 | serialized_data | provenance | | +| UnsafeDeserialization.rb:17:23:17:50 | call to decode64 | UnsafeDeserialization.rb:17:5:17:19 | serialized_data | provenance | | +| UnsafeDeserialization.rb:17:39:17:44 | call to params | UnsafeDeserialization.rb:17:39:17:50 | ...[...] | provenance | | +| UnsafeDeserialization.rb:17:39:17:50 | ...[...] | UnsafeDeserialization.rb:17:23:17:50 | call to decode64 | provenance | | +| UnsafeDeserialization.rb:23:5:23:13 | json_data | UnsafeDeserialization.rb:24:24:24:32 | json_data | provenance | | +| UnsafeDeserialization.rb:23:17:23:22 | call to params | UnsafeDeserialization.rb:23:17:23:28 | ...[...] | provenance | | +| UnsafeDeserialization.rb:23:17:23:28 | ...[...] | UnsafeDeserialization.rb:23:5:23:13 | json_data | provenance | | +| UnsafeDeserialization.rb:29:5:29:13 | json_data | UnsafeDeserialization.rb:30:27:30:35 | json_data | provenance | | +| UnsafeDeserialization.rb:29:17:29:22 | call to params | UnsafeDeserialization.rb:29:17:29:28 | ...[...] | provenance | | +| UnsafeDeserialization.rb:29:17:29:28 | ...[...] | UnsafeDeserialization.rb:29:5:29:13 | json_data | provenance | | +| UnsafeDeserialization.rb:41:5:41:13 | yaml_data | UnsafeDeserialization.rb:42:24:42:32 | yaml_data | provenance | | +| UnsafeDeserialization.rb:41:17:41:22 | call to params | UnsafeDeserialization.rb:41:17:41:28 | ...[...] | provenance | | +| UnsafeDeserialization.rb:41:17:41:28 | ...[...] | UnsafeDeserialization.rb:41:5:41:13 | yaml_data | provenance | | +| UnsafeDeserialization.rb:53:5:53:13 | json_data | UnsafeDeserialization.rb:54:22:54:30 | json_data | provenance | | +| UnsafeDeserialization.rb:53:5:53:13 | json_data | UnsafeDeserialization.rb:55:22:55:30 | json_data | provenance | | +| UnsafeDeserialization.rb:53:17:53:22 | call to params | UnsafeDeserialization.rb:53:17:53:28 | ...[...] | provenance | | +| UnsafeDeserialization.rb:53:17:53:28 | ...[...] | UnsafeDeserialization.rb:53:5:53:13 | json_data | provenance | | +| UnsafeDeserialization.rb:60:5:60:13 | json_data | UnsafeDeserialization.rb:70:23:70:31 | json_data | provenance | | +| UnsafeDeserialization.rb:60:17:60:22 | call to params | UnsafeDeserialization.rb:60:17:60:28 | ...[...] | provenance | | +| UnsafeDeserialization.rb:60:17:60:28 | ...[...] | UnsafeDeserialization.rb:60:5:60:13 | json_data | provenance | | +| UnsafeDeserialization.rb:81:4:81:12 | json_data | UnsafeDeserialization.rb:82:28:82:36 | json_data | provenance | | +| UnsafeDeserialization.rb:81:16:81:21 | call to params | UnsafeDeserialization.rb:81:16:81:27 | ...[...] | provenance | | +| UnsafeDeserialization.rb:81:16:81:27 | ...[...] | UnsafeDeserialization.rb:81:4:81:12 | json_data | provenance | | +| UnsafeDeserialization.rb:87:4:87:11 | xml_data | UnsafeDeserialization.rb:88:26:88:33 | xml_data | provenance | | +| UnsafeDeserialization.rb:87:15:87:20 | call to params | UnsafeDeserialization.rb:87:15:87:26 | ...[...] | provenance | | +| UnsafeDeserialization.rb:87:15:87:26 | ...[...] | UnsafeDeserialization.rb:87:4:87:11 | xml_data | provenance | | +| UnsafeDeserialization.rb:93:5:93:12 | xml_data | UnsafeDeserialization.rb:94:22:94:29 | xml_data | provenance | | +| UnsafeDeserialization.rb:93:16:93:21 | call to params | UnsafeDeserialization.rb:93:16:93:27 | ...[...] | provenance | | +| UnsafeDeserialization.rb:93:16:93:27 | ...[...] | UnsafeDeserialization.rb:93:5:93:12 | xml_data | provenance | | +| UnsafeDeserialization.rb:109:5:109:7 | xml | UnsafeDeserialization.rb:110:34:110:36 | xml | provenance | | +| UnsafeDeserialization.rb:109:11:109:16 | call to params | UnsafeDeserialization.rb:109:11:109:22 | ...[...] | provenance | | +| UnsafeDeserialization.rb:109:11:109:22 | ...[...] | UnsafeDeserialization.rb:109:5:109:7 | xml | provenance | | +| UnsafeDeserialization.rb:115:5:115:13 | yaml_data | UnsafeDeserialization.rb:116:25:116:33 | yaml_data | provenance | | +| UnsafeDeserialization.rb:115:17:115:22 | call to params | UnsafeDeserialization.rb:115:17:115:28 | ...[...] | provenance | | +| UnsafeDeserialization.rb:115:17:115:28 | ...[...] | UnsafeDeserialization.rb:115:5:115:13 | yaml_data | provenance | | +| YAMLUnsafeDeserialization.rb:5:16:5:21 | call to params | YAMLUnsafeDeserialization.rb:5:16:5:35 | ...[...] | provenance | | +| YAMLUnsafeDeserialization.rb:11:23:11:28 | call to params | YAMLUnsafeDeserialization.rb:11:23:11:42 | ...[...] | provenance | | +| YAMLUnsafeDeserialization.rb:12:28:12:33 | call to params | YAMLUnsafeDeserialization.rb:12:28:12:45 | ...[...] | provenance | | +| YAMLUnsafeDeserialization.rb:13:23:13:28 | call to params | YAMLUnsafeDeserialization.rb:13:23:13:42 | ...[...] | provenance | | +| YAMLUnsafeDeserialization.rb:14:39:14:44 | call to params | YAMLUnsafeDeserialization.rb:14:39:14:58 | ...[...] | provenance | | +| YAMLUnsafeDeserialization.rb:14:39:14:58 | ...[...] | YAMLUnsafeDeserialization.rb:15:5:15:24 | call to to_ruby | provenance | | +| YAMLUnsafeDeserialization.rb:16:17:16:22 | call to params | YAMLUnsafeDeserialization.rb:16:17:16:36 | ...[...] | provenance | | +| YAMLUnsafeDeserialization.rb:16:17:16:36 | ...[...] | YAMLUnsafeDeserialization.rb:16:5:16:45 | call to to_ruby | provenance | | +| YAMLUnsafeDeserialization.rb:17:22:17:27 | call to params | YAMLUnsafeDeserialization.rb:17:22:17:39 | ...[...] | provenance | | +| YAMLUnsafeDeserialization.rb:17:22:17:39 | ...[...] | YAMLUnsafeDeserialization.rb:17:5:17:48 | call to to_ruby | provenance | | nodes | PlistUnsafeDeserialization.rb:5:30:5:35 | call to params | semmle.label | call to params | | PlistUnsafeDeserialization.rb:5:30:5:49 | ...[...] | semmle.label | ...[...] | diff --git a/ruby/ql/test/query-tests/security/cwe-506/HardcodedDataInterpretedAsCode.expected b/ruby/ql/test/query-tests/security/cwe-506/HardcodedDataInterpretedAsCode.expected index 57918d9da205..84a462763717 100644 --- a/ruby/ql/test/query-tests/security/cwe-506/HardcodedDataInterpretedAsCode.expected +++ b/ruby/ql/test/query-tests/security/cwe-506/HardcodedDataInterpretedAsCode.expected @@ -1,15 +1,15 @@ edges -| tst.rb:1:7:1:7 | r | tst.rb:2:4:2:4 | r | -| tst.rb:2:4:2:4 | r | tst.rb:2:3:2:15 | call to pack | -| tst.rb:5:1:5:23 | totally_harmless_string | tst.rb:7:8:7:30 | totally_harmless_string | -| tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." | tst.rb:5:1:5:23 | totally_harmless_string | -| tst.rb:7:8:7:30 | totally_harmless_string | tst.rb:1:7:1:7 | r | -| tst.rb:7:8:7:30 | totally_harmless_string | tst.rb:7:6:7:31 | call to e | -| tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:1:7:1:7 | r | -| tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:10:9:10:25 | call to e | -| tst.rb:16:1:16:27 | another_questionable_string | tst.rb:17:6:17:32 | another_questionable_string | -| tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." | tst.rb:16:1:16:27 | another_questionable_string | -| tst.rb:17:6:17:32 | another_questionable_string | tst.rb:17:6:17:38 | call to strip | +| tst.rb:1:7:1:7 | r | tst.rb:2:4:2:4 | r | provenance | | +| tst.rb:2:4:2:4 | r | tst.rb:2:3:2:15 | call to pack | provenance | | +| tst.rb:5:1:5:23 | totally_harmless_string | tst.rb:7:8:7:30 | totally_harmless_string | provenance | | +| tst.rb:5:27:5:72 | "707574732822636f646520696e6a6..." | tst.rb:5:1:5:23 | totally_harmless_string | provenance | | +| tst.rb:7:8:7:30 | totally_harmless_string | tst.rb:1:7:1:7 | r | provenance | | +| tst.rb:7:8:7:30 | totally_harmless_string | tst.rb:7:6:7:31 | call to e | provenance | | +| tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:1:7:1:7 | r | provenance | | +| tst.rb:10:11:10:24 | "666f6f626172" | tst.rb:10:9:10:25 | call to e | provenance | | +| tst.rb:16:1:16:27 | another_questionable_string | tst.rb:17:6:17:32 | another_questionable_string | provenance | | +| tst.rb:16:31:16:84 | "\\x70\\x75\\x74\\x73\\x28\\x27\\x68\\..." | tst.rb:16:1:16:27 | another_questionable_string | provenance | | +| tst.rb:17:6:17:32 | another_questionable_string | tst.rb:17:6:17:38 | call to strip | provenance | | nodes | tst.rb:1:7:1:7 | r | semmle.label | r | | tst.rb:2:3:2:15 | call to pack | semmle.label | call to pack | diff --git a/ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.expected b/ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.expected index 8d09e79a5715..3dfe8be90bf4 100644 --- a/ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.expected +++ b/ruby/ql/test/query-tests/security/cwe-601/UrlRedirect.expected @@ -1,17 +1,17 @@ edges -| UrlRedirect.rb:9:17:9:22 | call to params | UrlRedirect.rb:9:17:9:28 | ...[...] | -| UrlRedirect.rb:14:17:14:22 | call to params | UrlRedirect.rb:14:17:14:43 | call to fetch | -| UrlRedirect.rb:19:17:19:22 | call to params | UrlRedirect.rb:19:17:19:37 | call to to_unsafe_hash | -| UrlRedirect.rb:24:31:24:36 | call to params | UrlRedirect.rb:24:17:24:37 | call to filter_params | -| UrlRedirect.rb:24:31:24:36 | call to params | UrlRedirect.rb:93:21:93:32 | input_params | -| UrlRedirect.rb:34:20:34:25 | call to params | UrlRedirect.rb:34:20:34:31 | ...[...] | -| UrlRedirect.rb:34:20:34:31 | ...[...] | UrlRedirect.rb:34:17:34:37 | "#{...}/foo" | -| UrlRedirect.rb:58:17:58:22 | call to params | UrlRedirect.rb:58:17:58:28 | ...[...] | -| UrlRedirect.rb:63:38:63:43 | call to params | UrlRedirect.rb:63:38:63:49 | ...[...] | -| UrlRedirect.rb:68:38:68:43 | call to params | UrlRedirect.rb:68:38:68:49 | ...[...] | -| UrlRedirect.rb:73:25:73:30 | call to params | UrlRedirect.rb:73:25:73:36 | ...[...] | -| UrlRedirect.rb:93:21:93:32 | input_params | UrlRedirect.rb:94:5:94:16 | input_params | -| UrlRedirect.rb:94:5:94:16 | input_params | UrlRedirect.rb:94:5:94:29 | call to permit | +| UrlRedirect.rb:9:17:9:22 | call to params | UrlRedirect.rb:9:17:9:28 | ...[...] | provenance | | +| UrlRedirect.rb:14:17:14:22 | call to params | UrlRedirect.rb:14:17:14:43 | call to fetch | provenance | | +| UrlRedirect.rb:19:17:19:22 | call to params | UrlRedirect.rb:19:17:19:37 | call to to_unsafe_hash | provenance | | +| UrlRedirect.rb:24:31:24:36 | call to params | UrlRedirect.rb:24:17:24:37 | call to filter_params | provenance | | +| UrlRedirect.rb:24:31:24:36 | call to params | UrlRedirect.rb:93:21:93:32 | input_params | provenance | | +| UrlRedirect.rb:34:20:34:25 | call to params | UrlRedirect.rb:34:20:34:31 | ...[...] | provenance | | +| UrlRedirect.rb:34:20:34:31 | ...[...] | UrlRedirect.rb:34:17:34:37 | "#{...}/foo" | provenance | | +| UrlRedirect.rb:58:17:58:22 | call to params | UrlRedirect.rb:58:17:58:28 | ...[...] | provenance | | +| UrlRedirect.rb:63:38:63:43 | call to params | UrlRedirect.rb:63:38:63:49 | ...[...] | provenance | | +| UrlRedirect.rb:68:38:68:43 | call to params | UrlRedirect.rb:68:38:68:49 | ...[...] | provenance | | +| UrlRedirect.rb:73:25:73:30 | call to params | UrlRedirect.rb:73:25:73:36 | ...[...] | provenance | | +| UrlRedirect.rb:93:21:93:32 | input_params | UrlRedirect.rb:94:5:94:16 | input_params | provenance | | +| UrlRedirect.rb:94:5:94:16 | input_params | UrlRedirect.rb:94:5:94:29 | call to permit | provenance | | nodes | UrlRedirect.rb:4:17:4:22 | call to params | semmle.label | call to params | | UrlRedirect.rb:9:17:9:22 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-611/libxml-backend/Xxe.expected b/ruby/ql/test/query-tests/security/cwe-611/libxml-backend/Xxe.expected index f4af8eaf7c03..d819e92c9305 100644 --- a/ruby/ql/test/query-tests/security/cwe-611/libxml-backend/Xxe.expected +++ b/ruby/ql/test/query-tests/security/cwe-611/libxml-backend/Xxe.expected @@ -1,10 +1,10 @@ edges -| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:18:30:18:36 | content | -| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:19:19:19:25 | content | -| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:20:27:20:33 | content | -| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:21:34:21:40 | content | -| LibXmlBackend.rb:16:15:16:20 | call to params | LibXmlBackend.rb:16:15:16:26 | ...[...] | -| LibXmlBackend.rb:16:15:16:26 | ...[...] | LibXmlBackend.rb:16:5:16:11 | content | +| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:18:30:18:36 | content | provenance | | +| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:19:19:19:25 | content | provenance | | +| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:20:27:20:33 | content | provenance | | +| LibXmlBackend.rb:16:5:16:11 | content | LibXmlBackend.rb:21:34:21:40 | content | provenance | | +| LibXmlBackend.rb:16:15:16:20 | call to params | LibXmlBackend.rb:16:15:16:26 | ...[...] | provenance | | +| LibXmlBackend.rb:16:15:16:26 | ...[...] | LibXmlBackend.rb:16:5:16:11 | content | provenance | | nodes | LibXmlBackend.rb:16:5:16:11 | content | semmle.label | content | | LibXmlBackend.rb:16:15:16:20 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-611/xxe/Xxe.expected b/ruby/ql/test/query-tests/security/cwe-611/xxe/Xxe.expected index 9474c258561d..44acc636b600 100644 --- a/ruby/ql/test/query-tests/security/cwe-611/xxe/Xxe.expected +++ b/ruby/ql/test/query-tests/security/cwe-611/xxe/Xxe.expected @@ -1,31 +1,31 @@ edges -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:4:34:4:40 | content | -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:5:32:5:38 | content | -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:6:30:6:36 | content | -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:7:32:7:38 | content | -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:8:30:8:36 | content | -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:9:28:9:34 | content | -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:11:26:11:32 | content | -| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:12:24:12:30 | content | -| LibXmlRuby.rb:3:15:3:20 | call to params | LibXmlRuby.rb:3:15:3:26 | ...[...] | -| LibXmlRuby.rb:3:15:3:26 | ...[...] | LibXmlRuby.rb:3:5:3:11 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:5:26:5:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:6:26:6:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:7:26:7:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:8:26:8:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:9:26:9:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:11:26:11:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:12:26:12:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:15:26:15:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:16:26:16:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:18:26:18:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:19:26:19:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:22:26:22:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:25:26:25:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:27:26:27:32 | content | -| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:28:26:28:32 | content | -| Nokogiri.rb:3:15:3:20 | call to params | Nokogiri.rb:3:15:3:26 | ...[...] | -| Nokogiri.rb:3:15:3:26 | ...[...] | Nokogiri.rb:3:5:3:11 | content | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:4:34:4:40 | content | provenance | | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:5:32:5:38 | content | provenance | | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:6:30:6:36 | content | provenance | | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:7:32:7:38 | content | provenance | | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:8:30:8:36 | content | provenance | | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:9:28:9:34 | content | provenance | | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:11:26:11:32 | content | provenance | | +| LibXmlRuby.rb:3:5:3:11 | content | LibXmlRuby.rb:12:24:12:30 | content | provenance | | +| LibXmlRuby.rb:3:15:3:20 | call to params | LibXmlRuby.rb:3:15:3:26 | ...[...] | provenance | | +| LibXmlRuby.rb:3:15:3:26 | ...[...] | LibXmlRuby.rb:3:5:3:11 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:5:26:5:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:6:26:6:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:7:26:7:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:8:26:8:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:9:26:9:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:11:26:11:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:12:26:12:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:15:26:15:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:16:26:16:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:18:26:18:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:19:26:19:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:22:26:22:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:25:26:25:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:27:26:27:32 | content | provenance | | +| Nokogiri.rb:3:5:3:11 | content | Nokogiri.rb:28:26:28:32 | content | provenance | | +| Nokogiri.rb:3:15:3:20 | call to params | Nokogiri.rb:3:15:3:26 | ...[...] | provenance | | +| Nokogiri.rb:3:15:3:26 | ...[...] | Nokogiri.rb:3:5:3:11 | content | provenance | | nodes | LibXmlRuby.rb:3:5:3:11 | content | semmle.label | content | | LibXmlRuby.rb:3:15:3:20 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected b/ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected index a4e8218f8c1d..fe2f0f984221 100644 --- a/ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected +++ b/ruby/ql/test/query-tests/security/cwe-732/WeakFilePermissions.expected @@ -1,11 +1,11 @@ edges -| FilePermissions.rb:51:3:51:6 | perm | FilePermissions.rb:53:19:53:22 | perm | -| FilePermissions.rb:51:3:51:6 | perm | FilePermissions.rb:54:3:54:7 | perm2 | -| FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:51:3:51:6 | perm | -| FilePermissions.rb:54:3:54:7 | perm2 | FilePermissions.rb:56:19:56:23 | perm2 | -| FilePermissions.rb:58:3:58:6 | perm | FilePermissions.rb:59:3:59:7 | perm2 | -| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" | FilePermissions.rb:58:3:58:6 | perm | -| FilePermissions.rb:59:3:59:7 | perm2 | FilePermissions.rb:61:19:61:23 | perm2 | +| FilePermissions.rb:51:3:51:6 | perm | FilePermissions.rb:53:19:53:22 | perm | provenance | | +| FilePermissions.rb:51:3:51:6 | perm | FilePermissions.rb:54:3:54:7 | perm2 | provenance | | +| FilePermissions.rb:51:10:51:13 | 0777 | FilePermissions.rb:51:3:51:6 | perm | provenance | | +| FilePermissions.rb:54:3:54:7 | perm2 | FilePermissions.rb:56:19:56:23 | perm2 | provenance | | +| FilePermissions.rb:58:3:58:6 | perm | FilePermissions.rb:59:3:59:7 | perm2 | provenance | | +| FilePermissions.rb:58:10:58:26 | "u=wrx,g=rwx,o=x" | FilePermissions.rb:58:3:58:6 | perm | provenance | | +| FilePermissions.rb:59:3:59:7 | perm2 | FilePermissions.rb:61:19:61:23 | perm2 | provenance | | nodes | FilePermissions.rb:5:19:5:22 | 0222 | semmle.label | 0222 | | FilePermissions.rb:7:19:7:22 | 0622 | semmle.label | 0622 | diff --git a/ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected b/ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected index 3492e9b41aec..662b6c9575fb 100644 --- a/ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected +++ b/ruby/ql/test/query-tests/security/cwe-798/HardcodedCredentials.expected @@ -1,20 +1,20 @@ edges -| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." | HardcodedCredentials.rb:1:23:1:30 | password | -| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:1:33:1:36 | cert | -| HardcodedCredentials.rb:18:19:18:72 | ... + ... | HardcodedCredentials.rb:1:23:1:30 | password | -| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." | HardcodedCredentials.rb:18:19:18:72 | ... + ... | -| HardcodedCredentials.rb:20:1:20:7 | pw_left | HardcodedCredentials.rb:22:6:22:12 | pw_left | -| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." | HardcodedCredentials.rb:20:1:20:7 | pw_left | -| HardcodedCredentials.rb:21:1:21:8 | pw_right | HardcodedCredentials.rb:22:16:22:23 | pw_right | -| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" | HardcodedCredentials.rb:21:1:21:8 | pw_right | -| HardcodedCredentials.rb:22:1:22:2 | pw | HardcodedCredentials.rb:23:19:23:20 | pw | -| HardcodedCredentials.rb:22:6:22:12 | pw_left | HardcodedCredentials.rb:22:6:22:23 | ... + ... | -| HardcodedCredentials.rb:22:6:22:23 | ... + ... | HardcodedCredentials.rb:22:1:22:2 | pw | -| HardcodedCredentials.rb:22:16:22:23 | pw_right | HardcodedCredentials.rb:22:6:22:23 | ... + ... | -| HardcodedCredentials.rb:23:19:23:20 | pw | HardcodedCredentials.rb:1:23:1:30 | password | -| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." | HardcodedCredentials.rb:31:18:31:23 | passwd | -| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" | HardcodedCredentials.rb:43:18:43:25 | username | -| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" | HardcodedCredentials.rb:43:46:43:53 | password | +| HardcodedCredentials.rb:12:19:12:64 | "4NQX/CqB5Ae98zFUmwj1DMpF7azsh..." | HardcodedCredentials.rb:1:23:1:30 | password | provenance | | +| HardcodedCredentials.rb:15:30:15:75 | "WLC17dLQ9P8YlQvqm77qplOMm5pd1..." | HardcodedCredentials.rb:1:33:1:36 | cert | provenance | | +| HardcodedCredentials.rb:18:19:18:72 | ... + ... | HardcodedCredentials.rb:1:23:1:30 | password | provenance | | +| HardcodedCredentials.rb:18:27:18:72 | "ogH6qSYWGdbR/2WOGYa7eZ/tObL+G..." | HardcodedCredentials.rb:18:19:18:72 | ... + ... | provenance | | +| HardcodedCredentials.rb:20:1:20:7 | pw_left | HardcodedCredentials.rb:22:6:22:12 | pw_left | provenance | | +| HardcodedCredentials.rb:20:11:20:76 | "3jOe7sXKX6Tx52qHWUVqh2t9LNsE+..." | HardcodedCredentials.rb:20:1:20:7 | pw_left | provenance | | +| HardcodedCredentials.rb:21:1:21:8 | pw_right | HardcodedCredentials.rb:22:16:22:23 | pw_right | provenance | | +| HardcodedCredentials.rb:21:12:21:37 | "4fQuzXef4f2yow8KWvIJTA==" | HardcodedCredentials.rb:21:1:21:8 | pw_right | provenance | | +| HardcodedCredentials.rb:22:1:22:2 | pw | HardcodedCredentials.rb:23:19:23:20 | pw | provenance | | +| HardcodedCredentials.rb:22:6:22:12 | pw_left | HardcodedCredentials.rb:22:6:22:23 | ... + ... | provenance | | +| HardcodedCredentials.rb:22:6:22:23 | ... + ... | HardcodedCredentials.rb:22:1:22:2 | pw | provenance | | +| HardcodedCredentials.rb:22:16:22:23 | pw_right | HardcodedCredentials.rb:22:6:22:23 | ... + ... | provenance | | +| HardcodedCredentials.rb:23:19:23:20 | pw | HardcodedCredentials.rb:1:23:1:30 | password | provenance | | +| HardcodedCredentials.rb:38:40:38:85 | "kdW/xVhiv6y1fQQNevDpUaq+2rfPK..." | HardcodedCredentials.rb:31:18:31:23 | passwd | provenance | | +| HardcodedCredentials.rb:43:29:43:43 | "user@test.com" | HardcodedCredentials.rb:43:18:43:25 | username | provenance | | +| HardcodedCredentials.rb:43:57:43:70 | "abcdef123456" | HardcodedCredentials.rb:43:46:43:53 | password | provenance | | nodes | HardcodedCredentials.rb:1:23:1:30 | password | semmle.label | password | | HardcodedCredentials.rb:1:33:1:36 | cert | semmle.label | cert | diff --git a/ruby/ql/test/query-tests/security/cwe-807-user-controlled-bypass/ConditionalBypass.expected b/ruby/ql/test/query-tests/security/cwe-807-user-controlled-bypass/ConditionalBypass.expected index c591f922334c..897e8276049f 100644 --- a/ruby/ql/test/query-tests/security/cwe-807-user-controlled-bypass/ConditionalBypass.expected +++ b/ruby/ql/test/query-tests/security/cwe-807-user-controlled-bypass/ConditionalBypass.expected @@ -1,12 +1,12 @@ edges -| ConditionalBypass.rb:3:5:3:9 | check | ConditionalBypass.rb:6:8:6:12 | check | -| ConditionalBypass.rb:3:13:3:18 | call to params | ConditionalBypass.rb:3:13:3:26 | ...[...] | -| ConditionalBypass.rb:3:13:3:26 | ...[...] | ConditionalBypass.rb:3:5:3:9 | check | -| ConditionalBypass.rb:14:14:14:19 | call to params | ConditionalBypass.rb:14:14:14:27 | ...[...] | -| ConditionalBypass.rb:25:5:25:5 | p | ConditionalBypass.rb:27:8:27:8 | p | -| ConditionalBypass.rb:25:10:25:15 | call to params | ConditionalBypass.rb:25:10:25:22 | ...[...] | -| ConditionalBypass.rb:25:10:25:15 | call to params | ConditionalBypass.rb:25:10:25:22 | ...[...] | -| ConditionalBypass.rb:25:10:25:22 | ...[...] | ConditionalBypass.rb:25:5:25:5 | p | +| ConditionalBypass.rb:3:5:3:9 | check | ConditionalBypass.rb:6:8:6:12 | check | provenance | | +| ConditionalBypass.rb:3:13:3:18 | call to params | ConditionalBypass.rb:3:13:3:26 | ...[...] | provenance | | +| ConditionalBypass.rb:3:13:3:26 | ...[...] | ConditionalBypass.rb:3:5:3:9 | check | provenance | | +| ConditionalBypass.rb:14:14:14:19 | call to params | ConditionalBypass.rb:14:14:14:27 | ...[...] | provenance | | +| ConditionalBypass.rb:25:5:25:5 | p | ConditionalBypass.rb:27:8:27:8 | p | provenance | | +| ConditionalBypass.rb:25:10:25:15 | call to params | ConditionalBypass.rb:25:10:25:22 | ...[...] | provenance | | +| ConditionalBypass.rb:25:10:25:15 | call to params | ConditionalBypass.rb:25:10:25:22 | ...[...] | provenance | | +| ConditionalBypass.rb:25:10:25:22 | ...[...] | ConditionalBypass.rb:25:5:25:5 | p | provenance | | nodes | ConditionalBypass.rb:3:5:3:9 | check | semmle.label | check | | ConditionalBypass.rb:3:13:3:18 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected b/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected index 82fbafcfc89e..c025499f2e86 100644 --- a/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected +++ b/ruby/ql/test/query-tests/security/cwe-829/InsecureDownload.expected @@ -1,9 +1,10 @@ +testFailures failures edges -| insecure_download.rb:31:5:31:7 | url | insecure_download.rb:33:15:33:17 | url | -| insecure_download.rb:31:5:31:7 | url | insecure_download.rb:33:15:33:17 | url | -| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:31:5:31:7 | url | -| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:31:5:31:7 | url | +| insecure_download.rb:31:5:31:7 | url | insecure_download.rb:33:15:33:17 | url | provenance | | +| insecure_download.rb:31:5:31:7 | url | insecure_download.rb:33:15:33:17 | url | provenance | | +| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:31:5:31:7 | url | provenance | | +| insecure_download.rb:31:11:31:41 | "http://example.org/unsafe.APK" | insecure_download.rb:31:5:31:7 | url | provenance | | nodes | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | semmle.label | "http://example.org/unsafe.APK" | | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | semmle.label | "http://example.org/unsafe.APK" | @@ -18,7 +19,6 @@ nodes | insecure_download.rb:43:22:43:56 | "http://example.org/unsafe.unk..." | semmle.label | "http://example.org/unsafe.unk..." | | insecure_download.rb:53:65:53:78 | "/myscript.sh" | semmle.label | "/myscript.sh" | subpaths -testFailures #select | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" | | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | $@ | insecure_download.rb:27:15:27:45 | "http://example.org/unsafe.APK" | "http://example.org/unsafe.APK" | diff --git a/ruby/ql/test/query-tests/security/cwe-912/HttpToFileAccess.expected b/ruby/ql/test/query-tests/security/cwe-912/HttpToFileAccess.expected index 19b955a9a8d8..792b17303b10 100644 --- a/ruby/ql/test/query-tests/security/cwe-912/HttpToFileAccess.expected +++ b/ruby/ql/test/query-tests/security/cwe-912/HttpToFileAccess.expected @@ -1,9 +1,9 @@ edges -| http_to_file_access.rb:3:1:3:4 | resp | http_to_file_access.rb:5:12:5:15 | resp | -| http_to_file_access.rb:3:8:3:52 | call to body | http_to_file_access.rb:3:1:3:4 | resp | -| http_to_file_access.rb:9:7:9:12 | script | http_to_file_access.rb:11:18:11:23 | script | -| http_to_file_access.rb:9:16:9:21 | call to params | http_to_file_access.rb:9:16:9:30 | ...[...] | -| http_to_file_access.rb:9:16:9:30 | ...[...] | http_to_file_access.rb:9:7:9:12 | script | +| http_to_file_access.rb:3:1:3:4 | resp | http_to_file_access.rb:5:12:5:15 | resp | provenance | | +| http_to_file_access.rb:3:8:3:52 | call to body | http_to_file_access.rb:3:1:3:4 | resp | provenance | | +| http_to_file_access.rb:9:7:9:12 | script | http_to_file_access.rb:11:18:11:23 | script | provenance | | +| http_to_file_access.rb:9:16:9:21 | call to params | http_to_file_access.rb:9:16:9:30 | ...[...] | provenance | | +| http_to_file_access.rb:9:16:9:30 | ...[...] | http_to_file_access.rb:9:7:9:12 | script | provenance | | nodes | http_to_file_access.rb:3:1:3:4 | resp | semmle.label | resp | | http_to_file_access.rb:3:8:3:52 | call to body | semmle.label | call to body | diff --git a/ruby/ql/test/query-tests/security/cwe-918/ServerSideRequestForgery.expected b/ruby/ql/test/query-tests/security/cwe-918/ServerSideRequestForgery.expected index 0145d9bddf51..7ca144f69edd 100644 --- a/ruby/ql/test/query-tests/security/cwe-918/ServerSideRequestForgery.expected +++ b/ruby/ql/test/query-tests/security/cwe-918/ServerSideRequestForgery.expected @@ -1,9 +1,9 @@ edges -| ServerSideRequestForgery.rb:10:9:10:28 | users_service_domain | ServerSideRequestForgery.rb:11:31:11:62 | "#{...}/logins" | -| ServerSideRequestForgery.rb:10:32:10:37 | call to params | ServerSideRequestForgery.rb:10:32:10:60 | ...[...] | -| ServerSideRequestForgery.rb:10:32:10:60 | ...[...] | ServerSideRequestForgery.rb:10:9:10:28 | users_service_domain | -| ServerSideRequestForgery.rb:15:33:15:38 | call to params | ServerSideRequestForgery.rb:15:33:15:44 | ...[...] | -| ServerSideRequestForgery.rb:20:45:20:50 | call to params | ServerSideRequestForgery.rb:20:45:20:56 | ...[...] | +| ServerSideRequestForgery.rb:10:9:10:28 | users_service_domain | ServerSideRequestForgery.rb:11:31:11:62 | "#{...}/logins" | provenance | | +| ServerSideRequestForgery.rb:10:32:10:37 | call to params | ServerSideRequestForgery.rb:10:32:10:60 | ...[...] | provenance | | +| ServerSideRequestForgery.rb:10:32:10:60 | ...[...] | ServerSideRequestForgery.rb:10:9:10:28 | users_service_domain | provenance | | +| ServerSideRequestForgery.rb:15:33:15:38 | call to params | ServerSideRequestForgery.rb:15:33:15:44 | ...[...] | provenance | | +| ServerSideRequestForgery.rb:20:45:20:50 | call to params | ServerSideRequestForgery.rb:20:45:20:56 | ...[...] | provenance | | nodes | ServerSideRequestForgery.rb:10:9:10:28 | users_service_domain | semmle.label | users_service_domain | | ServerSideRequestForgery.rb:10:32:10:37 | call to params | semmle.label | call to params | diff --git a/ruby/ql/test/query-tests/security/decompression-api/DecompressionApi.expected b/ruby/ql/test/query-tests/security/decompression-api/DecompressionApi.expected index dbcca414cf1f..20be59524bfa 100644 --- a/ruby/ql/test/query-tests/security/decompression-api/DecompressionApi.expected +++ b/ruby/ql/test/query-tests/security/decompression-api/DecompressionApi.expected @@ -1,8 +1,8 @@ edges -| decompression_api.rb:4:9:4:12 | path | decompression_api.rb:5:31:5:34 | path | -| decompression_api.rb:4:16:4:21 | call to params | decompression_api.rb:4:16:4:28 | ...[...] | -| decompression_api.rb:4:16:4:28 | ...[...] | decompression_api.rb:4:9:4:12 | path | -| decompression_api.rb:15:31:15:36 | call to params | decompression_api.rb:15:31:15:43 | ...[...] | +| decompression_api.rb:4:9:4:12 | path | decompression_api.rb:5:31:5:34 | path | provenance | | +| decompression_api.rb:4:16:4:21 | call to params | decompression_api.rb:4:16:4:28 | ...[...] | provenance | | +| decompression_api.rb:4:16:4:28 | ...[...] | decompression_api.rb:4:9:4:12 | path | provenance | | +| decompression_api.rb:15:31:15:36 | call to params | decompression_api.rb:15:31:15:43 | ...[...] | provenance | | nodes | decompression_api.rb:4:9:4:12 | path | semmle.label | path | | decompression_api.rb:4:16:4:21 | call to params | semmle.label | call to params | diff --git a/shared/dataflow/change-notes/2024-02-08-edges-provenance.md b/shared/dataflow/change-notes/2024-02-08-edges-provenance.md new file mode 100644 index 000000000000..4cf0fd39d4b7 --- /dev/null +++ b/shared/dataflow/change-notes/2024-02-08-edges-provenance.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* The `edges` predicate contained in `PathGraph` now contains two additional columns for propagating model provenance information. This is primarily an internal change without any impact on any APIs, except for specialised queries making use of `MergePathGraph` in conjunction with custom `PathGraph` implementations. Such queries will need to be updated to reference the two new columns. This is expected to be very rare, as `MergePathGraph` is an advanced feature, but it is a breaking change for any such affected queries. diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 856b68d249c2..1c9c900530fa 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -584,7 +584,7 @@ module DataFlowMake { signature module PathGraphSig { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - predicate edges(PathNode a, PathNode b); + predicate edges(PathNode a, PathNode b, string key, string val); /** Holds if `n` is a node in the graph of data flow path explanations. */ predicate nodes(PathNode n, string key, string val); @@ -648,9 +648,9 @@ module DataFlowMake { */ module PathGraph implements PathGraphSig { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { - Graph1::edges(a.asPathNode1(), b.asPathNode1()) or - Graph2::edges(a.asPathNode2(), b.asPathNode2()) + query predicate edges(PathNode a, PathNode b, string key, string val) { + Graph1::edges(a.asPathNode1(), b.asPathNode1(), key, val) or + Graph2::edges(a.asPathNode2(), b.asPathNode2(), key, val) } /** Holds if `n` is a node in the graph of data flow path explanations. */ @@ -719,7 +719,9 @@ module DataFlowMake { */ module PathGraph implements PathGraphSig { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { Merged::PathGraph::edges(a, b) } + query predicate edges(PathNode a, PathNode b, string key, string val) { + Merged::PathGraph::edges(a, b, key, val) + } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { diff --git a/shared/dataflow/codeql/dataflow/VariableCapture.qll b/shared/dataflow/codeql/dataflow/VariableCapture.qll index 6e1ae6bf1048..e90bf4814423 100644 --- a/shared/dataflow/codeql/dataflow/VariableCapture.qll +++ b/shared/dataflow/codeql/dataflow/VariableCapture.qll @@ -232,6 +232,9 @@ signature module OutputSig I> { /** Holds if this-to-this summaries are expected for `c`. */ predicate heuristicAllowInstanceParameterReturnInSelf(I::Callable c); + + /** Holds if captured variable `v` is cleared at `node`. */ + predicate clearsContent(ClosureNode node, I::CapturedVariable v); } /** @@ -959,4 +962,11 @@ module Flow Input> implements OutputSig ) ) } + + predicate clearsContent(ClosureNode node, CapturedVariable v) { + exists(BasicBlock bb, int i | + captureWrite(v, bb, i, false, _) and + node = TSynthThisQualifier(bb, i, false) + ) + } } diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index eb45fe5fd2ea..3773a2225dd2 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -2682,6 +2682,7 @@ module MakeImpl { ) { not isUnreachableInCall1(node2, cc) and not inBarrier(node2, state) and + not outBarrier(node1, state) and ( localFlowEntry(node1, pragma[only_bind_into](state)) and ( @@ -3724,7 +3725,11 @@ module MakeImpl { */ module PathGraph implements PathGraphSig { /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b) { a.getASuccessor() = b } + query predicate edges(PathNode a, PathNode b, string key, string val) { + a.getASuccessor() = b and + key = "provenance" and + val = "" + } /** Holds if `n` is a node in the graph of data flow path explanations. */ query predicate nodes(PathNode n, string key, string val) { @@ -3757,6 +3762,9 @@ module MakeImpl { override NodeEx getNodeEx() { result = node } + pragma[inline] + final NodeEx getNodeExOutgoing() { result = node and not outBarrier(node, state) } + override FlowState getState() { result = state } CallContext getCallContext() { result = cc } @@ -3773,14 +3781,11 @@ module MakeImpl { } override PathNodeImpl getASuccessorImpl() { - not outBarrier(node, state) and - ( - // an intermediate step to another intermediate node - result = this.getSuccMid() - or - // a final step to a sink - result = this.getSuccMid().projectToSink() - ) + // an intermediate step to another intermediate node + result = this.getSuccMid() + or + // a final step to a sink + result = this.getSuccMid().projectToSink() } override predicate isSource() { @@ -3931,14 +3936,14 @@ module MakeImpl { ap instanceof AccessPathNil ) or - jumpStepEx(mid.getNodeEx(), node) and + jumpStepEx(mid.getNodeExOutgoing(), node) and state = mid.getState() and cc instanceof CallContextAny and sc instanceof SummaryCtxNone and t = mid.getType() and ap = mid.getAp() or - additionalJumpStep(mid.getNodeEx(), node) and + additionalJumpStep(mid.getNodeExOutgoing(), node) and state = mid.getState() and cc instanceof CallContextAny and sc instanceof SummaryCtxNone and @@ -3946,7 +3951,7 @@ module MakeImpl { t = node.getDataFlowType() and ap = TAccessPathNil() or - additionalJumpStateStep(mid.getNodeEx(), mid.getState(), node, state) and + additionalJumpStateStep(mid.getNodeExOutgoing(), mid.getState(), node, state) and cc instanceof CallContextAny and sc instanceof SummaryCtxNone and mid.getAp() instanceof AccessPathNil and @@ -3981,7 +3986,7 @@ module MakeImpl { ) { ap0 = mid.getAp() and c = ap0.getHead() and - Stage5::readStepCand(mid.getNodeEx(), c, node) and + Stage5::readStepCand(mid.getNodeExOutgoing(), c, node) and state = mid.getState() and cc = mid.getCallContext() } @@ -3994,7 +3999,7 @@ module MakeImpl { exists(DataFlowType contentType | t0 = mid.getType() and ap0 = mid.getAp() and - Stage5::storeStepCand(mid.getNodeEx(), _, c, node, contentType, t) and + Stage5::storeStepCand(mid.getNodeExOutgoing(), _, c, node, contentType, t) and state = mid.getState() and cc = mid.getCallContext() and compatibleTypes(t0, contentType) @@ -4012,7 +4017,8 @@ module MakeImpl { not outBarrier(retNode, state) and innercc = mid.getCallContext() and innercc instanceof CallContextNoCall and - apa = mid.getAp().getApprox() + apa = mid.getAp().getApprox() and + not outBarrier(retNode, state) ) } @@ -4133,7 +4139,8 @@ module MakeImpl { pathNode(_, ret, state, cc, sc, t, ap, _) and kind = ret.getKind() and apa = ap.getApprox() and - parameterFlowThroughAllowed(sc.getParamNode(), kind) + parameterFlowThroughAllowed(sc.getParamNode(), kind) and + not outBarrier(ret, state) ) } diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index e477988da934..32d14a08a59e 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -386,7 +386,7 @@ module MakeImplCommon { } private DataFlowCallable viableCallableExt(DataFlowCall call) { - result = viableCallable(call) + result = viableCallableCached(call) or result = viableCallableLambda(call, _) } @@ -479,6 +479,9 @@ module MakeImplCommon { isArgumentNode(n, call, pos) } + cached + DataFlowCallable viableCallableCached(DataFlowCall call) { result = viableCallable(call) } + /** * Gets a viable target for the lambda call `call`. * diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 913e637d92b6..0d493ebd9e1a 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -43,7 +43,16 @@ fn populate_empty_file(writer: &mut trap::Writer) -> trap::Label { pub fn populate_empty_location(writer: &mut trap::Writer) { let file_label = populate_empty_file(writer); - location(writer, file_label, 0, 0, 0, 0); + global_location( + writer, + file_label, + trap::Location { + start_line: 0, + start_column: 0, + end_line: 0, + end_column: 0, + }, + ); } pub fn populate_parent_folders( @@ -85,17 +94,19 @@ pub fn populate_parent_folders( } } -fn location( +/** Get the label for the given location, defining it a global ID if it doesn't exist yet. */ +fn global_location( writer: &mut trap::Writer, file_label: trap::Label, - start_line: usize, - start_column: usize, - end_line: usize, - end_column: usize, + location: trap::Location, ) -> trap::Label { let (loc_label, fresh) = writer.global_id(&format!( "loc,{{{}}},{},{},{},{}", - file_label, start_line, start_column, end_line, end_column + file_label, + location.start_line, + location.start_column, + location.end_line, + location.end_column )); if fresh { writer.add_tuple( @@ -103,10 +114,34 @@ fn location( vec![ trap::Arg::Label(loc_label), trap::Arg::Label(file_label), - trap::Arg::Int(start_line), - trap::Arg::Int(start_column), - trap::Arg::Int(end_line), - trap::Arg::Int(end_column), + trap::Arg::Int(location.start_line), + trap::Arg::Int(location.start_column), + trap::Arg::Int(location.end_line), + trap::Arg::Int(location.end_column), + ], + ); + } + loc_label +} + +/** Get the label for the given location, creating it as a fresh ID if we haven't seen the location + * yet for this file. */ +fn location_label( + writer: &mut trap::Writer, + file_label: trap::Label, + location: trap::Location, +) -> trap::Label { + let (loc_label, fresh) = writer.location_label(location); + if fresh { + writer.add_tuple( + "locations_default", + vec![ + trap::Arg::Label(loc_label), + trap::Arg::Label(file_label), + trap::Arg::Int(location.start_line), + trap::Arg::Int(location.start_column), + trap::Arg::Int(location.end_line), + trap::Arg::Int(location.end_column), ], ); } @@ -245,26 +280,25 @@ impl<'a> Visitor<'a> { node: Node, status_page: bool, ) { - let (start_line, start_column, end_line, end_column) = location_for(self, node); - let loc = location( - self.trap_writer, - self.file_label, - start_line, - start_column, - end_line, - end_column, - ); + let loc = location_for(self, node); + let loc_label = location_label(self.trap_writer, self.file_label, loc); let mut mesg = self.diagnostics_writer.new_entry( "parse-error", "Could not process some files due to syntax errors", ); mesg.severity(diagnostics::Severity::Warning) - .location(self.path, start_line, start_column, end_line, end_column) + .location( + self.path, + loc.start_line, + loc.start_column, + loc.end_line, + loc.end_column, + ) .message(message, args); if status_page { mesg.status_page(); } - self.record_parse_error(loc, &mesg); + self.record_parse_error(loc_label, &mesg); } fn enter_node(&mut self, node: Node) -> bool { @@ -298,15 +332,8 @@ impl<'a> Visitor<'a> { return; } let (id, _, child_nodes) = self.stack.pop().expect("Vistor: empty stack"); - let (start_line, start_column, end_line, end_column) = location_for(self, node); - let loc = location( - self.trap_writer, - self.file_label, - start_line, - start_column, - end_line, - end_column, - ); + let loc = location_for(self, node); + let loc_label = location_label(self.trap_writer, self.file_label, loc); let table = self .schema .get(&TypeName { @@ -333,7 +360,7 @@ impl<'a> Visitor<'a> { trap::Arg::Label(id), trap::Arg::Label(parent_id), trap::Arg::Int(parent_index), - trap::Arg::Label(loc), + trap::Arg::Label(loc_label), ], ); self.trap_writer.add_tuple( @@ -356,7 +383,7 @@ impl<'a> Visitor<'a> { trap::Arg::Label(id), trap::Arg::Label(parent_id), trap::Arg::Int(parent_index), - trap::Arg::Label(loc), + trap::Arg::Label(loc_label), ], ); let mut all_args = vec![trap::Arg::Label(id)]; @@ -366,14 +393,20 @@ impl<'a> Visitor<'a> { } _ => { self.record_parse_error( - loc, + loc_label, self.diagnostics_writer .new_entry( "parse-error", "Could not process some files due to syntax errors", ) .severity(diagnostics::Severity::Warning) - .location(self.path, start_line, start_column, end_line, end_column) + .location( + self.path, + loc.start_line, + loc.start_column, + loc.end_line, + loc.end_column, + ) .message( "Unknown table type: {}", &[diagnostics::MessageArg::Code(node.kind())], @@ -555,7 +588,7 @@ fn sliced_source_arg(source: &[u8], n: Node) -> trap::Arg { // Emit a pair of `TrapEntry`s for the provided node, appropriately calibrated. // The first is the location and label definition, and the second is the // 'Located' entry. -fn location_for(visitor: &mut Visitor, n: Node) -> (usize, usize, usize, usize) { +fn location_for(visitor: &mut Visitor, n: Node) -> trap::Location { // Tree-sitter row, column values are 0-based while CodeQL starts // counting at 1. In addition Tree-sitter's row and column for the // end position are exclusive while CodeQL's end positions are inclusive. @@ -565,16 +598,16 @@ fn location_for(visitor: &mut Visitor, n: Node) -> (usize, usize, usize, usize) // the end column is 0 (start of a line). In such cases the end position must be // set to the end of the previous line. let start_line = n.start_position().row + 1; - let start_col = n.start_position().column + 1; + let start_column = n.start_position().column + 1; let mut end_line = n.end_position().row + 1; - let mut end_col = n.end_position().column; - if start_line > end_line || start_line == end_line && start_col > end_col { + let mut end_column = n.end_position().column; + if start_line > end_line || start_line == end_line && start_column > end_column { // the range is empty, clip it to sensible values end_line = start_line; - end_col = start_col - 1; - } else if end_col == 0 { + end_column = start_column - 1; + } else if end_column == 0 { let source = visitor.source; - // end_col = 0 means that we are at the start of a line + // end_column = 0 means that we are at the start of a line // unfortunately 0 is invalid as column number, therefore // we should update the end location to be the end of the // previous line @@ -591,10 +624,10 @@ fn location_for(visitor: &mut Visitor, n: Node) -> (usize, usize, usize, usize) ); } end_line -= 1; - end_col = 1; + end_column = 1; while index > 0 && source[index - 1] != b'\n' { index -= 1; - end_col += 1; + end_column += 1; } } else { visitor.diagnostics_writer.write( @@ -612,7 +645,12 @@ fn location_for(visitor: &mut Visitor, n: Node) -> (usize, usize, usize, usize) ); } } - (start_line, start_col, end_line, end_col) + trap::Location { + start_line, + start_column, + end_line, + end_column, + } } fn traverse(tree: &Tree, visitor: &mut Visitor) { diff --git a/shared/tree-sitter-extractor/src/trap.rs b/shared/tree-sitter-extractor/src/trap.rs index 135e336338f9..64c06539ecbf 100644 --- a/shared/tree-sitter-extractor/src/trap.rs +++ b/shared/tree-sitter-extractor/src/trap.rs @@ -5,6 +5,14 @@ use std::path::Path; use flate2::write::GzEncoder; +#[derive(Clone, Copy, Eq, PartialEq, PartialOrd, Ord, Hash)] +pub struct Location { + pub start_line: usize, + pub start_column: usize, + pub end_line: usize, + pub end_column: usize, +} + pub struct Writer { /// The accumulated trap entries trap_output: Vec, @@ -12,6 +20,8 @@ pub struct Writer { counter: u32, /// cache of global keys global_keys: std::collections::HashMap, + /// Labels for locations, which don't use global keys + location_labels: std::collections::HashMap, } impl Writer { @@ -20,6 +30,7 @@ impl Writer { counter: 0, trap_output: Vec::new(), global_keys: std::collections::HashMap::new(), + location_labels: std::collections::HashMap::new(), } } @@ -50,6 +61,17 @@ impl Writer { (label, true) } + /// Gets the label for the given location. The first call for a given location will define it as + /// a fresh (star) ID. + pub fn location_label(&mut self, loc: Location) -> (Label, bool) { + if let Some(label) = self.location_labels.get(&loc) { + return (*label, false); + } + let label = self.fresh_id(); + self.location_labels.insert(loc, label); + (label, true) + } + pub fn add_tuple(&mut self, table_name: &str, args: Vec) { self.trap_output .push(Entry::GenericTuple(table_name.to_owned(), args)) diff --git a/swift/ql/lib/codeql/swift/security/UnsafeUnpackExtensions.qll b/swift/ql/lib/codeql/swift/security/UnsafeUnpackExtensions.qll new file mode 100644 index 000000000000..c102aa40a1ef --- /dev/null +++ b/swift/ql/lib/codeql/swift/security/UnsafeUnpackExtensions.qll @@ -0,0 +1,78 @@ +/** + * Provides default sources, sinks and sanitizers for reasoning about + * unsafe unpack vulnerabilities, as well as extension points for + * adding your own. + */ + +import swift +import codeql.swift.dataflow.DataFlow +import codeql.swift.dataflow.ExternalFlow + +/** + * A dataflow source for unsafe unpack vulnerabilities. + */ +abstract class UnsafeUnpackSource extends DataFlow::Node { } + +/** + * A dataflow sink for unsafe unpack vulnerabilities. + */ +abstract class UnsafeUnpackSink extends DataFlow::Node { } + +/** + * A barrier for unsafe unpack vulnerabilities. + */ +abstract class UnsafeUnpackBarrier extends DataFlow::Node { } + +/** + * A unit class for adding additional flow steps. + */ +class UnsafeUnpackAdditionalFlowStep extends Unit { + /** + * Holds if the step from `node1` to `node2` should be considered a flow + * step for paths related to unsafe unpack vulnerabilities. + */ + abstract predicate step(DataFlow::Node nodeFrom, DataFlow::Node nodeTo); +} + +/** + * A sink defined in a CSV model. + */ +private class DefaultUnsafeUnpackSink extends UnsafeUnpackSink { + DefaultUnsafeUnpackSink() { sinkNode(this, "unsafe-unpack") } +} + +private class UnsafeUnpackSinks extends SinkModelCsv { + override predicate row(string row) { + row = + [ + ";Zip;true;unzipFile(_:destination:overwrite:password:progress:fileOutputHandler:);;;Argument[0];unsafe-unpack", + ";FileManager;true;unzipItem(at:to:skipCRC32:progress:pathEncoding:);;;Argument[0];unsafe-unpack", + ] + } +} + +/** + * An additional taint step for unsafe unpack vulnerabilities. + */ +private class UnsafeUnpackAdditionalDataFlowStep extends UnsafeUnpackAdditionalFlowStep { + override predicate step(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { + exists(CallExpr initCall, CallExpr call | + // If a zip file is remotely downloaded the destination path is tainted + call.getStaticTarget().(Method).hasQualifiedName("Data", "write(to:options:)") and + call.getQualifier() = initCall and + initCall.getStaticTarget().(Initializer).getEnclosingDecl().(TypeDecl).getName() = "Data" and + nodeFrom.asExpr() = initCall and + nodeTo.asExpr() = call.getAnArgument().getExpr() + ) + } +} + +/** + * A barrier for unsafe unpack vulnerabilities. + */ +private class UnsafeUnpackDefaultBarrier extends UnsafeUnpackBarrier { + UnsafeUnpackDefaultBarrier() { + // any numeric type + this.asExpr().getType().getUnderlyingType().getABaseType*().getName() = "Numeric" + } +} diff --git a/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll new file mode 100644 index 000000000000..59be3a7eb31e --- /dev/null +++ b/swift/ql/lib/codeql/swift/security/UnsafeUnpackQuery.qll @@ -0,0 +1,32 @@ +/** + * Provides default sources, sinks and sanitizers for reasoning about + * unsafe unpack vulnerabilities, as well as extension points for + * adding your own. + */ + +import swift +import codeql.swift.dataflow.TaintTracking +import codeql.swift.dataflow.FlowSources +import codeql.swift.security.UnsafeUnpackExtensions + +/** + * A taint configuration for tainted data that reaches a unsafe unpack sink. + */ +module UnsafeUnpackConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node node) { + node instanceof FlowSource or node instanceof RemoteFlowSource + } + + predicate isSink(DataFlow::Node node) { node instanceof UnsafeUnpackSink } + + predicate isBarrier(DataFlow::Node barrier) { barrier instanceof UnsafeUnpackBarrier } + + predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { + any(UnsafeUnpackAdditionalFlowStep s).step(nodeFrom, nodeTo) + } +} + +/** + * Detect taint flow of tainted data that reaches a unsafe unpack sink. + */ +module UnsafeUnpackFlow = TaintTracking::Global; diff --git a/swift/ql/src/change-notes/2024-02-07-unsafe-unpacking.md b/swift/ql/src/change-notes/2024-02-07-unsafe-unpacking.md new file mode 100644 index 000000000000..1f8fc022ac5c --- /dev/null +++ b/swift/ql/src/change-notes/2024-02-07-unsafe-unpacking.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new experimental query, `swift/unsafe-unpacking`, that detects unpacking user controlled zips without validating the destination file path is within the destination directory. diff --git a/swift/ql/src/experimental/Security/CWE-022/UnsafeUnpack.qhelp b/swift/ql/src/experimental/Security/CWE-022/UnsafeUnpack.qhelp new file mode 100644 index 000000000000..6c53b3a789a5 --- /dev/null +++ b/swift/ql/src/experimental/Security/CWE-022/UnsafeUnpack.qhelp @@ -0,0 +1,43 @@ + + + + +

    + +Unpacking files from a malicious zip without properly validating that the destination file path +is within the destination directory, or allowing symlinks to point to files outside the extraction directory, +allows an attacker to extract files to arbitrary locations outside the extraction directory. This helps +overwrite sensitive user data and, in some cases, can lead to code execution if an +attacker overwrites an application's shared object file. +

    +
    + + +

    Consider using a safer module, such as: ZIPArchive

    +
    + + +

    +The following examples unpacks a remote zip using `Zip.unzipFile()` which is vulnerable to path traversal. +

    + + +

    +The following examples unpacks a remote zip using `fileManager.unzipItem()` which is vulnerable to symlink path traversal. +

    + + + +

    Consider using a safer module, such as: ZIPArchive

    + +
    + + +
  • +Ostorlab: +Zip Packages Exploitation. +
  • +
    +
    \ No newline at end of file diff --git a/swift/ql/src/experimental/Security/CWE-022/UnsafeUnpack.ql b/swift/ql/src/experimental/Security/CWE-022/UnsafeUnpack.ql new file mode 100644 index 000000000000..be7f4cfd0844 --- /dev/null +++ b/swift/ql/src/experimental/Security/CWE-022/UnsafeUnpack.ql @@ -0,0 +1,23 @@ +/** + * @name Arbitrary file write during a zip extraction from a user controlled source + * @description Unpacking user controlled zips without validating whether the + * destination file path is within the destination directory can cause files + * outside the destination directory to be overwritten. + * @kind path-problem + * @problem.severity error + * @security-severity 7.5 + * @precision high + * @id swift/unsafe-unpacking + * @tags security + * experimental + * external/cwe/cwe-022 + */ + +import swift +import codeql.swift.security.UnsafeUnpackQuery +import UnsafeUnpackFlow::PathGraph + +from UnsafeUnpackFlow::PathNode sourceNode, UnsafeUnpackFlow::PathNode sinkNode +where UnsafeUnpackFlow::flowPath(sourceNode, sinkNode) +select sinkNode.getNode(), sourceNode, sinkNode, + "Unsafe unpacking from a malicious zip retrieved from a remote location." diff --git a/swift/ql/src/experimental/Security/CWE-022/ZipArchiveGood.swift b/swift/ql/src/experimental/Security/CWE-022/ZipArchiveGood.swift new file mode 100644 index 000000000000..e30f17c16923 --- /dev/null +++ b/swift/ql/src/experimental/Security/CWE-022/ZipArchiveGood.swift @@ -0,0 +1,25 @@ +import Foundation +import ZipArchive + +func unzipFile(at sourcePath: String, to destinationPath: String) { + do { + let remoteURL = URL(string: "https://example.com/")! + + let source = URL(fileURLWithPath: sourcePath) + + // Malicious zip is downloaded + try Data(contentsOf: remoteURL).write(to: source) + + // ZipArchive is safe + try SSZipArchive.unzipFile(atPath: sourcePath, toDestination: destinationPath, delegate: self) + } catch { + } +} + +func main() { + let sourcePath = "/sourcePath" + let destinationPath = "/destinationPath" + unzipFile(at: sourcePath, to: destinationPath) +} + +main() \ No newline at end of file diff --git a/swift/ql/src/experimental/Security/CWE-022/ZipBad.swift b/swift/ql/src/experimental/Security/CWE-022/ZipBad.swift new file mode 100644 index 000000000000..4a90e6b3ea86 --- /dev/null +++ b/swift/ql/src/experimental/Security/CWE-022/ZipBad.swift @@ -0,0 +1,28 @@ +import Foundation +import Zip + + +func unzipFile(at sourcePath: String, to destinationPath: String) { + do { + let remoteURL = URL(string: "https://example.com/")! + + let source = URL(fileURLWithPath: sourcePath) + let destination = URL(fileURLWithPath: destinationPath) + + // Malicious zip is downloaded + try Data(contentsOf: remoteURL).write(to: source) + + let fileManager = FileManager() + // Malicious zip is unpacked + try Zip.unzipFile(source, destination: destination, overwrite: true, password: nil) + } catch { + } +} + +func main() { + let sourcePath = "/sourcePath" + let destinationPath = "/destinationPath" + unzipFile(at: sourcePath, to: destinationPath) +} + +main() \ No newline at end of file diff --git a/swift/ql/src/experimental/Security/CWE-022/ZipFoundationBad.swift b/swift/ql/src/experimental/Security/CWE-022/ZipFoundationBad.swift new file mode 100644 index 000000000000..7dfd86feffdb --- /dev/null +++ b/swift/ql/src/experimental/Security/CWE-022/ZipFoundationBad.swift @@ -0,0 +1,28 @@ +import Foundation +import ZIPFoundation + + +func unzipFile(at sourcePath: String, to destinationPath: String) { + do { + let remoteURL = URL(string: "https://example.com/")! + + let source = URL(fileURLWithPath: sourcePath) + let destination = URL(fileURLWithPath: destinationPath) + + // Malicious zip is downloaded + try Data(contentsOf: remoteURL).write(to: source) + + let fileManager = FileManager() + // Malicious zip is unpacked + try fileManager.unzipItem(at:source, to: destination) + } catch { + } +} + +func main() { + let sourcePath = "/sourcePath" + let destinationPath = "/destinationPath" + unzipFile(at: sourcePath, to: destinationPath) +} + +main() \ No newline at end of file diff --git a/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected b/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected index 7abf18a9063a..10e7d32b57b3 100644 --- a/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected +++ b/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected @@ -1,637 +1,637 @@ edges -| file://:0:0:0:0 | .wrappedValue | test.swift:949:15:949:15 | x | -| file://:0:0:0:0 | .wrappedValue | test.swift:951:15:951:15 | x | -| file://:0:0:0:0 | KeyPathComponent [some:0] | test.swift:663:13:663:29 | exit #keyPath(...) [some:0] | -| file://:0:0:0:0 | [post] self [wrappedValue] | file://:0:0:0:0 | self [wrappedValue] | -| file://:0:0:0:0 | self [a, x] | file://:0:0:0:0 | .a [x] | -| file://:0:0:0:0 | self [s, x] | file://:0:0:0:0 | .s [x] | -| file://:0:0:0:0 | self [str] | file://:0:0:0:0 | .str | -| file://:0:0:0:0 | self [v2, some:0] | file://:0:0:0:0 | .v2 [some:0] | -| file://:0:0:0:0 | self [v2] | file://:0:0:0:0 | .v2 | -| file://:0:0:0:0 | self [v3] | file://:0:0:0:0 | .v3 | -| file://:0:0:0:0 | self [v] | file://:0:0:0:0 | .v | -| file://:0:0:0:0 | self [wrappedValue] | test.swift:958:9:958:9 | self [wrappedValue] | -| file://:0:0:0:0 | self [x, some:0] | file://:0:0:0:0 | .x [some:0] | -| file://:0:0:0:0 | self [x] | file://:0:0:0:0 | .x | -| file://:0:0:0:0 | self [x] | file://:0:0:0:0 | .x | -| file://:0:0:0:0 | self [x] | file://:0:0:0:0 | .x | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [v2] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [v3] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [v] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [wrappedValue] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [x] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [x] | -| file://:0:0:0:0 | value | test.swift:938:9:938:9 | newValue | -| file://:0:0:0:0 | value | test.swift:957:9:957:9 | value | -| file://:0:0:0:0 | value | test.swift:965:9:965:9 | newValue | -| file://:0:0:0:0 | value [some:0] | file://:0:0:0:0 | [post] self [v2, some:0] | -| file://:0:0:0:0 | value [some:0] | file://:0:0:0:0 | [post] self [x, some:0] | -| test.swift:6:19:6:26 | call to source() | test.swift:7:15:7:15 | t1 | -| test.swift:6:19:6:26 | call to source() | test.swift:9:15:9:15 | t1 | -| test.swift:6:19:6:26 | call to source() | test.swift:10:15:10:15 | t2 | -| test.swift:25:20:25:27 | call to source() | test.swift:29:18:29:21 | x | -| test.swift:26:26:26:33 | call to source() | test.swift:29:26:29:29 | y | -| test.swift:29:18:29:21 | x | test.swift:30:15:30:15 | x | -| test.swift:29:26:29:29 | y | test.swift:31:15:31:15 | y | -| test.swift:35:12:35:19 | call to source() | test.swift:39:15:39:29 | call to callee_source() | -| test.swift:43:19:43:26 | call to source() | test.swift:50:15:50:15 | t | -| test.swift:53:1:56:1 | arg[return] | test.swift:61:23:61:23 | [post] x | -| test.swift:54:11:54:18 | call to source() | test.swift:53:1:56:1 | arg[return] | -| test.swift:61:23:61:23 | [post] x | test.swift:62:15:62:15 | x | -| test.swift:65:16:65:28 | arg1 | test.swift:65:1:70:1 | arg2[return] | -| test.swift:73:18:73:25 | call to source() | test.swift:75:22:75:22 | x | -| test.swift:73:18:73:25 | call to source() | test.swift:76:15:76:15 | x | -| test.swift:75:22:75:22 | x | test.swift:65:16:65:28 | arg1 | -| test.swift:75:22:75:22 | x | test.swift:75:32:75:32 | [post] y | -| test.swift:75:32:75:32 | [post] y | test.swift:77:15:77:15 | y | -| test.swift:80:1:82:1 | arg[return] | test.swift:97:40:97:40 | [post] x | -| test.swift:81:11:81:18 | call to source() | test.swift:80:1:82:1 | arg[return] | -| test.swift:84:1:91:1 | arg[return] | test.swift:104:41:104:41 | [post] x | -| test.swift:86:15:86:22 | call to source() | test.swift:84:1:91:1 | arg[return] | -| test.swift:89:15:89:22 | call to source() | test.swift:84:1:91:1 | arg[return] | -| test.swift:97:40:97:40 | [post] x | test.swift:98:19:98:19 | x | -| test.swift:104:41:104:41 | [post] x | test.swift:105:19:105:19 | x | -| test.swift:109:9:109:14 | arg | test.swift:110:12:110:12 | arg | -| test.swift:113:14:113:19 | arg | test.swift:114:19:114:19 | arg | -| test.swift:113:14:113:19 | arg | test.swift:114:19:114:19 | arg | -| test.swift:114:19:114:19 | arg | test.swift:109:9:109:14 | arg | -| test.swift:114:19:114:19 | arg | test.swift:114:12:114:22 | call to ... | -| test.swift:114:19:114:19 | arg | test.swift:114:12:114:22 | call to ... | -| test.swift:114:19:114:19 | arg | test.swift:123:10:123:13 | i | -| test.swift:118:18:118:25 | call to source() | test.swift:119:31:119:31 | x | -| test.swift:119:18:119:44 | call to forward(arg:lambda:) | test.swift:120:15:120:15 | y | -| test.swift:119:31:119:31 | x | test.swift:113:14:113:19 | arg | -| test.swift:119:31:119:31 | x | test.swift:119:18:119:44 | call to forward(arg:lambda:) | -| test.swift:122:18:125:6 | call to forward(arg:lambda:) | test.swift:126:15:126:15 | z | -| test.swift:122:31:122:38 | call to source() | test.swift:113:14:113:19 | arg | -| test.swift:122:31:122:38 | call to source() | test.swift:122:18:125:6 | call to forward(arg:lambda:) | -| test.swift:123:10:123:13 | i | test.swift:124:16:124:16 | i | -| test.swift:142:10:142:13 | i | test.swift:143:16:143:16 | i | -| test.swift:145:23:145:30 | call to source() | test.swift:142:10:142:13 | i | -| test.swift:145:23:145:30 | call to source() | test.swift:145:15:145:31 | call to ... | -| test.swift:149:16:149:23 | call to source() | test.swift:151:15:151:28 | call to ... | -| test.swift:149:16:149:23 | call to source() | test.swift:159:16:159:29 | call to ... | -| test.swift:154:10:154:13 | i | test.swift:155:19:155:19 | i | -| test.swift:157:16:157:23 | call to source() | test.swift:154:10:154:13 | i | -| test.swift:159:16:159:29 | call to ... | test.swift:154:10:154:13 | i | -| test.swift:163:7:163:7 | self [x] | file://:0:0:0:0 | self [x] | -| test.swift:163:7:163:7 | value | file://:0:0:0:0 | value | -| test.swift:169:12:169:22 | value | test.swift:170:9:170:9 | value | -| test.swift:170:5:170:5 | [post] self [x] | test.swift:169:3:171:3 | self[return] [x] | -| test.swift:170:9:170:9 | value | test.swift:163:7:163:7 | value | -| test.swift:170:9:170:9 | value | test.swift:170:5:170:5 | [post] self [x] | -| test.swift:173:8:173:8 | self [x] | test.swift:174:12:174:12 | self [x] | -| test.swift:174:12:174:12 | self [x] | test.swift:163:7:163:7 | self [x] | -| test.swift:174:12:174:12 | self [x] | test.swift:174:12:174:12 | .x | -| test.swift:180:3:180:3 | [post] a [x] | test.swift:181:13:181:13 | a [x] | -| test.swift:180:9:180:16 | call to source() | test.swift:163:7:163:7 | value | -| test.swift:180:9:180:16 | call to source() | test.swift:180:3:180:3 | [post] a [x] | -| test.swift:181:13:181:13 | a [x] | test.swift:163:7:163:7 | self [x] | -| test.swift:181:13:181:13 | a [x] | test.swift:181:13:181:15 | .x | -| test.swift:185:7:185:7 | self [a, x] | file://:0:0:0:0 | self [a, x] | -| test.swift:194:3:194:3 | [post] b [a, x] | test.swift:195:13:195:13 | b [a, x] | -| test.swift:194:3:194:5 | [post] getter for .a [x] | test.swift:194:3:194:3 | [post] b [a, x] | -| test.swift:194:11:194:18 | call to source() | test.swift:163:7:163:7 | value | -| test.swift:194:11:194:18 | call to source() | test.swift:194:3:194:5 | [post] getter for .a [x] | -| test.swift:195:13:195:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | -| test.swift:195:13:195:13 | b [a, x] | test.swift:195:13:195:15 | .a [x] | -| test.swift:195:13:195:15 | .a [x] | test.swift:163:7:163:7 | self [x] | -| test.swift:195:13:195:15 | .a [x] | test.swift:195:13:195:17 | .x | -| test.swift:200:3:200:3 | [post] a [x] | test.swift:201:13:201:13 | a [x] | -| test.swift:200:9:200:16 | call to source() | test.swift:169:12:169:22 | value | -| test.swift:200:9:200:16 | call to source() | test.swift:200:3:200:3 | [post] a [x] | -| test.swift:201:13:201:13 | a [x] | test.swift:163:7:163:7 | self [x] | -| test.swift:201:13:201:13 | a [x] | test.swift:201:13:201:15 | .x | -| test.swift:206:3:206:3 | [post] a [x] | test.swift:207:13:207:13 | a [x] | -| test.swift:206:9:206:16 | call to source() | test.swift:163:7:163:7 | value | -| test.swift:206:9:206:16 | call to source() | test.swift:206:3:206:3 | [post] a [x] | -| test.swift:207:13:207:13 | a [x] | test.swift:173:8:173:8 | self [x] | -| test.swift:207:13:207:13 | a [x] | test.swift:207:13:207:19 | call to get() | -| test.swift:212:3:212:3 | [post] a [x] | test.swift:213:13:213:13 | a [x] | -| test.swift:212:9:212:16 | call to source() | test.swift:169:12:169:22 | value | -| test.swift:212:9:212:16 | call to source() | test.swift:212:3:212:3 | [post] a [x] | -| test.swift:213:13:213:13 | a [x] | test.swift:173:8:173:8 | self [x] | -| test.swift:213:13:213:13 | a [x] | test.swift:213:13:213:19 | call to get() | -| test.swift:218:3:218:3 | [post] b [a, x] | test.swift:219:13:219:13 | b [a, x] | -| test.swift:218:3:218:5 | [post] getter for .a [x] | test.swift:218:3:218:3 | [post] b [a, x] | -| test.swift:218:11:218:18 | call to source() | test.swift:169:12:169:22 | value | -| test.swift:218:11:218:18 | call to source() | test.swift:218:3:218:5 | [post] getter for .a [x] | -| test.swift:219:13:219:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | -| test.swift:219:13:219:13 | b [a, x] | test.swift:219:13:219:15 | .a [x] | -| test.swift:219:13:219:15 | .a [x] | test.swift:163:7:163:7 | self [x] | -| test.swift:219:13:219:15 | .a [x] | test.swift:219:13:219:17 | .x | -| test.swift:225:14:225:21 | call to source() | test.swift:235:13:235:15 | .source_value | -| test.swift:225:14:225:21 | call to source() | test.swift:238:13:238:15 | .source_value | -| test.swift:259:12:259:19 | call to source() | test.swift:259:12:259:19 | call to source() [some:0] | -| test.swift:259:12:259:19 | call to source() | test.swift:263:13:263:28 | call to optionalSource() | -| test.swift:259:12:259:19 | call to source() | test.swift:536:13:536:28 | call to optionalSource() | -| test.swift:259:12:259:19 | call to source() | test.swift:563:13:563:28 | call to optionalSource() | -| test.swift:259:12:259:19 | call to source() [some:0] | test.swift:263:13:263:28 | call to optionalSource() [some:0] | -| test.swift:259:12:259:19 | call to source() [some:0] | test.swift:536:13:536:28 | call to optionalSource() [some:0] | -| test.swift:259:12:259:19 | call to source() [some:0] | test.swift:563:13:563:28 | call to optionalSource() [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:265:15:265:15 | x | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:267:15:267:16 | ...! | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:271:15:271:16 | ...? | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:274:15:274:20 | ... ??(_:_:) ... | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:275:15:275:27 | ... ??(_:_:) ... | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:279:15:279:31 | ... ? ... : ... | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:280:15:280:38 | ... ? ... : ... | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:285:19:285:19 | z | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:291:16:291:17 | ...? | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:300:15:300:15 | z1 | -| test.swift:263:13:263:28 | call to optionalSource() | test.swift:303:15:303:16 | ...! | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:267:15:267:15 | x [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:279:26:279:26 | x [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:280:26:280:26 | x [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:284:8:284:12 | let ...? [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:291:16:291:17 | ...? [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:298:11:298:15 | let ...? [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:303:15:303:15 | x [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:306:13:306:24 | .some(...) [some:0] | -| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:314:10:314:21 | .some(...) [some:0] | -| test.swift:267:15:267:15 | x [some:0] | test.swift:267:15:267:16 | ...! | -| test.swift:270:15:270:22 | call to source() | test.swift:270:15:270:31 | call to signum() | -| test.swift:271:15:271:16 | ...? | test.swift:271:15:271:25 | call to signum() | -| test.swift:271:15:271:25 | call to signum() | test.swift:271:15:271:25 | OptionalEvaluationExpr | -| test.swift:275:20:275:27 | call to source() | test.swift:275:15:275:27 | ... ??(_:_:) ... | -| test.swift:277:20:277:27 | call to source() | test.swift:277:15:277:27 | ... ??(_:_:) ... | -| test.swift:279:26:279:26 | x [some:0] | test.swift:279:26:279:27 | ...! | -| test.swift:279:26:279:27 | ...! | test.swift:279:15:279:31 | ... ? ... : ... | -| test.swift:280:26:280:26 | x [some:0] | test.swift:280:26:280:27 | ...! | -| test.swift:280:26:280:27 | ...! | test.swift:280:15:280:38 | ... ? ... : ... | -| test.swift:280:31:280:38 | call to source() | test.swift:280:15:280:38 | ... ? ... : ... | -| test.swift:282:31:282:38 | call to source() | test.swift:282:15:282:38 | ... ? ... : ... | -| test.swift:284:8:284:12 | let ...? [some:0] | test.swift:284:12:284:12 | z | -| test.swift:284:12:284:12 | z | test.swift:285:19:285:19 | z | -| test.swift:291:8:291:12 | let ...? [some:0] | test.swift:291:12:291:12 | z | -| test.swift:291:12:291:12 | z | test.swift:292:19:292:19 | z | -| test.swift:291:16:291:17 | ...? | test.swift:291:16:291:26 | call to signum() | -| test.swift:291:16:291:17 | ...? [some:0] | test.swift:291:16:291:26 | call to signum() [some:0] | -| test.swift:291:16:291:26 | call to signum() | test.swift:291:16:291:26 | call to signum() [some:0] | -| test.swift:291:16:291:26 | call to signum() | test.swift:292:19:292:19 | z | -| test.swift:291:16:291:26 | call to signum() [some:0] | test.swift:291:8:291:12 | let ...? [some:0] | -| test.swift:298:11:298:15 | let ...? [some:0] | test.swift:298:15:298:15 | z1 | -| test.swift:298:15:298:15 | z1 | test.swift:300:15:300:15 | z1 | -| test.swift:303:15:303:15 | x [some:0] | test.swift:303:15:303:16 | ...! | -| test.swift:303:15:303:16 | ...! | test.swift:303:15:303:25 | call to signum() | -| test.swift:306:13:306:24 | .some(...) [some:0] | test.swift:306:23:306:23 | z | -| test.swift:306:23:306:23 | z | test.swift:307:19:307:19 | z | -| test.swift:314:10:314:21 | .some(...) [some:0] | test.swift:314:20:314:20 | z | -| test.swift:314:20:314:20 | z | test.swift:315:19:315:19 | z | -| test.swift:331:14:331:26 | (...) [Tuple element at index 1] | test.swift:335:15:335:15 | t1 [Tuple element at index 1] | -| test.swift:331:18:331:25 | call to source() | test.swift:331:14:331:26 | (...) [Tuple element at index 1] | -| test.swift:335:15:335:15 | t1 [Tuple element at index 1] | test.swift:335:15:335:18 | .1 | -| test.swift:343:5:343:5 | [post] t1 [Tuple element at index 0] | test.swift:346:15:346:15 | t1 [Tuple element at index 0] | -| test.swift:343:12:343:19 | call to source() | test.swift:343:5:343:5 | [post] t1 [Tuple element at index 0] | -| test.swift:346:15:346:15 | t1 [Tuple element at index 0] | test.swift:346:15:346:18 | .0 | -| test.swift:351:14:351:45 | (...) [Tuple element at index 0] | test.swift:353:9:353:17 | (...) [Tuple element at index 0] | -| test.swift:351:14:351:45 | (...) [Tuple element at index 0] | test.swift:356:15:356:15 | t1 [Tuple element at index 0] | -| test.swift:351:14:351:45 | (...) [Tuple element at index 0] | test.swift:360:15:360:15 | t2 [Tuple element at index 0] | -| test.swift:351:14:351:45 | (...) [Tuple element at index 1] | test.swift:353:9:353:17 | (...) [Tuple element at index 1] | -| test.swift:351:14:351:45 | (...) [Tuple element at index 1] | test.swift:357:15:357:15 | t1 [Tuple element at index 1] | -| test.swift:351:14:351:45 | (...) [Tuple element at index 1] | test.swift:361:15:361:15 | t2 [Tuple element at index 1] | -| test.swift:351:18:351:25 | call to source() | test.swift:351:14:351:45 | (...) [Tuple element at index 0] | -| test.swift:351:31:351:38 | call to source() | test.swift:351:14:351:45 | (...) [Tuple element at index 1] | -| test.swift:353:9:353:17 | (...) [Tuple element at index 0] | test.swift:353:10:353:10 | a | -| test.swift:353:9:353:17 | (...) [Tuple element at index 1] | test.swift:353:13:353:13 | b | -| test.swift:353:10:353:10 | a | test.swift:363:15:363:15 | a | -| test.swift:353:13:353:13 | b | test.swift:364:15:364:15 | b | -| test.swift:356:15:356:15 | t1 [Tuple element at index 0] | test.swift:356:15:356:18 | .0 | -| test.swift:357:15:357:15 | t1 [Tuple element at index 1] | test.swift:357:15:357:18 | .1 | -| test.swift:360:15:360:15 | t2 [Tuple element at index 0] | test.swift:360:15:360:18 | .0 | -| test.swift:361:15:361:15 | t2 [Tuple element at index 1] | test.swift:361:15:361:18 | .1 | -| test.swift:368:22:368:36 | t [Tuple element at index 1] | test.swift:369:13:369:13 | t [Tuple element at index 1] | -| test.swift:369:13:369:13 | t [Tuple element at index 1] | test.swift:369:13:369:15 | .1 | -| test.swift:369:13:369:15 | .1 | test.swift:369:12:369:19 | (...) [Tuple element at index 0] | -| test.swift:375:14:375:26 | (...) [Tuple element at index 1] | test.swift:376:30:376:30 | t1 [Tuple element at index 1] | -| test.swift:375:14:375:26 | (...) [Tuple element at index 1] | test.swift:377:30:377:30 | t1 [Tuple element at index 1] | -| test.swift:375:14:375:26 | (...) [Tuple element at index 1] | test.swift:380:15:380:15 | t1 [Tuple element at index 1] | -| test.swift:375:18:375:25 | call to source() | test.swift:375:14:375:26 | (...) [Tuple element at index 1] | -| test.swift:376:14:376:32 | call to tupleShiftLeft1(_:) [Tuple element at index 0] | test.swift:381:15:381:15 | t2 [Tuple element at index 0] | -| test.swift:376:30:376:30 | t1 [Tuple element at index 1] | test.swift:368:22:368:36 | t [Tuple element at index 1] | -| test.swift:376:30:376:30 | t1 [Tuple element at index 1] | test.swift:376:14:376:32 | call to tupleShiftLeft1(_:) [Tuple element at index 0] | -| test.swift:377:14:377:32 | call to tupleShiftLeft2(_:) [Tuple element at index 0] | test.swift:383:15:383:15 | t3 [Tuple element at index 0] | -| test.swift:377:30:377:30 | t1 [Tuple element at index 1] | test.swift:377:14:377:32 | call to tupleShiftLeft2(_:) [Tuple element at index 0] | -| test.swift:380:15:380:15 | t1 [Tuple element at index 1] | test.swift:380:15:380:18 | .1 | -| test.swift:381:15:381:15 | t2 [Tuple element at index 0] | test.swift:381:15:381:18 | .0 | -| test.swift:383:15:383:15 | t3 [Tuple element at index 0] | test.swift:383:15:383:18 | .0 | -| test.swift:394:16:394:21 | v | test.swift:394:61:394:61 | v | -| test.swift:394:61:394:61 | v | test.swift:394:45:394:62 | call to ... [mySingle:0] | -| test.swift:396:18:396:23 | v | test.swift:396:59:396:59 | v | -| test.swift:396:59:396:59 | v | test.swift:396:45:396:60 | call to ... [some:0] | -| test.swift:422:9:422:27 | call to ... [mySingle:0] | test.swift:427:10:427:25 | .mySingle(...) [mySingle:0] | -| test.swift:422:9:422:27 | call to ... [mySingle:0] | test.swift:436:13:436:28 | .mySingle(...) [mySingle:0] | -| test.swift:422:19:422:26 | call to source() | test.swift:422:9:422:27 | call to ... [mySingle:0] | -| test.swift:427:10:427:25 | .mySingle(...) [mySingle:0] | test.swift:427:24:427:24 | a | -| test.swift:427:24:427:24 | a | test.swift:428:19:428:19 | a | -| test.swift:436:13:436:28 | .mySingle(...) [mySingle:0] | test.swift:436:27:436:27 | x | -| test.swift:436:27:436:27 | x | test.swift:437:19:437:19 | x | -| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:451:10:451:30 | .myPair(...) [myPair:1] | -| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:461:13:461:33 | .myPair(...) [myPair:1] | -| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:466:33:466:33 | a [myPair:1] | -| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:495:13:495:13 | a [myPair:1] | -| test.swift:444:26:444:33 | call to source() | test.swift:444:9:444:34 | call to ... [myPair:1] | -| test.swift:451:10:451:30 | .myPair(...) [myPair:1] | test.swift:451:29:451:29 | b | -| test.swift:451:29:451:29 | b | test.swift:453:19:453:19 | b | -| test.swift:461:13:461:33 | .myPair(...) [myPair:1] | test.swift:461:32:461:32 | y | -| test.swift:461:32:461:32 | y | test.swift:463:19:463:19 | y | -| test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | test.swift:476:14:476:38 | .myCons(...) [myCons:1, myPair:1] | -| test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | test.swift:491:17:491:41 | .myCons(...) [myCons:1, myPair:1] | -| test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | test.swift:495:16:495:16 | b [myCons:1, myPair:1] | -| test.swift:466:33:466:33 | a [myPair:1] | test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | -| test.swift:476:14:476:38 | .myCons(...) [myCons:1, myPair:1] | test.swift:476:25:476:37 | .myPair(...) [myPair:1] | -| test.swift:476:25:476:37 | .myPair(...) [myPair:1] | test.swift:476:36:476:36 | c | -| test.swift:476:36:476:36 | c | test.swift:479:19:479:19 | c | -| test.swift:487:13:487:39 | .myPair(...) [myPair:0] | test.swift:487:31:487:31 | x | -| test.swift:487:31:487:31 | x | test.swift:488:19:488:19 | x | -| test.swift:487:43:487:62 | call to ... [myPair:0] | test.swift:487:13:487:39 | .myPair(...) [myPair:0] | -| test.swift:487:51:487:58 | call to source() | test.swift:487:43:487:62 | call to ... [myPair:0] | -| test.swift:491:17:491:41 | .myCons(...) [myCons:1, myPair:1] | test.swift:491:28:491:40 | .myPair(...) [myPair:1] | -| test.swift:491:28:491:40 | .myPair(...) [myPair:1] | test.swift:491:39:491:39 | c | -| test.swift:491:39:491:39 | c | test.swift:492:19:492:19 | c | -| test.swift:495:12:495:17 | (...) [Tuple element at index 0, myPair:1] | test.swift:496:14:496:55 | (...) [Tuple element at index 0, myPair:1] | -| test.swift:495:12:495:17 | (...) [Tuple element at index 1, myCons:1, myPair:1] | test.swift:496:14:496:55 | (...) [Tuple element at index 1, myCons:1, myPair:1] | -| test.swift:495:13:495:13 | a [myPair:1] | test.swift:495:12:495:17 | (...) [Tuple element at index 0, myPair:1] | -| test.swift:495:16:495:16 | b [myCons:1, myPair:1] | test.swift:495:12:495:17 | (...) [Tuple element at index 1, myCons:1, myPair:1] | -| test.swift:496:14:496:55 | (...) [Tuple element at index 0, myPair:1] | test.swift:496:15:496:27 | .myPair(...) [myPair:1] | -| test.swift:496:14:496:55 | (...) [Tuple element at index 1, myCons:1, myPair:1] | test.swift:496:30:496:54 | .myCons(...) [myCons:1, myPair:1] | -| test.swift:496:15:496:27 | .myPair(...) [myPair:1] | test.swift:496:26:496:26 | b | -| test.swift:496:26:496:26 | b | test.swift:498:19:498:19 | b | -| test.swift:496:30:496:54 | .myCons(...) [myCons:1, myPair:1] | test.swift:496:41:496:53 | .myPair(...) [myPair:1] | -| test.swift:496:41:496:53 | .myPair(...) [myPair:1] | test.swift:496:52:496:52 | e | -| test.swift:496:52:496:52 | e | test.swift:501:19:501:19 | e | -| test.swift:507:14:507:38 | call to ... [mySingle:0] | test.swift:513:13:513:35 | .mySingle(...) [mySingle:0] | -| test.swift:507:30:507:37 | call to source() | test.swift:507:14:507:38 | call to ... [mySingle:0] | -| test.swift:509:14:509:32 | call to mkMyEnum1(_:) [mySingle:0] | test.swift:515:13:515:35 | .mySingle(...) [mySingle:0] | -| test.swift:509:24:509:31 | call to source() | test.swift:394:16:394:21 | v | -| test.swift:509:24:509:31 | call to source() | test.swift:509:14:509:32 | call to mkMyEnum1(_:) [mySingle:0] | -| test.swift:511:14:511:32 | call to mkMyEnum2(_:) [mySingle:0] | test.swift:517:13:517:35 | .mySingle(...) [mySingle:0] | -| test.swift:511:24:511:31 | call to source() | test.swift:511:14:511:32 | call to mkMyEnum2(_:) [mySingle:0] | -| test.swift:513:13:513:35 | .mySingle(...) [mySingle:0] | test.swift:513:33:513:33 | d2 | -| test.swift:513:33:513:33 | d2 | test.swift:513:54:513:54 | d2 | -| test.swift:515:13:515:35 | .mySingle(...) [mySingle:0] | test.swift:515:33:515:33 | d4 | -| test.swift:515:33:515:33 | d4 | test.swift:515:54:515:54 | d4 | -| test.swift:517:13:517:35 | .mySingle(...) [mySingle:0] | test.swift:517:33:517:33 | d6 | -| test.swift:517:33:517:33 | d6 | test.swift:517:54:517:54 | d6 | -| test.swift:520:14:520:36 | call to ... [some:0] | test.swift:526:15:526:15 | e2 [some:0] | -| test.swift:520:28:520:35 | call to source() | test.swift:520:14:520:36 | call to ... [some:0] | -| test.swift:522:14:522:34 | call to mkOptional1(_:) [some:0] | test.swift:528:15:528:15 | e4 [some:0] | -| test.swift:522:26:522:33 | call to source() | test.swift:396:18:396:23 | v | -| test.swift:522:26:522:33 | call to source() | test.swift:522:14:522:34 | call to mkOptional1(_:) [some:0] | -| test.swift:524:14:524:34 | call to mkOptional2(_:) [some:0] | test.swift:530:15:530:15 | e6 [some:0] | -| test.swift:524:26:524:33 | call to source() | test.swift:524:14:524:34 | call to mkOptional2(_:) [some:0] | -| test.swift:526:15:526:15 | e2 [some:0] | test.swift:526:15:526:17 | ...! | -| test.swift:528:15:528:15 | e4 [some:0] | test.swift:528:15:528:17 | ...! | -| test.swift:530:15:530:15 | e6 [some:0] | test.swift:530:15:530:17 | ...! | -| test.swift:536:13:536:28 | call to optionalSource() | test.swift:539:19:539:19 | a | -| test.swift:536:13:536:28 | call to optionalSource() [some:0] | test.swift:538:8:538:12 | let ...? [some:0] | -| test.swift:536:13:536:28 | call to optionalSource() [some:0] | test.swift:543:19:543:19 | x [some:0] | -| test.swift:538:8:538:12 | let ...? [some:0] | test.swift:538:12:538:12 | a | -| test.swift:538:12:538:12 | a | test.swift:539:19:539:19 | a | -| test.swift:543:18:543:23 | (...) [Tuple element at index 0, some:0] | test.swift:545:10:545:37 | (...) [Tuple element at index 0, some:0] | -| test.swift:543:19:543:19 | x [some:0] | test.swift:543:18:543:23 | (...) [Tuple element at index 0, some:0] | -| test.swift:545:10:545:37 | (...) [Tuple element at index 0, some:0] | test.swift:545:11:545:22 | .some(...) [some:0] | -| test.swift:545:11:545:22 | .some(...) [some:0] | test.swift:545:21:545:21 | a | -| test.swift:545:21:545:21 | a | test.swift:546:19:546:19 | a | -| test.swift:559:9:559:9 | self [x, some:0] | file://:0:0:0:0 | self [x, some:0] | -| test.swift:559:9:559:9 | self [x] | file://:0:0:0:0 | self [x] | -| test.swift:559:9:559:9 | value | file://:0:0:0:0 | value | -| test.swift:559:9:559:9 | value [some:0] | file://:0:0:0:0 | value [some:0] | -| test.swift:563:13:563:28 | call to optionalSource() | test.swift:565:12:565:12 | x | -| test.swift:563:13:563:28 | call to optionalSource() [some:0] | test.swift:565:12:565:12 | x [some:0] | -| test.swift:565:5:565:5 | [post] cx [x, some:0] | test.swift:569:20:569:20 | cx [x, some:0] | -| test.swift:565:5:565:5 | [post] cx [x] | test.swift:569:20:569:20 | cx [x] | -| test.swift:565:12:565:12 | x | test.swift:559:9:559:9 | value | -| test.swift:565:12:565:12 | x | test.swift:565:5:565:5 | [post] cx [x] | -| test.swift:565:12:565:12 | x [some:0] | test.swift:559:9:559:9 | value [some:0] | -| test.swift:565:12:565:12 | x [some:0] | test.swift:565:5:565:5 | [post] cx [x, some:0] | -| test.swift:569:11:569:15 | let ...? [some:0] | test.swift:569:15:569:15 | z1 | -| test.swift:569:15:569:15 | z1 | test.swift:570:15:570:15 | z1 | -| test.swift:569:20:569:20 | cx [x, some:0] | test.swift:559:9:559:9 | self [x, some:0] | -| test.swift:569:20:569:20 | cx [x, some:0] | test.swift:569:20:569:23 | .x [some:0] | -| test.swift:569:20:569:20 | cx [x] | test.swift:559:9:559:9 | self [x] | -| test.swift:569:20:569:20 | cx [x] | test.swift:569:20:569:23 | .x | -| test.swift:569:20:569:23 | .x | test.swift:570:15:570:15 | z1 | -| test.swift:569:20:569:23 | .x [some:0] | test.swift:569:11:569:15 | let ...? [some:0] | -| test.swift:576:14:576:21 | call to source() | test.swift:576:13:576:21 | call to +(_:) | -| test.swift:585:9:585:9 | self [str] | file://:0:0:0:0 | self [str] | -| test.swift:586:10:586:13 | s | test.swift:587:13:587:13 | s | -| test.swift:587:7:587:7 | [post] self [str] | test.swift:586:5:588:5 | self[return] [str] | -| test.swift:587:13:587:13 | s | test.swift:587:7:587:7 | [post] self [str] | -| test.swift:592:17:595:5 | self[return] [str] | test.swift:600:13:600:41 | call to MyClass.init(contentsOfFile:) [str] | -| test.swift:593:7:593:7 | [post] self [str] | test.swift:592:17:595:5 | self[return] [str] | -| test.swift:593:7:593:7 | [post] self [str] | test.swift:594:17:594:17 | self [str] | -| test.swift:593:20:593:28 | call to source3() | test.swift:586:10:586:13 | s | -| test.swift:593:20:593:28 | call to source3() | test.swift:593:7:593:7 | [post] self [str] | -| test.swift:594:17:594:17 | self [str] | test.swift:594:17:594:17 | .str | -| test.swift:599:13:599:33 | call to MyClass.init(s:) [str] | test.swift:585:9:585:9 | self [str] | -| test.swift:599:13:599:33 | call to MyClass.init(s:) [str] | test.swift:599:13:599:35 | .str | -| test.swift:599:24:599:32 | call to source3() | test.swift:586:10:586:13 | s | -| test.swift:599:24:599:32 | call to source3() | test.swift:599:13:599:33 | call to MyClass.init(s:) [str] | -| test.swift:600:13:600:41 | call to MyClass.init(contentsOfFile:) [str] | test.swift:585:9:585:9 | self [str] | -| test.swift:600:13:600:41 | call to MyClass.init(contentsOfFile:) [str] | test.swift:600:13:600:43 | .str | -| test.swift:615:7:615:7 | self [x] | file://:0:0:0:0 | self [x] | -| test.swift:617:8:617:11 | x | test.swift:618:14:618:14 | x | -| test.swift:618:5:618:5 | [post] self [x] | test.swift:617:3:619:3 | self[return] [x] | -| test.swift:618:14:618:14 | x | test.swift:618:5:618:5 | [post] self [x] | -| test.swift:623:11:623:24 | call to S.init(x:) [x] | test.swift:625:13:625:13 | s [x] | -| test.swift:623:11:623:24 | call to S.init(x:) [x] | test.swift:628:13:628:13 | s [x] | -| test.swift:623:16:623:23 | call to source() | test.swift:617:8:617:11 | x | -| test.swift:623:16:623:23 | call to source() | test.swift:623:11:623:24 | call to S.init(x:) [x] | -| test.swift:624:11:624:14 | enter #keyPath(...) [x] | test.swift:624:14:624:14 | KeyPathComponent | -| test.swift:624:14:624:14 | KeyPathComponent | test.swift:624:11:624:14 | exit #keyPath(...) | -| test.swift:625:13:625:13 | s [x] | test.swift:624:11:624:14 | enter #keyPath(...) [x] | -| test.swift:625:13:625:13 | s [x] | test.swift:625:13:625:25 | \\...[...] | -| test.swift:627:36:627:38 | enter #keyPath(...) [x] | test.swift:627:38:627:38 | KeyPathComponent | -| test.swift:627:38:627:38 | KeyPathComponent | test.swift:627:36:627:38 | exit #keyPath(...) | -| test.swift:628:13:628:13 | s [x] | test.swift:627:36:627:38 | enter #keyPath(...) [x] | -| test.swift:628:13:628:13 | s [x] | test.swift:628:13:628:32 | \\...[...] | -| test.swift:632:7:632:7 | self [s, x] | file://:0:0:0:0 | self [s, x] | -| test.swift:634:8:634:11 | s [x] | test.swift:635:14:635:14 | s [x] | -| test.swift:635:5:635:5 | [post] self [s, x] | test.swift:634:3:636:3 | self[return] [s, x] | -| test.swift:635:14:635:14 | s [x] | test.swift:635:5:635:5 | [post] self [s, x] | -| test.swift:640:11:640:24 | call to S.init(x:) [x] | test.swift:641:18:641:18 | s [x] | -| test.swift:640:16:640:23 | call to source() | test.swift:617:8:617:11 | x | -| test.swift:640:16:640:23 | call to source() | test.swift:640:11:640:24 | call to S.init(x:) [x] | -| test.swift:641:12:641:19 | call to S2.init(s:) [s, x] | test.swift:643:13:643:13 | s2 [s, x] | -| test.swift:641:18:641:18 | s [x] | test.swift:634:8:634:11 | s [x] | -| test.swift:641:18:641:18 | s [x] | test.swift:641:12:641:19 | call to S2.init(s:) [s, x] | -| test.swift:642:11:642:17 | enter #keyPath(...) [s, x] | test.swift:642:15:642:15 | KeyPathComponent [x] | -| test.swift:642:15:642:15 | KeyPathComponent [x] | test.swift:642:17:642:17 | KeyPathComponent | -| test.swift:642:17:642:17 | KeyPathComponent | test.swift:642:11:642:17 | exit #keyPath(...) | -| test.swift:643:13:643:13 | s2 [s, x] | test.swift:642:11:642:17 | enter #keyPath(...) [s, x] | -| test.swift:643:13:643:13 | s2 [s, x] | test.swift:643:13:643:26 | \\...[...] | -| test.swift:647:17:647:26 | [...] [Collection element] | test.swift:649:15:649:15 | array [Collection element] | -| test.swift:647:18:647:25 | call to source() | test.swift:647:17:647:26 | [...] [Collection element] | -| test.swift:648:13:648:22 | enter #keyPath(...) [Collection element] | test.swift:648:20:648:22 | KeyPathComponent | -| test.swift:648:20:648:22 | KeyPathComponent | test.swift:648:13:648:22 | exit #keyPath(...) | -| test.swift:649:15:649:15 | array [Collection element] | test.swift:648:13:648:22 | enter #keyPath(...) [Collection element] | -| test.swift:649:15:649:15 | array [Collection element] | test.swift:649:15:649:31 | \\...[...] | -| test.swift:655:8:655:12 | s [some:0, x] | test.swift:656:14:656:14 | s [some:0, x] | -| test.swift:656:5:656:5 | [post] self [s, some:0, x] | test.swift:655:3:657:3 | self[return] [s, some:0, x] | -| test.swift:656:14:656:14 | s [some:0, x] | test.swift:656:5:656:5 | [post] self [s, some:0, x] | -| test.swift:661:13:661:26 | call to S.init(x:) [x] | test.swift:662:29:662:29 | s [x] | -| test.swift:661:18:661:25 | call to source() | test.swift:617:8:617:11 | x | -| test.swift:661:18:661:25 | call to source() | test.swift:661:13:661:26 | call to S.init(x:) [x] | -| test.swift:662:14:662:30 | call to S2_Optional.init(s:) [s, some:0, x] | test.swift:664:15:664:15 | s2 [s, some:0, x] | -| test.swift:662:29:662:29 | s [some:0, x] | test.swift:655:8:655:12 | s [some:0, x] | -| test.swift:662:29:662:29 | s [some:0, x] | test.swift:662:14:662:30 | call to S2_Optional.init(s:) [s, some:0, x] | -| test.swift:662:29:662:29 | s [x] | test.swift:662:29:662:29 | s [some:0, x] | -| test.swift:663:13:663:29 | enter #keyPath(...) [s, some:0, x] | test.swift:663:26:663:26 | KeyPathComponent [some:0, x] | -| test.swift:663:26:663:26 | KeyPathComponent [some:0, x] | test.swift:663:27:663:27 | KeyPathComponent [x] | -| test.swift:663:27:663:27 | KeyPathComponent [x] | test.swift:663:29:663:29 | KeyPathComponent | -| test.swift:663:29:663:29 | KeyPathComponent | file://:0:0:0:0 | KeyPathComponent [some:0] | -| test.swift:664:15:664:15 | s2 [s, some:0, x] | test.swift:663:13:663:29 | enter #keyPath(...) [s, some:0, x] | -| test.swift:664:15:664:15 | s2 [s, some:0, x] | test.swift:664:15:664:28 | \\...[...] [some:0] | -| test.swift:664:15:664:28 | \\...[...] [some:0] | test.swift:664:15:664:29 | ...! | -| test.swift:668:13:668:20 | call to source() | test.swift:676:15:676:15 | y | -| test.swift:678:9:678:16 | call to source() | test.swift:680:11:680:11 | x | -| test.swift:678:9:678:16 | call to source() | test.swift:681:15:681:15 | x | -| test.swift:680:11:680:11 | x | test.swift:680:15:680:15 | [post] y | -| test.swift:680:15:680:15 | [post] y | test.swift:682:15:682:15 | y | -| test.swift:688:5:688:5 | [post] arr1 [Collection element] | test.swift:689:15:689:15 | arr1 [Collection element] | -| test.swift:688:15:688:22 | call to source() | test.swift:688:5:688:5 | [post] arr1 [Collection element] | -| test.swift:689:15:689:15 | arr1 [Collection element] | test.swift:689:15:689:21 | ...[...] | -| test.swift:692:16:692:25 | [...] [Collection element] | test.swift:693:15:693:15 | arr2 [Collection element] | -| test.swift:692:17:692:24 | call to source() | test.swift:692:16:692:25 | [...] [Collection element] | -| test.swift:693:15:693:15 | arr2 [Collection element] | test.swift:693:15:693:21 | ...[...] | -| test.swift:695:18:695:29 | [...] [Collection element, Collection element] | test.swift:697:15:697:15 | matrix [Collection element, Collection element] | -| test.swift:695:19:695:28 | [...] [Collection element] | test.swift:695:18:695:29 | [...] [Collection element, Collection element] | -| test.swift:695:20:695:27 | call to source() | test.swift:695:19:695:28 | [...] [Collection element] | -| test.swift:697:15:697:15 | matrix [Collection element, Collection element] | test.swift:697:15:697:23 | ...[...] [Collection element] | -| test.swift:697:15:697:23 | ...[...] [Collection element] | test.swift:697:15:697:26 | ...[...] | -| test.swift:700:5:700:5 | [post] matrix2 [Collection element, Collection element] | test.swift:701:15:701:15 | matrix2 [Collection element, Collection element] | -| test.swift:700:5:700:14 | [post] getter for ...[...] [Collection element] | test.swift:700:5:700:5 | [post] matrix2 [Collection element, Collection element] | -| test.swift:700:21:700:28 | call to source() | test.swift:700:5:700:14 | [post] getter for ...[...] [Collection element] | -| test.swift:701:15:701:15 | matrix2 [Collection element, Collection element] | test.swift:701:15:701:24 | ...[...] [Collection element] | -| test.swift:701:15:701:24 | ...[...] [Collection element] | test.swift:701:15:701:27 | ...[...] | -| test.swift:708:16:708:51 | call to Array.init(repeating:count:) [Collection element] | test.swift:709:15:709:15 | arr5 [Collection element] | -| test.swift:708:33:708:40 | call to source() | test.swift:708:16:708:51 | call to Array.init(repeating:count:) [Collection element] | -| test.swift:709:15:709:15 | arr5 [Collection element] | test.swift:709:15:709:21 | ...[...] | -| test.swift:712:5:712:5 | [post] arr6 [Collection element] | test.swift:713:15:713:15 | arr6 [Collection element] | -| test.swift:712:17:712:24 | call to source() | test.swift:712:5:712:5 | [post] arr6 [Collection element] | -| test.swift:713:15:713:15 | arr6 [Collection element] | test.swift:713:15:713:21 | ...[...] | -| test.swift:715:16:715:25 | [...] [Collection element] | test.swift:716:15:716:15 | arr7 [Collection element] | -| test.swift:715:17:715:24 | call to source() | test.swift:715:16:715:25 | [...] [Collection element] | -| test.swift:716:15:716:15 | arr7 [Collection element] | test.swift:716:15:716:34 | call to randomElement() [some:0] | -| test.swift:716:15:716:34 | call to randomElement() [some:0] | test.swift:716:15:716:35 | ...! | -| test.swift:722:5:722:5 | [post] set1 [Collection element] | test.swift:723:15:723:15 | set1 [Collection element] | -| test.swift:722:17:722:24 | call to source() | test.swift:722:5:722:5 | [post] set1 [Collection element] | -| test.swift:723:15:723:15 | set1 [Collection element] | test.swift:723:15:723:34 | call to randomElement() [some:0] | -| test.swift:723:15:723:34 | call to randomElement() [some:0] | test.swift:723:15:723:35 | ...! | -| test.swift:725:16:725:30 | call to Set.init(_:) [Collection element] | test.swift:726:15:726:15 | set2 [Collection element] | -| test.swift:725:20:725:29 | [...] [Collection element] | test.swift:725:16:725:30 | call to Set.init(_:) [Collection element] | -| test.swift:725:21:725:28 | call to source() | test.swift:725:20:725:29 | [...] [Collection element] | -| test.swift:726:15:726:15 | set2 [Collection element] | test.swift:726:15:726:34 | call to randomElement() [some:0] | -| test.swift:726:15:726:34 | call to randomElement() [some:0] | test.swift:726:15:726:35 | ...! | -| test.swift:731:9:731:9 | self [v2, some:0] | file://:0:0:0:0 | self [v2, some:0] | -| test.swift:731:9:731:9 | self [v2] | file://:0:0:0:0 | self [v2] | -| test.swift:731:9:731:9 | value | file://:0:0:0:0 | value | -| test.swift:731:9:731:9 | value [some:0] | file://:0:0:0:0 | value [some:0] | -| test.swift:732:9:732:9 | self [v3] | file://:0:0:0:0 | self [v3] | -| test.swift:732:9:732:9 | value | file://:0:0:0:0 | value | -| test.swift:742:5:742:5 | v1 [some:0] | test.swift:752:15:752:15 | v1 [some:0] | -| test.swift:742:11:742:18 | call to source() | test.swift:742:5:742:5 | v1 [some:0] | -| test.swift:743:10:743:17 | call to source() | test.swift:743:10:743:17 | call to source() [some:0] | -| test.swift:743:10:743:17 | call to source() | test.swift:753:15:753:17 | ...! | -| test.swift:743:10:743:17 | call to source() [some:0] | test.swift:753:15:753:15 | v2 [some:0] | -| test.swift:744:10:744:17 | call to source() | test.swift:754:15:754:15 | v3 | -| test.swift:746:5:746:5 | [post] mo1 [v2, some:0] | test.swift:747:5:747:5 | mo1 [v2, some:0] | -| test.swift:746:5:746:5 | [post] mo1 [v2] | test.swift:747:5:747:5 | mo1 [v2] | -| test.swift:746:14:746:21 | call to source() | test.swift:731:9:731:9 | value | -| test.swift:746:14:746:21 | call to source() | test.swift:746:5:746:5 | [post] mo1 [v2] | -| test.swift:746:14:746:21 | call to source() | test.swift:746:14:746:21 | call to source() [some:0] | -| test.swift:746:14:746:21 | call to source() [some:0] | test.swift:731:9:731:9 | value [some:0] | -| test.swift:746:14:746:21 | call to source() [some:0] | test.swift:746:5:746:5 | [post] mo1 [v2, some:0] | -| test.swift:747:5:747:5 | [post] mo1 [v3] | test.swift:757:15:757:15 | mo1 [v3] | -| test.swift:747:5:747:5 | mo1 [v2, some:0] | test.swift:756:15:756:15 | mo1 [v2, some:0] | -| test.swift:747:5:747:5 | mo1 [v2] | test.swift:756:15:756:15 | mo1 [v2] | -| test.swift:747:14:747:21 | call to source() | test.swift:732:9:732:9 | value | -| test.swift:747:14:747:21 | call to source() | test.swift:747:5:747:5 | [post] mo1 [v3] | -| test.swift:752:15:752:15 | v1 [some:0] | test.swift:752:15:752:17 | ...! | -| test.swift:753:15:753:15 | v2 [some:0] | test.swift:753:15:753:17 | ...! | -| test.swift:756:15:756:15 | mo1 [v2, some:0] | test.swift:731:9:731:9 | self [v2, some:0] | -| test.swift:756:15:756:15 | mo1 [v2, some:0] | test.swift:756:15:756:19 | .v2 [some:0] | -| test.swift:756:15:756:15 | mo1 [v2] | test.swift:731:9:731:9 | self [v2] | -| test.swift:756:15:756:15 | mo1 [v2] | test.swift:756:15:756:19 | .v2 | -| test.swift:756:15:756:19 | .v2 | test.swift:756:15:756:21 | ...! | -| test.swift:756:15:756:19 | .v2 [some:0] | test.swift:756:15:756:21 | ...! | -| test.swift:757:15:757:15 | mo1 [v3] | test.swift:732:9:732:9 | self [v3] | -| test.swift:757:15:757:15 | mo1 [v3] | test.swift:757:15:757:19 | .v3 | -| test.swift:764:13:764:26 | call to S.init(x:) [x] | test.swift:765:29:765:29 | s [x] | -| test.swift:764:18:764:25 | call to source() | test.swift:617:8:617:11 | x | -| test.swift:764:18:764:25 | call to source() | test.swift:764:13:764:26 | call to S.init(x:) [x] | -| test.swift:765:14:765:30 | call to S2_Optional.init(s:) [s, some:0, x] | test.swift:767:15:767:15 | s2 [s, some:0, x] | -| test.swift:765:29:765:29 | s [some:0, x] | test.swift:655:8:655:12 | s [some:0, x] | -| test.swift:765:29:765:29 | s [some:0, x] | test.swift:765:14:765:30 | call to S2_Optional.init(s:) [s, some:0, x] | -| test.swift:765:29:765:29 | s [x] | test.swift:765:29:765:29 | s [some:0, x] | -| test.swift:766:13:766:29 | enter #keyPath(...) [s, some:0, x] | test.swift:766:26:766:26 | KeyPathComponent [some:0, x] | -| test.swift:766:26:766:26 | KeyPathComponent [some:0, x] | test.swift:766:26:766:26 | KeyPathComponent [x] | -| test.swift:766:26:766:26 | KeyPathComponent [x] | test.swift:766:29:766:29 | KeyPathComponent | -| test.swift:766:29:766:29 | KeyPathComponent | test.swift:766:13:766:29 | exit #keyPath(...) | -| test.swift:767:15:767:15 | s2 [s, some:0, x] | test.swift:766:13:766:29 | enter #keyPath(...) [s, some:0, x] | -| test.swift:767:15:767:15 | s2 [s, some:0, x] | test.swift:767:15:767:28 | \\...[...] | -| test.swift:774:5:774:5 | [post] dict1 [Collection element, Tuple element at index 1] | test.swift:776:15:776:15 | dict1 [Collection element, Tuple element at index 1] | -| test.swift:774:5:774:12 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:774:5:774:5 | [post] dict1 [Collection element, Tuple element at index 1] | -| test.swift:774:16:774:23 | call to source() | test.swift:774:5:774:12 | DictionarySubscriptNode [Tuple element at index 1] | -| test.swift:776:15:776:15 | dict1 [Collection element, Tuple element at index 1] | test.swift:776:15:776:22 | DictionarySubscriptNode [Tuple element at index 1] | -| test.swift:776:15:776:22 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:776:15:776:22 | ...[...] | -| test.swift:778:17:778:29 | [...] [Collection element, Tuple element at index 0] | test.swift:781:25:781:25 | dict2 [Collection element, Tuple element at index 0] | -| test.swift:778:18:778:25 | call to source() | test.swift:778:18:778:28 | (...) [Tuple element at index 0] | -| test.swift:778:18:778:28 | (...) [Tuple element at index 0] | test.swift:778:17:778:29 | [...] [Collection element, Tuple element at index 0] | -| test.swift:781:5:781:5 | $generator [Collection element, Tuple element at index 0] | test.swift:781:5:781:5 | call to next() [some:0, Tuple element at index 0] | -| test.swift:781:5:781:5 | call to next() [some:0, Tuple element at index 0] | test.swift:781:9:781:20 | (...) [Tuple element at index 0] | -| test.swift:781:9:781:20 | (...) [Tuple element at index 0] | test.swift:781:10:781:10 | key | -| test.swift:781:10:781:10 | key | test.swift:782:19:782:19 | key | -| test.swift:781:25:781:25 | call to makeIterator() [Collection element, Tuple element at index 0] | test.swift:781:5:781:5 | $generator [Collection element, Tuple element at index 0] | -| test.swift:781:25:781:25 | dict2 [Collection element, Tuple element at index 0] | test.swift:781:25:781:25 | call to makeIterator() [Collection element, Tuple element at index 0] | -| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:787:15:787:15 | dict3 [Collection element, Tuple element at index 1] | -| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:789:5:789:5 | dict3 [Collection element, Tuple element at index 1] | -| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:792:15:792:15 | dict3 [Collection element, Tuple element at index 1] | -| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 1] | -| test.swift:786:18:786:28 | (...) [Tuple element at index 1] | test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | -| test.swift:786:21:786:28 | call to source() | test.swift:786:18:786:28 | (...) [Tuple element at index 1] | -| test.swift:787:15:787:15 | dict3 [Collection element, Tuple element at index 1] | test.swift:787:15:787:22 | DictionarySubscriptNode [Tuple element at index 1] | -| test.swift:787:15:787:22 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:787:15:787:22 | ...[...] | -| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 0] | test.swift:791:15:791:15 | dict3 [Collection element, Tuple element at index 0] | -| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 0] | test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 0] | -| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 1] | test.swift:792:15:792:15 | dict3 [Collection element, Tuple element at index 1] | -| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 1] | test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 1] | -| test.swift:789:5:789:5 | dict3 [Collection element, Tuple element at index 1] | test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 1] | -| test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 0] | test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 0] | -| test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 1] | -| test.swift:789:11:789:18 | call to source() | test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 0] | -| test.swift:791:15:791:15 | dict3 [Collection element, Tuple element at index 0] | test.swift:791:15:791:35 | call to randomElement() [some:0, Tuple element at index 0] | -| test.swift:791:15:791:35 | call to randomElement() [some:0, Tuple element at index 0] | test.swift:791:15:791:36 | ...! [Tuple element at index 0] | -| test.swift:791:15:791:36 | ...! [Tuple element at index 0] | test.swift:791:15:791:38 | .0 | -| test.swift:792:15:792:15 | dict3 [Collection element, Tuple element at index 1] | test.swift:792:15:792:35 | call to randomElement() [some:0, Tuple element at index 1] | -| test.swift:792:15:792:35 | call to randomElement() [some:0, Tuple element at index 1] | test.swift:792:15:792:36 | ...! [Tuple element at index 1] | -| test.swift:792:15:792:36 | ...! [Tuple element at index 1] | test.swift:792:15:792:38 | .1 | -| test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 0] | test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 0] | -| test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 1] | test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 1] | -| test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 0] | test.swift:794:9:794:20 | (...) [Tuple element at index 0] | -| test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 1] | test.swift:794:9:794:20 | (...) [Tuple element at index 1] | -| test.swift:794:9:794:20 | (...) [Tuple element at index 0] | test.swift:794:10:794:10 | key | -| test.swift:794:9:794:20 | (...) [Tuple element at index 1] | test.swift:794:15:794:15 | value | -| test.swift:794:10:794:10 | key | test.swift:795:19:795:19 | key | -| test.swift:794:15:794:15 | value | test.swift:796:19:796:19 | value | -| test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 0] | test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 0] | -| test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 1] | test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 1] | -| test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 0] | test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 0] | -| test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 1] | test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 1] | -| test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | test.swift:800:15:800:15 | dict4 [Collection element, Tuple element at index 1] | -| test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | test.swift:801:15:801:15 | dict4 [Collection element, Tuple element at index 1] | -| test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | test.swift:803:15:803:15 | dict4 [Collection element, Tuple element at index 1] | -| test.swift:799:18:799:27 | (...) [Tuple element at index 1] | test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | -| test.swift:799:20:799:27 | call to source() | test.swift:799:18:799:27 | (...) [Tuple element at index 1] | -| test.swift:800:15:800:15 | [post] dict4 [Collection element, Tuple element at index 0] | test.swift:802:15:802:15 | dict4 [Collection element, Tuple element at index 0] | -| test.swift:800:15:800:15 | dict4 [Collection element, Tuple element at index 1] | test.swift:800:15:800:52 | call to updateValue(_:forKey:) [some:0] | -| test.swift:800:15:800:52 | call to updateValue(_:forKey:) [some:0] | test.swift:800:15:800:53 | ...! | -| test.swift:800:44:800:51 | call to source() | test.swift:800:15:800:15 | [post] dict4 [Collection element, Tuple element at index 0] | -| test.swift:801:15:801:15 | [post] dict4 [Collection element, Tuple element at index 1] | test.swift:803:15:803:15 | dict4 [Collection element, Tuple element at index 1] | -| test.swift:801:15:801:15 | dict4 [Collection element, Tuple element at index 1] | test.swift:801:15:801:52 | call to updateValue(_:forKey:) [some:0] | -| test.swift:801:15:801:52 | call to updateValue(_:forKey:) [some:0] | test.swift:801:15:801:53 | ...! | -| test.swift:801:33:801:40 | call to source() | test.swift:801:15:801:15 | [post] dict4 [Collection element, Tuple element at index 1] | -| test.swift:802:15:802:15 | dict4 [Collection element, Tuple element at index 0] | test.swift:802:15:802:35 | call to randomElement() [some:0, Tuple element at index 0] | -| test.swift:802:15:802:35 | call to randomElement() [some:0, Tuple element at index 0] | test.swift:802:15:802:36 | ...! [Tuple element at index 0] | -| test.swift:802:15:802:36 | ...! [Tuple element at index 0] | test.swift:802:15:802:38 | .0 | -| test.swift:803:15:803:15 | dict4 [Collection element, Tuple element at index 1] | test.swift:803:15:803:35 | call to randomElement() [some:0, Tuple element at index 1] | -| test.swift:803:15:803:35 | call to randomElement() [some:0, Tuple element at index 1] | test.swift:803:15:803:36 | ...! [Tuple element at index 1] | -| test.swift:803:15:803:36 | ...! [Tuple element at index 1] | test.swift:803:15:803:38 | .1 | -| test.swift:809:8:809:13 | v | test.swift:810:14:810:14 | v | -| test.swift:810:5:810:5 | [post] self [v] | test.swift:809:3:811:3 | self[return] [v] | -| test.swift:810:14:810:14 | v | test.swift:810:5:810:5 | [post] self [v] | -| test.swift:813:8:813:8 | self [v] | test.swift:813:31:813:31 | self [v] | -| test.swift:813:31:813:31 | self [v] | test.swift:813:31:813:31 | .v | -| test.swift:813:31:813:31 | self [v] | test.swift:815:7:815:7 | self [v] | -| test.swift:815:7:815:7 | self [v] | file://:0:0:0:0 | self [v] | -| test.swift:815:7:815:7 | value | file://:0:0:0:0 | value | -| test.swift:819:14:819:25 | call to S3.init(_:) [v] | test.swift:822:15:822:15 | s1 [v] | -| test.swift:819:14:819:25 | call to S3.init(_:) [v] | test.swift:824:15:824:15 | s1 [v] | -| test.swift:819:17:819:24 | call to source() | test.swift:809:8:809:13 | v | -| test.swift:819:17:819:24 | call to source() | test.swift:819:14:819:25 | call to S3.init(_:) [v] | -| test.swift:822:15:822:15 | s1 [v] | test.swift:815:7:815:7 | self [v] | -| test.swift:822:15:822:15 | s1 [v] | test.swift:822:15:822:18 | .v | -| test.swift:824:15:824:15 | s1 [v] | test.swift:813:8:813:8 | self [v] | -| test.swift:824:15:824:15 | s1 [v] | test.swift:824:15:824:23 | call to getv() | -| test.swift:828:5:828:5 | [post] s2 [v] | test.swift:831:15:831:15 | s2 [v] | -| test.swift:828:5:828:5 | [post] s2 [v] | test.swift:833:15:833:15 | s2 [v] | -| test.swift:828:12:828:19 | call to source() | test.swift:815:7:815:7 | value | -| test.swift:828:12:828:19 | call to source() | test.swift:828:5:828:5 | [post] s2 [v] | -| test.swift:831:15:831:15 | s2 [v] | test.swift:815:7:815:7 | self [v] | -| test.swift:831:15:831:15 | s2 [v] | test.swift:831:15:831:18 | .v | -| test.swift:833:15:833:15 | s2 [v] | test.swift:813:8:813:8 | self [v] | -| test.swift:833:15:833:15 | s2 [v] | test.swift:833:15:833:23 | call to getv() | -| test.swift:839:11:839:17 | [post] exit #keyPath(...) | test.swift:839:17:839:17 | [post] KeyPathComponent | -| test.swift:839:15:839:15 | [post] KeyPathComponent [x] | test.swift:839:11:839:17 | [post] enter #keyPath(...) [s, x] | -| test.swift:839:17:839:17 | [post] KeyPathComponent | test.swift:839:15:839:15 | [post] KeyPathComponent [x] | -| test.swift:840:3:840:3 | [post] s2 [s, x] | test.swift:841:13:841:13 | s2 [s, x] | -| test.swift:840:3:840:16 | \\...[...] | test.swift:839:11:839:17 | [post] exit #keyPath(...) | -| test.swift:840:3:840:16 | \\...[...] | test.swift:840:3:840:3 | [post] s2 [s, x] | -| test.swift:840:20:840:27 | call to source() | test.swift:840:3:840:16 | \\...[...] | -| test.swift:841:13:841:13 | s2 [s, x] | test.swift:632:7:632:7 | self [s, x] | -| test.swift:841:13:841:13 | s2 [s, x] | test.swift:841:13:841:16 | .s [x] | -| test.swift:841:13:841:16 | .s [x] | test.swift:615:7:615:7 | self [x] | -| test.swift:841:13:841:16 | .s [x] | test.swift:841:13:841:18 | .x | -| test.swift:844:19:844:28 | args [Collection element] | test.swift:846:15:846:15 | args [Collection element] | -| test.swift:846:15:846:15 | args [Collection element] | test.swift:846:15:846:21 | ...[...] | -| test.swift:849:19:849:24 | v | test.swift:850:15:850:15 | v | -| test.swift:856:29:856:40 | args [Collection element] | test.swift:859:15:859:15 | args [Collection element] | -| test.swift:856:29:856:40 | args [Collection element] | test.swift:860:15:860:15 | args [Collection element] | -| test.swift:856:29:856:40 | args [Collection element] | test.swift:862:16:862:16 | args [Collection element] | -| test.swift:856:29:856:40 | args [Collection element] | test.swift:867:15:867:15 | args [Collection element] | -| test.swift:859:15:859:15 | args [Collection element] | test.swift:859:15:859:21 | ...[...] | -| test.swift:860:15:860:15 | args [Collection element] | test.swift:860:15:860:21 | ...[...] | -| test.swift:862:5:862:5 | $arg$generator [Collection element] | test.swift:862:5:862:5 | call to next() [some:0] | -| test.swift:862:5:862:5 | call to next() [some:0] | test.swift:862:9:862:9 | arg | -| test.swift:862:9:862:9 | arg | test.swift:863:19:863:19 | arg | -| test.swift:862:16:862:16 | args [Collection element] | test.swift:862:16:862:16 | call to makeIterator() [Collection element] | -| test.swift:862:16:862:16 | call to makeIterator() [Collection element] | test.swift:862:5:862:5 | $arg$generator [Collection element] | -| test.swift:866:21:866:29 | enter #keyPath(...) [Collection element] | test.swift:866:27:866:29 | KeyPathComponent | -| test.swift:866:27:866:29 | KeyPathComponent | test.swift:866:21:866:29 | exit #keyPath(...) | -| test.swift:867:15:867:15 | args [Collection element] | test.swift:866:21:866:29 | enter #keyPath(...) [Collection element] | -| test.swift:867:15:867:15 | args [Collection element] | test.swift:867:15:867:38 | \\...[...] | -| test.swift:871:24:871:31 | [...] [Collection element] | test.swift:844:19:844:28 | args [Collection element] | -| test.swift:871:24:871:31 | [...] [Collection element] | test.swift:871:24:871:31 | [...] [Collection element] | -| test.swift:871:24:871:31 | call to source() | test.swift:871:24:871:31 | [...] [Collection element] | -| test.swift:872:18:872:25 | call to source() | test.swift:849:19:849:24 | v | -| test.swift:873:21:873:31 | [...] [Collection element] | test.swift:856:29:856:40 | args [Collection element] | -| test.swift:873:21:873:31 | [...] [Collection element] | test.swift:873:21:873:31 | [...] [Collection element] | -| test.swift:873:24:873:31 | call to source() | test.swift:873:21:873:31 | [...] [Collection element] | -| test.swift:877:16:877:30 | call to Set.init(_:) [Collection element] | test.swift:879:17:879:17 | set1 [Collection element] | -| test.swift:877:16:877:30 | call to Set.init(_:) [Collection element] | test.swift:883:21:883:21 | set1 [Collection element] | -| test.swift:877:20:877:29 | [...] [Collection element] | test.swift:877:16:877:30 | call to Set.init(_:) [Collection element] | -| test.swift:877:21:877:28 | call to source() | test.swift:877:20:877:29 | [...] [Collection element] | -| test.swift:879:5:879:5 | $elem$generator [Collection element] | test.swift:879:5:879:5 | call to next() [some:0] | -| test.swift:879:5:879:5 | call to next() [some:0] | test.swift:879:9:879:9 | elem | -| test.swift:879:9:879:9 | elem | test.swift:880:19:880:19 | elem | -| test.swift:879:17:879:17 | call to makeIterator() [Collection element] | test.swift:879:5:879:5 | $elem$generator [Collection element] | -| test.swift:879:17:879:17 | set1 [Collection element] | test.swift:879:17:879:17 | call to makeIterator() [Collection element] | -| test.swift:883:21:883:21 | set1 [Collection element] | test.swift:883:21:883:39 | call to makeIterator() [Collection element] | -| test.swift:883:21:883:39 | call to makeIterator() [Collection element] | test.swift:884:15:884:15 | generator [Collection element] | -| test.swift:884:15:884:15 | generator [Collection element] | test.swift:884:15:884:30 | call to next() [some:0] | -| test.swift:884:15:884:30 | call to next() [some:0] | test.swift:884:15:884:31 | ...! | -| test.swift:908:19:908:26 | call to source() | test.swift:904:13:904:18 | call to ... | -| test.swift:927:12:927:31 | call to source(_:) | test.swift:927:12:927:31 | OpenExistentialExpr | -| test.swift:929:12:929:57 | call to source(_:) | test.swift:929:12:929:57 | OpenExistentialExpr | -| test.swift:937:22:937:29 | call to source() | file://:0:0:0:0 | .wrappedValue | -| test.swift:938:9:938:9 | newValue | test.swift:938:25:938:25 | newValue | -| test.swift:941:10:941:24 | wrappedValue | test.swift:942:19:942:19 | wrappedValue | -| test.swift:943:29:943:36 | call to source() | test.swift:938:9:938:9 | newValue | -| test.swift:948:33:948:33 | value | file://:0:0:0:0 | value | -| test.swift:948:42:948:49 | call to source() | test.swift:941:10:941:24 | wrappedValue | -| test.swift:950:9:950:16 | call to source() | test.swift:948:33:948:33 | value | -| test.swift:957:9:957:9 | value | file://:0:0:0:0 | value | -| test.swift:958:9:958:9 | self [wrappedValue] | test.swift:959:23:959:23 | self [wrappedValue] | -| test.swift:959:23:959:23 | self [wrappedValue] | test.swift:959:23:959:23 | .wrappedValue | -| test.swift:965:9:965:9 | newValue | test.swift:967:28:967:28 | newValue | -| test.swift:967:28:967:28 | newValue | test.swift:957:9:957:9 | value | -| test.swift:971:10:971:24 | wrappedValue | test.swift:972:19:972:19 | wrappedValue | -| test.swift:978:34:978:34 | value | file://:0:0:0:0 | value | -| test.swift:980:9:980:16 | call to source() | test.swift:978:34:978:34 | value | -| test.swift:983:38:983:45 | call to source() | test.swift:971:10:971:24 | wrappedValue | -| test.swift:988:34:988:34 | value | file://:0:0:0:0 | value | -| test.swift:991:10:991:17 | call to source() | test.swift:988:34:988:34 | value | +| file://:0:0:0:0 | .wrappedValue | test.swift:949:15:949:15 | x | provenance | | +| file://:0:0:0:0 | .wrappedValue | test.swift:951:15:951:15 | x | provenance | | +| file://:0:0:0:0 | KeyPathComponent [some:0] | test.swift:663:13:663:29 | exit #keyPath(...) [some:0] | provenance | | +| file://:0:0:0:0 | [post] self [wrappedValue] | file://:0:0:0:0 | self [wrappedValue] | provenance | | +| file://:0:0:0:0 | self [a, x] | file://:0:0:0:0 | .a [x] | provenance | | +| file://:0:0:0:0 | self [s, x] | file://:0:0:0:0 | .s [x] | provenance | | +| file://:0:0:0:0 | self [str] | file://:0:0:0:0 | .str | provenance | | +| file://:0:0:0:0 | self [v2, some:0] | file://:0:0:0:0 | .v2 [some:0] | provenance | | +| file://:0:0:0:0 | self [v2] | file://:0:0:0:0 | .v2 | provenance | | +| file://:0:0:0:0 | self [v3] | file://:0:0:0:0 | .v3 | provenance | | +| file://:0:0:0:0 | self [v] | file://:0:0:0:0 | .v | provenance | | +| file://:0:0:0:0 | self [wrappedValue] | test.swift:958:9:958:9 | self [wrappedValue] | provenance | | +| file://:0:0:0:0 | self [x, some:0] | file://:0:0:0:0 | .x [some:0] | provenance | | +| file://:0:0:0:0 | self [x] | file://:0:0:0:0 | .x | provenance | | +| file://:0:0:0:0 | self [x] | file://:0:0:0:0 | .x | provenance | | +| file://:0:0:0:0 | self [x] | file://:0:0:0:0 | .x | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [v2] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [v3] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [v] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [wrappedValue] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [x] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [x] | provenance | | +| file://:0:0:0:0 | value | test.swift:938:9:938:9 | newValue | provenance | | +| file://:0:0:0:0 | value | test.swift:957:9:957:9 | value | provenance | | +| file://:0:0:0:0 | value | test.swift:965:9:965:9 | newValue | provenance | | +| file://:0:0:0:0 | value [some:0] | file://:0:0:0:0 | [post] self [v2, some:0] | provenance | | +| file://:0:0:0:0 | value [some:0] | file://:0:0:0:0 | [post] self [x, some:0] | provenance | | +| test.swift:6:19:6:26 | call to source() | test.swift:7:15:7:15 | t1 | provenance | | +| test.swift:6:19:6:26 | call to source() | test.swift:9:15:9:15 | t1 | provenance | | +| test.swift:6:19:6:26 | call to source() | test.swift:10:15:10:15 | t2 | provenance | | +| test.swift:25:20:25:27 | call to source() | test.swift:29:18:29:21 | x | provenance | | +| test.swift:26:26:26:33 | call to source() | test.swift:29:26:29:29 | y | provenance | | +| test.swift:29:18:29:21 | x | test.swift:30:15:30:15 | x | provenance | | +| test.swift:29:26:29:29 | y | test.swift:31:15:31:15 | y | provenance | | +| test.swift:35:12:35:19 | call to source() | test.swift:39:15:39:29 | call to callee_source() | provenance | | +| test.swift:43:19:43:26 | call to source() | test.swift:50:15:50:15 | t | provenance | | +| test.swift:53:1:56:1 | arg[return] | test.swift:61:23:61:23 | [post] x | provenance | | +| test.swift:54:11:54:18 | call to source() | test.swift:53:1:56:1 | arg[return] | provenance | | +| test.swift:61:23:61:23 | [post] x | test.swift:62:15:62:15 | x | provenance | | +| test.swift:65:16:65:28 | arg1 | test.swift:65:1:70:1 | arg2[return] | provenance | | +| test.swift:73:18:73:25 | call to source() | test.swift:75:22:75:22 | x | provenance | | +| test.swift:73:18:73:25 | call to source() | test.swift:76:15:76:15 | x | provenance | | +| test.swift:75:22:75:22 | x | test.swift:65:16:65:28 | arg1 | provenance | | +| test.swift:75:22:75:22 | x | test.swift:75:32:75:32 | [post] y | provenance | | +| test.swift:75:32:75:32 | [post] y | test.swift:77:15:77:15 | y | provenance | | +| test.swift:80:1:82:1 | arg[return] | test.swift:97:40:97:40 | [post] x | provenance | | +| test.swift:81:11:81:18 | call to source() | test.swift:80:1:82:1 | arg[return] | provenance | | +| test.swift:84:1:91:1 | arg[return] | test.swift:104:41:104:41 | [post] x | provenance | | +| test.swift:86:15:86:22 | call to source() | test.swift:84:1:91:1 | arg[return] | provenance | | +| test.swift:89:15:89:22 | call to source() | test.swift:84:1:91:1 | arg[return] | provenance | | +| test.swift:97:40:97:40 | [post] x | test.swift:98:19:98:19 | x | provenance | | +| test.swift:104:41:104:41 | [post] x | test.swift:105:19:105:19 | x | provenance | | +| test.swift:109:9:109:14 | arg | test.swift:110:12:110:12 | arg | provenance | | +| test.swift:113:14:113:19 | arg | test.swift:114:19:114:19 | arg | provenance | | +| test.swift:113:14:113:19 | arg | test.swift:114:19:114:19 | arg | provenance | | +| test.swift:114:19:114:19 | arg | test.swift:109:9:109:14 | arg | provenance | | +| test.swift:114:19:114:19 | arg | test.swift:114:12:114:22 | call to ... | provenance | | +| test.swift:114:19:114:19 | arg | test.swift:114:12:114:22 | call to ... | provenance | | +| test.swift:114:19:114:19 | arg | test.swift:123:10:123:13 | i | provenance | | +| test.swift:118:18:118:25 | call to source() | test.swift:119:31:119:31 | x | provenance | | +| test.swift:119:18:119:44 | call to forward(arg:lambda:) | test.swift:120:15:120:15 | y | provenance | | +| test.swift:119:31:119:31 | x | test.swift:113:14:113:19 | arg | provenance | | +| test.swift:119:31:119:31 | x | test.swift:119:18:119:44 | call to forward(arg:lambda:) | provenance | | +| test.swift:122:18:125:6 | call to forward(arg:lambda:) | test.swift:126:15:126:15 | z | provenance | | +| test.swift:122:31:122:38 | call to source() | test.swift:113:14:113:19 | arg | provenance | | +| test.swift:122:31:122:38 | call to source() | test.swift:122:18:125:6 | call to forward(arg:lambda:) | provenance | | +| test.swift:123:10:123:13 | i | test.swift:124:16:124:16 | i | provenance | | +| test.swift:142:10:142:13 | i | test.swift:143:16:143:16 | i | provenance | | +| test.swift:145:23:145:30 | call to source() | test.swift:142:10:142:13 | i | provenance | | +| test.swift:145:23:145:30 | call to source() | test.swift:145:15:145:31 | call to ... | provenance | | +| test.swift:149:16:149:23 | call to source() | test.swift:151:15:151:28 | call to ... | provenance | | +| test.swift:149:16:149:23 | call to source() | test.swift:159:16:159:29 | call to ... | provenance | | +| test.swift:154:10:154:13 | i | test.swift:155:19:155:19 | i | provenance | | +| test.swift:157:16:157:23 | call to source() | test.swift:154:10:154:13 | i | provenance | | +| test.swift:159:16:159:29 | call to ... | test.swift:154:10:154:13 | i | provenance | | +| test.swift:163:7:163:7 | self [x] | file://:0:0:0:0 | self [x] | provenance | | +| test.swift:163:7:163:7 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:169:12:169:22 | value | test.swift:170:9:170:9 | value | provenance | | +| test.swift:170:5:170:5 | [post] self [x] | test.swift:169:3:171:3 | self[return] [x] | provenance | | +| test.swift:170:9:170:9 | value | test.swift:163:7:163:7 | value | provenance | | +| test.swift:170:9:170:9 | value | test.swift:170:5:170:5 | [post] self [x] | provenance | | +| test.swift:173:8:173:8 | self [x] | test.swift:174:12:174:12 | self [x] | provenance | | +| test.swift:174:12:174:12 | self [x] | test.swift:163:7:163:7 | self [x] | provenance | | +| test.swift:174:12:174:12 | self [x] | test.swift:174:12:174:12 | .x | provenance | | +| test.swift:180:3:180:3 | [post] a [x] | test.swift:181:13:181:13 | a [x] | provenance | | +| test.swift:180:9:180:16 | call to source() | test.swift:163:7:163:7 | value | provenance | | +| test.swift:180:9:180:16 | call to source() | test.swift:180:3:180:3 | [post] a [x] | provenance | | +| test.swift:181:13:181:13 | a [x] | test.swift:163:7:163:7 | self [x] | provenance | | +| test.swift:181:13:181:13 | a [x] | test.swift:181:13:181:15 | .x | provenance | | +| test.swift:185:7:185:7 | self [a, x] | file://:0:0:0:0 | self [a, x] | provenance | | +| test.swift:194:3:194:3 | [post] b [a, x] | test.swift:195:13:195:13 | b [a, x] | provenance | | +| test.swift:194:3:194:5 | [post] getter for .a [x] | test.swift:194:3:194:3 | [post] b [a, x] | provenance | | +| test.swift:194:11:194:18 | call to source() | test.swift:163:7:163:7 | value | provenance | | +| test.swift:194:11:194:18 | call to source() | test.swift:194:3:194:5 | [post] getter for .a [x] | provenance | | +| test.swift:195:13:195:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | provenance | | +| test.swift:195:13:195:13 | b [a, x] | test.swift:195:13:195:15 | .a [x] | provenance | | +| test.swift:195:13:195:15 | .a [x] | test.swift:163:7:163:7 | self [x] | provenance | | +| test.swift:195:13:195:15 | .a [x] | test.swift:195:13:195:17 | .x | provenance | | +| test.swift:200:3:200:3 | [post] a [x] | test.swift:201:13:201:13 | a [x] | provenance | | +| test.swift:200:9:200:16 | call to source() | test.swift:169:12:169:22 | value | provenance | | +| test.swift:200:9:200:16 | call to source() | test.swift:200:3:200:3 | [post] a [x] | provenance | | +| test.swift:201:13:201:13 | a [x] | test.swift:163:7:163:7 | self [x] | provenance | | +| test.swift:201:13:201:13 | a [x] | test.swift:201:13:201:15 | .x | provenance | | +| test.swift:206:3:206:3 | [post] a [x] | test.swift:207:13:207:13 | a [x] | provenance | | +| test.swift:206:9:206:16 | call to source() | test.swift:163:7:163:7 | value | provenance | | +| test.swift:206:9:206:16 | call to source() | test.swift:206:3:206:3 | [post] a [x] | provenance | | +| test.swift:207:13:207:13 | a [x] | test.swift:173:8:173:8 | self [x] | provenance | | +| test.swift:207:13:207:13 | a [x] | test.swift:207:13:207:19 | call to get() | provenance | | +| test.swift:212:3:212:3 | [post] a [x] | test.swift:213:13:213:13 | a [x] | provenance | | +| test.swift:212:9:212:16 | call to source() | test.swift:169:12:169:22 | value | provenance | | +| test.swift:212:9:212:16 | call to source() | test.swift:212:3:212:3 | [post] a [x] | provenance | | +| test.swift:213:13:213:13 | a [x] | test.swift:173:8:173:8 | self [x] | provenance | | +| test.swift:213:13:213:13 | a [x] | test.swift:213:13:213:19 | call to get() | provenance | | +| test.swift:218:3:218:3 | [post] b [a, x] | test.swift:219:13:219:13 | b [a, x] | provenance | | +| test.swift:218:3:218:5 | [post] getter for .a [x] | test.swift:218:3:218:3 | [post] b [a, x] | provenance | | +| test.swift:218:11:218:18 | call to source() | test.swift:169:12:169:22 | value | provenance | | +| test.swift:218:11:218:18 | call to source() | test.swift:218:3:218:5 | [post] getter for .a [x] | provenance | | +| test.swift:219:13:219:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | provenance | | +| test.swift:219:13:219:13 | b [a, x] | test.swift:219:13:219:15 | .a [x] | provenance | | +| test.swift:219:13:219:15 | .a [x] | test.swift:163:7:163:7 | self [x] | provenance | | +| test.swift:219:13:219:15 | .a [x] | test.swift:219:13:219:17 | .x | provenance | | +| test.swift:225:14:225:21 | call to source() | test.swift:235:13:235:15 | .source_value | provenance | | +| test.swift:225:14:225:21 | call to source() | test.swift:238:13:238:15 | .source_value | provenance | | +| test.swift:259:12:259:19 | call to source() | test.swift:259:12:259:19 | call to source() [some:0] | provenance | | +| test.swift:259:12:259:19 | call to source() | test.swift:263:13:263:28 | call to optionalSource() | provenance | | +| test.swift:259:12:259:19 | call to source() | test.swift:536:13:536:28 | call to optionalSource() | provenance | | +| test.swift:259:12:259:19 | call to source() | test.swift:563:13:563:28 | call to optionalSource() | provenance | | +| test.swift:259:12:259:19 | call to source() [some:0] | test.swift:263:13:263:28 | call to optionalSource() [some:0] | provenance | | +| test.swift:259:12:259:19 | call to source() [some:0] | test.swift:536:13:536:28 | call to optionalSource() [some:0] | provenance | | +| test.swift:259:12:259:19 | call to source() [some:0] | test.swift:563:13:563:28 | call to optionalSource() [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:265:15:265:15 | x | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:267:15:267:16 | ...! | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:271:15:271:16 | ...? | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:274:15:274:20 | ... ??(_:_:) ... | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:275:15:275:27 | ... ??(_:_:) ... | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:279:15:279:31 | ... ? ... : ... | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:280:15:280:38 | ... ? ... : ... | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:285:19:285:19 | z | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:291:16:291:17 | ...? | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:300:15:300:15 | z1 | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() | test.swift:303:15:303:16 | ...! | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:267:15:267:15 | x [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:279:26:279:26 | x [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:280:26:280:26 | x [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:284:8:284:12 | let ...? [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:291:16:291:17 | ...? [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:298:11:298:15 | let ...? [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:303:15:303:15 | x [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:306:13:306:24 | .some(...) [some:0] | provenance | | +| test.swift:263:13:263:28 | call to optionalSource() [some:0] | test.swift:314:10:314:21 | .some(...) [some:0] | provenance | | +| test.swift:267:15:267:15 | x [some:0] | test.swift:267:15:267:16 | ...! | provenance | | +| test.swift:270:15:270:22 | call to source() | test.swift:270:15:270:31 | call to signum() | provenance | | +| test.swift:271:15:271:16 | ...? | test.swift:271:15:271:25 | call to signum() | provenance | | +| test.swift:271:15:271:25 | call to signum() | test.swift:271:15:271:25 | OptionalEvaluationExpr | provenance | | +| test.swift:275:20:275:27 | call to source() | test.swift:275:15:275:27 | ... ??(_:_:) ... | provenance | | +| test.swift:277:20:277:27 | call to source() | test.swift:277:15:277:27 | ... ??(_:_:) ... | provenance | | +| test.swift:279:26:279:26 | x [some:0] | test.swift:279:26:279:27 | ...! | provenance | | +| test.swift:279:26:279:27 | ...! | test.swift:279:15:279:31 | ... ? ... : ... | provenance | | +| test.swift:280:26:280:26 | x [some:0] | test.swift:280:26:280:27 | ...! | provenance | | +| test.swift:280:26:280:27 | ...! | test.swift:280:15:280:38 | ... ? ... : ... | provenance | | +| test.swift:280:31:280:38 | call to source() | test.swift:280:15:280:38 | ... ? ... : ... | provenance | | +| test.swift:282:31:282:38 | call to source() | test.swift:282:15:282:38 | ... ? ... : ... | provenance | | +| test.swift:284:8:284:12 | let ...? [some:0] | test.swift:284:12:284:12 | z | provenance | | +| test.swift:284:12:284:12 | z | test.swift:285:19:285:19 | z | provenance | | +| test.swift:291:8:291:12 | let ...? [some:0] | test.swift:291:12:291:12 | z | provenance | | +| test.swift:291:12:291:12 | z | test.swift:292:19:292:19 | z | provenance | | +| test.swift:291:16:291:17 | ...? | test.swift:291:16:291:26 | call to signum() | provenance | | +| test.swift:291:16:291:17 | ...? [some:0] | test.swift:291:16:291:26 | call to signum() [some:0] | provenance | | +| test.swift:291:16:291:26 | call to signum() | test.swift:291:16:291:26 | call to signum() [some:0] | provenance | | +| test.swift:291:16:291:26 | call to signum() | test.swift:292:19:292:19 | z | provenance | | +| test.swift:291:16:291:26 | call to signum() [some:0] | test.swift:291:8:291:12 | let ...? [some:0] | provenance | | +| test.swift:298:11:298:15 | let ...? [some:0] | test.swift:298:15:298:15 | z1 | provenance | | +| test.swift:298:15:298:15 | z1 | test.swift:300:15:300:15 | z1 | provenance | | +| test.swift:303:15:303:15 | x [some:0] | test.swift:303:15:303:16 | ...! | provenance | | +| test.swift:303:15:303:16 | ...! | test.swift:303:15:303:25 | call to signum() | provenance | | +| test.swift:306:13:306:24 | .some(...) [some:0] | test.swift:306:23:306:23 | z | provenance | | +| test.swift:306:23:306:23 | z | test.swift:307:19:307:19 | z | provenance | | +| test.swift:314:10:314:21 | .some(...) [some:0] | test.swift:314:20:314:20 | z | provenance | | +| test.swift:314:20:314:20 | z | test.swift:315:19:315:19 | z | provenance | | +| test.swift:331:14:331:26 | (...) [Tuple element at index 1] | test.swift:335:15:335:15 | t1 [Tuple element at index 1] | provenance | | +| test.swift:331:18:331:25 | call to source() | test.swift:331:14:331:26 | (...) [Tuple element at index 1] | provenance | | +| test.swift:335:15:335:15 | t1 [Tuple element at index 1] | test.swift:335:15:335:18 | .1 | provenance | | +| test.swift:343:5:343:5 | [post] t1 [Tuple element at index 0] | test.swift:346:15:346:15 | t1 [Tuple element at index 0] | provenance | | +| test.swift:343:12:343:19 | call to source() | test.swift:343:5:343:5 | [post] t1 [Tuple element at index 0] | provenance | | +| test.swift:346:15:346:15 | t1 [Tuple element at index 0] | test.swift:346:15:346:18 | .0 | provenance | | +| test.swift:351:14:351:45 | (...) [Tuple element at index 0] | test.swift:353:9:353:17 | (...) [Tuple element at index 0] | provenance | | +| test.swift:351:14:351:45 | (...) [Tuple element at index 0] | test.swift:356:15:356:15 | t1 [Tuple element at index 0] | provenance | | +| test.swift:351:14:351:45 | (...) [Tuple element at index 0] | test.swift:360:15:360:15 | t2 [Tuple element at index 0] | provenance | | +| test.swift:351:14:351:45 | (...) [Tuple element at index 1] | test.swift:353:9:353:17 | (...) [Tuple element at index 1] | provenance | | +| test.swift:351:14:351:45 | (...) [Tuple element at index 1] | test.swift:357:15:357:15 | t1 [Tuple element at index 1] | provenance | | +| test.swift:351:14:351:45 | (...) [Tuple element at index 1] | test.swift:361:15:361:15 | t2 [Tuple element at index 1] | provenance | | +| test.swift:351:18:351:25 | call to source() | test.swift:351:14:351:45 | (...) [Tuple element at index 0] | provenance | | +| test.swift:351:31:351:38 | call to source() | test.swift:351:14:351:45 | (...) [Tuple element at index 1] | provenance | | +| test.swift:353:9:353:17 | (...) [Tuple element at index 0] | test.swift:353:10:353:10 | a | provenance | | +| test.swift:353:9:353:17 | (...) [Tuple element at index 1] | test.swift:353:13:353:13 | b | provenance | | +| test.swift:353:10:353:10 | a | test.swift:363:15:363:15 | a | provenance | | +| test.swift:353:13:353:13 | b | test.swift:364:15:364:15 | b | provenance | | +| test.swift:356:15:356:15 | t1 [Tuple element at index 0] | test.swift:356:15:356:18 | .0 | provenance | | +| test.swift:357:15:357:15 | t1 [Tuple element at index 1] | test.swift:357:15:357:18 | .1 | provenance | | +| test.swift:360:15:360:15 | t2 [Tuple element at index 0] | test.swift:360:15:360:18 | .0 | provenance | | +| test.swift:361:15:361:15 | t2 [Tuple element at index 1] | test.swift:361:15:361:18 | .1 | provenance | | +| test.swift:368:22:368:36 | t [Tuple element at index 1] | test.swift:369:13:369:13 | t [Tuple element at index 1] | provenance | | +| test.swift:369:13:369:13 | t [Tuple element at index 1] | test.swift:369:13:369:15 | .1 | provenance | | +| test.swift:369:13:369:15 | .1 | test.swift:369:12:369:19 | (...) [Tuple element at index 0] | provenance | | +| test.swift:375:14:375:26 | (...) [Tuple element at index 1] | test.swift:376:30:376:30 | t1 [Tuple element at index 1] | provenance | | +| test.swift:375:14:375:26 | (...) [Tuple element at index 1] | test.swift:377:30:377:30 | t1 [Tuple element at index 1] | provenance | | +| test.swift:375:14:375:26 | (...) [Tuple element at index 1] | test.swift:380:15:380:15 | t1 [Tuple element at index 1] | provenance | | +| test.swift:375:18:375:25 | call to source() | test.swift:375:14:375:26 | (...) [Tuple element at index 1] | provenance | | +| test.swift:376:14:376:32 | call to tupleShiftLeft1(_:) [Tuple element at index 0] | test.swift:381:15:381:15 | t2 [Tuple element at index 0] | provenance | | +| test.swift:376:30:376:30 | t1 [Tuple element at index 1] | test.swift:368:22:368:36 | t [Tuple element at index 1] | provenance | | +| test.swift:376:30:376:30 | t1 [Tuple element at index 1] | test.swift:376:14:376:32 | call to tupleShiftLeft1(_:) [Tuple element at index 0] | provenance | | +| test.swift:377:14:377:32 | call to tupleShiftLeft2(_:) [Tuple element at index 0] | test.swift:383:15:383:15 | t3 [Tuple element at index 0] | provenance | | +| test.swift:377:30:377:30 | t1 [Tuple element at index 1] | test.swift:377:14:377:32 | call to tupleShiftLeft2(_:) [Tuple element at index 0] | provenance | | +| test.swift:380:15:380:15 | t1 [Tuple element at index 1] | test.swift:380:15:380:18 | .1 | provenance | | +| test.swift:381:15:381:15 | t2 [Tuple element at index 0] | test.swift:381:15:381:18 | .0 | provenance | | +| test.swift:383:15:383:15 | t3 [Tuple element at index 0] | test.swift:383:15:383:18 | .0 | provenance | | +| test.swift:394:16:394:21 | v | test.swift:394:61:394:61 | v | provenance | | +| test.swift:394:61:394:61 | v | test.swift:394:45:394:62 | call to ... [mySingle:0] | provenance | | +| test.swift:396:18:396:23 | v | test.swift:396:59:396:59 | v | provenance | | +| test.swift:396:59:396:59 | v | test.swift:396:45:396:60 | call to ... [some:0] | provenance | | +| test.swift:422:9:422:27 | call to ... [mySingle:0] | test.swift:427:10:427:25 | .mySingle(...) [mySingle:0] | provenance | | +| test.swift:422:9:422:27 | call to ... [mySingle:0] | test.swift:436:13:436:28 | .mySingle(...) [mySingle:0] | provenance | | +| test.swift:422:19:422:26 | call to source() | test.swift:422:9:422:27 | call to ... [mySingle:0] | provenance | | +| test.swift:427:10:427:25 | .mySingle(...) [mySingle:0] | test.swift:427:24:427:24 | a | provenance | | +| test.swift:427:24:427:24 | a | test.swift:428:19:428:19 | a | provenance | | +| test.swift:436:13:436:28 | .mySingle(...) [mySingle:0] | test.swift:436:27:436:27 | x | provenance | | +| test.swift:436:27:436:27 | x | test.swift:437:19:437:19 | x | provenance | | +| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:451:10:451:30 | .myPair(...) [myPair:1] | provenance | | +| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:461:13:461:33 | .myPair(...) [myPair:1] | provenance | | +| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:466:33:466:33 | a [myPair:1] | provenance | | +| test.swift:444:9:444:34 | call to ... [myPair:1] | test.swift:495:13:495:13 | a [myPair:1] | provenance | | +| test.swift:444:26:444:33 | call to source() | test.swift:444:9:444:34 | call to ... [myPair:1] | provenance | | +| test.swift:451:10:451:30 | .myPair(...) [myPair:1] | test.swift:451:29:451:29 | b | provenance | | +| test.swift:451:29:451:29 | b | test.swift:453:19:453:19 | b | provenance | | +| test.swift:461:13:461:33 | .myPair(...) [myPair:1] | test.swift:461:32:461:32 | y | provenance | | +| test.swift:461:32:461:32 | y | test.swift:463:19:463:19 | y | provenance | | +| test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | test.swift:476:14:476:38 | .myCons(...) [myCons:1, myPair:1] | provenance | | +| test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | test.swift:491:17:491:41 | .myCons(...) [myCons:1, myPair:1] | provenance | | +| test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | test.swift:495:16:495:16 | b [myCons:1, myPair:1] | provenance | | +| test.swift:466:33:466:33 | a [myPair:1] | test.swift:466:21:466:34 | call to ... [myCons:1, myPair:1] | provenance | | +| test.swift:476:14:476:38 | .myCons(...) [myCons:1, myPair:1] | test.swift:476:25:476:37 | .myPair(...) [myPair:1] | provenance | | +| test.swift:476:25:476:37 | .myPair(...) [myPair:1] | test.swift:476:36:476:36 | c | provenance | | +| test.swift:476:36:476:36 | c | test.swift:479:19:479:19 | c | provenance | | +| test.swift:487:13:487:39 | .myPair(...) [myPair:0] | test.swift:487:31:487:31 | x | provenance | | +| test.swift:487:31:487:31 | x | test.swift:488:19:488:19 | x | provenance | | +| test.swift:487:43:487:62 | call to ... [myPair:0] | test.swift:487:13:487:39 | .myPair(...) [myPair:0] | provenance | | +| test.swift:487:51:487:58 | call to source() | test.swift:487:43:487:62 | call to ... [myPair:0] | provenance | | +| test.swift:491:17:491:41 | .myCons(...) [myCons:1, myPair:1] | test.swift:491:28:491:40 | .myPair(...) [myPair:1] | provenance | | +| test.swift:491:28:491:40 | .myPair(...) [myPair:1] | test.swift:491:39:491:39 | c | provenance | | +| test.swift:491:39:491:39 | c | test.swift:492:19:492:19 | c | provenance | | +| test.swift:495:12:495:17 | (...) [Tuple element at index 0, myPair:1] | test.swift:496:14:496:55 | (...) [Tuple element at index 0, myPair:1] | provenance | | +| test.swift:495:12:495:17 | (...) [Tuple element at index 1, myCons:1, myPair:1] | test.swift:496:14:496:55 | (...) [Tuple element at index 1, myCons:1, myPair:1] | provenance | | +| test.swift:495:13:495:13 | a [myPair:1] | test.swift:495:12:495:17 | (...) [Tuple element at index 0, myPair:1] | provenance | | +| test.swift:495:16:495:16 | b [myCons:1, myPair:1] | test.swift:495:12:495:17 | (...) [Tuple element at index 1, myCons:1, myPair:1] | provenance | | +| test.swift:496:14:496:55 | (...) [Tuple element at index 0, myPair:1] | test.swift:496:15:496:27 | .myPair(...) [myPair:1] | provenance | | +| test.swift:496:14:496:55 | (...) [Tuple element at index 1, myCons:1, myPair:1] | test.swift:496:30:496:54 | .myCons(...) [myCons:1, myPair:1] | provenance | | +| test.swift:496:15:496:27 | .myPair(...) [myPair:1] | test.swift:496:26:496:26 | b | provenance | | +| test.swift:496:26:496:26 | b | test.swift:498:19:498:19 | b | provenance | | +| test.swift:496:30:496:54 | .myCons(...) [myCons:1, myPair:1] | test.swift:496:41:496:53 | .myPair(...) [myPair:1] | provenance | | +| test.swift:496:41:496:53 | .myPair(...) [myPair:1] | test.swift:496:52:496:52 | e | provenance | | +| test.swift:496:52:496:52 | e | test.swift:501:19:501:19 | e | provenance | | +| test.swift:507:14:507:38 | call to ... [mySingle:0] | test.swift:513:13:513:35 | .mySingle(...) [mySingle:0] | provenance | | +| test.swift:507:30:507:37 | call to source() | test.swift:507:14:507:38 | call to ... [mySingle:0] | provenance | | +| test.swift:509:14:509:32 | call to mkMyEnum1(_:) [mySingle:0] | test.swift:515:13:515:35 | .mySingle(...) [mySingle:0] | provenance | | +| test.swift:509:24:509:31 | call to source() | test.swift:394:16:394:21 | v | provenance | | +| test.swift:509:24:509:31 | call to source() | test.swift:509:14:509:32 | call to mkMyEnum1(_:) [mySingle:0] | provenance | | +| test.swift:511:14:511:32 | call to mkMyEnum2(_:) [mySingle:0] | test.swift:517:13:517:35 | .mySingle(...) [mySingle:0] | provenance | | +| test.swift:511:24:511:31 | call to source() | test.swift:511:14:511:32 | call to mkMyEnum2(_:) [mySingle:0] | provenance | | +| test.swift:513:13:513:35 | .mySingle(...) [mySingle:0] | test.swift:513:33:513:33 | d2 | provenance | | +| test.swift:513:33:513:33 | d2 | test.swift:513:54:513:54 | d2 | provenance | | +| test.swift:515:13:515:35 | .mySingle(...) [mySingle:0] | test.swift:515:33:515:33 | d4 | provenance | | +| test.swift:515:33:515:33 | d4 | test.swift:515:54:515:54 | d4 | provenance | | +| test.swift:517:13:517:35 | .mySingle(...) [mySingle:0] | test.swift:517:33:517:33 | d6 | provenance | | +| test.swift:517:33:517:33 | d6 | test.swift:517:54:517:54 | d6 | provenance | | +| test.swift:520:14:520:36 | call to ... [some:0] | test.swift:526:15:526:15 | e2 [some:0] | provenance | | +| test.swift:520:28:520:35 | call to source() | test.swift:520:14:520:36 | call to ... [some:0] | provenance | | +| test.swift:522:14:522:34 | call to mkOptional1(_:) [some:0] | test.swift:528:15:528:15 | e4 [some:0] | provenance | | +| test.swift:522:26:522:33 | call to source() | test.swift:396:18:396:23 | v | provenance | | +| test.swift:522:26:522:33 | call to source() | test.swift:522:14:522:34 | call to mkOptional1(_:) [some:0] | provenance | | +| test.swift:524:14:524:34 | call to mkOptional2(_:) [some:0] | test.swift:530:15:530:15 | e6 [some:0] | provenance | | +| test.swift:524:26:524:33 | call to source() | test.swift:524:14:524:34 | call to mkOptional2(_:) [some:0] | provenance | | +| test.swift:526:15:526:15 | e2 [some:0] | test.swift:526:15:526:17 | ...! | provenance | | +| test.swift:528:15:528:15 | e4 [some:0] | test.swift:528:15:528:17 | ...! | provenance | | +| test.swift:530:15:530:15 | e6 [some:0] | test.swift:530:15:530:17 | ...! | provenance | | +| test.swift:536:13:536:28 | call to optionalSource() | test.swift:539:19:539:19 | a | provenance | | +| test.swift:536:13:536:28 | call to optionalSource() [some:0] | test.swift:538:8:538:12 | let ...? [some:0] | provenance | | +| test.swift:536:13:536:28 | call to optionalSource() [some:0] | test.swift:543:19:543:19 | x [some:0] | provenance | | +| test.swift:538:8:538:12 | let ...? [some:0] | test.swift:538:12:538:12 | a | provenance | | +| test.swift:538:12:538:12 | a | test.swift:539:19:539:19 | a | provenance | | +| test.swift:543:18:543:23 | (...) [Tuple element at index 0, some:0] | test.swift:545:10:545:37 | (...) [Tuple element at index 0, some:0] | provenance | | +| test.swift:543:19:543:19 | x [some:0] | test.swift:543:18:543:23 | (...) [Tuple element at index 0, some:0] | provenance | | +| test.swift:545:10:545:37 | (...) [Tuple element at index 0, some:0] | test.swift:545:11:545:22 | .some(...) [some:0] | provenance | | +| test.swift:545:11:545:22 | .some(...) [some:0] | test.swift:545:21:545:21 | a | provenance | | +| test.swift:545:21:545:21 | a | test.swift:546:19:546:19 | a | provenance | | +| test.swift:559:9:559:9 | self [x, some:0] | file://:0:0:0:0 | self [x, some:0] | provenance | | +| test.swift:559:9:559:9 | self [x] | file://:0:0:0:0 | self [x] | provenance | | +| test.swift:559:9:559:9 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:559:9:559:9 | value [some:0] | file://:0:0:0:0 | value [some:0] | provenance | | +| test.swift:563:13:563:28 | call to optionalSource() | test.swift:565:12:565:12 | x | provenance | | +| test.swift:563:13:563:28 | call to optionalSource() [some:0] | test.swift:565:12:565:12 | x [some:0] | provenance | | +| test.swift:565:5:565:5 | [post] cx [x, some:0] | test.swift:569:20:569:20 | cx [x, some:0] | provenance | | +| test.swift:565:5:565:5 | [post] cx [x] | test.swift:569:20:569:20 | cx [x] | provenance | | +| test.swift:565:12:565:12 | x | test.swift:559:9:559:9 | value | provenance | | +| test.swift:565:12:565:12 | x | test.swift:565:5:565:5 | [post] cx [x] | provenance | | +| test.swift:565:12:565:12 | x [some:0] | test.swift:559:9:559:9 | value [some:0] | provenance | | +| test.swift:565:12:565:12 | x [some:0] | test.swift:565:5:565:5 | [post] cx [x, some:0] | provenance | | +| test.swift:569:11:569:15 | let ...? [some:0] | test.swift:569:15:569:15 | z1 | provenance | | +| test.swift:569:15:569:15 | z1 | test.swift:570:15:570:15 | z1 | provenance | | +| test.swift:569:20:569:20 | cx [x, some:0] | test.swift:559:9:559:9 | self [x, some:0] | provenance | | +| test.swift:569:20:569:20 | cx [x, some:0] | test.swift:569:20:569:23 | .x [some:0] | provenance | | +| test.swift:569:20:569:20 | cx [x] | test.swift:559:9:559:9 | self [x] | provenance | | +| test.swift:569:20:569:20 | cx [x] | test.swift:569:20:569:23 | .x | provenance | | +| test.swift:569:20:569:23 | .x | test.swift:570:15:570:15 | z1 | provenance | | +| test.swift:569:20:569:23 | .x [some:0] | test.swift:569:11:569:15 | let ...? [some:0] | provenance | | +| test.swift:576:14:576:21 | call to source() | test.swift:576:13:576:21 | call to +(_:) | provenance | | +| test.swift:585:9:585:9 | self [str] | file://:0:0:0:0 | self [str] | provenance | | +| test.swift:586:10:586:13 | s | test.swift:587:13:587:13 | s | provenance | | +| test.swift:587:7:587:7 | [post] self [str] | test.swift:586:5:588:5 | self[return] [str] | provenance | | +| test.swift:587:13:587:13 | s | test.swift:587:7:587:7 | [post] self [str] | provenance | | +| test.swift:592:17:595:5 | self[return] [str] | test.swift:600:13:600:41 | call to MyClass.init(contentsOfFile:) [str] | provenance | | +| test.swift:593:7:593:7 | [post] self [str] | test.swift:592:17:595:5 | self[return] [str] | provenance | | +| test.swift:593:7:593:7 | [post] self [str] | test.swift:594:17:594:17 | self [str] | provenance | | +| test.swift:593:20:593:28 | call to source3() | test.swift:586:10:586:13 | s | provenance | | +| test.swift:593:20:593:28 | call to source3() | test.swift:593:7:593:7 | [post] self [str] | provenance | | +| test.swift:594:17:594:17 | self [str] | test.swift:594:17:594:17 | .str | provenance | | +| test.swift:599:13:599:33 | call to MyClass.init(s:) [str] | test.swift:585:9:585:9 | self [str] | provenance | | +| test.swift:599:13:599:33 | call to MyClass.init(s:) [str] | test.swift:599:13:599:35 | .str | provenance | | +| test.swift:599:24:599:32 | call to source3() | test.swift:586:10:586:13 | s | provenance | | +| test.swift:599:24:599:32 | call to source3() | test.swift:599:13:599:33 | call to MyClass.init(s:) [str] | provenance | | +| test.swift:600:13:600:41 | call to MyClass.init(contentsOfFile:) [str] | test.swift:585:9:585:9 | self [str] | provenance | | +| test.swift:600:13:600:41 | call to MyClass.init(contentsOfFile:) [str] | test.swift:600:13:600:43 | .str | provenance | | +| test.swift:615:7:615:7 | self [x] | file://:0:0:0:0 | self [x] | provenance | | +| test.swift:617:8:617:11 | x | test.swift:618:14:618:14 | x | provenance | | +| test.swift:618:5:618:5 | [post] self [x] | test.swift:617:3:619:3 | self[return] [x] | provenance | | +| test.swift:618:14:618:14 | x | test.swift:618:5:618:5 | [post] self [x] | provenance | | +| test.swift:623:11:623:24 | call to S.init(x:) [x] | test.swift:625:13:625:13 | s [x] | provenance | | +| test.swift:623:11:623:24 | call to S.init(x:) [x] | test.swift:628:13:628:13 | s [x] | provenance | | +| test.swift:623:16:623:23 | call to source() | test.swift:617:8:617:11 | x | provenance | | +| test.swift:623:16:623:23 | call to source() | test.swift:623:11:623:24 | call to S.init(x:) [x] | provenance | | +| test.swift:624:11:624:14 | enter #keyPath(...) [x] | test.swift:624:14:624:14 | KeyPathComponent | provenance | | +| test.swift:624:14:624:14 | KeyPathComponent | test.swift:624:11:624:14 | exit #keyPath(...) | provenance | | +| test.swift:625:13:625:13 | s [x] | test.swift:624:11:624:14 | enter #keyPath(...) [x] | provenance | | +| test.swift:625:13:625:13 | s [x] | test.swift:625:13:625:25 | \\...[...] | provenance | | +| test.swift:627:36:627:38 | enter #keyPath(...) [x] | test.swift:627:38:627:38 | KeyPathComponent | provenance | | +| test.swift:627:38:627:38 | KeyPathComponent | test.swift:627:36:627:38 | exit #keyPath(...) | provenance | | +| test.swift:628:13:628:13 | s [x] | test.swift:627:36:627:38 | enter #keyPath(...) [x] | provenance | | +| test.swift:628:13:628:13 | s [x] | test.swift:628:13:628:32 | \\...[...] | provenance | | +| test.swift:632:7:632:7 | self [s, x] | file://:0:0:0:0 | self [s, x] | provenance | | +| test.swift:634:8:634:11 | s [x] | test.swift:635:14:635:14 | s [x] | provenance | | +| test.swift:635:5:635:5 | [post] self [s, x] | test.swift:634:3:636:3 | self[return] [s, x] | provenance | | +| test.swift:635:14:635:14 | s [x] | test.swift:635:5:635:5 | [post] self [s, x] | provenance | | +| test.swift:640:11:640:24 | call to S.init(x:) [x] | test.swift:641:18:641:18 | s [x] | provenance | | +| test.swift:640:16:640:23 | call to source() | test.swift:617:8:617:11 | x | provenance | | +| test.swift:640:16:640:23 | call to source() | test.swift:640:11:640:24 | call to S.init(x:) [x] | provenance | | +| test.swift:641:12:641:19 | call to S2.init(s:) [s, x] | test.swift:643:13:643:13 | s2 [s, x] | provenance | | +| test.swift:641:18:641:18 | s [x] | test.swift:634:8:634:11 | s [x] | provenance | | +| test.swift:641:18:641:18 | s [x] | test.swift:641:12:641:19 | call to S2.init(s:) [s, x] | provenance | | +| test.swift:642:11:642:17 | enter #keyPath(...) [s, x] | test.swift:642:15:642:15 | KeyPathComponent [x] | provenance | | +| test.swift:642:15:642:15 | KeyPathComponent [x] | test.swift:642:17:642:17 | KeyPathComponent | provenance | | +| test.swift:642:17:642:17 | KeyPathComponent | test.swift:642:11:642:17 | exit #keyPath(...) | provenance | | +| test.swift:643:13:643:13 | s2 [s, x] | test.swift:642:11:642:17 | enter #keyPath(...) [s, x] | provenance | | +| test.swift:643:13:643:13 | s2 [s, x] | test.swift:643:13:643:26 | \\...[...] | provenance | | +| test.swift:647:17:647:26 | [...] [Collection element] | test.swift:649:15:649:15 | array [Collection element] | provenance | | +| test.swift:647:18:647:25 | call to source() | test.swift:647:17:647:26 | [...] [Collection element] | provenance | | +| test.swift:648:13:648:22 | enter #keyPath(...) [Collection element] | test.swift:648:20:648:22 | KeyPathComponent | provenance | | +| test.swift:648:20:648:22 | KeyPathComponent | test.swift:648:13:648:22 | exit #keyPath(...) | provenance | | +| test.swift:649:15:649:15 | array [Collection element] | test.swift:648:13:648:22 | enter #keyPath(...) [Collection element] | provenance | | +| test.swift:649:15:649:15 | array [Collection element] | test.swift:649:15:649:31 | \\...[...] | provenance | | +| test.swift:655:8:655:12 | s [some:0, x] | test.swift:656:14:656:14 | s [some:0, x] | provenance | | +| test.swift:656:5:656:5 | [post] self [s, some:0, x] | test.swift:655:3:657:3 | self[return] [s, some:0, x] | provenance | | +| test.swift:656:14:656:14 | s [some:0, x] | test.swift:656:5:656:5 | [post] self [s, some:0, x] | provenance | | +| test.swift:661:13:661:26 | call to S.init(x:) [x] | test.swift:662:29:662:29 | s [x] | provenance | | +| test.swift:661:18:661:25 | call to source() | test.swift:617:8:617:11 | x | provenance | | +| test.swift:661:18:661:25 | call to source() | test.swift:661:13:661:26 | call to S.init(x:) [x] | provenance | | +| test.swift:662:14:662:30 | call to S2_Optional.init(s:) [s, some:0, x] | test.swift:664:15:664:15 | s2 [s, some:0, x] | provenance | | +| test.swift:662:29:662:29 | s [some:0, x] | test.swift:655:8:655:12 | s [some:0, x] | provenance | | +| test.swift:662:29:662:29 | s [some:0, x] | test.swift:662:14:662:30 | call to S2_Optional.init(s:) [s, some:0, x] | provenance | | +| test.swift:662:29:662:29 | s [x] | test.swift:662:29:662:29 | s [some:0, x] | provenance | | +| test.swift:663:13:663:29 | enter #keyPath(...) [s, some:0, x] | test.swift:663:26:663:26 | KeyPathComponent [some:0, x] | provenance | | +| test.swift:663:26:663:26 | KeyPathComponent [some:0, x] | test.swift:663:27:663:27 | KeyPathComponent [x] | provenance | | +| test.swift:663:27:663:27 | KeyPathComponent [x] | test.swift:663:29:663:29 | KeyPathComponent | provenance | | +| test.swift:663:29:663:29 | KeyPathComponent | file://:0:0:0:0 | KeyPathComponent [some:0] | provenance | | +| test.swift:664:15:664:15 | s2 [s, some:0, x] | test.swift:663:13:663:29 | enter #keyPath(...) [s, some:0, x] | provenance | | +| test.swift:664:15:664:15 | s2 [s, some:0, x] | test.swift:664:15:664:28 | \\...[...] [some:0] | provenance | | +| test.swift:664:15:664:28 | \\...[...] [some:0] | test.swift:664:15:664:29 | ...! | provenance | | +| test.swift:668:13:668:20 | call to source() | test.swift:676:15:676:15 | y | provenance | | +| test.swift:678:9:678:16 | call to source() | test.swift:680:11:680:11 | x | provenance | | +| test.swift:678:9:678:16 | call to source() | test.swift:681:15:681:15 | x | provenance | | +| test.swift:680:11:680:11 | x | test.swift:680:15:680:15 | [post] y | provenance | | +| test.swift:680:15:680:15 | [post] y | test.swift:682:15:682:15 | y | provenance | | +| test.swift:688:5:688:5 | [post] arr1 [Collection element] | test.swift:689:15:689:15 | arr1 [Collection element] | provenance | | +| test.swift:688:15:688:22 | call to source() | test.swift:688:5:688:5 | [post] arr1 [Collection element] | provenance | | +| test.swift:689:15:689:15 | arr1 [Collection element] | test.swift:689:15:689:21 | ...[...] | provenance | | +| test.swift:692:16:692:25 | [...] [Collection element] | test.swift:693:15:693:15 | arr2 [Collection element] | provenance | | +| test.swift:692:17:692:24 | call to source() | test.swift:692:16:692:25 | [...] [Collection element] | provenance | | +| test.swift:693:15:693:15 | arr2 [Collection element] | test.swift:693:15:693:21 | ...[...] | provenance | | +| test.swift:695:18:695:29 | [...] [Collection element, Collection element] | test.swift:697:15:697:15 | matrix [Collection element, Collection element] | provenance | | +| test.swift:695:19:695:28 | [...] [Collection element] | test.swift:695:18:695:29 | [...] [Collection element, Collection element] | provenance | | +| test.swift:695:20:695:27 | call to source() | test.swift:695:19:695:28 | [...] [Collection element] | provenance | | +| test.swift:697:15:697:15 | matrix [Collection element, Collection element] | test.swift:697:15:697:23 | ...[...] [Collection element] | provenance | | +| test.swift:697:15:697:23 | ...[...] [Collection element] | test.swift:697:15:697:26 | ...[...] | provenance | | +| test.swift:700:5:700:5 | [post] matrix2 [Collection element, Collection element] | test.swift:701:15:701:15 | matrix2 [Collection element, Collection element] | provenance | | +| test.swift:700:5:700:14 | [post] getter for ...[...] [Collection element] | test.swift:700:5:700:5 | [post] matrix2 [Collection element, Collection element] | provenance | | +| test.swift:700:21:700:28 | call to source() | test.swift:700:5:700:14 | [post] getter for ...[...] [Collection element] | provenance | | +| test.swift:701:15:701:15 | matrix2 [Collection element, Collection element] | test.swift:701:15:701:24 | ...[...] [Collection element] | provenance | | +| test.swift:701:15:701:24 | ...[...] [Collection element] | test.swift:701:15:701:27 | ...[...] | provenance | | +| test.swift:708:16:708:51 | call to Array.init(repeating:count:) [Collection element] | test.swift:709:15:709:15 | arr5 [Collection element] | provenance | | +| test.swift:708:33:708:40 | call to source() | test.swift:708:16:708:51 | call to Array.init(repeating:count:) [Collection element] | provenance | | +| test.swift:709:15:709:15 | arr5 [Collection element] | test.swift:709:15:709:21 | ...[...] | provenance | | +| test.swift:712:5:712:5 | [post] arr6 [Collection element] | test.swift:713:15:713:15 | arr6 [Collection element] | provenance | | +| test.swift:712:17:712:24 | call to source() | test.swift:712:5:712:5 | [post] arr6 [Collection element] | provenance | | +| test.swift:713:15:713:15 | arr6 [Collection element] | test.swift:713:15:713:21 | ...[...] | provenance | | +| test.swift:715:16:715:25 | [...] [Collection element] | test.swift:716:15:716:15 | arr7 [Collection element] | provenance | | +| test.swift:715:17:715:24 | call to source() | test.swift:715:16:715:25 | [...] [Collection element] | provenance | | +| test.swift:716:15:716:15 | arr7 [Collection element] | test.swift:716:15:716:34 | call to randomElement() [some:0] | provenance | | +| test.swift:716:15:716:34 | call to randomElement() [some:0] | test.swift:716:15:716:35 | ...! | provenance | | +| test.swift:722:5:722:5 | [post] set1 [Collection element] | test.swift:723:15:723:15 | set1 [Collection element] | provenance | | +| test.swift:722:17:722:24 | call to source() | test.swift:722:5:722:5 | [post] set1 [Collection element] | provenance | | +| test.swift:723:15:723:15 | set1 [Collection element] | test.swift:723:15:723:34 | call to randomElement() [some:0] | provenance | | +| test.swift:723:15:723:34 | call to randomElement() [some:0] | test.swift:723:15:723:35 | ...! | provenance | | +| test.swift:725:16:725:30 | call to Set.init(_:) [Collection element] | test.swift:726:15:726:15 | set2 [Collection element] | provenance | | +| test.swift:725:20:725:29 | [...] [Collection element] | test.swift:725:16:725:30 | call to Set.init(_:) [Collection element] | provenance | | +| test.swift:725:21:725:28 | call to source() | test.swift:725:20:725:29 | [...] [Collection element] | provenance | | +| test.swift:726:15:726:15 | set2 [Collection element] | test.swift:726:15:726:34 | call to randomElement() [some:0] | provenance | | +| test.swift:726:15:726:34 | call to randomElement() [some:0] | test.swift:726:15:726:35 | ...! | provenance | | +| test.swift:731:9:731:9 | self [v2, some:0] | file://:0:0:0:0 | self [v2, some:0] | provenance | | +| test.swift:731:9:731:9 | self [v2] | file://:0:0:0:0 | self [v2] | provenance | | +| test.swift:731:9:731:9 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:731:9:731:9 | value [some:0] | file://:0:0:0:0 | value [some:0] | provenance | | +| test.swift:732:9:732:9 | self [v3] | file://:0:0:0:0 | self [v3] | provenance | | +| test.swift:732:9:732:9 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:742:5:742:5 | v1 [some:0] | test.swift:752:15:752:15 | v1 [some:0] | provenance | | +| test.swift:742:11:742:18 | call to source() | test.swift:742:5:742:5 | v1 [some:0] | provenance | | +| test.swift:743:10:743:17 | call to source() | test.swift:743:10:743:17 | call to source() [some:0] | provenance | | +| test.swift:743:10:743:17 | call to source() | test.swift:753:15:753:17 | ...! | provenance | | +| test.swift:743:10:743:17 | call to source() [some:0] | test.swift:753:15:753:15 | v2 [some:0] | provenance | | +| test.swift:744:10:744:17 | call to source() | test.swift:754:15:754:15 | v3 | provenance | | +| test.swift:746:5:746:5 | [post] mo1 [v2, some:0] | test.swift:747:5:747:5 | mo1 [v2, some:0] | provenance | | +| test.swift:746:5:746:5 | [post] mo1 [v2] | test.swift:747:5:747:5 | mo1 [v2] | provenance | | +| test.swift:746:14:746:21 | call to source() | test.swift:731:9:731:9 | value | provenance | | +| test.swift:746:14:746:21 | call to source() | test.swift:746:5:746:5 | [post] mo1 [v2] | provenance | | +| test.swift:746:14:746:21 | call to source() | test.swift:746:14:746:21 | call to source() [some:0] | provenance | | +| test.swift:746:14:746:21 | call to source() [some:0] | test.swift:731:9:731:9 | value [some:0] | provenance | | +| test.swift:746:14:746:21 | call to source() [some:0] | test.swift:746:5:746:5 | [post] mo1 [v2, some:0] | provenance | | +| test.swift:747:5:747:5 | [post] mo1 [v3] | test.swift:757:15:757:15 | mo1 [v3] | provenance | | +| test.swift:747:5:747:5 | mo1 [v2, some:0] | test.swift:756:15:756:15 | mo1 [v2, some:0] | provenance | | +| test.swift:747:5:747:5 | mo1 [v2] | test.swift:756:15:756:15 | mo1 [v2] | provenance | | +| test.swift:747:14:747:21 | call to source() | test.swift:732:9:732:9 | value | provenance | | +| test.swift:747:14:747:21 | call to source() | test.swift:747:5:747:5 | [post] mo1 [v3] | provenance | | +| test.swift:752:15:752:15 | v1 [some:0] | test.swift:752:15:752:17 | ...! | provenance | | +| test.swift:753:15:753:15 | v2 [some:0] | test.swift:753:15:753:17 | ...! | provenance | | +| test.swift:756:15:756:15 | mo1 [v2, some:0] | test.swift:731:9:731:9 | self [v2, some:0] | provenance | | +| test.swift:756:15:756:15 | mo1 [v2, some:0] | test.swift:756:15:756:19 | .v2 [some:0] | provenance | | +| test.swift:756:15:756:15 | mo1 [v2] | test.swift:731:9:731:9 | self [v2] | provenance | | +| test.swift:756:15:756:15 | mo1 [v2] | test.swift:756:15:756:19 | .v2 | provenance | | +| test.swift:756:15:756:19 | .v2 | test.swift:756:15:756:21 | ...! | provenance | | +| test.swift:756:15:756:19 | .v2 [some:0] | test.swift:756:15:756:21 | ...! | provenance | | +| test.swift:757:15:757:15 | mo1 [v3] | test.swift:732:9:732:9 | self [v3] | provenance | | +| test.swift:757:15:757:15 | mo1 [v3] | test.swift:757:15:757:19 | .v3 | provenance | | +| test.swift:764:13:764:26 | call to S.init(x:) [x] | test.swift:765:29:765:29 | s [x] | provenance | | +| test.swift:764:18:764:25 | call to source() | test.swift:617:8:617:11 | x | provenance | | +| test.swift:764:18:764:25 | call to source() | test.swift:764:13:764:26 | call to S.init(x:) [x] | provenance | | +| test.swift:765:14:765:30 | call to S2_Optional.init(s:) [s, some:0, x] | test.swift:767:15:767:15 | s2 [s, some:0, x] | provenance | | +| test.swift:765:29:765:29 | s [some:0, x] | test.swift:655:8:655:12 | s [some:0, x] | provenance | | +| test.swift:765:29:765:29 | s [some:0, x] | test.swift:765:14:765:30 | call to S2_Optional.init(s:) [s, some:0, x] | provenance | | +| test.swift:765:29:765:29 | s [x] | test.swift:765:29:765:29 | s [some:0, x] | provenance | | +| test.swift:766:13:766:29 | enter #keyPath(...) [s, some:0, x] | test.swift:766:26:766:26 | KeyPathComponent [some:0, x] | provenance | | +| test.swift:766:26:766:26 | KeyPathComponent [some:0, x] | test.swift:766:26:766:26 | KeyPathComponent [x] | provenance | | +| test.swift:766:26:766:26 | KeyPathComponent [x] | test.swift:766:29:766:29 | KeyPathComponent | provenance | | +| test.swift:766:29:766:29 | KeyPathComponent | test.swift:766:13:766:29 | exit #keyPath(...) | provenance | | +| test.swift:767:15:767:15 | s2 [s, some:0, x] | test.swift:766:13:766:29 | enter #keyPath(...) [s, some:0, x] | provenance | | +| test.swift:767:15:767:15 | s2 [s, some:0, x] | test.swift:767:15:767:28 | \\...[...] | provenance | | +| test.swift:774:5:774:5 | [post] dict1 [Collection element, Tuple element at index 1] | test.swift:776:15:776:15 | dict1 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:774:5:774:12 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:774:5:774:5 | [post] dict1 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:774:16:774:23 | call to source() | test.swift:774:5:774:12 | DictionarySubscriptNode [Tuple element at index 1] | provenance | | +| test.swift:776:15:776:15 | dict1 [Collection element, Tuple element at index 1] | test.swift:776:15:776:22 | DictionarySubscriptNode [Tuple element at index 1] | provenance | | +| test.swift:776:15:776:22 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:776:15:776:22 | ...[...] | provenance | | +| test.swift:778:17:778:29 | [...] [Collection element, Tuple element at index 0] | test.swift:781:25:781:25 | dict2 [Collection element, Tuple element at index 0] | provenance | | +| test.swift:778:18:778:25 | call to source() | test.swift:778:18:778:28 | (...) [Tuple element at index 0] | provenance | | +| test.swift:778:18:778:28 | (...) [Tuple element at index 0] | test.swift:778:17:778:29 | [...] [Collection element, Tuple element at index 0] | provenance | | +| test.swift:781:5:781:5 | $generator [Collection element, Tuple element at index 0] | test.swift:781:5:781:5 | call to next() [some:0, Tuple element at index 0] | provenance | | +| test.swift:781:5:781:5 | call to next() [some:0, Tuple element at index 0] | test.swift:781:9:781:20 | (...) [Tuple element at index 0] | provenance | | +| test.swift:781:9:781:20 | (...) [Tuple element at index 0] | test.swift:781:10:781:10 | key | provenance | | +| test.swift:781:10:781:10 | key | test.swift:782:19:782:19 | key | provenance | | +| test.swift:781:25:781:25 | call to makeIterator() [Collection element, Tuple element at index 0] | test.swift:781:5:781:5 | $generator [Collection element, Tuple element at index 0] | provenance | | +| test.swift:781:25:781:25 | dict2 [Collection element, Tuple element at index 0] | test.swift:781:25:781:25 | call to makeIterator() [Collection element, Tuple element at index 0] | provenance | | +| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:787:15:787:15 | dict3 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:789:5:789:5 | dict3 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:792:15:792:15 | dict3 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:786:18:786:28 | (...) [Tuple element at index 1] | test.swift:786:17:786:29 | [...] [Collection element, Tuple element at index 1] | provenance | | +| test.swift:786:21:786:28 | call to source() | test.swift:786:18:786:28 | (...) [Tuple element at index 1] | provenance | | +| test.swift:787:15:787:15 | dict3 [Collection element, Tuple element at index 1] | test.swift:787:15:787:22 | DictionarySubscriptNode [Tuple element at index 1] | provenance | | +| test.swift:787:15:787:22 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:787:15:787:22 | ...[...] | provenance | | +| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 0] | test.swift:791:15:791:15 | dict3 [Collection element, Tuple element at index 0] | provenance | | +| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 0] | test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 0] | provenance | | +| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 1] | test.swift:792:15:792:15 | dict3 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 1] | test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:789:5:789:5 | dict3 [Collection element, Tuple element at index 1] | test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 1] | provenance | | +| test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 0] | test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 0] | provenance | | +| test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 1] | test.swift:789:5:789:5 | [post] dict3 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:789:11:789:18 | call to source() | test.swift:789:5:789:19 | DictionarySubscriptNode [Tuple element at index 0] | provenance | | +| test.swift:791:15:791:15 | dict3 [Collection element, Tuple element at index 0] | test.swift:791:15:791:35 | call to randomElement() [some:0, Tuple element at index 0] | provenance | | +| test.swift:791:15:791:35 | call to randomElement() [some:0, Tuple element at index 0] | test.swift:791:15:791:36 | ...! [Tuple element at index 0] | provenance | | +| test.swift:791:15:791:36 | ...! [Tuple element at index 0] | test.swift:791:15:791:38 | .0 | provenance | | +| test.swift:792:15:792:15 | dict3 [Collection element, Tuple element at index 1] | test.swift:792:15:792:35 | call to randomElement() [some:0, Tuple element at index 1] | provenance | | +| test.swift:792:15:792:35 | call to randomElement() [some:0, Tuple element at index 1] | test.swift:792:15:792:36 | ...! [Tuple element at index 1] | provenance | | +| test.swift:792:15:792:36 | ...! [Tuple element at index 1] | test.swift:792:15:792:38 | .1 | provenance | | +| test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 0] | test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 0] | provenance | | +| test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 1] | test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 1] | provenance | | +| test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 0] | test.swift:794:9:794:20 | (...) [Tuple element at index 0] | provenance | | +| test.swift:794:5:794:5 | call to next() [some:0, Tuple element at index 1] | test.swift:794:9:794:20 | (...) [Tuple element at index 1] | provenance | | +| test.swift:794:9:794:20 | (...) [Tuple element at index 0] | test.swift:794:10:794:10 | key | provenance | | +| test.swift:794:9:794:20 | (...) [Tuple element at index 1] | test.swift:794:15:794:15 | value | provenance | | +| test.swift:794:10:794:10 | key | test.swift:795:19:795:19 | key | provenance | | +| test.swift:794:15:794:15 | value | test.swift:796:19:796:19 | value | provenance | | +| test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 0] | test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 0] | provenance | | +| test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 1] | test.swift:794:5:794:5 | $generator [Collection element, Tuple element at index 1] | provenance | | +| test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 0] | test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 0] | provenance | | +| test.swift:794:25:794:25 | dict3 [Collection element, Tuple element at index 1] | test.swift:794:25:794:25 | call to makeIterator() [Collection element, Tuple element at index 1] | provenance | | +| test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | test.swift:800:15:800:15 | dict4 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | test.swift:801:15:801:15 | dict4 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | test.swift:803:15:803:15 | dict4 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:799:18:799:27 | (...) [Tuple element at index 1] | test.swift:799:17:799:28 | [...] [Collection element, Tuple element at index 1] | provenance | | +| test.swift:799:20:799:27 | call to source() | test.swift:799:18:799:27 | (...) [Tuple element at index 1] | provenance | | +| test.swift:800:15:800:15 | [post] dict4 [Collection element, Tuple element at index 0] | test.swift:802:15:802:15 | dict4 [Collection element, Tuple element at index 0] | provenance | | +| test.swift:800:15:800:15 | dict4 [Collection element, Tuple element at index 1] | test.swift:800:15:800:52 | call to updateValue(_:forKey:) [some:0] | provenance | | +| test.swift:800:15:800:52 | call to updateValue(_:forKey:) [some:0] | test.swift:800:15:800:53 | ...! | provenance | | +| test.swift:800:44:800:51 | call to source() | test.swift:800:15:800:15 | [post] dict4 [Collection element, Tuple element at index 0] | provenance | | +| test.swift:801:15:801:15 | [post] dict4 [Collection element, Tuple element at index 1] | test.swift:803:15:803:15 | dict4 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:801:15:801:15 | dict4 [Collection element, Tuple element at index 1] | test.swift:801:15:801:52 | call to updateValue(_:forKey:) [some:0] | provenance | | +| test.swift:801:15:801:52 | call to updateValue(_:forKey:) [some:0] | test.swift:801:15:801:53 | ...! | provenance | | +| test.swift:801:33:801:40 | call to source() | test.swift:801:15:801:15 | [post] dict4 [Collection element, Tuple element at index 1] | provenance | | +| test.swift:802:15:802:15 | dict4 [Collection element, Tuple element at index 0] | test.swift:802:15:802:35 | call to randomElement() [some:0, Tuple element at index 0] | provenance | | +| test.swift:802:15:802:35 | call to randomElement() [some:0, Tuple element at index 0] | test.swift:802:15:802:36 | ...! [Tuple element at index 0] | provenance | | +| test.swift:802:15:802:36 | ...! [Tuple element at index 0] | test.swift:802:15:802:38 | .0 | provenance | | +| test.swift:803:15:803:15 | dict4 [Collection element, Tuple element at index 1] | test.swift:803:15:803:35 | call to randomElement() [some:0, Tuple element at index 1] | provenance | | +| test.swift:803:15:803:35 | call to randomElement() [some:0, Tuple element at index 1] | test.swift:803:15:803:36 | ...! [Tuple element at index 1] | provenance | | +| test.swift:803:15:803:36 | ...! [Tuple element at index 1] | test.swift:803:15:803:38 | .1 | provenance | | +| test.swift:809:8:809:13 | v | test.swift:810:14:810:14 | v | provenance | | +| test.swift:810:5:810:5 | [post] self [v] | test.swift:809:3:811:3 | self[return] [v] | provenance | | +| test.swift:810:14:810:14 | v | test.swift:810:5:810:5 | [post] self [v] | provenance | | +| test.swift:813:8:813:8 | self [v] | test.swift:813:31:813:31 | self [v] | provenance | | +| test.swift:813:31:813:31 | self [v] | test.swift:813:31:813:31 | .v | provenance | | +| test.swift:813:31:813:31 | self [v] | test.swift:815:7:815:7 | self [v] | provenance | | +| test.swift:815:7:815:7 | self [v] | file://:0:0:0:0 | self [v] | provenance | | +| test.swift:815:7:815:7 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:819:14:819:25 | call to S3.init(_:) [v] | test.swift:822:15:822:15 | s1 [v] | provenance | | +| test.swift:819:14:819:25 | call to S3.init(_:) [v] | test.swift:824:15:824:15 | s1 [v] | provenance | | +| test.swift:819:17:819:24 | call to source() | test.swift:809:8:809:13 | v | provenance | | +| test.swift:819:17:819:24 | call to source() | test.swift:819:14:819:25 | call to S3.init(_:) [v] | provenance | | +| test.swift:822:15:822:15 | s1 [v] | test.swift:815:7:815:7 | self [v] | provenance | | +| test.swift:822:15:822:15 | s1 [v] | test.swift:822:15:822:18 | .v | provenance | | +| test.swift:824:15:824:15 | s1 [v] | test.swift:813:8:813:8 | self [v] | provenance | | +| test.swift:824:15:824:15 | s1 [v] | test.swift:824:15:824:23 | call to getv() | provenance | | +| test.swift:828:5:828:5 | [post] s2 [v] | test.swift:831:15:831:15 | s2 [v] | provenance | | +| test.swift:828:5:828:5 | [post] s2 [v] | test.swift:833:15:833:15 | s2 [v] | provenance | | +| test.swift:828:12:828:19 | call to source() | test.swift:815:7:815:7 | value | provenance | | +| test.swift:828:12:828:19 | call to source() | test.swift:828:5:828:5 | [post] s2 [v] | provenance | | +| test.swift:831:15:831:15 | s2 [v] | test.swift:815:7:815:7 | self [v] | provenance | | +| test.swift:831:15:831:15 | s2 [v] | test.swift:831:15:831:18 | .v | provenance | | +| test.swift:833:15:833:15 | s2 [v] | test.swift:813:8:813:8 | self [v] | provenance | | +| test.swift:833:15:833:15 | s2 [v] | test.swift:833:15:833:23 | call to getv() | provenance | | +| test.swift:839:11:839:17 | [post] exit #keyPath(...) | test.swift:839:17:839:17 | [post] KeyPathComponent | provenance | | +| test.swift:839:15:839:15 | [post] KeyPathComponent [x] | test.swift:839:11:839:17 | [post] enter #keyPath(...) [s, x] | provenance | | +| test.swift:839:17:839:17 | [post] KeyPathComponent | test.swift:839:15:839:15 | [post] KeyPathComponent [x] | provenance | | +| test.swift:840:3:840:3 | [post] s2 [s, x] | test.swift:841:13:841:13 | s2 [s, x] | provenance | | +| test.swift:840:3:840:16 | \\...[...] | test.swift:839:11:839:17 | [post] exit #keyPath(...) | provenance | | +| test.swift:840:3:840:16 | \\...[...] | test.swift:840:3:840:3 | [post] s2 [s, x] | provenance | | +| test.swift:840:20:840:27 | call to source() | test.swift:840:3:840:16 | \\...[...] | provenance | | +| test.swift:841:13:841:13 | s2 [s, x] | test.swift:632:7:632:7 | self [s, x] | provenance | | +| test.swift:841:13:841:13 | s2 [s, x] | test.swift:841:13:841:16 | .s [x] | provenance | | +| test.swift:841:13:841:16 | .s [x] | test.swift:615:7:615:7 | self [x] | provenance | | +| test.swift:841:13:841:16 | .s [x] | test.swift:841:13:841:18 | .x | provenance | | +| test.swift:844:19:844:28 | args [Collection element] | test.swift:846:15:846:15 | args [Collection element] | provenance | | +| test.swift:846:15:846:15 | args [Collection element] | test.swift:846:15:846:21 | ...[...] | provenance | | +| test.swift:849:19:849:24 | v | test.swift:850:15:850:15 | v | provenance | | +| test.swift:856:29:856:40 | args [Collection element] | test.swift:859:15:859:15 | args [Collection element] | provenance | | +| test.swift:856:29:856:40 | args [Collection element] | test.swift:860:15:860:15 | args [Collection element] | provenance | | +| test.swift:856:29:856:40 | args [Collection element] | test.swift:862:16:862:16 | args [Collection element] | provenance | | +| test.swift:856:29:856:40 | args [Collection element] | test.swift:867:15:867:15 | args [Collection element] | provenance | | +| test.swift:859:15:859:15 | args [Collection element] | test.swift:859:15:859:21 | ...[...] | provenance | | +| test.swift:860:15:860:15 | args [Collection element] | test.swift:860:15:860:21 | ...[...] | provenance | | +| test.swift:862:5:862:5 | $arg$generator [Collection element] | test.swift:862:5:862:5 | call to next() [some:0] | provenance | | +| test.swift:862:5:862:5 | call to next() [some:0] | test.swift:862:9:862:9 | arg | provenance | | +| test.swift:862:9:862:9 | arg | test.swift:863:19:863:19 | arg | provenance | | +| test.swift:862:16:862:16 | args [Collection element] | test.swift:862:16:862:16 | call to makeIterator() [Collection element] | provenance | | +| test.swift:862:16:862:16 | call to makeIterator() [Collection element] | test.swift:862:5:862:5 | $arg$generator [Collection element] | provenance | | +| test.swift:866:21:866:29 | enter #keyPath(...) [Collection element] | test.swift:866:27:866:29 | KeyPathComponent | provenance | | +| test.swift:866:27:866:29 | KeyPathComponent | test.swift:866:21:866:29 | exit #keyPath(...) | provenance | | +| test.swift:867:15:867:15 | args [Collection element] | test.swift:866:21:866:29 | enter #keyPath(...) [Collection element] | provenance | | +| test.swift:867:15:867:15 | args [Collection element] | test.swift:867:15:867:38 | \\...[...] | provenance | | +| test.swift:871:24:871:31 | [...] [Collection element] | test.swift:844:19:844:28 | args [Collection element] | provenance | | +| test.swift:871:24:871:31 | [...] [Collection element] | test.swift:871:24:871:31 | [...] [Collection element] | provenance | | +| test.swift:871:24:871:31 | call to source() | test.swift:871:24:871:31 | [...] [Collection element] | provenance | | +| test.swift:872:18:872:25 | call to source() | test.swift:849:19:849:24 | v | provenance | | +| test.swift:873:21:873:31 | [...] [Collection element] | test.swift:856:29:856:40 | args [Collection element] | provenance | | +| test.swift:873:21:873:31 | [...] [Collection element] | test.swift:873:21:873:31 | [...] [Collection element] | provenance | | +| test.swift:873:24:873:31 | call to source() | test.swift:873:21:873:31 | [...] [Collection element] | provenance | | +| test.swift:877:16:877:30 | call to Set.init(_:) [Collection element] | test.swift:879:17:879:17 | set1 [Collection element] | provenance | | +| test.swift:877:16:877:30 | call to Set.init(_:) [Collection element] | test.swift:883:21:883:21 | set1 [Collection element] | provenance | | +| test.swift:877:20:877:29 | [...] [Collection element] | test.swift:877:16:877:30 | call to Set.init(_:) [Collection element] | provenance | | +| test.swift:877:21:877:28 | call to source() | test.swift:877:20:877:29 | [...] [Collection element] | provenance | | +| test.swift:879:5:879:5 | $elem$generator [Collection element] | test.swift:879:5:879:5 | call to next() [some:0] | provenance | | +| test.swift:879:5:879:5 | call to next() [some:0] | test.swift:879:9:879:9 | elem | provenance | | +| test.swift:879:9:879:9 | elem | test.swift:880:19:880:19 | elem | provenance | | +| test.swift:879:17:879:17 | call to makeIterator() [Collection element] | test.swift:879:5:879:5 | $elem$generator [Collection element] | provenance | | +| test.swift:879:17:879:17 | set1 [Collection element] | test.swift:879:17:879:17 | call to makeIterator() [Collection element] | provenance | | +| test.swift:883:21:883:21 | set1 [Collection element] | test.swift:883:21:883:39 | call to makeIterator() [Collection element] | provenance | | +| test.swift:883:21:883:39 | call to makeIterator() [Collection element] | test.swift:884:15:884:15 | generator [Collection element] | provenance | | +| test.swift:884:15:884:15 | generator [Collection element] | test.swift:884:15:884:30 | call to next() [some:0] | provenance | | +| test.swift:884:15:884:30 | call to next() [some:0] | test.swift:884:15:884:31 | ...! | provenance | | +| test.swift:908:19:908:26 | call to source() | test.swift:904:13:904:18 | call to ... | provenance | | +| test.swift:927:12:927:31 | call to source(_:) | test.swift:927:12:927:31 | OpenExistentialExpr | provenance | | +| test.swift:929:12:929:57 | call to source(_:) | test.swift:929:12:929:57 | OpenExistentialExpr | provenance | | +| test.swift:937:22:937:29 | call to source() | file://:0:0:0:0 | .wrappedValue | provenance | | +| test.swift:938:9:938:9 | newValue | test.swift:938:25:938:25 | newValue | provenance | | +| test.swift:941:10:941:24 | wrappedValue | test.swift:942:19:942:19 | wrappedValue | provenance | | +| test.swift:943:29:943:36 | call to source() | test.swift:938:9:938:9 | newValue | provenance | | +| test.swift:948:33:948:33 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:948:42:948:49 | call to source() | test.swift:941:10:941:24 | wrappedValue | provenance | | +| test.swift:950:9:950:16 | call to source() | test.swift:948:33:948:33 | value | provenance | | +| test.swift:957:9:957:9 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:958:9:958:9 | self [wrappedValue] | test.swift:959:23:959:23 | self [wrappedValue] | provenance | | +| test.swift:959:23:959:23 | self [wrappedValue] | test.swift:959:23:959:23 | .wrappedValue | provenance | | +| test.swift:965:9:965:9 | newValue | test.swift:967:28:967:28 | newValue | provenance | | +| test.swift:967:28:967:28 | newValue | test.swift:957:9:957:9 | value | provenance | | +| test.swift:971:10:971:24 | wrappedValue | test.swift:972:19:972:19 | wrappedValue | provenance | | +| test.swift:978:34:978:34 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:980:9:980:16 | call to source() | test.swift:978:34:978:34 | value | provenance | | +| test.swift:983:38:983:45 | call to source() | test.swift:971:10:971:24 | wrappedValue | provenance | | +| test.swift:988:34:988:34 | value | file://:0:0:0:0 | value | provenance | | +| test.swift:991:10:991:17 | call to source() | test.swift:988:34:988:34 | value | provenance | | nodes | file://:0:0:0:0 | .a [x] | semmle.label | .a [x] | | file://:0:0:0:0 | .s [x] | semmle.label | .s [x] | diff --git a/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected b/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected index 24d797088fc4..b0c6ed9c8bd0 100644 --- a/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected +++ b/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected @@ -1,220 +1,220 @@ edges -| conversions.swift:33:16:33:26 | call to sourceInt() | conversions.swift:33:12:33:27 | call to Self.init(_:) | -| conversions.swift:34:18:34:28 | call to sourceInt() | conversions.swift:34:12:34:29 | call to Self.init(_:) | -| conversions.swift:35:18:35:28 | call to sourceInt() | conversions.swift:35:12:35:29 | call to Float.init(_:) | -| conversions.swift:36:12:36:30 | call to String.init(_:) [Collection element] | conversions.swift:36:12:36:30 | call to String.init(_:) | -| conversions.swift:36:19:36:29 | call to sourceInt() | conversions.swift:36:12:36:30 | call to String.init(_:) | -| conversions.swift:36:19:36:29 | call to sourceInt() | conversions.swift:36:12:36:30 | call to String.init(_:) [Collection element] | -| conversions.swift:37:12:37:30 | call to String.init(_:) | conversions.swift:37:12:37:32 | .utf8 | -| conversions.swift:37:19:37:29 | call to sourceInt() | conversions.swift:37:12:37:30 | call to String.init(_:) | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:40:12:40:12 | arr | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:41:12:41:12 | arr [Collection element] | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:41:12:41:17 | ...[...] | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:42:20:42:20 | arr | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:42:20:42:20 | arr [Collection element] | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:43:20:43:20 | arr | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:43:20:43:20 | arr [Collection element] | -| conversions.swift:39:19:39:29 | call to sourceInt() | conversions.swift:39:12:39:30 | [...] [Collection element] | -| conversions.swift:41:12:41:12 | arr [Collection element] | conversions.swift:41:12:41:17 | ...[...] | -| conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | conversions.swift:42:12:42:23 | call to Array.init(_:) | -| conversions.swift:42:20:42:20 | arr | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | -| conversions.swift:42:20:42:20 | arr [Collection element] | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | -| conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | conversions.swift:43:12:43:26 | ...[...] | -| conversions.swift:43:20:43:20 | arr | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | -| conversions.swift:43:20:43:20 | arr [Collection element] | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | -| conversions.swift:44:12:44:39 | call to Array.init(_:) [Collection element] | conversions.swift:44:12:44:39 | call to Array.init(_:) | -| conversions.swift:44:20:44:33 | call to sourceString() | conversions.swift:44:20:44:35 | .utf8 | -| conversions.swift:44:20:44:35 | .utf8 | conversions.swift:44:12:44:39 | call to Array.init(_:) [Collection element] | -| conversions.swift:45:12:45:39 | call to Array.init(_:) [Collection element] | conversions.swift:45:12:45:42 | ...[...] | -| conversions.swift:45:20:45:33 | call to sourceString() | conversions.swift:45:20:45:35 | .utf8 | -| conversions.swift:45:20:45:35 | .utf8 | conversions.swift:45:12:45:39 | call to Array.init(_:) [Collection element] | -| conversions.swift:47:13:47:23 | call to sourceInt() | conversions.swift:48:13:48:13 | v | -| conversions.swift:51:18:51:41 | call to numericCast(_:) | conversions.swift:52:12:52:12 | v2 | -| conversions.swift:51:30:51:40 | call to sourceInt() | conversions.swift:51:18:51:41 | call to numericCast(_:) | -| conversions.swift:54:17:54:57 | call to unsafeBitCast(_:to:) | conversions.swift:55:12:55:12 | v4 | -| conversions.swift:54:31:54:41 | call to sourceInt() | conversions.swift:54:17:54:57 | call to unsafeBitCast(_:to:) | -| conversions.swift:57:11:57:47 | call to Self.init(truncatingIfNeeded:) | conversions.swift:58:12:58:12 | v5 | -| conversions.swift:57:36:57:46 | call to sourceInt() | conversions.swift:57:11:57:47 | call to Self.init(truncatingIfNeeded:) | -| conversions.swift:60:11:60:39 | call to UInt.init(bitPattern:) | conversions.swift:61:12:61:12 | v6 | -| conversions.swift:60:28:60:38 | call to sourceInt() | conversions.swift:60:11:60:39 | call to UInt.init(bitPattern:) | -| conversions.swift:63:11:63:26 | call to abs(_:) | conversions.swift:64:12:64:12 | v7 | -| conversions.swift:63:15:63:25 | call to sourceInt() | conversions.swift:63:11:63:26 | call to abs(_:) | -| conversions.swift:69:28:69:38 | call to sourceInt() | conversions.swift:69:12:69:39 | call to advanced(by:) | -| conversions.swift:71:12:71:36 | call to Self.init(exactly:) [some:0] | conversions.swift:71:12:71:37 | ...! | -| conversions.swift:71:25:71:35 | call to sourceInt() | conversions.swift:71:12:71:36 | call to Self.init(exactly:) [some:0] | -| conversions.swift:72:12:72:39 | call to Self.init(exactly:) [some:0] | conversions.swift:72:12:72:40 | ...! | -| conversions.swift:72:28:72:38 | call to sourceInt() | conversions.swift:72:12:72:39 | call to Self.init(exactly:) [some:0] | -| conversions.swift:73:26:73:36 | call to sourceInt() | conversions.swift:73:12:73:37 | call to Self.init(clamping:) | -| conversions.swift:74:36:74:46 | call to sourceInt() | conversions.swift:74:12:74:47 | call to Self.init(truncatingIfNeeded:) | -| conversions.swift:75:12:75:41 | call to Self.init(_:radix:) [some:0] | conversions.swift:75:12:75:42 | ...! | -| conversions.swift:75:16:75:29 | call to sourceString() | conversions.swift:75:12:75:41 | call to Self.init(_:radix:) [some:0] | -| conversions.swift:77:30:77:40 | call to sourceInt() | conversions.swift:77:12:77:41 | call to Self.init(littleEndian:) | -| conversions.swift:78:27:78:37 | call to sourceInt() | conversions.swift:78:12:78:38 | call to Self.init(bigEndian:) | -| conversions.swift:79:12:79:22 | call to sourceInt() | conversions.swift:79:12:79:24 | .littleEndian | -| conversions.swift:80:12:80:22 | call to sourceInt() | conversions.swift:80:12:80:24 | .bigEndian | -| conversions.swift:109:18:109:30 | call to sourceFloat() | conversions.swift:109:12:109:31 | call to Float.init(_:) | -| conversions.swift:110:18:110:30 | call to sourceFloat() | conversions.swift:110:12:110:31 | call to UInt8.init(_:) | -| conversions.swift:111:12:111:32 | call to String.init(_:) [Collection element] | conversions.swift:111:12:111:32 | call to String.init(_:) | -| conversions.swift:111:19:111:31 | call to sourceFloat() | conversions.swift:111:12:111:32 | call to String.init(_:) | -| conversions.swift:111:19:111:31 | call to sourceFloat() | conversions.swift:111:12:111:32 | call to String.init(_:) [Collection element] | -| conversions.swift:112:12:112:32 | call to String.init(_:) | conversions.swift:112:12:112:34 | .utf8 | -| conversions.swift:112:19:112:31 | call to sourceFloat() | conversions.swift:112:12:112:32 | call to String.init(_:) | -| conversions.swift:113:12:113:34 | call to String.init(_:) [Collection element] | conversions.swift:113:12:113:34 | call to String.init(_:) | -| conversions.swift:113:19:113:33 | call to sourceFloat80() | conversions.swift:113:12:113:34 | call to String.init(_:) | -| conversions.swift:113:19:113:33 | call to sourceFloat80() | conversions.swift:113:12:113:34 | call to String.init(_:) [Collection element] | -| conversions.swift:114:12:114:34 | call to String.init(_:) | conversions.swift:114:12:114:36 | .utf8 | -| conversions.swift:114:19:114:33 | call to sourceFloat80() | conversions.swift:114:12:114:34 | call to String.init(_:) | -| conversions.swift:115:12:115:33 | call to String.init(_:) [Collection element] | conversions.swift:115:12:115:33 | call to String.init(_:) | -| conversions.swift:115:19:115:32 | call to sourceDouble() | conversions.swift:115:12:115:33 | call to String.init(_:) | -| conversions.swift:115:19:115:32 | call to sourceDouble() | conversions.swift:115:12:115:33 | call to String.init(_:) [Collection element] | -| conversions.swift:116:12:116:33 | call to String.init(_:) | conversions.swift:116:12:116:35 | .utf8 | -| conversions.swift:116:19:116:32 | call to sourceDouble() | conversions.swift:116:12:116:33 | call to String.init(_:) | -| conversions.swift:118:18:118:30 | call to sourceFloat() | conversions.swift:118:12:118:31 | call to Float.init(_:) | -| conversions.swift:119:41:119:51 | call to sourceInt() | conversions.swift:119:12:119:70 | call to Float.init(sign:exponent:significand:) | -| conversions.swift:120:57:120:69 | call to sourceFloat() | conversions.swift:120:12:120:70 | call to Float.init(sign:exponent:significand:) | -| conversions.swift:122:44:122:56 | call to sourceFloat() | conversions.swift:122:12:122:57 | call to Float.init(signOf:magnitudeOf:) | -| conversions.swift:124:12:124:24 | call to sourceFloat() | conversions.swift:124:12:124:26 | .exponent | -| conversions.swift:125:12:125:24 | call to sourceFloat() | conversions.swift:125:12:125:26 | .significand | -| conversions.swift:126:12:126:26 | call to sourceFloat80() | conversions.swift:126:12:126:28 | .exponent | -| conversions.swift:127:12:127:26 | call to sourceFloat80() | conversions.swift:127:12:127:28 | .significand | -| conversions.swift:128:12:128:25 | call to sourceDouble() | conversions.swift:128:12:128:27 | .exponent | -| conversions.swift:129:12:129:25 | call to sourceDouble() | conversions.swift:129:12:129:27 | .significand | -| conversions.swift:130:12:130:23 | call to sourceUInt() | conversions.swift:130:12:130:25 | .byteSwapped | -| conversions.swift:131:12:131:25 | call to sourceUInt64() | conversions.swift:131:12:131:27 | .byteSwapped | -| conversions.swift:136:12:136:33 | call to String.init(_:) [Collection element] | conversions.swift:136:12:136:33 | call to String.init(_:) | -| conversions.swift:136:19:136:32 | call to sourceString() | conversions.swift:136:12:136:33 | call to String.init(_:) | -| conversions.swift:136:19:136:32 | call to sourceString() | conversions.swift:136:12:136:33 | call to String.init(_:) [Collection element] | -| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:144:12:144:35 | call to MyString.init(_:) [some:0] | -| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:145:12:145:12 | ms2 | -| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:146:12:146:16 | .description | -| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:147:12:147:16 | .debugDescription | -| conversions.swift:144:12:144:35 | call to MyString.init(_:) [some:0] | conversions.swift:144:12:144:36 | ...! | -| conversions.swift:144:12:144:36 | ...! | conversions.swift:145:12:145:12 | ms2 | -| conversions.swift:144:12:144:36 | ...! | conversions.swift:146:12:146:16 | .description | -| conversions.swift:144:12:144:36 | ...! | conversions.swift:147:12:147:16 | .debugDescription | -| conversions.swift:144:21:144:34 | call to sourceString() | conversions.swift:144:12:144:35 | call to MyString.init(_:) | -| conversions.swift:152:31:152:44 | call to sourceString() | conversions.swift:153:12:153:12 | parent | -| conversions.swift:152:31:152:44 | call to sourceString() | conversions.swift:154:12:154:12 | parent | -| conversions.swift:152:31:152:44 | call to sourceString() | conversions.swift:156:40:156:40 | parent | -| conversions.swift:156:25:156:69 | call to unsafeDowncast(_:to:) | conversions.swift:157:12:157:12 | v3 | -| conversions.swift:156:25:156:69 | call to unsafeDowncast(_:to:) | conversions.swift:158:12:158:12 | v3 | -| conversions.swift:156:40:156:40 | parent | conversions.swift:156:25:156:69 | call to unsafeDowncast(_:to:) | -| conversions.swift:166:24:166:34 | call to sourceInt() | conversions.swift:166:12:166:35 | call to Self.init(_:) | -| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:173:13:173:13 | arr1 | -| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:175:13:175:19 | ...[...] | -| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:178:25:178:25 | arr1 | -| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:185:31:185:31 | arr1 | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:174:13:174:13 | arr2 | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:176:13:176:13 | arr2 [Collection element] | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:176:13:176:19 | ...[...] | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:179:25:179:25 | arr2 | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:179:25:179:25 | arr2 [Collection element] | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:186:31:186:31 | arr2 | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:186:31:186:31 | arr2 [Collection element] | -| conversions.swift:172:15:172:25 | call to sourceInt() | conversions.swift:172:14:172:26 | [...] [Collection element] | -| conversions.swift:176:13:176:13 | arr2 [Collection element] | conversions.swift:176:13:176:19 | ...[...] | -| conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:180:13:180:13 | arr1b | -| conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:182:13:182:13 | arr1b [Collection element] | -| conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:182:13:182:20 | ...[...] | -| conversions.swift:178:25:178:25 | arr1 | conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | -| conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:181:13:181:13 | arr2b | -| conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:183:13:183:13 | arr2b [Collection element] | -| conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:183:13:183:20 | ...[...] | -| conversions.swift:179:25:179:25 | arr2 | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | -| conversions.swift:179:25:179:25 | arr2 [Collection element] | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | -| conversions.swift:182:13:182:13 | arr1b [Collection element] | conversions.swift:182:13:182:20 | ...[...] | -| conversions.swift:183:13:183:13 | arr2b [Collection element] | conversions.swift:183:13:183:20 | ...[...] | -| conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:187:13:187:13 | arr1c | -| conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:189:13:189:13 | arr1c [Collection element] | -| conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:189:13:189:20 | ...[...] | -| conversions.swift:185:31:185:31 | arr1 | conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | -| conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:188:13:188:13 | arr2c | -| conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:190:13:190:13 | arr2c [Collection element] | -| conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:190:13:190:20 | ...[...] | -| conversions.swift:186:31:186:31 | arr2 | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | -| conversions.swift:186:31:186:31 | arr2 [Collection element] | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | -| conversions.swift:189:13:189:13 | arr1c [Collection element] | conversions.swift:189:13:189:20 | ...[...] | -| conversions.swift:190:13:190:13 | arr2c [Collection element] | conversions.swift:190:13:190:20 | ...[...] | -| file://:0:0:0:0 | self [first] | file://:0:0:0:0 | .first | -| file://:0:0:0:0 | self [second] | file://:0:0:0:0 | .second | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [first] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [second] | -| simple.swift:12:17:12:24 | call to source() | simple.swift:12:13:12:24 | ... .+(_:_:) ... | -| simple.swift:13:13:13:20 | call to source() | simple.swift:13:13:13:24 | ... .+(_:_:) ... | -| simple.swift:14:17:14:24 | call to source() | simple.swift:14:13:14:24 | ... .-(_:_:) ... | -| simple.swift:15:13:15:20 | call to source() | simple.swift:15:13:15:24 | ... .-(_:_:) ... | -| simple.swift:16:17:16:24 | call to source() | simple.swift:16:13:16:24 | ... .*(_:_:) ... | -| simple.swift:17:13:17:20 | call to source() | simple.swift:17:13:17:24 | ... .*(_:_:) ... | -| simple.swift:18:19:18:26 | call to source() | simple.swift:18:13:18:26 | ... ./(_:_:) ... | -| simple.swift:19:13:19:20 | call to source() | simple.swift:19:13:19:24 | ... ./(_:_:) ... | -| simple.swift:20:19:20:26 | call to source() | simple.swift:20:13:20:26 | ... .%(_:_:) ... | -| simple.swift:21:13:21:20 | call to source() | simple.swift:21:13:21:24 | ... .%(_:_:) ... | -| simple.swift:23:14:23:21 | call to source() | simple.swift:23:13:23:21 | call to -(_:) | -| simple.swift:27:18:27:25 | call to source() | simple.swift:27:13:27:25 | ... .&+(_:_:) ... | -| simple.swift:28:13:28:20 | call to source() | simple.swift:28:13:28:25 | ... .&+(_:_:) ... | -| simple.swift:29:18:29:25 | call to source() | simple.swift:29:13:29:25 | ... .&-(_:_:) ... | -| simple.swift:30:13:30:20 | call to source() | simple.swift:30:13:30:25 | ... .&-(_:_:) ... | -| simple.swift:31:18:31:25 | call to source() | simple.swift:31:13:31:25 | ... .&*(_:_:) ... | -| simple.swift:32:13:32:20 | call to source() | simple.swift:32:13:32:25 | ... .&*(_:_:) ... | -| simple.swift:40:8:40:15 | call to source() | simple.swift:41:13:41:13 | a | -| simple.swift:40:8:40:15 | call to source() | simple.swift:43:13:43:13 | a | -| simple.swift:48:8:48:15 | call to source() | simple.swift:49:13:49:13 | b | -| simple.swift:48:8:48:15 | call to source() | simple.swift:51:13:51:13 | b | -| simple.swift:54:8:54:15 | call to source() | simple.swift:55:13:55:13 | c | -| simple.swift:54:8:54:15 | call to source() | simple.swift:57:13:57:13 | c | -| simple.swift:60:8:60:15 | call to source() | simple.swift:61:13:61:13 | d | -| simple.swift:60:8:60:15 | call to source() | simple.swift:63:13:63:13 | d | -| simple.swift:66:8:66:15 | call to source() | simple.swift:67:13:67:13 | e | -| simple.swift:66:8:66:15 | call to source() | simple.swift:69:13:69:13 | e | -| simple.swift:73:17:73:24 | call to source() | simple.swift:73:13:73:24 | ... .\|(_:_:) ... | -| simple.swift:74:13:74:20 | call to source() | simple.swift:74:13:74:24 | ... .\|(_:_:) ... | -| simple.swift:76:22:76:29 | call to source() | simple.swift:76:13:76:29 | ... .&(_:_:) ... | -| simple.swift:77:13:77:20 | call to source() | simple.swift:77:13:77:24 | ... .&(_:_:) ... | -| simple.swift:79:22:79:29 | call to source() | simple.swift:79:13:79:29 | ... .^(_:_:) ... | -| simple.swift:80:13:80:20 | call to source() | simple.swift:80:13:80:24 | ... .^(_:_:) ... | -| simple.swift:82:13:82:20 | call to source() | simple.swift:82:13:82:25 | ... .<<(_:_:) ... | -| simple.swift:83:13:83:20 | call to source() | simple.swift:83:13:83:26 | ... .&<<(_:_:) ... | -| simple.swift:84:13:84:20 | call to source() | simple.swift:84:13:84:25 | ... .>>(_:_:) ... | -| simple.swift:85:13:85:20 | call to source() | simple.swift:85:13:85:26 | ... .&>>(_:_:) ... | -| simple.swift:87:14:87:21 | call to source() | simple.swift:87:13:87:21 | call to ~(_:) | -| stringinterpolation.swift:6:6:6:6 | self [first] | file://:0:0:0:0 | self [first] | -| stringinterpolation.swift:6:6:6:6 | value | file://:0:0:0:0 | value | -| stringinterpolation.swift:7:6:7:6 | self [second] | file://:0:0:0:0 | self [second] | -| stringinterpolation.swift:7:6:7:6 | value | file://:0:0:0:0 | value | -| stringinterpolation.swift:11:36:11:44 | pair [first] | stringinterpolation.swift:13:36:13:36 | pair [first] | -| stringinterpolation.swift:13:3:13:3 | [post] self | stringinterpolation.swift:11:11:14:2 | self[return] | -| stringinterpolation.swift:13:36:13:36 | pair [first] | stringinterpolation.swift:6:6:6:6 | self [first] | -| stringinterpolation.swift:13:36:13:36 | pair [first] | stringinterpolation.swift:13:36:13:41 | .first | -| stringinterpolation.swift:13:36:13:41 | .first | stringinterpolation.swift:11:11:14:2 | self[return] | -| stringinterpolation.swift:13:36:13:41 | .first | stringinterpolation.swift:13:3:13:3 | [post] self | -| stringinterpolation.swift:19:2:19:2 | [post] p1 [first] | stringinterpolation.swift:20:2:20:2 | p1 [first] | -| stringinterpolation.swift:19:13:19:20 | call to source() | stringinterpolation.swift:6:6:6:6 | value | -| stringinterpolation.swift:19:13:19:20 | call to source() | stringinterpolation.swift:19:2:19:2 | [post] p1 [first] | -| stringinterpolation.swift:20:2:20:2 | p1 [first] | stringinterpolation.swift:22:21:22:21 | p1 [first] | -| stringinterpolation.swift:20:2:20:2 | p1 [first] | stringinterpolation.swift:24:21:24:21 | p1 [first] | -| stringinterpolation.swift:22:21:22:21 | p1 [first] | stringinterpolation.swift:6:6:6:6 | self [first] | -| stringinterpolation.swift:22:21:22:21 | p1 [first] | stringinterpolation.swift:22:21:22:24 | .first | -| stringinterpolation.swift:22:21:22:24 | .first | stringinterpolation.swift:22:12:22:12 | "..." | -| stringinterpolation.swift:24:20:24:20 | [post] $interpolation | stringinterpolation.swift:24:12:24:12 | "..." | -| stringinterpolation.swift:24:21:24:21 | p1 [first] | stringinterpolation.swift:11:36:11:44 | pair [first] | -| stringinterpolation.swift:24:21:24:21 | p1 [first] | stringinterpolation.swift:24:20:24:20 | [post] $interpolation | -| stringinterpolation.swift:28:2:28:2 | [post] p2 [second] | stringinterpolation.swift:31:21:31:21 | p2 [second] | -| stringinterpolation.swift:28:14:28:21 | call to source() | stringinterpolation.swift:7:6:7:6 | value | -| stringinterpolation.swift:28:14:28:21 | call to source() | stringinterpolation.swift:28:2:28:2 | [post] p2 [second] | -| stringinterpolation.swift:31:21:31:21 | p2 [second] | stringinterpolation.swift:7:6:7:6 | self [second] | -| stringinterpolation.swift:31:21:31:21 | p2 [second] | stringinterpolation.swift:31:21:31:24 | .second | -| stringinterpolation.swift:31:21:31:24 | .second | stringinterpolation.swift:31:12:31:12 | "..." | -| stringinterpolation.swift:36:10:36:17 | call to source() | stringinterpolation.swift:40:12:40:12 | "..." | -| stringinterpolation.swift:36:10:36:17 | call to source() | stringinterpolation.swift:41:12:41:12 | "..." | -| stringinterpolation.swift:36:10:36:17 | call to source() | stringinterpolation.swift:42:12:42:12 | "..." | -| subscript.swift:13:15:13:22 | call to source() | subscript.swift:13:15:13:25 | ...[...] | -| subscript.swift:14:15:14:23 | call to source2() | subscript.swift:14:15:14:26 | ...[...] | -| try.swift:9:17:9:24 | call to source() | try.swift:9:13:9:24 | try ... | -| try.swift:15:17:15:24 | call to source() | try.swift:15:12:15:24 | try! ... | -| try.swift:18:13:18:25 | try? ... [some:0] | try.swift:18:12:18:27 | ...! | -| try.swift:18:18:18:25 | call to source() | try.swift:18:12:18:27 | ...! | -| try.swift:18:18:18:25 | call to source() | try.swift:18:18:18:25 | call to source() [some:0] | -| try.swift:18:18:18:25 | call to source() [some:0] | try.swift:18:13:18:25 | try? ... [some:0] | +| conversions.swift:33:16:33:26 | call to sourceInt() | conversions.swift:33:12:33:27 | call to Self.init(_:) | provenance | | +| conversions.swift:34:18:34:28 | call to sourceInt() | conversions.swift:34:12:34:29 | call to Self.init(_:) | provenance | | +| conversions.swift:35:18:35:28 | call to sourceInt() | conversions.swift:35:12:35:29 | call to Float.init(_:) | provenance | | +| conversions.swift:36:12:36:30 | call to String.init(_:) [Collection element] | conversions.swift:36:12:36:30 | call to String.init(_:) | provenance | | +| conversions.swift:36:19:36:29 | call to sourceInt() | conversions.swift:36:12:36:30 | call to String.init(_:) | provenance | | +| conversions.swift:36:19:36:29 | call to sourceInt() | conversions.swift:36:12:36:30 | call to String.init(_:) [Collection element] | provenance | | +| conversions.swift:37:12:37:30 | call to String.init(_:) | conversions.swift:37:12:37:32 | .utf8 | provenance | | +| conversions.swift:37:19:37:29 | call to sourceInt() | conversions.swift:37:12:37:30 | call to String.init(_:) | provenance | | +| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:40:12:40:12 | arr | provenance | | +| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:41:12:41:12 | arr [Collection element] | provenance | | +| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:41:12:41:17 | ...[...] | provenance | | +| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:42:20:42:20 | arr | provenance | | +| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:42:20:42:20 | arr [Collection element] | provenance | | +| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:43:20:43:20 | arr | provenance | | +| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:43:20:43:20 | arr [Collection element] | provenance | | +| conversions.swift:39:19:39:29 | call to sourceInt() | conversions.swift:39:12:39:30 | [...] [Collection element] | provenance | | +| conversions.swift:41:12:41:12 | arr [Collection element] | conversions.swift:41:12:41:17 | ...[...] | provenance | | +| conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | conversions.swift:42:12:42:23 | call to Array.init(_:) | provenance | | +| conversions.swift:42:20:42:20 | arr | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:42:20:42:20 | arr [Collection element] | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | conversions.swift:43:12:43:26 | ...[...] | provenance | | +| conversions.swift:43:20:43:20 | arr | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:43:20:43:20 | arr [Collection element] | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:44:12:44:39 | call to Array.init(_:) [Collection element] | conversions.swift:44:12:44:39 | call to Array.init(_:) | provenance | | +| conversions.swift:44:20:44:33 | call to sourceString() | conversions.swift:44:20:44:35 | .utf8 | provenance | | +| conversions.swift:44:20:44:35 | .utf8 | conversions.swift:44:12:44:39 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:45:12:45:39 | call to Array.init(_:) [Collection element] | conversions.swift:45:12:45:42 | ...[...] | provenance | | +| conversions.swift:45:20:45:33 | call to sourceString() | conversions.swift:45:20:45:35 | .utf8 | provenance | | +| conversions.swift:45:20:45:35 | .utf8 | conversions.swift:45:12:45:39 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:47:13:47:23 | call to sourceInt() | conversions.swift:48:13:48:13 | v | provenance | | +| conversions.swift:51:18:51:41 | call to numericCast(_:) | conversions.swift:52:12:52:12 | v2 | provenance | | +| conversions.swift:51:30:51:40 | call to sourceInt() | conversions.swift:51:18:51:41 | call to numericCast(_:) | provenance | | +| conversions.swift:54:17:54:57 | call to unsafeBitCast(_:to:) | conversions.swift:55:12:55:12 | v4 | provenance | | +| conversions.swift:54:31:54:41 | call to sourceInt() | conversions.swift:54:17:54:57 | call to unsafeBitCast(_:to:) | provenance | | +| conversions.swift:57:11:57:47 | call to Self.init(truncatingIfNeeded:) | conversions.swift:58:12:58:12 | v5 | provenance | | +| conversions.swift:57:36:57:46 | call to sourceInt() | conversions.swift:57:11:57:47 | call to Self.init(truncatingIfNeeded:) | provenance | | +| conversions.swift:60:11:60:39 | call to UInt.init(bitPattern:) | conversions.swift:61:12:61:12 | v6 | provenance | | +| conversions.swift:60:28:60:38 | call to sourceInt() | conversions.swift:60:11:60:39 | call to UInt.init(bitPattern:) | provenance | | +| conversions.swift:63:11:63:26 | call to abs(_:) | conversions.swift:64:12:64:12 | v7 | provenance | | +| conversions.swift:63:15:63:25 | call to sourceInt() | conversions.swift:63:11:63:26 | call to abs(_:) | provenance | | +| conversions.swift:69:28:69:38 | call to sourceInt() | conversions.swift:69:12:69:39 | call to advanced(by:) | provenance | | +| conversions.swift:71:12:71:36 | call to Self.init(exactly:) [some:0] | conversions.swift:71:12:71:37 | ...! | provenance | | +| conversions.swift:71:25:71:35 | call to sourceInt() | conversions.swift:71:12:71:36 | call to Self.init(exactly:) [some:0] | provenance | | +| conversions.swift:72:12:72:39 | call to Self.init(exactly:) [some:0] | conversions.swift:72:12:72:40 | ...! | provenance | | +| conversions.swift:72:28:72:38 | call to sourceInt() | conversions.swift:72:12:72:39 | call to Self.init(exactly:) [some:0] | provenance | | +| conversions.swift:73:26:73:36 | call to sourceInt() | conversions.swift:73:12:73:37 | call to Self.init(clamping:) | provenance | | +| conversions.swift:74:36:74:46 | call to sourceInt() | conversions.swift:74:12:74:47 | call to Self.init(truncatingIfNeeded:) | provenance | | +| conversions.swift:75:12:75:41 | call to Self.init(_:radix:) [some:0] | conversions.swift:75:12:75:42 | ...! | provenance | | +| conversions.swift:75:16:75:29 | call to sourceString() | conversions.swift:75:12:75:41 | call to Self.init(_:radix:) [some:0] | provenance | | +| conversions.swift:77:30:77:40 | call to sourceInt() | conversions.swift:77:12:77:41 | call to Self.init(littleEndian:) | provenance | | +| conversions.swift:78:27:78:37 | call to sourceInt() | conversions.swift:78:12:78:38 | call to Self.init(bigEndian:) | provenance | | +| conversions.swift:79:12:79:22 | call to sourceInt() | conversions.swift:79:12:79:24 | .littleEndian | provenance | | +| conversions.swift:80:12:80:22 | call to sourceInt() | conversions.swift:80:12:80:24 | .bigEndian | provenance | | +| conversions.swift:109:18:109:30 | call to sourceFloat() | conversions.swift:109:12:109:31 | call to Float.init(_:) | provenance | | +| conversions.swift:110:18:110:30 | call to sourceFloat() | conversions.swift:110:12:110:31 | call to UInt8.init(_:) | provenance | | +| conversions.swift:111:12:111:32 | call to String.init(_:) [Collection element] | conversions.swift:111:12:111:32 | call to String.init(_:) | provenance | | +| conversions.swift:111:19:111:31 | call to sourceFloat() | conversions.swift:111:12:111:32 | call to String.init(_:) | provenance | | +| conversions.swift:111:19:111:31 | call to sourceFloat() | conversions.swift:111:12:111:32 | call to String.init(_:) [Collection element] | provenance | | +| conversions.swift:112:12:112:32 | call to String.init(_:) | conversions.swift:112:12:112:34 | .utf8 | provenance | | +| conversions.swift:112:19:112:31 | call to sourceFloat() | conversions.swift:112:12:112:32 | call to String.init(_:) | provenance | | +| conversions.swift:113:12:113:34 | call to String.init(_:) [Collection element] | conversions.swift:113:12:113:34 | call to String.init(_:) | provenance | | +| conversions.swift:113:19:113:33 | call to sourceFloat80() | conversions.swift:113:12:113:34 | call to String.init(_:) | provenance | | +| conversions.swift:113:19:113:33 | call to sourceFloat80() | conversions.swift:113:12:113:34 | call to String.init(_:) [Collection element] | provenance | | +| conversions.swift:114:12:114:34 | call to String.init(_:) | conversions.swift:114:12:114:36 | .utf8 | provenance | | +| conversions.swift:114:19:114:33 | call to sourceFloat80() | conversions.swift:114:12:114:34 | call to String.init(_:) | provenance | | +| conversions.swift:115:12:115:33 | call to String.init(_:) [Collection element] | conversions.swift:115:12:115:33 | call to String.init(_:) | provenance | | +| conversions.swift:115:19:115:32 | call to sourceDouble() | conversions.swift:115:12:115:33 | call to String.init(_:) | provenance | | +| conversions.swift:115:19:115:32 | call to sourceDouble() | conversions.swift:115:12:115:33 | call to String.init(_:) [Collection element] | provenance | | +| conversions.swift:116:12:116:33 | call to String.init(_:) | conversions.swift:116:12:116:35 | .utf8 | provenance | | +| conversions.swift:116:19:116:32 | call to sourceDouble() | conversions.swift:116:12:116:33 | call to String.init(_:) | provenance | | +| conversions.swift:118:18:118:30 | call to sourceFloat() | conversions.swift:118:12:118:31 | call to Float.init(_:) | provenance | | +| conversions.swift:119:41:119:51 | call to sourceInt() | conversions.swift:119:12:119:70 | call to Float.init(sign:exponent:significand:) | provenance | | +| conversions.swift:120:57:120:69 | call to sourceFloat() | conversions.swift:120:12:120:70 | call to Float.init(sign:exponent:significand:) | provenance | | +| conversions.swift:122:44:122:56 | call to sourceFloat() | conversions.swift:122:12:122:57 | call to Float.init(signOf:magnitudeOf:) | provenance | | +| conversions.swift:124:12:124:24 | call to sourceFloat() | conversions.swift:124:12:124:26 | .exponent | provenance | | +| conversions.swift:125:12:125:24 | call to sourceFloat() | conversions.swift:125:12:125:26 | .significand | provenance | | +| conversions.swift:126:12:126:26 | call to sourceFloat80() | conversions.swift:126:12:126:28 | .exponent | provenance | | +| conversions.swift:127:12:127:26 | call to sourceFloat80() | conversions.swift:127:12:127:28 | .significand | provenance | | +| conversions.swift:128:12:128:25 | call to sourceDouble() | conversions.swift:128:12:128:27 | .exponent | provenance | | +| conversions.swift:129:12:129:25 | call to sourceDouble() | conversions.swift:129:12:129:27 | .significand | provenance | | +| conversions.swift:130:12:130:23 | call to sourceUInt() | conversions.swift:130:12:130:25 | .byteSwapped | provenance | | +| conversions.swift:131:12:131:25 | call to sourceUInt64() | conversions.swift:131:12:131:27 | .byteSwapped | provenance | | +| conversions.swift:136:12:136:33 | call to String.init(_:) [Collection element] | conversions.swift:136:12:136:33 | call to String.init(_:) | provenance | | +| conversions.swift:136:19:136:32 | call to sourceString() | conversions.swift:136:12:136:33 | call to String.init(_:) | provenance | | +| conversions.swift:136:19:136:32 | call to sourceString() | conversions.swift:136:12:136:33 | call to String.init(_:) [Collection element] | provenance | | +| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:144:12:144:35 | call to MyString.init(_:) [some:0] | provenance | | +| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:145:12:145:12 | ms2 | provenance | | +| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:146:12:146:16 | .description | provenance | | +| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:147:12:147:16 | .debugDescription | provenance | | +| conversions.swift:144:12:144:35 | call to MyString.init(_:) [some:0] | conversions.swift:144:12:144:36 | ...! | provenance | | +| conversions.swift:144:12:144:36 | ...! | conversions.swift:145:12:145:12 | ms2 | provenance | | +| conversions.swift:144:12:144:36 | ...! | conversions.swift:146:12:146:16 | .description | provenance | | +| conversions.swift:144:12:144:36 | ...! | conversions.swift:147:12:147:16 | .debugDescription | provenance | | +| conversions.swift:144:21:144:34 | call to sourceString() | conversions.swift:144:12:144:35 | call to MyString.init(_:) | provenance | | +| conversions.swift:152:31:152:44 | call to sourceString() | conversions.swift:153:12:153:12 | parent | provenance | | +| conversions.swift:152:31:152:44 | call to sourceString() | conversions.swift:154:12:154:12 | parent | provenance | | +| conversions.swift:152:31:152:44 | call to sourceString() | conversions.swift:156:40:156:40 | parent | provenance | | +| conversions.swift:156:25:156:69 | call to unsafeDowncast(_:to:) | conversions.swift:157:12:157:12 | v3 | provenance | | +| conversions.swift:156:25:156:69 | call to unsafeDowncast(_:to:) | conversions.swift:158:12:158:12 | v3 | provenance | | +| conversions.swift:156:40:156:40 | parent | conversions.swift:156:25:156:69 | call to unsafeDowncast(_:to:) | provenance | | +| conversions.swift:166:24:166:34 | call to sourceInt() | conversions.swift:166:12:166:35 | call to Self.init(_:) | provenance | | +| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:173:13:173:13 | arr1 | provenance | | +| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:175:13:175:19 | ...[...] | provenance | | +| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:178:25:178:25 | arr1 | provenance | | +| conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:185:31:185:31 | arr1 | provenance | | +| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:174:13:174:13 | arr2 | provenance | | +| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:176:13:176:13 | arr2 [Collection element] | provenance | | +| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:176:13:176:19 | ...[...] | provenance | | +| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:179:25:179:25 | arr2 | provenance | | +| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:179:25:179:25 | arr2 [Collection element] | provenance | | +| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:186:31:186:31 | arr2 | provenance | | +| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:186:31:186:31 | arr2 [Collection element] | provenance | | +| conversions.swift:172:15:172:25 | call to sourceInt() | conversions.swift:172:14:172:26 | [...] [Collection element] | provenance | | +| conversions.swift:176:13:176:13 | arr2 [Collection element] | conversions.swift:176:13:176:19 | ...[...] | provenance | | +| conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:180:13:180:13 | arr1b | provenance | | +| conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:182:13:182:13 | arr1b [Collection element] | provenance | | +| conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:182:13:182:20 | ...[...] | provenance | | +| conversions.swift:178:25:178:25 | arr1 | conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:181:13:181:13 | arr2b | provenance | | +| conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:183:13:183:13 | arr2b [Collection element] | provenance | | +| conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:183:13:183:20 | ...[...] | provenance | | +| conversions.swift:179:25:179:25 | arr2 | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:179:25:179:25 | arr2 [Collection element] | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | provenance | | +| conversions.swift:182:13:182:13 | arr1b [Collection element] | conversions.swift:182:13:182:20 | ...[...] | provenance | | +| conversions.swift:183:13:183:13 | arr2b [Collection element] | conversions.swift:183:13:183:20 | ...[...] | provenance | | +| conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:187:13:187:13 | arr1c | provenance | | +| conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:189:13:189:13 | arr1c [Collection element] | provenance | | +| conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:189:13:189:20 | ...[...] | provenance | | +| conversions.swift:185:31:185:31 | arr1 | conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | provenance | | +| conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:188:13:188:13 | arr2c | provenance | | +| conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:190:13:190:13 | arr2c [Collection element] | provenance | | +| conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:190:13:190:20 | ...[...] | provenance | | +| conversions.swift:186:31:186:31 | arr2 | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | provenance | | +| conversions.swift:186:31:186:31 | arr2 [Collection element] | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | provenance | | +| conversions.swift:189:13:189:13 | arr1c [Collection element] | conversions.swift:189:13:189:20 | ...[...] | provenance | | +| conversions.swift:190:13:190:13 | arr2c [Collection element] | conversions.swift:190:13:190:20 | ...[...] | provenance | | +| file://:0:0:0:0 | self [first] | file://:0:0:0:0 | .first | provenance | | +| file://:0:0:0:0 | self [second] | file://:0:0:0:0 | .second | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [first] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [second] | provenance | | +| simple.swift:12:17:12:24 | call to source() | simple.swift:12:13:12:24 | ... .+(_:_:) ... | provenance | | +| simple.swift:13:13:13:20 | call to source() | simple.swift:13:13:13:24 | ... .+(_:_:) ... | provenance | | +| simple.swift:14:17:14:24 | call to source() | simple.swift:14:13:14:24 | ... .-(_:_:) ... | provenance | | +| simple.swift:15:13:15:20 | call to source() | simple.swift:15:13:15:24 | ... .-(_:_:) ... | provenance | | +| simple.swift:16:17:16:24 | call to source() | simple.swift:16:13:16:24 | ... .*(_:_:) ... | provenance | | +| simple.swift:17:13:17:20 | call to source() | simple.swift:17:13:17:24 | ... .*(_:_:) ... | provenance | | +| simple.swift:18:19:18:26 | call to source() | simple.swift:18:13:18:26 | ... ./(_:_:) ... | provenance | | +| simple.swift:19:13:19:20 | call to source() | simple.swift:19:13:19:24 | ... ./(_:_:) ... | provenance | | +| simple.swift:20:19:20:26 | call to source() | simple.swift:20:13:20:26 | ... .%(_:_:) ... | provenance | | +| simple.swift:21:13:21:20 | call to source() | simple.swift:21:13:21:24 | ... .%(_:_:) ... | provenance | | +| simple.swift:23:14:23:21 | call to source() | simple.swift:23:13:23:21 | call to -(_:) | provenance | | +| simple.swift:27:18:27:25 | call to source() | simple.swift:27:13:27:25 | ... .&+(_:_:) ... | provenance | | +| simple.swift:28:13:28:20 | call to source() | simple.swift:28:13:28:25 | ... .&+(_:_:) ... | provenance | | +| simple.swift:29:18:29:25 | call to source() | simple.swift:29:13:29:25 | ... .&-(_:_:) ... | provenance | | +| simple.swift:30:13:30:20 | call to source() | simple.swift:30:13:30:25 | ... .&-(_:_:) ... | provenance | | +| simple.swift:31:18:31:25 | call to source() | simple.swift:31:13:31:25 | ... .&*(_:_:) ... | provenance | | +| simple.swift:32:13:32:20 | call to source() | simple.swift:32:13:32:25 | ... .&*(_:_:) ... | provenance | | +| simple.swift:40:8:40:15 | call to source() | simple.swift:41:13:41:13 | a | provenance | | +| simple.swift:40:8:40:15 | call to source() | simple.swift:43:13:43:13 | a | provenance | | +| simple.swift:48:8:48:15 | call to source() | simple.swift:49:13:49:13 | b | provenance | | +| simple.swift:48:8:48:15 | call to source() | simple.swift:51:13:51:13 | b | provenance | | +| simple.swift:54:8:54:15 | call to source() | simple.swift:55:13:55:13 | c | provenance | | +| simple.swift:54:8:54:15 | call to source() | simple.swift:57:13:57:13 | c | provenance | | +| simple.swift:60:8:60:15 | call to source() | simple.swift:61:13:61:13 | d | provenance | | +| simple.swift:60:8:60:15 | call to source() | simple.swift:63:13:63:13 | d | provenance | | +| simple.swift:66:8:66:15 | call to source() | simple.swift:67:13:67:13 | e | provenance | | +| simple.swift:66:8:66:15 | call to source() | simple.swift:69:13:69:13 | e | provenance | | +| simple.swift:73:17:73:24 | call to source() | simple.swift:73:13:73:24 | ... .\|(_:_:) ... | provenance | | +| simple.swift:74:13:74:20 | call to source() | simple.swift:74:13:74:24 | ... .\|(_:_:) ... | provenance | | +| simple.swift:76:22:76:29 | call to source() | simple.swift:76:13:76:29 | ... .&(_:_:) ... | provenance | | +| simple.swift:77:13:77:20 | call to source() | simple.swift:77:13:77:24 | ... .&(_:_:) ... | provenance | | +| simple.swift:79:22:79:29 | call to source() | simple.swift:79:13:79:29 | ... .^(_:_:) ... | provenance | | +| simple.swift:80:13:80:20 | call to source() | simple.swift:80:13:80:24 | ... .^(_:_:) ... | provenance | | +| simple.swift:82:13:82:20 | call to source() | simple.swift:82:13:82:25 | ... .<<(_:_:) ... | provenance | | +| simple.swift:83:13:83:20 | call to source() | simple.swift:83:13:83:26 | ... .&<<(_:_:) ... | provenance | | +| simple.swift:84:13:84:20 | call to source() | simple.swift:84:13:84:25 | ... .>>(_:_:) ... | provenance | | +| simple.swift:85:13:85:20 | call to source() | simple.swift:85:13:85:26 | ... .&>>(_:_:) ... | provenance | | +| simple.swift:87:14:87:21 | call to source() | simple.swift:87:13:87:21 | call to ~(_:) | provenance | | +| stringinterpolation.swift:6:6:6:6 | self [first] | file://:0:0:0:0 | self [first] | provenance | | +| stringinterpolation.swift:6:6:6:6 | value | file://:0:0:0:0 | value | provenance | | +| stringinterpolation.swift:7:6:7:6 | self [second] | file://:0:0:0:0 | self [second] | provenance | | +| stringinterpolation.swift:7:6:7:6 | value | file://:0:0:0:0 | value | provenance | | +| stringinterpolation.swift:11:36:11:44 | pair [first] | stringinterpolation.swift:13:36:13:36 | pair [first] | provenance | | +| stringinterpolation.swift:13:3:13:3 | [post] self | stringinterpolation.swift:11:11:14:2 | self[return] | provenance | | +| stringinterpolation.swift:13:36:13:36 | pair [first] | stringinterpolation.swift:6:6:6:6 | self [first] | provenance | | +| stringinterpolation.swift:13:36:13:36 | pair [first] | stringinterpolation.swift:13:36:13:41 | .first | provenance | | +| stringinterpolation.swift:13:36:13:41 | .first | stringinterpolation.swift:11:11:14:2 | self[return] | provenance | | +| stringinterpolation.swift:13:36:13:41 | .first | stringinterpolation.swift:13:3:13:3 | [post] self | provenance | | +| stringinterpolation.swift:19:2:19:2 | [post] p1 [first] | stringinterpolation.swift:20:2:20:2 | p1 [first] | provenance | | +| stringinterpolation.swift:19:13:19:20 | call to source() | stringinterpolation.swift:6:6:6:6 | value | provenance | | +| stringinterpolation.swift:19:13:19:20 | call to source() | stringinterpolation.swift:19:2:19:2 | [post] p1 [first] | provenance | | +| stringinterpolation.swift:20:2:20:2 | p1 [first] | stringinterpolation.swift:22:21:22:21 | p1 [first] | provenance | | +| stringinterpolation.swift:20:2:20:2 | p1 [first] | stringinterpolation.swift:24:21:24:21 | p1 [first] | provenance | | +| stringinterpolation.swift:22:21:22:21 | p1 [first] | stringinterpolation.swift:6:6:6:6 | self [first] | provenance | | +| stringinterpolation.swift:22:21:22:21 | p1 [first] | stringinterpolation.swift:22:21:22:24 | .first | provenance | | +| stringinterpolation.swift:22:21:22:24 | .first | stringinterpolation.swift:22:12:22:12 | "..." | provenance | | +| stringinterpolation.swift:24:20:24:20 | [post] $interpolation | stringinterpolation.swift:24:12:24:12 | "..." | provenance | | +| stringinterpolation.swift:24:21:24:21 | p1 [first] | stringinterpolation.swift:11:36:11:44 | pair [first] | provenance | | +| stringinterpolation.swift:24:21:24:21 | p1 [first] | stringinterpolation.swift:24:20:24:20 | [post] $interpolation | provenance | | +| stringinterpolation.swift:28:2:28:2 | [post] p2 [second] | stringinterpolation.swift:31:21:31:21 | p2 [second] | provenance | | +| stringinterpolation.swift:28:14:28:21 | call to source() | stringinterpolation.swift:7:6:7:6 | value | provenance | | +| stringinterpolation.swift:28:14:28:21 | call to source() | stringinterpolation.swift:28:2:28:2 | [post] p2 [second] | provenance | | +| stringinterpolation.swift:31:21:31:21 | p2 [second] | stringinterpolation.swift:7:6:7:6 | self [second] | provenance | | +| stringinterpolation.swift:31:21:31:21 | p2 [second] | stringinterpolation.swift:31:21:31:24 | .second | provenance | | +| stringinterpolation.swift:31:21:31:24 | .second | stringinterpolation.swift:31:12:31:12 | "..." | provenance | | +| stringinterpolation.swift:36:10:36:17 | call to source() | stringinterpolation.swift:40:12:40:12 | "..." | provenance | | +| stringinterpolation.swift:36:10:36:17 | call to source() | stringinterpolation.swift:41:12:41:12 | "..." | provenance | | +| stringinterpolation.swift:36:10:36:17 | call to source() | stringinterpolation.swift:42:12:42:12 | "..." | provenance | | +| subscript.swift:13:15:13:22 | call to source() | subscript.swift:13:15:13:25 | ...[...] | provenance | | +| subscript.swift:14:15:14:23 | call to source2() | subscript.swift:14:15:14:26 | ...[...] | provenance | | +| try.swift:9:17:9:24 | call to source() | try.swift:9:13:9:24 | try ... | provenance | | +| try.swift:15:17:15:24 | call to source() | try.swift:15:12:15:24 | try! ... | provenance | | +| try.swift:18:13:18:25 | try? ... [some:0] | try.swift:18:12:18:27 | ...! | provenance | | +| try.swift:18:18:18:25 | call to source() | try.swift:18:12:18:27 | ...! | provenance | | +| try.swift:18:18:18:25 | call to source() | try.swift:18:18:18:25 | call to source() [some:0] | provenance | | +| try.swift:18:18:18:25 | call to source() [some:0] | try.swift:18:13:18:25 | try? ... [some:0] | provenance | | nodes | conversions.swift:32:12:32:22 | call to sourceInt() | semmle.label | call to sourceInt() | | conversions.swift:33:12:33:27 | call to Self.init(_:) | semmle.label | call to Self.init(_:) | diff --git a/swift/ql/test/query-tests/Security/CWE-022/PathInjectionTest.expected b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.expected similarity index 100% rename from swift/ql/test/query-tests/Security/CWE-022/PathInjectionTest.expected rename to swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.expected diff --git a/swift/ql/test/query-tests/Security/CWE-022/PathInjectionTest.ql b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.ql similarity index 100% rename from swift/ql/test/query-tests/Security/CWE-022/PathInjectionTest.ql rename to swift/ql/test/query-tests/Security/CWE-022/PathInjection/PathInjectionTest.ql diff --git a/swift/ql/test/query-tests/Security/CWE-022/testPathInjection.swift b/swift/ql/test/query-tests/Security/CWE-022/PathInjection/testPathInjection.swift similarity index 100% rename from swift/ql/test/query-tests/Security/CWE-022/testPathInjection.swift rename to swift/ql/test/query-tests/Security/CWE-022/PathInjection/testPathInjection.swift diff --git a/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.expected b/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.expected new file mode 100644 index 000000000000..24a612d77880 --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.expected @@ -0,0 +1,13 @@ +edges +| UnsafeUnpack.swift:62:9:62:48 | call to Data.init(contentsOf:options:) | UnsafeUnpack.swift:62:60:62:60 | source | provenance | | +| UnsafeUnpack.swift:62:60:62:60 | source | UnsafeUnpack.swift:64:27:64:27 | source | provenance | | +| UnsafeUnpack.swift:62:60:62:60 | source | UnsafeUnpack.swift:67:39:67:39 | source | provenance | | +nodes +| UnsafeUnpack.swift:62:9:62:48 | call to Data.init(contentsOf:options:) | semmle.label | call to Data.init(contentsOf:options:) | +| UnsafeUnpack.swift:62:60:62:60 | source | semmle.label | source | +| UnsafeUnpack.swift:64:27:64:27 | source | semmle.label | source | +| UnsafeUnpack.swift:67:39:67:39 | source | semmle.label | source | +subpaths +#select +| UnsafeUnpack.swift:64:27:64:27 | source | UnsafeUnpack.swift:62:9:62:48 | call to Data.init(contentsOf:options:) | UnsafeUnpack.swift:64:27:64:27 | source | Unsafe unpacking from a malicious zip retrieved from a remote location. | +| UnsafeUnpack.swift:67:39:67:39 | source | UnsafeUnpack.swift:62:9:62:48 | call to Data.init(contentsOf:options:) | UnsafeUnpack.swift:67:39:67:39 | source | Unsafe unpacking from a malicious zip retrieved from a remote location. | diff --git a/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.qlref b/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.qlref new file mode 100644 index 000000000000..1d1a5a3a84ce --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.qlref @@ -0,0 +1 @@ +experimental/Security/CWE-022/UnsafeUnpack.ql \ No newline at end of file diff --git a/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.swift b/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.swift new file mode 100644 index 000000000000..5d7dc6c58b44 --- /dev/null +++ b/swift/ql/test/query-tests/Security/CWE-022/UnsafeUnpack/UnsafeUnpack.swift @@ -0,0 +1,71 @@ + +// --- stubs --- +struct URL +{ + init?(string: String) {} + init(fileURLWithPath: String) {} +} + +class Zip { + class func unzipFile(_ zipFilePath: URL, destination: URL, overwrite: Bool, password: String?, progress: ((_ progress: Double) -> ())? = nil, fileOutputHandler: ((_ unzippedFile: URL) -> Void)? = nil) throws {} +} + + +class NSObject { +} + +class Progress : NSObject { + +} + +class FileManager : NSObject { + func unzipItem(at sourceURL: URL, to destinationURL: URL, skipCRC32: Bool = false, + progress: Progress? = nil, pathEncoding: String.Encoding? = nil) throws {} +} + +protocol DataProtocol { } +class Data : DataProtocol { + struct ReadingOptions : OptionSet { let rawValue: Int } + struct WritingOptions : OptionSet { let rawValue: Int } + + init(_ elements: S) { count = 0 } + init(contentsOf: URL, options: ReadingOptions) { count = 0 } + func write(to: URL, options: Data.WritingOptions = []) {} + + var count: Int +} + +extension String { + + struct Encoding { + var rawValue: UInt + + init(rawValue: UInt) { self.rawValue = rawValue } + + static let ascii = Encoding(rawValue: 1) + } + init(contentsOf url: URL) throws { + self.init("") + } +} + +// --- tests --- + +func testCommandInjectionQhelpExamples() { + guard let remoteURL = URL(string: "https://example.com/") else { + return + } + + let source = URL(fileURLWithPath: "/sourcePath") + let destination = URL(fileURLWithPath: "/destination") + + try Data(contentsOf: remoteURL, options: []).write(to: source) + do { + try Zip.unzipFile(source, destination: destination, overwrite: true, password: nil) // BAD + + let fileManager = FileManager() + try fileManager.unzipItem(at: source, to: destination) // BAD + } catch { + print("Error: \(error)") + } +} \ No newline at end of file diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index b6c8f60bbc15..9f783f1ea66e 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -1,184 +1,184 @@ edges -| CommandInjection.swift:58:22:58:33 | command | CommandInjection.swift:62:16:62:16 | command | -| CommandInjection.swift:58:22:58:33 | command [some:0] | CommandInjection.swift:62:16:62:16 | command [some:0] | -| CommandInjection.swift:62:16:62:16 | command | CommandInjection.swift:62:16:62:16 | command [some:0] | -| CommandInjection.swift:69:8:69:12 | let ...? [some:0, some:0] | CommandInjection.swift:69:12:69:12 | userControlledString [some:0] | -| CommandInjection.swift:69:8:69:12 | let ...? [some:0] | CommandInjection.swift:69:12:69:12 | userControlledString | -| CommandInjection.swift:69:12:69:12 | userControlledString | CommandInjection.swift:75:27:75:27 | userControlledString | -| CommandInjection.swift:69:12:69:12 | userControlledString | CommandInjection.swift:78:43:78:43 | userControlledString | -| CommandInjection.swift:69:12:69:12 | userControlledString [some:0] | CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | -| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | -| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:75:27:75:27 | userControlledString | -| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:78:43:78:43 | userControlledString | -| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0, some:0] | CommandInjection.swift:69:8:69:12 | let ...? [some:0, some:0] | -| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:69:8:69:12 | let ...? [some:0] | -| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0, some:0] | -| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | -| CommandInjection.swift:75:2:75:2 | [post] task1 [arguments, Collection element] | CommandInjection.swift:75:2:75:2 | [post] task1 | -| CommandInjection.swift:75:20:75:47 | [...] [Collection element] | CommandInjection.swift:75:2:75:2 | [post] task1 [arguments, Collection element] | -| CommandInjection.swift:75:27:75:27 | userControlledString | CommandInjection.swift:75:20:75:47 | [...] [Collection element] | -| CommandInjection.swift:78:5:78:9 | let ...? [some:0] | CommandInjection.swift:78:9:78:9 | validatedString | -| CommandInjection.swift:78:9:78:9 | validatedString | CommandInjection.swift:81:31:81:31 | validatedString | -| CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) | CommandInjection.swift:81:31:81:31 | validatedString | -| CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) [some:0] | CommandInjection.swift:78:5:78:9 | let ...? [some:0] | -| CommandInjection.swift:78:43:78:43 | userControlledString | CommandInjection.swift:58:22:58:33 | command | -| CommandInjection.swift:78:43:78:43 | userControlledString | CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) | -| CommandInjection.swift:78:43:78:43 | userControlledString | CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) [some:0] | -| CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | CommandInjection.swift:58:22:58:33 | command [some:0] | -| CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) [some:0] | -| CommandInjection.swift:81:6:81:6 | [post] task2 [arguments, Collection element] | CommandInjection.swift:81:6:81:6 | [post] task2 | -| CommandInjection.swift:81:24:81:46 | [...] [Collection element] | CommandInjection.swift:81:6:81:6 | [post] task2 [arguments, Collection element] | -| CommandInjection.swift:81:31:81:31 | validatedString | CommandInjection.swift:81:24:81:46 | [...] [Collection element] | -| CommandInjection.swift:93:20:93:40 | arguments [Collection element] | CommandInjection.swift:94:20:94:20 | arguments [Collection element] | -| CommandInjection.swift:94:3:94:3 | [post] self [arguments, Collection element] | CommandInjection.swift:94:3:94:3 | [post] self | -| CommandInjection.swift:94:20:94:20 | arguments [Collection element] | CommandInjection.swift:94:3:94:3 | [post] self [arguments, Collection element] | -| CommandInjection.swift:99:8:99:12 | let ...? [some:0] | CommandInjection.swift:99:12:99:12 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:114:36:114:36 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:115:28:115:28 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:119:45:119:45 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:120:36:120:36 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:125:46:125:46 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:126:22:126:22 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:130:45:130:45 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:131:36:131:36 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:132:21:132:21 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:133:22:133:22 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:134:24:134:24 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:148:35:148:35 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:149:70:149:70 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:154:53:154:53 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:157:52:157:52 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:158:33:158:33 | userControlledString | -| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:160:57:160:57 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) [some:0] | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:114:36:114:36 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:115:28:115:28 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:119:45:119:45 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:120:36:120:36 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:46:125:46 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:22:126:22 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:130:45:130:45 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:131:36:131:36 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:132:21:132:21 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:133:22:133:22 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:134:24:134:24 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:144:42:144:42 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:145:75:145:75 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:148:35:148:35 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:149:70:149:70 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:154:53:154:53 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:157:52:157:52 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:158:33:158:33 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:160:57:160:57 | userControlledString | -| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:99:8:99:12 | let ...? [some:0] | -| CommandInjection.swift:114:2:114:2 | [post] task3 [executableURL] | CommandInjection.swift:114:2:114:2 | [post] task3 | -| CommandInjection.swift:114:24:114:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:114:24:114:57 | ...! | -| CommandInjection.swift:114:24:114:57 | ...! | CommandInjection.swift:114:2:114:2 | [post] task3 [executableURL] | -| CommandInjection.swift:114:36:114:36 | userControlledString | CommandInjection.swift:114:24:114:56 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:115:2:115:2 | [post] task3 [arguments, Collection element] | CommandInjection.swift:115:2:115:2 | [post] task3 | -| CommandInjection.swift:115:20:115:48 | [...] [Collection element] | CommandInjection.swift:115:2:115:2 | [post] task3 [arguments, Collection element] | -| CommandInjection.swift:115:28:115:28 | userControlledString | CommandInjection.swift:115:20:115:48 | [...] [Collection element] | -| CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | CommandInjection.swift:119:2:119:2 | [post] task4 | -| CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | -| CommandInjection.swift:119:45:119:45 | userControlledString | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | -| CommandInjection.swift:120:2:120:2 | [post] task4 [executableURL] | CommandInjection.swift:120:2:120:2 | [post] task4 | -| CommandInjection.swift:120:24:120:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:120:24:120:57 | ...! | -| CommandInjection.swift:120:24:120:57 | ...! | CommandInjection.swift:120:2:120:2 | [post] task4 [executableURL] | -| CommandInjection.swift:120:36:120:36 | userControlledString | CommandInjection.swift:120:24:120:56 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 | -| CommandInjection.swift:121:20:121:56 | [...] [Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | -| CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | CommandInjection.swift:121:20:121:56 | [...] [Collection element] | -| CommandInjection.swift:125:2:125:7 | [post] ...? [executableURL] | CommandInjection.swift:125:2:125:7 | [post] ...? | -| CommandInjection.swift:125:25:125:66 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:125:2:125:7 | [post] ...? [executableURL] | -| CommandInjection.swift:125:46:125:46 | userControlledString | CommandInjection.swift:125:25:125:66 | call to URL.init(fileURLWithPath:) | -| CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? | -| CommandInjection.swift:126:21:126:42 | [...] [Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | -| CommandInjection.swift:126:22:126:22 | userControlledString | CommandInjection.swift:126:21:126:42 | [...] [Collection element] | -| CommandInjection.swift:130:2:130:2 | [post] task6 [executableURL] | CommandInjection.swift:130:2:130:2 | [post] task6 | -| CommandInjection.swift:130:24:130:65 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:130:2:130:2 | [post] task6 [executableURL] | -| CommandInjection.swift:130:45:130:45 | userControlledString | CommandInjection.swift:130:24:130:65 | call to URL.init(fileURLWithPath:) | -| CommandInjection.swift:131:2:131:2 | [post] task6 [executableURL] | CommandInjection.swift:131:2:131:2 | [post] task6 | -| CommandInjection.swift:131:24:131:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:131:24:131:57 | ...! | -| CommandInjection.swift:131:24:131:57 | ...! | CommandInjection.swift:131:2:131:2 | [post] task6 [executableURL] | -| CommandInjection.swift:131:36:131:36 | userControlledString | CommandInjection.swift:131:24:131:56 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:132:2:132:2 | [post] task6 [arguments, Collection element] | CommandInjection.swift:132:2:132:2 | [post] task6 | -| CommandInjection.swift:132:20:132:41 | [...] [Collection element] | CommandInjection.swift:132:2:132:2 | [post] task6 [arguments, Collection element] | -| CommandInjection.swift:132:21:132:21 | userControlledString | CommandInjection.swift:132:20:132:41 | [...] [Collection element] | -| CommandInjection.swift:133:21:133:42 | [...] [Collection element] | CommandInjection.swift:93:20:93:40 | arguments [Collection element] | -| CommandInjection.swift:133:22:133:22 | userControlledString | CommandInjection.swift:133:21:133:42 | [...] [Collection element] | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:148:35:148:35 | userControlledString | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:149:70:149:70 | userControlledString | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:154:53:154:53 | userControlledString | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:157:52:157:52 | userControlledString | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:158:33:158:33 | userControlledString | -| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:160:57:160:57 | userControlledString | -| CommandInjection.swift:145:67:145:95 | [...] [Collection element] | CommandInjection.swift:145:67:145:95 | [...] | -| CommandInjection.swift:145:75:145:75 | userControlledString | CommandInjection.swift:145:67:145:95 | [...] [Collection element] | -| CommandInjection.swift:148:23:148:55 | call to URL.init(string:) [some:0] | CommandInjection.swift:148:23:148:56 | ...! | -| CommandInjection.swift:148:35:148:35 | userControlledString | CommandInjection.swift:148:23:148:55 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:149:62:149:90 | [...] [Collection element] | CommandInjection.swift:149:62:149:90 | [...] | -| CommandInjection.swift:149:70:149:70 | userControlledString | CommandInjection.swift:149:62:149:90 | [...] [Collection element] | -| CommandInjection.swift:154:41:154:73 | call to URL.init(string:) [some:0] | CommandInjection.swift:154:41:154:74 | ...! | -| CommandInjection.swift:154:53:154:53 | userControlledString | CommandInjection.swift:154:41:154:73 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:157:40:157:73 | ...! | -| CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:157:40:157:73 | ...! | -| CommandInjection.swift:157:40:157:73 | ...! | file://:0:0:0:0 | url | -| CommandInjection.swift:157:52:157:52 | userControlledString | CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:158:32:158:53 | [...] [Collection element] | CommandInjection.swift:158:32:158:53 | [...] | -| CommandInjection.swift:158:33:158:33 | userControlledString | CommandInjection.swift:158:32:158:53 | [...] [Collection element] | -| CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:160:45:160:78 | ...! | -| CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:160:45:160:78 | ...! | -| CommandInjection.swift:160:45:160:78 | ...! | file://:0:0:0:0 | url | -| CommandInjection.swift:160:57:160:57 | userControlledString | CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | -| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:175:19:175:19 | newValue [Collection element] | -| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:176:20:176:20 | newValue [Collection element] | -| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:177:19:177:19 | newValue [Collection element] | -| CommandInjection.swift:175:4:175:4 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:175:4:175:4 | [post] getter for .p1 | -| CommandInjection.swift:175:19:175:19 | newValue [Collection element] | CommandInjection.swift:175:4:175:4 | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:176:4:176:6 | [post] ...! [arguments, Collection element] | CommandInjection.swift:176:4:176:6 | [post] ...! | -| CommandInjection.swift:176:20:176:20 | newValue [Collection element] | CommandInjection.swift:176:4:176:6 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:177:4:177:4 | [post] ...! [arguments, Collection element] | CommandInjection.swift:177:4:177:4 | [post] ...! | -| CommandInjection.swift:177:19:177:19 | newValue [Collection element] | CommandInjection.swift:177:4:177:4 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:182:9:182:13 | let ...? [some:0] | CommandInjection.swift:182:13:182:13 | userControlledString | -| CommandInjection.swift:182:13:182:13 | userControlledString | CommandInjection.swift:186:19:186:19 | userControlledString | -| CommandInjection.swift:182:13:182:13 | userControlledString | CommandInjection.swift:192:31:192:31 | userControlledString | -| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) [some:0] | -| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:186:19:186:19 | userControlledString | -| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:192:31:192:31 | userControlledString | -| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:182:9:182:13 | let ...? [some:0] | -| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | -| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | -| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | -| CommandInjection.swift:186:19:186:19 | userControlledString | CommandInjection.swift:186:18:186:39 | [...] [Collection element] | -| CommandInjection.swift:188:3:188:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:188:3:188:3 | [post] getter for .p1 | -| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:188:3:188:3 | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | -| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | -| CommandInjection.swift:189:3:189:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:189:3:189:5 | [post] ...! | -| CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | CommandInjection.swift:189:3:189:5 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | -| CommandInjection.swift:190:3:190:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:190:3:190:3 | [post] ...! | -| CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | CommandInjection.swift:190:3:190:3 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | -| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:195:19:195:19 | tainted2 [Collection element] | -| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:196:18:196:18 | tainted2 [Collection element] | -| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:198:13:198:13 | tainted2 [Collection element] | -| CommandInjection.swift:192:31:192:31 | userControlledString | CommandInjection.swift:192:30:192:51 | [...] [Collection element] | -| CommandInjection.swift:194:3:194:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:194:3:194:3 | [post] getter for .p1 | -| CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | CommandInjection.swift:194:3:194:3 | [post] getter for .p1 [arguments, Collection element] | -| CommandInjection.swift:195:3:195:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:195:3:195:5 | [post] ...! | -| CommandInjection.swift:195:19:195:19 | tainted2 [Collection element] | CommandInjection.swift:195:3:195:5 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:196:3:196:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:196:3:196:3 | [post] ...! | -| CommandInjection.swift:196:18:196:18 | tainted2 [Collection element] | CommandInjection.swift:196:3:196:3 | [post] ...! [arguments, Collection element] | -| CommandInjection.swift:198:13:198:13 | tainted2 [Collection element] | CommandInjection.swift:174:3:174:3 | newValue [Collection element] | -| file://:0:0:0:0 | url | file://:0:0:0:0 | url | -| file://:0:0:0:0 | url | file://:0:0:0:0 | url | +| CommandInjection.swift:58:22:58:33 | command | CommandInjection.swift:62:16:62:16 | command | provenance | | +| CommandInjection.swift:58:22:58:33 | command [some:0] | CommandInjection.swift:62:16:62:16 | command [some:0] | provenance | | +| CommandInjection.swift:62:16:62:16 | command | CommandInjection.swift:62:16:62:16 | command [some:0] | provenance | | +| CommandInjection.swift:69:8:69:12 | let ...? [some:0, some:0] | CommandInjection.swift:69:12:69:12 | userControlledString [some:0] | provenance | | +| CommandInjection.swift:69:8:69:12 | let ...? [some:0] | CommandInjection.swift:69:12:69:12 | userControlledString | provenance | | +| CommandInjection.swift:69:12:69:12 | userControlledString | CommandInjection.swift:75:27:75:27 | userControlledString | provenance | | +| CommandInjection.swift:69:12:69:12 | userControlledString | CommandInjection.swift:78:43:78:43 | userControlledString | provenance | | +| CommandInjection.swift:69:12:69:12 | userControlledString [some:0] | CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | provenance | | +| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | provenance | | +| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:75:27:75:27 | userControlledString | provenance | | +| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) | CommandInjection.swift:78:43:78:43 | userControlledString | provenance | | +| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0, some:0] | CommandInjection.swift:69:8:69:12 | let ...? [some:0, some:0] | provenance | | +| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:69:8:69:12 | let ...? [some:0] | provenance | | +| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0, some:0] | provenance | | +| CommandInjection.swift:69:40:69:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | provenance | | +| CommandInjection.swift:75:2:75:2 | [post] task1 [arguments, Collection element] | CommandInjection.swift:75:2:75:2 | [post] task1 | provenance | | +| CommandInjection.swift:75:20:75:47 | [...] [Collection element] | CommandInjection.swift:75:2:75:2 | [post] task1 [arguments, Collection element] | provenance | | +| CommandInjection.swift:75:27:75:27 | userControlledString | CommandInjection.swift:75:20:75:47 | [...] [Collection element] | provenance | | +| CommandInjection.swift:78:5:78:9 | let ...? [some:0] | CommandInjection.swift:78:9:78:9 | validatedString | provenance | | +| CommandInjection.swift:78:9:78:9 | validatedString | CommandInjection.swift:81:31:81:31 | validatedString | provenance | | +| CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) | CommandInjection.swift:81:31:81:31 | validatedString | provenance | | +| CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) [some:0] | CommandInjection.swift:78:5:78:9 | let ...? [some:0] | provenance | | +| CommandInjection.swift:78:43:78:43 | userControlledString | CommandInjection.swift:58:22:58:33 | command | provenance | | +| CommandInjection.swift:78:43:78:43 | userControlledString | CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) | provenance | | +| CommandInjection.swift:78:43:78:43 | userControlledString | CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) [some:0] | provenance | | +| CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | CommandInjection.swift:58:22:58:33 | command [some:0] | provenance | | +| CommandInjection.swift:78:43:78:43 | userControlledString [some:0] | CommandInjection.swift:78:27:78:63 | call to validateCommand(_:) [some:0] | provenance | | +| CommandInjection.swift:81:6:81:6 | [post] task2 [arguments, Collection element] | CommandInjection.swift:81:6:81:6 | [post] task2 | provenance | | +| CommandInjection.swift:81:24:81:46 | [...] [Collection element] | CommandInjection.swift:81:6:81:6 | [post] task2 [arguments, Collection element] | provenance | | +| CommandInjection.swift:81:31:81:31 | validatedString | CommandInjection.swift:81:24:81:46 | [...] [Collection element] | provenance | | +| CommandInjection.swift:93:20:93:40 | arguments [Collection element] | CommandInjection.swift:94:20:94:20 | arguments [Collection element] | provenance | | +| CommandInjection.swift:94:3:94:3 | [post] self [arguments, Collection element] | CommandInjection.swift:94:3:94:3 | [post] self | provenance | | +| CommandInjection.swift:94:20:94:20 | arguments [Collection element] | CommandInjection.swift:94:3:94:3 | [post] self [arguments, Collection element] | provenance | | +| CommandInjection.swift:99:8:99:12 | let ...? [some:0] | CommandInjection.swift:99:12:99:12 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:114:36:114:36 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:115:28:115:28 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:119:45:119:45 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:120:36:120:36 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:125:46:125:46 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:126:22:126:22 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:130:45:130:45 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:131:36:131:36 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:132:21:132:21 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:133:22:133:22 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:134:24:134:24 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:148:35:148:35 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:149:70:149:70 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:154:53:154:53 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:157:52:157:52 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:158:33:158:33 | userControlledString | provenance | | +| CommandInjection.swift:99:12:99:12 | userControlledString | CommandInjection.swift:160:57:160:57 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) [some:0] | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:114:36:114:36 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:115:28:115:28 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:119:45:119:45 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:120:36:120:36 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:125:46:125:46 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:126:22:126:22 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:130:45:130:45 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:131:36:131:36 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:132:21:132:21 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:133:22:133:22 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:134:24:134:24 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:144:42:144:42 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:145:75:145:75 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:148:35:148:35 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:149:70:149:70 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:154:53:154:53 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:157:52:157:52 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:158:33:158:33 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) | CommandInjection.swift:160:57:160:57 | userControlledString | provenance | | +| CommandInjection.swift:99:40:99:94 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:99:8:99:12 | let ...? [some:0] | provenance | | +| CommandInjection.swift:114:2:114:2 | [post] task3 [executableURL] | CommandInjection.swift:114:2:114:2 | [post] task3 | provenance | | +| CommandInjection.swift:114:24:114:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:114:24:114:57 | ...! | provenance | | +| CommandInjection.swift:114:24:114:57 | ...! | CommandInjection.swift:114:2:114:2 | [post] task3 [executableURL] | provenance | | +| CommandInjection.swift:114:36:114:36 | userControlledString | CommandInjection.swift:114:24:114:56 | call to URL.init(string:) [some:0] | provenance | | +| CommandInjection.swift:115:2:115:2 | [post] task3 [arguments, Collection element] | CommandInjection.swift:115:2:115:2 | [post] task3 | provenance | | +| CommandInjection.swift:115:20:115:48 | [...] [Collection element] | CommandInjection.swift:115:2:115:2 | [post] task3 [arguments, Collection element] | provenance | | +| CommandInjection.swift:115:28:115:28 | userControlledString | CommandInjection.swift:115:20:115:48 | [...] [Collection element] | provenance | | +| CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | CommandInjection.swift:119:2:119:2 | [post] task4 | provenance | | +| CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:119:2:119:2 | [post] task4 [executableURL] | provenance | | +| CommandInjection.swift:119:45:119:45 | userControlledString | CommandInjection.swift:119:24:119:65 | call to URL.init(fileURLWithPath:) | provenance | | +| CommandInjection.swift:120:2:120:2 | [post] task4 [executableURL] | CommandInjection.swift:120:2:120:2 | [post] task4 | provenance | | +| CommandInjection.swift:120:24:120:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:120:24:120:57 | ...! | provenance | | +| CommandInjection.swift:120:24:120:57 | ...! | CommandInjection.swift:120:2:120:2 | [post] task4 [executableURL] | provenance | | +| CommandInjection.swift:120:36:120:36 | userControlledString | CommandInjection.swift:120:24:120:56 | call to URL.init(string:) [some:0] | provenance | | +| CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 | provenance | | +| CommandInjection.swift:121:20:121:56 | [...] [Collection element] | CommandInjection.swift:121:2:121:2 | [post] task4 [arguments, Collection element] | provenance | | +| CommandInjection.swift:121:28:121:36 | ... .+(_:_:) ... | CommandInjection.swift:121:20:121:56 | [...] [Collection element] | provenance | | +| CommandInjection.swift:125:2:125:7 | [post] ...? [executableURL] | CommandInjection.swift:125:2:125:7 | [post] ...? | provenance | | +| CommandInjection.swift:125:25:125:66 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:125:2:125:7 | [post] ...? [executableURL] | provenance | | +| CommandInjection.swift:125:46:125:46 | userControlledString | CommandInjection.swift:125:25:125:66 | call to URL.init(fileURLWithPath:) | provenance | | +| CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? | provenance | | +| CommandInjection.swift:126:21:126:42 | [...] [Collection element] | CommandInjection.swift:126:2:126:7 | [post] ...? [arguments, Collection element] | provenance | | +| CommandInjection.swift:126:22:126:22 | userControlledString | CommandInjection.swift:126:21:126:42 | [...] [Collection element] | provenance | | +| CommandInjection.swift:130:2:130:2 | [post] task6 [executableURL] | CommandInjection.swift:130:2:130:2 | [post] task6 | provenance | | +| CommandInjection.swift:130:24:130:65 | call to URL.init(fileURLWithPath:) | CommandInjection.swift:130:2:130:2 | [post] task6 [executableURL] | provenance | | +| CommandInjection.swift:130:45:130:45 | userControlledString | CommandInjection.swift:130:24:130:65 | call to URL.init(fileURLWithPath:) | provenance | | +| CommandInjection.swift:131:2:131:2 | [post] task6 [executableURL] | CommandInjection.swift:131:2:131:2 | [post] task6 | provenance | | +| CommandInjection.swift:131:24:131:56 | call to URL.init(string:) [some:0] | CommandInjection.swift:131:24:131:57 | ...! | provenance | | +| CommandInjection.swift:131:24:131:57 | ...! | CommandInjection.swift:131:2:131:2 | [post] task6 [executableURL] | provenance | | +| CommandInjection.swift:131:36:131:36 | userControlledString | CommandInjection.swift:131:24:131:56 | call to URL.init(string:) [some:0] | provenance | | +| CommandInjection.swift:132:2:132:2 | [post] task6 [arguments, Collection element] | CommandInjection.swift:132:2:132:2 | [post] task6 | provenance | | +| CommandInjection.swift:132:20:132:41 | [...] [Collection element] | CommandInjection.swift:132:2:132:2 | [post] task6 [arguments, Collection element] | provenance | | +| CommandInjection.swift:132:21:132:21 | userControlledString | CommandInjection.swift:132:20:132:41 | [...] [Collection element] | provenance | | +| CommandInjection.swift:133:21:133:42 | [...] [Collection element] | CommandInjection.swift:93:20:93:40 | arguments [Collection element] | provenance | | +| CommandInjection.swift:133:22:133:22 | userControlledString | CommandInjection.swift:133:21:133:42 | [...] [Collection element] | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:144:42:144:42 | userControlledString | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:145:75:145:75 | userControlledString | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:148:35:148:35 | userControlledString | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:149:70:149:70 | userControlledString | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:154:53:154:53 | userControlledString | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:157:52:157:52 | userControlledString | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:158:33:158:33 | userControlledString | provenance | | +| CommandInjection.swift:134:24:134:24 | userControlledString | CommandInjection.swift:160:57:160:57 | userControlledString | provenance | | +| CommandInjection.swift:145:67:145:95 | [...] [Collection element] | CommandInjection.swift:145:67:145:95 | [...] | provenance | | +| CommandInjection.swift:145:75:145:75 | userControlledString | CommandInjection.swift:145:67:145:95 | [...] [Collection element] | provenance | | +| CommandInjection.swift:148:23:148:55 | call to URL.init(string:) [some:0] | CommandInjection.swift:148:23:148:56 | ...! | provenance | | +| CommandInjection.swift:148:35:148:35 | userControlledString | CommandInjection.swift:148:23:148:55 | call to URL.init(string:) [some:0] | provenance | | +| CommandInjection.swift:149:62:149:90 | [...] [Collection element] | CommandInjection.swift:149:62:149:90 | [...] | provenance | | +| CommandInjection.swift:149:70:149:70 | userControlledString | CommandInjection.swift:149:62:149:90 | [...] [Collection element] | provenance | | +| CommandInjection.swift:154:41:154:73 | call to URL.init(string:) [some:0] | CommandInjection.swift:154:41:154:74 | ...! | provenance | | +| CommandInjection.swift:154:53:154:53 | userControlledString | CommandInjection.swift:154:41:154:73 | call to URL.init(string:) [some:0] | provenance | | +| CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:157:40:157:73 | ...! | provenance | | +| CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | CommandInjection.swift:157:40:157:73 | ...! | provenance | | +| CommandInjection.swift:157:40:157:73 | ...! | file://:0:0:0:0 | url | provenance | | +| CommandInjection.swift:157:52:157:52 | userControlledString | CommandInjection.swift:157:40:157:72 | call to URL.init(string:) [some:0] | provenance | | +| CommandInjection.swift:158:32:158:53 | [...] [Collection element] | CommandInjection.swift:158:32:158:53 | [...] | provenance | | +| CommandInjection.swift:158:33:158:33 | userControlledString | CommandInjection.swift:158:32:158:53 | [...] [Collection element] | provenance | | +| CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:160:45:160:78 | ...! | provenance | | +| CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | CommandInjection.swift:160:45:160:78 | ...! | provenance | | +| CommandInjection.swift:160:45:160:78 | ...! | file://:0:0:0:0 | url | provenance | | +| CommandInjection.swift:160:57:160:57 | userControlledString | CommandInjection.swift:160:45:160:77 | call to URL.init(string:) [some:0] | provenance | | +| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:175:19:175:19 | newValue [Collection element] | provenance | | +| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:176:20:176:20 | newValue [Collection element] | provenance | | +| CommandInjection.swift:174:3:174:3 | newValue [Collection element] | CommandInjection.swift:177:19:177:19 | newValue [Collection element] | provenance | | +| CommandInjection.swift:175:4:175:4 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:175:4:175:4 | [post] getter for .p1 | provenance | | +| CommandInjection.swift:175:19:175:19 | newValue [Collection element] | CommandInjection.swift:175:4:175:4 | [post] getter for .p1 [arguments, Collection element] | provenance | | +| CommandInjection.swift:176:4:176:6 | [post] ...! [arguments, Collection element] | CommandInjection.swift:176:4:176:6 | [post] ...! | provenance | | +| CommandInjection.swift:176:20:176:20 | newValue [Collection element] | CommandInjection.swift:176:4:176:6 | [post] ...! [arguments, Collection element] | provenance | | +| CommandInjection.swift:177:4:177:4 | [post] ...! [arguments, Collection element] | CommandInjection.swift:177:4:177:4 | [post] ...! | provenance | | +| CommandInjection.swift:177:19:177:19 | newValue [Collection element] | CommandInjection.swift:177:4:177:4 | [post] ...! [arguments, Collection element] | provenance | | +| CommandInjection.swift:182:9:182:13 | let ...? [some:0] | CommandInjection.swift:182:13:182:13 | userControlledString | provenance | | +| CommandInjection.swift:182:13:182:13 | userControlledString | CommandInjection.swift:186:19:186:19 | userControlledString | provenance | | +| CommandInjection.swift:182:13:182:13 | userControlledString | CommandInjection.swift:192:31:192:31 | userControlledString | provenance | | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) [some:0] | provenance | | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:186:19:186:19 | userControlledString | provenance | | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) | CommandInjection.swift:192:31:192:31 | userControlledString | provenance | | +| CommandInjection.swift:182:41:182:95 | call to String.init(contentsOf:) [some:0] | CommandInjection.swift:182:9:182:13 | let ...? [some:0] | provenance | | +| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | provenance | | +| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | provenance | | +| CommandInjection.swift:186:18:186:39 | [...] [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | provenance | | +| CommandInjection.swift:186:19:186:19 | userControlledString | CommandInjection.swift:186:18:186:39 | [...] [Collection element] | provenance | | +| CommandInjection.swift:188:3:188:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:188:3:188:3 | [post] getter for .p1 | provenance | | +| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:188:3:188:3 | [post] getter for .p1 [arguments, Collection element] | provenance | | +| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | provenance | | +| CommandInjection.swift:188:18:188:18 | tainted1 [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | provenance | | +| CommandInjection.swift:189:3:189:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:189:3:189:5 | [post] ...! | provenance | | +| CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | CommandInjection.swift:189:3:189:5 | [post] ...! [arguments, Collection element] | provenance | | +| CommandInjection.swift:189:19:189:19 | tainted1 [Collection element] | CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | provenance | | +| CommandInjection.swift:190:3:190:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:190:3:190:3 | [post] ...! | provenance | | +| CommandInjection.swift:190:18:190:18 | tainted1 [Collection element] | CommandInjection.swift:190:3:190:3 | [post] ...! [arguments, Collection element] | provenance | | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | provenance | | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:195:19:195:19 | tainted2 [Collection element] | provenance | | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:196:18:196:18 | tainted2 [Collection element] | provenance | | +| CommandInjection.swift:192:30:192:51 | [...] [Collection element] | CommandInjection.swift:198:13:198:13 | tainted2 [Collection element] | provenance | | +| CommandInjection.swift:192:31:192:31 | userControlledString | CommandInjection.swift:192:30:192:51 | [...] [Collection element] | provenance | | +| CommandInjection.swift:194:3:194:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:194:3:194:3 | [post] getter for .p1 | provenance | | +| CommandInjection.swift:194:18:194:18 | tainted2 [Collection element] | CommandInjection.swift:194:3:194:3 | [post] getter for .p1 [arguments, Collection element] | provenance | | +| CommandInjection.swift:195:3:195:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:195:3:195:5 | [post] ...! | provenance | | +| CommandInjection.swift:195:19:195:19 | tainted2 [Collection element] | CommandInjection.swift:195:3:195:5 | [post] ...! [arguments, Collection element] | provenance | | +| CommandInjection.swift:196:3:196:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:196:3:196:3 | [post] ...! | provenance | | +| CommandInjection.swift:196:18:196:18 | tainted2 [Collection element] | CommandInjection.swift:196:3:196:3 | [post] ...! [arguments, Collection element] | provenance | | +| CommandInjection.swift:198:13:198:13 | tainted2 [Collection element] | CommandInjection.swift:174:3:174:3 | newValue [Collection element] | provenance | | +| file://:0:0:0:0 | url | file://:0:0:0:0 | url | provenance | | +| file://:0:0:0:0 | url | file://:0:0:0:0 | url | provenance | | nodes | CommandInjection.swift:58:22:58:33 | command | semmle.label | command | | CommandInjection.swift:58:22:58:33 | command [some:0] | semmle.label | command [some:0] | diff --git a/swift/ql/test/query-tests/Security/CWE-079/UnsafeWebViewFetch.expected b/swift/ql/test/query-tests/Security/CWE-079/UnsafeWebViewFetch.expected index 66356d313493..c2fefc171e64 100644 --- a/swift/ql/test/query-tests/Security/CWE-079/UnsafeWebViewFetch.expected +++ b/swift/ql/test/query-tests/Security/CWE-079/UnsafeWebViewFetch.expected @@ -1,69 +1,69 @@ edges -| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | -| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:120:25:120:39 | call to getRemoteData() | -| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | -| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:167:25:167:39 | call to getRemoteData() | -| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:206:17:206:31 | call to getRemoteData() | -| UnsafeWebViewFetch.swift:94:14:94:37 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:94:10:94:37 | try ... | -| UnsafeWebViewFetch.swift:103:30:103:84 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:103:25:103:84 | try! ... | -| UnsafeWebViewFetch.swift:105:18:105:72 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:106:25:106:25 | data | -| UnsafeWebViewFetch.swift:109:30:109:53 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:109:25:109:53 | try! ... | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:121:25:121:25 | remoteString | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:124:25:124:51 | ... .+(_:_:) ... | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:127:25:127:25 | "..." | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:131:30:131:30 | remoteString | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:135:25:135:25 | remoteString | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:137:25:137:25 | remoteString | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:139:25:139:25 | remoteString | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:141:25:141:25 | remoteString | -| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:150:24:150:37 | .utf8 | -| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:132:52:132:52 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:138:47:138:47 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:139:48:139:48 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:153:85:153:85 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:154:86:154:86 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:131:30:131:30 | remoteString | UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | -| UnsafeWebViewFetch.swift:132:19:132:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:140:47:140:47 | remoteURL2 [some:0] | -| UnsafeWebViewFetch.swift:132:19:132:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:141:48:141:48 | remoteURL2 [some:0] | -| UnsafeWebViewFetch.swift:132:52:132:52 | remoteURL [some:0] | UnsafeWebViewFetch.swift:132:19:132:61 | call to URL.init(string:relativeTo:) [some:0] | -| UnsafeWebViewFetch.swift:138:47:138:47 | remoteURL [some:0] | UnsafeWebViewFetch.swift:138:47:138:56 | ...! | -| UnsafeWebViewFetch.swift:139:48:139:48 | remoteURL [some:0] | UnsafeWebViewFetch.swift:139:48:139:57 | ...! | -| UnsafeWebViewFetch.swift:140:47:140:47 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:140:47:140:57 | ...! | -| UnsafeWebViewFetch.swift:141:48:141:48 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:141:48:141:58 | ...! | -| UnsafeWebViewFetch.swift:150:19:150:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:152:15:152:15 | remoteData | -| UnsafeWebViewFetch.swift:150:19:150:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:154:15:154:15 | remoteData | -| UnsafeWebViewFetch.swift:150:24:150:37 | .utf8 | UnsafeWebViewFetch.swift:150:19:150:41 | call to Data.init(_:) | -| UnsafeWebViewFetch.swift:153:85:153:85 | remoteURL [some:0] | UnsafeWebViewFetch.swift:153:85:153:94 | ...! | -| UnsafeWebViewFetch.swift:154:86:154:86 | remoteURL [some:0] | UnsafeWebViewFetch.swift:154:86:154:95 | ...! | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:168:25:168:25 | remoteString | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:171:25:171:51 | ... .+(_:_:) ... | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:174:25:174:25 | "..." | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:178:30:178:30 | remoteString | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:182:25:182:25 | remoteString | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:184:25:184:25 | remoteString | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:186:25:186:25 | remoteString | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:188:25:188:25 | remoteString | -| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:197:24:197:37 | .utf8 | -| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:179:52:179:52 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:185:47:185:47 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:186:48:186:48 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:200:90:200:90 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:201:91:201:91 | remoteURL [some:0] | -| UnsafeWebViewFetch.swift:178:30:178:30 | remoteString | UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | -| UnsafeWebViewFetch.swift:179:19:179:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:187:47:187:47 | remoteURL2 [some:0] | -| UnsafeWebViewFetch.swift:179:19:179:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:188:48:188:48 | remoteURL2 [some:0] | -| UnsafeWebViewFetch.swift:179:52:179:52 | remoteURL [some:0] | UnsafeWebViewFetch.swift:179:19:179:61 | call to URL.init(string:relativeTo:) [some:0] | -| UnsafeWebViewFetch.swift:185:47:185:47 | remoteURL [some:0] | UnsafeWebViewFetch.swift:185:47:185:56 | ...! | -| UnsafeWebViewFetch.swift:186:48:186:48 | remoteURL [some:0] | UnsafeWebViewFetch.swift:186:48:186:57 | ...! | -| UnsafeWebViewFetch.swift:187:47:187:47 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:187:47:187:57 | ...! | -| UnsafeWebViewFetch.swift:188:48:188:48 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:188:48:188:58 | ...! | -| UnsafeWebViewFetch.swift:197:19:197:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:199:15:199:15 | remoteData | -| UnsafeWebViewFetch.swift:197:19:197:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:201:15:201:15 | remoteData | -| UnsafeWebViewFetch.swift:197:24:197:37 | .utf8 | UnsafeWebViewFetch.swift:197:19:197:41 | call to Data.init(_:) | -| UnsafeWebViewFetch.swift:200:90:200:90 | remoteURL [some:0] | UnsafeWebViewFetch.swift:200:90:200:99 | ...! | -| UnsafeWebViewFetch.swift:201:91:201:91 | remoteURL [some:0] | UnsafeWebViewFetch.swift:201:91:201:100 | ...! | -| UnsafeWebViewFetch.swift:206:17:206:31 | call to getRemoteData() | UnsafeWebViewFetch.swift:210:25:210:25 | htmlData | -| UnsafeWebViewFetch.swift:206:17:206:31 | call to getRemoteData() | UnsafeWebViewFetch.swift:211:25:211:25 | htmlData | +| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | provenance | | +| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:120:25:120:39 | call to getRemoteData() | provenance | | +| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | provenance | | +| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:167:25:167:39 | call to getRemoteData() | provenance | | +| UnsafeWebViewFetch.swift:94:10:94:37 | try ... | UnsafeWebViewFetch.swift:206:17:206:31 | call to getRemoteData() | provenance | | +| UnsafeWebViewFetch.swift:94:14:94:37 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:94:10:94:37 | try ... | provenance | | +| UnsafeWebViewFetch.swift:103:30:103:84 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:103:25:103:84 | try! ... | provenance | | +| UnsafeWebViewFetch.swift:105:18:105:72 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:106:25:106:25 | data | provenance | | +| UnsafeWebViewFetch.swift:109:30:109:53 | call to String.init(contentsOf:) | UnsafeWebViewFetch.swift:109:25:109:53 | try! ... | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:121:25:121:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:124:25:124:51 | ... .+(_:_:) ... | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:127:25:127:25 | "..." | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:131:30:131:30 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:135:25:135:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:137:25:137:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:139:25:139:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:141:25:141:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:117:21:117:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:150:24:150:37 | .utf8 | provenance | | +| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:132:52:132:52 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:138:47:138:47 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:139:48:139:48 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:153:85:153:85 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:154:86:154:86 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:131:30:131:30 | remoteString | UnsafeWebViewFetch.swift:131:18:131:42 | call to URL.init(string:) [some:0] | provenance | | +| UnsafeWebViewFetch.swift:132:19:132:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:140:47:140:47 | remoteURL2 [some:0] | provenance | | +| UnsafeWebViewFetch.swift:132:19:132:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:141:48:141:48 | remoteURL2 [some:0] | provenance | | +| UnsafeWebViewFetch.swift:132:52:132:52 | remoteURL [some:0] | UnsafeWebViewFetch.swift:132:19:132:61 | call to URL.init(string:relativeTo:) [some:0] | provenance | | +| UnsafeWebViewFetch.swift:138:47:138:47 | remoteURL [some:0] | UnsafeWebViewFetch.swift:138:47:138:56 | ...! | provenance | | +| UnsafeWebViewFetch.swift:139:48:139:48 | remoteURL [some:0] | UnsafeWebViewFetch.swift:139:48:139:57 | ...! | provenance | | +| UnsafeWebViewFetch.swift:140:47:140:47 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:140:47:140:57 | ...! | provenance | | +| UnsafeWebViewFetch.swift:141:48:141:48 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:141:48:141:58 | ...! | provenance | | +| UnsafeWebViewFetch.swift:150:19:150:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:152:15:152:15 | remoteData | provenance | | +| UnsafeWebViewFetch.swift:150:19:150:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:154:15:154:15 | remoteData | provenance | | +| UnsafeWebViewFetch.swift:150:24:150:37 | .utf8 | UnsafeWebViewFetch.swift:150:19:150:41 | call to Data.init(_:) | provenance | | +| UnsafeWebViewFetch.swift:153:85:153:85 | remoteURL [some:0] | UnsafeWebViewFetch.swift:153:85:153:94 | ...! | provenance | | +| UnsafeWebViewFetch.swift:154:86:154:86 | remoteURL [some:0] | UnsafeWebViewFetch.swift:154:86:154:95 | ...! | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:168:25:168:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:171:25:171:51 | ... .+(_:_:) ... | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:174:25:174:25 | "..." | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:178:30:178:30 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:182:25:182:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:184:25:184:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:186:25:186:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:188:25:188:25 | remoteString | provenance | | +| UnsafeWebViewFetch.swift:164:21:164:35 | call to getRemoteData() | UnsafeWebViewFetch.swift:197:24:197:37 | .utf8 | provenance | | +| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:179:52:179:52 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:185:47:185:47 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:186:48:186:48 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:200:90:200:90 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | UnsafeWebViewFetch.swift:201:91:201:91 | remoteURL [some:0] | provenance | | +| UnsafeWebViewFetch.swift:178:30:178:30 | remoteString | UnsafeWebViewFetch.swift:178:18:178:42 | call to URL.init(string:) [some:0] | provenance | | +| UnsafeWebViewFetch.swift:179:19:179:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:187:47:187:47 | remoteURL2 [some:0] | provenance | | +| UnsafeWebViewFetch.swift:179:19:179:61 | call to URL.init(string:relativeTo:) [some:0] | UnsafeWebViewFetch.swift:188:48:188:48 | remoteURL2 [some:0] | provenance | | +| UnsafeWebViewFetch.swift:179:52:179:52 | remoteURL [some:0] | UnsafeWebViewFetch.swift:179:19:179:61 | call to URL.init(string:relativeTo:) [some:0] | provenance | | +| UnsafeWebViewFetch.swift:185:47:185:47 | remoteURL [some:0] | UnsafeWebViewFetch.swift:185:47:185:56 | ...! | provenance | | +| UnsafeWebViewFetch.swift:186:48:186:48 | remoteURL [some:0] | UnsafeWebViewFetch.swift:186:48:186:57 | ...! | provenance | | +| UnsafeWebViewFetch.swift:187:47:187:47 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:187:47:187:57 | ...! | provenance | | +| UnsafeWebViewFetch.swift:188:48:188:48 | remoteURL2 [some:0] | UnsafeWebViewFetch.swift:188:48:188:58 | ...! | provenance | | +| UnsafeWebViewFetch.swift:197:19:197:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:199:15:199:15 | remoteData | provenance | | +| UnsafeWebViewFetch.swift:197:19:197:41 | call to Data.init(_:) | UnsafeWebViewFetch.swift:201:15:201:15 | remoteData | provenance | | +| UnsafeWebViewFetch.swift:197:24:197:37 | .utf8 | UnsafeWebViewFetch.swift:197:19:197:41 | call to Data.init(_:) | provenance | | +| UnsafeWebViewFetch.swift:200:90:200:90 | remoteURL [some:0] | UnsafeWebViewFetch.swift:200:90:200:99 | ...! | provenance | | +| UnsafeWebViewFetch.swift:201:91:201:91 | remoteURL [some:0] | UnsafeWebViewFetch.swift:201:91:201:100 | ...! | provenance | | +| UnsafeWebViewFetch.swift:206:17:206:31 | call to getRemoteData() | UnsafeWebViewFetch.swift:210:25:210:25 | htmlData | provenance | | +| UnsafeWebViewFetch.swift:206:17:206:31 | call to getRemoteData() | UnsafeWebViewFetch.swift:211:25:211:25 | htmlData | provenance | | nodes | UnsafeWebViewFetch.swift:94:10:94:37 | try ... | semmle.label | try ... | | UnsafeWebViewFetch.swift:94:14:94:37 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | diff --git a/swift/ql/test/query-tests/Security/CWE-089/SqlInjection.expected b/swift/ql/test/query-tests/Security/CWE-089/SqlInjection.expected index 52d6268367f0..36ebcd04a6ee 100644 --- a/swift/ql/test/query-tests/Security/CWE-089/SqlInjection.expected +++ b/swift/ql/test/query-tests/Security/CWE-089/SqlInjection.expected @@ -1,122 +1,122 @@ edges -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:106:41:106:41 | remoteString | -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:108:41:108:41 | remoteString | -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:111:43:111:43 | remoteString | -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:114:51:114:51 | remoteString | -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:117:27:117:27 | remoteString | -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:119:27:119:27 | remoteString | -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:122:41:122:41 | remoteString | -| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:124:41:124:41 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:132:39:132:39 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:135:46:135:46 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:138:56:138:56 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:141:45:141:45 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:144:29:144:29 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:145:29:145:29 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:146:29:146:29 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:147:29:147:29 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:148:29:148:29 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:149:29:149:29 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:150:29:150:29 | remoteString | -| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:151:29:151:29 | remoteString | -| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:166:32:166:32 | remoteString | -| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:167:39:167:39 | remoteString | -| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:168:49:168:49 | remoteString | -| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:169:38:169:38 | remoteString | -| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:170:22:170:22 | remoteString | -| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:172:22:172:22 | remoteString | -| GRDB.swift:185:26:185:80 | call to String.init(contentsOf:) | GRDB.swift:187:33:187:33 | remoteString | -| GRDB.swift:185:26:185:80 | call to String.init(contentsOf:) | GRDB.swift:190:32:190:32 | remoteString | -| GRDB.swift:185:26:185:80 | call to String.init(contentsOf:) | GRDB.swift:193:37:193:37 | remoteString | -| GRDB.swift:199:26:199:80 | call to String.init(contentsOf:) | GRDB.swift:201:36:201:36 | remoteString | -| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:209:41:209:41 | remoteString | -| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:210:44:210:44 | remoteString | -| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:211:47:211:47 | remoteString | -| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:212:47:212:47 | remoteString | -| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:224:37:224:37 | remoteString | -| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:225:37:225:37 | remoteString | -| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:229:37:229:37 | remoteString | -| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:230:37:230:37 | remoteString | -| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:234:36:234:36 | remoteString | -| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:235:36:235:36 | remoteString | -| GRDB.swift:242:26:242:80 | call to String.init(contentsOf:) | GRDB.swift:244:38:244:38 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:252:32:252:32 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:253:32:253:32 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:254:32:254:32 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:255:32:255:32 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:261:29:261:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:262:29:262:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:263:29:263:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:264:29:264:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:270:29:270:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:271:29:271:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:272:29:272:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:273:29:273:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:279:29:279:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:280:29:280:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:281:29:281:29 | remoteString | -| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:282:29:282:29 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:293:53:293:53 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:294:53:294:53 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:295:53:295:53 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:296:53:296:53 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:302:50:302:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:303:50:303:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:304:50:304:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:305:50:305:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:311:50:311:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:312:50:312:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:313:50:313:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:314:50:314:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:320:50:320:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:321:50:321:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:322:50:322:50 | remoteString | -| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:323:50:323:50 | remoteString | -| GRDB.swift:332:26:332:80 | call to String.init(contentsOf:) | GRDB.swift:334:57:334:57 | remoteString | -| GRDB.swift:332:26:332:80 | call to String.init(contentsOf:) | GRDB.swift:335:57:335:57 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:344:51:344:51 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:345:51:345:51 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:346:66:346:66 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:347:66:347:66 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:348:69:348:69 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:349:84:349:84 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:350:69:350:69 | remoteString | -| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:351:84:351:84 | remoteString | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:73:17:73:17 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:74:17:74:17 | unsafeQuery2 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:75:17:75:17 | unsafeQuery3 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:83:29:83:29 | unsafeQuery3 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:95:32:95:32 | remoteString | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:100:29:100:29 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:103:29:103:29 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:106:29:106:29 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:109:13:109:13 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:111:13:111:13 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:113:13:113:13 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:115:16:115:16 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:117:16:117:16 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:119:16:119:16 | unsafeQuery1 | -| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:132:20:132:20 | remoteString | -| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:50:22:50:22 | remoteString | -| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:52:14:52:14 | remoteString | -| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:53:14:53:14 | remoteString | -| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:54:31:54:31 | remoteString | -| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:55:14:55:14 | remoteString | -| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:57:16:57:16 | remoteString | -| other.swift:54:31:54:31 | remoteString | other.swift:54:14:54:43 | call to NSString.init(string:) | -| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:133:33:133:33 | unsafeQuery1 | -| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:134:33:134:33 | unsafeQuery2 | -| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:135:33:135:33 | unsafeQuery3 | -| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:145:26:145:26 | unsafeQuery3 | -| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:175:29:175:29 | unsafeQuery3 | -| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:183:29:183:29 | unsafeQuery3 | -| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:189:13:189:13 | unsafeQuery3 | -| sqlite3_c_api.swift:189:13:189:13 | unsafeQuery3 | sqlite3_c_api.swift:189:13:189:58 | call to data(using:allowLossyConversion:) | -| sqlite3_c_api.swift:189:13:189:58 | call to data(using:allowLossyConversion:) | sqlite3_c_api.swift:190:2:190:2 | data | -| sqlite3_c_api.swift:190:2:190:2 | data | sqlite3_c_api.swift:190:21:190:21 | [post] buffer | -| sqlite3_c_api.swift:190:21:190:21 | [post] buffer | sqlite3_c_api.swift:194:28:194:28 | buffer | -| sqlite3_c_api.swift:190:21:190:21 | [post] buffer | sqlite3_c_api.swift:202:31:202:31 | buffer | -| sqlite3_c_api.swift:190:21:190:21 | [post] buffer | sqlite3_c_api.swift:210:31:210:31 | buffer | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:106:41:106:41 | remoteString | provenance | | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:108:41:108:41 | remoteString | provenance | | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:111:43:111:43 | remoteString | provenance | | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:114:51:114:51 | remoteString | provenance | | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:117:27:117:27 | remoteString | provenance | | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:119:27:119:27 | remoteString | provenance | | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:122:41:122:41 | remoteString | provenance | | +| GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | GRDB.swift:124:41:124:41 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:132:39:132:39 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:135:46:135:46 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:138:56:138:56 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:141:45:141:45 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:144:29:144:29 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:145:29:145:29 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:146:29:146:29 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:147:29:147:29 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:148:29:148:29 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:149:29:149:29 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:150:29:150:29 | remoteString | provenance | | +| GRDB.swift:130:26:130:80 | call to String.init(contentsOf:) | GRDB.swift:151:29:151:29 | remoteString | provenance | | +| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:166:32:166:32 | remoteString | provenance | | +| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:167:39:167:39 | remoteString | provenance | | +| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:168:49:168:49 | remoteString | provenance | | +| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:169:38:169:38 | remoteString | provenance | | +| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:170:22:170:22 | remoteString | provenance | | +| GRDB.swift:164:26:164:80 | call to String.init(contentsOf:) | GRDB.swift:172:22:172:22 | remoteString | provenance | | +| GRDB.swift:185:26:185:80 | call to String.init(contentsOf:) | GRDB.swift:187:33:187:33 | remoteString | provenance | | +| GRDB.swift:185:26:185:80 | call to String.init(contentsOf:) | GRDB.swift:190:32:190:32 | remoteString | provenance | | +| GRDB.swift:185:26:185:80 | call to String.init(contentsOf:) | GRDB.swift:193:37:193:37 | remoteString | provenance | | +| GRDB.swift:199:26:199:80 | call to String.init(contentsOf:) | GRDB.swift:201:36:201:36 | remoteString | provenance | | +| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:209:41:209:41 | remoteString | provenance | | +| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:210:44:210:44 | remoteString | provenance | | +| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:211:47:211:47 | remoteString | provenance | | +| GRDB.swift:207:26:207:80 | call to String.init(contentsOf:) | GRDB.swift:212:47:212:47 | remoteString | provenance | | +| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:224:37:224:37 | remoteString | provenance | | +| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:225:37:225:37 | remoteString | provenance | | +| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:229:37:229:37 | remoteString | provenance | | +| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:230:37:230:37 | remoteString | provenance | | +| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:234:36:234:36 | remoteString | provenance | | +| GRDB.swift:222:26:222:80 | call to String.init(contentsOf:) | GRDB.swift:235:36:235:36 | remoteString | provenance | | +| GRDB.swift:242:26:242:80 | call to String.init(contentsOf:) | GRDB.swift:244:38:244:38 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:252:32:252:32 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:253:32:253:32 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:254:32:254:32 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:255:32:255:32 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:261:29:261:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:262:29:262:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:263:29:263:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:264:29:264:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:270:29:270:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:271:29:271:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:272:29:272:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:273:29:273:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:279:29:279:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:280:29:280:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:281:29:281:29 | remoteString | provenance | | +| GRDB.swift:250:26:250:80 | call to String.init(contentsOf:) | GRDB.swift:282:29:282:29 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:293:53:293:53 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:294:53:294:53 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:295:53:295:53 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:296:53:296:53 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:302:50:302:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:303:50:303:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:304:50:304:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:305:50:305:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:311:50:311:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:312:50:312:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:313:50:313:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:314:50:314:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:320:50:320:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:321:50:321:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:322:50:322:50 | remoteString | provenance | | +| GRDB.swift:291:26:291:80 | call to String.init(contentsOf:) | GRDB.swift:323:50:323:50 | remoteString | provenance | | +| GRDB.swift:332:26:332:80 | call to String.init(contentsOf:) | GRDB.swift:334:57:334:57 | remoteString | provenance | | +| GRDB.swift:332:26:332:80 | call to String.init(contentsOf:) | GRDB.swift:335:57:335:57 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:344:51:344:51 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:345:51:345:51 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:346:66:346:66 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:347:66:347:66 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:348:69:348:69 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:349:84:349:84 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:350:69:350:69 | remoteString | provenance | | +| GRDB.swift:342:26:342:80 | call to String.init(contentsOf:) | GRDB.swift:351:84:351:84 | remoteString | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:73:17:73:17 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:74:17:74:17 | unsafeQuery2 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:75:17:75:17 | unsafeQuery3 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:83:29:83:29 | unsafeQuery3 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:95:32:95:32 | remoteString | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:100:29:100:29 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:103:29:103:29 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:106:29:106:29 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:109:13:109:13 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:111:13:111:13 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:113:13:113:13 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:115:16:115:16 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:117:16:117:16 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:119:16:119:16 | unsafeQuery1 | provenance | | +| SQLite.swift:62:25:62:79 | call to String.init(contentsOf:) | SQLite.swift:132:20:132:20 | remoteString | provenance | | +| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:50:22:50:22 | remoteString | provenance | | +| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:52:14:52:14 | remoteString | provenance | | +| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:53:14:53:14 | remoteString | provenance | | +| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:54:31:54:31 | remoteString | provenance | | +| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:55:14:55:14 | remoteString | provenance | | +| other.swift:46:25:46:79 | call to String.init(contentsOf:) | other.swift:57:16:57:16 | remoteString | provenance | | +| other.swift:54:31:54:31 | remoteString | other.swift:54:14:54:43 | call to NSString.init(string:) | provenance | | +| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:133:33:133:33 | unsafeQuery1 | provenance | | +| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:134:33:134:33 | unsafeQuery2 | provenance | | +| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:135:33:135:33 | unsafeQuery3 | provenance | | +| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:145:26:145:26 | unsafeQuery3 | provenance | | +| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:175:29:175:29 | unsafeQuery3 | provenance | | +| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:183:29:183:29 | unsafeQuery3 | provenance | | +| sqlite3_c_api.swift:122:26:122:80 | call to String.init(contentsOf:) | sqlite3_c_api.swift:189:13:189:13 | unsafeQuery3 | provenance | | +| sqlite3_c_api.swift:189:13:189:13 | unsafeQuery3 | sqlite3_c_api.swift:189:13:189:58 | call to data(using:allowLossyConversion:) | provenance | | +| sqlite3_c_api.swift:189:13:189:58 | call to data(using:allowLossyConversion:) | sqlite3_c_api.swift:190:2:190:2 | data | provenance | | +| sqlite3_c_api.swift:190:2:190:2 | data | sqlite3_c_api.swift:190:21:190:21 | [post] buffer | provenance | | +| sqlite3_c_api.swift:190:21:190:21 | [post] buffer | sqlite3_c_api.swift:194:28:194:28 | buffer | provenance | | +| sqlite3_c_api.swift:190:21:190:21 | [post] buffer | sqlite3_c_api.swift:202:31:202:31 | buffer | provenance | | +| sqlite3_c_api.swift:190:21:190:21 | [post] buffer | sqlite3_c_api.swift:210:31:210:31 | buffer | provenance | | nodes | GRDB.swift:104:25:104:79 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | | GRDB.swift:106:41:106:41 | remoteString | semmle.label | remoteString | diff --git a/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected b/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected index 65c4c5eb2c1a..f048e06cb850 100644 --- a/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected +++ b/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected @@ -1,58 +1,58 @@ edges -| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:265:13:265:13 | string | -| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:268:13:268:13 | string | -| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:276:13:276:13 | string | -| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:279:13:279:13 | string | -| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:285:13:285:13 | string | -| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:299:13:299:13 | string | -| UnsafeJsEval.swift:204:12:204:66 | call to String.init(contentsOf:) | UnsafeJsEval.swift:204:7:204:66 | try! ... | -| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:265:13:265:13 | string | -| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:268:13:268:13 | string | -| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:276:13:276:13 | string | -| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:279:13:279:13 | string | -| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:285:13:285:13 | string | -| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:299:13:299:13 | string | -| UnsafeJsEval.swift:205:12:205:35 | call to String.init(contentsOf:) | UnsafeJsEval.swift:205:7:205:35 | try! ... | -| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:265:13:265:13 | string | -| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:268:13:268:13 | string | -| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:276:13:276:13 | string | -| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:279:13:279:13 | string | -| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:285:13:285:13 | string | -| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:299:13:299:13 | string | -| UnsafeJsEval.swift:208:30:208:53 | call to String.init(contentsOf:) | UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | -| UnsafeJsEval.swift:211:19:211:60 | call to Data.init(_:) | UnsafeJsEval.swift:214:24:214:24 | remoteData | -| UnsafeJsEval.swift:211:24:211:56 | .utf8 | UnsafeJsEval.swift:211:19:211:60 | call to Data.init(_:) | -| UnsafeJsEval.swift:211:30:211:53 | call to String.init(contentsOf:) | UnsafeJsEval.swift:211:24:211:56 | .utf8 | -| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:265:13:265:13 | string | -| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:268:13:268:13 | string | -| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:276:13:276:13 | string | -| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:279:13:279:13 | string | -| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:285:13:285:13 | string | -| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:299:13:299:13 | string | -| UnsafeJsEval.swift:214:24:214:24 | remoteData | UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | -| UnsafeJsEval.swift:265:13:265:13 | string | UnsafeJsEval.swift:266:43:266:43 | string | -| UnsafeJsEval.swift:266:43:266:43 | string | UnsafeJsEval.swift:266:22:266:107 | call to WKUserScript.init(source:injectionTime:forMainFrameOnly:) | -| UnsafeJsEval.swift:268:13:268:13 | string | UnsafeJsEval.swift:269:43:269:43 | string | -| UnsafeJsEval.swift:269:43:269:43 | string | UnsafeJsEval.swift:269:22:269:124 | call to WKUserScript.init(source:injectionTime:forMainFrameOnly:in:) | -| UnsafeJsEval.swift:276:13:276:13 | string | UnsafeJsEval.swift:277:26:277:26 | string | -| UnsafeJsEval.swift:279:13:279:13 | string | UnsafeJsEval.swift:280:26:280:26 | string | -| UnsafeJsEval.swift:285:13:285:13 | string | UnsafeJsEval.swift:286:3:286:10 | .utf16 | -| UnsafeJsEval.swift:286:3:286:10 | .utf16 | UnsafeJsEval.swift:286:51:286:51 | stringBytes [Collection element] | -| UnsafeJsEval.swift:286:51:286:51 | stringBytes [Collection element] | UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | -| UnsafeJsEval.swift:287:16:287:98 | call to JSStringRetain(_:) | UnsafeJsEval.swift:291:17:291:17 | jsstr | -| UnsafeJsEval.swift:287:31:287:97 | call to JSStringCreateWithCharacters(_:_:) | UnsafeJsEval.swift:287:16:287:98 | call to JSStringRetain(_:) | -| UnsafeJsEval.swift:287:60:287:60 | stringBytes | UnsafeJsEval.swift:287:60:287:72 | .baseAddress | -| UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | UnsafeJsEval.swift:287:60:287:60 | stringBytes | -| UnsafeJsEval.swift:287:60:287:72 | .baseAddress | UnsafeJsEval.swift:287:31:287:97 | call to JSStringCreateWithCharacters(_:_:) | -| UnsafeJsEval.swift:299:13:299:13 | string | UnsafeJsEval.swift:300:3:300:10 | .utf8CString | -| UnsafeJsEval.swift:300:3:300:10 | .utf8CString | UnsafeJsEval.swift:300:48:300:48 | stringBytes [Collection element] | -| UnsafeJsEval.swift:300:48:300:48 | stringBytes [Collection element] | UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | -| UnsafeJsEval.swift:301:16:301:85 | call to JSStringRetain(_:) | UnsafeJsEval.swift:305:17:305:17 | jsstr | -| UnsafeJsEval.swift:301:31:301:84 | call to JSStringCreateWithUTF8CString(_:) | UnsafeJsEval.swift:301:16:301:85 | call to JSStringRetain(_:) | -| UnsafeJsEval.swift:301:61:301:61 | stringBytes | UnsafeJsEval.swift:301:61:301:73 | .baseAddress | -| UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | UnsafeJsEval.swift:301:61:301:61 | stringBytes | -| UnsafeJsEval.swift:301:61:301:73 | .baseAddress | UnsafeJsEval.swift:301:31:301:84 | call to JSStringCreateWithUTF8CString(_:) | -| UnsafeJsEval.swift:318:24:318:87 | call to String.init(contentsOf:) | UnsafeJsEval.swift:320:44:320:74 | ... .+(_:_:) ... | +| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:265:13:265:13 | string | provenance | | +| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:268:13:268:13 | string | provenance | | +| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:276:13:276:13 | string | provenance | | +| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:279:13:279:13 | string | provenance | | +| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:285:13:285:13 | string | provenance | | +| UnsafeJsEval.swift:204:7:204:66 | try! ... | UnsafeJsEval.swift:299:13:299:13 | string | provenance | | +| UnsafeJsEval.swift:204:12:204:66 | call to String.init(contentsOf:) | UnsafeJsEval.swift:204:7:204:66 | try! ... | provenance | | +| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:265:13:265:13 | string | provenance | | +| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:268:13:268:13 | string | provenance | | +| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:276:13:276:13 | string | provenance | | +| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:279:13:279:13 | string | provenance | | +| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:285:13:285:13 | string | provenance | | +| UnsafeJsEval.swift:205:7:205:35 | try! ... | UnsafeJsEval.swift:299:13:299:13 | string | provenance | | +| UnsafeJsEval.swift:205:12:205:35 | call to String.init(contentsOf:) | UnsafeJsEval.swift:205:7:205:35 | try! ... | provenance | | +| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:265:13:265:13 | string | provenance | | +| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:268:13:268:13 | string | provenance | | +| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:276:13:276:13 | string | provenance | | +| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:279:13:279:13 | string | provenance | | +| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:285:13:285:13 | string | provenance | | +| UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | UnsafeJsEval.swift:299:13:299:13 | string | provenance | | +| UnsafeJsEval.swift:208:30:208:53 | call to String.init(contentsOf:) | UnsafeJsEval.swift:208:7:208:58 | ... .+(_:_:) ... | provenance | | +| UnsafeJsEval.swift:211:19:211:60 | call to Data.init(_:) | UnsafeJsEval.swift:214:24:214:24 | remoteData | provenance | | +| UnsafeJsEval.swift:211:24:211:56 | .utf8 | UnsafeJsEval.swift:211:19:211:60 | call to Data.init(_:) | provenance | | +| UnsafeJsEval.swift:211:30:211:53 | call to String.init(contentsOf:) | UnsafeJsEval.swift:211:24:211:56 | .utf8 | provenance | | +| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:265:13:265:13 | string | provenance | | +| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:268:13:268:13 | string | provenance | | +| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:276:13:276:13 | string | provenance | | +| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:279:13:279:13 | string | provenance | | +| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:285:13:285:13 | string | provenance | | +| UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | UnsafeJsEval.swift:299:13:299:13 | string | provenance | | +| UnsafeJsEval.swift:214:24:214:24 | remoteData | UnsafeJsEval.swift:214:7:214:49 | call to String.init(decoding:as:) | provenance | | +| UnsafeJsEval.swift:265:13:265:13 | string | UnsafeJsEval.swift:266:43:266:43 | string | provenance | | +| UnsafeJsEval.swift:266:43:266:43 | string | UnsafeJsEval.swift:266:22:266:107 | call to WKUserScript.init(source:injectionTime:forMainFrameOnly:) | provenance | | +| UnsafeJsEval.swift:268:13:268:13 | string | UnsafeJsEval.swift:269:43:269:43 | string | provenance | | +| UnsafeJsEval.swift:269:43:269:43 | string | UnsafeJsEval.swift:269:22:269:124 | call to WKUserScript.init(source:injectionTime:forMainFrameOnly:in:) | provenance | | +| UnsafeJsEval.swift:276:13:276:13 | string | UnsafeJsEval.swift:277:26:277:26 | string | provenance | | +| UnsafeJsEval.swift:279:13:279:13 | string | UnsafeJsEval.swift:280:26:280:26 | string | provenance | | +| UnsafeJsEval.swift:285:13:285:13 | string | UnsafeJsEval.swift:286:3:286:10 | .utf16 | provenance | | +| UnsafeJsEval.swift:286:3:286:10 | .utf16 | UnsafeJsEval.swift:286:51:286:51 | stringBytes [Collection element] | provenance | | +| UnsafeJsEval.swift:286:51:286:51 | stringBytes [Collection element] | UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | provenance | | +| UnsafeJsEval.swift:287:16:287:98 | call to JSStringRetain(_:) | UnsafeJsEval.swift:291:17:291:17 | jsstr | provenance | | +| UnsafeJsEval.swift:287:31:287:97 | call to JSStringCreateWithCharacters(_:_:) | UnsafeJsEval.swift:287:16:287:98 | call to JSStringRetain(_:) | provenance | | +| UnsafeJsEval.swift:287:60:287:60 | stringBytes | UnsafeJsEval.swift:287:60:287:72 | .baseAddress | provenance | | +| UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | UnsafeJsEval.swift:287:60:287:60 | stringBytes | provenance | | +| UnsafeJsEval.swift:287:60:287:72 | .baseAddress | UnsafeJsEval.swift:287:31:287:97 | call to JSStringCreateWithCharacters(_:_:) | provenance | | +| UnsafeJsEval.swift:299:13:299:13 | string | UnsafeJsEval.swift:300:3:300:10 | .utf8CString | provenance | | +| UnsafeJsEval.swift:300:3:300:10 | .utf8CString | UnsafeJsEval.swift:300:48:300:48 | stringBytes [Collection element] | provenance | | +| UnsafeJsEval.swift:300:48:300:48 | stringBytes [Collection element] | UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | provenance | | +| UnsafeJsEval.swift:301:16:301:85 | call to JSStringRetain(_:) | UnsafeJsEval.swift:305:17:305:17 | jsstr | provenance | | +| UnsafeJsEval.swift:301:31:301:84 | call to JSStringCreateWithUTF8CString(_:) | UnsafeJsEval.swift:301:16:301:85 | call to JSStringRetain(_:) | provenance | | +| UnsafeJsEval.swift:301:61:301:61 | stringBytes | UnsafeJsEval.swift:301:61:301:73 | .baseAddress | provenance | | +| UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | UnsafeJsEval.swift:301:61:301:61 | stringBytes | provenance | | +| UnsafeJsEval.swift:301:61:301:73 | .baseAddress | UnsafeJsEval.swift:301:31:301:84 | call to JSStringCreateWithUTF8CString(_:) | provenance | | +| UnsafeJsEval.swift:318:24:318:87 | call to String.init(contentsOf:) | UnsafeJsEval.swift:320:44:320:74 | ... .+(_:_:) ... | provenance | | nodes | UnsafeJsEval.swift:204:7:204:66 | try! ... | semmle.label | try! ... | | UnsafeJsEval.swift:204:12:204:66 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | diff --git a/swift/ql/test/query-tests/Security/CWE-1204/StaticInitializationVector.expected b/swift/ql/test/query-tests/Security/CWE-1204/StaticInitializationVector.expected index 74adec1c6051..02fdbe6a6a48 100644 --- a/swift/ql/test/query-tests/Security/CWE-1204/StaticInitializationVector.expected +++ b/swift/ql/test/query-tests/Security/CWE-1204/StaticInitializationVector.expected @@ -1,44 +1,44 @@ edges -| rncryptor.swift:60:19:60:25 | call to Data.init(_:) | rncryptor.swift:68:104:68:104 | myConstIV1 | -| rncryptor.swift:60:19:60:25 | call to Data.init(_:) | rncryptor.swift:77:125:77:125 | myConstIV1 | -| rncryptor.swift:60:24:60:24 | 0 | rncryptor.swift:60:19:60:25 | call to Data.init(_:) | -| rncryptor.swift:61:19:61:27 | call to Data.init(_:) | rncryptor.swift:70:104:70:104 | myConstIV2 | -| rncryptor.swift:61:19:61:27 | call to Data.init(_:) | rncryptor.swift:79:133:79:133 | myConstIV2 | -| rncryptor.swift:61:24:61:24 | 123 | rncryptor.swift:61:19:61:27 | call to Data.init(_:) | -| rncryptor.swift:62:19:62:35 | call to Data.init(_:) | rncryptor.swift:72:84:72:84 | myConstIV3 | -| rncryptor.swift:62:19:62:35 | call to Data.init(_:) | rncryptor.swift:81:105:81:105 | myConstIV3 | -| rncryptor.swift:62:24:62:34 | [...] | rncryptor.swift:62:19:62:35 | call to Data.init(_:) | -| rncryptor.swift:63:19:63:28 | call to Data.init(_:) | rncryptor.swift:74:84:74:84 | myConstIV4 | -| rncryptor.swift:63:19:63:28 | call to Data.init(_:) | rncryptor.swift:83:113:83:113 | myConstIV4 | -| rncryptor.swift:63:24:63:24 | iv | rncryptor.swift:63:19:63:28 | call to Data.init(_:) | -| test.swift:53:19:53:34 | iv | test.swift:54:17:54:17 | iv | -| test.swift:85:3:85:3 | this string is constant | test.swift:89:10:89:28 | call to getConstantString() | -| test.swift:85:3:85:3 | this string is constant | test.swift:101:17:101:35 | call to getConstantString() | -| test.swift:89:2:89:34 | call to Array.init(_:) [Collection element] | test.swift:100:12:100:29 | call to getConstantArray() [Collection element] | -| test.swift:89:10:89:28 | call to getConstantString() | test.swift:89:10:89:30 | .utf8 | -| test.swift:89:10:89:30 | .utf8 | test.swift:89:2:89:34 | call to Array.init(_:) [Collection element] | -| test.swift:99:25:99:120 | [...] | test.swift:128:33:128:33 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:135:22:135:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:139:22:139:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:140:22:140:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:145:22:145:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:146:22:146:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:147:22:147:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:147:22:147:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:153:22:153:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:157:24:157:24 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:161:22:161:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:162:22:162:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:167:22:167:22 | iv | -| test.swift:99:25:99:120 | [...] | test.swift:168:22:168:22 | iv | -| test.swift:100:12:100:29 | call to getConstantArray() [Collection element] | test.swift:129:33:129:33 | iv2 | -| test.swift:101:17:101:35 | call to getConstantString() | test.swift:112:36:112:36 | ivString | -| test.swift:101:17:101:35 | call to getConstantString() | test.swift:113:36:113:36 | ivString | -| test.swift:101:17:101:35 | call to getConstantString() | test.swift:118:41:118:41 | ivString | -| test.swift:101:17:101:35 | call to getConstantString() | test.swift:122:41:122:41 | ivString | -| test.swift:101:17:101:35 | call to getConstantString() | test.swift:123:41:123:41 | ivString | -| test.swift:101:17:101:35 | call to getConstantString() | test.swift:130:39:130:39 | ivString | -| test.swift:147:22:147:22 | iv | test.swift:53:19:53:34 | iv | +| rncryptor.swift:60:19:60:25 | call to Data.init(_:) | rncryptor.swift:68:104:68:104 | myConstIV1 | provenance | | +| rncryptor.swift:60:19:60:25 | call to Data.init(_:) | rncryptor.swift:77:125:77:125 | myConstIV1 | provenance | | +| rncryptor.swift:60:24:60:24 | 0 | rncryptor.swift:60:19:60:25 | call to Data.init(_:) | provenance | | +| rncryptor.swift:61:19:61:27 | call to Data.init(_:) | rncryptor.swift:70:104:70:104 | myConstIV2 | provenance | | +| rncryptor.swift:61:19:61:27 | call to Data.init(_:) | rncryptor.swift:79:133:79:133 | myConstIV2 | provenance | | +| rncryptor.swift:61:24:61:24 | 123 | rncryptor.swift:61:19:61:27 | call to Data.init(_:) | provenance | | +| rncryptor.swift:62:19:62:35 | call to Data.init(_:) | rncryptor.swift:72:84:72:84 | myConstIV3 | provenance | | +| rncryptor.swift:62:19:62:35 | call to Data.init(_:) | rncryptor.swift:81:105:81:105 | myConstIV3 | provenance | | +| rncryptor.swift:62:24:62:34 | [...] | rncryptor.swift:62:19:62:35 | call to Data.init(_:) | provenance | | +| rncryptor.swift:63:19:63:28 | call to Data.init(_:) | rncryptor.swift:74:84:74:84 | myConstIV4 | provenance | | +| rncryptor.swift:63:19:63:28 | call to Data.init(_:) | rncryptor.swift:83:113:83:113 | myConstIV4 | provenance | | +| rncryptor.swift:63:24:63:24 | iv | rncryptor.swift:63:19:63:28 | call to Data.init(_:) | provenance | | +| test.swift:53:19:53:34 | iv | test.swift:54:17:54:17 | iv | provenance | | +| test.swift:85:3:85:3 | this string is constant | test.swift:89:10:89:28 | call to getConstantString() | provenance | | +| test.swift:85:3:85:3 | this string is constant | test.swift:101:17:101:35 | call to getConstantString() | provenance | | +| test.swift:89:2:89:34 | call to Array.init(_:) [Collection element] | test.swift:100:12:100:29 | call to getConstantArray() [Collection element] | provenance | | +| test.swift:89:10:89:28 | call to getConstantString() | test.swift:89:10:89:30 | .utf8 | provenance | | +| test.swift:89:10:89:30 | .utf8 | test.swift:89:2:89:34 | call to Array.init(_:) [Collection element] | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:128:33:128:33 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:135:22:135:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:139:22:139:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:140:22:140:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:145:22:145:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:146:22:146:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:147:22:147:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:147:22:147:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:153:22:153:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:157:24:157:24 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:161:22:161:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:162:22:162:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:167:22:167:22 | iv | provenance | | +| test.swift:99:25:99:120 | [...] | test.swift:168:22:168:22 | iv | provenance | | +| test.swift:100:12:100:29 | call to getConstantArray() [Collection element] | test.swift:129:33:129:33 | iv2 | provenance | | +| test.swift:101:17:101:35 | call to getConstantString() | test.swift:112:36:112:36 | ivString | provenance | | +| test.swift:101:17:101:35 | call to getConstantString() | test.swift:113:36:113:36 | ivString | provenance | | +| test.swift:101:17:101:35 | call to getConstantString() | test.swift:118:41:118:41 | ivString | provenance | | +| test.swift:101:17:101:35 | call to getConstantString() | test.swift:122:41:122:41 | ivString | provenance | | +| test.swift:101:17:101:35 | call to getConstantString() | test.swift:123:41:123:41 | ivString | provenance | | +| test.swift:101:17:101:35 | call to getConstantString() | test.swift:130:39:130:39 | ivString | provenance | | +| test.swift:147:22:147:22 | iv | test.swift:53:19:53:34 | iv | provenance | | nodes | rncryptor.swift:60:19:60:25 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | | rncryptor.swift:60:24:60:24 | 0 | semmle.label | 0 | diff --git a/swift/ql/test/query-tests/Security/CWE-134/UncontrolledFormatString.expected b/swift/ql/test/query-tests/Security/CWE-134/UncontrolledFormatString.expected index 56dd3f6e3c3c..94dd27a82c2f 100644 --- a/swift/ql/test/query-tests/Security/CWE-134/UncontrolledFormatString.expected +++ b/swift/ql/test/query-tests/Security/CWE-134/UncontrolledFormatString.expected @@ -1,39 +1,39 @@ edges -| UncontrolledFormatString.swift:77:12:77:22 | format | UncontrolledFormatString.swift:78:22:80:5 | format | -| UncontrolledFormatString.swift:78:22:80:5 | format | UncontrolledFormatString.swift:78:22:80:5 | { ... } [format] | -| UncontrolledFormatString.swift:78:22:80:5 | { ... } [format] | UncontrolledFormatString.swift:79:16:79:16 | this [format] | -| UncontrolledFormatString.swift:79:16:79:16 | this [format] | UncontrolledFormatString.swift:79:16:79:16 | format | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:97:24:97:24 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:100:24:100:24 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:101:24:101:24 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:103:24:103:24 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:104:24:104:24 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:105:24:105:24 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:106:42:106:42 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:108:43:108:43 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:109:57:109:57 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:111:50:111:50 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:112:64:112:64 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:115:11:115:11 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:116:11:116:11 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:116:11:116:11 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:118:61:118:61 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:130:39:130:39 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:135:37:135:37 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:139:5:139:5 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:154:26:154:26 | tainted | -| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:156:32:156:32 | tainted | -| UncontrolledFormatString.swift:108:43:108:43 | tainted | UncontrolledFormatString.swift:108:26:108:50 | call to NSString.init(string:) | -| UncontrolledFormatString.swift:109:57:109:57 | tainted | UncontrolledFormatString.swift:109:40:109:64 | call to NSString.init(string:) | -| UncontrolledFormatString.swift:111:50:111:50 | tainted | UncontrolledFormatString.swift:111:33:111:57 | call to NSString.init(string:) | -| UncontrolledFormatString.swift:112:64:112:64 | tainted | UncontrolledFormatString.swift:112:47:112:71 | call to NSString.init(string:) | -| UncontrolledFormatString.swift:116:11:116:11 | tainted | UncontrolledFormatString.swift:77:12:77:22 | format | -| UncontrolledFormatString.swift:135:37:135:37 | tainted | UncontrolledFormatString.swift:135:20:135:44 | call to NSString.init(string:) | -| UncontrolledFormatString.swift:139:5:139:5 | tainted | UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | -| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:141:24:141:24 | cstr | -| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:143:21:143:21 | cstr | -| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:145:27:145:27 | cstr | -| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:147:35:147:35 | cstr | +| UncontrolledFormatString.swift:77:12:77:22 | format | UncontrolledFormatString.swift:78:22:80:5 | format | provenance | | +| UncontrolledFormatString.swift:78:22:80:5 | format | UncontrolledFormatString.swift:78:22:80:5 | { ... } [format] | provenance | | +| UncontrolledFormatString.swift:78:22:80:5 | { ... } [format] | UncontrolledFormatString.swift:79:16:79:16 | this [format] | provenance | | +| UncontrolledFormatString.swift:79:16:79:16 | this [format] | UncontrolledFormatString.swift:79:16:79:16 | format | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:97:24:97:24 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:100:24:100:24 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:101:24:101:24 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:103:24:103:24 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:104:24:104:24 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:105:24:105:24 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:106:42:106:42 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:108:43:108:43 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:109:57:109:57 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:111:50:111:50 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:112:64:112:64 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:115:11:115:11 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:116:11:116:11 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:116:11:116:11 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:118:61:118:61 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:130:39:130:39 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:135:37:135:37 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:139:5:139:5 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:154:26:154:26 | tainted | provenance | | +| UncontrolledFormatString.swift:91:24:91:77 | call to String.init(contentsOf:) | UncontrolledFormatString.swift:156:32:156:32 | tainted | provenance | | +| UncontrolledFormatString.swift:108:43:108:43 | tainted | UncontrolledFormatString.swift:108:26:108:50 | call to NSString.init(string:) | provenance | | +| UncontrolledFormatString.swift:109:57:109:57 | tainted | UncontrolledFormatString.swift:109:40:109:64 | call to NSString.init(string:) | provenance | | +| UncontrolledFormatString.swift:111:50:111:50 | tainted | UncontrolledFormatString.swift:111:33:111:57 | call to NSString.init(string:) | provenance | | +| UncontrolledFormatString.swift:112:64:112:64 | tainted | UncontrolledFormatString.swift:112:47:112:71 | call to NSString.init(string:) | provenance | | +| UncontrolledFormatString.swift:116:11:116:11 | tainted | UncontrolledFormatString.swift:77:12:77:22 | format | provenance | | +| UncontrolledFormatString.swift:135:37:135:37 | tainted | UncontrolledFormatString.swift:135:20:135:44 | call to NSString.init(string:) | provenance | | +| UncontrolledFormatString.swift:139:5:139:5 | tainted | UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | provenance | | +| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:141:24:141:24 | cstr | provenance | | +| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:143:21:143:21 | cstr | provenance | | +| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:145:27:145:27 | cstr | provenance | | +| UncontrolledFormatString.swift:140:9:140:9 | cstr [Collection element] | UncontrolledFormatString.swift:147:35:147:35 | cstr | provenance | | nodes | UncontrolledFormatString.swift:77:12:77:22 | format | semmle.label | format | | UncontrolledFormatString.swift:78:22:80:5 | format | semmle.label | format | diff --git a/swift/ql/test/query-tests/Security/CWE-135/StringLengthConflation.expected b/swift/ql/test/query-tests/Security/CWE-135/StringLengthConflation.expected index 0fa5e727fcbd..83405f7cf61f 100644 --- a/swift/ql/test/query-tests/Security/CWE-135/StringLengthConflation.expected +++ b/swift/ql/test/query-tests/Security/CWE-135/StringLengthConflation.expected @@ -1,46 +1,46 @@ edges -| StringLengthConflation2.swift:35:36:35:38 | .count | StringLengthConflation2.swift:35:36:35:46 | ... .-(_:_:) ... | -| StringLengthConflation2.swift:37:34:37:36 | .count | StringLengthConflation2.swift:37:34:37:44 | ... .-(_:_:) ... | -| StringLengthConflation.swift:60:47:60:50 | .length | StringLengthConflation.swift:60:47:60:59 | ... ./(_:_:) ... | -| StringLengthConflation.swift:66:33:66:36 | .length | StringLengthConflation.swift:66:33:66:45 | ... ./(_:_:) ... | -| StringLengthConflation.swift:96:28:96:31 | .length | StringLengthConflation.swift:96:28:96:40 | ... .-(_:_:) ... | -| StringLengthConflation.swift:100:27:100:30 | .length | StringLengthConflation.swift:100:27:100:39 | ... .-(_:_:) ... | -| StringLengthConflation.swift:104:25:104:28 | .length | StringLengthConflation.swift:104:25:104:37 | ... .-(_:_:) ... | -| StringLengthConflation.swift:108:25:108:28 | .length | StringLengthConflation.swift:108:25:108:37 | ... .-(_:_:) ... | -| StringLengthConflation.swift:114:23:114:26 | .length | StringLengthConflation.swift:114:23:114:35 | ... .-(_:_:) ... | -| StringLengthConflation.swift:120:22:120:25 | .length | StringLengthConflation.swift:120:22:120:34 | ... .-(_:_:) ... | -| StringLengthConflation.swift:125:34:125:36 | .count | StringLengthConflation.swift:125:34:125:44 | ... .-(_:_:) ... | -| StringLengthConflation.swift:126:36:126:38 | .count | StringLengthConflation.swift:126:36:126:46 | ... .-(_:_:) ... | -| StringLengthConflation.swift:131:36:131:38 | .count | StringLengthConflation.swift:131:36:131:46 | ... .-(_:_:) ... | -| StringLengthConflation.swift:132:38:132:40 | .count | StringLengthConflation.swift:132:38:132:48 | ... .-(_:_:) ... | -| StringLengthConflation.swift:137:34:137:36 | .count | StringLengthConflation.swift:137:34:137:44 | ... .-(_:_:) ... | -| StringLengthConflation.swift:138:36:138:38 | .count | StringLengthConflation.swift:138:36:138:46 | ... .-(_:_:) ... | -| StringLengthConflation.swift:144:28:144:30 | .count | StringLengthConflation.swift:144:28:144:38 | ... .-(_:_:) ... | -| StringLengthConflation.swift:168:29:168:36 | .count | StringLengthConflation.swift:168:29:168:44 | ... .-(_:_:) ... | -| StringLengthConflation.swift:169:29:169:37 | .count | StringLengthConflation.swift:169:29:169:45 | ... .-(_:_:) ... | -| StringLengthConflation.swift:170:29:170:46 | .count | StringLengthConflation.swift:170:29:170:54 | ... .-(_:_:) ... | -| StringLengthConflation.swift:171:29:171:32 | .length | StringLengthConflation.swift:171:29:171:41 | ... .-(_:_:) ... | -| StringLengthConflation.swift:172:29:172:33 | .length | StringLengthConflation.swift:172:29:172:42 | ... .-(_:_:) ... | -| StringLengthConflation.swift:173:35:173:37 | .count | StringLengthConflation.swift:173:35:173:45 | ... .-(_:_:) ... | -| StringLengthConflation.swift:174:35:174:42 | .count | StringLengthConflation.swift:174:35:174:50 | ... .-(_:_:) ... | -| StringLengthConflation.swift:175:35:175:43 | .count | StringLengthConflation.swift:175:35:175:51 | ... .-(_:_:) ... | -| StringLengthConflation.swift:177:35:177:38 | .length | StringLengthConflation.swift:177:35:177:47 | ... .-(_:_:) ... | -| StringLengthConflation.swift:178:35:178:39 | .length | StringLengthConflation.swift:178:35:178:48 | ... .-(_:_:) ... | -| StringLengthConflation.swift:179:37:179:39 | .count | StringLengthConflation.swift:179:37:179:47 | ... .-(_:_:) ... | -| StringLengthConflation.swift:181:37:181:39 | .count | StringLengthConflation.swift:181:37:181:47 | ... .-(_:_:) ... | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:53:43:53:46 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:60:47:60:50 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:66:33:66:36 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:96:28:96:31 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:100:27:100:30 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:104:25:104:28 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:108:25:108:28 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:114:23:114:26 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:120:22:120:25 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:171:29:171:32 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:172:29:172:33 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:177:35:177:38 | .length | -| file://:0:0:0:0 | .length | StringLengthConflation.swift:178:35:178:39 | .length | +| StringLengthConflation2.swift:35:36:35:38 | .count | StringLengthConflation2.swift:35:36:35:46 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation2.swift:37:34:37:36 | .count | StringLengthConflation2.swift:37:34:37:44 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:60:47:60:50 | .length | StringLengthConflation.swift:60:47:60:59 | ... ./(_:_:) ... | provenance | | +| StringLengthConflation.swift:66:33:66:36 | .length | StringLengthConflation.swift:66:33:66:45 | ... ./(_:_:) ... | provenance | | +| StringLengthConflation.swift:96:28:96:31 | .length | StringLengthConflation.swift:96:28:96:40 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:100:27:100:30 | .length | StringLengthConflation.swift:100:27:100:39 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:104:25:104:28 | .length | StringLengthConflation.swift:104:25:104:37 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:108:25:108:28 | .length | StringLengthConflation.swift:108:25:108:37 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:114:23:114:26 | .length | StringLengthConflation.swift:114:23:114:35 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:120:22:120:25 | .length | StringLengthConflation.swift:120:22:120:34 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:125:34:125:36 | .count | StringLengthConflation.swift:125:34:125:44 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:126:36:126:38 | .count | StringLengthConflation.swift:126:36:126:46 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:131:36:131:38 | .count | StringLengthConflation.swift:131:36:131:46 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:132:38:132:40 | .count | StringLengthConflation.swift:132:38:132:48 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:137:34:137:36 | .count | StringLengthConflation.swift:137:34:137:44 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:138:36:138:38 | .count | StringLengthConflation.swift:138:36:138:46 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:144:28:144:30 | .count | StringLengthConflation.swift:144:28:144:38 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:168:29:168:36 | .count | StringLengthConflation.swift:168:29:168:44 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:169:29:169:37 | .count | StringLengthConflation.swift:169:29:169:45 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:170:29:170:46 | .count | StringLengthConflation.swift:170:29:170:54 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:171:29:171:32 | .length | StringLengthConflation.swift:171:29:171:41 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:172:29:172:33 | .length | StringLengthConflation.swift:172:29:172:42 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:173:35:173:37 | .count | StringLengthConflation.swift:173:35:173:45 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:174:35:174:42 | .count | StringLengthConflation.swift:174:35:174:50 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:175:35:175:43 | .count | StringLengthConflation.swift:175:35:175:51 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:177:35:177:38 | .length | StringLengthConflation.swift:177:35:177:47 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:178:35:178:39 | .length | StringLengthConflation.swift:178:35:178:48 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:179:37:179:39 | .count | StringLengthConflation.swift:179:37:179:47 | ... .-(_:_:) ... | provenance | | +| StringLengthConflation.swift:181:37:181:39 | .count | StringLengthConflation.swift:181:37:181:47 | ... .-(_:_:) ... | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:53:43:53:46 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:60:47:60:50 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:66:33:66:36 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:96:28:96:31 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:100:27:100:30 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:104:25:104:28 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:108:25:108:28 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:114:23:114:26 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:120:22:120:25 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:171:29:171:32 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:172:29:172:33 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:177:35:177:38 | .length | provenance | | +| file://:0:0:0:0 | .length | StringLengthConflation.swift:178:35:178:39 | .length | provenance | | nodes | StringLengthConflation2.swift:35:36:35:38 | .count | semmle.label | .count | | StringLengthConflation2.swift:35:36:35:46 | ... .-(_:_:) ... | semmle.label | ... .-(_:_:) ... | diff --git a/swift/ql/test/query-tests/Security/CWE-259/ConstantPassword.expected b/swift/ql/test/query-tests/Security/CWE-259/ConstantPassword.expected index 11c1950f3a97..0c1e98bfe7c6 100644 --- a/swift/ql/test/query-tests/Security/CWE-259/ConstantPassword.expected +++ b/swift/ql/test/query-tests/Security/CWE-259/ConstantPassword.expected @@ -1,34 +1,34 @@ edges -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:77:89:77:89 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:78:56:78:56 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:80:89:80:89 | myMaybePassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:81:56:81:56 | myMaybePassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:91:39:91:39 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:92:37:92:37 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:93:39:93:39 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:94:37:94:37 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:96:68:96:68 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:97:68:97:68 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:98:68:98:68 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:100:89:100:89 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:101:97:101:97 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:102:89:102:89 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:103:97:103:97 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:105:32:105:32 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:107:61:107:61 | myConstPassword | -| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:108:97:108:97 | myConstPassword | -| test.swift:29:3:29:3 | this string is constant | test.swift:33:10:33:28 | call to getConstantString() | -| test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | -| test.swift:33:10:33:28 | call to getConstantString() | test.swift:33:10:33:30 | .utf8 | -| test.swift:33:10:33:30 | .utf8 | test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | -| test.swift:43:39:43:134 | [...] | test.swift:51:30:51:30 | constantPassword | -| test.swift:43:39:43:134 | [...] | test.swift:56:40:56:40 | constantPassword | -| test.swift:43:39:43:134 | [...] | test.swift:62:40:62:40 | constantPassword | -| test.swift:43:39:43:134 | [...] | test.swift:67:34:67:34 | constantPassword | -| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:52:30:52:30 | constantStringPassword | -| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:57:40:57:40 | constantStringPassword | -| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:63:40:63:40 | constantStringPassword | -| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:68:34:68:34 | constantStringPassword | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:77:89:77:89 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:78:56:78:56 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:80:89:80:89 | myMaybePassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:81:56:81:56 | myMaybePassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:91:39:91:39 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:92:37:92:37 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:93:39:93:39 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:94:37:94:37 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:96:68:96:68 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:97:68:97:68 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:98:68:98:68 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:100:89:100:89 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:101:97:101:97 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:102:89:102:89 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:103:97:103:97 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:105:32:105:32 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:107:61:107:61 | myConstPassword | provenance | | +| rncryptor.swift:69:24:69:24 | abc123 | rncryptor.swift:108:97:108:97 | myConstPassword | provenance | | +| test.swift:29:3:29:3 | this string is constant | test.swift:33:10:33:28 | call to getConstantString() | provenance | | +| test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | provenance | | +| test.swift:33:10:33:28 | call to getConstantString() | test.swift:33:10:33:30 | .utf8 | provenance | | +| test.swift:33:10:33:30 | .utf8 | test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | provenance | | +| test.swift:43:39:43:134 | [...] | test.swift:51:30:51:30 | constantPassword | provenance | | +| test.swift:43:39:43:134 | [...] | test.swift:56:40:56:40 | constantPassword | provenance | | +| test.swift:43:39:43:134 | [...] | test.swift:62:40:62:40 | constantPassword | provenance | | +| test.swift:43:39:43:134 | [...] | test.swift:67:34:67:34 | constantPassword | provenance | | +| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:52:30:52:30 | constantStringPassword | provenance | | +| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:57:40:57:40 | constantStringPassword | provenance | | +| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:63:40:63:40 | constantStringPassword | provenance | | +| test.swift:44:31:44:48 | call to getConstantArray() [Collection element] | test.swift:68:34:68:34 | constantStringPassword | provenance | | nodes | rncryptor.swift:69:24:69:24 | abc123 | semmle.label | abc123 | | rncryptor.swift:77:89:77:89 | myConstPassword | semmle.label | myConstPassword | diff --git a/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected b/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected index dca833fff7f6..d3d3e9ec03e6 100644 --- a/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected +++ b/swift/ql/test/query-tests/Security/CWE-311/CleartextStorageDatabase.expected @@ -1,315 +1,315 @@ edges -| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:123:17:123:17 | insertQuery | -| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:127:21:127:21 | insertQuery | -| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:131:17:131:17 | insertQuery | -| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:135:20:135:20 | insertQuery | -| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:139:24:139:24 | insertQuery | -| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:124:17:124:17 | updateQuery | -| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:128:21:128:21 | updateQuery | -| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:132:17:132:17 | updateQuery | -| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:136:20:136:20 | updateQuery | -| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:140:24:140:24 | updateQuery | -| SQLite.swift:147:32:147:32 | [...] [Collection element] | SQLite.swift:147:32:147:32 | [...] | -| SQLite.swift:147:32:147:32 | mobilePhoneNumber | SQLite.swift:147:32:147:32 | [...] [Collection element] | -| SQLite.swift:148:28:148:28 | [...] [Collection element] | SQLite.swift:148:28:148:28 | [...] | -| SQLite.swift:148:28:148:28 | mobilePhoneNumber | SQLite.swift:148:28:148:28 | [...] [Collection element] | -| SQLite.swift:149:31:149:31 | [...] [Collection element] | SQLite.swift:149:31:149:31 | [...] | -| SQLite.swift:149:31:149:31 | mobilePhoneNumber | SQLite.swift:149:31:149:31 | [...] [Collection element] | -| SQLite.swift:152:21:152:21 | [...] [Collection element] | SQLite.swift:152:21:152:21 | [...] | -| SQLite.swift:152:21:152:21 | mobilePhoneNumber | SQLite.swift:152:21:152:21 | [...] [Collection element] | -| SQLite.swift:153:20:153:20 | [...] [Collection element] | SQLite.swift:153:20:153:20 | [...] | -| SQLite.swift:153:20:153:20 | mobilePhoneNumber | SQLite.swift:153:20:153:20 | [...] [Collection element] | -| SQLite.swift:154:23:154:23 | [...] [Collection element] | SQLite.swift:154:23:154:23 | [...] | -| SQLite.swift:154:23:154:23 | mobilePhoneNumber | SQLite.swift:154:23:154:23 | [...] [Collection element] | -| SQLite.swift:158:32:158:54 | [...] [Collection element] | SQLite.swift:158:32:158:54 | [...] | -| SQLite.swift:158:33:158:33 | mobilePhoneNumber | SQLite.swift:158:32:158:54 | [...] [Collection element] | -| SQLite.swift:159:28:159:50 | [...] [Collection element] | SQLite.swift:159:28:159:50 | [...] | -| SQLite.swift:159:29:159:29 | mobilePhoneNumber | SQLite.swift:159:28:159:50 | [...] [Collection element] | -| SQLite.swift:160:31:160:53 | [...] [Collection element] | SQLite.swift:160:31:160:53 | [...] | -| SQLite.swift:160:32:160:32 | mobilePhoneNumber | SQLite.swift:160:31:160:53 | [...] [Collection element] | -| SQLite.swift:163:21:163:43 | [...] [Collection element] | SQLite.swift:163:21:163:43 | [...] | -| SQLite.swift:163:22:163:22 | mobilePhoneNumber | SQLite.swift:163:21:163:43 | [...] [Collection element] | -| SQLite.swift:164:20:164:42 | [...] [Collection element] | SQLite.swift:164:20:164:42 | [...] | -| SQLite.swift:164:21:164:21 | mobilePhoneNumber | SQLite.swift:164:20:164:42 | [...] [Collection element] | -| SQLite.swift:165:23:165:45 | [...] [Collection element] | SQLite.swift:165:23:165:45 | [...] | -| SQLite.swift:165:24:165:24 | mobilePhoneNumber | SQLite.swift:165:23:165:45 | [...] [Collection element] | -| SQLite.swift:169:32:169:70 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:169:32:169:70 | [...] | -| SQLite.swift:169:43:169:53 | (...) [Tuple element at index 1] | SQLite.swift:169:32:169:70 | [...] [Collection element, Tuple element at index 1] | -| SQLite.swift:169:53:169:53 | mobilePhoneNumber | SQLite.swift:169:43:169:53 | (...) [Tuple element at index 1] | -| SQLite.swift:170:28:170:66 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:170:28:170:66 | [...] | -| SQLite.swift:170:39:170:49 | (...) [Tuple element at index 1] | SQLite.swift:170:28:170:66 | [...] [Collection element, Tuple element at index 1] | -| SQLite.swift:170:49:170:49 | mobilePhoneNumber | SQLite.swift:170:39:170:49 | (...) [Tuple element at index 1] | -| SQLite.swift:171:31:171:69 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:171:31:171:69 | [...] | -| SQLite.swift:171:42:171:52 | (...) [Tuple element at index 1] | SQLite.swift:171:31:171:69 | [...] [Collection element, Tuple element at index 1] | -| SQLite.swift:171:52:171:52 | mobilePhoneNumber | SQLite.swift:171:42:171:52 | (...) [Tuple element at index 1] | -| SQLite.swift:174:21:174:59 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:174:21:174:59 | [...] | -| SQLite.swift:174:32:174:42 | (...) [Tuple element at index 1] | SQLite.swift:174:21:174:59 | [...] [Collection element, Tuple element at index 1] | -| SQLite.swift:174:42:174:42 | mobilePhoneNumber | SQLite.swift:174:32:174:42 | (...) [Tuple element at index 1] | -| SQLite.swift:175:20:175:58 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:175:20:175:58 | [...] | -| SQLite.swift:175:31:175:41 | (...) [Tuple element at index 1] | SQLite.swift:175:20:175:58 | [...] [Collection element, Tuple element at index 1] | -| SQLite.swift:175:41:175:41 | mobilePhoneNumber | SQLite.swift:175:31:175:41 | (...) [Tuple element at index 1] | -| SQLite.swift:176:23:176:61 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:176:23:176:61 | [...] | -| SQLite.swift:176:34:176:44 | (...) [Tuple element at index 1] | SQLite.swift:176:23:176:61 | [...] [Collection element, Tuple element at index 1] | -| SQLite.swift:176:44:176:44 | mobilePhoneNumber | SQLite.swift:176:34:176:44 | (...) [Tuple element at index 1] | -| SQLite.swift:186:40:186:54 | ... <-(_:_:) ... | SQLite.swift:186:40:186:54 | [...] [Collection element] | -| SQLite.swift:186:40:186:54 | [...] [Collection element] | SQLite.swift:186:40:186:54 | [...] | -| SQLite.swift:186:54:186:54 | mobilePhoneNumber | SQLite.swift:186:40:186:54 | ... <-(_:_:) ... | -| SQLite.swift:189:26:189:40 | ... <-(_:_:) ... | SQLite.swift:189:26:189:40 | [...] [Collection element] | -| SQLite.swift:189:26:189:40 | [...] [Collection element] | SQLite.swift:189:26:189:40 | [...] | -| SQLite.swift:189:40:189:40 | mobilePhoneNumber | SQLite.swift:189:26:189:40 | ... <-(_:_:) ... | -| SQLite.swift:191:27:191:41 | ... <-(_:_:) ... | SQLite.swift:191:27:191:41 | [...] [Collection element] | -| SQLite.swift:191:27:191:41 | [...] [Collection element] | SQLite.swift:191:27:191:41 | [...] | -| SQLite.swift:191:41:191:41 | mobilePhoneNumber | SQLite.swift:191:27:191:41 | ... <-(_:_:) ... | -| SQLite.swift:193:26:193:89 | ... <-(_:_:) ... | SQLite.swift:193:26:193:89 | [...] [Collection element] | -| SQLite.swift:193:26:193:89 | [...] [Collection element] | SQLite.swift:193:26:193:89 | [...] | -| SQLite.swift:193:40:193:89 | call to replace(_:with:) | SQLite.swift:193:26:193:89 | ... <-(_:_:) ... | -| SQLite.swift:193:72:193:72 | mobilePhoneNumber | SQLite.swift:193:40:193:89 | call to replace(_:with:) | -| SQLite.swift:197:16:197:50 | [...] [Collection element, Collection element] | SQLite.swift:199:30:199:30 | badMany | -| SQLite.swift:197:16:197:50 | [...] [Collection element, Collection element] | SQLite.swift:201:54:201:54 | badMany | -| SQLite.swift:197:17:197:49 | [...] [Collection element] | SQLite.swift:197:16:197:50 | [...] [Collection element, Collection element] | -| SQLite.swift:197:18:197:32 | ... <-(_:_:) ... | SQLite.swift:197:17:197:49 | [...] [Collection element] | -| SQLite.swift:197:32:197:32 | mobilePhoneNumber | SQLite.swift:197:18:197:32 | ... <-(_:_:) ... | -| file://:0:0:0:0 | self | file://:0:0:0:0 | .value | -| file://:0:0:0:0 | self | file://:0:0:0:0 | .value2 | -| file://:0:0:0:0 | self [value] | file://:0:0:0:0 | .value | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [data] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [data] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [notStoredBankAccountNumber] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [password] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [value] | -| sqlite3_c_api.swift:42:69:42:69 | medicalNotes | sqlite3_c_api.swift:46:27:46:27 | insertQuery | -| sqlite3_c_api.swift:43:49:43:49 | medicalNotes | sqlite3_c_api.swift:47:27:47:27 | updateQuery | -| testCoreData2.swift:23:13:23:13 | value | file://:0:0:0:0 | value | -| testCoreData2.swift:37:2:37:2 | [post] obj [myValue] | testCoreData2.swift:37:2:37:2 | [post] obj | -| testCoreData2.swift:37:16:37:16 | bankAccountNo | testCoreData2.swift:37:2:37:2 | [post] obj [myValue] | -| testCoreData2.swift:39:2:39:2 | [post] obj [myBankAccountNumber] | testCoreData2.swift:39:2:39:2 | [post] obj | -| testCoreData2.swift:39:28:39:28 | bankAccountNo | testCoreData2.swift:39:2:39:2 | [post] obj [myBankAccountNumber] | -| testCoreData2.swift:41:2:41:2 | [post] obj [myBankAccountNumber2] | testCoreData2.swift:41:2:41:2 | [post] obj | -| testCoreData2.swift:41:29:41:29 | bankAccountNo | testCoreData2.swift:41:2:41:2 | [post] obj [myBankAccountNumber2] | -| testCoreData2.swift:43:2:43:2 | [post] obj [notStoredBankAccountNumber] | testCoreData2.swift:43:2:43:2 | [post] obj | -| testCoreData2.swift:43:35:43:35 | bankAccountNo | testCoreData2.swift:23:13:23:13 | value | -| testCoreData2.swift:43:35:43:35 | bankAccountNo | testCoreData2.swift:43:2:43:2 | [post] obj [notStoredBankAccountNumber] | -| testCoreData2.swift:46:2:46:10 | [post] ...? [myValue] | testCoreData2.swift:46:2:46:10 | [post] ...? | -| testCoreData2.swift:46:22:46:22 | bankAccountNo | testCoreData2.swift:46:2:46:10 | [post] ...? [myValue] | -| testCoreData2.swift:48:2:48:10 | [post] ...? [myBankAccountNumber] | testCoreData2.swift:48:2:48:10 | [post] ...? | -| testCoreData2.swift:48:34:48:34 | bankAccountNo | testCoreData2.swift:48:2:48:10 | [post] ...? [myBankAccountNumber] | -| testCoreData2.swift:50:2:50:10 | [post] ...? [myBankAccountNumber2] | testCoreData2.swift:50:2:50:10 | [post] ...? | -| testCoreData2.swift:50:35:50:35 | bankAccountNo | testCoreData2.swift:50:2:50:10 | [post] ...? [myBankAccountNumber2] | -| testCoreData2.swift:52:2:52:10 | [post] ...? [notStoredBankAccountNumber] | testCoreData2.swift:52:2:52:10 | [post] ...? | -| testCoreData2.swift:52:41:52:41 | bankAccountNo | testCoreData2.swift:23:13:23:13 | value | -| testCoreData2.swift:52:41:52:41 | bankAccountNo | testCoreData2.swift:52:2:52:10 | [post] ...? [notStoredBankAccountNumber] | -| testCoreData2.swift:57:3:57:3 | [post] obj [myBankAccountNumber] | testCoreData2.swift:57:3:57:3 | [post] obj | -| testCoreData2.swift:57:29:57:29 | bankAccountNo | testCoreData2.swift:57:3:57:3 | [post] obj [myBankAccountNumber] | -| testCoreData2.swift:60:4:60:4 | [post] obj [myBankAccountNumber] | testCoreData2.swift:60:4:60:4 | [post] obj | -| testCoreData2.swift:60:30:60:30 | bankAccountNo | testCoreData2.swift:60:4:60:4 | [post] obj [myBankAccountNumber] | -| testCoreData2.swift:62:4:62:4 | [post] obj [myBankAccountNumber] | testCoreData2.swift:62:4:62:4 | [post] obj | -| testCoreData2.swift:62:30:62:30 | bankAccountNo | testCoreData2.swift:62:4:62:4 | [post] obj [myBankAccountNumber] | -| testCoreData2.swift:65:3:65:3 | [post] obj [myBankAccountNumber] | testCoreData2.swift:65:3:65:3 | [post] obj | -| testCoreData2.swift:65:29:65:29 | bankAccountNo | testCoreData2.swift:65:3:65:3 | [post] obj [myBankAccountNumber] | -| testCoreData2.swift:70:9:70:9 | self | file://:0:0:0:0 | self | -| testCoreData2.swift:70:9:70:9 | self [value] | file://:0:0:0:0 | self [value] | -| testCoreData2.swift:70:9:70:9 | value | file://:0:0:0:0 | value | -| testCoreData2.swift:71:9:71:9 | self | file://:0:0:0:0 | self | -| testCoreData2.swift:79:2:79:2 | [post] dbObj [myValue] | testCoreData2.swift:79:2:79:2 | [post] dbObj | -| testCoreData2.swift:79:18:79:28 | .bankAccountNo | testCoreData2.swift:79:2:79:2 | [post] dbObj [myValue] | -| testCoreData2.swift:80:2:80:2 | [post] dbObj [myValue] | testCoreData2.swift:80:2:80:2 | [post] dbObj | -| testCoreData2.swift:80:18:80:28 | ...! | testCoreData2.swift:80:2:80:2 | [post] dbObj [myValue] | -| testCoreData2.swift:80:18:80:28 | .bankAccountNo2 | testCoreData2.swift:80:18:80:28 | ...! | -| testCoreData2.swift:82:2:82:2 | [post] dbObj [myValue] | testCoreData2.swift:82:2:82:2 | [post] dbObj | -| testCoreData2.swift:82:18:82:18 | bankAccountNo | testCoreData2.swift:70:9:70:9 | self | -| testCoreData2.swift:82:18:82:18 | bankAccountNo | testCoreData2.swift:82:18:82:32 | .value | -| testCoreData2.swift:82:18:82:32 | .value | testCoreData2.swift:82:2:82:2 | [post] dbObj [myValue] | -| testCoreData2.swift:83:2:83:2 | [post] dbObj [myValue] | testCoreData2.swift:83:2:83:2 | [post] dbObj | -| testCoreData2.swift:83:18:83:18 | bankAccountNo | testCoreData2.swift:71:9:71:9 | self | -| testCoreData2.swift:83:18:83:18 | bankAccountNo | testCoreData2.swift:83:18:83:32 | .value2 | -| testCoreData2.swift:83:18:83:32 | ...! | testCoreData2.swift:83:2:83:2 | [post] dbObj [myValue] | -| testCoreData2.swift:83:18:83:32 | .value2 | testCoreData2.swift:83:18:83:32 | ...! | -| testCoreData2.swift:84:2:84:2 | [post] dbObj [myValue] | testCoreData2.swift:84:2:84:2 | [post] dbObj | -| testCoreData2.swift:84:18:84:18 | ...! | testCoreData2.swift:70:9:70:9 | self | -| testCoreData2.swift:84:18:84:18 | ...! | testCoreData2.swift:84:18:84:33 | .value | -| testCoreData2.swift:84:18:84:18 | bankAccountNo2 | testCoreData2.swift:84:18:84:18 | ...! | -| testCoreData2.swift:84:18:84:33 | .value | testCoreData2.swift:84:2:84:2 | [post] dbObj [myValue] | -| testCoreData2.swift:85:2:85:2 | [post] dbObj [myValue] | testCoreData2.swift:85:2:85:2 | [post] dbObj | -| testCoreData2.swift:85:18:85:18 | ...! | testCoreData2.swift:71:9:71:9 | self | -| testCoreData2.swift:85:18:85:18 | ...! | testCoreData2.swift:85:18:85:33 | .value2 | -| testCoreData2.swift:85:18:85:18 | bankAccountNo2 | testCoreData2.swift:85:18:85:18 | ...! | -| testCoreData2.swift:85:18:85:33 | ...! | testCoreData2.swift:85:2:85:2 | [post] dbObj [myValue] | -| testCoreData2.swift:85:18:85:33 | .value2 | testCoreData2.swift:85:18:85:33 | ...! | -| testCoreData2.swift:87:2:87:10 | [post] ...? [myValue] | testCoreData2.swift:87:2:87:10 | [post] ...? | -| testCoreData2.swift:87:22:87:32 | .bankAccountNo | testCoreData2.swift:87:2:87:10 | [post] ...? [myValue] | -| testCoreData2.swift:88:2:88:10 | [post] ...? [myValue] | testCoreData2.swift:88:2:88:10 | [post] ...? | -| testCoreData2.swift:88:22:88:22 | bankAccountNo | testCoreData2.swift:70:9:70:9 | self | -| testCoreData2.swift:88:22:88:22 | bankAccountNo | testCoreData2.swift:88:22:88:36 | .value | -| testCoreData2.swift:88:22:88:36 | .value | testCoreData2.swift:88:2:88:10 | [post] ...? [myValue] | -| testCoreData2.swift:89:2:89:10 | [post] ...? [myValue] | testCoreData2.swift:89:2:89:10 | [post] ...? | -| testCoreData2.swift:89:22:89:22 | ...! | testCoreData2.swift:71:9:71:9 | self | -| testCoreData2.swift:89:22:89:22 | ...! | testCoreData2.swift:89:22:89:37 | .value2 | -| testCoreData2.swift:89:22:89:22 | bankAccountNo2 | testCoreData2.swift:89:22:89:22 | ...! | -| testCoreData2.swift:89:22:89:37 | ...! | testCoreData2.swift:89:2:89:10 | [post] ...? [myValue] | -| testCoreData2.swift:89:22:89:37 | .value2 | testCoreData2.swift:89:22:89:37 | ...! | -| testCoreData2.swift:91:10:91:10 | bankAccountNo | testCoreData2.swift:92:10:92:10 | a | -| testCoreData2.swift:92:10:92:10 | a | testCoreData2.swift:70:9:70:9 | self | -| testCoreData2.swift:92:10:92:10 | a | testCoreData2.swift:92:10:92:12 | .value | -| testCoreData2.swift:92:10:92:12 | .value | testCoreData2.swift:93:18:93:18 | b | -| testCoreData2.swift:93:2:93:2 | [post] dbObj [myValue] | testCoreData2.swift:93:2:93:2 | [post] dbObj | -| testCoreData2.swift:93:18:93:18 | b | testCoreData2.swift:93:2:93:2 | [post] dbObj [myValue] | -| testCoreData2.swift:95:10:95:10 | bankAccountNo | testCoreData2.swift:97:12:97:12 | c | -| testCoreData2.swift:97:2:97:2 | [post] d [value] | testCoreData2.swift:98:18:98:18 | d [value] | -| testCoreData2.swift:97:12:97:12 | c | testCoreData2.swift:70:9:70:9 | self | -| testCoreData2.swift:97:12:97:12 | c | testCoreData2.swift:97:12:97:14 | .value | -| testCoreData2.swift:97:12:97:14 | .value | testCoreData2.swift:70:9:70:9 | value | -| testCoreData2.swift:97:12:97:14 | .value | testCoreData2.swift:97:2:97:2 | [post] d [value] | -| testCoreData2.swift:98:2:98:2 | [post] dbObj [myValue] | testCoreData2.swift:98:2:98:2 | [post] dbObj | -| testCoreData2.swift:98:18:98:18 | d [value] | testCoreData2.swift:70:9:70:9 | self [value] | -| testCoreData2.swift:98:18:98:18 | d [value] | testCoreData2.swift:98:18:98:20 | .value | -| testCoreData2.swift:98:18:98:20 | .value | testCoreData2.swift:98:2:98:2 | [post] dbObj [myValue] | -| testCoreData2.swift:101:10:101:10 | bankAccountNo | testCoreData2.swift:103:13:103:13 | e | -| testCoreData2.swift:103:13:103:13 | e | testCoreData2.swift:70:9:70:9 | self | -| testCoreData2.swift:103:13:103:13 | e | testCoreData2.swift:104:18:104:18 | e | -| testCoreData2.swift:104:2:104:2 | [post] dbObj [myValue] | testCoreData2.swift:104:2:104:2 | [post] dbObj | -| testCoreData2.swift:104:18:104:18 | e | testCoreData2.swift:70:9:70:9 | self | -| testCoreData2.swift:104:18:104:18 | e | testCoreData2.swift:104:18:104:20 | .value | -| testCoreData2.swift:104:18:104:18 | e | testCoreData2.swift:105:18:105:18 | e | -| testCoreData2.swift:104:18:104:20 | .value | testCoreData2.swift:104:2:104:2 | [post] dbObj [myValue] | -| testCoreData2.swift:105:2:105:2 | [post] dbObj [myValue] | testCoreData2.swift:105:2:105:2 | [post] dbObj | -| testCoreData2.swift:105:18:105:18 | e | testCoreData2.swift:71:9:71:9 | self | -| testCoreData2.swift:105:18:105:18 | e | testCoreData2.swift:105:18:105:20 | .value2 | -| testCoreData2.swift:105:18:105:20 | ...! | testCoreData2.swift:105:2:105:2 | [post] dbObj [myValue] | -| testCoreData2.swift:105:18:105:20 | .value2 | testCoreData2.swift:105:18:105:20 | ...! | -| testCoreData.swift:18:19:18:26 | value | testCoreData.swift:19:12:19:12 | value | -| testCoreData.swift:31:3:31:3 | newValue | testCoreData.swift:32:13:32:13 | newValue | -| testCoreData.swift:61:25:61:25 | password | testCoreData.swift:18:19:18:26 | value | -| testCoreData.swift:64:2:64:2 | [post] obj [myValue] | testCoreData.swift:64:2:64:2 | [post] obj | -| testCoreData.swift:64:16:64:16 | password | testCoreData.swift:31:3:31:3 | newValue | -| testCoreData.swift:64:16:64:16 | password | testCoreData.swift:64:2:64:2 | [post] obj [myValue] | -| testCoreData.swift:77:24:77:24 | x | testCoreData.swift:78:15:78:15 | x | -| testCoreData.swift:80:10:80:22 | call to getPassword() | testCoreData.swift:81:15:81:15 | y | -| testCoreData.swift:91:10:91:10 | passwd | testCoreData.swift:95:15:95:15 | x | -| testCoreData.swift:92:10:92:10 | passwd | testCoreData.swift:96:15:96:15 | y | -| testCoreData.swift:93:10:93:10 | passwd | testCoreData.swift:97:15:97:15 | z | -| testGRDB.swift:73:56:73:65 | [...] [Collection element] | testGRDB.swift:73:56:73:65 | [...] | -| testGRDB.swift:73:57:73:57 | password | testGRDB.swift:73:56:73:65 | [...] [Collection element] | -| testGRDB.swift:76:42:76:51 | [...] [Collection element] | testGRDB.swift:76:42:76:51 | [...] | -| testGRDB.swift:76:43:76:43 | password | testGRDB.swift:76:42:76:51 | [...] [Collection element] | -| testGRDB.swift:81:44:81:53 | [...] [Collection element] | testGRDB.swift:81:44:81:53 | [...] | -| testGRDB.swift:81:45:81:45 | password | testGRDB.swift:81:44:81:53 | [...] [Collection element] | -| testGRDB.swift:83:44:83:53 | [...] [Collection element] | testGRDB.swift:83:44:83:53 | [...] | -| testGRDB.swift:83:45:83:45 | password | testGRDB.swift:83:44:83:53 | [...] [Collection element] | -| testGRDB.swift:85:44:85:53 | [...] [Collection element] | testGRDB.swift:85:44:85:53 | [...] | -| testGRDB.swift:85:45:85:45 | password | testGRDB.swift:85:44:85:53 | [...] [Collection element] | -| testGRDB.swift:87:44:87:53 | [...] [Collection element] | testGRDB.swift:87:44:87:53 | [...] | -| testGRDB.swift:87:45:87:45 | password | testGRDB.swift:87:44:87:53 | [...] [Collection element] | -| testGRDB.swift:92:37:92:46 | [...] [Collection element] | testGRDB.swift:92:37:92:46 | [...] | -| testGRDB.swift:92:38:92:38 | password | testGRDB.swift:92:37:92:46 | [...] [Collection element] | -| testGRDB.swift:95:36:95:45 | [...] [Collection element] | testGRDB.swift:95:36:95:45 | [...] | -| testGRDB.swift:95:37:95:37 | password | testGRDB.swift:95:36:95:45 | [...] [Collection element] | -| testGRDB.swift:100:72:100:81 | [...] [Collection element] | testGRDB.swift:100:72:100:81 | [...] | -| testGRDB.swift:100:73:100:73 | password | testGRDB.swift:100:72:100:81 | [...] [Collection element] | -| testGRDB.swift:101:72:101:81 | [...] [Collection element] | testGRDB.swift:101:72:101:81 | [...] | -| testGRDB.swift:101:73:101:73 | password | testGRDB.swift:101:72:101:81 | [...] [Collection element] | -| testGRDB.swift:107:52:107:61 | [...] [Collection element] | testGRDB.swift:107:52:107:61 | [...] | -| testGRDB.swift:107:53:107:53 | password | testGRDB.swift:107:52:107:61 | [...] [Collection element] | -| testGRDB.swift:109:52:109:61 | [...] [Collection element] | testGRDB.swift:109:52:109:61 | [...] | -| testGRDB.swift:109:53:109:53 | password | testGRDB.swift:109:52:109:61 | [...] [Collection element] | -| testGRDB.swift:111:51:111:60 | [...] [Collection element] | testGRDB.swift:111:51:111:60 | [...] | -| testGRDB.swift:111:52:111:52 | password | testGRDB.swift:111:51:111:60 | [...] [Collection element] | -| testGRDB.swift:116:47:116:56 | [...] [Collection element] | testGRDB.swift:116:47:116:56 | [...] | -| testGRDB.swift:116:48:116:48 | password | testGRDB.swift:116:47:116:56 | [...] [Collection element] | -| testGRDB.swift:118:47:118:56 | [...] [Collection element] | testGRDB.swift:118:47:118:56 | [...] | -| testGRDB.swift:118:48:118:48 | password | testGRDB.swift:118:47:118:56 | [...] [Collection element] | -| testGRDB.swift:121:44:121:53 | [...] [Collection element] | testGRDB.swift:121:44:121:53 | [...] | -| testGRDB.swift:121:45:121:45 | password | testGRDB.swift:121:44:121:53 | [...] [Collection element] | -| testGRDB.swift:123:44:123:53 | [...] [Collection element] | testGRDB.swift:123:44:123:53 | [...] | -| testGRDB.swift:123:45:123:45 | password | testGRDB.swift:123:44:123:53 | [...] [Collection element] | -| testGRDB.swift:126:44:126:53 | [...] [Collection element] | testGRDB.swift:126:44:126:53 | [...] | -| testGRDB.swift:126:45:126:45 | password | testGRDB.swift:126:44:126:53 | [...] [Collection element] | -| testGRDB.swift:128:44:128:53 | [...] [Collection element] | testGRDB.swift:128:44:128:53 | [...] | -| testGRDB.swift:128:45:128:45 | password | testGRDB.swift:128:44:128:53 | [...] [Collection element] | -| testGRDB.swift:131:44:131:53 | [...] [Collection element] | testGRDB.swift:131:44:131:53 | [...] | -| testGRDB.swift:131:45:131:45 | password | testGRDB.swift:131:44:131:53 | [...] [Collection element] | -| testGRDB.swift:133:44:133:53 | [...] [Collection element] | testGRDB.swift:133:44:133:53 | [...] | -| testGRDB.swift:133:45:133:45 | password | testGRDB.swift:133:44:133:53 | [...] [Collection element] | -| testGRDB.swift:138:68:138:77 | [...] [Collection element] | testGRDB.swift:138:68:138:77 | [...] | -| testGRDB.swift:138:69:138:69 | password | testGRDB.swift:138:68:138:77 | [...] [Collection element] | -| testGRDB.swift:140:68:140:77 | [...] [Collection element] | testGRDB.swift:140:68:140:77 | [...] | -| testGRDB.swift:140:69:140:69 | password | testGRDB.swift:140:68:140:77 | [...] [Collection element] | -| testGRDB.swift:143:65:143:74 | [...] [Collection element] | testGRDB.swift:143:65:143:74 | [...] | -| testGRDB.swift:143:66:143:66 | password | testGRDB.swift:143:65:143:74 | [...] [Collection element] | -| testGRDB.swift:145:65:145:74 | [...] [Collection element] | testGRDB.swift:145:65:145:74 | [...] | -| testGRDB.swift:145:66:145:66 | password | testGRDB.swift:145:65:145:74 | [...] [Collection element] | -| testGRDB.swift:148:65:148:74 | [...] [Collection element] | testGRDB.swift:148:65:148:74 | [...] | -| testGRDB.swift:148:66:148:66 | password | testGRDB.swift:148:65:148:74 | [...] [Collection element] | -| testGRDB.swift:150:65:150:74 | [...] [Collection element] | testGRDB.swift:150:65:150:74 | [...] | -| testGRDB.swift:150:66:150:66 | password | testGRDB.swift:150:65:150:74 | [...] [Collection element] | -| testGRDB.swift:153:65:153:74 | [...] [Collection element] | testGRDB.swift:153:65:153:74 | [...] | -| testGRDB.swift:153:66:153:66 | password | testGRDB.swift:153:65:153:74 | [...] [Collection element] | -| testGRDB.swift:155:65:155:74 | [...] [Collection element] | testGRDB.swift:155:65:155:74 | [...] | -| testGRDB.swift:155:66:155:66 | password | testGRDB.swift:155:65:155:74 | [...] [Collection element] | -| testGRDB.swift:160:59:160:68 | [...] [Collection element] | testGRDB.swift:160:59:160:68 | [...] | -| testGRDB.swift:160:60:160:60 | password | testGRDB.swift:160:59:160:68 | [...] [Collection element] | -| testGRDB.swift:161:50:161:59 | [...] [Collection element] | testGRDB.swift:161:50:161:59 | [...] | -| testGRDB.swift:161:51:161:51 | password | testGRDB.swift:161:50:161:59 | [...] [Collection element] | -| testGRDB.swift:164:59:164:68 | [...] [Collection element] | testGRDB.swift:164:59:164:68 | [...] | -| testGRDB.swift:164:60:164:60 | password | testGRDB.swift:164:59:164:68 | [...] [Collection element] | -| testGRDB.swift:165:50:165:59 | [...] [Collection element] | testGRDB.swift:165:50:165:59 | [...] | -| testGRDB.swift:165:51:165:51 | password | testGRDB.swift:165:50:165:59 | [...] [Collection element] | -| testGRDB.swift:169:56:169:65 | [...] [Collection element] | testGRDB.swift:169:56:169:65 | [...] | -| testGRDB.swift:169:57:169:57 | password | testGRDB.swift:169:56:169:65 | [...] [Collection element] | -| testGRDB.swift:170:47:170:56 | [...] [Collection element] | testGRDB.swift:170:47:170:56 | [...] | -| testGRDB.swift:170:48:170:48 | password | testGRDB.swift:170:47:170:56 | [...] [Collection element] | -| testGRDB.swift:173:56:173:65 | [...] [Collection element] | testGRDB.swift:173:56:173:65 | [...] | -| testGRDB.swift:173:57:173:57 | password | testGRDB.swift:173:56:173:65 | [...] [Collection element] | -| testGRDB.swift:174:47:174:56 | [...] [Collection element] | testGRDB.swift:174:47:174:56 | [...] | -| testGRDB.swift:174:48:174:48 | password | testGRDB.swift:174:47:174:56 | [...] [Collection element] | -| testGRDB.swift:178:56:178:65 | [...] [Collection element] | testGRDB.swift:178:56:178:65 | [...] | -| testGRDB.swift:178:57:178:57 | password | testGRDB.swift:178:56:178:65 | [...] [Collection element] | -| testGRDB.swift:179:47:179:56 | [...] [Collection element] | testGRDB.swift:179:47:179:56 | [...] | -| testGRDB.swift:179:48:179:48 | password | testGRDB.swift:179:47:179:56 | [...] [Collection element] | -| testGRDB.swift:182:56:182:65 | [...] [Collection element] | testGRDB.swift:182:56:182:65 | [...] | -| testGRDB.swift:182:57:182:57 | password | testGRDB.swift:182:56:182:65 | [...] [Collection element] | -| testGRDB.swift:183:47:183:56 | [...] [Collection element] | testGRDB.swift:183:47:183:56 | [...] | -| testGRDB.swift:183:48:183:48 | password | testGRDB.swift:183:47:183:56 | [...] [Collection element] | -| testGRDB.swift:187:56:187:65 | [...] [Collection element] | testGRDB.swift:187:56:187:65 | [...] | -| testGRDB.swift:187:57:187:57 | password | testGRDB.swift:187:56:187:65 | [...] [Collection element] | -| testGRDB.swift:188:47:188:56 | [...] [Collection element] | testGRDB.swift:188:47:188:56 | [...] | -| testGRDB.swift:188:48:188:48 | password | testGRDB.swift:188:47:188:56 | [...] [Collection element] | -| testGRDB.swift:191:56:191:65 | [...] [Collection element] | testGRDB.swift:191:56:191:65 | [...] | -| testGRDB.swift:191:57:191:57 | password | testGRDB.swift:191:56:191:65 | [...] [Collection element] | -| testGRDB.swift:192:47:192:56 | [...] [Collection element] | testGRDB.swift:192:47:192:56 | [...] | -| testGRDB.swift:192:48:192:48 | password | testGRDB.swift:192:47:192:56 | [...] [Collection element] | -| testGRDB.swift:198:29:198:38 | [...] [Collection element] | testGRDB.swift:198:29:198:38 | [...] | -| testGRDB.swift:198:30:198:30 | password | testGRDB.swift:198:29:198:38 | [...] [Collection element] | -| testGRDB.swift:201:23:201:32 | [...] [Collection element] | testGRDB.swift:201:23:201:32 | [...] | -| testGRDB.swift:201:24:201:24 | password | testGRDB.swift:201:23:201:32 | [...] [Collection element] | -| testGRDB.swift:206:66:206:75 | [...] [Collection element] | testGRDB.swift:206:66:206:75 | [...] | -| testGRDB.swift:206:67:206:67 | password | testGRDB.swift:206:66:206:75 | [...] [Collection element] | -| testGRDB.swift:208:80:208:89 | [...] [Collection element] | testGRDB.swift:208:80:208:89 | [...] | -| testGRDB.swift:208:81:208:81 | password | testGRDB.swift:208:80:208:89 | [...] [Collection element] | -| testGRDB.swift:210:84:210:93 | [...] [Collection element] | testGRDB.swift:210:84:210:93 | [...] | -| testGRDB.swift:210:85:210:85 | password | testGRDB.swift:210:84:210:93 | [...] [Collection element] | -| testGRDB.swift:212:98:212:107 | [...] [Collection element] | testGRDB.swift:212:98:212:107 | [...] | -| testGRDB.swift:212:99:212:99 | password | testGRDB.swift:212:98:212:107 | [...] [Collection element] | -| testRealm2.swift:13:6:13:6 | value | file://:0:0:0:0 | value | -| testRealm2.swift:18:2:18:2 | [post] o [data] | testRealm2.swift:18:2:18:2 | [post] o | -| testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:13:6:13:6 | value | -| testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:18:2:18:2 | [post] o [data] | -| testRealm.swift:27:6:27:6 | value | file://:0:0:0:0 | value | -| testRealm.swift:34:6:34:6 | value | file://:0:0:0:0 | value | -| testRealm.swift:41:2:41:2 | [post] a [data] | testRealm.swift:41:2:41:2 | [post] a | -| testRealm.swift:41:11:41:11 | myPassword | testRealm.swift:27:6:27:6 | value | -| testRealm.swift:41:11:41:11 | myPassword | testRealm.swift:41:2:41:2 | [post] a [data] | -| testRealm.swift:49:2:49:2 | [post] c [data] | testRealm.swift:49:2:49:2 | [post] c | -| testRealm.swift:49:11:49:11 | myPassword | testRealm.swift:27:6:27:6 | value | -| testRealm.swift:49:11:49:11 | myPassword | testRealm.swift:49:2:49:2 | [post] c [data] | -| testRealm.swift:59:2:59:3 | [post] ...! [data] | testRealm.swift:59:2:59:3 | [post] ...! | -| testRealm.swift:59:12:59:12 | myPassword | testRealm.swift:27:6:27:6 | value | -| testRealm.swift:59:12:59:12 | myPassword | testRealm.swift:59:2:59:3 | [post] ...! [data] | -| testRealm.swift:66:2:66:2 | [post] g [data] | testRealm.swift:66:2:66:2 | [post] g | -| testRealm.swift:66:11:66:11 | myPassword | testRealm.swift:27:6:27:6 | value | -| testRealm.swift:66:11:66:11 | myPassword | testRealm.swift:66:2:66:2 | [post] g [data] | -| testRealm.swift:73:2:73:2 | [post] h [password] | testRealm.swift:73:2:73:2 | [post] h | -| testRealm.swift:73:15:73:15 | myPassword | testRealm.swift:34:6:34:6 | value | -| testRealm.swift:73:15:73:15 | myPassword | testRealm.swift:73:2:73:2 | [post] h [password] | +| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:123:17:123:17 | insertQuery | provenance | | +| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:127:21:127:21 | insertQuery | provenance | | +| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:131:17:131:17 | insertQuery | provenance | | +| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:135:20:135:20 | insertQuery | provenance | | +| SQLite.swift:119:70:119:70 | mobilePhoneNumber | SQLite.swift:139:24:139:24 | insertQuery | provenance | | +| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:124:17:124:17 | updateQuery | provenance | | +| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:128:21:128:21 | updateQuery | provenance | | +| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:132:17:132:17 | updateQuery | provenance | | +| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:136:20:136:20 | updateQuery | provenance | | +| SQLite.swift:120:50:120:50 | mobilePhoneNumber | SQLite.swift:140:24:140:24 | updateQuery | provenance | | +| SQLite.swift:147:32:147:32 | [...] [Collection element] | SQLite.swift:147:32:147:32 | [...] | provenance | | +| SQLite.swift:147:32:147:32 | mobilePhoneNumber | SQLite.swift:147:32:147:32 | [...] [Collection element] | provenance | | +| SQLite.swift:148:28:148:28 | [...] [Collection element] | SQLite.swift:148:28:148:28 | [...] | provenance | | +| SQLite.swift:148:28:148:28 | mobilePhoneNumber | SQLite.swift:148:28:148:28 | [...] [Collection element] | provenance | | +| SQLite.swift:149:31:149:31 | [...] [Collection element] | SQLite.swift:149:31:149:31 | [...] | provenance | | +| SQLite.swift:149:31:149:31 | mobilePhoneNumber | SQLite.swift:149:31:149:31 | [...] [Collection element] | provenance | | +| SQLite.swift:152:21:152:21 | [...] [Collection element] | SQLite.swift:152:21:152:21 | [...] | provenance | | +| SQLite.swift:152:21:152:21 | mobilePhoneNumber | SQLite.swift:152:21:152:21 | [...] [Collection element] | provenance | | +| SQLite.swift:153:20:153:20 | [...] [Collection element] | SQLite.swift:153:20:153:20 | [...] | provenance | | +| SQLite.swift:153:20:153:20 | mobilePhoneNumber | SQLite.swift:153:20:153:20 | [...] [Collection element] | provenance | | +| SQLite.swift:154:23:154:23 | [...] [Collection element] | SQLite.swift:154:23:154:23 | [...] | provenance | | +| SQLite.swift:154:23:154:23 | mobilePhoneNumber | SQLite.swift:154:23:154:23 | [...] [Collection element] | provenance | | +| SQLite.swift:158:32:158:54 | [...] [Collection element] | SQLite.swift:158:32:158:54 | [...] | provenance | | +| SQLite.swift:158:33:158:33 | mobilePhoneNumber | SQLite.swift:158:32:158:54 | [...] [Collection element] | provenance | | +| SQLite.swift:159:28:159:50 | [...] [Collection element] | SQLite.swift:159:28:159:50 | [...] | provenance | | +| SQLite.swift:159:29:159:29 | mobilePhoneNumber | SQLite.swift:159:28:159:50 | [...] [Collection element] | provenance | | +| SQLite.swift:160:31:160:53 | [...] [Collection element] | SQLite.swift:160:31:160:53 | [...] | provenance | | +| SQLite.swift:160:32:160:32 | mobilePhoneNumber | SQLite.swift:160:31:160:53 | [...] [Collection element] | provenance | | +| SQLite.swift:163:21:163:43 | [...] [Collection element] | SQLite.swift:163:21:163:43 | [...] | provenance | | +| SQLite.swift:163:22:163:22 | mobilePhoneNumber | SQLite.swift:163:21:163:43 | [...] [Collection element] | provenance | | +| SQLite.swift:164:20:164:42 | [...] [Collection element] | SQLite.swift:164:20:164:42 | [...] | provenance | | +| SQLite.swift:164:21:164:21 | mobilePhoneNumber | SQLite.swift:164:20:164:42 | [...] [Collection element] | provenance | | +| SQLite.swift:165:23:165:45 | [...] [Collection element] | SQLite.swift:165:23:165:45 | [...] | provenance | | +| SQLite.swift:165:24:165:24 | mobilePhoneNumber | SQLite.swift:165:23:165:45 | [...] [Collection element] | provenance | | +| SQLite.swift:169:32:169:70 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:169:32:169:70 | [...] | provenance | | +| SQLite.swift:169:43:169:53 | (...) [Tuple element at index 1] | SQLite.swift:169:32:169:70 | [...] [Collection element, Tuple element at index 1] | provenance | | +| SQLite.swift:169:53:169:53 | mobilePhoneNumber | SQLite.swift:169:43:169:53 | (...) [Tuple element at index 1] | provenance | | +| SQLite.swift:170:28:170:66 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:170:28:170:66 | [...] | provenance | | +| SQLite.swift:170:39:170:49 | (...) [Tuple element at index 1] | SQLite.swift:170:28:170:66 | [...] [Collection element, Tuple element at index 1] | provenance | | +| SQLite.swift:170:49:170:49 | mobilePhoneNumber | SQLite.swift:170:39:170:49 | (...) [Tuple element at index 1] | provenance | | +| SQLite.swift:171:31:171:69 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:171:31:171:69 | [...] | provenance | | +| SQLite.swift:171:42:171:52 | (...) [Tuple element at index 1] | SQLite.swift:171:31:171:69 | [...] [Collection element, Tuple element at index 1] | provenance | | +| SQLite.swift:171:52:171:52 | mobilePhoneNumber | SQLite.swift:171:42:171:52 | (...) [Tuple element at index 1] | provenance | | +| SQLite.swift:174:21:174:59 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:174:21:174:59 | [...] | provenance | | +| SQLite.swift:174:32:174:42 | (...) [Tuple element at index 1] | SQLite.swift:174:21:174:59 | [...] [Collection element, Tuple element at index 1] | provenance | | +| SQLite.swift:174:42:174:42 | mobilePhoneNumber | SQLite.swift:174:32:174:42 | (...) [Tuple element at index 1] | provenance | | +| SQLite.swift:175:20:175:58 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:175:20:175:58 | [...] | provenance | | +| SQLite.swift:175:31:175:41 | (...) [Tuple element at index 1] | SQLite.swift:175:20:175:58 | [...] [Collection element, Tuple element at index 1] | provenance | | +| SQLite.swift:175:41:175:41 | mobilePhoneNumber | SQLite.swift:175:31:175:41 | (...) [Tuple element at index 1] | provenance | | +| SQLite.swift:176:23:176:61 | [...] [Collection element, Tuple element at index 1] | SQLite.swift:176:23:176:61 | [...] | provenance | | +| SQLite.swift:176:34:176:44 | (...) [Tuple element at index 1] | SQLite.swift:176:23:176:61 | [...] [Collection element, Tuple element at index 1] | provenance | | +| SQLite.swift:176:44:176:44 | mobilePhoneNumber | SQLite.swift:176:34:176:44 | (...) [Tuple element at index 1] | provenance | | +| SQLite.swift:186:40:186:54 | ... <-(_:_:) ... | SQLite.swift:186:40:186:54 | [...] [Collection element] | provenance | | +| SQLite.swift:186:40:186:54 | [...] [Collection element] | SQLite.swift:186:40:186:54 | [...] | provenance | | +| SQLite.swift:186:54:186:54 | mobilePhoneNumber | SQLite.swift:186:40:186:54 | ... <-(_:_:) ... | provenance | | +| SQLite.swift:189:26:189:40 | ... <-(_:_:) ... | SQLite.swift:189:26:189:40 | [...] [Collection element] | provenance | | +| SQLite.swift:189:26:189:40 | [...] [Collection element] | SQLite.swift:189:26:189:40 | [...] | provenance | | +| SQLite.swift:189:40:189:40 | mobilePhoneNumber | SQLite.swift:189:26:189:40 | ... <-(_:_:) ... | provenance | | +| SQLite.swift:191:27:191:41 | ... <-(_:_:) ... | SQLite.swift:191:27:191:41 | [...] [Collection element] | provenance | | +| SQLite.swift:191:27:191:41 | [...] [Collection element] | SQLite.swift:191:27:191:41 | [...] | provenance | | +| SQLite.swift:191:41:191:41 | mobilePhoneNumber | SQLite.swift:191:27:191:41 | ... <-(_:_:) ... | provenance | | +| SQLite.swift:193:26:193:89 | ... <-(_:_:) ... | SQLite.swift:193:26:193:89 | [...] [Collection element] | provenance | | +| SQLite.swift:193:26:193:89 | [...] [Collection element] | SQLite.swift:193:26:193:89 | [...] | provenance | | +| SQLite.swift:193:40:193:89 | call to replace(_:with:) | SQLite.swift:193:26:193:89 | ... <-(_:_:) ... | provenance | | +| SQLite.swift:193:72:193:72 | mobilePhoneNumber | SQLite.swift:193:40:193:89 | call to replace(_:with:) | provenance | | +| SQLite.swift:197:16:197:50 | [...] [Collection element, Collection element] | SQLite.swift:199:30:199:30 | badMany | provenance | | +| SQLite.swift:197:16:197:50 | [...] [Collection element, Collection element] | SQLite.swift:201:54:201:54 | badMany | provenance | | +| SQLite.swift:197:17:197:49 | [...] [Collection element] | SQLite.swift:197:16:197:50 | [...] [Collection element, Collection element] | provenance | | +| SQLite.swift:197:18:197:32 | ... <-(_:_:) ... | SQLite.swift:197:17:197:49 | [...] [Collection element] | provenance | | +| SQLite.swift:197:32:197:32 | mobilePhoneNumber | SQLite.swift:197:18:197:32 | ... <-(_:_:) ... | provenance | | +| file://:0:0:0:0 | self | file://:0:0:0:0 | .value | provenance | | +| file://:0:0:0:0 | self | file://:0:0:0:0 | .value2 | provenance | | +| file://:0:0:0:0 | self [value] | file://:0:0:0:0 | .value | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [data] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [data] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [notStoredBankAccountNumber] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [password] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [value] | provenance | | +| sqlite3_c_api.swift:42:69:42:69 | medicalNotes | sqlite3_c_api.swift:46:27:46:27 | insertQuery | provenance | | +| sqlite3_c_api.swift:43:49:43:49 | medicalNotes | sqlite3_c_api.swift:47:27:47:27 | updateQuery | provenance | | +| testCoreData2.swift:23:13:23:13 | value | file://:0:0:0:0 | value | provenance | | +| testCoreData2.swift:37:2:37:2 | [post] obj [myValue] | testCoreData2.swift:37:2:37:2 | [post] obj | provenance | | +| testCoreData2.swift:37:16:37:16 | bankAccountNo | testCoreData2.swift:37:2:37:2 | [post] obj [myValue] | provenance | | +| testCoreData2.swift:39:2:39:2 | [post] obj [myBankAccountNumber] | testCoreData2.swift:39:2:39:2 | [post] obj | provenance | | +| testCoreData2.swift:39:28:39:28 | bankAccountNo | testCoreData2.swift:39:2:39:2 | [post] obj [myBankAccountNumber] | provenance | | +| testCoreData2.swift:41:2:41:2 | [post] obj [myBankAccountNumber2] | testCoreData2.swift:41:2:41:2 | [post] obj | provenance | | +| testCoreData2.swift:41:29:41:29 | bankAccountNo | testCoreData2.swift:41:2:41:2 | [post] obj [myBankAccountNumber2] | provenance | | +| testCoreData2.swift:43:2:43:2 | [post] obj [notStoredBankAccountNumber] | testCoreData2.swift:43:2:43:2 | [post] obj | provenance | | +| testCoreData2.swift:43:35:43:35 | bankAccountNo | testCoreData2.swift:23:13:23:13 | value | provenance | | +| testCoreData2.swift:43:35:43:35 | bankAccountNo | testCoreData2.swift:43:2:43:2 | [post] obj [notStoredBankAccountNumber] | provenance | | +| testCoreData2.swift:46:2:46:10 | [post] ...? [myValue] | testCoreData2.swift:46:2:46:10 | [post] ...? | provenance | | +| testCoreData2.swift:46:22:46:22 | bankAccountNo | testCoreData2.swift:46:2:46:10 | [post] ...? [myValue] | provenance | | +| testCoreData2.swift:48:2:48:10 | [post] ...? [myBankAccountNumber] | testCoreData2.swift:48:2:48:10 | [post] ...? | provenance | | +| testCoreData2.swift:48:34:48:34 | bankAccountNo | testCoreData2.swift:48:2:48:10 | [post] ...? [myBankAccountNumber] | provenance | | +| testCoreData2.swift:50:2:50:10 | [post] ...? [myBankAccountNumber2] | testCoreData2.swift:50:2:50:10 | [post] ...? | provenance | | +| testCoreData2.swift:50:35:50:35 | bankAccountNo | testCoreData2.swift:50:2:50:10 | [post] ...? [myBankAccountNumber2] | provenance | | +| testCoreData2.swift:52:2:52:10 | [post] ...? [notStoredBankAccountNumber] | testCoreData2.swift:52:2:52:10 | [post] ...? | provenance | | +| testCoreData2.swift:52:41:52:41 | bankAccountNo | testCoreData2.swift:23:13:23:13 | value | provenance | | +| testCoreData2.swift:52:41:52:41 | bankAccountNo | testCoreData2.swift:52:2:52:10 | [post] ...? [notStoredBankAccountNumber] | provenance | | +| testCoreData2.swift:57:3:57:3 | [post] obj [myBankAccountNumber] | testCoreData2.swift:57:3:57:3 | [post] obj | provenance | | +| testCoreData2.swift:57:29:57:29 | bankAccountNo | testCoreData2.swift:57:3:57:3 | [post] obj [myBankAccountNumber] | provenance | | +| testCoreData2.swift:60:4:60:4 | [post] obj [myBankAccountNumber] | testCoreData2.swift:60:4:60:4 | [post] obj | provenance | | +| testCoreData2.swift:60:30:60:30 | bankAccountNo | testCoreData2.swift:60:4:60:4 | [post] obj [myBankAccountNumber] | provenance | | +| testCoreData2.swift:62:4:62:4 | [post] obj [myBankAccountNumber] | testCoreData2.swift:62:4:62:4 | [post] obj | provenance | | +| testCoreData2.swift:62:30:62:30 | bankAccountNo | testCoreData2.swift:62:4:62:4 | [post] obj [myBankAccountNumber] | provenance | | +| testCoreData2.swift:65:3:65:3 | [post] obj [myBankAccountNumber] | testCoreData2.swift:65:3:65:3 | [post] obj | provenance | | +| testCoreData2.swift:65:29:65:29 | bankAccountNo | testCoreData2.swift:65:3:65:3 | [post] obj [myBankAccountNumber] | provenance | | +| testCoreData2.swift:70:9:70:9 | self | file://:0:0:0:0 | self | provenance | | +| testCoreData2.swift:70:9:70:9 | self [value] | file://:0:0:0:0 | self [value] | provenance | | +| testCoreData2.swift:70:9:70:9 | value | file://:0:0:0:0 | value | provenance | | +| testCoreData2.swift:71:9:71:9 | self | file://:0:0:0:0 | self | provenance | | +| testCoreData2.swift:79:2:79:2 | [post] dbObj [myValue] | testCoreData2.swift:79:2:79:2 | [post] dbObj | provenance | | +| testCoreData2.swift:79:18:79:28 | .bankAccountNo | testCoreData2.swift:79:2:79:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:80:2:80:2 | [post] dbObj [myValue] | testCoreData2.swift:80:2:80:2 | [post] dbObj | provenance | | +| testCoreData2.swift:80:18:80:28 | ...! | testCoreData2.swift:80:2:80:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:80:18:80:28 | .bankAccountNo2 | testCoreData2.swift:80:18:80:28 | ...! | provenance | | +| testCoreData2.swift:82:2:82:2 | [post] dbObj [myValue] | testCoreData2.swift:82:2:82:2 | [post] dbObj | provenance | | +| testCoreData2.swift:82:18:82:18 | bankAccountNo | testCoreData2.swift:70:9:70:9 | self | provenance | | +| testCoreData2.swift:82:18:82:18 | bankAccountNo | testCoreData2.swift:82:18:82:32 | .value | provenance | | +| testCoreData2.swift:82:18:82:32 | .value | testCoreData2.swift:82:2:82:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:83:2:83:2 | [post] dbObj [myValue] | testCoreData2.swift:83:2:83:2 | [post] dbObj | provenance | | +| testCoreData2.swift:83:18:83:18 | bankAccountNo | testCoreData2.swift:71:9:71:9 | self | provenance | | +| testCoreData2.swift:83:18:83:18 | bankAccountNo | testCoreData2.swift:83:18:83:32 | .value2 | provenance | | +| testCoreData2.swift:83:18:83:32 | ...! | testCoreData2.swift:83:2:83:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:83:18:83:32 | .value2 | testCoreData2.swift:83:18:83:32 | ...! | provenance | | +| testCoreData2.swift:84:2:84:2 | [post] dbObj [myValue] | testCoreData2.swift:84:2:84:2 | [post] dbObj | provenance | | +| testCoreData2.swift:84:18:84:18 | ...! | testCoreData2.swift:70:9:70:9 | self | provenance | | +| testCoreData2.swift:84:18:84:18 | ...! | testCoreData2.swift:84:18:84:33 | .value | provenance | | +| testCoreData2.swift:84:18:84:18 | bankAccountNo2 | testCoreData2.swift:84:18:84:18 | ...! | provenance | | +| testCoreData2.swift:84:18:84:33 | .value | testCoreData2.swift:84:2:84:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:85:2:85:2 | [post] dbObj [myValue] | testCoreData2.swift:85:2:85:2 | [post] dbObj | provenance | | +| testCoreData2.swift:85:18:85:18 | ...! | testCoreData2.swift:71:9:71:9 | self | provenance | | +| testCoreData2.swift:85:18:85:18 | ...! | testCoreData2.swift:85:18:85:33 | .value2 | provenance | | +| testCoreData2.swift:85:18:85:18 | bankAccountNo2 | testCoreData2.swift:85:18:85:18 | ...! | provenance | | +| testCoreData2.swift:85:18:85:33 | ...! | testCoreData2.swift:85:2:85:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:85:18:85:33 | .value2 | testCoreData2.swift:85:18:85:33 | ...! | provenance | | +| testCoreData2.swift:87:2:87:10 | [post] ...? [myValue] | testCoreData2.swift:87:2:87:10 | [post] ...? | provenance | | +| testCoreData2.swift:87:22:87:32 | .bankAccountNo | testCoreData2.swift:87:2:87:10 | [post] ...? [myValue] | provenance | | +| testCoreData2.swift:88:2:88:10 | [post] ...? [myValue] | testCoreData2.swift:88:2:88:10 | [post] ...? | provenance | | +| testCoreData2.swift:88:22:88:22 | bankAccountNo | testCoreData2.swift:70:9:70:9 | self | provenance | | +| testCoreData2.swift:88:22:88:22 | bankAccountNo | testCoreData2.swift:88:22:88:36 | .value | provenance | | +| testCoreData2.swift:88:22:88:36 | .value | testCoreData2.swift:88:2:88:10 | [post] ...? [myValue] | provenance | | +| testCoreData2.swift:89:2:89:10 | [post] ...? [myValue] | testCoreData2.swift:89:2:89:10 | [post] ...? | provenance | | +| testCoreData2.swift:89:22:89:22 | ...! | testCoreData2.swift:71:9:71:9 | self | provenance | | +| testCoreData2.swift:89:22:89:22 | ...! | testCoreData2.swift:89:22:89:37 | .value2 | provenance | | +| testCoreData2.swift:89:22:89:22 | bankAccountNo2 | testCoreData2.swift:89:22:89:22 | ...! | provenance | | +| testCoreData2.swift:89:22:89:37 | ...! | testCoreData2.swift:89:2:89:10 | [post] ...? [myValue] | provenance | | +| testCoreData2.swift:89:22:89:37 | .value2 | testCoreData2.swift:89:22:89:37 | ...! | provenance | | +| testCoreData2.swift:91:10:91:10 | bankAccountNo | testCoreData2.swift:92:10:92:10 | a | provenance | | +| testCoreData2.swift:92:10:92:10 | a | testCoreData2.swift:70:9:70:9 | self | provenance | | +| testCoreData2.swift:92:10:92:10 | a | testCoreData2.swift:92:10:92:12 | .value | provenance | | +| testCoreData2.swift:92:10:92:12 | .value | testCoreData2.swift:93:18:93:18 | b | provenance | | +| testCoreData2.swift:93:2:93:2 | [post] dbObj [myValue] | testCoreData2.swift:93:2:93:2 | [post] dbObj | provenance | | +| testCoreData2.swift:93:18:93:18 | b | testCoreData2.swift:93:2:93:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:95:10:95:10 | bankAccountNo | testCoreData2.swift:97:12:97:12 | c | provenance | | +| testCoreData2.swift:97:2:97:2 | [post] d [value] | testCoreData2.swift:98:18:98:18 | d [value] | provenance | | +| testCoreData2.swift:97:12:97:12 | c | testCoreData2.swift:70:9:70:9 | self | provenance | | +| testCoreData2.swift:97:12:97:12 | c | testCoreData2.swift:97:12:97:14 | .value | provenance | | +| testCoreData2.swift:97:12:97:14 | .value | testCoreData2.swift:70:9:70:9 | value | provenance | | +| testCoreData2.swift:97:12:97:14 | .value | testCoreData2.swift:97:2:97:2 | [post] d [value] | provenance | | +| testCoreData2.swift:98:2:98:2 | [post] dbObj [myValue] | testCoreData2.swift:98:2:98:2 | [post] dbObj | provenance | | +| testCoreData2.swift:98:18:98:18 | d [value] | testCoreData2.swift:70:9:70:9 | self [value] | provenance | | +| testCoreData2.swift:98:18:98:18 | d [value] | testCoreData2.swift:98:18:98:20 | .value | provenance | | +| testCoreData2.swift:98:18:98:20 | .value | testCoreData2.swift:98:2:98:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:101:10:101:10 | bankAccountNo | testCoreData2.swift:103:13:103:13 | e | provenance | | +| testCoreData2.swift:103:13:103:13 | e | testCoreData2.swift:70:9:70:9 | self | provenance | | +| testCoreData2.swift:103:13:103:13 | e | testCoreData2.swift:104:18:104:18 | e | provenance | | +| testCoreData2.swift:104:2:104:2 | [post] dbObj [myValue] | testCoreData2.swift:104:2:104:2 | [post] dbObj | provenance | | +| testCoreData2.swift:104:18:104:18 | e | testCoreData2.swift:70:9:70:9 | self | provenance | | +| testCoreData2.swift:104:18:104:18 | e | testCoreData2.swift:104:18:104:20 | .value | provenance | | +| testCoreData2.swift:104:18:104:18 | e | testCoreData2.swift:105:18:105:18 | e | provenance | | +| testCoreData2.swift:104:18:104:20 | .value | testCoreData2.swift:104:2:104:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:105:2:105:2 | [post] dbObj [myValue] | testCoreData2.swift:105:2:105:2 | [post] dbObj | provenance | | +| testCoreData2.swift:105:18:105:18 | e | testCoreData2.swift:71:9:71:9 | self | provenance | | +| testCoreData2.swift:105:18:105:18 | e | testCoreData2.swift:105:18:105:20 | .value2 | provenance | | +| testCoreData2.swift:105:18:105:20 | ...! | testCoreData2.swift:105:2:105:2 | [post] dbObj [myValue] | provenance | | +| testCoreData2.swift:105:18:105:20 | .value2 | testCoreData2.swift:105:18:105:20 | ...! | provenance | | +| testCoreData.swift:18:19:18:26 | value | testCoreData.swift:19:12:19:12 | value | provenance | | +| testCoreData.swift:31:3:31:3 | newValue | testCoreData.swift:32:13:32:13 | newValue | provenance | | +| testCoreData.swift:61:25:61:25 | password | testCoreData.swift:18:19:18:26 | value | provenance | | +| testCoreData.swift:64:2:64:2 | [post] obj [myValue] | testCoreData.swift:64:2:64:2 | [post] obj | provenance | | +| testCoreData.swift:64:16:64:16 | password | testCoreData.swift:31:3:31:3 | newValue | provenance | | +| testCoreData.swift:64:16:64:16 | password | testCoreData.swift:64:2:64:2 | [post] obj [myValue] | provenance | | +| testCoreData.swift:77:24:77:24 | x | testCoreData.swift:78:15:78:15 | x | provenance | | +| testCoreData.swift:80:10:80:22 | call to getPassword() | testCoreData.swift:81:15:81:15 | y | provenance | | +| testCoreData.swift:91:10:91:10 | passwd | testCoreData.swift:95:15:95:15 | x | provenance | | +| testCoreData.swift:92:10:92:10 | passwd | testCoreData.swift:96:15:96:15 | y | provenance | | +| testCoreData.swift:93:10:93:10 | passwd | testCoreData.swift:97:15:97:15 | z | provenance | | +| testGRDB.swift:73:56:73:65 | [...] [Collection element] | testGRDB.swift:73:56:73:65 | [...] | provenance | | +| testGRDB.swift:73:57:73:57 | password | testGRDB.swift:73:56:73:65 | [...] [Collection element] | provenance | | +| testGRDB.swift:76:42:76:51 | [...] [Collection element] | testGRDB.swift:76:42:76:51 | [...] | provenance | | +| testGRDB.swift:76:43:76:43 | password | testGRDB.swift:76:42:76:51 | [...] [Collection element] | provenance | | +| testGRDB.swift:81:44:81:53 | [...] [Collection element] | testGRDB.swift:81:44:81:53 | [...] | provenance | | +| testGRDB.swift:81:45:81:45 | password | testGRDB.swift:81:44:81:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:83:44:83:53 | [...] [Collection element] | testGRDB.swift:83:44:83:53 | [...] | provenance | | +| testGRDB.swift:83:45:83:45 | password | testGRDB.swift:83:44:83:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:85:44:85:53 | [...] [Collection element] | testGRDB.swift:85:44:85:53 | [...] | provenance | | +| testGRDB.swift:85:45:85:45 | password | testGRDB.swift:85:44:85:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:87:44:87:53 | [...] [Collection element] | testGRDB.swift:87:44:87:53 | [...] | provenance | | +| testGRDB.swift:87:45:87:45 | password | testGRDB.swift:87:44:87:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:92:37:92:46 | [...] [Collection element] | testGRDB.swift:92:37:92:46 | [...] | provenance | | +| testGRDB.swift:92:38:92:38 | password | testGRDB.swift:92:37:92:46 | [...] [Collection element] | provenance | | +| testGRDB.swift:95:36:95:45 | [...] [Collection element] | testGRDB.swift:95:36:95:45 | [...] | provenance | | +| testGRDB.swift:95:37:95:37 | password | testGRDB.swift:95:36:95:45 | [...] [Collection element] | provenance | | +| testGRDB.swift:100:72:100:81 | [...] [Collection element] | testGRDB.swift:100:72:100:81 | [...] | provenance | | +| testGRDB.swift:100:73:100:73 | password | testGRDB.swift:100:72:100:81 | [...] [Collection element] | provenance | | +| testGRDB.swift:101:72:101:81 | [...] [Collection element] | testGRDB.swift:101:72:101:81 | [...] | provenance | | +| testGRDB.swift:101:73:101:73 | password | testGRDB.swift:101:72:101:81 | [...] [Collection element] | provenance | | +| testGRDB.swift:107:52:107:61 | [...] [Collection element] | testGRDB.swift:107:52:107:61 | [...] | provenance | | +| testGRDB.swift:107:53:107:53 | password | testGRDB.swift:107:52:107:61 | [...] [Collection element] | provenance | | +| testGRDB.swift:109:52:109:61 | [...] [Collection element] | testGRDB.swift:109:52:109:61 | [...] | provenance | | +| testGRDB.swift:109:53:109:53 | password | testGRDB.swift:109:52:109:61 | [...] [Collection element] | provenance | | +| testGRDB.swift:111:51:111:60 | [...] [Collection element] | testGRDB.swift:111:51:111:60 | [...] | provenance | | +| testGRDB.swift:111:52:111:52 | password | testGRDB.swift:111:51:111:60 | [...] [Collection element] | provenance | | +| testGRDB.swift:116:47:116:56 | [...] [Collection element] | testGRDB.swift:116:47:116:56 | [...] | provenance | | +| testGRDB.swift:116:48:116:48 | password | testGRDB.swift:116:47:116:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:118:47:118:56 | [...] [Collection element] | testGRDB.swift:118:47:118:56 | [...] | provenance | | +| testGRDB.swift:118:48:118:48 | password | testGRDB.swift:118:47:118:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:121:44:121:53 | [...] [Collection element] | testGRDB.swift:121:44:121:53 | [...] | provenance | | +| testGRDB.swift:121:45:121:45 | password | testGRDB.swift:121:44:121:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:123:44:123:53 | [...] [Collection element] | testGRDB.swift:123:44:123:53 | [...] | provenance | | +| testGRDB.swift:123:45:123:45 | password | testGRDB.swift:123:44:123:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:126:44:126:53 | [...] [Collection element] | testGRDB.swift:126:44:126:53 | [...] | provenance | | +| testGRDB.swift:126:45:126:45 | password | testGRDB.swift:126:44:126:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:128:44:128:53 | [...] [Collection element] | testGRDB.swift:128:44:128:53 | [...] | provenance | | +| testGRDB.swift:128:45:128:45 | password | testGRDB.swift:128:44:128:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:131:44:131:53 | [...] [Collection element] | testGRDB.swift:131:44:131:53 | [...] | provenance | | +| testGRDB.swift:131:45:131:45 | password | testGRDB.swift:131:44:131:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:133:44:133:53 | [...] [Collection element] | testGRDB.swift:133:44:133:53 | [...] | provenance | | +| testGRDB.swift:133:45:133:45 | password | testGRDB.swift:133:44:133:53 | [...] [Collection element] | provenance | | +| testGRDB.swift:138:68:138:77 | [...] [Collection element] | testGRDB.swift:138:68:138:77 | [...] | provenance | | +| testGRDB.swift:138:69:138:69 | password | testGRDB.swift:138:68:138:77 | [...] [Collection element] | provenance | | +| testGRDB.swift:140:68:140:77 | [...] [Collection element] | testGRDB.swift:140:68:140:77 | [...] | provenance | | +| testGRDB.swift:140:69:140:69 | password | testGRDB.swift:140:68:140:77 | [...] [Collection element] | provenance | | +| testGRDB.swift:143:65:143:74 | [...] [Collection element] | testGRDB.swift:143:65:143:74 | [...] | provenance | | +| testGRDB.swift:143:66:143:66 | password | testGRDB.swift:143:65:143:74 | [...] [Collection element] | provenance | | +| testGRDB.swift:145:65:145:74 | [...] [Collection element] | testGRDB.swift:145:65:145:74 | [...] | provenance | | +| testGRDB.swift:145:66:145:66 | password | testGRDB.swift:145:65:145:74 | [...] [Collection element] | provenance | | +| testGRDB.swift:148:65:148:74 | [...] [Collection element] | testGRDB.swift:148:65:148:74 | [...] | provenance | | +| testGRDB.swift:148:66:148:66 | password | testGRDB.swift:148:65:148:74 | [...] [Collection element] | provenance | | +| testGRDB.swift:150:65:150:74 | [...] [Collection element] | testGRDB.swift:150:65:150:74 | [...] | provenance | | +| testGRDB.swift:150:66:150:66 | password | testGRDB.swift:150:65:150:74 | [...] [Collection element] | provenance | | +| testGRDB.swift:153:65:153:74 | [...] [Collection element] | testGRDB.swift:153:65:153:74 | [...] | provenance | | +| testGRDB.swift:153:66:153:66 | password | testGRDB.swift:153:65:153:74 | [...] [Collection element] | provenance | | +| testGRDB.swift:155:65:155:74 | [...] [Collection element] | testGRDB.swift:155:65:155:74 | [...] | provenance | | +| testGRDB.swift:155:66:155:66 | password | testGRDB.swift:155:65:155:74 | [...] [Collection element] | provenance | | +| testGRDB.swift:160:59:160:68 | [...] [Collection element] | testGRDB.swift:160:59:160:68 | [...] | provenance | | +| testGRDB.swift:160:60:160:60 | password | testGRDB.swift:160:59:160:68 | [...] [Collection element] | provenance | | +| testGRDB.swift:161:50:161:59 | [...] [Collection element] | testGRDB.swift:161:50:161:59 | [...] | provenance | | +| testGRDB.swift:161:51:161:51 | password | testGRDB.swift:161:50:161:59 | [...] [Collection element] | provenance | | +| testGRDB.swift:164:59:164:68 | [...] [Collection element] | testGRDB.swift:164:59:164:68 | [...] | provenance | | +| testGRDB.swift:164:60:164:60 | password | testGRDB.swift:164:59:164:68 | [...] [Collection element] | provenance | | +| testGRDB.swift:165:50:165:59 | [...] [Collection element] | testGRDB.swift:165:50:165:59 | [...] | provenance | | +| testGRDB.swift:165:51:165:51 | password | testGRDB.swift:165:50:165:59 | [...] [Collection element] | provenance | | +| testGRDB.swift:169:56:169:65 | [...] [Collection element] | testGRDB.swift:169:56:169:65 | [...] | provenance | | +| testGRDB.swift:169:57:169:57 | password | testGRDB.swift:169:56:169:65 | [...] [Collection element] | provenance | | +| testGRDB.swift:170:47:170:56 | [...] [Collection element] | testGRDB.swift:170:47:170:56 | [...] | provenance | | +| testGRDB.swift:170:48:170:48 | password | testGRDB.swift:170:47:170:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:173:56:173:65 | [...] [Collection element] | testGRDB.swift:173:56:173:65 | [...] | provenance | | +| testGRDB.swift:173:57:173:57 | password | testGRDB.swift:173:56:173:65 | [...] [Collection element] | provenance | | +| testGRDB.swift:174:47:174:56 | [...] [Collection element] | testGRDB.swift:174:47:174:56 | [...] | provenance | | +| testGRDB.swift:174:48:174:48 | password | testGRDB.swift:174:47:174:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:178:56:178:65 | [...] [Collection element] | testGRDB.swift:178:56:178:65 | [...] | provenance | | +| testGRDB.swift:178:57:178:57 | password | testGRDB.swift:178:56:178:65 | [...] [Collection element] | provenance | | +| testGRDB.swift:179:47:179:56 | [...] [Collection element] | testGRDB.swift:179:47:179:56 | [...] | provenance | | +| testGRDB.swift:179:48:179:48 | password | testGRDB.swift:179:47:179:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:182:56:182:65 | [...] [Collection element] | testGRDB.swift:182:56:182:65 | [...] | provenance | | +| testGRDB.swift:182:57:182:57 | password | testGRDB.swift:182:56:182:65 | [...] [Collection element] | provenance | | +| testGRDB.swift:183:47:183:56 | [...] [Collection element] | testGRDB.swift:183:47:183:56 | [...] | provenance | | +| testGRDB.swift:183:48:183:48 | password | testGRDB.swift:183:47:183:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:187:56:187:65 | [...] [Collection element] | testGRDB.swift:187:56:187:65 | [...] | provenance | | +| testGRDB.swift:187:57:187:57 | password | testGRDB.swift:187:56:187:65 | [...] [Collection element] | provenance | | +| testGRDB.swift:188:47:188:56 | [...] [Collection element] | testGRDB.swift:188:47:188:56 | [...] | provenance | | +| testGRDB.swift:188:48:188:48 | password | testGRDB.swift:188:47:188:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:191:56:191:65 | [...] [Collection element] | testGRDB.swift:191:56:191:65 | [...] | provenance | | +| testGRDB.swift:191:57:191:57 | password | testGRDB.swift:191:56:191:65 | [...] [Collection element] | provenance | | +| testGRDB.swift:192:47:192:56 | [...] [Collection element] | testGRDB.swift:192:47:192:56 | [...] | provenance | | +| testGRDB.swift:192:48:192:48 | password | testGRDB.swift:192:47:192:56 | [...] [Collection element] | provenance | | +| testGRDB.swift:198:29:198:38 | [...] [Collection element] | testGRDB.swift:198:29:198:38 | [...] | provenance | | +| testGRDB.swift:198:30:198:30 | password | testGRDB.swift:198:29:198:38 | [...] [Collection element] | provenance | | +| testGRDB.swift:201:23:201:32 | [...] [Collection element] | testGRDB.swift:201:23:201:32 | [...] | provenance | | +| testGRDB.swift:201:24:201:24 | password | testGRDB.swift:201:23:201:32 | [...] [Collection element] | provenance | | +| testGRDB.swift:206:66:206:75 | [...] [Collection element] | testGRDB.swift:206:66:206:75 | [...] | provenance | | +| testGRDB.swift:206:67:206:67 | password | testGRDB.swift:206:66:206:75 | [...] [Collection element] | provenance | | +| testGRDB.swift:208:80:208:89 | [...] [Collection element] | testGRDB.swift:208:80:208:89 | [...] | provenance | | +| testGRDB.swift:208:81:208:81 | password | testGRDB.swift:208:80:208:89 | [...] [Collection element] | provenance | | +| testGRDB.swift:210:84:210:93 | [...] [Collection element] | testGRDB.swift:210:84:210:93 | [...] | provenance | | +| testGRDB.swift:210:85:210:85 | password | testGRDB.swift:210:84:210:93 | [...] [Collection element] | provenance | | +| testGRDB.swift:212:98:212:107 | [...] [Collection element] | testGRDB.swift:212:98:212:107 | [...] | provenance | | +| testGRDB.swift:212:99:212:99 | password | testGRDB.swift:212:98:212:107 | [...] [Collection element] | provenance | | +| testRealm2.swift:13:6:13:6 | value | file://:0:0:0:0 | value | provenance | | +| testRealm2.swift:18:2:18:2 | [post] o [data] | testRealm2.swift:18:2:18:2 | [post] o | provenance | | +| testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:13:6:13:6 | value | provenance | | +| testRealm2.swift:18:11:18:11 | myPassword | testRealm2.swift:18:2:18:2 | [post] o [data] | provenance | | +| testRealm.swift:27:6:27:6 | value | file://:0:0:0:0 | value | provenance | | +| testRealm.swift:34:6:34:6 | value | file://:0:0:0:0 | value | provenance | | +| testRealm.swift:41:2:41:2 | [post] a [data] | testRealm.swift:41:2:41:2 | [post] a | provenance | | +| testRealm.swift:41:11:41:11 | myPassword | testRealm.swift:27:6:27:6 | value | provenance | | +| testRealm.swift:41:11:41:11 | myPassword | testRealm.swift:41:2:41:2 | [post] a [data] | provenance | | +| testRealm.swift:49:2:49:2 | [post] c [data] | testRealm.swift:49:2:49:2 | [post] c | provenance | | +| testRealm.swift:49:11:49:11 | myPassword | testRealm.swift:27:6:27:6 | value | provenance | | +| testRealm.swift:49:11:49:11 | myPassword | testRealm.swift:49:2:49:2 | [post] c [data] | provenance | | +| testRealm.swift:59:2:59:3 | [post] ...! [data] | testRealm.swift:59:2:59:3 | [post] ...! | provenance | | +| testRealm.swift:59:12:59:12 | myPassword | testRealm.swift:27:6:27:6 | value | provenance | | +| testRealm.swift:59:12:59:12 | myPassword | testRealm.swift:59:2:59:3 | [post] ...! [data] | provenance | | +| testRealm.swift:66:2:66:2 | [post] g [data] | testRealm.swift:66:2:66:2 | [post] g | provenance | | +| testRealm.swift:66:11:66:11 | myPassword | testRealm.swift:27:6:27:6 | value | provenance | | +| testRealm.swift:66:11:66:11 | myPassword | testRealm.swift:66:2:66:2 | [post] g [data] | provenance | | +| testRealm.swift:73:2:73:2 | [post] h [password] | testRealm.swift:73:2:73:2 | [post] h | provenance | | +| testRealm.swift:73:15:73:15 | myPassword | testRealm.swift:34:6:34:6 | value | provenance | | +| testRealm.swift:73:15:73:15 | myPassword | testRealm.swift:73:2:73:2 | [post] h [password] | provenance | | nodes | SQLite.swift:119:70:119:70 | mobilePhoneNumber | semmle.label | mobilePhoneNumber | | SQLite.swift:120:50:120:50 | mobilePhoneNumber | semmle.label | mobilePhoneNumber | diff --git a/swift/ql/test/query-tests/Security/CWE-311/CleartextTransmission.expected b/swift/ql/test/query-tests/Security/CWE-311/CleartextTransmission.expected index d5139193e2ce..0b3d8336874d 100644 --- a/swift/ql/test/query-tests/Security/CWE-311/CleartextTransmission.expected +++ b/swift/ql/test/query-tests/Security/CWE-311/CleartextTransmission.expected @@ -1,37 +1,37 @@ edges -| file://:0:0:0:0 | self | file://:0:0:0:0 | .value | -| testAlamofire.swift:150:45:150:45 | password | testAlamofire.swift:150:13:150:45 | ... .+(_:_:) ... | -| testAlamofire.swift:152:51:152:51 | password | testAlamofire.swift:152:19:152:51 | ... .+(_:_:) ... | -| testAlamofire.swift:154:38:154:38 | email | testAlamofire.swift:154:14:154:46 | ... .+(_:_:) ... | -| testSend.swift:33:14:33:32 | call to Data.init(_:) | testSend.swift:37:19:37:19 | data2 | -| testSend.swift:33:19:33:19 | passwordPlain | testSend.swift:33:14:33:32 | call to Data.init(_:) | -| testSend.swift:41:10:41:18 | data | testSend.swift:41:45:41:45 | data | -| testSend.swift:58:13:58:13 | password | testSend.swift:65:27:65:27 | str1 | -| testSend.swift:59:13:59:13 | password | testSend.swift:66:27:66:27 | str2 | -| testSend.swift:60:13:60:25 | call to pad(_:) | testSend.swift:67:27:67:27 | str3 | -| testSend.swift:60:17:60:17 | password | testSend.swift:41:10:41:18 | data | -| testSend.swift:60:17:60:17 | password | testSend.swift:60:13:60:25 | call to pad(_:) | -| testSend.swift:86:7:86:7 | self | file://:0:0:0:0 | self | -| testSend.swift:94:27:94:30 | .password | testSend.swift:86:7:86:7 | self | -| testSend.swift:94:27:94:30 | .password | testSend.swift:94:27:94:39 | .value | -| testURL.swift:39:50:39:50 | passwd | testURL.swift:39:18:39:50 | ... .+(_:_:) ... | -| testURL.swift:41:51:41:51 | account_no | testURL.swift:41:18:41:51 | ... .+(_:_:) ... | -| testURL.swift:42:51:42:51 | credit_card_no | testURL.swift:42:18:42:51 | ... .+(_:_:) ... | -| testURL.swift:50:51:50:51 | e_mail | testURL.swift:50:18:50:51 | ... .+(_:_:) ... | -| testURL.swift:52:53:52:53 | a_homeaddr_z | testURL.swift:52:18:52:53 | ... .+(_:_:) ... | -| testURL.swift:54:51:54:51 | resident_ID | testURL.swift:54:18:54:51 | ... .+(_:_:) ... | -| testURL.swift:73:52:73:67 | call to get_secret_key() | testURL.swift:73:18:73:67 | ... .+(_:_:) ... | -| testURL.swift:75:53:75:69 | call to get_cert_string() | testURL.swift:75:18:75:69 | ... .+(_:_:) ... | -| testURL.swift:96:51:96:51 | certificate | testURL.swift:96:18:96:18 | "..." | -| testURL.swift:104:16:104:57 | call to SecKeyCopyExternalRepresentation(_:_:) | testURL.swift:105:19:105:53 | call to String.init(data:encoding:) | -| testURL.swift:104:16:104:57 | call to SecKeyCopyExternalRepresentation(_:_:) | testURL.swift:105:32:105:32 | data | -| testURL.swift:104:16:104:57 | call to SecKeyCopyExternalRepresentation(_:_:) | testURL.swift:106:20:106:20 | "..." | -| testURL.swift:105:6:105:10 | let ...? [some:0] | testURL.swift:105:10:105:10 | string | -| testURL.swift:105:10:105:10 | string | testURL.swift:106:20:106:20 | "..." | -| testURL.swift:105:19:105:53 | call to String.init(data:encoding:) | testURL.swift:105:19:105:53 | call to String.init(data:encoding:) [some:0] | -| testURL.swift:105:19:105:53 | call to String.init(data:encoding:) | testURL.swift:106:20:106:20 | "..." | -| testURL.swift:105:19:105:53 | call to String.init(data:encoding:) [some:0] | testURL.swift:105:6:105:10 | let ...? [some:0] | -| testURL.swift:105:32:105:32 | data | testURL.swift:105:19:105:53 | call to String.init(data:encoding:) [some:0] | +| file://:0:0:0:0 | self | file://:0:0:0:0 | .value | provenance | | +| testAlamofire.swift:150:45:150:45 | password | testAlamofire.swift:150:13:150:45 | ... .+(_:_:) ... | provenance | | +| testAlamofire.swift:152:51:152:51 | password | testAlamofire.swift:152:19:152:51 | ... .+(_:_:) ... | provenance | | +| testAlamofire.swift:154:38:154:38 | email | testAlamofire.swift:154:14:154:46 | ... .+(_:_:) ... | provenance | | +| testSend.swift:33:14:33:32 | call to Data.init(_:) | testSend.swift:37:19:37:19 | data2 | provenance | | +| testSend.swift:33:19:33:19 | passwordPlain | testSend.swift:33:14:33:32 | call to Data.init(_:) | provenance | | +| testSend.swift:41:10:41:18 | data | testSend.swift:41:45:41:45 | data | provenance | | +| testSend.swift:58:13:58:13 | password | testSend.swift:65:27:65:27 | str1 | provenance | | +| testSend.swift:59:13:59:13 | password | testSend.swift:66:27:66:27 | str2 | provenance | | +| testSend.swift:60:13:60:25 | call to pad(_:) | testSend.swift:67:27:67:27 | str3 | provenance | | +| testSend.swift:60:17:60:17 | password | testSend.swift:41:10:41:18 | data | provenance | | +| testSend.swift:60:17:60:17 | password | testSend.swift:60:13:60:25 | call to pad(_:) | provenance | | +| testSend.swift:86:7:86:7 | self | file://:0:0:0:0 | self | provenance | | +| testSend.swift:94:27:94:30 | .password | testSend.swift:86:7:86:7 | self | provenance | | +| testSend.swift:94:27:94:30 | .password | testSend.swift:94:27:94:39 | .value | provenance | | +| testURL.swift:39:50:39:50 | passwd | testURL.swift:39:18:39:50 | ... .+(_:_:) ... | provenance | | +| testURL.swift:41:51:41:51 | account_no | testURL.swift:41:18:41:51 | ... .+(_:_:) ... | provenance | | +| testURL.swift:42:51:42:51 | credit_card_no | testURL.swift:42:18:42:51 | ... .+(_:_:) ... | provenance | | +| testURL.swift:50:51:50:51 | e_mail | testURL.swift:50:18:50:51 | ... .+(_:_:) ... | provenance | | +| testURL.swift:52:53:52:53 | a_homeaddr_z | testURL.swift:52:18:52:53 | ... .+(_:_:) ... | provenance | | +| testURL.swift:54:51:54:51 | resident_ID | testURL.swift:54:18:54:51 | ... .+(_:_:) ... | provenance | | +| testURL.swift:73:52:73:67 | call to get_secret_key() | testURL.swift:73:18:73:67 | ... .+(_:_:) ... | provenance | | +| testURL.swift:75:53:75:69 | call to get_cert_string() | testURL.swift:75:18:75:69 | ... .+(_:_:) ... | provenance | | +| testURL.swift:96:51:96:51 | certificate | testURL.swift:96:18:96:18 | "..." | provenance | | +| testURL.swift:104:16:104:57 | call to SecKeyCopyExternalRepresentation(_:_:) | testURL.swift:105:19:105:53 | call to String.init(data:encoding:) | provenance | | +| testURL.swift:104:16:104:57 | call to SecKeyCopyExternalRepresentation(_:_:) | testURL.swift:105:32:105:32 | data | provenance | | +| testURL.swift:104:16:104:57 | call to SecKeyCopyExternalRepresentation(_:_:) | testURL.swift:106:20:106:20 | "..." | provenance | | +| testURL.swift:105:6:105:10 | let ...? [some:0] | testURL.swift:105:10:105:10 | string | provenance | | +| testURL.swift:105:10:105:10 | string | testURL.swift:106:20:106:20 | "..." | provenance | | +| testURL.swift:105:19:105:53 | call to String.init(data:encoding:) | testURL.swift:105:19:105:53 | call to String.init(data:encoding:) [some:0] | provenance | | +| testURL.swift:105:19:105:53 | call to String.init(data:encoding:) | testURL.swift:106:20:106:20 | "..." | provenance | | +| testURL.swift:105:19:105:53 | call to String.init(data:encoding:) [some:0] | testURL.swift:105:6:105:10 | let ...? [some:0] | provenance | | +| testURL.swift:105:32:105:32 | data | testURL.swift:105:19:105:53 | call to String.init(data:encoding:) [some:0] | provenance | | nodes | file://:0:0:0:0 | .value | semmle.label | .value | | file://:0:0:0:0 | self | semmle.label | self | diff --git a/swift/ql/test/query-tests/Security/CWE-312/CleartextStoragePreferences.expected b/swift/ql/test/query-tests/Security/CWE-312/CleartextStoragePreferences.expected index 69865237e183..4c78d468cf0a 100644 --- a/swift/ql/test/query-tests/Security/CWE-312/CleartextStoragePreferences.expected +++ b/swift/ql/test/query-tests/Security/CWE-312/CleartextStoragePreferences.expected @@ -1,18 +1,18 @@ edges -| file://:0:0:0:0 | self | file://:0:0:0:0 | .value | -| testNSUbiquitousKeyValueStore.swift:41:24:41:24 | x | testNSUbiquitousKeyValueStore.swift:42:40:42:40 | x | -| testNSUbiquitousKeyValueStore.swift:44:10:44:22 | call to getPassword() | testNSUbiquitousKeyValueStore.swift:45:40:45:40 | y | -| testNSUbiquitousKeyValueStore.swift:55:10:55:10 | passwd | testNSUbiquitousKeyValueStore.swift:59:40:59:40 | x | -| testNSUbiquitousKeyValueStore.swift:56:10:56:10 | passwd | testNSUbiquitousKeyValueStore.swift:60:40:60:40 | y | -| testNSUbiquitousKeyValueStore.swift:57:10:57:10 | passwd | testNSUbiquitousKeyValueStore.swift:61:40:61:40 | z | -| testUserDefaults.swift:41:24:41:24 | x | testUserDefaults.swift:42:28:42:28 | x | -| testUserDefaults.swift:44:10:44:22 | call to getPassword() | testUserDefaults.swift:45:28:45:28 | y | -| testUserDefaults.swift:55:10:55:10 | passwd | testUserDefaults.swift:59:28:59:28 | x | -| testUserDefaults.swift:56:10:56:10 | passwd | testUserDefaults.swift:60:28:60:28 | y | -| testUserDefaults.swift:57:10:57:10 | passwd | testUserDefaults.swift:61:28:61:28 | z | -| testUserDefaults.swift:74:7:74:7 | self | file://:0:0:0:0 | self | -| testUserDefaults.swift:82:28:82:31 | .password | testUserDefaults.swift:74:7:74:7 | self | -| testUserDefaults.swift:82:28:82:31 | .password | testUserDefaults.swift:82:28:82:40 | .value | +| file://:0:0:0:0 | self | file://:0:0:0:0 | .value | provenance | | +| testNSUbiquitousKeyValueStore.swift:41:24:41:24 | x | testNSUbiquitousKeyValueStore.swift:42:40:42:40 | x | provenance | | +| testNSUbiquitousKeyValueStore.swift:44:10:44:22 | call to getPassword() | testNSUbiquitousKeyValueStore.swift:45:40:45:40 | y | provenance | | +| testNSUbiquitousKeyValueStore.swift:55:10:55:10 | passwd | testNSUbiquitousKeyValueStore.swift:59:40:59:40 | x | provenance | | +| testNSUbiquitousKeyValueStore.swift:56:10:56:10 | passwd | testNSUbiquitousKeyValueStore.swift:60:40:60:40 | y | provenance | | +| testNSUbiquitousKeyValueStore.swift:57:10:57:10 | passwd | testNSUbiquitousKeyValueStore.swift:61:40:61:40 | z | provenance | | +| testUserDefaults.swift:41:24:41:24 | x | testUserDefaults.swift:42:28:42:28 | x | provenance | | +| testUserDefaults.swift:44:10:44:22 | call to getPassword() | testUserDefaults.swift:45:28:45:28 | y | provenance | | +| testUserDefaults.swift:55:10:55:10 | passwd | testUserDefaults.swift:59:28:59:28 | x | provenance | | +| testUserDefaults.swift:56:10:56:10 | passwd | testUserDefaults.swift:60:28:60:28 | y | provenance | | +| testUserDefaults.swift:57:10:57:10 | passwd | testUserDefaults.swift:61:28:61:28 | z | provenance | | +| testUserDefaults.swift:74:7:74:7 | self | file://:0:0:0:0 | self | provenance | | +| testUserDefaults.swift:82:28:82:31 | .password | testUserDefaults.swift:74:7:74:7 | self | provenance | | +| testUserDefaults.swift:82:28:82:31 | .password | testUserDefaults.swift:82:28:82:40 | .value | provenance | | nodes | file://:0:0:0:0 | .value | semmle.label | .value | | file://:0:0:0:0 | self | semmle.label | self | diff --git a/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected b/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected index a2cd88cd3f88..733a7c42c9ed 100644 --- a/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected +++ b/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected @@ -1,74 +1,74 @@ edges -| SQLite.swift:54:25:54:33 | [...] | SQLite.swift:54:13:54:34 | call to Blob.init(bytes:) | -| cryptoswift.swift:76:3:76:3 | this string is constant | cryptoswift.swift:80:10:80:28 | call to getConstantString() | -| cryptoswift.swift:76:3:76:3 | this string is constant | cryptoswift.swift:92:18:92:36 | call to getConstantString() | -| cryptoswift.swift:80:2:80:34 | call to Array.init(_:) [Collection element] | cryptoswift.swift:91:13:91:30 | call to getConstantArray() [Collection element] | -| cryptoswift.swift:80:10:80:28 | call to getConstantString() | cryptoswift.swift:80:10:80:30 | .utf8 | -| cryptoswift.swift:80:10:80:30 | .utf8 | cryptoswift.swift:80:2:80:34 | call to Array.init(_:) [Collection element] | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:117:22:117:22 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:118:22:118:22 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:128:26:128:26 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:135:25:135:25 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:140:25:140:25 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:145:26:145:26 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:150:26:150:26 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:151:26:151:26 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:161:24:161:24 | key | -| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:163:24:163:24 | key | -| cryptoswift.swift:91:13:91:30 | call to getConstantArray() [Collection element] | cryptoswift.swift:106:21:106:21 | key2 | -| cryptoswift.swift:91:13:91:30 | call to getConstantArray() [Collection element] | cryptoswift.swift:107:21:107:21 | key2 | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:108:21:108:21 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:109:21:109:21 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:119:22:119:22 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:120:22:120:22 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:129:26:129:26 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:152:26:152:26 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:153:26:153:26 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:162:24:162:24 | keyString | -| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:164:24:164:24 | keyString | -| file://:0:0:0:0 | [post] self [encryptionKey] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [encryptionKey] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [encryptionKey] | -| grdb.swift:21:20:21:20 | abc123 | grdb.swift:27:23:27:23 | constString | -| grdb.swift:21:20:21:20 | abc123 | grdb.swift:31:26:31:26 | constString | -| grdb.swift:22:33:22:50 | [...] | grdb.swift:23:23:23:23 | constArray | -| grdb.swift:23:18:23:33 | call to Data.init(_:) | grdb.swift:29:23:29:23 | constData | -| grdb.swift:23:18:23:33 | call to Data.init(_:) | grdb.swift:33:26:33:26 | constData | -| grdb.swift:23:23:23:23 | constArray | grdb.swift:23:18:23:33 | call to Data.init(_:) | -| misc.swift:30:7:30:7 | value | file://:0:0:0:0 | value | -| misc.swift:46:19:46:38 | call to Data.init(_:) | misc.swift:49:41:49:41 | myConstKey | -| misc.swift:46:19:46:38 | call to Data.init(_:) | misc.swift:53:25:53:25 | myConstKey | -| misc.swift:46:19:46:38 | call to Data.init(_:) | misc.swift:57:41:57:41 | myConstKey | -| misc.swift:46:24:46:24 | abcdef123456 | misc.swift:46:19:46:38 | call to Data.init(_:) | -| misc.swift:53:2:53:2 | [post] config [encryptionKey] | misc.swift:53:2:53:2 | [post] config | -| misc.swift:53:25:53:25 | myConstKey | misc.swift:30:7:30:7 | value | -| misc.swift:53:25:53:25 | myConstKey | misc.swift:53:2:53:2 | [post] config | -| misc.swift:53:25:53:25 | myConstKey | misc.swift:53:2:53:2 | [post] config [encryptionKey] | -| misc.swift:57:2:57:18 | [post] getter for .config [encryptionKey] | misc.swift:57:2:57:18 | [post] getter for .config | -| misc.swift:57:41:57:41 | myConstKey | misc.swift:30:7:30:7 | value | -| misc.swift:57:41:57:41 | myConstKey | misc.swift:57:2:57:18 | [post] getter for .config | -| misc.swift:57:41:57:41 | myConstKey | misc.swift:57:2:57:18 | [post] getter for .config [encryptionKey] | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:65:73:65:73 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:66:73:66:73 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:67:73:67:73 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:68:73:68:73 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:70:94:70:94 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:71:102:71:102 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:72:94:72:94 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:73:102:73:102 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:75:37:75:37 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:76:37:76:37 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:78:66:78:66 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:79:66:79:66 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:80:94:80:94 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:81:102:81:102 | myConstKey | -| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:83:92:83:92 | myConstKey | -| rncryptor.swift:60:24:60:24 | abcdef123456 | rncryptor.swift:60:19:60:38 | call to Data.init(_:) | -| sqlite3_c_api.swift:41:19:41:38 | call to Data.init(_:) | sqlite3_c_api.swift:48:2:48:2 | myConstKey | -| sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | sqlite3_c_api.swift:41:19:41:38 | call to Data.init(_:) | -| sqlite3_c_api.swift:48:2:48:2 | myConstKey | sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | -| sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | sqlite3_c_api.swift:49:36:49:36 | buffer | -| sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | sqlite3_c_api.swift:50:38:50:38 | buffer | +| SQLite.swift:54:25:54:33 | [...] | SQLite.swift:54:13:54:34 | call to Blob.init(bytes:) | provenance | | +| cryptoswift.swift:76:3:76:3 | this string is constant | cryptoswift.swift:80:10:80:28 | call to getConstantString() | provenance | | +| cryptoswift.swift:76:3:76:3 | this string is constant | cryptoswift.swift:92:18:92:36 | call to getConstantString() | provenance | | +| cryptoswift.swift:80:2:80:34 | call to Array.init(_:) [Collection element] | cryptoswift.swift:91:13:91:30 | call to getConstantArray() [Collection element] | provenance | | +| cryptoswift.swift:80:10:80:28 | call to getConstantString() | cryptoswift.swift:80:10:80:30 | .utf8 | provenance | | +| cryptoswift.swift:80:10:80:30 | .utf8 | cryptoswift.swift:80:2:80:34 | call to Array.init(_:) [Collection element] | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:117:22:117:22 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:118:22:118:22 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:128:26:128:26 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:135:25:135:25 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:140:25:140:25 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:145:26:145:26 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:150:26:150:26 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:151:26:151:26 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:161:24:161:24 | key | provenance | | +| cryptoswift.swift:90:26:90:121 | [...] | cryptoswift.swift:163:24:163:24 | key | provenance | | +| cryptoswift.swift:91:13:91:30 | call to getConstantArray() [Collection element] | cryptoswift.swift:106:21:106:21 | key2 | provenance | | +| cryptoswift.swift:91:13:91:30 | call to getConstantArray() [Collection element] | cryptoswift.swift:107:21:107:21 | key2 | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:108:21:108:21 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:109:21:109:21 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:119:22:119:22 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:120:22:120:22 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:129:26:129:26 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:152:26:152:26 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:153:26:153:26 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:162:24:162:24 | keyString | provenance | | +| cryptoswift.swift:92:18:92:36 | call to getConstantString() | cryptoswift.swift:164:24:164:24 | keyString | provenance | | +| file://:0:0:0:0 | [post] self [encryptionKey] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [encryptionKey] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [encryptionKey] | provenance | | +| grdb.swift:21:20:21:20 | abc123 | grdb.swift:27:23:27:23 | constString | provenance | | +| grdb.swift:21:20:21:20 | abc123 | grdb.swift:31:26:31:26 | constString | provenance | | +| grdb.swift:22:33:22:50 | [...] | grdb.swift:23:23:23:23 | constArray | provenance | | +| grdb.swift:23:18:23:33 | call to Data.init(_:) | grdb.swift:29:23:29:23 | constData | provenance | | +| grdb.swift:23:18:23:33 | call to Data.init(_:) | grdb.swift:33:26:33:26 | constData | provenance | | +| grdb.swift:23:23:23:23 | constArray | grdb.swift:23:18:23:33 | call to Data.init(_:) | provenance | | +| misc.swift:30:7:30:7 | value | file://:0:0:0:0 | value | provenance | | +| misc.swift:46:19:46:38 | call to Data.init(_:) | misc.swift:49:41:49:41 | myConstKey | provenance | | +| misc.swift:46:19:46:38 | call to Data.init(_:) | misc.swift:53:25:53:25 | myConstKey | provenance | | +| misc.swift:46:19:46:38 | call to Data.init(_:) | misc.swift:57:41:57:41 | myConstKey | provenance | | +| misc.swift:46:24:46:24 | abcdef123456 | misc.swift:46:19:46:38 | call to Data.init(_:) | provenance | | +| misc.swift:53:2:53:2 | [post] config [encryptionKey] | misc.swift:53:2:53:2 | [post] config | provenance | | +| misc.swift:53:25:53:25 | myConstKey | misc.swift:30:7:30:7 | value | provenance | | +| misc.swift:53:25:53:25 | myConstKey | misc.swift:53:2:53:2 | [post] config | provenance | | +| misc.swift:53:25:53:25 | myConstKey | misc.swift:53:2:53:2 | [post] config [encryptionKey] | provenance | | +| misc.swift:57:2:57:18 | [post] getter for .config [encryptionKey] | misc.swift:57:2:57:18 | [post] getter for .config | provenance | | +| misc.swift:57:41:57:41 | myConstKey | misc.swift:30:7:30:7 | value | provenance | | +| misc.swift:57:41:57:41 | myConstKey | misc.swift:57:2:57:18 | [post] getter for .config | provenance | | +| misc.swift:57:41:57:41 | myConstKey | misc.swift:57:2:57:18 | [post] getter for .config [encryptionKey] | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:65:73:65:73 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:66:73:66:73 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:67:73:67:73 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:68:73:68:73 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:70:94:70:94 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:71:102:71:102 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:72:94:72:94 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:73:102:73:102 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:75:37:75:37 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:76:37:76:37 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:78:66:78:66 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:79:66:79:66 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:80:94:80:94 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:81:102:81:102 | myConstKey | provenance | | +| rncryptor.swift:60:19:60:38 | call to Data.init(_:) | rncryptor.swift:83:92:83:92 | myConstKey | provenance | | +| rncryptor.swift:60:24:60:24 | abcdef123456 | rncryptor.swift:60:19:60:38 | call to Data.init(_:) | provenance | | +| sqlite3_c_api.swift:41:19:41:38 | call to Data.init(_:) | sqlite3_c_api.swift:48:2:48:2 | myConstKey | provenance | | +| sqlite3_c_api.swift:41:24:41:24 | abcdef123456 | sqlite3_c_api.swift:41:19:41:38 | call to Data.init(_:) | provenance | | +| sqlite3_c_api.swift:48:2:48:2 | myConstKey | sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | provenance | | +| sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | sqlite3_c_api.swift:49:36:49:36 | buffer | provenance | | +| sqlite3_c_api.swift:48:31:48:31 | buffer [Collection element] | sqlite3_c_api.swift:50:38:50:38 | buffer | provenance | | nodes | SQLite.swift:43:13:43:13 | hardcoded_key | semmle.label | hardcoded_key | | SQLite.swift:45:23:45:23 | hardcoded_key | semmle.label | hardcoded_key | diff --git a/swift/ql/test/query-tests/Security/CWE-327/ECBEncryption.expected b/swift/ql/test/query-tests/Security/CWE-327/ECBEncryption.expected index 38c377b3926b..dce2964652cf 100644 --- a/swift/ql/test/query-tests/Security/CWE-327/ECBEncryption.expected +++ b/swift/ql/test/query-tests/Security/CWE-327/ECBEncryption.expected @@ -1,10 +1,10 @@ edges -| test.swift:34:9:34:13 | call to ECB.init() | test.swift:54:37:54:53 | call to getECBBlockMode() | -| test.swift:34:9:34:13 | call to ECB.init() | test.swift:55:37:55:53 | call to getECBBlockMode() | -| test.swift:34:9:34:13 | call to ECB.init() | test.swift:67:42:67:58 | call to getECBBlockMode() | -| test.swift:45:12:45:16 | call to ECB.init() | test.swift:50:37:50:37 | ecb | -| test.swift:45:12:45:16 | call to ECB.init() | test.swift:51:37:51:37 | ecb | -| test.swift:45:12:45:16 | call to ECB.init() | test.swift:65:42:65:42 | ecb | +| test.swift:34:9:34:13 | call to ECB.init() | test.swift:54:37:54:53 | call to getECBBlockMode() | provenance | | +| test.swift:34:9:34:13 | call to ECB.init() | test.swift:55:37:55:53 | call to getECBBlockMode() | provenance | | +| test.swift:34:9:34:13 | call to ECB.init() | test.swift:67:42:67:58 | call to getECBBlockMode() | provenance | | +| test.swift:45:12:45:16 | call to ECB.init() | test.swift:50:37:50:37 | ecb | provenance | | +| test.swift:45:12:45:16 | call to ECB.init() | test.swift:51:37:51:37 | ecb | provenance | | +| test.swift:45:12:45:16 | call to ECB.init() | test.swift:65:42:65:42 | ecb | provenance | | nodes | test.swift:34:9:34:13 | call to ECB.init() | semmle.label | call to ECB.init() | | test.swift:45:12:45:16 | call to ECB.init() | semmle.label | call to ECB.init() | diff --git a/swift/ql/test/query-tests/Security/CWE-328/WeakPasswordHashing.expected b/swift/ql/test/query-tests/Security/CWE-328/WeakPasswordHashing.expected index e33e8ca7b26b..46f3d211ccd7 100644 --- a/swift/ql/test/query-tests/Security/CWE-328/WeakPasswordHashing.expected +++ b/swift/ql/test/query-tests/Security/CWE-328/WeakPasswordHashing.expected @@ -1,6 +1,6 @@ edges -| testCryptoKit.swift:193:38:193:38 | passwordString | testCryptoKit.swift:193:38:193:53 | .utf8 | -| testCryptoKit.swift:193:38:193:53 | .utf8 | testCryptoKit.swift:193:33:193:57 | call to Data.init(_:) | +| testCryptoKit.swift:193:38:193:38 | passwordString | testCryptoKit.swift:193:38:193:53 | .utf8 | provenance | | +| testCryptoKit.swift:193:38:193:53 | .utf8 | testCryptoKit.swift:193:33:193:57 | call to Data.init(_:) | provenance | | nodes | testCryptoKit.swift:65:47:65:47 | passwd | semmle.label | passwd | | testCryptoKit.swift:71:44:71:44 | passwd | semmle.label | passwd | diff --git a/swift/ql/test/query-tests/Security/CWE-730/RegexInjection.expected b/swift/ql/test/query-tests/Security/CWE-730/RegexInjection.expected index b2f31c7de1b9..1a26f9211971 100644 --- a/swift/ql/test/query-tests/Security/CWE-730/RegexInjection.expected +++ b/swift/ql/test/query-tests/Security/CWE-730/RegexInjection.expected @@ -1,27 +1,27 @@ edges -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:101:16:101:16 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:104:16:104:40 | ... .+(_:_:) ... | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:106:16:106:16 | "..." | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:109:16:109:39 | ... ? ... : ... | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:110:16:110:37 | ... ? ... : ... | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:113:24:113:24 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:114:45:114:45 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:120:19:120:19 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:126:40:126:40 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:131:39:131:39 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:137:40:137:40 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:144:16:144:16 | remoteInput | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:147:39:147:39 | regexStr | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:162:17:162:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:164:17:164:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:167:17:167:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:170:17:170:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:173:17:173:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:176:17:176:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:179:17:179:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:182:17:182:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:185:17:185:17 | taintedString | -| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:190:21:190:21 | taintedString | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:101:16:101:16 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:104:16:104:40 | ... .+(_:_:) ... | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:106:16:106:16 | "..." | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:109:16:109:39 | ... ? ... : ... | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:110:16:110:37 | ... ? ... : ... | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:113:24:113:24 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:114:45:114:45 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:120:19:120:19 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:126:40:126:40 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:131:39:131:39 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:137:40:137:40 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:144:16:144:16 | remoteInput | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:147:39:147:39 | regexStr | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:162:17:162:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:164:17:164:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:167:17:167:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:170:17:170:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:173:17:173:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:176:17:176:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:179:17:179:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:182:17:182:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:185:17:185:17 | taintedString | provenance | | +| tests.swift:95:22:95:46 | call to String.init(contentsOf:) | tests.swift:190:21:190:21 | taintedString | provenance | | nodes | tests.swift:95:22:95:46 | call to String.init(contentsOf:) | semmle.label | call to String.init(contentsOf:) | | tests.swift:101:16:101:16 | taintedString | semmle.label | taintedString | diff --git a/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected b/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected index fb030f5e39b3..9c82519faa98 100644 --- a/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected +++ b/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected @@ -1,77 +1,77 @@ edges -| InsecureTLS.swift:19:7:19:7 | value | file://:0:0:0:0 | value | -| InsecureTLS.swift:20:7:20:7 | value | file://:0:0:0:0 | value | -| InsecureTLS.swift:22:7:22:7 | value | file://:0:0:0:0 | value | -| InsecureTLS.swift:23:7:23:7 | value | file://:0:0:0:0 | value | -| InsecureTLS.swift:40:3:40:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:40:3:40:3 | [post] config | -| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | -| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:40:3:40:3 | [post] config | -| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:40:3:40:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:45:3:45:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:45:3:45:3 | [post] config | -| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:19:7:19:7 | value | -| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:45:3:45:3 | [post] config | -| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:45:3:45:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:57:3:57:3 | [post] config [tlsMaximumSupportedProtocolVersion] | InsecureTLS.swift:57:3:57:3 | [post] config | -| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:20:7:20:7 | value | -| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:57:3:57:3 | [post] config | -| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:57:3:57:3 | [post] config [tlsMaximumSupportedProtocolVersion] | -| InsecureTLS.swift:64:3:64:3 | [post] config [tlsMinimumSupportedProtocol] | InsecureTLS.swift:64:3:64:3 | [post] config | -| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:22:7:22:7 | value | -| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:64:3:64:3 | [post] config | -| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:64:3:64:3 | [post] config [tlsMinimumSupportedProtocol] | -| InsecureTLS.swift:76:3:76:3 | [post] config [tlsMaximumSupportedProtocol] | InsecureTLS.swift:76:3:76:3 | [post] config | -| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:23:7:23:7 | value | -| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:76:3:76:3 | [post] config | -| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:76:3:76:3 | [post] config [tlsMaximumSupportedProtocol] | -| InsecureTLS.swift:102:10:102:33 | .TLSv10 | InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | -| InsecureTLS.swift:111:3:111:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:111:3:111:3 | [post] config | -| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:19:7:19:7 | value | -| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:111:3:111:3 | [post] config | -| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:111:3:111:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:121:55:121:66 | version | InsecureTLS.swift:122:47:122:47 | version | -| InsecureTLS.swift:122:3:122:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:122:3:122:3 | [post] config | -| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:19:7:19:7 | value | -| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:122:3:122:3 | [post] config | -| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:122:3:122:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:127:25:127:48 | .TLSv11 | InsecureTLS.swift:121:55:121:66 | version | -| InsecureTLS.swift:158:7:158:7 | self [TLSVersion] | file://:0:0:0:0 | self [TLSVersion] | -| InsecureTLS.swift:158:7:158:7 | value | file://:0:0:0:0 | value | -| InsecureTLS.swift:163:3:163:3 | [post] def [TLSVersion] | InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | -| InsecureTLS.swift:163:20:163:43 | .TLSv10 | InsecureTLS.swift:158:7:158:7 | value | -| InsecureTLS.swift:163:20:163:43 | .TLSv10 | InsecureTLS.swift:163:3:163:3 | [post] def [TLSVersion] | -| InsecureTLS.swift:165:3:165:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:165:3:165:3 | [post] config | -| InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | InsecureTLS.swift:158:7:158:7 | self [TLSVersion] | -| InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | InsecureTLS.swift:165:47:165:51 | .TLSVersion | -| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:19:7:19:7 | value | -| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:165:3:165:3 | [post] config | -| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:165:3:165:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:181:3:181:9 | [post] getter for .config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:181:3:181:9 | [post] getter for .config | -| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | -| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:181:3:181:9 | [post] getter for .config | -| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:181:3:181:9 | [post] getter for .config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:185:20:185:36 | withMinVersion | InsecureTLS.swift:187:42:187:42 | withMinVersion | -| InsecureTLS.swift:187:5:187:5 | [post] self [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:187:5:187:5 | [post] self | -| InsecureTLS.swift:187:42:187:42 | withMinVersion | InsecureTLS.swift:187:5:187:5 | [post] self [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:193:51:193:74 | .TLSv10 | InsecureTLS.swift:185:20:185:36 | withMinVersion | -| InsecureTLS.swift:196:56:196:63 | value | InsecureTLS.swift:196:1:198:1 | version[return] | -| InsecureTLS.swift:202:24:202:24 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:202:24:202:24 | [post] config | -| InsecureTLS.swift:202:24:202:31 | [post] getter for .tlsMinimumSupportedProtocolVersion | InsecureTLS.swift:202:24:202:24 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:202:74:202:97 | .TLSv10 | InsecureTLS.swift:196:56:196:63 | value | -| InsecureTLS.swift:202:74:202:97 | .TLSv10 | InsecureTLS.swift:202:24:202:31 | [post] getter for .tlsMinimumSupportedProtocolVersion | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | file://:0:0:0:0 | [post] self | -| file://:0:0:0:0 | self [TLSVersion] | file://:0:0:0:0 | .TLSVersion | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [TLSVersion] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | -| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | +| InsecureTLS.swift:19:7:19:7 | value | file://:0:0:0:0 | value | provenance | | +| InsecureTLS.swift:20:7:20:7 | value | file://:0:0:0:0 | value | provenance | | +| InsecureTLS.swift:22:7:22:7 | value | file://:0:0:0:0 | value | provenance | | +| InsecureTLS.swift:23:7:23:7 | value | file://:0:0:0:0 | value | provenance | | +| InsecureTLS.swift:40:3:40:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:40:3:40:3 | [post] config | provenance | | +| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | provenance | | +| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:40:3:40:3 | [post] config | provenance | | +| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:40:3:40:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:45:3:45:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:45:3:45:3 | [post] config | provenance | | +| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:19:7:19:7 | value | provenance | | +| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:45:3:45:3 | [post] config | provenance | | +| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:45:3:45:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:57:3:57:3 | [post] config [tlsMaximumSupportedProtocolVersion] | InsecureTLS.swift:57:3:57:3 | [post] config | provenance | | +| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:20:7:20:7 | value | provenance | | +| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:57:3:57:3 | [post] config | provenance | | +| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:57:3:57:3 | [post] config [tlsMaximumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:64:3:64:3 | [post] config [tlsMinimumSupportedProtocol] | InsecureTLS.swift:64:3:64:3 | [post] config | provenance | | +| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:22:7:22:7 | value | provenance | | +| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:64:3:64:3 | [post] config | provenance | | +| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:64:3:64:3 | [post] config [tlsMinimumSupportedProtocol] | provenance | | +| InsecureTLS.swift:76:3:76:3 | [post] config [tlsMaximumSupportedProtocol] | InsecureTLS.swift:76:3:76:3 | [post] config | provenance | | +| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:23:7:23:7 | value | provenance | | +| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:76:3:76:3 | [post] config | provenance | | +| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:76:3:76:3 | [post] config [tlsMaximumSupportedProtocol] | provenance | | +| InsecureTLS.swift:102:10:102:33 | .TLSv10 | InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | provenance | | +| InsecureTLS.swift:111:3:111:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:111:3:111:3 | [post] config | provenance | | +| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:19:7:19:7 | value | provenance | | +| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:111:3:111:3 | [post] config | provenance | | +| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:111:3:111:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:121:55:121:66 | version | InsecureTLS.swift:122:47:122:47 | version | provenance | | +| InsecureTLS.swift:122:3:122:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:122:3:122:3 | [post] config | provenance | | +| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:19:7:19:7 | value | provenance | | +| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:122:3:122:3 | [post] config | provenance | | +| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:122:3:122:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:127:25:127:48 | .TLSv11 | InsecureTLS.swift:121:55:121:66 | version | provenance | | +| InsecureTLS.swift:158:7:158:7 | self [TLSVersion] | file://:0:0:0:0 | self [TLSVersion] | provenance | | +| InsecureTLS.swift:158:7:158:7 | value | file://:0:0:0:0 | value | provenance | | +| InsecureTLS.swift:163:3:163:3 | [post] def [TLSVersion] | InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | provenance | | +| InsecureTLS.swift:163:20:163:43 | .TLSv10 | InsecureTLS.swift:158:7:158:7 | value | provenance | | +| InsecureTLS.swift:163:20:163:43 | .TLSv10 | InsecureTLS.swift:163:3:163:3 | [post] def [TLSVersion] | provenance | | +| InsecureTLS.swift:165:3:165:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:165:3:165:3 | [post] config | provenance | | +| InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | InsecureTLS.swift:158:7:158:7 | self [TLSVersion] | provenance | | +| InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | InsecureTLS.swift:165:47:165:51 | .TLSVersion | provenance | | +| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:19:7:19:7 | value | provenance | | +| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:165:3:165:3 | [post] config | provenance | | +| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:165:3:165:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:181:3:181:9 | [post] getter for .config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:181:3:181:9 | [post] getter for .config | provenance | | +| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | provenance | | +| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:181:3:181:9 | [post] getter for .config | provenance | | +| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:181:3:181:9 | [post] getter for .config [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:185:20:185:36 | withMinVersion | InsecureTLS.swift:187:42:187:42 | withMinVersion | provenance | | +| InsecureTLS.swift:187:5:187:5 | [post] self [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:187:5:187:5 | [post] self | provenance | | +| InsecureTLS.swift:187:42:187:42 | withMinVersion | InsecureTLS.swift:187:5:187:5 | [post] self [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:193:51:193:74 | .TLSv10 | InsecureTLS.swift:185:20:185:36 | withMinVersion | provenance | | +| InsecureTLS.swift:196:56:196:63 | value | InsecureTLS.swift:196:1:198:1 | version[return] | provenance | | +| InsecureTLS.swift:202:24:202:24 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:202:24:202:24 | [post] config | provenance | | +| InsecureTLS.swift:202:24:202:31 | [post] getter for .tlsMinimumSupportedProtocolVersion | InsecureTLS.swift:202:24:202:24 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | +| InsecureTLS.swift:202:74:202:97 | .TLSv10 | InsecureTLS.swift:196:56:196:63 | value | provenance | | +| InsecureTLS.swift:202:74:202:97 | .TLSv10 | InsecureTLS.swift:202:24:202:31 | [post] getter for .tlsMinimumSupportedProtocolVersion | provenance | | +| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | +| file://:0:0:0:0 | self [TLSVersion] | file://:0:0:0:0 | .TLSVersion | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [TLSVersion] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | provenance | | +| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | provenance | | nodes | InsecureTLS.swift:19:7:19:7 | value | semmle.label | value | | InsecureTLS.swift:20:7:20:7 | value | semmle.label | value | diff --git a/swift/ql/test/query-tests/Security/CWE-760/ConstantSalt.expected b/swift/ql/test/query-tests/Security/CWE-760/ConstantSalt.expected index 033d4481780d..2d89675b482e 100644 --- a/swift/ql/test/query-tests/Security/CWE-760/ConstantSalt.expected +++ b/swift/ql/test/query-tests/Security/CWE-760/ConstantSalt.expected @@ -1,28 +1,28 @@ edges -| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:63:57:63:57 | myConstantSalt1 | -| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:68:106:68:106 | myConstantSalt1 | -| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:71:106:71:106 | myConstantSalt1 | -| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:75:127:75:127 | myConstantSalt1 | -| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:78:135:78:135 | myConstantSalt1 | -| rncryptor.swift:59:29:59:29 | abcdef123456 | rncryptor.swift:59:24:59:43 | call to Data.init(_:) | -| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:65:55:65:55 | myConstantSalt2 | -| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:69:131:69:131 | myConstantSalt2 | -| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:72:131:72:131 | myConstantSalt2 | -| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:76:152:76:152 | myConstantSalt2 | -| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:79:160:79:160 | myConstantSalt2 | -| rncryptor.swift:60:29:60:29 | 0 | rncryptor.swift:60:24:60:30 | call to Data.init(_:) | -| test.swift:29:3:29:3 | this string is constant | test.swift:33:10:33:28 | call to getConstantString() | -| test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | -| test.swift:33:10:33:28 | call to getConstantString() | test.swift:33:10:33:30 | .utf8 | -| test.swift:33:10:33:30 | .utf8 | test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | -| test.swift:43:35:43:130 | [...] | test.swift:51:49:51:49 | constantSalt | -| test.swift:43:35:43:130 | [...] | test.swift:56:59:56:59 | constantSalt | -| test.swift:43:35:43:130 | [...] | test.swift:62:59:62:59 | constantSalt | -| test.swift:43:35:43:130 | [...] | test.swift:67:53:67:53 | constantSalt | -| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:52:49:52:49 | constantStringSalt | -| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:57:59:57:59 | constantStringSalt | -| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:63:59:63:59 | constantStringSalt | -| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:68:53:68:53 | constantStringSalt | +| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:63:57:63:57 | myConstantSalt1 | provenance | | +| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:68:106:68:106 | myConstantSalt1 | provenance | | +| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:71:106:71:106 | myConstantSalt1 | provenance | | +| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:75:127:75:127 | myConstantSalt1 | provenance | | +| rncryptor.swift:59:24:59:43 | call to Data.init(_:) | rncryptor.swift:78:135:78:135 | myConstantSalt1 | provenance | | +| rncryptor.swift:59:29:59:29 | abcdef123456 | rncryptor.swift:59:24:59:43 | call to Data.init(_:) | provenance | | +| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:65:55:65:55 | myConstantSalt2 | provenance | | +| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:69:131:69:131 | myConstantSalt2 | provenance | | +| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:72:131:72:131 | myConstantSalt2 | provenance | | +| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:76:152:76:152 | myConstantSalt2 | provenance | | +| rncryptor.swift:60:24:60:30 | call to Data.init(_:) | rncryptor.swift:79:160:79:160 | myConstantSalt2 | provenance | | +| rncryptor.swift:60:29:60:29 | 0 | rncryptor.swift:60:24:60:30 | call to Data.init(_:) | provenance | | +| test.swift:29:3:29:3 | this string is constant | test.swift:33:10:33:28 | call to getConstantString() | provenance | | +| test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | provenance | | +| test.swift:33:10:33:28 | call to getConstantString() | test.swift:33:10:33:30 | .utf8 | provenance | | +| test.swift:33:10:33:30 | .utf8 | test.swift:33:2:33:34 | call to Array.init(_:) [Collection element] | provenance | | +| test.swift:43:35:43:130 | [...] | test.swift:51:49:51:49 | constantSalt | provenance | | +| test.swift:43:35:43:130 | [...] | test.swift:56:59:56:59 | constantSalt | provenance | | +| test.swift:43:35:43:130 | [...] | test.swift:62:59:62:59 | constantSalt | provenance | | +| test.swift:43:35:43:130 | [...] | test.swift:67:53:67:53 | constantSalt | provenance | | +| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:52:49:52:49 | constantStringSalt | provenance | | +| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:57:59:57:59 | constantStringSalt | provenance | | +| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:63:59:63:59 | constantStringSalt | provenance | | +| test.swift:44:27:44:44 | call to getConstantArray() [Collection element] | test.swift:68:53:68:53 | constantStringSalt | provenance | | nodes | rncryptor.swift:59:24:59:43 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | | rncryptor.swift:59:29:59:29 | abcdef123456 | semmle.label | abcdef123456 | diff --git a/swift/ql/test/query-tests/Security/CWE-916/InsufficientHashIterations.expected b/swift/ql/test/query-tests/Security/CWE-916/InsufficientHashIterations.expected index 1cba5d580609..aff512f05123 100644 --- a/swift/ql/test/query-tests/Security/CWE-916/InsufficientHashIterations.expected +++ b/swift/ql/test/query-tests/Security/CWE-916/InsufficientHashIterations.expected @@ -1,7 +1,7 @@ edges -| test.swift:20:45:20:45 | 99999 | test.swift:33:22:33:43 | call to getLowIterationCount() | -| test.swift:33:22:33:43 | call to getLowIterationCount() | test.swift:37:84:37:84 | lowIterations | -| test.swift:33:22:33:43 | call to getLowIterationCount() | test.swift:44:84:44:84 | lowIterations | +| test.swift:20:45:20:45 | 99999 | test.swift:33:22:33:43 | call to getLowIterationCount() | provenance | | +| test.swift:33:22:33:43 | call to getLowIterationCount() | test.swift:37:84:37:84 | lowIterations | provenance | | +| test.swift:33:22:33:43 | call to getLowIterationCount() | test.swift:44:84:44:84 | lowIterations | provenance | | nodes | test.swift:20:45:20:45 | 99999 | semmle.label | 99999 | | test.swift:33:22:33:43 | call to getLowIterationCount() | semmle.label | call to getLowIterationCount() |