From ddbacc3d4a4d589765668f74778737766637f313 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 26 Jan 2024 11:11:01 +0100 Subject: [PATCH 001/113] Shared: add test case for stateful outBarrier bug --- .../library-tests/dataflow/inoutbarriers/A.java | 11 +++++++++++ .../dataflow/inoutbarriers/test.expected | 14 +++++++++----- .../library-tests/dataflow/inoutbarriers/test.ql | 5 +++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/java/ql/test/library-tests/dataflow/inoutbarriers/A.java b/java/ql/test/library-tests/dataflow/inoutbarriers/A.java index 51604991371..69207701837 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 @@ class A { 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 de785df0a1d..8d5a58661ab 100644 --- a/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected +++ b/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected @@ -1,7 +1,11 @@ inconsistentFlow +| A.java:24:9:24:12 | fsrc | A.java:26:10:26:10 | s | spurious state-flow in configuration both | +| A.java:24:9:24:12 | fsrc | A.java:26:10:26:10 | s | spurious state-flow in configuration sinkbarrier | #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 82d35f0483c..7972386a2dc 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 { From d1310c74fcb33f1ad789796c2176e383d372338a Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 25 Jan 2024 14:27:54 +0100 Subject: [PATCH 002/113] Shared: remove old stateful outBarrier check --- .../codeql/dataflow/internal/DataFlowImpl.qll | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 27aa1d38e6e..7a5f76715e5 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -3773,14 +3773,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() { From f15ead613023ff9ee42a3cce43f74592a6d5c1e5 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 25 Jan 2024 14:28:06 +0100 Subject: [PATCH 003/113] Shared: check stateful outBarrier as part of pathStep SCC --- .../codeql/dataflow/internal/DataFlowImpl.qll | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 7a5f76715e5..0708bf301af 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 ( @@ -3757,6 +3758,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 } @@ -3928,14 +3932,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 @@ -3943,7 +3947,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 @@ -3978,7 +3982,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() } @@ -3991,7 +3995,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) @@ -4009,7 +4013,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) ) } @@ -4130,7 +4135,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) ) } From ee8e9a4e66b976aa98e28464bfe3a61fb84f9e0d Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 26 Jan 2024 11:13:44 +0100 Subject: [PATCH 004/113] Shared: update test output --- java/ql/test/library-tests/dataflow/inoutbarriers/test.expected | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected b/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected index 8d5a58661ab..90f99161585 100644 --- a/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected +++ b/java/ql/test/library-tests/dataflow/inoutbarriers/test.expected @@ -1,6 +1,4 @@ inconsistentFlow -| A.java:24:9:24:12 | fsrc | A.java:26:10:26:10 | s | spurious state-flow in configuration both | -| A.java:24:9:24:12 | fsrc | A.java:26:10:26:10 | s | spurious state-flow in configuration sinkbarrier | #select | 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 | From 19cb7adb6db17a3131b7db93482abc6a0d93ceff Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Thu, 20 Apr 2023 11:42:11 +0200 Subject: [PATCH 005/113] Migrate path injection sinks to MaD Deprecate and stop using PathCreation Path creation sinks are now summaries --- .../2023-04-20-deprecated-path-creation.md | 4 + java/ql/lib/ext/java.io.model.yml | 7 +- java/ql/lib/ext/java.nio.file.model.yml | 12 +- .../code/java/security/PathCreation.qll | 26 +- .../code/java/security/TaintedPathQuery.qll | 11 +- .../src/Security/CWE/CWE-022/TaintedPath.ql | 18 +- .../Security/CWE/CWE-022/TaintedPathLocal.ql | 18 +- ...04-20-path-injection-precision-improved.md | 4 + .../Security/CWE/CWE-073/FilePathInjection.ql | 8 + .../pathcreation/PathCreation.expected | 1 + .../CWE-022/semmle/tests/TaintedPath.ql | 11 + .../CWE-022/semmle/tests/TaintedPath.qlref | 1 - .../security/CWE-022/semmle/tests/Test.java | 254 +++++++++++------- .../CWE-022/semmle/tests/mad/Test.java | 228 ---------------- 14 files changed, 216 insertions(+), 387 deletions(-) create mode 100644 java/ql/lib/change-notes/2023-04-20-deprecated-path-creation.md create mode 100644 java/ql/src/change-notes/2023-04-20-path-injection-precision-improved.md create mode 100644 java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql delete mode 100644 java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.qlref delete mode 100644 java/ql/test/query-tests/security/CWE-022/semmle/tests/mad/Test.java diff --git a/java/ql/lib/change-notes/2023-04-20-deprecated-path-creation.md b/java/ql/lib/change-notes/2023-04-20-deprecated-path-creation.md new file mode 100644 index 00000000000..c955a459ca0 --- /dev/null +++ b/java/ql/lib/change-notes/2023-04-20-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/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index 1bd9251c29d..17dbc1464dc 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -3,18 +3,17 @@ 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, "renameTo", "(File)", "", "Argument[0]", "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"] diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index 3c77c876eee..a35c575e9cb 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -37,15 +37,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,7 +56,7 @@ 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"] @@ -76,7 +69,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"] diff --git a/java/ql/lib/semmle/code/java/security/PathCreation.qll b/java/ql/lib/semmle/code/java/security/PathCreation.qll index 924d42674fb..3d40a1d4fdb 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 85265f6b169..63bd4949699 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/src/Security/CWE/CWE-022/TaintedPath.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql index 96e8e66c7cd..3963442d648 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 8e56121883f..60dc6b54be8 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/change-notes/2023-04-20-path-injection-precision-improved.md b/java/ql/src/change-notes/2023-04-20-path-injection-precision-improved.md new file mode 100644 index 00000000000..763cedea45d --- /dev/null +++ b/java/ql/src/change-notes/2023-04-20-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/experimental/Security/CWE/CWE-073/FilePathInjection.ql b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql index d0b59bf1136..7f6528a6670 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,10 @@ import java import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.FlowSources +<<<<<<< HEAD +======= +import semmle.code.java.security.TaintedPathQuery +>>>>>>> 9e469c9c32 (Migrate path injection sinks to MaD) import JFinalController import semmle.code.java.security.PathSanitizer private import semmle.code.java.security.Sanitizers @@ -52,7 +56,11 @@ module InjectFilePathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } predicate isSink(DataFlow::Node sink) { +<<<<<<< HEAD sinkNode(sink, "path-injection") and +======= + sink instanceof TaintedPathSink and +>>>>>>> 9e469c9c32 (Migrate path injection sinks to MaD) not sink instanceof NormalizedPathNode } diff --git a/java/ql/test/library-tests/pathcreation/PathCreation.expected b/java/ql/test/library-tests/pathcreation/PathCreation.expected index c0ac69c7da4..41e10fb6aaf 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/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 00000000000..e17123ce781 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-022/semmle/tests/TaintedPath.ql @@ -0,0 +1,11 @@ +import java +import TestUtilities.InlineFlowTest +import semmle.code.java.security.TaintedPathQuery + +class HasFlowTest extends InlineFlowTest { + override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { + TaintedPathFlow::flow(src, sink) + } + + override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } +} 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 1677939387d..00000000000 --- 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 080cc263f08..872f2a01b65 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,168 @@ -// 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 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; -import org.apache.commons.io.output.LockableFileWriter; +public class Test { -class Test { - void doGet1(InetAddress address) - throws IOException { - String temp = address.getHostName(); - File file; - Path path; + private InetAddress address; - // BAD: construct a file path with user input - file = new File(temp); + public Object source() { + return address.getHostName(); + } - // BAD: construct a path with user input - path = Paths.get(temp); + 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 + Files.copy((InputStream) source(), null); // $ hasTaintFlow + // "java.nio.file;Files;false;copy;;;Argument[1];create-file;manual" + Files.copy((Path) null, (Path) source()); // $ hasTaintFlow + Files.copy((Path) null, (OutputStream) 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 + } - // BAD: construct a path with user input - path = FileSystems.getDefault().getPath(temp); + 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 + } - // 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); - } - - 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; - } - - boolean isSortOfSafe(String pathSpec) { - // no file separators - if (pathSpec.contains(File.separator)) - return false; - return true; - } - - 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/mad/Test.java b/java/ql/test/query-tests/security/CWE-022/semmle/tests/mad/Test.java deleted file mode 100644 index 169f3535c6b..00000000000 --- 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()); - } -} From 1d2a51c522c1357ec94c91585be310dacd3b1bf2 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Fri, 26 Jan 2024 12:20:47 +0100 Subject: [PATCH 006/113] Rename change note --- ...mproved.md => 2024-01-26-path-injection-precision-improved.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename java/ql/src/change-notes/{2023-04-20-path-injection-precision-improved.md => 2024-01-26-path-injection-precision-improved.md} (100%) diff --git a/java/ql/src/change-notes/2023-04-20-path-injection-precision-improved.md b/java/ql/src/change-notes/2024-01-26-path-injection-precision-improved.md similarity index 100% rename from java/ql/src/change-notes/2023-04-20-path-injection-precision-improved.md rename to java/ql/src/change-notes/2024-01-26-path-injection-precision-improved.md From 2a146405ac32f2c2372764a4c379104797b1a648 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Fri, 26 Jan 2024 12:31:48 +0100 Subject: [PATCH 007/113] Adjust tests --- .../Security/CWE/CWE-073/FilePathInjection.ql | 7 - .../CWE-073/FilePathInjection.expected | 3 - .../CWE-022/semmle/tests/TaintedPath.expected | 494 ------------------ .../CWE-022/semmle/tests/TaintedPath.java | 40 +- .../CWE-022/semmle/tests/TaintedPath.ql | 9 +- .../security/CWE-022/semmle/tests/Test.java | 2 - 6 files changed, 22 insertions(+), 533 deletions(-) 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 7f6528a6670..6fab554ac67 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql @@ -16,10 +16,7 @@ import java import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.FlowSources -<<<<<<< HEAD -======= import semmle.code.java.security.TaintedPathQuery ->>>>>>> 9e469c9c32 (Migrate path injection sinks to MaD) import JFinalController import semmle.code.java.security.PathSanitizer private import semmle.code.java.security.Sanitizers @@ -56,11 +53,7 @@ module InjectFilePathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } predicate isSink(DataFlow::Node sink) { -<<<<<<< HEAD - sinkNode(sink, "path-injection") and -======= sink instanceof TaintedPathSink and ->>>>>>> 9e469c9c32 (Migrate path injection sinks to MaD) not sink instanceof NormalizedPathNode } 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 cd2b49f28c1..07be573dbf8 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 @@ -3,7 +3,6 @@ edges | 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 | @@ -19,7 +18,6 @@ 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:217:19:217:22 | file : File | semmle.label | file : File | subpaths @@ -28,4 +26,3 @@ 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 | 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 0e2d90c3709..e69de29bb2d 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 a2ae561be58..8bfc35c1d96 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 @@ import java.nio.file.Paths; 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 class TaintedPath { } 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 class TaintedPath { } 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 index e17123ce781..25e5bf1df87 100644 --- 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 @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.TaintedPathQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - TaintedPathFlow::flow(src, sink) - } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } -} +import TaintFlowTest 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 872f2a01b65..a29cf1f620e 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 @@ -60,10 +60,8 @@ public class Test { // "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 - Files.copy((InputStream) source(), null); // $ hasTaintFlow // "java.nio.file;Files;false;copy;;;Argument[1];create-file;manual" Files.copy((Path) null, (Path) source()); // $ hasTaintFlow - Files.copy((Path) null, (OutputStream) 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 From 19a6b7858b12c112056420f0af40cc3dca0a488f Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Fri, 26 Jan 2024 12:45:00 +0100 Subject: [PATCH 008/113] Remove reference to PathCreation ZipSlip no longer needs to make this exclusion, since PathCreation arguments are no longer path-injection sinks --- .../code/java/security/ZipSlipQuery.qll | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll index 10db2997bef..7ba99a31e26 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") } } From b8cb514dc45b29b471ec8b321507a10cc97c464d Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Fri, 26 Jan 2024 12:46:51 +0100 Subject: [PATCH 009/113] Rename the other change note --- ...ed-path-creation.md => 2024-01-26-deprecated-path-creation.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename java/ql/lib/change-notes/{2023-04-20-deprecated-path-creation.md => 2024-01-26-deprecated-path-creation.md} (100%) diff --git a/java/ql/lib/change-notes/2023-04-20-deprecated-path-creation.md b/java/ql/lib/change-notes/2024-01-26-deprecated-path-creation.md similarity index 100% rename from java/ql/lib/change-notes/2023-04-20-deprecated-path-creation.md rename to java/ql/lib/change-notes/2024-01-26-deprecated-path-creation.md From 6e550d28af7e425d0727d7077316fb676f56a1e6 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Fri, 26 Jan 2024 13:33:25 +0100 Subject: [PATCH 010/113] Update more test expectations --- .../SupportedExternalSinks/SupportedExternalSinks.expected | 1 - .../ql/test/utils/modeleditor/ApplicationModeEndpoints.expected | 2 -- 2 files changed, 3 deletions(-) diff --git a/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected b/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected index 5f0ed7d05df..6cb849601d5 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/utils/modeleditor/ApplicationModeEndpoints.expected b/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected index 919fc09b261..4d32cb7e922 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 | From 3f0dc2b0228782093efe2efebe1e3dda3e5d4897 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Mon, 29 Jan 2024 12:10:46 +0100 Subject: [PATCH 011/113] Python: Model the `psycopg` package --- python/ql/lib/semmle/python/Frameworks.qll | 1 + .../lib/semmle/python/frameworks/Psycopg.qll | 32 +++++++++++++++++++ .../frameworks/psycopg/ConceptsTest.expected | 2 ++ .../frameworks/psycopg/ConceptsTest.ql | 2 ++ .../frameworks/psycopg/pep249.py | 14 ++++++++ 5 files changed, 51 insertions(+) create mode 100644 python/ql/lib/semmle/python/frameworks/Psycopg.qll create mode 100644 python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.expected create mode 100644 python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.ql create mode 100644 python/ql/test/library-tests/frameworks/psycopg/pep249.py diff --git a/python/ql/lib/semmle/python/Frameworks.qll b/python/ql/lib/semmle/python/Frameworks.qll index 801a51008ec..a6288dadc11 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/frameworks/Psycopg.qll b/python/ql/lib/semmle/python/frameworks/Psycopg.qll new file mode 100644 index 00000000000..10d4609aaaf --- /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/library-tests/frameworks/psycopg/ConceptsTest.expected b/python/ql/test/library-tests/frameworks/psycopg/ConceptsTest.expected new file mode 100644 index 00000000000..8ec8033d086 --- /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 00000000000..b557a0bccb6 --- /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 00000000000..0336facb079 --- /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" From 5867fb3d2925aa25ebe633d7921a1e716a8b217e Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Mon, 29 Jan 2024 12:12:07 +0100 Subject: [PATCH 012/113] Python: Add change-note --- python/ql/lib/change-notes/2024-01-29-psycopg-modeling.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 python/ql/lib/change-notes/2024-01-29-psycopg-modeling.md 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 00000000000..007cde7fb34 --- /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. From e2bf9ea2eba40753dd99bd298f97ddf1afce1cb1 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Tue, 30 Jan 2024 10:43:56 +0100 Subject: [PATCH 013/113] Consider File.exists() et al a path-injection sink --- java/ql/lib/ext/java.io.model.yml | 2 +- java/ql/lib/ext/java.nio.file.model.yml | 4 ++-- .../query-tests/security/CWE-073/FilePathInjection.expected | 3 +++ java/ql/test/library-tests/neutrals/neutralsinks/Test.java | 3 --- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index 17dbc1464dc..1ba027dbbb0 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -5,6 +5,7 @@ extensions: data: - ["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", "FileInputStream", True, "FileInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[0]", "path-injection", "manual"] @@ -126,7 +127,6 @@ 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 diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index a35c575e9cb..946f5653db6 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"] @@ -89,7 +91,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"] @@ -101,6 +102,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/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected index 07be573dbf8..c7a79c6328d 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 @@ -4,6 +4,7 @@ edges | 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 : String | +| FilePathInjection.java:209:15:209:32 | new File(...) : File | FilePathInjection.java:210:23:210:26 | file | | 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 | @@ -19,6 +20,7 @@ nodes | 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 : 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 @@ -26,3 +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: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/library-tests/neutrals/neutralsinks/Test.java b/java/ql/test/library-tests/neutrals/neutralsinks/Test.java index a234132226f..a563cb78de7 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 class Test { // 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 class Test { 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 From 8bd79908a61cefeb9e129a85b1ba1d7d9f51ec53 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Tue, 30 Jan 2024 16:49:55 +0000 Subject: [PATCH 014/113] Implement local auth query --- .../java/security/AndroidLocalAuthQuery.qll | 40 +++++++++++++++++++ .../AndroidInsecureLocalAuthentication.ql | 18 +++++++++ 2 files changed, 58 insertions(+) create mode 100644 java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll create mode 100644 java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql 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 00000000000..8c052fc58ee --- /dev/null +++ b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll @@ -0,0 +1,40 @@ +/** 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") + } +} + +/** 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/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql new file mode 100644 index 00000000000..22f4582fec3 --- /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 ...TODO + * @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." From ad8038bade1c6bd78c44edb9b8af7bb86c5b9d42 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Wed, 31 Jan 2024 11:16:49 +0000 Subject: [PATCH 015/113] Update MaD Declarations after Triage --- .../lib/change-notes/2024-01-31-new-models.md | 21 +++++++++++++++++++ java/ql/lib/ext/android.app.model.yml | 1 + java/ql/lib/ext/java.io.model.yml | 3 ++- java/ql/lib/ext/java.lang.model.yml | 5 +++++ java/ql/lib/ext/java.net.http.model.yml | 1 + java/ql/lib/ext/java.net.model.yml | 3 +++ java/ql/lib/ext/java.nio.file.model.yml | 2 ++ java/ql/lib/ext/java.util.zip.model.yml | 1 + java/ql/lib/ext/javax.servlet.model.yml | 6 +++++- java/ql/lib/ext/javax.xml.parsers.model.yml | 6 ++++++ java/ql/lib/ext/kotlin.io.model.yml | 1 + .../lib/ext/org.apache.commons.io.model.yml | 1 + .../ql/lib/ext/org.apache.hadoop.fs.model.yml | 7 +++++++ .../ext/org.apache.hadoop.fs.s3a.model.yml | 6 ++++++ .../ext/org.apache.http.impl.client.model.yml | 1 + .../ext/org.eclipse.jetty.client.model.yml | 1 + java/ql/lib/ext/org.gradle.api.file.model.yml | 1 + 17 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 java/ql/lib/change-notes/2024-01-31-new-models.md create mode 100644 java/ql/lib/ext/javax.xml.parsers.model.yml create mode 100644 java/ql/lib/ext/org.apache.hadoop.fs.s3a.model.yml 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 00000000000..195c1dd9954 --- /dev/null +++ b/java/ql/lib/change-notes/2024-01-31-new-models.md @@ -0,0 +1,21 @@ +--- +category: minorAnalysis +--- +* Added models for the following packages: + + * android.app + * java.io + * java.lang + * java.net + * java.net.http + * java.nio.file + * java.util.zip + * javax.servlet + * javax.xml.parsers + * kotlin.io + * org.apache.commons.io + * org.apache.hadoop.fs + * org.apache.hadoop.fs.s3a + * org.apache.http.impl.client + * org.eclipse.jetty.client + * org.gradle.api.file diff --git a/java/ql/lib/ext/android.app.model.yml b/java/ql/lib/ext/android.app.model.yml index d7a236871a7..bf82aa4cec5 100644 --- a/java/ql/lib/ext/android.app.model.yml +++ b/java/ql/lib/ext/android.app.model.yml @@ -6,6 +6,7 @@ extensions: - ["android.app", "Activity", True, "bindService", "", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "bindServiceAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "setResult", "(int,Intent)", "", "Argument[1]", "pending-intents", "manual"] + - ["android.app", "Activity", True, "startActivity", "(Intent)", "", "Argument[0]", "intent-redirection", "ai-manual"] - ["android.app", "Activity", True, "startActivityAsCaller", "", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int)", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int,Bundle)", "", "Argument[0]", "intent-redirection", "manual"] diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index 1bd9251c29d..0fe99bba86c 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -10,6 +10,7 @@ extensions: - ["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, "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", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileOutputStream", False, "FileOutputStream", "", "", "Argument[0]", "path-injection", "manual"] @@ -132,4 +133,4 @@ extensions: 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 e5ee383c522..8a257e51048 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 9fc18d2eaab..b920eb3da08 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 bdc40590fde..c33cd0e83a5 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -10,6 +10,7 @@ extensions: extensible: sinkModel data: - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,InetAddress,int)", "", "Argument[2]", "request-forgery", "ai-manual"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,int,InetAddress,int)", "", "Argument[3]", "request-forgery", "ai-manual"] - ["java.net", "DatagramSocket", True, "connect", "(SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["java.net", "PasswordAuthentication", False, "PasswordAuthentication", "(String,char[])", "", "Argument[1]", "credentials-password", "hq-generated"] - ["java.net", "Socket", True, "Socket", "(String,int)", "", "Argument[0]", "request-forgery", "ai-manual"] @@ -39,6 +40,8 @@ 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,int,String,String,String)", "", Argument[4], "ReturnValue", "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 3c77c876eee..567859f47ae 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -67,6 +67,7 @@ extensions: - ["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"] @@ -81,6 +82,7 @@ extensions: - ["java.nio.file", "Path", False, "toFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toUri", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["java.nio.file", "Paths", False, "get", "(String,String[])", "", Argument[1], "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Paths", True, "get", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Paths", True, "get", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] # Not supported by current lambda flow diff --git a/java/ql/lib/ext/java.util.zip.model.yml b/java/ql/lib/ext/java.util.zip.model.yml index 577e6b35723..29c51d5def7 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/javax.servlet.model.yml b/java/ql/lib/ext/javax.servlet.model.yml index 7d7f432d2bd..acd9bb6a6d4 100644 --- a/java/ql/lib/ext/javax.servlet.model.yml +++ b/java/ql/lib/ext/javax.servlet.model.yml @@ -9,9 +9,13 @@ extensions: - ["javax.servlet", "ServletRequest", False, "getParameterNames", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet", "ServletRequest", False, "getParameterValues", "(String)", "", "ReturnValue", "remote", "manual"] - ["javax.servlet", "ServletRequest", False, "getReader", "()", "", "ReturnValue", "remote", "manual"] - - addsTo: pack: codeql/java-all extensible: sinkModel data: - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.servlet", "ServletRequest", True, "getParameter", "(String)", "", Argument[0], "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/javax.xml.parsers.model.yml b/java/ql/lib/ext/javax.xml.parsers.model.yml new file mode 100644 index 00000000000..d39a28f5942 --- /dev/null +++ b/java/ql/lib/ext/javax.xml.parsers.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["javax.xml.parsers", "DocumentBuilder", True, "parse", "(InputSource)", "", "Argument[0]", "xxe", "ai-manual"] diff --git a/java/ql/lib/ext/kotlin.io.model.yml b/java/ql/lib/ext/kotlin.io.model.yml index b748e04a292..c65862f6eac 100644 --- a/java/ql/lib/ext/kotlin.io.model.yml +++ b/java/ql/lib/ext/kotlin.io.model.yml @@ -3,6 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["kotlin.io", "FilesKt", False, "appendText$default", "(File,String,Charset,int,Object)", "", "Argument[0]", "path-injection", "ai-manual"] - ["kotlin.io", "FilesKt", False, "deleteRecursively", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["kotlin.io", "FilesKt", False, "inputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["kotlin.io", "FilesKt", False, "readBytes", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] 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 20de13c5366..fccecd72912 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 ba819b73776..79dab1de37b 100644 --- a/java/ql/lib/ext/org.apache.hadoop.fs.model.yml +++ b/java/ql/lib/ext/org.apache.hadoop.fs.model.yml @@ -13,3 +13,10 @@ 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, "makeQualified", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["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 00000000000..4d5d9484335 --- /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.apache.http.impl.client.model.yml b/java/ql/lib/ext/org.apache.http.impl.client.model.yml index be517e5344f..6f407ac3682 100644 --- a/java/ql/lib/ext/org.apache.http.impl.client.model.yml +++ b/java/ql/lib/ext/org.apache.http.impl.client.model.yml @@ -3,4 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: + - ["org.apache.http.impl.client", "CloseableHttpClient", True, "execute", "(HttpUriRequest)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["org.apache.http.impl.client", "RequestWrapper", True, "setURI", "(URI)", "", "Argument[0]", "request-forgery", "hq-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 28c3430e818..bd3b4f58e72 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 4f492cdbcbc..7123cd0d0ca 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"] From ab6cea14c878c2c4b0b2fae5e6ffe58310e4873e Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Wed, 31 Jan 2024 11:49:25 +0000 Subject: [PATCH 016/113] Fix missing quotes. --- java/ql/lib/ext/java.net.model.yml | 4 ++-- java/ql/lib/ext/java.nio.file.model.yml | 4 ++-- java/ql/lib/ext/java.util.zip.model.yml | 2 +- java/ql/lib/ext/org.gradle.api.file.model.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 92f1ad7eb05..a6dd7fc5ce8 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -44,8 +44,8 @@ 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,int,String,String,String)", "", Argument[4], "ReturnValue", "taint", "ai-manual"] - - ["java.net", "URI", False, "URI", "(String,String,String)", "", Argument[1], "ReturnValue", "taint", "ai-manual"] + - ["java.net", "URI", False, "URI", "(String,String,String,int,String,String,String)", "", "Argument[4]", "ReturnValue", "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 567859f47ae..ea32fa75fe3 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -67,7 +67,7 @@ extensions: - ["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", "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"] @@ -82,7 +82,7 @@ extensions: - ["java.nio.file", "Path", False, "toFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toUri", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.nio.file", "Paths", False, "get", "(String,String[])", "", Argument[1], "ReturnValue", "taint", "ai-manual"] + - ["java.nio.file", "Paths", False, "get", "(String,String[])", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Paths", True, "get", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Paths", True, "get", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] # Not supported by current lambda flow diff --git a/java/ql/lib/ext/java.util.zip.model.yml b/java/ql/lib/ext/java.util.zip.model.yml index 29c51d5def7..611fc7804ef 100644 --- a/java/ql/lib/ext/java.util.zip.model.yml +++ b/java/ql/lib/ext/java.util.zip.model.yml @@ -5,7 +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", "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.gradle.api.file.model.yml b/java/ql/lib/ext/org.gradle.api.file.model.yml index 7123cd0d0ca..c3d202aab39 100644 --- a/java/ql/lib/ext/org.gradle.api.file.model.yml +++ b/java/ql/lib/ext/org.gradle.api.file.model.yml @@ -4,5 +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, "dir", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["org.gradle.api.file", "DirectoryProperty", True, "file", "(String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] From 817d04c0874ac0fe06ac7fdd8ca7d29aa27c1b5d Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 30 Jan 2024 14:27:13 +0100 Subject: [PATCH 017/113] C#: Add more delegate flow tests --- .../dataflow/delegates/DelegateFlow.cs | 26 +++++++++++++++++-- .../dataflow/delegates/DelegateFlow.expected | 8 +++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.cs b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.cs index 15d628aea9a..1f9c48445dd 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 @@ class DelegateFlow 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 610ff1f06d9..3197db2cfe7 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected @@ -22,8 +22,8 @@ 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 | (...) => ... | 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 +49,7 @@ 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 | (...) => ... | | 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 | (...) => ... | From bfe4a4bf0b4017e094505130bda0183741e4e0d0 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 31 Jan 2024 11:29:54 +0100 Subject: [PATCH 018/113] C#: Additional tracking of lambdas through fields and properties --- .../DataFlowConsistency.ql | 11 +-- .../dataflow/internal/DataFlowDispatch.qll | 24 ++++-- .../dataflow/internal/DataFlowPrivate.qll | 85 +++++++++++++++++-- .../dataflow/delegates/DelegateFlow.expected | 8 ++ 4 files changed, 105 insertions(+), 23 deletions(-) diff --git a/csharp/ql/consistency-queries/DataFlowConsistency.ql b/csharp/ql/consistency-queries/DataFlowConsistency.ql index e1eb8b15a56..0f9dead6b77 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/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index e9782315711..55ad89e03d2 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -98,7 +98,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 +248,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 6a1c3c589d3..282465a0a9d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -69,6 +69,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 +87,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() { @@ -909,7 +922,8 @@ 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() } /** * Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local @@ -1019,6 +1033,8 @@ predicate nodeIsHidden(Node n) { n instanceof ParamsArgumentNode or n.asExpr() = any(WithExpr we).getInitializer() + or + n instanceof FlowInsensitiveFieldNode } /** A CIL SSA definition, viewed as a node in a data flow graph. */ @@ -1344,6 +1360,8 @@ private module ArgumentNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = cfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(cfn.getAstNode()) } override Type getTypeImpl() { result = cfn.getAstNode().(Expr).getType() } @@ -1383,6 +1401,8 @@ private module ArgumentNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = callCfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(callCfn.getAstNode()) } override Type getTypeImpl() { result = this.getParameter().getType() } @@ -1782,6 +1802,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* @@ -1790,13 +1834,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(), @@ -2248,6 +2295,8 @@ module PostUpdateNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = cfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(oc) } override DotNet::Type getTypeImpl() { result = oc.getType() } @@ -2279,6 +2328,8 @@ module PostUpdateNodes { override DataFlowCallable getEnclosingCallableImpl() { result.asCallable() = cfn.getEnclosingCallable() + or + result = getEnclosingStaticFieldOrProperty(cfn.getAstNode()) } override Type getTypeImpl() { result = cfn.getAstNode().(Expr).getType() } @@ -2427,6 +2478,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() + ) } /** diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected index 3197db2cfe7..c16036e751c 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected @@ -24,6 +24,10 @@ delegateCall | 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: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 | @@ -51,5 +55,9 @@ viableLambda | 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: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 | (...) => ... | From 9098428c2ac5cf83eb0e8e4a7ba13698bbd187aa Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 1 Feb 2024 14:28:14 +0000 Subject: [PATCH 019/113] Add security severity --- .../Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql index 22f4582fec3..57f256bb40d 100644 --- a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql @@ -3,7 +3,7 @@ * @description Local authentication that does not make use of a `CryptoObject` can be bypassed. * @kind problem * @problem.severity warning - * @security-severity ...TODO + * @security-severity 9.3 * @precision high * @id java/android/insecure-local-authentication * @tags security From 5d1edd45c5191086dd3c6190ae28a3518dd0ea90 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 1 Feb 2024 16:56:20 +0000 Subject: [PATCH 020/113] Add unit tests --- .../CWE-287/InsecureLocalAuth.expected | 2 + .../security/CWE-287/InsecureLocalAuth.ql | 19 ++++ .../query-tests/security/CWE-287/Test.java | 94 +++++++++++++++++++ .../test/query-tests/security/CWE-287/options | 1 + 4 files changed, 116 insertions(+) create mode 100644 java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.expected create mode 100644 java/ql/test/query-tests/security/CWE-287/InsecureLocalAuth.ql create mode 100644 java/ql/test/query-tests/security/CWE-287/Test.java create mode 100644 java/ql/test/query-tests/security/CWE-287/options 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 00000000000..8ec8033d086 --- /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 00000000000..36becaff755 --- /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 00000000000..e4317efd615 --- /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/options b/java/ql/test/query-tests/security/CWE-287/options new file mode 100644 index 00000000000..dacd3cb21df --- /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 From 88c2ccbecf3371fa1ff04bb9b747e514f40cc21b Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Thu, 1 Feb 2024 16:59:50 +0000 Subject: [PATCH 021/113] Generate stubs --- .../hardware/biometrics/BiometricPrompt.java | 69 +++++++++++++++++++ .../fingerprint/FingerprintManager.java | 55 +++++++++++++++ .../android/os/Bundle.java | 4 +- .../android/os/Parcel.java | 22 +++--- .../security/identity/IdentityCredential.java | 32 +++++++++ .../identity/PersonalizationData.java | 9 +++ .../android/security/identity/ResultData.java | 24 +++++++ .../android/util/ArrayMap.java | 10 +-- 8 files changed, 207 insertions(+), 18 deletions(-) create mode 100644 java/ql/test/stubs/google-android-9.0.0/android/hardware/biometrics/BiometricPrompt.java create mode 100644 java/ql/test/stubs/google-android-9.0.0/android/hardware/fingerprint/FingerprintManager.java create mode 100644 java/ql/test/stubs/google-android-9.0.0/android/security/identity/IdentityCredential.java create mode 100644 java/ql/test/stubs/google-android-9.0.0/android/security/identity/PersonalizationData.java create mode 100644 java/ql/test/stubs/google-android-9.0.0/android/security/identity/ResultData.java 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 00000000000..7bc467401bd --- /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 00000000000..235941fb9f4 --- /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 4beb1cf5dee..d1154c915ce 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 @@ import java.util.ArrayList; 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 ef6dcdeb085..9bf19e32269 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 00000000000..12dee91453c --- /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 00000000000..eecfc828c56 --- /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/ResultData.java b/java/ql/test/stubs/google-android-9.0.0/android/security/identity/ResultData.java new file mode 100644 index 00000000000..e8ed2f13012 --- /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 55c7adebea7..c0b6016c764 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.Collection; 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 class ArrayMap implements Map 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){} } From 2a00375bb7fdc980b82cb6a03a7273f0998949a3 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 2 Feb 2024 14:34:43 +0000 Subject: [PATCH 022/113] Add documentation --- .../AndroidInsecureLocalAuthentication.qhelp | 42 ++++++++++++++++ ...AndroidInsecureLocalAuthenticationBad.java | 11 +++++ ...ndroidInsecureLocalAuthenticationGood.java | 48 +++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp create mode 100644 java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationBad.java create mode 100644 java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java 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 00000000000..15e6783d2dc --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp @@ -0,0 +1,42 @@ + + + + +

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

+
+ + +

+Generate a secure key in the Android KeyStore and ensure that the onAuthenticaionSuccess 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 he following (good) case, a secret key is generated in the Android KeyStore that is required for the application to grant access.

+ +
+ + +
  • +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/AndroidInsecureLocalAuthenticationBad.java b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationBad.java new file mode 100644 index 00000000000..464153ccbee --- /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 00000000000..0f41b31a292 --- /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() { + 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 From 514a92d5bd1e24e4b7367d64430762ffd1ffbe7f Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 1 Nov 2023 22:33:21 +0000 Subject: [PATCH 023/113] Tree-sitter extractors: use fresh IDs for locations Since locations for any given source file are never referenced in any TRAP files besides the one for that particular source file, it's not necessary to use global IDs. Using fresh IDs will reduce the size of the ID pool (both on disk and in memory) and the speed of multi-threaded TRAP import. The one exception is the empty location, which still uses a global ID. --- .../src/extractor/mod.rs | 128 ++++++++++++------ shared/tree-sitter-extractor/src/trap.rs | 22 +++ 2 files changed, 105 insertions(+), 45 deletions(-) diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 913e637d92b..0d493ebd9e1 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 135e336338f..64c06539ecb 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)) From 71852868acda81fb9e321924a0d7d7a2880b4304 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 2 Feb 2024 17:19:20 +0000 Subject: [PATCH 024/113] Add case for androidx.biometric api --- .../java/security/AndroidLocalAuthQuery.qll | 2 + .../query-tests/security/CWE-287/Test2.java | 47 +++++++++++ .../identity/PresentationSession.java | 9 +++ .../androidx/biometric/BiometricPrompt.java | 79 +++++++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 java/ql/test/query-tests/security/CWE-287/Test2.java create mode 100644 java/ql/test/stubs/google-android-9.0.0/android/security/identity/PresentationSession.java create mode 100644 java/ql/test/stubs/google-android-9.0.0/androidx/biometric/BiometricPrompt.java diff --git a/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll index 8c052fc58ee..46b391559f1 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll @@ -9,6 +9,8 @@ private class AuthenticationCallbackClass extends Class { "FingerprintManager$AuthenticationCallback") or this.hasQualifiedName("android.hardware.biometrics", "BiometricPrompt$AuthenticationCallback") + or + this.hasQualifiedName("androidx.biometric", "BiometricPrompt$AuthenticationCallback") } } 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 00000000000..10308a2f2d3 --- /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/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 00000000000..9227f8fe5d3 --- /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/androidx/biometric/BiometricPrompt.java b/java/ql/test/stubs/google-android-9.0.0/androidx/biometric/BiometricPrompt.java new file mode 100644 index 00000000000..16bf2e661ee --- /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; } + } +} From 5022adba562db5543b5d8de8fea512e7d2020029 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 2 Feb 2024 17:26:00 +0000 Subject: [PATCH 025/113] Fixes to qhelp example --- .../CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java index 0f41b31a292..2ffcbbb6e26 100644 --- a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthenticationGood.java @@ -26,16 +26,16 @@ private Cipher getCipher() { + KeyProperties.ENCRYPTION_PADDING_PKCS7); } -public prompt() { +public prompt(byte[] encryptedData) { Cipher cipher = getCipher(); SecretKey secretKey = getSecretKey(); cipher.init(Cipher.DECRYPT_MODE, secretKey); biometricPrompt.authenticate( - new BiometricPrompt.CryptoObject(cipher); + new BiometricPrompt.CryptoObject(cipher), cancellationSignal, executor, - new BiometricPrompt.AuthenticationCallback { + new BiometricPrompt.AuthenticationCallback() { @Override // GOOD: This authentication callback uses the result to decrypt some data. public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { From 596f48ca951f54c5e3eda6b7793450e04dc2cf98 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 2 Feb 2024 17:35:07 +0000 Subject: [PATCH 026/113] Add change note --- .../change-notes/2024-02-02-android-insecure-local-auth.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 java/ql/src/change-notes/2024-02-02-android-insecure-local-auth.md 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 00000000000..dc7ebcaade3 --- /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 From b8dc6338646935c32f6a69aeb573ccce0acb8b9b Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Mon, 5 Feb 2024 11:16:16 +0100 Subject: [PATCH 027/113] add cs/path-injection as markdown to make nicer diffs --- .../Security Features/CWE-022/TaintedPath.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 csharp/ql/src/Security Features/CWE-022/TaintedPath.md diff --git a/csharp/ql/src/Security Features/CWE-022/TaintedPath.md b/csharp/ql/src/Security Features/CWE-022/TaintedPath.md new file mode 100644 index 00000000000..ddd80d92051 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-022/TaintedPath.md @@ -0,0 +1,50 @@ +# Uncontrolled data used in path expression +Accessing paths controlled by users can allow an attacker to access unexpected resources. This 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. + + +## Recommendation +Validate user input before using it to construct a file path. Ideally, follow these rules: + +* 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`. + +## Example +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. + + +```csharp +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)); + } +} + +``` + +## References +* OWASP: [Path Traversal](https://owasp.org/www-community/attacks/Path_Traversal). +* Common Weakness Enumeration: [CWE-22](https://cwe.mitre.org/data/definitions/22.html). +* Common Weakness Enumeration: [CWE-23](https://cwe.mitre.org/data/definitions/23.html). +* Common Weakness Enumeration: [CWE-36](https://cwe.mitre.org/data/definitions/36.html). +* Common Weakness Enumeration: [CWE-73](https://cwe.mitre.org/data/definitions/73.html). +* Common Weakness Enumeration: [CWE-99](https://cwe.mitre.org/data/definitions/99.html). From 9dfac3a4ccf14fb304ca8b13243a9dc8dec07174 Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Mon, 5 Feb 2024 11:20:24 +0100 Subject: [PATCH 028/113] move qhelp samples to an `examples` folder --- csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp | 2 +- csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp | 4 ++-- .../Security Features/CWE-022/{ => examples}/TaintedPath.cs | 0 .../Security Features/CWE-022/{ => examples}/ZipSlipBad.cs | 0 .../Security Features/CWE-022/{ => examples}/ZipSlipGood.cs | 0 5 files changed, 3 insertions(+), 3 deletions(-) rename csharp/ql/src/Security Features/CWE-022/{ => examples}/TaintedPath.cs (100%) rename csharp/ql/src/Security Features/CWE-022/{ => examples}/ZipSlipBad.cs (100%) rename csharp/ql/src/Security Features/CWE-022/{ => examples}/ZipSlipGood.cs (100%) diff --git a/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp b/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp index e838d8c56a4..3ff4e5447cd 100644 --- a/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp +++ b/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp @@ -34,7 +34,7 @@ enter a filename which contains special characters. For example, the string "../ 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.

    - + diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp b/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp index a1f39d27b8c..d75ababa6a8 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/TaintedPath.cs b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs similarity index 100% rename from csharp/ql/src/Security Features/CWE-022/TaintedPath.cs rename to csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs 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 From 8160291be1e4ca30795b1a61f3e22e3b49cbe370 Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Mon, 5 Feb 2024 13:08:21 +0100 Subject: [PATCH 029/113] copy (and adjust) the path-injection QHelp from Java to C# --- .../CWE-022/TaintedPath.qhelp | 53 +++++++++++++------ .../CWE-022/examples/TaintedPath.cs | 11 +--- .../CWE-022/examples/TaintedPathGoodFolder.cs | 24 +++++++++ .../examples/TaintedPathGoodNormalize.cs | 20 +++++++ 4 files changed, 82 insertions(+), 26 deletions(-) create mode 100644 csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs create mode 100644 csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodNormalize.cs diff --git a/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp b/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp index 3ff4e5447cd..bf3132a9719 100644 --- a/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp +++ b/csharp/ql/src/Security Features/CWE-022/TaintedPath.qhelp @@ -7,35 +7,54 @@ 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/examples/TaintedPath.cs b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs index ac2add1b9b0..c185267a038 100644 --- a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs @@ -6,15 +6,8 @@ public class TaintedPathHandler : IHttpHandler { public void ProcessRequest(HttpContext ctx) { - String path = ctx.Request.QueryString["path"]; + String filename = 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)); + 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 00000000000..33443abb717 --- /dev/null +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs @@ -0,0 +1,24 @@ +using System; +using System.IO; +using System.Web; + +public class TaintedPathHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext ctx) + { + String filename = ctx.Request.QueryString["path"]; + + 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 00000000000..939ceffff23 --- /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)); + } +} From a240618ae490a88225b190f1f728ff476a614603 Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Mon, 5 Feb 2024 13:09:02 +0100 Subject: [PATCH 030/113] generate the new rendered markdown --- .../Security Features/CWE-022/TaintedPath.md | 82 +++++++++++++++---- 1 file changed, 67 insertions(+), 15 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-022/TaintedPath.md b/csharp/ql/src/Security Features/CWE-022/TaintedPath.md index ddd80d92051..c6204c2914e 100644 --- a/csharp/ql/src/Security Features/CWE-022/TaintedPath.md +++ b/csharp/ql/src/Security Features/CWE-022/TaintedPath.md @@ -1,20 +1,23 @@ # Uncontrolled data used in path expression Accessing paths controlled by users can allow an attacker to access unexpected resources. This 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. ## Recommendation -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. + +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. -* 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`. ## Example -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". ```csharp @@ -26,16 +29,65 @@ public class TaintedPathHandler : IHttpHandler { public void ProcessRequest(HttpContext ctx) { - String path = ctx.Request.QueryString["path"]; + String filename = ctx.Request.QueryString["path"]; // BAD: This could read any file on the filesystem. - ctx.Response.Write(File.ReadAllText(path)); + ctx.Response.Write(File.ReadAllText(filename)); + } +} - // BAD: This could still read any file on the filesystem. - ctx.Response.Write(File.ReadAllText("/home/user/" + path)); +``` +If the input should only be a file name, you can check that it doesn't contain any path separators or ".." sequences. - // 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)); + +```csharp +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)); + } +} + +``` +If the input should be within a specific directory, you can check that the resolved path is still contained within that directory. + + +```csharp +using System; +using System.IO; +using System.Web; + +public class TaintedPathHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext ctx) + { + String filename = ctx.Request.QueryString["path"]; + + 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)); } } From a6b094cf533075e48aed6107ef7c26600751826e Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Mon, 5 Feb 2024 13:54:13 +0100 Subject: [PATCH 031/113] delete the rendered markdown again --- .../Security Features/CWE-022/TaintedPath.md | 102 ------------------ 1 file changed, 102 deletions(-) delete mode 100644 csharp/ql/src/Security Features/CWE-022/TaintedPath.md diff --git a/csharp/ql/src/Security Features/CWE-022/TaintedPath.md b/csharp/ql/src/Security Features/CWE-022/TaintedPath.md deleted file mode 100644 index c6204c2914e..00000000000 --- a/csharp/ql/src/Security Features/CWE-022/TaintedPath.md +++ /dev/null @@ -1,102 +0,0 @@ -# Uncontrolled data used in path expression -Accessing paths controlled by users can allow an attacker to access unexpected resources. This 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 be absolute paths, or may contain unexpected special characters such as "..". Such a path could point anywhere on the file system. - - -## Recommendation -Validate user input before using it to construct a file path. - -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. - - -## Example -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". - - -```csharp -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)); - } -} - -``` -If the input should only be a file name, you can check that it doesn't contain any path separators or ".." sequences. - - -```csharp -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)); - } -} - -``` -If the input should be within a specific directory, you can check that the resolved path is still contained within that directory. - - -```csharp -using System; -using System.IO; -using System.Web; - -public class TaintedPathHandler : IHttpHandler -{ - public void ProcessRequest(HttpContext ctx) - { - String filename = ctx.Request.QueryString["path"]; - - 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)); - } -} - -``` - -## References -* OWASP: [Path Traversal](https://owasp.org/www-community/attacks/Path_Traversal). -* Common Weakness Enumeration: [CWE-22](https://cwe.mitre.org/data/definitions/22.html). -* Common Weakness Enumeration: [CWE-23](https://cwe.mitre.org/data/definitions/23.html). -* Common Weakness Enumeration: [CWE-36](https://cwe.mitre.org/data/definitions/36.html). -* Common Weakness Enumeration: [CWE-73](https://cwe.mitre.org/data/definitions/73.html). -* Common Weakness Enumeration: [CWE-99](https://cwe.mitre.org/data/definitions/99.html). From f792b5842125560303ecc0019017262e0b3e3400 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 5 Feb 2024 16:45:59 +0000 Subject: [PATCH 032/113] Ruby: Recognise more ActiveRecord connections --- .../codeql/ruby/frameworks/ActiveRecord.qll | 6 +- .../active_record/ActiveRecord.expected | 227 +++++++++--------- .../frameworks/active_record/ActiveRecord.rb | 4 + 3 files changed, 125 insertions(+), 112 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll index 843eb4f8d6e..4596c432070 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/frameworks/active_record/ActiveRecord.expected b/ruby/ql/test/library-tests/frameworks/active_record/ActiveRecord.expected index d7195d11ad7..b273bddbee6 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 8e5961c8771..dca8f3c43d3 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 @@ class User < ApplicationRecord 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 From c1b35fbf475dbb89785ca6041492cf6eb1339981 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 5 Feb 2024 17:58:57 +0000 Subject: [PATCH 033/113] Release preparation for version 2.16.2 --- cpp/ql/lib/CHANGELOG.md | 7 +++++++ .../lib/change-notes/2024-01-30-throwing-model.md | 4 ---- .../0.12.5.md} | 8 +++++--- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 11 +++++++++++ .../change-notes/2024-01-19-extracted-files.md | 4 ---- ...e_positive_incorrect_string_type_conversion.md | 4 ---- .../2024-01-29-incorrectly-checked-scanf-2.md | 4 ---- .../2024-01-29-incorrectly-checked-scanf.md | 4 ---- ...24-01-29-uninitialized-local-false-positive.md | 5 ----- cpp/ql/src/change-notes/released/0.9.4.md | 10 ++++++++++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../Solorigate/lib/change-notes/released/1.7.8.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../Solorigate/src/change-notes/released/1.7.8.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 11 +++++++++++ .../2024-01-25-extractor-option-logging.md | 6 ------ .../2024-01-26-collection-expression.md | 4 ---- .../2024-01-31-compilation-expanded-args.md | 5 ----- csharp/ql/lib/change-notes/released/0.8.8.md | 10 ++++++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../0.8.8.md} | 7 ++++--- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.7.md | 3 +++ go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ++++ go/ql/lib/change-notes/released/0.7.8.md | 3 +++ go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ++++ go/ql/src/change-notes/released/0.7.8.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ .../automodel/src/change-notes/released/0.0.14.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 10 ++++++++++ java/ql/lib/change-notes/2024-01-24-new-models.md | 7 ------- .../0.8.8.md} | 11 ++++++++--- java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 15 +++++++++++---- ...-01-15-android-sensitive-notification-query.md | 4 ---- ...24-01-29-android-sensitive-text-field-query.md | 4 ---- java/ql/src/change-notes/released/0.8.8.md | 6 ++++++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ javascript/ql/lib/change-notes/released/0.8.8.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ javascript/ql/src/change-notes/released/0.8.8.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ misc/suite-helpers/change-notes/released/0.7.8.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 10 ++++++++++ .../change-notes/2024-01-21-regex-ascii-flag.md | 4 ---- .../ql/lib/change-notes/2024-01-22-html-escape.md | 4 ---- python/ql/lib/change-notes/released/0.11.8.md | 9 +++++++++ python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ++++ python/ql/src/change-notes/released/0.9.8.md | 3 +++ python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 6 ++++++ .../0.8.8.md} | 7 ++++--- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 11 +++++++++++ .../2023-12-18-insecure-randomness-query.md | 4 ---- .../2024-01-30-unsafe-deserialization-sinks.md | 5 ----- ruby/ql/src/change-notes/released/0.8.8.md | 10 ++++++++++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ shared/controlflow/change-notes/released/0.1.8.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ shared/dataflow/change-notes/released/0.1.8.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.8.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../rangeanalysis/change-notes/released/0.0.7.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.8.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.8.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../threat-models/change-notes/released/0.0.7.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ shared/tutorial/change-notes/released/0.2.8.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../typetracking/change-notes/released/0.2.8.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.8.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.8.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.8.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 4 ++++ swift/ql/lib/change-notes/released/0.3.8.md | 3 +++ swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.8.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 148 files changed, 383 insertions(+), 154 deletions(-) delete mode 100644 cpp/ql/lib/change-notes/2024-01-30-throwing-model.md rename cpp/ql/lib/change-notes/{2024-01-30-preproc-block.md => released/0.12.5.md} (55%) delete mode 100644 cpp/ql/src/change-notes/2024-01-19-extracted-files.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md create mode 100644 cpp/ql/src/change-notes/released/0.9.4.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md delete mode 100644 csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md delete mode 100644 csharp/ql/lib/change-notes/2024-01-26-collection-expression.md delete mode 100644 csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md create mode 100644 csharp/ql/lib/change-notes/released/0.8.8.md rename csharp/ql/src/change-notes/{2024-01-22-url-redirect-sanitizer.md => released/0.8.8.md} (75%) create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.7.md create mode 100644 go/ql/lib/change-notes/released/0.7.8.md create mode 100644 go/ql/src/change-notes/released/0.7.8.md create mode 100644 java/ql/automodel/src/change-notes/released/0.0.14.md delete mode 100644 java/ql/lib/change-notes/2024-01-24-new-models.md rename java/ql/lib/change-notes/{2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md => released/0.8.8.md} (52%) delete mode 100644 java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md delete mode 100644 java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md create mode 100644 java/ql/src/change-notes/released/0.8.8.md create mode 100644 javascript/ql/lib/change-notes/released/0.8.8.md create mode 100644 javascript/ql/src/change-notes/released/0.8.8.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.8.md delete mode 100644 python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md delete mode 100644 python/ql/lib/change-notes/2024-01-22-html-escape.md create mode 100644 python/ql/lib/change-notes/released/0.11.8.md create mode 100644 python/ql/src/change-notes/released/0.9.8.md rename ruby/ql/lib/change-notes/{2024-01-22-erb-render-flow.md => released/0.8.8.md} (79%) delete mode 100644 ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md delete mode 100644 ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md create mode 100644 ruby/ql/src/change-notes/released/0.8.8.md create mode 100644 shared/controlflow/change-notes/released/0.1.8.md create mode 100644 shared/dataflow/change-notes/released/0.1.8.md create mode 100644 shared/mad/change-notes/released/0.2.8.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.7.md create mode 100644 shared/regex/change-notes/released/0.2.8.md create mode 100644 shared/ssa/change-notes/released/0.2.8.md create mode 100644 shared/threat-models/change-notes/released/0.0.7.md create mode 100644 shared/tutorial/change-notes/released/0.2.8.md create mode 100644 shared/typetracking/change-notes/released/0.2.8.md create mode 100644 shared/typos/change-notes/released/0.2.8.md create mode 100644 shared/util/change-notes/released/0.2.8.md create mode 100644 shared/yaml/change-notes/released/0.2.8.md create mode 100644 swift/ql/lib/change-notes/released/0.3.8.md create mode 100644 swift/ql/src/change-notes/released/0.3.8.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index dc092f2ed35..b552a329250 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.12.5 + +### New Features + +* Added the `PreprocBlock.qll` library to this repository. This library offers a view of `#if`, `#elif`, `#else` and similar directives as a tree with navigable parent-child relationships. +* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. + ## 0.12.4 ### Minor Analysis Improvements diff --git a/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md b/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md deleted file mode 100644 index 591cc8cc771..00000000000 --- a/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-01-30-preproc-block.md b/cpp/ql/lib/change-notes/released/0.12.5.md similarity index 55% rename from cpp/ql/lib/change-notes/2024-01-30-preproc-block.md rename to cpp/ql/lib/change-notes/released/0.12.5.md index 6995ec954ff..1ae4668a5c9 100644 --- a/cpp/ql/lib/change-notes/2024-01-30-preproc-block.md +++ b/cpp/ql/lib/change-notes/released/0.12.5.md @@ -1,4 +1,6 @@ ---- -category: feature ---- +## 0.12.5 + +### New Features + * Added the `PreprocBlock.qll` library to this repository. This library offers a view of `#if`, `#elif`, `#else` and similar directives as a tree with navigable parent-child relationships. +* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index b458bb47c53..79f80ae516c 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.4 +lastReleaseVersion: 0.12.5 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index f0479b167c6..b1b4172e977 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.5-dev +version: 0.12.5 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 0e67defb949..68bcdbc5b07 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.9.4 + +### Minor Analysis Improvements + +* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. +* ``` +* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. + ## 0.9.3 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/2024-01-19-extracted-files.md b/cpp/ql/src/change-notes/2024-01-19-extracted-files.md deleted file mode 100644 index df6de1576ac..00000000000 --- a/cpp/ql/src/change-notes/2024-01-19-extracted-files.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. diff --git a/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md b/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md deleted file mode 100644 index 8f081c746f1..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md deleted file mode 100644 index cc361145db9..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. diff --git a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md deleted file mode 100644 index 7085b9ce0a8..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. diff --git a/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md b/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md deleted file mode 100644 index 0d07482b755..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* ``` \ No newline at end of file diff --git a/cpp/ql/src/change-notes/released/0.9.4.md b/cpp/ql/src/change-notes/released/0.9.4.md new file mode 100644 index 00000000000..6525a90f9bb --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.9.4.md @@ -0,0 +1,10 @@ +## 0.9.4 + +### Minor Analysis Improvements + +* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. +* ``` +* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 7af7247cbb0..694907ca221 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.3 +lastReleaseVersion: 0.9.4 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index a04a6468617..0da41987b3e 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.4-dev +version: 0.9.4 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 8afcdeb67f3..1e9fa50c21f 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.8 + +No user-facing changes. + ## 1.7.7 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md new file mode 100644 index 00000000000..89c236d93c5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md @@ -0,0 +1,3 @@ +## 1.7.8 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index df4010bd267..e003efd5127 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.7 +lastReleaseVersion: 1.7.8 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 56cadaf8534..77b1c8b5154 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.8-dev +version: 1.7.8 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 8afcdeb67f3..1e9fa50c21f 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.8 + +No user-facing changes. + ## 1.7.7 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md new file mode 100644 index 00000000000..89c236d93c5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md @@ -0,0 +1,3 @@ +## 1.7.8 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index df4010bd267..e003efd5127 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.7 +lastReleaseVersion: 1.7.8 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 0b783c75d5a..9851e27c691 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.8-dev +version: 1.7.8 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 0b168b22df6..196cd5ecc92 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments +are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. +* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. +* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The +option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the +corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md b/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md deleted file mode 100644 index 71cb3202675..00000000000 --- a/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: minorAnalysis ---- -* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The -option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the -corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md b/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md deleted file mode 100644 index 10a958dcf47..00000000000 --- a/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. diff --git a/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md b/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md deleted file mode 100644 index 8767c0d1d65..00000000000 --- a/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments -are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. diff --git a/csharp/ql/lib/change-notes/released/0.8.8.md b/csharp/ql/lib/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..96b317ecd06 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.8.md @@ -0,0 +1,10 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments +are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. +* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. +* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The +option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the +corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 9d8db7347cb..2b137281da6 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.8-dev +version: 0.8.8 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 6572f664b0e..ac2fbfce855 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added string interpolation expressions and `string.Format` as possible sanitizers for the `cs/web/unvalidated-url-redirection` query. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md b/csharp/ql/src/change-notes/released/0.8.8.md similarity index 75% rename from csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md rename to csharp/ql/src/change-notes/released/0.8.8.md index 92a65075a65..d6f017bcf41 100644 --- a/csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md +++ b/csharp/ql/src/change-notes/released/0.8.8.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.8.8 + +### Minor Analysis Improvements + * Added string interpolation expressions and `string.Format` as possible sanitizers for the `cs/web/unvalidated-url-redirection` query. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index c3973948993..a16c72edd72 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.8-dev +version: 0.8.8 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index ad2e63eb470..8f58f5145db 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.7.md b/go/ql/consistency-queries/change-notes/released/0.0.7.md new file mode 100644 index 00000000000..84da6f18c42 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index cf398ce02aa..a2a5484910b 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.7 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 88886034408..c7522dd8e35 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.7-dev +version: 0.0.7 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index b9ff6e4e0e2..475352f1df2 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.8 + +No user-facing changes. + ## 0.7.7 ### Deprecated APIs diff --git a/go/ql/lib/change-notes/released/0.7.8.md b/go/ql/lib/change-notes/released/0.7.8.md new file mode 100644 index 00000000000..5627ed51a17 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.7.8.md @@ -0,0 +1,3 @@ +## 0.7.8 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 89cc2330c10..b6b12196b26 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.7 +lastReleaseVersion: 0.7.8 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 67c991934e0..5f317377d45 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.8-dev +version: 0.7.8 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index dafcd7aa695..66533a629f2 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.8 + +No user-facing changes. + ## 0.7.7 ### Minor Analysis Improvements diff --git a/go/ql/src/change-notes/released/0.7.8.md b/go/ql/src/change-notes/released/0.7.8.md new file mode 100644 index 00000000000..5627ed51a17 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.8.md @@ -0,0 +1,3 @@ +## 0.7.8 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 89cc2330c10..b6b12196b26 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.7 +lastReleaseVersion: 0.7.8 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index a760c342970..81654540219 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.8-dev +version: 0.7.8 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index eb9aae31d41..fa718635e0c 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.14 + +No user-facing changes. + ## 0.0.13 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.14.md b/java/ql/automodel/src/change-notes/released/0.0.14.md new file mode 100644 index 00000000000..63b4d50ca45 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.14.md @@ -0,0 +1,3 @@ +## 0.0.14 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index 044e54e4f7e..ca29e45d0a6 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.13 +lastReleaseVersion: 0.0.14 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 0845b6f1761..3334223e9e4 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.14-dev +version: 0.0.14 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 3621a766e8a..4b34106dc09 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added models for the following packages: + + * com.fasterxml.jackson.databind + * javax.servlet +* Added the `java.util.Date` and `java.util.UUID` classes to the list of types in the `SimpleTypeSanitizer` class in `semmle.code.java.security.Sanitizers`. + ## 0.8.7 ### New Features diff --git a/java/ql/lib/change-notes/2024-01-24-new-models.md b/java/ql/lib/change-notes/2024-01-24-new-models.md deleted file mode 100644 index 8646ac1f0cb..00000000000 --- a/java/ql/lib/change-notes/2024-01-24-new-models.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the following packages: - - * com.fasterxml.jackson.databind - * javax.servlet diff --git a/java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md b/java/ql/lib/change-notes/released/0.8.8.md similarity index 52% rename from java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md rename to java/ql/lib/change-notes/released/0.8.8.md index 96d6b9e0334..62186579014 100644 --- a/java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md +++ b/java/ql/lib/change-notes/released/0.8.8.md @@ -1,4 +1,9 @@ ---- -category: minorAnalysis ---- +## 0.8.8 + +### Minor Analysis Improvements + +* Added models for the following packages: + + * com.fasterxml.jackson.databind + * javax.servlet * Added the `java.util.Date` and `java.util.UUID` classes to the list of types in the `SimpleTypeSanitizer` class in `semmle.code.java.security.Sanitizers`. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 62f4a0d7e96..6e4e1269d9c 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.8-dev +version: 0.8.8 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 84096230dd1..466b98fea11 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.8.8 + +### New Queries + +* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. +* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. + ## 0.8.7 ### New Queries @@ -10,10 +17,6 @@ ## 0.8.6 -### Deprecated Queries - -* The three queries `java/insufficient-key-size`, `java/server-side-template-injection`, and `java/android/implicit-pendingintents` had accidentally general extension points allowing arbitrary string-based flow state. This has been fixed and the old extension points have been deprecated where possible, and otherwise updated. - ### New Queries * Added the `java/insecure-randomness` query to detect uses of weakly random values which an attacker may be able to predict. Also added the `crypto-parameter` sink kind for sinks which represent the parameters and keys of cryptographic operations. @@ -24,6 +27,10 @@ * The query `java/android/missing-certificate-pinning` should no longer alert about requests pointing to the local filesystem. * Removed some spurious sinks related to `com.opensymphony.xwork2.TextProvider.getText` from the query `java/ognl-injection`. +### Bug Fixes + +* The three queries `java/insufficient-key-size`, `java/server-side-template-injection`, and `java/android/implicit-pendingintents` had accidentally general extension points allowing arbitrary string-based flow state. This has been fixed and the old extension points have been deprecated where possible, and otherwise updated. + ## 0.8.5 No user-facing changes. diff --git a/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md b/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md deleted file mode 100644 index 427ebbe94ff..00000000000 --- a/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md b/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md deleted file mode 100644 index 5e5156944a7..00000000000 --- a/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/0.8.8.md b/java/ql/src/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..94f005fdca8 --- /dev/null +++ b/java/ql/src/change-notes/released/0.8.8.md @@ -0,0 +1,6 @@ +## 0.8.8 + +### New Queries + +* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. +* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 4d0d39baca3..73e8a062ffe 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.8-dev +version: 0.8.8 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 29005b5ce87..06e40ac7bd5 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.8 + +No user-facing changes. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.8.md b/javascript/ql/lib/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..14d202dac00 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.8.md @@ -0,0 +1,3 @@ +## 0.8.8 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index bd0c1a815f3..fa544548ea7 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.8-dev +version: 0.8.8 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index ba868a7d629..300da5225f9 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.8 + +No user-facing changes. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/javascript/ql/src/change-notes/released/0.8.8.md b/javascript/ql/src/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..14d202dac00 --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.8.md @@ -0,0 +1,3 @@ +## 0.8.8 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 51a22b542e0..1ebbfc58787 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.8-dev +version: 0.8.8 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 1c10493c9e7..61d4b001d25 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.8 + +No user-facing changes. + ## 0.7.7 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.8.md b/misc/suite-helpers/change-notes/released/0.7.8.md new file mode 100644 index 00000000000..5627ed51a17 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.8.md @@ -0,0 +1,3 @@ +## 0.7.8 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 89cc2330c10..b6b12196b26 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.7 +lastReleaseVersion: 0.7.8 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 82d40178d7e..4db5dfcf454 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.8-dev +version: 0.7.8 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index ca684c59320..01692622749 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.11.8 + +### Minor Analysis Improvements + +* Added `html.escape` as a sanitizer for HTML. + +### Bug Fixes + +* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. + ## 0.11.7 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md b/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md deleted file mode 100644 index 5d8741b1bd3..00000000000 --- a/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. diff --git a/python/ql/lib/change-notes/2024-01-22-html-escape.md b/python/ql/lib/change-notes/2024-01-22-html-escape.md deleted file mode 100644 index 0ae31aee545..00000000000 --- a/python/ql/lib/change-notes/2024-01-22-html-escape.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added `html.escape` as a sanitizer for HTML. diff --git a/python/ql/lib/change-notes/released/0.11.8.md b/python/ql/lib/change-notes/released/0.11.8.md new file mode 100644 index 00000000000..d61a4451868 --- /dev/null +++ b/python/ql/lib/change-notes/released/0.11.8.md @@ -0,0 +1,9 @@ +## 0.11.8 + +### Minor Analysis Improvements + +* Added `html.escape` as a sanitizer for HTML. + +### Bug Fixes + +* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 59fa16251b6..345c308d402 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.7 +lastReleaseVersion: 0.11.8 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 23bff260f7a..a2c343cca3f 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.8-dev +version: 0.11.8 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index b42dcfd8b31..17931ead8b1 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.8 + +No user-facing changes. + ## 0.9.7 ### Minor Analysis Improvements diff --git a/python/ql/src/change-notes/released/0.9.8.md b/python/ql/src/change-notes/released/0.9.8.md new file mode 100644 index 00000000000..d1ca1c4d647 --- /dev/null +++ b/python/ql/src/change-notes/released/0.9.8.md @@ -0,0 +1,3 @@ +## 0.9.8 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 0921a438254..9ca6c6f2678 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.7 +lastReleaseVersion: 0.9.8 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 5de71eb6e3a..538e5ad799c 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.8-dev +version: 0.9.8 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index e9e4507d8df..8a9e4e6c8b7 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Flow is now tracked through Rails `render` calls, when the argument is a `ViewComponent`. In this case, data flow is tracked into the accompanying `.html.erb` file. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md b/ruby/ql/lib/change-notes/released/0.8.8.md similarity index 79% rename from ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md rename to ruby/ql/lib/change-notes/released/0.8.8.md index f9e68ef580e..dc4b3dd43e3 100644 --- a/ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md +++ b/ruby/ql/lib/change-notes/released/0.8.8.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.8.8 + +### Minor Analysis Improvements + * Flow is now tracked through Rails `render` calls, when the argument is a `ViewComponent`. In this case, data flow is tracked into the accompanying `.html.erb` file. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 8179ac53996..7eb6222e101 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.8-dev +version: 0.8.8 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 05a89118b05..9eff67dab9e 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.8 + +### New Queries + +* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. + +### Minor Analysis Improvements + +* Added new unsafe deserialization sinks for the ox gem. +* Added an additional unsafe deserialization sink for the oj gem. + ## 0.8.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md b/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md deleted file mode 100644 index a4b3cd5a1f5..00000000000 --- a/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md b/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md deleted file mode 100644 index 3ba080e91ab..00000000000 --- a/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Added new unsafe deserialization sinks for the ox gem. -* Added an additional unsafe deserialization sink for the oj gem. diff --git a/ruby/ql/src/change-notes/released/0.8.8.md b/ruby/ql/src/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..b8aaed87425 --- /dev/null +++ b/ruby/ql/src/change-notes/released/0.8.8.md @@ -0,0 +1,10 @@ +## 0.8.8 + +### New Queries + +* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. + +### Minor Analysis Improvements + +* Added new unsafe deserialization sinks for the ox gem. +* Added an additional unsafe deserialization sink for the oj gem. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 6891e0227d3..7c1995c00e5 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.8-dev +version: 0.8.8 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 6635db28abc..d72921d34c1 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.8 + +No user-facing changes. + ## 0.1.7 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.8.md b/shared/controlflow/change-notes/released/0.1.8.md new file mode 100644 index 00000000000..5b20b52baf1 --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.8.md @@ -0,0 +1,3 @@ +## 0.1.8 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 949d4c64c66..3136ea4a1cc 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.7 +lastReleaseVersion: 0.1.8 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index c6c4fb5f728..79d4a386cf1 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.8-dev +version: 0.1.8 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index c537cb3bb8e..e9b6c3bc904 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.8 + +No user-facing changes. + ## 0.1.7 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/0.1.8.md b/shared/dataflow/change-notes/released/0.1.8.md new file mode 100644 index 00000000000..5b20b52baf1 --- /dev/null +++ b/shared/dataflow/change-notes/released/0.1.8.md @@ -0,0 +1,3 @@ +## 0.1.8 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 949d4c64c66..3136ea4a1cc 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.7 +lastReleaseVersion: 0.1.8 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 91d1454351c..ffb4d0754be 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.1.8-dev +version: 0.1.8 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 438ce8241a6..35042f79b69 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.8.md b/shared/mad/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/mad/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 31a8e8b7534..c4eade3b256 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 6f334d57356..9ad1339683f 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.7.md b/shared/rangeanalysis/change-notes/released/0.0.7.md new file mode 100644 index 00000000000..84da6f18c42 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index cf398ce02aa..a2a5484910b 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.7 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 6317ae4cac4..faa059f069a 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.7-dev +version: 0.0.7 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 267288c38df..bf0aa553157 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.8.md b/shared/regex/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/regex/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index c75c3ca7b2d..57aa69e9629 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 8a920eb7bed..7c9b57d2b8e 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 ### Minor Analysis Improvements diff --git a/shared/ssa/change-notes/released/0.2.8.md b/shared/ssa/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 92717e37ccb..f47e195b548 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index ad2e63eb470..8f58f5145db 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.7.md b/shared/threat-models/change-notes/released/0.0.7.md new file mode 100644 index 00000000000..84da6f18c42 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index cf398ce02aa..a2a5484910b 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.7 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 4fd423016e2..b056dd0d720 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.7-dev +version: 0.0.7 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index d89b3171dc6..bc33883a950 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.8.md b/shared/tutorial/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 573d2d5e5bd..23525cbfc60 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index b47b17710e8..4c21bc408be 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.8.md b/shared/typetracking/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index a35e17dee12..09757c9de82 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 101d57dbad8..2b0bb7d2f75 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.8.md b/shared/typos/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/typos/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index bc2565304e4..4466e61ee0b 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index edfa06a5da2..273afd4129b 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.8.md b/shared/util/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/util/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index cddb6cc42f1..ae11a5bf58b 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index c5b3ec6b30e..e2991032640 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.8.md b/shared/yaml/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 2680ca9cbb9..4d656f79862 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index f06c4195a35..b69d9b9e9a3 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.8 + +No user-facing changes. + ## 0.3.7 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/0.3.8.md b/swift/ql/lib/change-notes/released/0.3.8.md new file mode 100644 index 00000000000..7e9035d11c1 --- /dev/null +++ b/swift/ql/lib/change-notes/released/0.3.8.md @@ -0,0 +1,3 @@ +## 0.3.8 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 939934ffd00..4aa0b63b207 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.7 +lastReleaseVersion: 0.3.8 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index bb5078ca42b..8916abe3bec 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.8-dev +version: 0.3.8 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index ff380eb0b97..7fe6e54b241 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.8 + +No user-facing changes. + ## 0.3.7 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.8.md b/swift/ql/src/change-notes/released/0.3.8.md new file mode 100644 index 00000000000..7e9035d11c1 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.8.md @@ -0,0 +1,3 @@ +## 0.3.8 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 939934ffd00..4aa0b63b207 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.7 +lastReleaseVersion: 0.3.8 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index e61def6dd27..4a8d3d68e74 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.8-dev +version: 0.3.8 groups: - swift - queries From 44fe34a37d32c1eb9403cb09c151bb9bcd3aec1b Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Tue, 6 Feb 2024 09:20:27 +0100 Subject: [PATCH 034/113] use the correct string type in the tainted-path examples --- csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs | 2 +- .../Security Features/CWE-022/examples/TaintedPathGoodFolder.cs | 2 +- .../CWE-022/examples/TaintedPathGoodNormalize.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs index c185267a038..4539aed8b88 100644 --- a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPath.cs @@ -6,7 +6,7 @@ public class TaintedPathHandler : IHttpHandler { public void ProcessRequest(HttpContext ctx) { - String filename = ctx.Request.QueryString["path"]; + 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 index 33443abb717..6a3991ac7ad 100644 --- a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs @@ -6,7 +6,7 @@ public class TaintedPathHandler : IHttpHandler { public void ProcessRequest(HttpContext ctx) { - String filename = ctx.Request.QueryString["path"]; + string filename = ctx.Request.QueryString["path"]; string publicFolder = Path.GetFullPath("/home/" + user + "/public"); string filePath = Path.GetFullPath(Path.Combine(publicFolder, 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 index 939ceffff23..0e31e8b68c9 100644 --- a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodNormalize.cs +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodNormalize.cs @@ -6,7 +6,7 @@ public class TaintedPathHandler : IHttpHandler { public void ProcessRequest(HttpContext ctx) { - String filename = ctx.Request.QueryString["path"]; + 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("\\")) { From 4e176236e77b1fa4fd19d742cde7567e3bb2037e Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Tue, 6 Feb 2024 09:21:35 +0100 Subject: [PATCH 035/113] add a definition of user --- .../Security Features/CWE-022/examples/TaintedPathGoodFolder.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs index 6a3991ac7ad..19af394b1c7 100644 --- a/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs +++ b/csharp/ql/src/Security Features/CWE-022/examples/TaintedPathGoodFolder.cs @@ -8,6 +8,7 @@ public class TaintedPathHandler : IHttpHandler { 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)); From 94b7bda3dcbec3beec45d8dc7ef4eb7834fbb50d Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Tue, 6 Feb 2024 09:36:30 +0100 Subject: [PATCH 036/113] exclude tagged template literals from `js/superfluous-trailing-arguments` --- .../ql/src/LanguageFeatures/SpuriousArguments.ql | 3 ++- .../LanguageFeatures/SpuriousArguments/tst.js | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql index de8f248d2d4..fd3914c9023 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/test/query-tests/LanguageFeatures/SpuriousArguments/tst.js b/javascript/ql/test/query-tests/LanguageFeatures/SpuriousArguments/tst.js index 13877ff1dda..1caa88564a1 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}`; +} From 6c1e3b1ba60aef87f7fdabc2b1e1586989d0a4e8 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 6 Feb 2024 11:02:15 +0000 Subject: [PATCH 037/113] Update cpp/ql/src/change-notes/released/0.9.4.md --- cpp/ql/src/change-notes/released/0.9.4.md | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/ql/src/change-notes/released/0.9.4.md b/cpp/ql/src/change-notes/released/0.9.4.md index 6525a90f9bb..bc6e71d7054 100644 --- a/cpp/ql/src/change-notes/released/0.9.4.md +++ b/cpp/ql/src/change-notes/released/0.9.4.md @@ -6,5 +6,4 @@ * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. * The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* ``` * The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. From 33cefabe2771d9b28b42a757698a1f18665d140b Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 6 Feb 2024 11:05:22 +0000 Subject: [PATCH 038/113] Update cpp/ql/src/CHANGELOG.md --- cpp/ql/src/CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 68bcdbc5b07..44d00c1d8e4 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -6,7 +6,6 @@ * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. * The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* ``` * The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. ## 0.9.3 From 705a37706019c2ba531aa613d34ce42757eacd55 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Mon, 5 Feb 2024 19:52:30 +0000 Subject: [PATCH 039/113] Address review comments. --- java/ql/lib/change-notes/2024-01-31-new-models.md | 3 --- java/ql/lib/ext/android.app.model.yml | 1 - java/ql/lib/ext/java.net.model.yml | 1 - java/ql/lib/ext/java.nio.file.model.yml | 1 - java/ql/lib/ext/javax.xml.parsers.model.yml | 6 ------ java/ql/lib/ext/org.apache.http.impl.client.model.yml | 1 - 6 files changed, 13 deletions(-) delete mode 100644 java/ql/lib/ext/javax.xml.parsers.model.yml 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 index 195c1dd9954..4fbc1b59571 100644 --- a/java/ql/lib/change-notes/2024-01-31-new-models.md +++ b/java/ql/lib/change-notes/2024-01-31-new-models.md @@ -3,7 +3,6 @@ category: minorAnalysis --- * Added models for the following packages: - * android.app * java.io * java.lang * java.net @@ -11,11 +10,9 @@ category: minorAnalysis * java.nio.file * java.util.zip * javax.servlet - * javax.xml.parsers * kotlin.io * org.apache.commons.io * org.apache.hadoop.fs * org.apache.hadoop.fs.s3a - * org.apache.http.impl.client * org.eclipse.jetty.client * org.gradle.api.file diff --git a/java/ql/lib/ext/android.app.model.yml b/java/ql/lib/ext/android.app.model.yml index f70ea2d238c..28b5171c0d7 100644 --- a/java/ql/lib/ext/android.app.model.yml +++ b/java/ql/lib/ext/android.app.model.yml @@ -6,7 +6,6 @@ extensions: - ["android.app", "Activity", True, "bindService", "", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "bindServiceAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "setResult", "(int,Intent)", "", "Argument[1]", "pending-intents", "manual"] - - ["android.app", "Activity", True, "startActivity", "(Intent)", "", "Argument[0]", "intent-redirection", "ai-manual"] - ["android.app", "Activity", True, "startActivityAsCaller", "", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int)", "", "Argument[0]", "intent-redirection", "manual"] - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int,Bundle)", "", "Argument[0]", "intent-redirection", "manual"] diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index a6dd7fc5ce8..afdf3320b08 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -44,7 +44,6 @@ 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,int,String,String,String)", "", "Argument[4]", "ReturnValue", "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"] diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index ea32fa75fe3..f41cbf3a3e9 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -82,7 +82,6 @@ extensions: - ["java.nio.file", "Path", False, "toFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toUri", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.nio.file", "Paths", False, "get", "(String,String[])", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Paths", True, "get", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Paths", True, "get", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] # Not supported by current lambda flow diff --git a/java/ql/lib/ext/javax.xml.parsers.model.yml b/java/ql/lib/ext/javax.xml.parsers.model.yml deleted file mode 100644 index d39a28f5942..00000000000 --- a/java/ql/lib/ext/javax.xml.parsers.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: sinkModel - data: - - ["javax.xml.parsers", "DocumentBuilder", True, "parse", "(InputSource)", "", "Argument[0]", "xxe", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.http.impl.client.model.yml b/java/ql/lib/ext/org.apache.http.impl.client.model.yml index 6f407ac3682..be517e5344f 100644 --- a/java/ql/lib/ext/org.apache.http.impl.client.model.yml +++ b/java/ql/lib/ext/org.apache.http.impl.client.model.yml @@ -3,5 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http.impl.client", "CloseableHttpClient", True, "execute", "(HttpUriRequest)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["org.apache.http.impl.client", "RequestWrapper", True, "setURI", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] From b5139078d0befed44d9147f01862bb7d8a454ab9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 6 Feb 2024 19:22:35 +0000 Subject: [PATCH 040/113] Post-release preparation for codeql-cli-2.16.2 --- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index b1b4172e977..7615b6bac2f 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.5 +version: 0.12.6-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 0da41987b3e..9151201a137 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.4 +version: 0.9.5-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 77b1c8b5154..8466748a25b 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.8 +version: 1.7.9-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 9851e27c691..ff72db938e0 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.8 +version: 1.7.9-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 2b137281da6..2e576e11b11 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.8 +version: 0.8.9-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a16c72edd72..018c3e09ae3 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.8 +version: 0.8.9-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index c7522dd8e35..651e694d964 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.7 +version: 0.0.8-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 5f317377d45..920594fe6ec 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.8 +version: 0.7.9-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 81654540219..fb73fa0eb96 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.8 +version: 0.7.9-dev groups: - go - queries diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 3334223e9e4..1f68ac3f6ba 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.14 +version: 0.0.15-dev groups: - java - automodel diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 6e4e1269d9c..cadcc1c9be6 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.8 +version: 0.8.9-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 73e8a062ffe..cad99f4d9c4 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.8 +version: 0.8.9-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index fa544548ea7..2be9a1ed2bd 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.8 +version: 0.8.9-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 1ebbfc58787..545be6f2c61 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.8 +version: 0.8.9-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 4db5dfcf454..6b20374ae33 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.8 +version: 0.7.9-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index a2c343cca3f..94f82195d5b 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.8 +version: 0.11.9-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 538e5ad799c..c5335da22f3 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.8 +version: 0.9.9-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 7eb6222e101..6c55331de90 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.8 +version: 0.8.9-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 7c1995c00e5..3637a80df7f 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.8 +version: 0.8.9-dev groups: - ruby - queries diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 79d4a386cf1..c7a88e50611 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.8 +version: 0.1.9-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index ffb4d0754be..c14ef815d58 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.1.8 +version: 0.1.9-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index c4eade3b256..0b3830f888d 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index faa059f069a..0f5272dd8cf 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.7 +version: 0.0.8-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 57aa69e9629..eca67311c9c 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index f47e195b548..b5d30380815 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index b056dd0d720..eb345ecca9a 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.7 +version: 0.0.8-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 23525cbfc60..e3080bb33b5 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 09757c9de82..adf375fd0c3 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 4466e61ee0b..927514b2fe4 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index ae11a5bf58b..72537a48107 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 4d656f79862..fae3aad1324 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 8916abe3bec..2c58adec21e 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.8 +version: 0.3.9-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 4a8d3d68e74..00ff9a6f163 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.8 +version: 0.3.9-dev groups: - swift - queries From 1484a169d743bec1bf3d08b390ddc5c1efad16c5 Mon Sep 17 00:00:00 2001 From: Jonathan Leitschuh Date: Tue, 6 Feb 2024 15:43:19 -0500 Subject: [PATCH 041/113] Reduce severity of `java/relative-path-command` Significantly reduces the severity of `java/relative-path-command` from 9.8 to 5.4 https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:L/AC:L/AT:P/PR:H/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N --- java/ql/src/Security/CWE/CWE-078/ExecRelative.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/src/Security/CWE/CWE-078/ExecRelative.ql b/java/ql/src/Security/CWE/CWE-078/ExecRelative.ql index 501826c6426..533980a3f0a 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 From b8dbb8c866a7f468681ccb6f14e6d02b0842f8ce Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Wed, 7 Feb 2024 10:26:09 +0100 Subject: [PATCH 042/113] C# Add missing Windows Forms implicit usings --- .../DependencyManager.cs | 13 +++++++ .../FileContent.cs | 30 ++++++++++++++++ .../Semmle.Extraction.Tests/FileContent.cs | 36 +++++++++++++++---- 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 13f8cc4e2a5..cd071c307bf 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -116,8 +116,16 @@ namespace Semmle.Extraction.CSharp.DependencyFetching bool.TryParse(webViewExtractionOption, out var shouldExtractWebViews) && shouldExtractWebViews) { + CompilationInfos.Add(("WebView extraction enabled", "1")); GenerateSourceFilesFromWebViews(allNonBinaryFiles); } + else + { + CompilationInfos.Add(("WebView extraction enabled", "0")); + } + + CompilationInfos.Add(("UseWPF set", fileContent.UseWpf ? "1" : "0")); + CompilationInfos.Add(("UseWindowsForms set", fileContent.UseWindowsForms ? "1" : "0")); GenerateSourceFileFromImplicitUsings(); @@ -434,6 +442,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching "Microsoft.Extensions.DependencyInjection", "Microsoft.Extensions.Hosting", "Microsoft.Extensions.Logging" }); } + if (fileContent.UseWindowsForms) + { + usings.UnionWith(new[] { "System.Drawing", "System.Windows.Forms" }); + } + usings.UnionWith(fileContent.CustomImplicitUsings); logger.LogInfo($"Generating source file for implicit usings. Namespaces: {string.Join(", ", usings.OrderBy(u => u))}"); diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs index c06eaec270f..03f448e7330 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs @@ -61,6 +61,28 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } } + private bool useWpf = false; + + public bool UseWpf + { + get + { + initialize.Run(); + return useWpf; + } + } + + private bool useWindowsForms = false; + + public bool UseWindowsForms + { + get + { + initialize.Run(); + return useWindowsForms; + } + } + private bool isLegacyProjectStructureUsed = false; public bool IsLegacyProjectStructureUsed @@ -173,6 +195,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching || line.Contains("enable".AsSpan(), StringComparison.Ordinal) || line.Contains("true".AsSpan(), StringComparison.Ordinal); + // Determine if WPF is used. + useWpf = useWpf + || line.Contains("true".AsSpan(), StringComparison.Ordinal); + + // Determine if Windows Forms is used. + useWindowsForms = useWindowsForms + || line.Contains("true".AsSpan(), StringComparison.Ordinal); + // Find all custom implicit usings. foreach (var valueMatch in CustomImplicitUsingDeclarations().EnumerateMatches(line)) { diff --git a/csharp/extractor/Semmle.Extraction.Tests/FileContent.cs b/csharp/extractor/Semmle.Extraction.Tests/FileContent.cs index ba934120c45..6dcee31024a 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/FileContent.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/FileContent.cs @@ -84,7 +84,7 @@ namespace Semmle.Extraction.Tests Assert.Contains("StyleCop.Analyzers".ToLowerInvariant(), allPackages); } - private static void ImplicitUsingsTest(string line, bool expected) + private static void CsProjSettingsTest(string line, bool expected, Func func) { // Setup var lines = new List() @@ -94,28 +94,52 @@ namespace Semmle.Extraction.Tests var fileContent = new TestFileContent(lines); // Execute - var useImplicitUsings = fileContent.UseImplicitUsings; + var actual = func(fileContent); // Verify - Assert.Equal(expected, useImplicitUsings); + Assert.Equal(expected, actual); } [Fact] public void TestFileContent_ImplicitUsings0() { - ImplicitUsingsTest("false", false); + CsProjSettingsTest("false", false, fc => fc.UseImplicitUsings); } [Fact] public void TestFileContent_ImplicitUsings1() { - ImplicitUsingsTest("true", true); + CsProjSettingsTest("true", true, fc => fc.UseImplicitUsings); } [Fact] public void TestFileContent_ImplicitUsings2() { - ImplicitUsingsTest("enable", true); + CsProjSettingsTest("enable", true, fc => fc.UseImplicitUsings); + } + + [Fact] + public void TestFileContent_UseWpf0() + { + CsProjSettingsTest("false", false, fc => fc.UseWpf); + } + + [Fact] + public void TestFileContent_UseWpf1() + { + CsProjSettingsTest("true", true, fc => fc.UseWpf); + } + + [Fact] + public void TestFileContent_UseWindowsForms0() + { + CsProjSettingsTest("false", false, fc => fc.UseWindowsForms); + } + + [Fact] + public void TestFileContent_UseWindowsForms1() + { + CsProjSettingsTest("true", true, fc => fc.UseWindowsForms); } [Fact] From 082754a3d8dd3a3a8d550bc5e1b150ea83f51717 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Wed, 7 Feb 2024 13:21:59 +0000 Subject: [PATCH 043/113] Remove problematic Kotlin model. --- java/ql/lib/change-notes/2024-01-31-new-models.md | 1 - java/ql/lib/ext/kotlin.io.model.yml | 1 - 2 files changed, 2 deletions(-) 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 index 4fbc1b59571..bdb588f3bc3 100644 --- a/java/ql/lib/change-notes/2024-01-31-new-models.md +++ b/java/ql/lib/change-notes/2024-01-31-new-models.md @@ -10,7 +10,6 @@ category: minorAnalysis * java.nio.file * java.util.zip * javax.servlet - * kotlin.io * org.apache.commons.io * org.apache.hadoop.fs * org.apache.hadoop.fs.s3a diff --git a/java/ql/lib/ext/kotlin.io.model.yml b/java/ql/lib/ext/kotlin.io.model.yml index c65862f6eac..b748e04a292 100644 --- a/java/ql/lib/ext/kotlin.io.model.yml +++ b/java/ql/lib/ext/kotlin.io.model.yml @@ -3,7 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["kotlin.io", "FilesKt", False, "appendText$default", "(File,String,Charset,int,Object)", "", "Argument[0]", "path-injection", "ai-manual"] - ["kotlin.io", "FilesKt", False, "deleteRecursively", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["kotlin.io", "FilesKt", False, "inputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["kotlin.io", "FilesKt", False, "readBytes", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] From 8646bffaea94302d4b42050919d18aaab385fa78 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Wed, 7 Feb 2024 14:35:19 +0100 Subject: [PATCH 044/113] Ruby: Remove `ReturnValue` as access path for constructors --- .../utils/modeleditor/FrameworkModeAccessPaths.ql | 4 +++- ruby/ql/src/utils/modeleditor/ModelEditor.qll | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql index d992f1c46f8..87559350048 100644 --- a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql +++ b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql @@ -10,6 +10,7 @@ private import ruby private import codeql.ruby.AST private import codeql.ruby.ApiGraphs private import queries.modeling.internal.Util as Util +private import ModelEditor predicate simpleParameters(string type, string path, string value, DataFlow::Node node) { exists(DataFlow::MethodNode methodNode, DataFlow::ParameterNode paramNode | @@ -58,7 +59,8 @@ predicate blockArguments(string type, string path, string value, DataFlow::Node predicate returnValue(string type, string path, string value, DataFlow::Node node) { exists(DataFlow::MethodNode methodNode, DataFlow::Node returnNode | methodNode.getLocation().getFile() instanceof Util::RelevantFile and - returnNode = methodNode.getAReturnNode() + returnNode = methodNode.getAReturnNode() and + not isConstructor(methodNode) // A constructor doesn't have a return value | Util::pathToMethod(methodNode, type, path) and value = "ReturnValue" and diff --git a/ruby/ql/src/utils/modeleditor/ModelEditor.qll b/ruby/ql/src/utils/modeleditor/ModelEditor.qll index 625d40fd501..020a5f6177c 100644 --- a/ruby/ql/src/utils/modeleditor/ModelEditor.qll +++ b/ruby/ql/src/utils/modeleditor/ModelEditor.qll @@ -32,6 +32,14 @@ string getNamespace(File file) { ) } +/** + * Holds if this method is a constructor for a module. + */ +predicate isConstructor(DataFlow::MethodNode method) { + method.getMethodName() = "initialize" and + exists(DataFlow::ModuleNode m | m.getOwnInstanceMethod(method.getMethodName()) = method) +} + abstract class Endpoint instanceof DataFlow::Node { string getNamespace() { result = getNamespace(super.getLocation().getFile()) } @@ -153,10 +161,7 @@ class MethodEndpoint extends Endpoint instanceof DataFlow::MethodNode { /** * Holds if this method is a constructor for a module. */ - private predicate isConstructor() { - super.getMethodName() = "initialize" and - exists(DataFlow::ModuleNode m | m.getOwnInstanceMethod(super.getMethodName()) = this) - } + private predicate isConstructor() { isConstructor(this) } } string methodClassification(Call method) { From 4eeca02da64ce2ccb3bfe39e21d51088b633600d Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Wed, 7 Feb 2024 14:58:19 +0100 Subject: [PATCH 045/113] Change file content string comparisons to be case invariant --- .../FileContent.cs | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs index 03f448e7330..08639561d87 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs @@ -127,10 +127,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching public FileContent(ILogger logger, IEnumerable files) : this(logger, files, new UnsafeFileReader()) { } - private static string GetGroup(ReadOnlySpan input, ValueMatch valueMatch, string groupPrefix, bool toLower) + private static string GetGroup(ReadOnlySpan input, ValueMatch valueMatch, string groupPrefix) { var match = input.Slice(valueMatch.Index, valueMatch.Length); - var includeIndex = match.IndexOf(groupPrefix, StringComparison.InvariantCultureIgnoreCase); + var includeIndex = match.IndexOf(groupPrefix, StringComparison.OrdinalIgnoreCase); if (includeIndex == -1) { return string.Empty; @@ -141,14 +141,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var quoteIndex1 = match.IndexOf("\""); var quoteIndex2 = match.Slice(quoteIndex1 + 1).IndexOf("\""); - var result = match.Slice(quoteIndex1 + 1, quoteIndex2).ToString(); - - if (toLower) - { - result = result.ToLowerInvariant(); - } - - return result; + return match.Slice(quoteIndex1 + 1, quoteIndex2).ToString(); } private static bool IsGroupMatch(ReadOnlySpan line, Regex regex, string groupPrefix, string value) @@ -156,7 +149,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching foreach (var valueMatch in regex.EnumerateMatches(line)) { // We can't get the group from the ValueMatch, so doing it manually: - if (GetGroup(line, valueMatch, groupPrefix, toLower: true) == value.ToLowerInvariant()) + if (string.Equals(GetGroup(line, valueMatch, groupPrefix), value, StringComparison.OrdinalIgnoreCase)) { return true; } @@ -172,12 +165,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { foreach (ReadOnlySpan line in unsafeFileReader.ReadLines(file)) { - // Find all the packages. foreach (var valueMatch in PackageReference().EnumerateMatches(line)) { // We can't get the group from the ValueMatch, so doing it manually: - var packageName = GetGroup(line, valueMatch, "Include", toLower: true); + var packageName = GetGroup(line, valueMatch, "Include").ToLowerInvariant(); if (!string.IsNullOrEmpty(packageName)) { allPackages.Add(packageName); @@ -189,24 +181,23 @@ namespace Semmle.Extraction.CSharp.DependencyFetching || IsGroupMatch(line, ProjectSdk(), "Sdk", "Microsoft.NET.Sdk.Web") || IsGroupMatch(line, FrameworkReference(), "Include", "Microsoft.AspNetCore.App"); - // Determine if implicit usings are used. useImplicitUsings = useImplicitUsings - || line.Contains("enable".AsSpan(), StringComparison.Ordinal) - || line.Contains("true".AsSpan(), StringComparison.Ordinal); + || line.Contains("enable".AsSpan(), StringComparison.OrdinalIgnoreCase) + || line.Contains("true".AsSpan(), StringComparison.OrdinalIgnoreCase); // Determine if WPF is used. useWpf = useWpf - || line.Contains("true".AsSpan(), StringComparison.Ordinal); + || line.Contains("true".AsSpan(), StringComparison.OrdinalIgnoreCase); // Determine if Windows Forms is used. useWindowsForms = useWindowsForms - || line.Contains("true".AsSpan(), StringComparison.Ordinal); + || line.Contains("true".AsSpan(), StringComparison.OrdinalIgnoreCase); // Find all custom implicit usings. foreach (var valueMatch in CustomImplicitUsingDeclarations().EnumerateMatches(line)) { - var ns = GetGroup(line, valueMatch, "Include", toLower: false); + var ns = GetGroup(line, valueMatch, "Include"); if (!string.IsNullOrEmpty(ns)) { implicitUsingNamespaces.Add(ns); From 1c6108028b024da4ce2d5200e7e3ef4fffda1a55 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 7 Feb 2024 15:12:17 +0000 Subject: [PATCH 046/113] Kotlin 2: Accept some location changes for arrays --- .../library-tests/arrays/arrayAccesses.expected | 8 ++++---- .../library-tests/arrays/assignExprs.expected | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/arrays/arrayAccesses.expected b/java/ql/test-kotlin2/library-tests/arrays/arrayAccesses.expected index 986bdeed21f..3dd2feaf353 100644 --- a/java/ql/test-kotlin2/library-tests/arrays/arrayAccesses.expected +++ b/java/ql/test-kotlin2/library-tests/arrays/arrayAccesses.expected @@ -16,7 +16,7 @@ | arrayGetsSets.kt:19:11:19:15 | ...[...] | arrayGetsSets.kt:19:3:19:7 | ...=... | char | arrayGetsSets.kt:19:11:19:12 | a8 | arrayGetsSets.kt:19:14:19:14 | 0 | | arrayGetsSets.kt:20:3:20:7 | ...[...] | arrayGetsSets.kt:20:3:20:7 | ...=... | Object[] | arrayGetsSets.kt:20:3:20:4 | a9 | arrayGetsSets.kt:20:6:20:6 | 0 | | arrayGetsSets.kt:20:11:20:15 | ...[...] | arrayGetsSets.kt:20:3:20:7 | ...=... | Object | arrayGetsSets.kt:20:11:20:12 | a9 | arrayGetsSets.kt:20:14:20:14 | 0 | -| arrayGetsSets.kt:32:3:32:7 | ...[...] | arrayGetsSets.kt:32:3:32:7 | ...+=... | int | arrayGetsSets.kt:32:3:32:4 | a1 | arrayGetsSets.kt:32:6:32:6 | 0 | -| arrayGetsSets.kt:38:3:38:7 | ...[...] | arrayGetsSets.kt:38:3:38:7 | .../=... | long | arrayGetsSets.kt:38:3:38:4 | a4 | arrayGetsSets.kt:38:6:38:6 | 0 | -| arrayGetsSets.kt:39:3:39:7 | ...[...] | arrayGetsSets.kt:39:3:39:7 | ...-=... | float | arrayGetsSets.kt:39:3:39:4 | a5 | arrayGetsSets.kt:39:6:39:6 | 0 | -| arrayGetsSets.kt:40:3:40:7 | ...[...] | arrayGetsSets.kt:40:3:40:7 | ...*=... | double | arrayGetsSets.kt:40:3:40:4 | a6 | arrayGetsSets.kt:40:6:40:6 | 0 | +| arrayGetsSets.kt:32:3:32:12 | ...[...] | arrayGetsSets.kt:32:3:32:12 | ...+=... | int | arrayGetsSets.kt:32:3:32:4 | a1 | arrayGetsSets.kt:32:6:32:6 | 0 | +| arrayGetsSets.kt:38:3:38:13 | ...[...] | arrayGetsSets.kt:38:3:38:13 | .../=... | long | arrayGetsSets.kt:38:3:38:4 | a4 | arrayGetsSets.kt:38:6:38:6 | 0 | +| arrayGetsSets.kt:39:3:39:13 | ...[...] | arrayGetsSets.kt:39:3:39:13 | ...-=... | float | arrayGetsSets.kt:39:3:39:4 | a5 | arrayGetsSets.kt:39:6:39:6 | 0 | +| arrayGetsSets.kt:40:3:40:14 | ...[...] | arrayGetsSets.kt:40:3:40:14 | ...*=... | double | arrayGetsSets.kt:40:3:40:4 | a6 | arrayGetsSets.kt:40:6:40:6 | 0 | diff --git a/java/ql/test-kotlin2/library-tests/arrays/assignExprs.expected b/java/ql/test-kotlin2/library-tests/arrays/assignExprs.expected index da09855b1e0..5f8fda311e2 100644 --- a/java/ql/test-kotlin2/library-tests/arrays/assignExprs.expected +++ b/java/ql/test-kotlin2/library-tests/arrays/assignExprs.expected @@ -1,4 +1,4 @@ -| arrayGetsSets.kt:32:3:32:7 | ...+=... | += | int[] | arrayGetsSets.kt:32:3:32:7 | ...[...] | int | arrayGetsSets.kt:32:12:32:12 | 1 | int | -| arrayGetsSets.kt:38:3:38:7 | .../=... | /= | long[] | arrayGetsSets.kt:38:3:38:7 | ...[...] | long | arrayGetsSets.kt:38:12:38:13 | 1 | long | -| arrayGetsSets.kt:39:3:39:7 | ...-=... | -= | float[] | arrayGetsSets.kt:39:3:39:7 | ...[...] | float | arrayGetsSets.kt:39:12:39:13 | 1.0 | float | -| arrayGetsSets.kt:40:3:40:7 | ...*=... | *= | double[] | arrayGetsSets.kt:40:3:40:7 | ...[...] | double | arrayGetsSets.kt:40:12:40:14 | 1.0 | double | +| arrayGetsSets.kt:32:3:32:12 | ...+=... | += | int[] | arrayGetsSets.kt:32:3:32:12 | ...[...] | int | arrayGetsSets.kt:32:12:32:12 | 1 | int | +| arrayGetsSets.kt:38:3:38:13 | .../=... | /= | long[] | arrayGetsSets.kt:38:3:38:13 | ...[...] | long | arrayGetsSets.kt:38:12:38:13 | 1 | long | +| arrayGetsSets.kt:39:3:39:13 | ...-=... | -= | float[] | arrayGetsSets.kt:39:3:39:13 | ...[...] | float | arrayGetsSets.kt:39:12:39:13 | 1.0 | float | +| arrayGetsSets.kt:40:3:40:14 | ...*=... | *= | double[] | arrayGetsSets.kt:40:3:40:14 | ...[...] | double | arrayGetsSets.kt:40:12:40:14 | 1.0 | double | From 3d1f9a79fb6d0859b519b58dde7ca9914409abf0 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 7 Feb 2024 15:17:40 +0000 Subject: [PATCH 047/113] Kotlin 2: Accept location changes in test-kotlin2/library-tests/data-classes --- .../library-tests/data-classes/PrintAst.expected | 10 +++++----- .../library-tests/data-classes/callees.expected | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/data-classes/PrintAst.expected b/java/ql/test-kotlin2/library-tests/data-classes/PrintAst.expected index f884671c094..e601e1378a6 100644 --- a/java/ql/test-kotlin2/library-tests/data-classes/PrintAst.expected +++ b/java/ql/test-kotlin2/library-tests/data-classes/PrintAst.expected @@ -17,11 +17,11 @@ dc.kt: # 0| 3: [Method] copy # 0| 3: [TypeAccess] ProtoMapValue #-----| 4: (Parameters) -# 1| 0: [Parameter] bytes -# 1| 0: [TypeAccess] byte[] -# 1| 1: [Parameter] strs -# 1| 0: [TypeAccess] String[] -# 1| 0: [TypeAccess] String +# 0| 0: [Parameter] bytes +# 0| 0: [TypeAccess] byte[] +# 0| 1: [Parameter] strs +# 0| 0: [TypeAccess] String[] +# 0| 0: [TypeAccess] String # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [ClassInstanceExpr] new ProtoMapValue(...) diff --git a/java/ql/test-kotlin2/library-tests/data-classes/callees.expected b/java/ql/test-kotlin2/library-tests/data-classes/callees.expected index f16c4ffb435..a0352c3ac72 100644 --- a/java/ql/test-kotlin2/library-tests/data-classes/callees.expected +++ b/java/ql/test-kotlin2/library-tests/data-classes/callees.expected @@ -4,4 +4,4 @@ | dc.kt:0:0:0:0 | new ProtoMapValue(...) | ProtoMapValue.ProtoMapValue | | dc.kt:0:0:0:0 | toString(...) | java.util.Arrays.toString | | dc.kt:0:0:0:0 | toString(...) | java.util.Arrays.toString | -| dc.kt:1:1:1:71 | super(...) | java.lang.Object.Object | +| dc.kt:1:25:1:71 | super(...) | java.lang.Object.Object | From c731251e61a607024f580519612841ff7fb5f797 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 7 Feb 2024 15:32:04 +0000 Subject: [PATCH 048/113] Kotlin 2: Remove an unused diagnostic matcher in library-tests/dataflow/func --- .../library-tests/dataflow/func/kotlinx_coroutines_stubs.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/dataflow/func/kotlinx_coroutines_stubs.kt b/java/ql/test-kotlin2/library-tests/dataflow/func/kotlinx_coroutines_stubs.kt index 3ef2c70d363..8cb4c31fb25 100644 --- a/java/ql/test-kotlin2/library-tests/dataflow/func/kotlinx_coroutines_stubs.kt +++ b/java/ql/test-kotlin2/library-tests/dataflow/func/kotlinx_coroutines_stubs.kt @@ -31,5 +31,3 @@ public fun CoroutineScope.async( ): Deferred { return null!! } - -// Diagnostic Matches: % Couldn't get owner of KDoc. The comment is extracted without an owner. ...while extracting a file (kotlinx_coroutines_stubs.kt) at %kotlinx_coroutines_stubs.kt:1:1:36:0% From c314cc8b68a2438701a60593fc8030d487791bab Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 7 Feb 2024 15:56:10 +0000 Subject: [PATCH 049/113] Kotlin 2: Accept some location changes in library-tests/exprs/binop.expected --- java/ql/test-kotlin2/library-tests/exprs/binop.expected | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/binop.expected b/java/ql/test-kotlin2/library-tests/exprs/binop.expected index f69701028d5..83dad7f94b5 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/binop.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/binop.expected @@ -96,8 +96,8 @@ | exprs.kt:141:12:141:20 | ... + ... | exprs.kt:141:12:141:14 | 123 | exprs.kt:141:18:141:20 | 456 | | exprs.kt:167:8:167:16 | ... (value not-equals) ... | exprs.kt:167:8:167:8 | r | exprs.kt:167:13:167:16 | null | | exprs.kt:196:31:196:37 | ... + ... | exprs.kt:196:31:196:32 | getA1(...) | exprs.kt:196:36:196:37 | a2 | -| exprs.kt:211:20:211:29 | ... + ... | exprs.kt:211:20:211:21 | ...!! | exprs.kt:211:28:211:28 | 5 | -| exprs.kt:212:19:212:25 | ... + ... | exprs.kt:212:20:212:21 | ...!! | exprs.kt:212:25:212:25 | 5 | +| exprs.kt:211:19:211:29 | ... + ... | exprs.kt:211:19:211:21 | ...!! | exprs.kt:211:28:211:28 | 5 | +| exprs.kt:212:19:212:25 | ... + ... | exprs.kt:212:19:212:21 | ...!! | exprs.kt:212:25:212:25 | 5 | | exprs.kt:230:12:230:47 | ... (value equals) ... | exprs.kt:230:12:230:27 | notNullPrimitive | exprs.kt:230:32:230:47 | notNullPrimitive | | exprs.kt:231:12:231:48 | ... (value equals) ... | exprs.kt:231:12:231:27 | notNullPrimitive | exprs.kt:231:32:231:48 | nullablePrimitive | | exprs.kt:232:12:232:49 | ... (value equals) ... | exprs.kt:232:12:232:28 | nullablePrimitive | exprs.kt:232:33:232:49 | nullablePrimitive | From 8a93133b81dfb5bc2d9ea583573376aa3de84606 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 7 Feb 2024 16:21:49 +0000 Subject: [PATCH 050/113] Kotlin 2: Accept loc changes in library-tests/exprs/unaryOp.expected --- java/ql/test-kotlin2/library-tests/exprs/unaryOp.expected | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/unaryOp.expected b/java/ql/test-kotlin2/library-tests/exprs/unaryOp.expected index 03b5d64a7f4..487226320cc 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/unaryOp.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/unaryOp.expected @@ -2,9 +2,9 @@ | exprs.kt:32:15:32:26 | !... | exprs.kt:32:15:32:26 | contains(...) | | exprs.kt:79:15:79:22 | ~... | exprs.kt:79:15:79:16 | lx | | exprs.kt:121:14:121:16 | !... | exprs.kt:121:15:121:16 | b1 | -| exprs.kt:202:19:202:20 | ...!! | exprs.kt:202:18:202:18 | x | -| exprs.kt:211:20:211:21 | ...!! | exprs.kt:211:19:211:19 | s | -| exprs.kt:212:20:212:21 | ...!! | exprs.kt:212:19:212:19 | s | +| exprs.kt:202:18:202:20 | ...!! | exprs.kt:202:18:202:18 | x | +| exprs.kt:211:19:211:21 | ...!! | exprs.kt:211:19:211:19 | s | +| exprs.kt:212:19:212:21 | ...!! | exprs.kt:212:19:212:19 | s | | exprs.kt:286:5:286:6 | -... | exprs.kt:286:6:286:6 | i | | exprs.kt:287:5:287:6 | +... | exprs.kt:287:6:287:6 | i | | exprs.kt:288:5:288:6 | -... | exprs.kt:288:6:288:6 | d | From ef8e6c8805d0fbf3f52e4b24ae1f9c052724840a Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 7 Feb 2024 16:40:40 +0000 Subject: [PATCH 051/113] Kotlin 2: Accept loc changes in library-tests/exprs/funcExprs.expected --- .../library-tests/exprs/funcExprs.expected | 160 +++++++++--------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/funcExprs.expected b/java/ql/test-kotlin2/library-tests/exprs/funcExprs.expected index b79725a80e3..1328047196c 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/funcExprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/funcExprs.expected @@ -75,118 +75,118 @@ lambda_modifiers | samConversion.kt:46:32:46:44 | ...->... | samConversion.kt:46:32:46:44 | invoke | final, override, public | | samConversion.kt:58:30:58:45 | ...->... | samConversion.kt:58:30:58:45 | invoke | final, override, public, suspend | anon_class_member_modifiers -| delegatedProperties.kt:6:24:9:9 | new KProperty0(...) { ... } | delegatedProperties.kt:6:24:9:9 | get | override, public | -| delegatedProperties.kt:6:24:9:9 | new KProperty0(...) { ... } | delegatedProperties.kt:6:24:9:9 | invoke | override, public | +| delegatedProperties.kt:6:27:9:9 | new KProperty0(...) { ... } | delegatedProperties.kt:6:27:9:9 | get | override, public | +| delegatedProperties.kt:6:27:9:9 | new KProperty0(...) { ... } | delegatedProperties.kt:6:27:9:9 | invoke | override, public | | delegatedProperties.kt:6:32:9:9 | new Function0(...) { ... } | delegatedProperties.kt:6:32:9:9 | invoke | final, override, public | -| delegatedProperties.kt:19:31:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:31:19:51 | get | override, public | -| delegatedProperties.kt:19:31:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:31:19:51 | get | override, public | -| delegatedProperties.kt:19:31:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:31:19:51 | invoke | override, public | -| delegatedProperties.kt:19:31:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:31:19:51 | invoke | override, public | -| delegatedProperties.kt:19:31:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:31:19:51 | set | override, public | -| delegatedProperties.kt:19:31:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:31:19:51 | set | override, public | -| delegatedProperties.kt:23:26:23:31 | new KProperty0(...) { ... } | delegatedProperties.kt:23:26:23:31 | get | override, public | -| delegatedProperties.kt:23:26:23:31 | new KProperty0(...) { ... } | delegatedProperties.kt:23:26:23:31 | invoke | override, public | +| delegatedProperties.kt:19:34:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:34:19:51 | get | override, public | +| delegatedProperties.kt:19:34:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:34:19:51 | get | override, public | +| delegatedProperties.kt:19:34:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:34:19:51 | invoke | override, public | +| delegatedProperties.kt:19:34:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:34:19:51 | invoke | override, public | +| delegatedProperties.kt:19:34:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:34:19:51 | set | override, public | +| delegatedProperties.kt:19:34:19:51 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:19:34:19:51 | set | override, public | +| delegatedProperties.kt:23:29:23:31 | new KProperty0(...) { ... } | delegatedProperties.kt:23:29:23:31 | get | override, public | +| delegatedProperties.kt:23:29:23:31 | new KProperty0(...) { ... } | delegatedProperties.kt:23:29:23:31 | invoke | override, public | | delegatedProperties.kt:25:64:31:9 | new ReadWriteProperty(...) { ... } | delegatedProperties.kt:26:13:26:28 | getCurValue | final, public | | delegatedProperties.kt:25:64:31:9 | new ReadWriteProperty(...) { ... } | delegatedProperties.kt:26:13:26:28 | setCurValue | final, public | -| delegatedProperties.kt:25:64:31:9 | new ReadWriteProperty(...) { ... } | delegatedProperties.kt:27:22:27:88 | getValue | override, public | -| delegatedProperties.kt:25:64:31:9 | new ReadWriteProperty(...) { ... } | delegatedProperties.kt:28:22:30:13 | setValue | override, public | -| delegatedProperties.kt:33:27:33:47 | new KProperty0(...) { ... } | delegatedProperties.kt:33:27:33:47 | get | override, public | -| delegatedProperties.kt:33:27:33:47 | new KProperty0(...) { ... } | delegatedProperties.kt:33:27:33:47 | invoke | override, public | -| delegatedProperties.kt:34:28:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:28:34:48 | get | override, public | -| delegatedProperties.kt:34:28:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:28:34:48 | get | override, public | -| delegatedProperties.kt:34:28:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:28:34:48 | invoke | override, public | -| delegatedProperties.kt:34:28:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:28:34:48 | invoke | override, public | -| delegatedProperties.kt:34:28:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:28:34:48 | set | override, public | -| delegatedProperties.kt:34:28:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:28:34:48 | set | override, public | -| delegatedProperties.kt:39:31:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:31:39:51 | get | override, public | -| delegatedProperties.kt:39:31:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:31:39:51 | get | override, public | -| delegatedProperties.kt:39:31:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:31:39:51 | invoke | override, public | -| delegatedProperties.kt:39:31:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:31:39:51 | invoke | override, public | -| delegatedProperties.kt:42:27:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:27:42:47 | get | override, public | -| delegatedProperties.kt:42:27:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:27:42:47 | get | override, public | -| delegatedProperties.kt:42:27:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:27:42:47 | invoke | override, public | -| delegatedProperties.kt:42:27:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:27:42:47 | invoke | override, public | -| delegatedProperties.kt:42:27:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:27:42:47 | set | override, public | -| delegatedProperties.kt:42:27:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:27:42:47 | set | override, public | -| delegatedProperties.kt:66:33:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:33:66:50 | get | override, public | -| delegatedProperties.kt:66:33:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:33:66:50 | get | override, public | -| delegatedProperties.kt:66:33:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:33:66:50 | invoke | override, public | -| delegatedProperties.kt:66:33:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:33:66:50 | invoke | override, public | -| delegatedProperties.kt:66:33:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:33:66:50 | set | override, public | -| delegatedProperties.kt:66:33:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:33:66:50 | set | override, public | +| delegatedProperties.kt:25:64:31:9 | new ReadWriteProperty(...) { ... } | delegatedProperties.kt:27:13:27:88 | getValue | override, public | +| delegatedProperties.kt:25:64:31:9 | new ReadWriteProperty(...) { ... } | delegatedProperties.kt:28:13:30:13 | setValue | override, public | +| delegatedProperties.kt:33:30:33:47 | new KProperty0(...) { ... } | delegatedProperties.kt:33:30:33:47 | get | override, public | +| delegatedProperties.kt:33:30:33:47 | new KProperty0(...) { ... } | delegatedProperties.kt:33:30:33:47 | invoke | override, public | +| delegatedProperties.kt:34:31:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:31:34:48 | get | override, public | +| delegatedProperties.kt:34:31:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:31:34:48 | get | override, public | +| delegatedProperties.kt:34:31:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:31:34:48 | invoke | override, public | +| delegatedProperties.kt:34:31:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:31:34:48 | invoke | override, public | +| delegatedProperties.kt:34:31:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:31:34:48 | set | override, public | +| delegatedProperties.kt:34:31:34:48 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:34:31:34:48 | set | override, public | +| delegatedProperties.kt:39:34:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:34:39:51 | get | override, public | +| delegatedProperties.kt:39:34:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:34:39:51 | get | override, public | +| delegatedProperties.kt:39:34:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:34:39:51 | invoke | override, public | +| delegatedProperties.kt:39:34:39:51 | new KProperty0(...) { ... } | delegatedProperties.kt:39:34:39:51 | invoke | override, public | +| delegatedProperties.kt:42:30:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:30:42:47 | get | override, public | +| delegatedProperties.kt:42:30:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:30:42:47 | get | override, public | +| delegatedProperties.kt:42:30:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:30:42:47 | invoke | override, public | +| delegatedProperties.kt:42:30:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:30:42:47 | invoke | override, public | +| delegatedProperties.kt:42:30:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:30:42:47 | set | override, public | +| delegatedProperties.kt:42:30:42:47 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:42:30:42:47 | set | override, public | | delegatedProperties.kt:66:36:66:50 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:66:36:66:50 | get | override, public | | delegatedProperties.kt:66:36:66:50 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:66:36:66:50 | invoke | override, public | | delegatedProperties.kt:66:36:66:50 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:66:36:66:50 | set | override, public | -| delegatedProperties.kt:67:33:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:33:67:53 | get | override, public | -| delegatedProperties.kt:67:33:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:33:67:53 | get | override, public | -| delegatedProperties.kt:67:33:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:33:67:53 | invoke | override, public | -| delegatedProperties.kt:67:33:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:33:67:53 | invoke | override, public | -| delegatedProperties.kt:67:33:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:33:67:53 | set | override, public | -| delegatedProperties.kt:67:33:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:33:67:53 | set | override, public | +| delegatedProperties.kt:66:36:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:36:66:50 | get | override, public | +| delegatedProperties.kt:66:36:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:36:66:50 | get | override, public | +| delegatedProperties.kt:66:36:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:36:66:50 | invoke | override, public | +| delegatedProperties.kt:66:36:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:36:66:50 | invoke | override, public | +| delegatedProperties.kt:66:36:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:36:66:50 | set | override, public | +| delegatedProperties.kt:66:36:66:50 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:66:36:66:50 | set | override, public | +| delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | get | override, public | +| delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | get | override, public | | delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | get | override, public | | delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | invoke | override, public | +| delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | invoke | override, public | +| delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | invoke | override, public | +| delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | set | override, public | +| delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | set | override, public | | delegatedProperties.kt:67:36:67:53 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:67:36:67:53 | set | override, public | -| delegatedProperties.kt:69:36:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:36:69:56 | get | override, public | -| delegatedProperties.kt:69:36:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:36:69:56 | get | override, public | -| delegatedProperties.kt:69:36:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:36:69:56 | invoke | override, public | -| delegatedProperties.kt:69:36:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:36:69:56 | invoke | override, public | -| delegatedProperties.kt:69:36:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:36:69:56 | set | override, public | -| delegatedProperties.kt:69:36:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:36:69:56 | set | override, public | | delegatedProperties.kt:69:39:69:56 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:69:39:69:56 | get | override, public | | delegatedProperties.kt:69:39:69:56 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:69:39:69:56 | invoke | override, public | | delegatedProperties.kt:69:39:69:56 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:69:39:69:56 | set | override, public | -| delegatedProperties.kt:70:36:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:36:70:59 | get | override, public | -| delegatedProperties.kt:70:36:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:36:70:59 | get | override, public | -| delegatedProperties.kt:70:36:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:36:70:59 | invoke | override, public | -| delegatedProperties.kt:70:36:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:36:70:59 | invoke | override, public | -| delegatedProperties.kt:70:36:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:36:70:59 | set | override, public | -| delegatedProperties.kt:70:36:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:36:70:59 | set | override, public | +| delegatedProperties.kt:69:39:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:39:69:56 | get | override, public | +| delegatedProperties.kt:69:39:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:39:69:56 | get | override, public | +| delegatedProperties.kt:69:39:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:39:69:56 | invoke | override, public | +| delegatedProperties.kt:69:39:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:39:69:56 | invoke | override, public | +| delegatedProperties.kt:69:39:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:39:69:56 | set | override, public | +| delegatedProperties.kt:69:39:69:56 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:69:39:69:56 | set | override, public | +| delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | get | override, public | +| delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | get | override, public | | delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | get | override, public | | delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | invoke | override, public | +| delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | invoke | override, public | +| delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | invoke | override, public | +| delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | set | override, public | +| delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | set | override, public | | delegatedProperties.kt:70:39:70:59 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:70:39:70:59 | set | override, public | -| delegatedProperties.kt:72:36:72:56 | new KProperty1(...) { ... } | delegatedProperties.kt:72:36:72:56 | get | override, public | -| delegatedProperties.kt:72:36:72:56 | new KProperty1(...) { ... } | delegatedProperties.kt:72:36:72:56 | invoke | override, public | | delegatedProperties.kt:72:39:72:56 | new KProperty0(...) { ... } | delegatedProperties.kt:72:39:72:56 | get | override, public | | delegatedProperties.kt:72:39:72:56 | new KProperty0(...) { ... } | delegatedProperties.kt:72:39:72:56 | invoke | override, public | -| delegatedProperties.kt:73:36:73:56 | new KProperty1(...) { ... } | delegatedProperties.kt:73:36:73:56 | get | override, public | -| delegatedProperties.kt:73:36:73:56 | new KProperty1(...) { ... } | delegatedProperties.kt:73:36:73:56 | invoke | override, public | +| delegatedProperties.kt:72:39:72:56 | new KProperty1(...) { ... } | delegatedProperties.kt:72:39:72:56 | get | override, public | +| delegatedProperties.kt:72:39:72:56 | new KProperty1(...) { ... } | delegatedProperties.kt:72:39:72:56 | invoke | override, public | | delegatedProperties.kt:73:39:73:56 | new KProperty1(...) { ... } | delegatedProperties.kt:73:39:73:56 | get | override, public | | delegatedProperties.kt:73:39:73:56 | new KProperty1(...) { ... } | delegatedProperties.kt:73:39:73:56 | invoke | override, public | -| delegatedProperties.kt:75:39:75:78 | new KProperty1(...) { ... } | delegatedProperties.kt:75:39:75:78 | get | override, public | -| delegatedProperties.kt:75:39:75:78 | new KProperty1(...) { ... } | delegatedProperties.kt:75:39:75:78 | invoke | override, public | +| delegatedProperties.kt:73:39:73:56 | new KProperty1(...) { ... } | delegatedProperties.kt:73:39:73:56 | get | override, public | +| delegatedProperties.kt:73:39:73:56 | new KProperty1(...) { ... } | delegatedProperties.kt:73:39:73:56 | invoke | override, public | | delegatedProperties.kt:75:42:75:78 | new KProperty0(...) { ... } | delegatedProperties.kt:75:42:75:78 | get | override, public | | delegatedProperties.kt:75:42:75:78 | new KProperty0(...) { ... } | delegatedProperties.kt:75:42:75:78 | invoke | override, public | -| delegatedProperties.kt:77:34:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:34:77:49 | get | override, public | -| delegatedProperties.kt:77:34:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:34:77:49 | get | override, public | -| delegatedProperties.kt:77:34:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:34:77:49 | invoke | override, public | -| delegatedProperties.kt:77:34:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:34:77:49 | invoke | override, public | -| delegatedProperties.kt:77:34:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:34:77:49 | set | override, public | -| delegatedProperties.kt:77:34:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:34:77:49 | set | override, public | +| delegatedProperties.kt:75:42:75:78 | new KProperty1(...) { ... } | delegatedProperties.kt:75:42:75:78 | get | override, public | +| delegatedProperties.kt:75:42:75:78 | new KProperty1(...) { ... } | delegatedProperties.kt:75:42:75:78 | invoke | override, public | | delegatedProperties.kt:77:37:77:49 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:77:37:77:49 | get | override, public | | delegatedProperties.kt:77:37:77:49 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:77:37:77:49 | invoke | override, public | | delegatedProperties.kt:77:37:77:49 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:77:37:77:49 | set | override, public | -| delegatedProperties.kt:79:18:79:38 | new KProperty1(...) { ... } | delegatedProperties.kt:79:18:79:38 | get | override, public | -| delegatedProperties.kt:79:18:79:38 | new KProperty1(...) { ... } | delegatedProperties.kt:79:18:79:38 | invoke | override, public | +| delegatedProperties.kt:77:37:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:37:77:49 | get | override, public | +| delegatedProperties.kt:77:37:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:37:77:49 | get | override, public | +| delegatedProperties.kt:77:37:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:37:77:49 | invoke | override, public | +| delegatedProperties.kt:77:37:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:37:77:49 | invoke | override, public | +| delegatedProperties.kt:77:37:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:37:77:49 | set | override, public | +| delegatedProperties.kt:77:37:77:49 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:77:37:77:49 | set | override, public | | delegatedProperties.kt:79:21:79:38 | new KProperty0(...) { ... } | delegatedProperties.kt:79:21:79:38 | get | override, public | | delegatedProperties.kt:79:21:79:38 | new KProperty0(...) { ... } | delegatedProperties.kt:79:21:79:38 | invoke | override, public | -| delegatedProperties.kt:82:37:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:37:82:54 | get | override, public | -| delegatedProperties.kt:82:37:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:37:82:54 | get | override, public | -| delegatedProperties.kt:82:37:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:37:82:54 | invoke | override, public | -| delegatedProperties.kt:82:37:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:37:82:54 | invoke | override, public | -| delegatedProperties.kt:82:37:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:37:82:54 | set | override, public | -| delegatedProperties.kt:82:37:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:37:82:54 | set | override, public | +| delegatedProperties.kt:79:21:79:38 | new KProperty1(...) { ... } | delegatedProperties.kt:79:21:79:38 | get | override, public | +| delegatedProperties.kt:79:21:79:38 | new KProperty1(...) { ... } | delegatedProperties.kt:79:21:79:38 | invoke | override, public | +| delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | get | override, public | +| delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | get | override, public | | delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | get | override, public | | delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | invoke | override, public | +| delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | invoke | override, public | +| delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | invoke | override, public | +| delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | set | override, public | +| delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | set | override, public | | delegatedProperties.kt:82:40:82:54 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:82:40:82:54 | set | override, public | -| delegatedProperties.kt:87:31:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:31:87:46 | get | override, public | -| delegatedProperties.kt:87:31:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:31:87:46 | get | override, public | -| delegatedProperties.kt:87:31:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:31:87:46 | invoke | override, public | -| delegatedProperties.kt:87:31:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:31:87:46 | invoke | override, public | -| delegatedProperties.kt:87:31:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:31:87:46 | set | override, public | -| delegatedProperties.kt:87:31:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:31:87:46 | set | override, public | | delegatedProperties.kt:87:34:87:46 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:87:34:87:46 | get | override, public | | delegatedProperties.kt:87:34:87:46 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:87:34:87:46 | invoke | override, public | | delegatedProperties.kt:87:34:87:46 | new KMutableProperty0(...) { ... } | delegatedProperties.kt:87:34:87:46 | set | override, public | +| delegatedProperties.kt:87:34:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:34:87:46 | get | override, public | +| delegatedProperties.kt:87:34:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:34:87:46 | get | override, public | +| delegatedProperties.kt:87:34:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:34:87:46 | invoke | override, public | +| delegatedProperties.kt:87:34:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:34:87:46 | invoke | override, public | +| delegatedProperties.kt:87:34:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:34:87:46 | set | override, public | +| delegatedProperties.kt:87:34:87:46 | new KMutableProperty1(...) { ... } | delegatedProperties.kt:87:34:87:46 | set | override, public | | exprs.kt:195:16:197:9 | new Interface1(...) { ... } | exprs.kt:196:13:196:49 | getA3 | final, public | | funcExprs.kt:22:26:22:33 | new Function0(...) { ... } | funcExprs.kt:22:26:22:33 | invoke | final, override, public | | funcExprs.kt:23:26:23:33 | new Function0(...) { ... } | funcExprs.kt:23:26:23:33 | invoke | final, override, public | From 1c7e6e769beb0b7ecb160853d11f3256a3a43e87 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Wed, 7 Feb 2024 15:51:11 +0100 Subject: [PATCH 052/113] C#: Try resolve relative paths in line mappings --- .../Entities/NonGeneratedSourceLocation.cs | 25 ++++++++++++++++++- .../LineOrSpanDirective.cs | 6 +++-- .../PragmaChecksumDirective.cs | 3 ++- ...s_TestArea_Views_Shared_Test18.cshtml.g.cs | 6 ++--- ...as_TestArea_Views_Test4_Test17.cshtml.g.cs | 6 ++--- .../MyAreas_Test4_Test22.cshtml.g.cs | 6 ++--- .../Generated/Pages_Shared_Test21.cshtml.g.cs | 6 ++--- .../XSSRazorPages/Generated/Template.g | 6 ++--- .../Views_Custom2_Test16.cshtml.g.cs | 6 ++--- .../Views_Custom_Test3_Test15.cshtml.g.cs | 6 ++--- .../Generated/Views_Other_Test13.cshtml.g.cs | 6 ++--- .../Generated/Views_Other_Test5.cshtml.g.cs | 6 ++--- .../Generated/Views_Other_Test6.cshtml.g.cs | 6 ++--- .../Generated/Views_Other_Test8.cshtml.g.cs | 6 ++--- .../Generated/Views_Other_Test9.cshtml.g.cs | 6 ++--- .../Generated/Views_Shared_Test12.cshtml.g.cs | 6 ++--- .../Generated/Views_Shared_Test14.cshtml.g.cs | 6 ++--- .../Generated/Views_Shared_Test19.cshtml.g.cs | 6 ++--- .../Generated/Views_Shared_Test2.cshtml.g.cs | 6 ++--- .../Generated/Views_Shared_Test23.cshtml.g.cs | 6 ++--- .../Generated/Views_Shared_Test3.cshtml.g.cs | 6 ++--- .../Generated/Views_Test2_Test1.cshtml.g.cs | 6 ++--- .../Generated/Views_Test2_Test10.cshtml.g.cs | 6 ++--- .../Generated/Views_Test2_Test11.cshtml.g.cs | 6 ++--- .../Generated/Views_Test2_Test12.cshtml.g.cs | 6 ++--- .../Generated/Views_Test2_Test14.cshtml.g.cs | 6 ++--- .../Generated/Views_Test2_Test2.cshtml.g.cs | 6 ++--- .../Generated/Views_Test2_Test3.cshtml.g.cs | 6 ++--- .../Generated/Views_Test4_Test20.cshtml.g.cs | 6 ++--- .../Generated/Views_Test_Test1.cshtml.g.cs | 6 ++--- .../Generated/Views_Test_Test3.cshtml.g.cs | 6 ++--- .../Generated/Views_Test_Test4.cshtml.g.cs | 6 ++--- .../Generated/Views_Test_Test7.cshtml.g.cs | 6 ++--- 33 files changed, 120 insertions(+), 94 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NonGeneratedSourceLocation.cs index e3e3c0c6ae4..a3b7877af4e 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 @@ namespace Semmle.Extraction.CSharp.Entities 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 @@ namespace Semmle.Extraction.CSharp.Entities public override NonGeneratedSourceLocation Create(Context cx, Location init) => 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 9e8c4c557dc..6d236220331 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 @@ namespace Semmle.Extraction.CSharp.Entities { 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 7706118cb6f..3e0c468d85b 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 @@ namespace Semmle.Extraction.CSharp.Entities 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/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 eecb00361d6..52b0510994e 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 ee7ee811920..5d33dbbed54 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 f8b2ecde53a..6624ae0ebf3 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 483df5af705..c75acc2aaa9 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 1f283c9e3a0..0fa1767db71 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 c6048503384..82ed6254956 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 00edb1f4b8c..eb366a727b6 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 ad153243a9d..240733439bc 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 8b6dcfa243b..f51631b536a 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 58aa308379b..fbbd4e99798 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 799e7a84768..c3643f4dd2f 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 9c1199c2ee3..0a839142450 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 6292047ecec..d68e6cfb707 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 93cb009780f..d42efb18be2 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 daacf56a1f1..cd20980fb4d 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 c20f1456c06..0fbdbfd2f0f 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 919c874680b..218968593b9 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 7bd08d8665b..ea4626788bb 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 a4dec53b632..bb27bae1320 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 33a4d27e254..dbb7f68a284 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 da0b0a9c162..069bbd688f9 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 023daa7b03e..410f9d8a0d6 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 28b0ab8ee3f..c5c4253384e 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 53c7e6eed47..6d57bfd899c 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 299f6f89a16..a3d046fe038 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 814a81a5b5d..26ebc94e101 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 2ad66b7a032..30123d04467 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 95ef158286b..ade57ee3476 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 7a8cea221f7..583c0a35b1a 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #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 1eef0024c7a..710cc34bd07 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 @@ using test; #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 @@ using test; #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 @@ Write(Html.Raw(Model.Name)); #nullable disable WriteLiteral("\"

    \n"); #nullable restore -#line 9 "Views/Test/Test7.cshtml" +#line 9 "../Views/Test/Test7.cshtml" } #line default From 070402d3ae9de91a3993684befaaa75cdf35329b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 00:15:53 +0000 Subject: [PATCH 053/113] Add changed framework coverage reports --- csharp/documentation/library-coverage/coverage.csv | 2 +- csharp/documentation/library-coverage/coverage.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index b7b301fd2de..43681e0a264 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -40,5 +40,5 @@ MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,, Newtonsoft.Json,,,91,,,,,,,,,,,,,,,73,18 ServiceStack,194,,7,27,,,,,75,,,,92,,,,,7, SourceGenerators,,,4,,,,,,,,,,,,,,,4, -System,67,25,11835,,8,8,9,,,4,5,,33,1,17,3,4,9896,1939 +System,67,25,11862,,8,8,9,,,4,5,,33,1,17,3,4,9896,1966 Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,, diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index 0b898c67bda..9219a2a663f 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -8,7 +8,7 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack `_,"``ServiceStack.*``, ``ServiceStack``",,7,194, - System,"``System.*``, ``System``",25,11835,67,9 + System,"``System.*``, ``System``",25,11862,67,9 Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32.SafeHandles``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",6,1541,148, - Totals,,31,13383,409,9 + Totals,,31,13410,409,9 From dfc9c4d07963987d949f514bca780b278716b929 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Feb 2024 10:36:55 +0100 Subject: [PATCH 054/113] C#: Simplify, getASuccessor is pruned now. --- .../dataflow/internal/ContentDataFlow.qll | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll index fc937b88fa9..e9cd7373975 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll @@ -277,10 +277,6 @@ module Global { } } - // important to use `edges` and not `PathNode::getASuccessor()`, as the latter - // is not pruned for reachability - private predicate pathSucc = Flow::PathGraph::edges/2; - /** * Provides a big-step flow relation, where flow stops at read/store steps that * must be recorded, and flow via `subpaths` such that reads/stores inside @@ -290,10 +286,7 @@ module Global { private predicate reachesSink(Flow::PathNode node) { FlowConfig::isSink(node.getNode(), node.getState()) or - exists(Flow::PathNode mid | - pathSucc(node, mid) and - reachesSink(mid) - ) + reachesSink(node.getASuccessor()) } /** @@ -302,7 +295,7 @@ module Global { */ pragma[nomagic] private predicate excludeStep(Flow::PathNode pred, Flow::PathNode succ) { - pathSucc(pred, succ) and + pred.getASuccessor() = succ and ( // we need to record reads/stores inside summarized callables Flow::PathGraph::subpaths(pred, _, _, succ) @@ -356,7 +349,7 @@ module Global { pragma[nomagic] private predicate step(Flow::PathNode pred, Flow::PathNode succ) { - pathSucc(pred, succ) and + pred.getASuccessor() = succ and not excludeStep(pred, succ) } @@ -471,7 +464,7 @@ module Global { exists(Flow::PathNode mid | nodeReaches(source, scReads, scStores, mid, reads, stores) and storeStep(mid.getNode(), mid.getState(), c, node.getNode(), node.getState()) and - pathSucc(mid, node) + mid.getASuccessor() = node ) } @@ -483,7 +476,7 @@ module Global { exists(Flow::PathNode mid | nodeReaches(source, scReads, scStores, mid, reads, stores) and readStep(mid.getNode(), mid.getState(), c, node.getNode(), node.getState()) and - pathSucc(mid, node) + mid.getASuccessor() = node ) } From 87eb1ab103272efab51f36e5438b75a83522a979 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Thu, 8 Feb 2024 13:40:10 +0100 Subject: [PATCH 055/113] Ruby: Include ReturnValue and exclude self for constructors --- .../modeleditor/FrameworkModeAccessPaths.ql | 18 +++- .../FrameworkModeAccessPaths.expected | 89 +++++++++---------- .../FrameworkModeEndpoints.expected | 14 +-- .../utils/modeleditor/GenerateModel.expected | 1 + .../utils/modeleditor/lib/mylib.rb | 1 + 5 files changed, 69 insertions(+), 54 deletions(-) diff --git a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql index 87559350048..039fcfbf1c9 100644 --- a/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql +++ b/ruby/ql/src/utils/modeleditor/FrameworkModeAccessPaths.ql @@ -20,7 +20,9 @@ predicate simpleParameters(string type, string path, string value, DataFlow::Nod // Block parameter explicitly excluded because it's already included // as part of the blockArguments predicate paramNode = Util::getAnyParameter(methodNode) and - paramNode != methodNode.getBlockParameter() + paramNode != methodNode.getBlockParameter() and + // The self parameter of a constructor is not a parameter that can be used in any models + (not isConstructor(methodNode) or paramNode != methodNode.getSelfParameter()) ) | Util::pathToMethod(methodNode, type, path) and @@ -60,12 +62,24 @@ predicate returnValue(string type, string path, string value, DataFlow::Node nod exists(DataFlow::MethodNode methodNode, DataFlow::Node returnNode | methodNode.getLocation().getFile() instanceof Util::RelevantFile and returnNode = methodNode.getAReturnNode() and - not isConstructor(methodNode) // A constructor doesn't have a return value + not isConstructor(methodNode) | Util::pathToMethod(methodNode, type, path) and value = "ReturnValue" and node = returnNode ) + or + // A constructor has a return node for every statement, but we always want + // to return 1 node for the ReturnValue, so we return the self parameter + // instead. + exists(DataFlow::MethodNode methodNode | + methodNode.getLocation().getFile() instanceof Util::RelevantFile and + isConstructor(methodNode) + | + Util::pathToMethod(methodNode, type, path) and + value = "ReturnValue" and + node = methodNode.getSelfParameter() + ) } predicate inputAccessPaths( diff --git a/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeAccessPaths.expected b/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeAccessPaths.expected index 6951f1a2322..d190d1ba524 100644 --- a/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeAccessPaths.expected +++ b/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeAccessPaths.expected @@ -1,28 +1,27 @@ input -| A | Method[bar] | Argument[0] | lib/mylib.rb:13:11:13:11 | x | parameter | -| A | Method[bar] | Argument[self] | lib/mylib.rb:13:3:14:5 | self in bar | parameter | -| A | Method[foo] | Argument[0] | lib/mylib.rb:7:11:7:11 | x | parameter | -| A | Method[foo] | Argument[1] | lib/mylib.rb:7:14:7:14 | y | parameter | -| A | Method[foo] | Argument[2] | lib/mylib.rb:7:17:7:20 | key1 | parameter | -| A | Method[foo] | Argument[block] | lib/mylib.rb:8:5:8:32 | call to call | parameter | -| A | Method[foo] | Argument[block] | lib/mylib.rb:10:5:10:26 | yield ... | parameter | -| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:8:16:8:16 | x | parameter | -| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:10:11:10:11 | x | parameter | -| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:8:19:8:19 | y | parameter | -| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:10:14:10:14 | y | parameter | -| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:8:28:8:31 | key1 | parameter | -| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:10:23:10:26 | key1 | parameter | -| A | Method[foo] | Argument[key1:] | lib/mylib.rb:7:17:7:20 | key1 | parameter | -| A | Method[foo] | Argument[self] | lib/mylib.rb:7:3:11:5 | self in foo | parameter | +| A | Method[bar] | Argument[0] | lib/mylib.rb:14:11:14:11 | x | parameter | +| A | Method[bar] | Argument[self] | lib/mylib.rb:14:3:15:5 | self in bar | parameter | +| A | Method[foo] | Argument[0] | lib/mylib.rb:8:11:8:11 | x | parameter | +| A | Method[foo] | Argument[1] | lib/mylib.rb:8:14:8:14 | y | parameter | +| A | Method[foo] | Argument[2] | lib/mylib.rb:8:17:8:20 | key1 | parameter | +| A | Method[foo] | Argument[block] | lib/mylib.rb:9:5:9:32 | call to call | parameter | +| A | Method[foo] | Argument[block] | lib/mylib.rb:11:5:11:26 | yield ... | parameter | +| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:9:16:9:16 | x | parameter | +| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:11:11:11:11 | x | parameter | +| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:9:19:9:19 | y | parameter | +| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:11:14:11:14 | y | parameter | +| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:9:28:9:31 | key1 | parameter | +| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:11:23:11:26 | key1 | parameter | +| A | Method[foo] | Argument[key1:] | lib/mylib.rb:8:17:8:20 | key1 | parameter | +| A | Method[foo] | Argument[self] | lib/mylib.rb:8:3:12:5 | self in foo | parameter | | A! | Method[new] | Argument[0] | lib/mylib.rb:4:18:4:18 | x | parameter | | A! | Method[new] | Argument[1] | lib/mylib.rb:4:21:4:21 | y | parameter | -| A! | Method[new] | Argument[self] | lib/mylib.rb:4:3:5:5 | self in initialize | parameter | -| A! | Method[self_foo] | Argument[0] | lib/mylib.rb:16:21:16:21 | x | parameter | -| A! | Method[self_foo] | Argument[1] | lib/mylib.rb:16:24:16:24 | y | parameter | -| A! | Method[self_foo] | Argument[self] | lib/mylib.rb:16:3:17:5 | self in self_foo | parameter | -| A::ANested | Method[foo] | Argument[0] | lib/mylib.rb:25:13:25:13 | x | parameter | -| A::ANested | Method[foo] | Argument[1] | lib/mylib.rb:25:16:25:16 | y | parameter | -| A::ANested | Method[foo] | Argument[self] | lib/mylib.rb:25:5:26:7 | self in foo | parameter | +| A! | Method[self_foo] | Argument[0] | lib/mylib.rb:17:21:17:21 | x | parameter | +| A! | Method[self_foo] | Argument[1] | lib/mylib.rb:17:24:17:24 | y | parameter | +| A! | Method[self_foo] | Argument[self] | lib/mylib.rb:17:3:18:5 | self in self_foo | parameter | +| A::ANested | Method[foo] | Argument[0] | lib/mylib.rb:26:13:26:13 | x | parameter | +| A::ANested | Method[foo] | Argument[1] | lib/mylib.rb:26:16:26:16 | y | parameter | +| A::ANested | Method[foo] | Argument[self] | lib/mylib.rb:26:5:27:7 | self in foo | parameter | | B | Method[foo] | Argument[0] | lib/other.rb:6:11:6:11 | x | parameter | | B | Method[foo] | Argument[1] | lib/other.rb:6:14:6:14 | y | parameter | | B | Method[foo] | Argument[self] | lib/other.rb:6:3:7:5 | self in foo | parameter | @@ -36,31 +35,31 @@ input | OtherLib::A | Method[foo] | Argument[1] | other_lib/lib/other_gem.rb:3:20:3:20 | y | parameter | | OtherLib::A | Method[foo] | Argument[self] | other_lib/lib/other_gem.rb:3:9:4:11 | self in foo | parameter | output -| A | Method[bar] | Argument[0] | lib/mylib.rb:13:11:13:11 | x | parameter | -| A | Method[bar] | Argument[self] | lib/mylib.rb:13:3:14:5 | self in bar | parameter | -| A | Method[foo] | Argument[0] | lib/mylib.rb:7:11:7:11 | x | parameter | -| A | Method[foo] | Argument[1] | lib/mylib.rb:7:14:7:14 | y | parameter | -| A | Method[foo] | Argument[2] | lib/mylib.rb:7:17:7:20 | key1 | parameter | -| A | Method[foo] | Argument[block] | lib/mylib.rb:8:5:8:32 | call to call | parameter | -| A | Method[foo] | Argument[block] | lib/mylib.rb:10:5:10:26 | yield ... | parameter | -| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:8:16:8:16 | x | parameter | -| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:10:11:10:11 | x | parameter | -| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:8:19:8:19 | y | parameter | -| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:10:14:10:14 | y | parameter | -| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:8:28:8:31 | key1 | parameter | -| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:10:23:10:26 | key1 | parameter | -| A | Method[foo] | Argument[key1:] | lib/mylib.rb:7:17:7:20 | key1 | parameter | -| A | Method[foo] | Argument[self] | lib/mylib.rb:7:3:11:5 | self in foo | parameter | -| A | Method[foo] | ReturnValue | lib/mylib.rb:10:5:10:26 | yield ... | return | +| A | Method[bar] | Argument[0] | lib/mylib.rb:14:11:14:11 | x | parameter | +| A | Method[bar] | Argument[self] | lib/mylib.rb:14:3:15:5 | self in bar | parameter | +| A | Method[foo] | Argument[0] | lib/mylib.rb:8:11:8:11 | x | parameter | +| A | Method[foo] | Argument[1] | lib/mylib.rb:8:14:8:14 | y | parameter | +| A | Method[foo] | Argument[2] | lib/mylib.rb:8:17:8:20 | key1 | parameter | +| A | Method[foo] | Argument[block] | lib/mylib.rb:9:5:9:32 | call to call | parameter | +| A | Method[foo] | Argument[block] | lib/mylib.rb:11:5:11:26 | yield ... | parameter | +| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:9:16:9:16 | x | parameter | +| A | Method[foo] | Argument[block].Parameter[0] | lib/mylib.rb:11:11:11:11 | x | parameter | +| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:9:19:9:19 | y | parameter | +| A | Method[foo] | Argument[block].Parameter[1] | lib/mylib.rb:11:14:11:14 | y | parameter | +| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:9:28:9:31 | key1 | parameter | +| A | Method[foo] | Argument[block].Parameter[key2:] | lib/mylib.rb:11:23:11:26 | key1 | parameter | +| A | Method[foo] | Argument[key1:] | lib/mylib.rb:8:17:8:20 | key1 | parameter | +| A | Method[foo] | Argument[self] | lib/mylib.rb:8:3:12:5 | self in foo | parameter | +| A | Method[foo] | ReturnValue | lib/mylib.rb:11:5:11:26 | yield ... | return | | A! | Method[new] | Argument[0] | lib/mylib.rb:4:18:4:18 | x | parameter | | A! | Method[new] | Argument[1] | lib/mylib.rb:4:21:4:21 | y | parameter | -| A! | Method[new] | Argument[self] | lib/mylib.rb:4:3:5:5 | self in initialize | parameter | -| A! | Method[self_foo] | Argument[0] | lib/mylib.rb:16:21:16:21 | x | parameter | -| A! | Method[self_foo] | Argument[1] | lib/mylib.rb:16:24:16:24 | y | parameter | -| A! | Method[self_foo] | Argument[self] | lib/mylib.rb:16:3:17:5 | self in self_foo | parameter | -| A::ANested | Method[foo] | Argument[0] | lib/mylib.rb:25:13:25:13 | x | parameter | -| A::ANested | Method[foo] | Argument[1] | lib/mylib.rb:25:16:25:16 | y | parameter | -| A::ANested | Method[foo] | Argument[self] | lib/mylib.rb:25:5:26:7 | self in foo | parameter | +| A! | Method[new] | ReturnValue | lib/mylib.rb:4:3:6:5 | self in initialize | return | +| A! | Method[self_foo] | Argument[0] | lib/mylib.rb:17:21:17:21 | x | parameter | +| A! | Method[self_foo] | Argument[1] | lib/mylib.rb:17:24:17:24 | y | parameter | +| A! | Method[self_foo] | Argument[self] | lib/mylib.rb:17:3:18:5 | self in self_foo | parameter | +| A::ANested | Method[foo] | Argument[0] | lib/mylib.rb:26:13:26:13 | x | parameter | +| A::ANested | Method[foo] | Argument[1] | lib/mylib.rb:26:16:26:16 | y | parameter | +| A::ANested | Method[foo] | Argument[self] | lib/mylib.rb:26:5:27:7 | self in foo | parameter | | B | Method[foo] | Argument[0] | lib/other.rb:6:11:6:11 | x | parameter | | B | Method[foo] | Argument[1] | lib/other.rb:6:14:6:14 | y | parameter | | B | Method[foo] | Argument[self] | lib/other.rb:6:3:7:5 | self in foo | parameter | diff --git a/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeEndpoints.expected b/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeEndpoints.expected index a42da32525d..34c43e331fe 100644 --- a/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeEndpoints.expected +++ b/ruby/ql/test/query-tests/utils/modeleditor/FrameworkModeEndpoints.expected @@ -1,13 +1,13 @@ | lib/module.rb:1:1:7:3 | M1 | mylib | M1 | | | false | module.rb | | | lib/module.rb:2:3:3:5 | foo | mylib | M1 | foo | (x,y) | false | module.rb | | | lib/module.rb:5:3:6:5 | self_foo | mylib | M1! | self_foo | (x,y) | false | module.rb | | -| lib/mylib.rb:3:1:33:3 | A | mylib | A | | | false | mylib.rb | | -| lib/mylib.rb:4:3:5:5 | initialize | mylib | A! | new | (x,y) | false | mylib.rb | | -| lib/mylib.rb:7:3:11:5 | foo | mylib | A | foo | (x,y,key1:) | false | mylib.rb | | -| lib/mylib.rb:13:3:14:5 | bar | mylib | A | bar | (x) | false | mylib.rb | | -| lib/mylib.rb:16:3:17:5 | self_foo | mylib | A! | self_foo | (x,y) | false | mylib.rb | | -| lib/mylib.rb:24:3:32:5 | ANested | mylib | A::ANested | | | false | mylib.rb | | -| lib/mylib.rb:25:5:26:7 | foo | mylib | A::ANested | foo | (x,y) | false | mylib.rb | | +| lib/mylib.rb:3:1:34:3 | A | mylib | A | | | false | mylib.rb | | +| lib/mylib.rb:4:3:6:5 | initialize | mylib | A! | new | (x,y) | false | mylib.rb | | +| lib/mylib.rb:8:3:12:5 | foo | mylib | A | foo | (x,y,key1:) | false | mylib.rb | | +| lib/mylib.rb:14:3:15:5 | bar | mylib | A | bar | (x) | false | mylib.rb | | +| lib/mylib.rb:17:3:18:5 | self_foo | mylib | A! | self_foo | (x,y) | false | mylib.rb | | +| lib/mylib.rb:25:3:33:5 | ANested | mylib | A::ANested | | | false | mylib.rb | | +| lib/mylib.rb:26:5:27:7 | foo | mylib | A::ANested | foo | (x,y) | false | mylib.rb | | | lib/other.rb:3:1:8:3 | B | mylib | B | | | false | other.rb | | | lib/other.rb:6:3:7:5 | foo | mylib | B | foo | (x,y) | false | other.rb | | | lib/other.rb:10:1:12:3 | C | mylib | C | | | false | other.rb | | diff --git a/ruby/ql/test/query-tests/utils/modeleditor/GenerateModel.expected b/ruby/ql/test/query-tests/utils/modeleditor/GenerateModel.expected index 67e192dbf99..284c7ed17d5 100644 --- a/ruby/ql/test/query-tests/utils/modeleditor/GenerateModel.expected +++ b/ruby/ql/test/query-tests/utils/modeleditor/GenerateModel.expected @@ -4,3 +4,4 @@ typeVariableModel typeModel | M1 | B | | summaryModel +| A! | Method[new] | Argument[0] | ReturnValue | value | diff --git a/ruby/ql/test/query-tests/utils/modeleditor/lib/mylib.rb b/ruby/ql/test/query-tests/utils/modeleditor/lib/mylib.rb index 66c0d35ac23..fcd3af4e2cc 100644 --- a/ruby/ql/test/query-tests/utils/modeleditor/lib/mylib.rb +++ b/ruby/ql/test/query-tests/utils/modeleditor/lib/mylib.rb @@ -2,6 +2,7 @@ require_relative "./other" class A def initialize(x, y) + @x = x end def foo(x, y, key1:, **kwargs, &block) From a58dd45d0b663c7adad020f89055ee72e32f42a0 Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo Date: Thu, 8 Feb 2024 09:28:34 -0500 Subject: [PATCH 056/113] Revert "Merge pull request #15522 from github/release-prep/2.16.2" This reverts commit c4c8cd6b348d41fc4471564a7487e0e8f0295925, reversing changes made to 525f27173df633b291c4a77a1ba6e723f4190a55. --- cpp/ql/lib/CHANGELOG.md | 7 ------- .../0.12.5.md => 2024-01-30-preproc-block.md} | 8 +++----- .../lib/change-notes/2024-01-30-throwing-model.md | 4 ++++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 10 ---------- .../change-notes/2024-01-19-extracted-files.md | 4 ++++ ...e_positive_incorrect_string_type_conversion.md | 4 ++++ .../2024-01-29-incorrectly-checked-scanf-2.md | 4 ++++ .../2024-01-29-incorrectly-checked-scanf.md | 4 ++++ ...24-01-29-uninitialized-local-false-positive.md | 5 +++++ cpp/ql/src/change-notes/released/0.9.4.md | 9 --------- cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ---- .../Solorigate/lib/change-notes/released/1.7.8.md | 3 --- .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ---- .../Solorigate/src/change-notes/released/1.7.8.md | 3 --- .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 11 ----------- .../2024-01-25-extractor-option-logging.md | 6 ++++++ .../2024-01-26-collection-expression.md | 4 ++++ .../2024-01-31-compilation-expanded-args.md | 5 +++++ csharp/ql/lib/change-notes/released/0.8.8.md | 10 ---------- csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ------ ....8.md => 2024-01-22-url-redirect-sanitizer.md} | 7 +++---- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ---- .../change-notes/released/0.0.7.md | 3 --- go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ---- go/ql/lib/change-notes/released/0.7.8.md | 3 --- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ---- go/ql/src/change-notes/released/0.7.8.md | 3 --- go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ---- .../automodel/src/change-notes/released/0.0.14.md | 3 --- java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 10 ---------- ...3-add-uuid-and-date-to-simpletypesanitizer.md} | 11 +++-------- java/ql/lib/change-notes/2024-01-24-new-models.md | 7 +++++++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 15 ++++----------- ...-01-15-android-sensitive-notification-query.md | 4 ++++ ...24-01-29-android-sensitive-text-field-query.md | 4 ++++ java/ql/src/change-notes/released/0.8.8.md | 6 ------ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ---- javascript/ql/lib/change-notes/released/0.8.8.md | 3 --- javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ---- javascript/ql/src/change-notes/released/0.8.8.md | 3 --- javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ---- misc/suite-helpers/change-notes/released/0.7.8.md | 3 --- misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 10 ---------- .../change-notes/2024-01-21-regex-ascii-flag.md | 4 ++++ .../ql/lib/change-notes/2024-01-22-html-escape.md | 4 ++++ python/ql/lib/change-notes/released/0.11.8.md | 9 --------- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ---- python/ql/src/change-notes/released/0.9.8.md | 3 --- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 6 ------ .../0.8.8.md => 2024-01-22-erb-render-flow.md} | 7 +++---- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 11 ----------- .../2023-12-18-insecure-randomness-query.md | 4 ++++ .../2024-01-30-unsafe-deserialization-sinks.md | 5 +++++ ruby/ql/src/change-notes/released/0.8.8.md | 10 ---------- ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ---- shared/controlflow/change-notes/released/0.1.8.md | 3 --- shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ---- shared/dataflow/change-notes/released/0.1.8.md | 3 --- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ---- shared/mad/change-notes/released/0.2.8.md | 3 --- shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ---- .../rangeanalysis/change-notes/released/0.0.7.md | 3 --- shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ---- shared/regex/change-notes/released/0.2.8.md | 3 --- shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ---- shared/ssa/change-notes/released/0.2.8.md | 3 --- shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ---- .../threat-models/change-notes/released/0.0.7.md | 3 --- shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ---- shared/tutorial/change-notes/released/0.2.8.md | 3 --- shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ---- .../typetracking/change-notes/released/0.2.8.md | 3 --- shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ---- shared/typos/change-notes/released/0.2.8.md | 3 --- shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ---- shared/util/change-notes/released/0.2.8.md | 3 --- shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ---- shared/yaml/change-notes/released/0.2.8.md | 3 --- shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 4 ---- swift/ql/lib/change-notes/released/0.3.8.md | 3 --- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ---- swift/ql/src/change-notes/released/0.3.8.md | 3 --- swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 148 files changed, 154 insertions(+), 381 deletions(-) rename cpp/ql/lib/change-notes/{released/0.12.5.md => 2024-01-30-preproc-block.md} (55%) create mode 100644 cpp/ql/lib/change-notes/2024-01-30-throwing-model.md create mode 100644 cpp/ql/src/change-notes/2024-01-19-extracted-files.md create mode 100644 cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md create mode 100644 cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md create mode 100644 cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md create mode 100644 cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md delete mode 100644 cpp/ql/src/change-notes/released/0.9.4.md delete mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md delete mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md create mode 100644 csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md create mode 100644 csharp/ql/lib/change-notes/2024-01-26-collection-expression.md create mode 100644 csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md delete mode 100644 csharp/ql/lib/change-notes/released/0.8.8.md rename csharp/ql/src/change-notes/{released/0.8.8.md => 2024-01-22-url-redirect-sanitizer.md} (75%) delete mode 100644 go/ql/consistency-queries/change-notes/released/0.0.7.md delete mode 100644 go/ql/lib/change-notes/released/0.7.8.md delete mode 100644 go/ql/src/change-notes/released/0.7.8.md delete mode 100644 java/ql/automodel/src/change-notes/released/0.0.14.md rename java/ql/lib/change-notes/{released/0.8.8.md => 2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md} (52%) create mode 100644 java/ql/lib/change-notes/2024-01-24-new-models.md create mode 100644 java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md create mode 100644 java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md delete mode 100644 java/ql/src/change-notes/released/0.8.8.md delete mode 100644 javascript/ql/lib/change-notes/released/0.8.8.md delete mode 100644 javascript/ql/src/change-notes/released/0.8.8.md delete mode 100644 misc/suite-helpers/change-notes/released/0.7.8.md create mode 100644 python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md create mode 100644 python/ql/lib/change-notes/2024-01-22-html-escape.md delete mode 100644 python/ql/lib/change-notes/released/0.11.8.md delete mode 100644 python/ql/src/change-notes/released/0.9.8.md rename ruby/ql/lib/change-notes/{released/0.8.8.md => 2024-01-22-erb-render-flow.md} (79%) create mode 100644 ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md create mode 100644 ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md delete mode 100644 ruby/ql/src/change-notes/released/0.8.8.md delete mode 100644 shared/controlflow/change-notes/released/0.1.8.md delete mode 100644 shared/dataflow/change-notes/released/0.1.8.md delete mode 100644 shared/mad/change-notes/released/0.2.8.md delete mode 100644 shared/rangeanalysis/change-notes/released/0.0.7.md delete mode 100644 shared/regex/change-notes/released/0.2.8.md delete mode 100644 shared/ssa/change-notes/released/0.2.8.md delete mode 100644 shared/threat-models/change-notes/released/0.0.7.md delete mode 100644 shared/tutorial/change-notes/released/0.2.8.md delete mode 100644 shared/typetracking/change-notes/released/0.2.8.md delete mode 100644 shared/typos/change-notes/released/0.2.8.md delete mode 100644 shared/util/change-notes/released/0.2.8.md delete mode 100644 shared/yaml/change-notes/released/0.2.8.md delete mode 100644 swift/ql/lib/change-notes/released/0.3.8.md delete mode 100644 swift/ql/src/change-notes/released/0.3.8.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index b552a329250..dc092f2ed35 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.12.5 - -### New Features - -* Added the `PreprocBlock.qll` library to this repository. This library offers a view of `#if`, `#elif`, `#else` and similar directives as a tree with navigable parent-child relationships. -* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. - ## 0.12.4 ### Minor Analysis Improvements diff --git a/cpp/ql/lib/change-notes/released/0.12.5.md b/cpp/ql/lib/change-notes/2024-01-30-preproc-block.md similarity index 55% rename from cpp/ql/lib/change-notes/released/0.12.5.md rename to cpp/ql/lib/change-notes/2024-01-30-preproc-block.md index 1ae4668a5c9..6995ec954ff 100644 --- a/cpp/ql/lib/change-notes/released/0.12.5.md +++ b/cpp/ql/lib/change-notes/2024-01-30-preproc-block.md @@ -1,6 +1,4 @@ -## 0.12.5 - -### New Features - +--- +category: feature +--- * Added the `PreprocBlock.qll` library to this repository. This library offers a view of `#if`, `#elif`, `#else` and similar directives as a tree with navigable parent-child relationships. -* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. diff --git a/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md b/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md new file mode 100644 index 00000000000..591cc8cc771 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. \ No newline at end of file diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 79f80ae516c..b458bb47c53 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.5 +lastReleaseVersion: 0.12.4 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index b1b4172e977..f0479b167c6 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.5 +version: 0.12.5-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 44d00c1d8e4..0e67defb949 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,13 +1,3 @@ -## 0.9.4 - -### Minor Analysis Improvements - -* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. - ## 0.9.3 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/2024-01-19-extracted-files.md b/cpp/ql/src/change-notes/2024-01-19-extracted-files.md new file mode 100644 index 00000000000..df6de1576ac --- /dev/null +++ b/cpp/ql/src/change-notes/2024-01-19-extracted-files.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. diff --git a/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md b/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md new file mode 100644 index 00000000000..8f081c746f1 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md new file mode 100644 index 00000000000..cc361145db9 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. diff --git a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md new file mode 100644 index 00000000000..7085b9ce0a8 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. diff --git a/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md b/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md new file mode 100644 index 00000000000..0d07482b755 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. +* ``` \ No newline at end of file diff --git a/cpp/ql/src/change-notes/released/0.9.4.md b/cpp/ql/src/change-notes/released/0.9.4.md deleted file mode 100644 index bc6e71d7054..00000000000 --- a/cpp/ql/src/change-notes/released/0.9.4.md +++ /dev/null @@ -1,9 +0,0 @@ -## 0.9.4 - -### Minor Analysis Improvements - -* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 694907ca221..7af7247cbb0 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.4 +lastReleaseVersion: 0.9.3 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 0da41987b3e..a04a6468617 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.4 +version: 0.9.4-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 1e9fa50c21f..8afcdeb67f3 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.8 - -No user-facing changes. - ## 1.7.7 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md deleted file mode 100644 index 89c236d93c5..00000000000 --- a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.8 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index e003efd5127..df4010bd267 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.8 +lastReleaseVersion: 1.7.7 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 77b1c8b5154..56cadaf8534 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.8 +version: 1.7.8-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 1e9fa50c21f..8afcdeb67f3 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.8 - -No user-facing changes. - ## 1.7.7 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md deleted file mode 100644 index 89c236d93c5..00000000000 --- a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.8 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index e003efd5127..df4010bd267 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.8 +lastReleaseVersion: 1.7.7 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 9851e27c691..0b783c75d5a 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.8 +version: 1.7.8-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 196cd5ecc92..0b168b22df6 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.8.8 - -### Minor Analysis Improvements - -* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments -are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. -* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. -* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The -option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the -corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. - ## 0.8.7 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md b/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md new file mode 100644 index 00000000000..71cb3202675 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md @@ -0,0 +1,6 @@ +--- +category: minorAnalysis +--- +* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The +option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the +corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md b/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md new file mode 100644 index 00000000000..10a958dcf47 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. diff --git a/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md b/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md new file mode 100644 index 00000000000..8767c0d1d65 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments +are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. diff --git a/csharp/ql/lib/change-notes/released/0.8.8.md b/csharp/ql/lib/change-notes/released/0.8.8.md deleted file mode 100644 index 96b317ecd06..00000000000 --- a/csharp/ql/lib/change-notes/released/0.8.8.md +++ /dev/null @@ -1,10 +0,0 @@ -## 0.8.8 - -### Minor Analysis Improvements - -* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments -are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. -* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. -* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The -option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the -corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 2b137281da6..9d8db7347cb 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.8 +version: 0.8.8-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index ac2fbfce855..6572f664b0e 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.8.8 - -### Minor Analysis Improvements - -* Added string interpolation expressions and `string.Format` as possible sanitizers for the `cs/web/unvalidated-url-redirection` query. - ## 0.8.7 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/released/0.8.8.md b/csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md similarity index 75% rename from csharp/ql/src/change-notes/released/0.8.8.md rename to csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md index d6f017bcf41..92a65075a65 100644 --- a/csharp/ql/src/change-notes/released/0.8.8.md +++ b/csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md @@ -1,5 +1,4 @@ -## 0.8.8 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * Added string interpolation expressions and `string.Format` as possible sanitizers for the `cs/web/unvalidated-url-redirection` query. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a16c72edd72..c3973948993 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.8 +version: 0.8.8-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 8f58f5145db..ad2e63eb470 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.7 - -No user-facing changes. - ## 0.0.6 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.7.md b/go/ql/consistency-queries/change-notes/released/0.0.7.md deleted file mode 100644 index 84da6f18c42..00000000000 --- a/go/ql/consistency-queries/change-notes/released/0.0.7.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.7 - -No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index a2a5484910b..cf398ce02aa 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.7 +lastReleaseVersion: 0.0.6 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index c7522dd8e35..88886034408 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.7 +version: 0.0.7-dev groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 475352f1df2..b9ff6e4e0e2 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.8 - -No user-facing changes. - ## 0.7.7 ### Deprecated APIs diff --git a/go/ql/lib/change-notes/released/0.7.8.md b/go/ql/lib/change-notes/released/0.7.8.md deleted file mode 100644 index 5627ed51a17..00000000000 --- a/go/ql/lib/change-notes/released/0.7.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.8 - -No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index b6b12196b26..89cc2330c10 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.8 +lastReleaseVersion: 0.7.7 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 5f317377d45..67c991934e0 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.8 +version: 0.7.8-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 66533a629f2..dafcd7aa695 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.8 - -No user-facing changes. - ## 0.7.7 ### Minor Analysis Improvements diff --git a/go/ql/src/change-notes/released/0.7.8.md b/go/ql/src/change-notes/released/0.7.8.md deleted file mode 100644 index 5627ed51a17..00000000000 --- a/go/ql/src/change-notes/released/0.7.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.8 - -No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index b6b12196b26..89cc2330c10 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.8 +lastReleaseVersion: 0.7.7 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 81654540219..a760c342970 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.8 +version: 0.7.8-dev groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index fa718635e0c..eb9aae31d41 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.14 - -No user-facing changes. - ## 0.0.13 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.14.md b/java/ql/automodel/src/change-notes/released/0.0.14.md deleted file mode 100644 index 63b4d50ca45..00000000000 --- a/java/ql/automodel/src/change-notes/released/0.0.14.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.14 - -No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index ca29e45d0a6..044e54e4f7e 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.14 +lastReleaseVersion: 0.0.13 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 3334223e9e4..0845b6f1761 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.14 +version: 0.0.14-dev groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 4b34106dc09..3621a766e8a 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,13 +1,3 @@ -## 0.8.8 - -### Minor Analysis Improvements - -* Added models for the following packages: - - * com.fasterxml.jackson.databind - * javax.servlet -* Added the `java.util.Date` and `java.util.UUID` classes to the list of types in the `SimpleTypeSanitizer` class in `semmle.code.java.security.Sanitizers`. - ## 0.8.7 ### New Features diff --git a/java/ql/lib/change-notes/released/0.8.8.md b/java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md similarity index 52% rename from java/ql/lib/change-notes/released/0.8.8.md rename to java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md index 62186579014..96d6b9e0334 100644 --- a/java/ql/lib/change-notes/released/0.8.8.md +++ b/java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md @@ -1,9 +1,4 @@ -## 0.8.8 - -### Minor Analysis Improvements - -* Added models for the following packages: - - * com.fasterxml.jackson.databind - * javax.servlet +--- +category: minorAnalysis +--- * Added the `java.util.Date` and `java.util.UUID` classes to the list of types in the `SimpleTypeSanitizer` class in `semmle.code.java.security.Sanitizers`. diff --git a/java/ql/lib/change-notes/2024-01-24-new-models.md b/java/ql/lib/change-notes/2024-01-24-new-models.md new file mode 100644 index 00000000000..8646ac1f0cb --- /dev/null +++ b/java/ql/lib/change-notes/2024-01-24-new-models.md @@ -0,0 +1,7 @@ +--- +category: minorAnalysis +--- +* Added models for the following packages: + + * com.fasterxml.jackson.databind + * javax.servlet diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 6e4e1269d9c..62f4a0d7e96 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.8 +version: 0.8.8-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 466b98fea11..84096230dd1 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.8.8 - -### New Queries - -* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. -* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. - ## 0.8.7 ### New Queries @@ -17,6 +10,10 @@ ## 0.8.6 +### Deprecated Queries + +* The three queries `java/insufficient-key-size`, `java/server-side-template-injection`, and `java/android/implicit-pendingintents` had accidentally general extension points allowing arbitrary string-based flow state. This has been fixed and the old extension points have been deprecated where possible, and otherwise updated. + ### New Queries * Added the `java/insecure-randomness` query to detect uses of weakly random values which an attacker may be able to predict. Also added the `crypto-parameter` sink kind for sinks which represent the parameters and keys of cryptographic operations. @@ -27,10 +24,6 @@ * The query `java/android/missing-certificate-pinning` should no longer alert about requests pointing to the local filesystem. * Removed some spurious sinks related to `com.opensymphony.xwork2.TextProvider.getText` from the query `java/ognl-injection`. -### Bug Fixes - -* The three queries `java/insufficient-key-size`, `java/server-side-template-injection`, and `java/android/implicit-pendingintents` had accidentally general extension points allowing arbitrary string-based flow state. This has been fixed and the old extension points have been deprecated where possible, and otherwise updated. - ## 0.8.5 No user-facing changes. diff --git a/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md b/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md new file mode 100644 index 00000000000..427ebbe94ff --- /dev/null +++ b/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md b/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md new file mode 100644 index 00000000000..5e5156944a7 --- /dev/null +++ b/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/0.8.8.md b/java/ql/src/change-notes/released/0.8.8.md deleted file mode 100644 index 94f005fdca8..00000000000 --- a/java/ql/src/change-notes/released/0.8.8.md +++ /dev/null @@ -1,6 +0,0 @@ -## 0.8.8 - -### New Queries - -* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. -* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 73e8a062ffe..4d0d39baca3 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.8 +version: 0.8.8-dev groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 06e40ac7bd5..29005b5ce87 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.8.8 - -No user-facing changes. - ## 0.8.7 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.8.md b/javascript/ql/lib/change-notes/released/0.8.8.md deleted file mode 100644 index 14d202dac00..00000000000 --- a/javascript/ql/lib/change-notes/released/0.8.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.8.8 - -No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index fa544548ea7..bd0c1a815f3 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.8 +version: 0.8.8-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 300da5225f9..ba868a7d629 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.8.8 - -No user-facing changes. - ## 0.8.7 ### Minor Analysis Improvements diff --git a/javascript/ql/src/change-notes/released/0.8.8.md b/javascript/ql/src/change-notes/released/0.8.8.md deleted file mode 100644 index 14d202dac00..00000000000 --- a/javascript/ql/src/change-notes/released/0.8.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.8.8 - -No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 1ebbfc58787..51a22b542e0 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.8 +version: 0.8.8-dev groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 61d4b001d25..1c10493c9e7 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.8 - -No user-facing changes. - ## 0.7.7 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.8.md b/misc/suite-helpers/change-notes/released/0.7.8.md deleted file mode 100644 index 5627ed51a17..00000000000 --- a/misc/suite-helpers/change-notes/released/0.7.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.8 - -No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index b6b12196b26..89cc2330c10 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.8 +lastReleaseVersion: 0.7.7 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 4db5dfcf454..82d40178d7e 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.8 +version: 0.7.8-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 01692622749..ca684c59320 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,13 +1,3 @@ -## 0.11.8 - -### Minor Analysis Improvements - -* Added `html.escape` as a sanitizer for HTML. - -### Bug Fixes - -* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. - ## 0.11.7 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md b/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md new file mode 100644 index 00000000000..5d8741b1bd3 --- /dev/null +++ b/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. diff --git a/python/ql/lib/change-notes/2024-01-22-html-escape.md b/python/ql/lib/change-notes/2024-01-22-html-escape.md new file mode 100644 index 00000000000..0ae31aee545 --- /dev/null +++ b/python/ql/lib/change-notes/2024-01-22-html-escape.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added `html.escape` as a sanitizer for HTML. diff --git a/python/ql/lib/change-notes/released/0.11.8.md b/python/ql/lib/change-notes/released/0.11.8.md deleted file mode 100644 index d61a4451868..00000000000 --- a/python/ql/lib/change-notes/released/0.11.8.md +++ /dev/null @@ -1,9 +0,0 @@ -## 0.11.8 - -### Minor Analysis Improvements - -* Added `html.escape` as a sanitizer for HTML. - -### Bug Fixes - -* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 345c308d402..59fa16251b6 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.8 +lastReleaseVersion: 0.11.7 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index a2c343cca3f..23bff260f7a 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.8 +version: 0.11.8-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 17931ead8b1..b42dcfd8b31 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.9.8 - -No user-facing changes. - ## 0.9.7 ### Minor Analysis Improvements diff --git a/python/ql/src/change-notes/released/0.9.8.md b/python/ql/src/change-notes/released/0.9.8.md deleted file mode 100644 index d1ca1c4d647..00000000000 --- a/python/ql/src/change-notes/released/0.9.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.9.8 - -No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 9ca6c6f2678..0921a438254 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.8 +lastReleaseVersion: 0.9.7 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 538e5ad799c..5de71eb6e3a 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.8 +version: 0.9.8-dev groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 8a9e4e6c8b7..e9e4507d8df 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.8.8 - -### Minor Analysis Improvements - -* Flow is now tracked through Rails `render` calls, when the argument is a `ViewComponent`. In this case, data flow is tracked into the accompanying `.html.erb` file. - ## 0.8.7 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/released/0.8.8.md b/ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md similarity index 79% rename from ruby/ql/lib/change-notes/released/0.8.8.md rename to ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md index dc4b3dd43e3..f9e68ef580e 100644 --- a/ruby/ql/lib/change-notes/released/0.8.8.md +++ b/ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md @@ -1,5 +1,4 @@ -## 0.8.8 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * Flow is now tracked through Rails `render` calls, when the argument is a `ViewComponent`. In this case, data flow is tracked into the accompanying `.html.erb` file. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 7eb6222e101..8179ac53996 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.8 +version: 0.8.8-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 9eff67dab9e..05a89118b05 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.8.8 - -### New Queries - -* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. - -### Minor Analysis Improvements - -* Added new unsafe deserialization sinks for the ox gem. -* Added an additional unsafe deserialization sink for the oj gem. - ## 0.8.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md b/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md new file mode 100644 index 00000000000..a4b3cd5a1f5 --- /dev/null +++ b/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md b/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md new file mode 100644 index 00000000000..3ba080e91ab --- /dev/null +++ b/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* Added new unsafe deserialization sinks for the ox gem. +* Added an additional unsafe deserialization sink for the oj gem. diff --git a/ruby/ql/src/change-notes/released/0.8.8.md b/ruby/ql/src/change-notes/released/0.8.8.md deleted file mode 100644 index b8aaed87425..00000000000 --- a/ruby/ql/src/change-notes/released/0.8.8.md +++ /dev/null @@ -1,10 +0,0 @@ -## 0.8.8 - -### New Queries - -* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. - -### Minor Analysis Improvements - -* Added new unsafe deserialization sinks for the ox gem. -* Added an additional unsafe deserialization sink for the oj gem. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index da0a61b4048..2ef6dc421f3 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.8 +lastReleaseVersion: 0.8.7 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 7c1995c00e5..6891e0227d3 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.8 +version: 0.8.8-dev groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index d72921d34c1..6635db28abc 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.1.8 - -No user-facing changes. - ## 0.1.7 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.8.md b/shared/controlflow/change-notes/released/0.1.8.md deleted file mode 100644 index 5b20b52baf1..00000000000 --- a/shared/controlflow/change-notes/released/0.1.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.1.8 - -No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 3136ea4a1cc..949d4c64c66 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.8 +lastReleaseVersion: 0.1.7 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 79d4a386cf1..c6c4fb5f728 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.8 +version: 0.1.8-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index e9b6c3bc904..c537cb3bb8e 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.1.8 - -No user-facing changes. - ## 0.1.7 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/0.1.8.md b/shared/dataflow/change-notes/released/0.1.8.md deleted file mode 100644 index 5b20b52baf1..00000000000 --- a/shared/dataflow/change-notes/released/0.1.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.1.8 - -No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 3136ea4a1cc..949d4c64c66 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.8 +lastReleaseVersion: 0.1.7 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index ffb4d0754be..91d1454351c 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.1.8 +version: 0.1.8-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 35042f79b69..438ce8241a6 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.8.md b/shared/mad/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/mad/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index c4eade3b256..31a8e8b7534 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 9ad1339683f..6f334d57356 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.7 - -No user-facing changes. - ## 0.0.6 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.7.md b/shared/rangeanalysis/change-notes/released/0.0.7.md deleted file mode 100644 index 84da6f18c42..00000000000 --- a/shared/rangeanalysis/change-notes/released/0.0.7.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.7 - -No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index a2a5484910b..cf398ce02aa 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.7 +lastReleaseVersion: 0.0.6 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index faa059f069a..6317ae4cac4 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.7 +version: 0.0.7-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index bf0aa553157..267288c38df 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.8.md b/shared/regex/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/regex/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 57aa69e9629..c75c3ca7b2d 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 7c9b57d2b8e..8a920eb7bed 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 ### Minor Analysis Improvements diff --git a/shared/ssa/change-notes/released/0.2.8.md b/shared/ssa/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/ssa/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index f47e195b548..92717e37ccb 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 8f58f5145db..ad2e63eb470 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.7 - -No user-facing changes. - ## 0.0.6 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.7.md b/shared/threat-models/change-notes/released/0.0.7.md deleted file mode 100644 index 84da6f18c42..00000000000 --- a/shared/threat-models/change-notes/released/0.0.7.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.7 - -No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index a2a5484910b..cf398ce02aa 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.7 +lastReleaseVersion: 0.0.6 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index b056dd0d720..4fd423016e2 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.7 +version: 0.0.7-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index bc33883a950..d89b3171dc6 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.8.md b/shared/tutorial/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/tutorial/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 23525cbfc60..573d2d5e5bd 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 4c21bc408be..b47b17710e8 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.8.md b/shared/typetracking/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/typetracking/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 09757c9de82..a35e17dee12 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 2b0bb7d2f75..101d57dbad8 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.8.md b/shared/typos/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/typos/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 4466e61ee0b..bc2565304e4 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 273afd4129b..edfa06a5da2 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.8.md b/shared/util/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/util/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index ae11a5bf58b..cddb6cc42f1 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index e2991032640..c5b3ec6b30e 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.8 - -No user-facing changes. - ## 0.2.7 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.8.md b/shared/yaml/change-notes/released/0.2.8.md deleted file mode 100644 index 2f8aa0dd21e..00000000000 --- a/shared/yaml/change-notes/released/0.2.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.8 - -No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 66ad7f587f8..6d3c0021858 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.8 +lastReleaseVersion: 0.2.7 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 4d656f79862..2680ca9cbb9 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.8 +version: 0.2.8-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index b69d9b9e9a3..f06c4195a35 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.3.8 - -No user-facing changes. - ## 0.3.7 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/0.3.8.md b/swift/ql/lib/change-notes/released/0.3.8.md deleted file mode 100644 index 7e9035d11c1..00000000000 --- a/swift/ql/lib/change-notes/released/0.3.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.3.8 - -No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 4aa0b63b207..939934ffd00 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.8 +lastReleaseVersion: 0.3.7 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 8916abe3bec..bb5078ca42b 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.8 +version: 0.3.8-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 7fe6e54b241..ff380eb0b97 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.3.8 - -No user-facing changes. - ## 0.3.7 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.8.md b/swift/ql/src/change-notes/released/0.3.8.md deleted file mode 100644 index 7e9035d11c1..00000000000 --- a/swift/ql/src/change-notes/released/0.3.8.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.3.8 - -No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 4aa0b63b207..939934ffd00 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.8 +lastReleaseVersion: 0.3.7 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 4a8d3d68e74..e61def6dd27 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.8 +version: 0.3.8-dev groups: - swift - queries From f50dab3d934ddcd3924d45ab4e65acd8882d598b Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 8 Feb 2024 14:45:47 +0000 Subject: [PATCH 057/113] Kotlin 2: Accept loc changes in library-tests/interface-delegate --- .../test-kotlin2/library-tests/interface-delegate/test.expected | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a5576a6c083..8fef9ecf8ff 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(...) { ... } | From 36f01ff31a154511011d7391c53c64492997c495 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 8 Feb 2024 15:25:24 +0000 Subject: [PATCH 058/113] Release preparation for version 2.16.2 --- cpp/ql/lib/CHANGELOG.md | 7 +++++++ .../lib/change-notes/2024-01-30-throwing-model.md | 4 ---- .../0.12.5.md} | 8 +++++--- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 11 +++++++++++ .../change-notes/2024-01-19-extracted-files.md | 4 ---- ...e_positive_incorrect_string_type_conversion.md | 4 ---- .../2024-01-29-incorrectly-checked-scanf-2.md | 4 ---- .../2024-01-29-incorrectly-checked-scanf.md | 4 ---- ...24-01-29-uninitialized-local-false-positive.md | 5 ----- cpp/ql/src/change-notes/released/0.9.4.md | 10 ++++++++++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../Solorigate/lib/change-notes/released/1.7.8.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../Solorigate/src/change-notes/released/1.7.8.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 11 +++++++++++ .../2024-01-25-extractor-option-logging.md | 6 ------ .../2024-01-26-collection-expression.md | 4 ---- .../2024-01-31-compilation-expanded-args.md | 5 ----- csharp/ql/lib/change-notes/released/0.8.8.md | 10 ++++++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../0.8.8.md} | 7 ++++--- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.7.md | 3 +++ go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ++++ go/ql/lib/change-notes/released/0.7.8.md | 3 +++ go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ++++ go/ql/src/change-notes/released/0.7.8.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ .../automodel/src/change-notes/released/0.0.14.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 10 ++++++++++ java/ql/lib/change-notes/2024-01-24-new-models.md | 7 ------- .../0.8.8.md} | 11 ++++++++--- java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 15 +++++++++++---- ...-01-15-android-sensitive-notification-query.md | 4 ---- ...24-01-29-android-sensitive-text-field-query.md | 4 ---- java/ql/src/change-notes/released/0.8.8.md | 6 ++++++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ javascript/ql/lib/change-notes/released/0.8.8.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ javascript/ql/src/change-notes/released/0.8.8.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ misc/suite-helpers/change-notes/released/0.7.8.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 10 ++++++++++ .../change-notes/2024-01-21-regex-ascii-flag.md | 4 ---- .../ql/lib/change-notes/2024-01-22-html-escape.md | 4 ---- python/ql/lib/change-notes/released/0.11.8.md | 9 +++++++++ python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ++++ python/ql/src/change-notes/released/0.9.8.md | 3 +++ python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 6 ++++++ .../0.8.8.md} | 7 ++++--- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 11 +++++++++++ .../2023-12-18-insecure-randomness-query.md | 4 ---- .../2024-01-30-unsafe-deserialization-sinks.md | 5 ----- ruby/ql/src/change-notes/released/0.8.8.md | 10 ++++++++++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ shared/controlflow/change-notes/released/0.1.8.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ shared/dataflow/change-notes/released/0.1.8.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.8.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../rangeanalysis/change-notes/released/0.0.7.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.8.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.8.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../threat-models/change-notes/released/0.0.7.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ shared/tutorial/change-notes/released/0.2.8.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../typetracking/change-notes/released/0.2.8.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.8.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.8.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.8.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 4 ++++ swift/ql/lib/change-notes/released/0.3.8.md | 3 +++ swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.8.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 148 files changed, 383 insertions(+), 154 deletions(-) delete mode 100644 cpp/ql/lib/change-notes/2024-01-30-throwing-model.md rename cpp/ql/lib/change-notes/{2024-01-30-preproc-block.md => released/0.12.5.md} (55%) delete mode 100644 cpp/ql/src/change-notes/2024-01-19-extracted-files.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md delete mode 100644 cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md create mode 100644 cpp/ql/src/change-notes/released/0.9.4.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md delete mode 100644 csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md delete mode 100644 csharp/ql/lib/change-notes/2024-01-26-collection-expression.md delete mode 100644 csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md create mode 100644 csharp/ql/lib/change-notes/released/0.8.8.md rename csharp/ql/src/change-notes/{2024-01-22-url-redirect-sanitizer.md => released/0.8.8.md} (75%) create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.7.md create mode 100644 go/ql/lib/change-notes/released/0.7.8.md create mode 100644 go/ql/src/change-notes/released/0.7.8.md create mode 100644 java/ql/automodel/src/change-notes/released/0.0.14.md delete mode 100644 java/ql/lib/change-notes/2024-01-24-new-models.md rename java/ql/lib/change-notes/{2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md => released/0.8.8.md} (52%) delete mode 100644 java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md delete mode 100644 java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md create mode 100644 java/ql/src/change-notes/released/0.8.8.md create mode 100644 javascript/ql/lib/change-notes/released/0.8.8.md create mode 100644 javascript/ql/src/change-notes/released/0.8.8.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.8.md delete mode 100644 python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md delete mode 100644 python/ql/lib/change-notes/2024-01-22-html-escape.md create mode 100644 python/ql/lib/change-notes/released/0.11.8.md create mode 100644 python/ql/src/change-notes/released/0.9.8.md rename ruby/ql/lib/change-notes/{2024-01-22-erb-render-flow.md => released/0.8.8.md} (79%) delete mode 100644 ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md delete mode 100644 ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md create mode 100644 ruby/ql/src/change-notes/released/0.8.8.md create mode 100644 shared/controlflow/change-notes/released/0.1.8.md create mode 100644 shared/dataflow/change-notes/released/0.1.8.md create mode 100644 shared/mad/change-notes/released/0.2.8.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.7.md create mode 100644 shared/regex/change-notes/released/0.2.8.md create mode 100644 shared/ssa/change-notes/released/0.2.8.md create mode 100644 shared/threat-models/change-notes/released/0.0.7.md create mode 100644 shared/tutorial/change-notes/released/0.2.8.md create mode 100644 shared/typetracking/change-notes/released/0.2.8.md create mode 100644 shared/typos/change-notes/released/0.2.8.md create mode 100644 shared/util/change-notes/released/0.2.8.md create mode 100644 shared/yaml/change-notes/released/0.2.8.md create mode 100644 swift/ql/lib/change-notes/released/0.3.8.md create mode 100644 swift/ql/src/change-notes/released/0.3.8.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index dc092f2ed35..b552a329250 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.12.5 + +### New Features + +* Added the `PreprocBlock.qll` library to this repository. This library offers a view of `#if`, `#elif`, `#else` and similar directives as a tree with navigable parent-child relationships. +* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. + ## 0.12.4 ### Minor Analysis Improvements diff --git a/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md b/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md deleted file mode 100644 index 591cc8cc771..00000000000 --- a/cpp/ql/lib/change-notes/2024-01-30-throwing-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-01-30-preproc-block.md b/cpp/ql/lib/change-notes/released/0.12.5.md similarity index 55% rename from cpp/ql/lib/change-notes/2024-01-30-preproc-block.md rename to cpp/ql/lib/change-notes/released/0.12.5.md index 6995ec954ff..1ae4668a5c9 100644 --- a/cpp/ql/lib/change-notes/2024-01-30-preproc-block.md +++ b/cpp/ql/lib/change-notes/released/0.12.5.md @@ -1,4 +1,6 @@ ---- -category: feature ---- +## 0.12.5 + +### New Features + * Added the `PreprocBlock.qll` library to this repository. This library offers a view of `#if`, `#elif`, `#else` and similar directives as a tree with navigable parent-child relationships. +* Added a new `ThrowingFunction` abstract class that can be used to model an external function that may throw an exception. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index b458bb47c53..79f80ae516c 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.4 +lastReleaseVersion: 0.12.5 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index f0479b167c6..b1b4172e977 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.5-dev +version: 0.12.5 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 0e67defb949..68bcdbc5b07 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.9.4 + +### Minor Analysis Improvements + +* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. +* ``` +* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. + ## 0.9.3 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/2024-01-19-extracted-files.md b/cpp/ql/src/change-notes/2024-01-19-extracted-files.md deleted file mode 100644 index df6de1576ac..00000000000 --- a/cpp/ql/src/change-notes/2024-01-19-extracted-files.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. diff --git a/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md b/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md deleted file mode 100644 index 8f081c746f1..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-false_positive_incorrect_string_type_conversion.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md deleted file mode 100644 index cc361145db9..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf-2.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. diff --git a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md b/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md deleted file mode 100644 index 7085b9ce0a8..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-incorrectly-checked-scanf.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. diff --git a/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md b/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md deleted file mode 100644 index 0d07482b755..00000000000 --- a/cpp/ql/src/change-notes/2024-01-29-uninitialized-local-false-positive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* ``` \ No newline at end of file diff --git a/cpp/ql/src/change-notes/released/0.9.4.md b/cpp/ql/src/change-notes/released/0.9.4.md new file mode 100644 index 00000000000..6525a90f9bb --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.9.4.md @@ -0,0 +1,10 @@ +## 0.9.4 + +### Minor Analysis Improvements + +* Corrected 2 false positive with `cpp/incorrect-string-type-conversion`: conversion of byte arrays to wchar and new array allocations converted to wchar. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. +* The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. +* ``` +* The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 7af7247cbb0..694907ca221 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.3 +lastReleaseVersion: 0.9.4 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index a04a6468617..0da41987b3e 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.4-dev +version: 0.9.4 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 8afcdeb67f3..1e9fa50c21f 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.8 + +No user-facing changes. + ## 1.7.7 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md new file mode 100644 index 00000000000..89c236d93c5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.8.md @@ -0,0 +1,3 @@ +## 1.7.8 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index df4010bd267..e003efd5127 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.7 +lastReleaseVersion: 1.7.8 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 56cadaf8534..77b1c8b5154 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.8-dev +version: 1.7.8 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 8afcdeb67f3..1e9fa50c21f 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.8 + +No user-facing changes. + ## 1.7.7 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md new file mode 100644 index 00000000000..89c236d93c5 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.8.md @@ -0,0 +1,3 @@ +## 1.7.8 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index df4010bd267..e003efd5127 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.7 +lastReleaseVersion: 1.7.8 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 0b783c75d5a..9851e27c691 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.8-dev +version: 1.7.8 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 0b168b22df6..196cd5ecc92 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments +are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. +* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. +* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The +option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the +corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md b/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md deleted file mode 100644 index 71cb3202675..00000000000 --- a/csharp/ql/lib/change-notes/2024-01-25-extractor-option-logging.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: minorAnalysis ---- -* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The -option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the -corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md b/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md deleted file mode 100644 index 10a958dcf47..00000000000 --- a/csharp/ql/lib/change-notes/2024-01-26-collection-expression.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. diff --git a/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md b/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md deleted file mode 100644 index 8767c0d1d65..00000000000 --- a/csharp/ql/lib/change-notes/2024-01-31-compilation-expanded-args.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments -are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. diff --git a/csharp/ql/lib/change-notes/released/0.8.8.md b/csharp/ql/lib/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..96b317ecd06 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.8.md @@ -0,0 +1,10 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added a new database relation to store compiler arguments specified inside `@[...].rsp` file arguments. The arguments +are returned by `Compilation::getExpandedArgument/1` and `Compilation::getExpandedArguments/0`. +* C# 12: Added extractor, QL library and data flow support for collection expressions like `[1, y, 4, .. x]`. +* The C# extractor now accepts an extractor option `logging.verbosity` that specifies the verbosity of the logs. The +option is added via `codeql database create --language=csharp -Ologging.verbosity=debug ...` or by setting the +corresponding environment variable `CODEQL_EXTRACTOR_CSHARP_OPTION_LOGGING_VERBOSITY`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 9d8db7347cb..2b137281da6 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.8-dev +version: 0.8.8 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 6572f664b0e..ac2fbfce855 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added string interpolation expressions and `string.Format` as possible sanitizers for the `cs/web/unvalidated-url-redirection` query. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md b/csharp/ql/src/change-notes/released/0.8.8.md similarity index 75% rename from csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md rename to csharp/ql/src/change-notes/released/0.8.8.md index 92a65075a65..d6f017bcf41 100644 --- a/csharp/ql/src/change-notes/2024-01-22-url-redirect-sanitizer.md +++ b/csharp/ql/src/change-notes/released/0.8.8.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.8.8 + +### Minor Analysis Improvements + * Added string interpolation expressions and `string.Format` as possible sanitizers for the `cs/web/unvalidated-url-redirection` query. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index c3973948993..a16c72edd72 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.8-dev +version: 0.8.8 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index ad2e63eb470..8f58f5145db 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.7.md b/go/ql/consistency-queries/change-notes/released/0.0.7.md new file mode 100644 index 00000000000..84da6f18c42 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index cf398ce02aa..a2a5484910b 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.7 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 88886034408..c7522dd8e35 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.7-dev +version: 0.0.7 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index b9ff6e4e0e2..475352f1df2 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.8 + +No user-facing changes. + ## 0.7.7 ### Deprecated APIs diff --git a/go/ql/lib/change-notes/released/0.7.8.md b/go/ql/lib/change-notes/released/0.7.8.md new file mode 100644 index 00000000000..5627ed51a17 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.7.8.md @@ -0,0 +1,3 @@ +## 0.7.8 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 89cc2330c10..b6b12196b26 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.7 +lastReleaseVersion: 0.7.8 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 67c991934e0..5f317377d45 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.8-dev +version: 0.7.8 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index dafcd7aa695..66533a629f2 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.8 + +No user-facing changes. + ## 0.7.7 ### Minor Analysis Improvements diff --git a/go/ql/src/change-notes/released/0.7.8.md b/go/ql/src/change-notes/released/0.7.8.md new file mode 100644 index 00000000000..5627ed51a17 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.8.md @@ -0,0 +1,3 @@ +## 0.7.8 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 89cc2330c10..b6b12196b26 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.7 +lastReleaseVersion: 0.7.8 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index a760c342970..81654540219 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.8-dev +version: 0.7.8 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index eb9aae31d41..fa718635e0c 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.14 + +No user-facing changes. + ## 0.0.13 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.14.md b/java/ql/automodel/src/change-notes/released/0.0.14.md new file mode 100644 index 00000000000..63b4d50ca45 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.14.md @@ -0,0 +1,3 @@ +## 0.0.14 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index 044e54e4f7e..ca29e45d0a6 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.13 +lastReleaseVersion: 0.0.14 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 0845b6f1761..3334223e9e4 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.14-dev +version: 0.0.14 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 3621a766e8a..4b34106dc09 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Added models for the following packages: + + * com.fasterxml.jackson.databind + * javax.servlet +* Added the `java.util.Date` and `java.util.UUID` classes to the list of types in the `SimpleTypeSanitizer` class in `semmle.code.java.security.Sanitizers`. + ## 0.8.7 ### New Features diff --git a/java/ql/lib/change-notes/2024-01-24-new-models.md b/java/ql/lib/change-notes/2024-01-24-new-models.md deleted file mode 100644 index 8646ac1f0cb..00000000000 --- a/java/ql/lib/change-notes/2024-01-24-new-models.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the following packages: - - * com.fasterxml.jackson.databind - * javax.servlet diff --git a/java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md b/java/ql/lib/change-notes/released/0.8.8.md similarity index 52% rename from java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md rename to java/ql/lib/change-notes/released/0.8.8.md index 96d6b9e0334..62186579014 100644 --- a/java/ql/lib/change-notes/2024-01-23-add-uuid-and-date-to-simpletypesanitizer.md +++ b/java/ql/lib/change-notes/released/0.8.8.md @@ -1,4 +1,9 @@ ---- -category: minorAnalysis ---- +## 0.8.8 + +### Minor Analysis Improvements + +* Added models for the following packages: + + * com.fasterxml.jackson.databind + * javax.servlet * Added the `java.util.Date` and `java.util.UUID` classes to the list of types in the `SimpleTypeSanitizer` class in `semmle.code.java.security.Sanitizers`. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 62f4a0d7e96..6e4e1269d9c 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.8-dev +version: 0.8.8 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 84096230dd1..466b98fea11 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.8.8 + +### New Queries + +* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. +* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. + ## 0.8.7 ### New Queries @@ -10,10 +17,6 @@ ## 0.8.6 -### Deprecated Queries - -* The three queries `java/insufficient-key-size`, `java/server-side-template-injection`, and `java/android/implicit-pendingintents` had accidentally general extension points allowing arbitrary string-based flow state. This has been fixed and the old extension points have been deprecated where possible, and otherwise updated. - ### New Queries * Added the `java/insecure-randomness` query to detect uses of weakly random values which an attacker may be able to predict. Also added the `crypto-parameter` sink kind for sinks which represent the parameters and keys of cryptographic operations. @@ -24,6 +27,10 @@ * The query `java/android/missing-certificate-pinning` should no longer alert about requests pointing to the local filesystem. * Removed some spurious sinks related to `com.opensymphony.xwork2.TextProvider.getText` from the query `java/ognl-injection`. +### Bug Fixes + +* The three queries `java/insufficient-key-size`, `java/server-side-template-injection`, and `java/android/implicit-pendingintents` had accidentally general extension points allowing arbitrary string-based flow state. This has been fixed and the old extension points have been deprecated where possible, and otherwise updated. + ## 0.8.5 No user-facing changes. diff --git a/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md b/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md deleted file mode 100644 index 427ebbe94ff..00000000000 --- a/java/ql/src/change-notes/2024-01-15-android-sensitive-notification-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md b/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md deleted file mode 100644 index 5e5156944a7..00000000000 --- a/java/ql/src/change-notes/2024-01-29-android-sensitive-text-field-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/0.8.8.md b/java/ql/src/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..94f005fdca8 --- /dev/null +++ b/java/ql/src/change-notes/released/0.8.8.md @@ -0,0 +1,6 @@ +## 0.8.8 + +### New Queries + +* Added a new query `java/android/sensitive-text` to detect instances of sensitive data being exposed through text fields without being properly masked. +* Added a new query `java/android/sensitive-notification` to detect instances of sensitive data being exposed through Android notifications. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 4d0d39baca3..73e8a062ffe 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.8-dev +version: 0.8.8 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 29005b5ce87..06e40ac7bd5 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.8 + +No user-facing changes. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.8.md b/javascript/ql/lib/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..14d202dac00 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.8.md @@ -0,0 +1,3 @@ +## 0.8.8 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index bd0c1a815f3..fa544548ea7 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.8-dev +version: 0.8.8 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index ba868a7d629..300da5225f9 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.8 + +No user-facing changes. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/javascript/ql/src/change-notes/released/0.8.8.md b/javascript/ql/src/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..14d202dac00 --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.8.md @@ -0,0 +1,3 @@ +## 0.8.8 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 51a22b542e0..1ebbfc58787 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.8-dev +version: 0.8.8 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 1c10493c9e7..61d4b001d25 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.8 + +No user-facing changes. + ## 0.7.7 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.8.md b/misc/suite-helpers/change-notes/released/0.7.8.md new file mode 100644 index 00000000000..5627ed51a17 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.8.md @@ -0,0 +1,3 @@ +## 0.7.8 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 89cc2330c10..b6b12196b26 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.7 +lastReleaseVersion: 0.7.8 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 82d40178d7e..4db5dfcf454 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.8-dev +version: 0.7.8 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index ca684c59320..01692622749 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.11.8 + +### Minor Analysis Improvements + +* Added `html.escape` as a sanitizer for HTML. + +### Bug Fixes + +* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. + ## 0.11.7 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md b/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md deleted file mode 100644 index 5d8741b1bd3..00000000000 --- a/python/ql/lib/change-notes/2024-01-21-regex-ascii-flag.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. diff --git a/python/ql/lib/change-notes/2024-01-22-html-escape.md b/python/ql/lib/change-notes/2024-01-22-html-escape.md deleted file mode 100644 index 0ae31aee545..00000000000 --- a/python/ql/lib/change-notes/2024-01-22-html-escape.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added `html.escape` as a sanitizer for HTML. diff --git a/python/ql/lib/change-notes/released/0.11.8.md b/python/ql/lib/change-notes/released/0.11.8.md new file mode 100644 index 00000000000..d61a4451868 --- /dev/null +++ b/python/ql/lib/change-notes/released/0.11.8.md @@ -0,0 +1,9 @@ +## 0.11.8 + +### Minor Analysis Improvements + +* Added `html.escape` as a sanitizer for HTML. + +### Bug Fixes + +* Fixed the `a` (ASCII) inline flag not being recognized by the regular expression library. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 59fa16251b6..345c308d402 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.7 +lastReleaseVersion: 0.11.8 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 23bff260f7a..a2c343cca3f 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.8-dev +version: 0.11.8 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index b42dcfd8b31..17931ead8b1 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.8 + +No user-facing changes. + ## 0.9.7 ### Minor Analysis Improvements diff --git a/python/ql/src/change-notes/released/0.9.8.md b/python/ql/src/change-notes/released/0.9.8.md new file mode 100644 index 00000000000..d1ca1c4d647 --- /dev/null +++ b/python/ql/src/change-notes/released/0.9.8.md @@ -0,0 +1,3 @@ +## 0.9.8 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 0921a438254..9ca6c6f2678 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.7 +lastReleaseVersion: 0.9.8 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 5de71eb6e3a..538e5ad799c 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.8-dev +version: 0.9.8 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index e9e4507d8df..8a9e4e6c8b7 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.8 + +### Minor Analysis Improvements + +* Flow is now tracked through Rails `render` calls, when the argument is a `ViewComponent`. In this case, data flow is tracked into the accompanying `.html.erb` file. + ## 0.8.7 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md b/ruby/ql/lib/change-notes/released/0.8.8.md similarity index 79% rename from ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md rename to ruby/ql/lib/change-notes/released/0.8.8.md index f9e68ef580e..dc4b3dd43e3 100644 --- a/ruby/ql/lib/change-notes/2024-01-22-erb-render-flow.md +++ b/ruby/ql/lib/change-notes/released/0.8.8.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.8.8 + +### Minor Analysis Improvements + * Flow is now tracked through Rails `render` calls, when the argument is a `ViewComponent`. In this case, data flow is tracked into the accompanying `.html.erb` file. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 8179ac53996..7eb6222e101 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.8-dev +version: 0.8.8 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 05a89118b05..9eff67dab9e 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.8 + +### New Queries + +* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. + +### Minor Analysis Improvements + +* Added new unsafe deserialization sinks for the ox gem. +* Added an additional unsafe deserialization sink for the oj gem. + ## 0.8.7 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md b/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md deleted file mode 100644 index a4b3cd5a1f5..00000000000 --- a/ruby/ql/src/change-notes/2023-12-18-insecure-randomness-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md b/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md deleted file mode 100644 index 3ba080e91ab..00000000000 --- a/ruby/ql/src/change-notes/2024-01-30-unsafe-deserialization-sinks.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Added new unsafe deserialization sinks for the ox gem. -* Added an additional unsafe deserialization sink for the oj gem. diff --git a/ruby/ql/src/change-notes/released/0.8.8.md b/ruby/ql/src/change-notes/released/0.8.8.md new file mode 100644 index 00000000000..b8aaed87425 --- /dev/null +++ b/ruby/ql/src/change-notes/released/0.8.8.md @@ -0,0 +1,10 @@ +## 0.8.8 + +### New Queries + +* Added a new experimental query, `rb/insecure-randomness`, to detect when application uses random values that are not cryptographically secure. + +### Minor Analysis Improvements + +* Added new unsafe deserialization sinks for the ox gem. +* Added an additional unsafe deserialization sink for the oj gem. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 2ef6dc421f3..da0a61b4048 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.7 +lastReleaseVersion: 0.8.8 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 6891e0227d3..7c1995c00e5 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.8-dev +version: 0.8.8 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 6635db28abc..d72921d34c1 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.8 + +No user-facing changes. + ## 0.1.7 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.8.md b/shared/controlflow/change-notes/released/0.1.8.md new file mode 100644 index 00000000000..5b20b52baf1 --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.8.md @@ -0,0 +1,3 @@ +## 0.1.8 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 949d4c64c66..3136ea4a1cc 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.7 +lastReleaseVersion: 0.1.8 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index c6c4fb5f728..79d4a386cf1 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.8-dev +version: 0.1.8 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index c537cb3bb8e..e9b6c3bc904 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.8 + +No user-facing changes. + ## 0.1.7 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/0.1.8.md b/shared/dataflow/change-notes/released/0.1.8.md new file mode 100644 index 00000000000..5b20b52baf1 --- /dev/null +++ b/shared/dataflow/change-notes/released/0.1.8.md @@ -0,0 +1,3 @@ +## 0.1.8 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 949d4c64c66..3136ea4a1cc 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.7 +lastReleaseVersion: 0.1.8 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 91d1454351c..ffb4d0754be 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.1.8-dev +version: 0.1.8 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 438ce8241a6..35042f79b69 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.8.md b/shared/mad/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/mad/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 31a8e8b7534..c4eade3b256 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 6f334d57356..9ad1339683f 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.7.md b/shared/rangeanalysis/change-notes/released/0.0.7.md new file mode 100644 index 00000000000..84da6f18c42 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index cf398ce02aa..a2a5484910b 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.7 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 6317ae4cac4..faa059f069a 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.7-dev +version: 0.0.7 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 267288c38df..bf0aa553157 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.8.md b/shared/regex/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/regex/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index c75c3ca7b2d..57aa69e9629 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 8a920eb7bed..7c9b57d2b8e 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 ### Minor Analysis Improvements diff --git a/shared/ssa/change-notes/released/0.2.8.md b/shared/ssa/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 92717e37ccb..f47e195b548 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index ad2e63eb470..8f58f5145db 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 + +No user-facing changes. + ## 0.0.6 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.7.md b/shared/threat-models/change-notes/released/0.0.7.md new file mode 100644 index 00000000000..84da6f18c42 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.7.md @@ -0,0 +1,3 @@ +## 0.0.7 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index cf398ce02aa..a2a5484910b 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.6 +lastReleaseVersion: 0.0.7 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 4fd423016e2..b056dd0d720 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.7-dev +version: 0.0.7 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index d89b3171dc6..bc33883a950 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.8.md b/shared/tutorial/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 573d2d5e5bd..23525cbfc60 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index b47b17710e8..4c21bc408be 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.8.md b/shared/typetracking/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index a35e17dee12..09757c9de82 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 101d57dbad8..2b0bb7d2f75 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.8.md b/shared/typos/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/typos/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index bc2565304e4..4466e61ee0b 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index edfa06a5da2..273afd4129b 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.8.md b/shared/util/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/util/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index cddb6cc42f1..ae11a5bf58b 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index c5b3ec6b30e..e2991032640 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.8 + +No user-facing changes. + ## 0.2.7 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.8.md b/shared/yaml/change-notes/released/0.2.8.md new file mode 100644 index 00000000000..2f8aa0dd21e --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.8.md @@ -0,0 +1,3 @@ +## 0.2.8 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 6d3c0021858..66ad7f587f8 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.7 +lastReleaseVersion: 0.2.8 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 2680ca9cbb9..4d656f79862 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.8-dev +version: 0.2.8 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index f06c4195a35..b69d9b9e9a3 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.8 + +No user-facing changes. + ## 0.3.7 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/0.3.8.md b/swift/ql/lib/change-notes/released/0.3.8.md new file mode 100644 index 00000000000..7e9035d11c1 --- /dev/null +++ b/swift/ql/lib/change-notes/released/0.3.8.md @@ -0,0 +1,3 @@ +## 0.3.8 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 939934ffd00..4aa0b63b207 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.7 +lastReleaseVersion: 0.3.8 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index bb5078ca42b..8916abe3bec 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.8-dev +version: 0.3.8 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index ff380eb0b97..7fe6e54b241 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.8 + +No user-facing changes. + ## 0.3.7 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.8.md b/swift/ql/src/change-notes/released/0.3.8.md new file mode 100644 index 00000000000..7e9035d11c1 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.8.md @@ -0,0 +1,3 @@ +## 0.3.8 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 939934ffd00..4aa0b63b207 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.7 +lastReleaseVersion: 0.3.8 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index e61def6dd27..4a8d3d68e74 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.8-dev +version: 0.3.8 groups: - swift - queries From 78ce857ef2e22d64a37ebf5431b576ac0b2cb53a Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 8 Feb 2024 15:27:53 +0000 Subject: [PATCH 059/113] C++: Add consistency test and accept consistency failures. --- .../dataflow-tests/type-bugs.expected | 119 ++++++++++++++++++ .../dataflow/dataflow-tests/type-bugs.ql | 11 ++ 2 files changed, 130 insertions(+) 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 c63c723118b..99e74b0a06b 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,122 @@ astTypeBugs irTypeBugs +incorrectBaseType +| BarrierGuard.cpp:75:15:75:17 | *buf | Expected 'Node.getType()' to be const int, but it was int | +| clang.cpp:18:8:18:19 | *sourceArray1 | Expected 'Node.getType()' to be const int, but it was int | +| 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 * | +| clang.cpp:52:8:52:17 | *stackArray | Expected 'Node.getType()' to be const int, but it was int | +| dispatch.cpp:60:3:60:14 | *globalBottom | Expected 'Node.getType()' to be Top, but it was Top * | +| dispatch.cpp:61:3:61:14 | *globalMiddle | Expected 'Node.getType()' to be Top, but it was Top * | +| example.c:19:6:19:6 | *b | Expected 'Node.getType()' to be MyBool, but it was (unnamed class/struct/union) | +| example.c:26:18:26:24 | *& ... | Expected 'Node.getType()' to be MyCoords, but it was (unnamed class/struct/union) | +| file://:0:0:0:0 | *this | Expected 'Node.getType()' to be const lambda [] type at line 13, col. 11, but it was decltype([...](...){...}) | +| flowOut.cpp:50:14:50:15 | *& ... | Expected 'Node.getType()' to be int, but it was int * | +| flowOut.cpp:67:21:67:21 | *p | Expected 'Node.getType()' to be const char, but it was char | +| 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 * | +| flowOut.cpp:111:34:111:34 | *p | Expected 'Node.getType()' to be const void, but it was void | +| flowOut.cpp:139:30:139:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | +| flowOut.cpp:154:30:154:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | +| flowOut.cpp:168:3:168:10 | ** ... | Expected 'Node.getType()' to be char, but it was char * | +| flowOut.cpp:176:30:176:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | +| flowOut.cpp:193:30:193:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | +| lambdas.cpp:14:3:14:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 13, col. 11, but it was decltype([...](...){...}) | +| lambdas.cpp:15:3:15:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 13, col. 11, but it was decltype([...](...){...}) | +| lambdas.cpp:21:3:21:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 20, col. 11, but it was decltype([...](...){...}) | +| lambdas.cpp:22:3:22:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 20, col. 11, but it was decltype([...](...){...}) | +| lambdas.cpp:23:3:23:14 | *this | Expected 'Node.getType()' to be const lambda [] type at line 20, col. 11, but it was decltype([...](...){...}) | +| lambdas.cpp:29:3:29:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 28, col. 11, but it was decltype([...](...){...}) | +| lambdas.cpp:30:3:30:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 28, col. 11, but it was decltype([...](...){...}) | +| 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:67:28:67:37 | *call to move | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:70:19:70:33 | *x3 | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:71:8:71:9 | *x4 | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:384:16:384:23 | *& ... | Expected 'Node.getType()' to be const void, but it was void | +| test.cpp:391:16:391:23 | *& ... | Expected 'Node.getType()' to be const void, but it was void | +| test.cpp:400:16:400:22 | *& ... | Expected 'Node.getType()' to be const void, but it was void | +| test.cpp:407:16:407:22 | *& ... | Expected 'Node.getType()' to be const void, but it was void | +| test.cpp:526:3:526:4 | ** ... | Expected 'Node.getType()' to be const int *, but it was int * | +| test.cpp:526:3:526:4 | ** ... | Expected 'Node.getType()' to be const int, but it was int * | +| test.cpp:526:8:526:9 | *& ... | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:531:39:531:40 | *& ... | 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 int * | +| test.cpp:562:5:562:13 | *globalInt | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:576:5:576:13 | *globalInt | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:584:3:584:3 | *x | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:596:3:596:7 | *access to array | Expected 'Node.getType()' to be int, but it was 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:727:3:727:3 | *p | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:797:31:797:39 | *content | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:808:5:808:21 | ** ... | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:832:5:832:17 | *global_direct | Expected 'Node.getType()' to be int *, but it was int ** | +| 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:860:54:860:59 | *call to source | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:861:10:861:37 | *static_local_pointer_dynamic | 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 | +| test.cpp:872:46:872:51 | *call to source | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:875:10:875:31 | *global_pointer_dynamic | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:882:10:882:34 | *static_local_array_static | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:883:10:883:45 | *static_local_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:884:19:884:54 | *static_local_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:885:10:885:45 | *static_local_array_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:886:19:886:54 | *static_local_array_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:890:54:890:61 | *source | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:891:65:891:84 | *indirect_source(1) | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:892:65:892:84 | *indirect_source(2) | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:893:10:893:36 | *static_local_pointer_static | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:894:10:894:47 | *static_local_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:895:19:895:56 | *static_local_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:896:10:896:47 | *static_local_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:897:19:897:56 | *static_local_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:905:10:905:28 | *global_array_static | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:907:10:907:39 | *global_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:909:19:909:37 | *global_array_static | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:910:19:910:48 | *global_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:911:19:911:48 | *global_array_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:914:46:914:53 | *source | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:915:57:915:76 | *indirect_source(1) | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:916:57:916:76 | *indirect_source(2) | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:919:10:919:30 | *global_pointer_static | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:920:10:920:41 | *global_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:921:19:921:50 | *global_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:922:10:922:41 | *global_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:923:19:923:50 | *global_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:931:5:931:18 | *global_pointer | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:952:32:952:35 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:959:32:959:35 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:967:33:967:38 | *domain | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:967:41:967:44 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:975:33:975:38 | *domain | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:975:41:975:44 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:984:33:984:36 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:984:39:984:40 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:988:5:988:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | +| test.cpp:988:27:988:28 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:988:31:988:34 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:997:33:997:36 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:997:39:997:40 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1001:5:1001:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | +| test.cpp:1001:27:1001:28 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1001:31:1001:34 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1011:34:1011:39 | *domain | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1011:42:1011:45 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1011:48:1011:49 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1015:5:1015:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | +| test.cpp:1015:28:1015:33 | *domain | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1015:36:1015:37 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1015:40:1015:43 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1025:34:1025:39 | *domain | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1025:42:1025:45 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1025:48:1025:49 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1029:5:1029:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | +| test.cpp:1029:28:1029:33 | *domain | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1029:36:1029:37 | *np | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1029:40:1029:43 | *data | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1036:33:1036:38 | *domain | Expected 'Node.getType()' to be const char, but it was char | +| test.cpp:1036:41:1036:47 | *0 | Expected 'Node.getType()' to be const char, but it was char | 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 5ff9204f305..b246f392a8d 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 From 4d01a931079911ccb7763f8aa0b2b252b4ed86bf Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 8 Feb 2024 16:49:15 +0000 Subject: [PATCH 060/113] C++: Use 'getUnderlyingType' instead of 'getUnspecifiedType'. --- .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 25 ++--- .../cpp/ir/dataflow/internal/SsaInternals.qll | 19 +++- .../dataflow-tests/type-bugs.expected | 92 +------------------ 3 files changed, 33 insertions(+), 103 deletions(-) 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 1af95d1bd69..003155fd451 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) @@ -942,11 +942,14 @@ private Type getTypeImpl0(Type t, int indirectionIndex) { or 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`. + stripped = stripPointer(t) 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`. + // To be on the safe side, we check whether the _unspecified_ type has + // changed since this also prevents an infinite loop for occuring when + // `stripped` and `t` only differ by const'ness or volatile'ness. stripped.getUnspecifiedType() != t.getUnspecifiedType() and result = getTypeImpl0(stripped, indirectionIndex - 1) ) @@ -1001,7 +1004,7 @@ private module RawIndirectNodes { 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) ) } @@ -1043,7 +1046,7 @@ private module RawIndirectNodes { 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 +1139,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 +1792,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/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 3e7cfbe9e11..7c2d92fee99 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 @@ -548,6 +548,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 +596,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() } @@ -1115,6 +1125,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/test/library-tests/dataflow/dataflow-tests/type-bugs.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected index 99e74b0a06b..29457971989 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,47 +1,18 @@ astTypeBugs irTypeBugs incorrectBaseType -| BarrierGuard.cpp:75:15:75:17 | *buf | Expected 'Node.getType()' to be const int, but it was int | -| clang.cpp:18:8:18:19 | *sourceArray1 | Expected 'Node.getType()' to be const int, but it was int | | 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 * | -| clang.cpp:52:8:52:17 | *stackArray | Expected 'Node.getType()' to be const int, but it was int | | dispatch.cpp:60:3:60:14 | *globalBottom | Expected 'Node.getType()' to be Top, but it was Top * | | dispatch.cpp:61:3:61:14 | *globalMiddle | Expected 'Node.getType()' to be Top, but it was Top * | -| example.c:19:6:19:6 | *b | Expected 'Node.getType()' to be MyBool, but it was (unnamed class/struct/union) | -| example.c:26:18:26:24 | *& ... | Expected 'Node.getType()' to be MyCoords, but it was (unnamed class/struct/union) | -| file://:0:0:0:0 | *this | Expected 'Node.getType()' to be const lambda [] type at line 13, col. 11, but it was decltype([...](...){...}) | | flowOut.cpp:50:14:50:15 | *& ... | Expected 'Node.getType()' to be int, but it was int * | -| flowOut.cpp:67:21:67:21 | *p | Expected 'Node.getType()' to be const char, but it was char | | 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 * | -| flowOut.cpp:111:34:111:34 | *p | Expected 'Node.getType()' to be const void, but it was void | -| flowOut.cpp:139:30:139:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | -| flowOut.cpp:154:30:154:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | | flowOut.cpp:168:3:168:10 | ** ... | Expected 'Node.getType()' to be char, but it was char * | -| flowOut.cpp:176:30:176:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | -| flowOut.cpp:193:30:193:30 | *p | Expected 'Node.getType()' to be const char *, but it was char * | -| lambdas.cpp:14:3:14:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 13, col. 11, but it was decltype([...](...){...}) | -| lambdas.cpp:15:3:15:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 13, col. 11, but it was decltype([...](...){...}) | -| lambdas.cpp:21:3:21:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 20, col. 11, but it was decltype([...](...){...}) | -| lambdas.cpp:22:3:22:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 20, col. 11, but it was decltype([...](...){...}) | -| lambdas.cpp:23:3:23:14 | *this | Expected 'Node.getType()' to be const lambda [] type at line 20, col. 11, but it was decltype([...](...){...}) | -| lambdas.cpp:29:3:29:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 28, col. 11, but it was decltype([...](...){...}) | -| lambdas.cpp:30:3:30:6 | *this | Expected 'Node.getType()' to be const lambda [] type at line 28, col. 11, but it was decltype([...](...){...}) | | 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:67:28:67:37 | *call to move | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:70:19:70:33 | *x3 | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:71:8:71:9 | *x4 | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:384:16:384:23 | *& ... | Expected 'Node.getType()' to be const void, but it was void | -| test.cpp:391:16:391:23 | *& ... | Expected 'Node.getType()' to be const void, but it was void | -| test.cpp:400:16:400:22 | *& ... | Expected 'Node.getType()' to be const void, but it was void | -| test.cpp:407:16:407:22 | *& ... | Expected 'Node.getType()' to be const void, but it was void | -| test.cpp:526:3:526:4 | ** ... | Expected 'Node.getType()' to be const int *, but it was int * | -| test.cpp:526:3:526:4 | ** ... | Expected 'Node.getType()' to be const int, but it was int * | -| test.cpp:526:8:526:9 | *& ... | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:531:39:531:40 | *& ... | 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 int * | +| test.cpp:526:3:526:4 | ** ... | Expected 'Node.getType()' to be const int, but it was const int * | +| test.cpp:531:39:531:40 | *& ... | Expected 'Node.getType()' to be int, but it was const int * | | test.cpp:562:5:562:13 | *globalInt | Expected 'Node.getType()' to be int, but it was int * | | test.cpp:576:5:576:13 | *globalInt | Expected 'Node.getType()' to be int, but it was int * | | test.cpp:584:3:584:3 | *x | Expected 'Node.getType()' to be int, but it was int * | @@ -50,73 +21,14 @@ incorrectBaseType | 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:727:3:727:3 | *p | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:797:31:797:39 | *content | Expected 'Node.getType()' to be const int, but it was int | | test.cpp:808:5:808:21 | ** ... | Expected 'Node.getType()' to be int, but it was int * | | test.cpp:832:5:832:17 | *global_direct | Expected 'Node.getType()' to be int *, but it was int ** | | 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:860:54:860:59 | *call to source | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:861:10:861:37 | *static_local_pointer_dynamic | 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 | -| test.cpp:872:46:872:51 | *call to source | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:875:10:875:31 | *global_pointer_dynamic | Expected 'Node.getType()' to be const int, but it was int | -| test.cpp:882:10:882:34 | *static_local_array_static | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:883:10:883:45 | *static_local_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:884:19:884:54 | *static_local_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:885:10:885:45 | *static_local_array_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:886:19:886:54 | *static_local_array_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:890:54:890:61 | *source | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:891:65:891:84 | *indirect_source(1) | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:892:65:892:84 | *indirect_source(2) | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:893:10:893:36 | *static_local_pointer_static | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:894:10:894:47 | *static_local_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:895:19:895:56 | *static_local_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:896:10:896:47 | *static_local_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:897:19:897:56 | *static_local_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:905:10:905:28 | *global_array_static | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:907:10:907:39 | *global_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:909:19:909:37 | *global_array_static | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:910:19:910:48 | *global_array_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:911:19:911:48 | *global_array_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:914:46:914:53 | *source | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:915:57:915:76 | *indirect_source(1) | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:916:57:916:76 | *indirect_source(2) | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:919:10:919:30 | *global_pointer_static | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:920:10:920:41 | *global_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:921:19:921:50 | *global_pointer_static_indirect_1 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:922:10:922:41 | *global_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:923:19:923:50 | *global_pointer_static_indirect_2 | Expected 'Node.getType()' to be const char, but it was char | | test.cpp:931:5:931:18 | *global_pointer | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:952:32:952:35 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:959:32:959:35 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:967:33:967:38 | *domain | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:967:41:967:44 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:975:33:975:38 | *domain | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:975:41:975:44 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:984:33:984:36 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:984:39:984:40 | *np | Expected 'Node.getType()' to be const char, but it was char | | test.cpp:988:5:988:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | -| test.cpp:988:27:988:28 | *np | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:988:31:988:34 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:997:33:997:36 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:997:39:997:40 | *np | Expected 'Node.getType()' to be const char, but it was char | | test.cpp:1001:5:1001:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | -| test.cpp:1001:27:1001:28 | *np | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1001:31:1001:34 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1011:34:1011:39 | *domain | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1011:42:1011:45 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1011:48:1011:49 | *np | Expected 'Node.getType()' to be const char, but it was char | | test.cpp:1015:5:1015:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | -| test.cpp:1015:28:1015:33 | *domain | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1015:36:1015:37 | *np | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1015:40:1015:43 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1025:34:1025:39 | *domain | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1025:42:1025:45 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1025:48:1025:49 | *np | Expected 'Node.getType()' to be const char, but it was char | | test.cpp:1029:5:1029:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | -| test.cpp:1029:28:1029:33 | *domain | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1029:36:1029:37 | *np | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1029:40:1029:43 | *data | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1036:33:1036:38 | *domain | Expected 'Node.getType()' to be const char, but it was char | -| test.cpp:1036:41:1036:47 | *0 | Expected 'Node.getType()' to be const char, but it was char | failures From 1dfddaf9ab8370e9df28db554034b2d62586151a Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 8 Feb 2024 16:52:09 +0000 Subject: [PATCH 061/113] C++: Also mark indirections of glvalue instructions as glvalue nodes. --- .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 4 ++++ .../dataflow/dataflow-tests/type-bugs.expected | 16 ---------------- 2 files changed, 4 insertions(+), 16 deletions(-) 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 003155fd451..32998d2e9be 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 @@ -999,6 +999,8 @@ 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 @@ -1041,6 +1043,8 @@ 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 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 29457971989..6706d79e902 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 @@ -3,32 +3,16 @@ 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 * | -| dispatch.cpp:60:3:60:14 | *globalBottom | Expected 'Node.getType()' to be Top, but it was Top * | -| dispatch.cpp:61:3:61:14 | *globalMiddle | Expected 'Node.getType()' to be Top, but it was Top * | | 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 * | -| flowOut.cpp:168:3:168:10 | ** ... | Expected 'Node.getType()' to be char, but it was char * | | 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:526:3:526:4 | ** ... | Expected 'Node.getType()' to be const int, but it was const int * | | test.cpp:531:39:531:40 | *& ... | Expected 'Node.getType()' to be int, but it was const int * | -| test.cpp:562:5:562:13 | *globalInt | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:576:5:576:13 | *globalInt | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:584:3:584:3 | *x | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:596:3:596:7 | *access to array | Expected 'Node.getType()' to be int, but it was 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:727:3:727:3 | *p | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:808:5:808:21 | ** ... | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:832:5:832:17 | *global_direct | Expected 'Node.getType()' to be int *, but it was int ** | | 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 | -| test.cpp:931:5:931:18 | *global_pointer | Expected 'Node.getType()' to be int, but it was int * | -| test.cpp:988:5:988:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | -| test.cpp:1001:5:1001:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | -| test.cpp:1015:5:1015:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | -| test.cpp:1029:5:1029:14 | *translated | Expected 'Node.getType()' to be char, but it was char * | failures From f7d1544ccff78cfb7dfb5c6b57435b3b95f4bda9 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 8 Feb 2024 17:01:07 +0000 Subject: [PATCH 062/113] C++: Fix Code Scanning errors. --- .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 32998d2e9be..e49d519061f 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 @@ -948,8 +948,8 @@ private Type getTypeImpl0(Type t, int indirectionIndex) { // 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 for occuring when - // `stripped` and `t` only differ by const'ness or volatile'ness. + // 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) ) From 7a2332c1ff83b426a57dcd48a90315db26d985f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 8 Feb 2024 17:17:43 +0000 Subject: [PATCH 063/113] Post-release preparation for codeql-cli-2.16.2 --- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index b1b4172e977..7615b6bac2f 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.5 +version: 0.12.6-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 0da41987b3e..9151201a137 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.4 +version: 0.9.5-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 77b1c8b5154..8466748a25b 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.8 +version: 1.7.9-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 9851e27c691..ff72db938e0 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.8 +version: 1.7.9-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 2b137281da6..2e576e11b11 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.8 +version: 0.8.9-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a16c72edd72..018c3e09ae3 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.8 +version: 0.8.9-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index c7522dd8e35..651e694d964 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.7 +version: 0.0.8-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 5f317377d45..920594fe6ec 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.8 +version: 0.7.9-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 81654540219..fb73fa0eb96 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.8 +version: 0.7.9-dev groups: - go - queries diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 3334223e9e4..1f68ac3f6ba 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.14 +version: 0.0.15-dev groups: - java - automodel diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 6e4e1269d9c..cadcc1c9be6 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.8 +version: 0.8.9-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 73e8a062ffe..cad99f4d9c4 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.8 +version: 0.8.9-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index fa544548ea7..2be9a1ed2bd 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.8 +version: 0.8.9-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 1ebbfc58787..545be6f2c61 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.8 +version: 0.8.9-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 4db5dfcf454..6b20374ae33 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.8 +version: 0.7.9-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index a2c343cca3f..94f82195d5b 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.8 +version: 0.11.9-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 538e5ad799c..c5335da22f3 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.8 +version: 0.9.9-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 7eb6222e101..6c55331de90 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.8 +version: 0.8.9-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 7c1995c00e5..3637a80df7f 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.8 +version: 0.8.9-dev groups: - ruby - queries diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 79d4a386cf1..c7a88e50611 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.8 +version: 0.1.9-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index ffb4d0754be..c14ef815d58 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.1.8 +version: 0.1.9-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index c4eade3b256..0b3830f888d 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index faa059f069a..0f5272dd8cf 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.7 +version: 0.0.8-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 57aa69e9629..eca67311c9c 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index f47e195b548..b5d30380815 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index b056dd0d720..eb345ecca9a 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.7 +version: 0.0.8-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 23525cbfc60..e3080bb33b5 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 09757c9de82..adf375fd0c3 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 4466e61ee0b..927514b2fe4 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index ae11a5bf58b..72537a48107 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 4d656f79862..fae3aad1324 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.8 +version: 0.2.9-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 8916abe3bec..2c58adec21e 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.8 +version: 0.3.9-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 4a8d3d68e74..00ff9a6f163 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.8 +version: 0.3.9-dev groups: - swift - queries From ea004c44f2050eedcda317107f6ae904bb380f19 Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo Date: Thu, 8 Feb 2024 12:26:21 -0500 Subject: [PATCH 064/113] Update CHANGELOG.md Fix accidental blank line --- cpp/ql/src/CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 68bcdbc5b07..44d00c1d8e4 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -6,7 +6,6 @@ * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. * The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* ``` * The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. ## 0.9.3 From 331355d23f29b2efe7a933a90a754ee317581705 Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo Date: Thu, 8 Feb 2024 12:26:46 -0500 Subject: [PATCH 065/113] Fix accidental blank line --- cpp/ql/src/change-notes/released/0.9.4.md | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/ql/src/change-notes/released/0.9.4.md b/cpp/ql/src/change-notes/released/0.9.4.md index 6525a90f9bb..bc6e71d7054 100644 --- a/cpp/ql/src/change-notes/released/0.9.4.md +++ b/cpp/ql/src/change-notes/released/0.9.4.md @@ -6,5 +6,4 @@ * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) no longer reports an alert when an explicit check for EOF is added. * The "Incorrect return-value check for a 'scanf'-like function" query (`cpp/incorrectly-checked-scanf`) now recognizes more EOF checks. * The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) no longer reports an alert when the local variable is used as a qualifier to a static member function call. -* ``` * The diagnostic query `cpp/diagnostics/successfully-extracted-files` now considers any C/C++ file seen during extraction, even one with some errors, to be extracted / scanned. This affects the Code Scanning UI measure of scanned C/C++ files. From 2852f09a1acb0e1bcbb29ce4204ea219f4e77b5e Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 8 Feb 2024 17:44:38 +0000 Subject: [PATCH 066/113] Kotlin: Accept test changes in library-tests/java-kotlin-collection-type-generic-methods I'm not sure exactly what's going on here in general, but I've made a ticket to remind us to come back and look at this whole area. --- .../test.expected | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) 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 4ccb82a3d0d..0fe94ff8a25 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 | From 34f74869c893d4958897f9f7a5ac7971f76c159d Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Fri, 9 Feb 2024 09:10:20 +0100 Subject: [PATCH 067/113] Java: Add extension point and default sanitizer to Open Redirect query --- .../lib/change-notes/2024-02-09-url-redirect-sanitizer.md | 4 ++++ java/ql/lib/semmle/code/java/security/UrlRedirect.qll | 7 +++++++ java/ql/lib/semmle/code/java/security/UrlRedirectQuery.qll | 2 ++ .../src/change-notes/2024-02-09-url-redirect-sanitizer.md | 4 ++++ .../security/CWE-601/semmle/tests/UrlRedirect.expected | 4 ---- .../security/CWE-601/semmle/tests/UrlRedirect.java | 2 +- 6 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 java/ql/lib/change-notes/2024-02-09-url-redirect-sanitizer.md create mode 100644 java/ql/src/change-notes/2024-02-09-url-redirect-sanitizer.md 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 00000000000..a4a81de3a02 --- /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/semmle/code/java/security/UrlRedirect.qll b/java/ql/lib/semmle/code/java/security/UrlRedirect.qll index 5877358eaf0..e806905c167 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 cdae7839366..675937985c4 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/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 00000000000..f06978c8211 --- /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/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected index 974005e801b..f36dee3a55f 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,7 +1,6 @@ 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 | @@ -10,8 +9,6 @@ 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 318fdec9182..01cee2d59f2 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 @@ public class UrlRedirect extends HttpServlet { // 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")); From fb109672b35b6f3e9602cf211156475298f87323 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Fri, 9 Feb 2024 09:21:30 +0000 Subject: [PATCH 068/113] Address more review feedback. --- java/ql/lib/ext/org.apache.hadoop.fs.model.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 79dab1de37b..d8b6febd1f8 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"] @@ -17,6 +18,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hadoop.fs", "FileSystem", True, "makeQualified", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["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"] From 48890b446d25e51c216eeffd6609b6f9e33d4837 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Fri, 9 Feb 2024 09:23:09 +0000 Subject: [PATCH 069/113] Ruby: Add more actioncontroller tests --- .../ActionController.expected | 184 +++++------ .../action_controller/Filters.expected | 288 +++++++++--------- .../controllers/application_controller.rb | 0 .../controllers/comments_controller.rb | 0 .../controllers/foo/bars_controller.rb | 0 .../controllers/photos_controller.rb | 0 .../{ => app}/controllers/posts_controller.rb | 0 .../{ => app}/controllers/tags_controller.rb | 0 .../users/notifications_controller.rb | 0 .../app/views/comments/create.html.erb | 0 .../app/views/comments/destroy.html.erb | 0 .../app/views/comments/index.html.erb | 0 .../app/views/comments/show.html.erb | 0 .../views/notifications/mark_as_read.html.erb | 0 .../app/views/photos/foo.html.erb | 0 .../app/views/photos/show.html.erb | 0 .../app/views/posts/index.html.erb | 0 .../app/views/posts/show.html.erb | 0 .../app/views/posts/upvote.html.erb | 0 19 files changed, 236 insertions(+), 236 deletions(-) rename ruby/ql/test/library-tests/frameworks/action_controller/{ => app}/controllers/application_controller.rb (100%) rename ruby/ql/test/library-tests/frameworks/action_controller/{ => app}/controllers/comments_controller.rb (100%) rename ruby/ql/test/library-tests/frameworks/action_controller/{ => app}/controllers/foo/bars_controller.rb (100%) rename ruby/ql/test/library-tests/frameworks/action_controller/{ => app}/controllers/photos_controller.rb (100%) rename ruby/ql/test/library-tests/frameworks/action_controller/{ => app}/controllers/posts_controller.rb (100%) rename ruby/ql/test/library-tests/frameworks/action_controller/{ => app}/controllers/tags_controller.rb (100%) rename ruby/ql/test/library-tests/frameworks/action_controller/{ => app}/controllers/users/notifications_controller.rb (100%) create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/create.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/destroy.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/index.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/comments/show.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/notifications/mark_as_read.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/photos/foo.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/photos/show.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/index.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/show.html.erb create mode 100644 ruby/ql/test/library-tests/frameworks/action_controller/app/views/posts/upvote.html.erb 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 21262631d7b..f488eb70145 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,54 @@ 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 controllerTemplateFiles 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 6bbab525a17..e25a8d9c66e 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d 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 00000000000..e69de29bb2d From 3a90d78c361a833498c50936aa5e3a50793ff038 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Thu, 8 Feb 2024 11:17:11 +0000 Subject: [PATCH 070/113] Ruby: Fix Rails view file regex This picks up non-nested template files correctly. --- .../ruby/frameworks/ActionController.qll | 3 ++- .../ActionController.expected | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index 7ac82dae1b3..be1df5066e1 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/test/library-tests/frameworks/action_controller/ActionController.expected b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected index f488eb70145..6f2810e13d7 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected @@ -348,7 +348,25 @@ httpResponses | 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 | 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 | From f4b6a85a48193fb3eb211c609dfd1f96d57f3e2b Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 9 Feb 2024 10:09:24 +0000 Subject: [PATCH 071/113] Fix typo in qldoc --- .../CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp index 15e6783d2dc..b54a2add853 100644 --- a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp @@ -5,7 +5,7 @@

    -Biometric local authentication such as fingerprint recognistion can be used to protect sensitive data or actions within an application. +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 make use of a KeyStore-backed key, it is able to be bypassed by a privileged malicious application or an attacker with physical access.

    From b7d4a6926f41cfe3df391f59ef2f514a2f643efd Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Feb 2024 11:10:46 +0100 Subject: [PATCH 072/113] Dataflow: Add empty provenance column to PathGraph. --- .../cpp/ir/dataflow/internal/ProductFlow.qll | 16 ++++++++-------- .../code/csharp/security/dataflow/XSSQuery.qll | 10 +++++++--- .../backdoor/PotentialTimeBomb.ql | 12 ++++++++---- .../test/library-tests/cil/dataflow/DataFlow.ql | 4 ++-- .../CWE-200/TempDirLocalInformationDisclosure.ql | 6 +++++- shared/dataflow/codeql/dataflow/DataFlow.qll | 12 +++++++----- .../codeql/dataflow/internal/DataFlowImpl.qll | 6 +++++- 7 files changed, 42 insertions(+), 24 deletions(-) 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 bc511d6f340..e64f2285821 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/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSQuery.qll index 5ad2b6bc675..1dea41c8a7c 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/experimental/Security Features/backdoor/PotentialTimeBomb.ql b/csharp/ql/src/experimental/Security Features/backdoor/PotentialTimeBomb.ql index 1713607607c..47b69d3e975 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/library-tests/cil/dataflow/DataFlow.ql b/csharp/ql/test/library-tests/cil/dataflow/DataFlow.ql index 55d53d0600e..609717b8340 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/java/ql/src/Security/CWE/CWE-200/TempDirLocalInformationDisclosure.ql b/java/ql/src/Security/CWE/CWE-200/TempDirLocalInformationDisclosure.ql index 6efb7e9104c..6e0aa9e9cd9 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/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 856b68d249c..1c9c900530f 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/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index eb45fe5fd2e..ecaa75bdfff 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -3724,7 +3724,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) { From dd3d70134cbd069c9fa9daa7474d55d359daa487 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 9 Feb 2024 10:28:24 +0000 Subject: [PATCH 073/113] C++: Undo a change that wasn't actually necessary. --- .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e49d519061f..7d4bb6f5866 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 @@ -942,7 +942,7 @@ private Type getTypeImpl0(Type t, int indirectionIndex) { or indirectionIndex > 0 and exists(Type stripped | - stripped = stripPointer(t) and + 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 From e9e445b2ba7669111e7d13a0893829ce58be13ae Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 2 Feb 2024 11:22:29 +0100 Subject: [PATCH 074/113] Java: Add empty provenance column to expected files. --- .../CWE-020/Log4jInjectionTest.expected | 4198 ++++++++--------- .../CWE-073/FilePathInjection.expected | 18 +- .../CommandInjectionRuntimeExecLocal.expected | 32 +- .../security/CWE-078/ExecTainted.expected | 4 +- .../MyBatisAnnotationSqlInjection.expected | 34 +- .../MyBatisMapperXmlSqlInjection.expected | 48 +- .../CWE-094/BeanShellInjection.expected | 12 +- .../security/CWE-094/JShellInjection.expected | 20 +- .../JakartaExpressionInjection.expected | 60 +- .../security/CWE-094/JythonInjection.expected | 10 +- .../security/CWE-094/ScriptInjection.expected | 44 +- .../SensitiveCookieNotHttpOnly.expected | 38 +- .../InsecureWebResourceResponse.expected | 226 +- .../CWE-200/SensitiveAndroidFileLeak.expected | 38 +- .../Test.expected | 6 +- .../Test.expected | 22 +- .../DisabledRevocationChecking.expected | 12 +- .../CWE-327/UnsafeTlsVersion.expected | 110 +- .../security/CWE-346/UnvalidatedCors.expected | 2 +- ...ientSuppliedIpUsedInSecurityCheck.expected | 14 +- .../security/CWE-352/JsonpInjection.expected | 14 +- .../CWE-400/LocalThreadResourceAbuse.expected | 16 +- .../CWE-400/ThreadResourceAbuse.expected | 64 +- .../LoadClassNoSignatureCheck.expected | 6 +- .../CWE-470/UnsafeReflection.expected | 70 +- .../CWE-502/UnsafeDeserializationRmi.expected | 2 +- .../CWE-552/UnsafeUrlForward.expected | 80 +- .../CWE-598/SensitiveGetQuery.expected | 30 +- .../CWE-600/UncaughtServletException.expected | 8 +- .../CWE-601/SpringUrlRedirect.expected | 72 +- .../CWE-625/PermissiveDotRegex.expected | 36 +- .../security/CWE-652/XQueryInjection.expected | 54 +- .../security/CWE-755/NFEAndroidDoS.expected | 18 +- .../security/CWE-759/HashWithoutSalt.expected | 12 +- .../dataflow/call-sensitivity/flow.expected | 66 +- .../threat-models-flowtest1.expected | 20 +- .../threat-models-flowtest2.expected | 24 +- .../threat-models-flowtest3.expected | 44 +- .../threat-models-flowtest4.expected | 48 +- .../threat-models-flowtest5.expected | 40 +- .../threat-models-flowtest6.expected | 40 +- .../frameworks/JaxWs/UrlRedirect.expected | 8 +- .../CWE-022/semmle/tests/ZipSlip.expected | 10 +- .../CWE-078/ExecTaintedLocal.expected | 38 +- .../semmle/examples/SqlTaintedLocal.expected | 42 +- .../security/CWE-090/LdapInjection.expected | 278 +- .../CWE-094/InsecureBeanValidation.expected | 2 +- .../semmle/tests/ResponseSplitting.expected | 8 +- ...nOfArrayConstructionCodeSpecified.expected | 2 +- ...alidationOfArrayConstructionLocal.expected | 8 +- ...lidationOfArrayIndexCodeSpecified.expected | 16 +- ...properValidationOfArrayIndexLocal.expected | 6 +- .../ExternallyControlledFormatString.expected | 6 +- ...rnallyControlledFormatStringLocal.expected | 10 +- .../tests/ArithmeticTaintedLocal.expected | 82 +- .../tests/ArithmeticUncontrolled.expected | 8 +- .../ArithmeticWithExtremeValues.expected | 14 +- ...TempDirLocalInformationDisclosure.expected | 110 +- .../UnsafeHostnameVerification.expected | 8 +- .../CWE-311/CWE-319/HttpsUrls.expected | 24 +- .../tests/BrokenCryptoAlgorithm.expected | 2 +- .../CWE-601/semmle/tests/UrlRedirect.expected | 14 +- .../tests/NumericCastTaintedLocal.expected | 14 +- .../tests/TaintedPermissionsCheck.expected | 2 +- 64 files changed, 3212 insertions(+), 3212 deletions(-) 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 93b2b060685..c88d2e2284c 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 c7a79c6328d..da71e407707 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 : String | -| FilePathInjection.java:209:15:209:32 | new File(...) : File | FilePathInjection.java:210:23:210:26 | file | -| 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 | 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 0baff0f6f21..926675f900a 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 befb327fc33..d27556a5ccb 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 1c5ba31a97f..9f043f8db51 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 6d38949fc1e..27ccbaad929 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 62d42d57864..2afdd9869d7 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 f084660ced8..0f61156df13 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 ef5fefa21a3..dbf9191adad 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 0fbbe43e3c6..0d090adbea6 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 f7a626fca76..d2119033cdf 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 ca4eb5e9917..5b1eefcc07a 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 07ce59763ad..a006cdd08b4 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 9c5b6ce8b69..739a825664b 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 ec275d26d74..13c2a03ee2b 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 c5d41465cb2..64b6414d2e0 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 ab68d9578b4..054956fdd2c 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 53315833c14..af60203749c 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 845406aabe7..c803d30fa2f 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 e6589ba1787..1fa40af94f2 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 f9bcf7132a2..3bd9825e18f 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 1f74227841b..04c8147eac5 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 e79dbfee2d3..635ce2979ff 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 23d52993a91..cb7595fb0c3 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 2e37b50f3f7..37a3e15ea7a 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 aaa0d3b0438..07b813d01fa 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 5d809244fdb..545471868e7 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 28471144374..5d1bec7e093 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 c06301e37fb..d257ae51324 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 2269d357ec6..8042fd3dded 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 c8a387fa33d..d6e5f12ec29 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 47dfb5f426e..60b0f3977ee 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 5f0e5b028f9..80df54d749a 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 8681b437222..9666029ebdc 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 05552beb5d9..dc35379e71e 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/threat-models/threat-models-flowtest1.expected b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected index 9dbde2c728d..9be77dca333 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 69fad09766d..c3d7b2f7a5f 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 35b2d7049a2..301b7bdc911 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 44f01c1485e..0c536214b5b 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 d535ba38f98..7a0b1572ac5 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 9b5109ab7e9..ba132f5b739 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 1c0986ada31..57aadbcee42 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/query-tests/security/CWE-022/semmle/tests/ZipSlip.expected b/java/ql/test/query-tests/security/CWE-022/semmle/tests/ZipSlip.expected index 7c6a5bffc2e..07beb3e1b00 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-078/ExecTaintedLocal.expected b/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected index fd2c8fb4d5c..791ee28469a 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 45577278a7e..75c75b528ad 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 961ad3ed6ef..69c97ca8487 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 5388b0df98c..adff0e4ca42 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 34a84f252e1..7ec4c978a03 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 cd4530b3002..62f9df885f8 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 abfb68f74a5..2ae58aa9d56 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 16de93aaec8..b745c26ec0a 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 6e0738c8576..40248b6c645 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 5be16020175..d5b66f9d4b2 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 99e197a2e73..3f6e0a3ff23 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 1864576369c..d051c41d4d0 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 43256841646..5a305a82c88 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 574dc3392a0..bd0b33f4810 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 03c431822b5..21e9f7379c6 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-297/UnsafeHostnameVerification.expected b/java/ql/test/query-tests/security/CWE-297/UnsafeHostnameVerification.expected index 86e91b2003b..8377276e40c 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 baef4c539b8..2b2ff6478ce 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 3965182c6d4..7c3a7f3f082 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 974005e801b..d49af28117c 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,11 +1,11 @@ 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:36:58:36:89 | getParameter(...) : String | UrlRedirect.java:36:25:36:89 | ... + ... | 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(...) | 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 6ab99919c33..89bf2054d1d 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 2349a61216f..9d67e3e6c3d 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 | ... + ... | From 21a6520cd3fdb0fd26c425876a84feb23c7cb9dd Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 5 Feb 2024 13:49:33 +0100 Subject: [PATCH 075/113] C#: Add empty provenance column to expected files. --- .../CWE-918/RequestForgery.expected | 2 +- .../CWE-759/HashWithoutSalt.expected | 12 +- .../backdoor/PotentialTimeBomb.expected | 16 +- .../cil/dataflow/DataFlow.expected | 100 +- .../library-tests/csharp7/GlobalFlow.expected | 46 +- .../csharp7/GlobalTaintTracking.expected | 60 +- .../dataflow/async/Async.expected | 70 +- .../CallSensitivityFlow.expected | 84 +- .../collections/CollectionFlow.expected | 548 ++--- .../external-models/ExternalFlow.expected | 144 +- .../dataflow/fields/FieldFlow.expected | 1880 ++++++++--------- .../dataflow/global/DataFlowPath.expected | 680 +++--- .../global/TaintTrackingPath.expected | 766 +++---- .../dataflow/operators/operatorFlow.expected | 144 +- .../threat-models-flowtest1.expected | 16 +- .../threat-models-flowtest2.expected | 18 +- .../threat-models-flowtest3.expected | 22 +- .../threat-models-flowtest4.expected | 24 +- .../threat-models-flowtest5.expected | 20 +- .../threat-models-flowtest6.expected | 20 +- .../dataflow/tuples/Tuples.expected | 400 ++-- .../TypeFlowDispatch.expected | 108 +- .../dataflow/types/Types.expected | 116 +- .../EntityFramework/Dataflow.expected | 348 +-- .../FormatInvalid/FormatInvalid.expected | 4 +- .../UnsafeYearConstruction.expected | 6 +- .../UntrustedDataToExternalAPI.expected | 6 +- .../CWE-022/TaintedPath/TaintedPath.expected | 30 +- .../CWE-022/ZipSlip/ZipSlip.expected | 38 +- .../CWE-078/CommandInjection.expected | 44 +- .../CWE-078/StoredCommandInjection.expected | 2 +- .../CWE-079/StoredXSS/StoredXSS.expected | 2 +- .../CWE-079/XSS/XSS.expected | 30 +- .../CWE-079/XSSAsp/XSS.expected | 58 +- .../CWE-079/XSSRazorPages/XSS.expected | 136 +- .../CWE-079/XssPageModels/test.expected | 18 +- .../CWE-089/SecondOrderSqlInjection.expected | 30 +- .../CWE-089/SqlInjection.expected | 66 +- .../CWE-090/LDAPInjection.expected | 26 +- .../CWE-090/StoredLDAPInjection.expected | 2 +- .../XMLInjection/XMLInjection.expected | 6 +- .../CWE-094/CodeInjection.expected | 10 +- .../CWE-099/ResourceInjection.expected | 10 +- .../CWE-112/MissingXMLValidation.expected | 32 +- .../AssemblyPathInjection.expected | 6 +- .../CWE-117/LogForging.expected | 16 +- .../CWE-134/UncontrolledFormatString.expected | 18 +- .../ExposureInTransmittedData.expected | 10 +- .../ExceptionInformationExposure.expected | 12 +- .../HardcodedSymmetricEncryptionKey.expected | 26 +- .../DontInstallRootCert.expected | 6 +- .../InsecureSQLConnection.expected | 4 +- .../CWE-338/InsecureRandomness.expected | 30 +- ...safeDeserializationUntrustedInput.expected | 38 +- ...safeDeserializationUntrustedInput.expected | 6 +- .../CWE-601/UrlRedirect/UrlRedirect.expected | 56 +- .../CWE-611/UntrustedDataInsecureXml.expected | 2 +- .../CWE-643/StoredXPathInjection.expected | 8 +- .../CWE-643/XPathInjection.expected | 60 +- .../CWE-730/ReDoS/ReDoS.expected | 22 +- .../CWE-730/ReDoSGlobalTimeout/ReDoS.expected | 6 +- .../RegexInjection/RegexInjection.expected | 6 +- .../CWE-798/HardcodedCredentials.expected | 2 +- .../CWE-807/ConditionalBypass.expected | 40 +- .../CWE-838/InappropriateEncoding.expected | 20 +- 65 files changed, 3297 insertions(+), 3297 deletions(-) diff --git a/csharp/ql/test/experimental/CWE-918/RequestForgery.expected b/csharp/ql/test/experimental/CWE-918/RequestForgery.expected index 4c499ad4be6..37cc9ded82c 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 0ee0a6b7f61..f3c1a8ed6c5 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 512699c5398..812e1751048 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 6d75d5ef041..e4c2f9af9ed 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/csharp7/GlobalFlow.expected b/csharp/ql/test/library-tests/csharp7/GlobalFlow.expected index e858c24758d..59e0fb54c32 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 04bb7095ec9..2cc4eb58cf9 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/dataflow/async/Async.expected b/csharp/ql/test/library-tests/dataflow/async/Async.expected index 4fd0136cda0..ed0395fff0b 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 c7cc4c5f45f..daf679b629a 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 4ecd3771cbf..2aadd5b0bbf 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/external-models/ExternalFlow.expected b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected index cd3e2b94127..a64ed809a80 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/FieldFlow.expected b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected index a56a9fa6524..4b4f70a46a8 100644 --- a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected @@ -1,945 +1,945 @@ 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 | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | provenance | | +| 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 | 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 | diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index 00d45708afc..4d549939f1c 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 8dd706eb671..ace244f6961 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 f5f0902b3a8..d55c099ca4f 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/threat-models/threat-models-flowtest1.expected b/csharp/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.expected index edde57342e5..2000a735bdb 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 38da52c1af5..85243196a39 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 82868f7fce3..a499529d57d 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 b4863cc7b12..53b70178511 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 69b547c0bdd..184c4722f80 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 f48ee60904b..72271d08836 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/Tuples.expected b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected index 95c39fd302c..e93d25ad84a 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 51286b90578..cb7792957a8 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 76628874c48..1c35152bc26 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 a9d4895fb46..b4b4cf6f129 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 f3525d8bd47..a1c5e925437 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 bf23b05a35a..5ff0ff32c21 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 4135e7ce5d6..10a233c2c82 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 77e55c484e7..e3bc1c2dd1b 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 a5b2d7166f7..3443ea23f8e 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 336342b9747..fc1da3ba7c6 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 0c166565a83..46c85f7abbe 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 beef5ec2968..488df85e1c4 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 added443400..1e1c6258c89 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 941b4b359a9..e3c29b08316 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/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSRazorPages/XSS.expected index 19413509bcb..70c8dcfbd11 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 6806ff9abe4..b939e45a082 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 e6048fc656e..c2ce4a209f6 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 888573d86b6..9ef1a073fbe 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 0699a17d531..ec812749311 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 34e5ef3dc99..d66714c82cc 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 63b1d336449..028af79c5df 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 006ca27fdd7..f247e97bc35 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 75ef7285557..cc089c9898b 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 869daaa60cb..72d5d497820 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 396d766c3e6..a13b0d64004 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 4e863739f34..b01941c6d39 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 5945b83d635..9ae706885f6 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 9399dd0a6eb..9a1d6036ad7 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 3e273ef83b8..4ba1ed42f1d 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 10cb82ff67e..8fcc865b54c 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 9f20b582a86..616fe890da8 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 14d9e9213c6..fc657fcde1d 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 20312f4c17b..b0c0dbae40f 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 0761f950feb..d9ee462e64a 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 c73b3122688..c50a361dac7 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 ff1cac032fe..33e63414558 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 c6e463428a6..4a3a88b7a74 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 63235e25c92..daaca6c5d3a 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 fa812c210ed..78652e8ea9d 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 8f378704ce5..ed14c44e2af 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 100f4fc61cc..989d0648f48 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 01b1dcfb67f..7fa9f7428f4 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 4dc81537e20..5c707971384 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 3f985cd5eff..86f4167bd75 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 2f33a932e3d..4958966f788 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 | From 3b8af1e52abce2372d6d07b995db87ef7dae31b3 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 6 Feb 2024 13:03:43 +0100 Subject: [PATCH 076/113] Go: Add empty provenance column to expected files. --- .../CWE-090/LDAPInjection.expected | 40 +- .../CWE-1004/CookieWithoutHttpOnly.expected | 816 +++++++++--------- .../test/experimental/CWE-203/Timing.expected | 12 +- .../CWE-287/ImproperLdapAuth.expected | 6 +- .../CWE-321-V2/HardCodedKeys.expected | 8 +- .../CWE-321/HardcodedKeys.expected | 80 +- .../ParseJWTWithoutVerification.expected | 24 +- .../CWE-369/DivideByZero.expected | 44 +- .../experimental/CWE-74/DsnInjection.expected | 10 +- .../CWE-74/DsnInjectionLocal.expected | 40 +- .../HTMLTemplateEscapingPassthrough.expected | 48 +- go/ql/test/experimental/CWE-918/SSRF.expected | 84 +- .../Unsafe/WrongUsageOfUnsafe.expected | 32 +- .../go/dataflow/ChannelField/test.expected | 18 +- .../DefaultSanitizer.expected | 4 +- .../go/dataflow/HiddenNodes/test.expected | 6 +- .../go/frameworks/Beego/ReflectedXss.expected | 202 ++--- .../go/frameworks/Beego/TaintedPath.expected | 16 +- .../frameworks/BeegoOrm/SqlInjection.expected | 64 +- .../go/frameworks/BeegoOrm/StoredXss.expected | 54 +- .../go/frameworks/Chi/ReflectedXss.expected | 12 +- .../go/frameworks/Echo/OpenRedirect.expected | 20 +- .../go/frameworks/Echo/ReflectedXss.expected | 64 +- .../go/frameworks/Echo/TaintedPath.expected | 4 +- .../go/frameworks/Encoding/jsoniter.expected | 24 +- .../go/frameworks/Gin/TaintedPath.expected | 8 +- .../frameworks/GoMicro/LogInjection.expected | 24 +- .../frameworks/Gorestful/gorestful.expected | 16 +- .../go/frameworks/Revel/OpenRedirect.expected | 10 +- .../go/frameworks/Revel/ReflectedXss.expected | 18 +- .../go/frameworks/Revel/TaintedPath.expected | 8 +- .../frameworks/Twirp/RequestForgery.expected | 46 +- .../frameworks/XNetHtml/ReflectedXss.expected | 112 +-- .../frameworks/XNetHtml/SqlInjection.expected | 4 +- .../UnhandledCloseWritableHandle.expected | 30 +- .../IncompleteHostnameRegexp.expected | 2 +- .../Security/CWE-022/TaintedPath.expected | 10 +- .../CWE-022/UnsafeUnzipSymlink.expected | 8 +- .../Security/CWE-022/ZipSlip.expected | 24 +- .../CWE-078/CommandInjection.expected | 142 +-- .../Security/CWE-078/StoredCommand.expected | 8 +- .../Security/CWE-079/ReflectedXss.expected | 96 +-- .../Security/CWE-079/StoredXss.expected | 12 +- .../Security/CWE-089/SqlInjection.expected | 216 ++--- .../Security/CWE-089/StringBreak.expected | 14 +- .../CWE-190/AllocationSizeOverflow.expected | 40 +- .../CWE-209/StackTraceExposure.expected | 2 +- .../CWE-312/CleartextLogging.expected | 104 +-- .../CWE-322/InsecureHostKeyCallback.expected | 32 +- .../CWE-326/InsufficientKeySize.expected | 12 +- .../Security/CWE-327/UnsafeTLS.expected | 80 +- .../CWE-327/WeakCryptoAlgorithm.expected | 8 +- .../InsecureRandomness.expected | 30 +- .../CWE-352/ConstantOauth2State.expected | 24 +- .../BadRedirectCheck.expected | 38 +- .../OpenUrlRedirect/OpenUrlRedirect.expected | 130 +-- .../Security/CWE-640/EmailInjection.expected | 38 +- .../Security/CWE-643/XPathInjection.expected | 106 +-- .../Security/CWE-918/RequestForgery.expected | 56 +- 59 files changed, 1620 insertions(+), 1620 deletions(-) diff --git a/go/ql/test/experimental/CWE-090/LDAPInjection.expected b/go/ql/test/experimental/CWE-090/LDAPInjection.expected index 8e1165fab60..2815643c014 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 c7618b3108f..e00daf0294f 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 05e19774dbc..b1aa5487aa9 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 16d32e48937..14629dfec2e 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 6d1d1693ab7..5b26a2a9b36 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 873bb55b7c2..bcc40eacb23 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 7162ed5802f..d067b5eb83d 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 0d979a79790..0b6eeb93317 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 9859f05b50c..2788c186d00 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 09143c4cab9..ffe20d053f7 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 2b543ccde1d..1d0f5facd03 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 e7b78beb153..0e5bdee9671 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 612c6ef1e51..3c7e02eea26 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 523d27be250..315e8f2ceab 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 a7ab7fc63a4..c126e70195b 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 2c7583cacb4..1bd17817463 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 3c14fdfadeb..5825fcdfcd6 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 714f03bdcec..c0deba242e0 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 f9668a6f723..ccaac4425ff 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 09a41c42fb2..363a42b91d7 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 cc6d95f8717..d422436065c 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 12bab8f680e..77425f059c8 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 05a6ac2869b..f76e5fb42cd 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 5c43259a2b6..04bcfdedcb0 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 5161978daeb..ffbde6355cb 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 b53ceb0281e..45d417ca812 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 d23496fe4c5..7e8cdc288f1 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 b299a773b06..e64858732ed 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 d3215df275d..e0eb8c6cc08 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 5352f0569bd..b9725fae820 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 c9b3a4bbe58..ad3ca2e44dc 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 14e97ebe357..90e6b42ec51 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 1124ca22b05..341e2cf46ab 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 a36880faf24..9171f32e84d 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 3a0c58c7ee9..e5ad074d25d 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 029366069d2..4486b4e0962 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 307906f7e9b..34d4180a849 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 da8dc7ed50e..bddeaf06e62 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 f10f103c963..5ff0ca886c2 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 01f6d0a17f6..06df5262ca2 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 e0e028fff91..4bdeaa67be0 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 81144cc3c86..634c21befb3 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 f51eda4c93c..c399840db9a 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 43bbd3a3fe7..066f4a272f0 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 de5b7c7a833..05147badb06 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 036c11ff51e..e139ab4f5e5 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 99042f7a497..c62c6126648 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 c58d2d26d5e..98daffabbaf 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 2376ab7a7cf..b81d24f2665 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 fb1058af01c..556b1722b59 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 e47a4768465..c0dc967a16f 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 a107cd75df0..53cfd40145d 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 2ba01cedce0..2e92d105daa 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 9ef4c6d850e..d1c82f01713 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 da1b8886574..20569426bfa 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 d56e1f9c68b..edbdc8b6e8d 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 ec7b13e00eb..fa8adec48fe 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 34fbf42f85f..753444333d9 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 b843de1c0b1..c3d6015d748 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 | ...+... | From 228a61ead3460109c6543355aad95a69470352aa Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 6 Feb 2024 13:33:21 +0100 Subject: [PATCH 077/113] Swift: Add empty provenance column to expected files. --- .../dataflow/dataflow/DataFlow.expected | 1266 ++++++++--------- .../dataflow/taint/core/Taint.expected | 432 +++--- .../CWE-078/CommandInjection.expected | 360 ++--- .../CWE-079/UnsafeWebViewFetch.expected | 130 +- .../Security/CWE-089/SqlInjection.expected | 236 +-- .../Security/CWE-094/UnsafeJsEval.expected | 108 +- .../StaticInitializationVector.expected | 80 +- .../CWE-134/UncontrolledFormatString.expected | 70 +- .../CWE-135/StringLengthConflation.expected | 84 +- .../CWE-259/ConstantPassword.expected | 60 +- .../CWE-311/CleartextStorageDatabase.expected | 622 ++++---- .../CWE-311/CleartextTransmission.expected | 66 +- .../CleartextStoragePreferences.expected | 28 +- .../CWE-321/HardcodedEncryptionKey.expected | 140 +- .../Security/CWE-327/ECBEncryption.expected | 12 +- .../CWE-328/WeakPasswordHashing.expected | 4 +- .../Security/CWE-730/RegexInjection.expected | 46 +- .../Security/CWE-757/InsecureTLS.expected | 146 +- .../Security/CWE-760/ConstantSalt.expected | 48 +- .../InsufficientHashIterations.expected | 6 +- 20 files changed, 1972 insertions(+), 1972 deletions(-) diff --git a/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected b/swift/ql/test/library-tests/dataflow/dataflow/DataFlow.expected index 7abf18a9063..10e7d32b57b 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 24d797088fc..b0c6ed9c8bd 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-078/CommandInjection.expected b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index b6c8f60bbc1..9f783f1ea66 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 66356d31349..c2fefc171e6 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 52d6268367f..36ebcd04a6e 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 65c4c5eb2c1..f048e06cb85 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 74adec1c605..02fdbe6a6a4 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 56dd3f6e3c3..94dd27a82c2 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 0fa5e727fcb..83405f7cf61 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 11c1950f3a9..0c1e98bfe7c 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 dca833fff7f..d3d3e9ec03e 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 d5139193e2c..0b3d8336874 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 69865237e18..4c78d468cf0 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 a2cd88cd3f8..733a7c42c9e 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 38c377b3926..dce2964652c 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 e33e8ca7b26..46f3d211ccd 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 b2f31c7de1b..1a26f921197 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 fb030f5e39b..9c82519faa9 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 033d4481780..2d89675b482 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 1cba5d58060..aff512f0512 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() | From 35a3aa0a09db850d1024ae3af37ab8556d56ebbd Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 7 Feb 2024 11:37:01 +0100 Subject: [PATCH 078/113] Ruby: Add empty provenance column to expected files. --- .../dataflow/array-flow/array-flow.expected | 4240 ++++++++--------- .../call-sensitivity.expected | 194 +- .../library-tests/dataflow/erb/erb.expected | 88 +- .../flow-summaries/semantics.expected | 2168 ++++----- .../dataflow/global/Flow.expected | 506 +- .../dataflow/hash-flow/hash-flow.expected | 1952 ++++---- .../dataflow/local/InlineFlowTest.expected | 90 +- .../dataflow/params/params-flow.expected | 338 +- .../dataflow/ssa-flow/ssa-flow.expected | 6 +- .../dataflow/string-flow/string-flow.expected | 22 +- .../dataflow/summaries/Summaries.expected | 506 +- .../action_controller/params-flow.expected | 192 +- .../action_mailer/params-flow.expected | 2 +- .../ActiveSupportDataFlow.expected | 404 +- .../frameworks/arel/Arel.expected | 6 +- .../frameworks/json/JsonDataFlow.expected | 20 +- .../frameworks/sinatra/Flow.expected | 10 +- .../ImproperLdapAuth.expected | 12 +- .../LdapInjection/Ldapinjection.expected | 24 +- .../TemplateInjection.expected | 34 +- .../XPathInjection/XPathInjection.expected | 32 +- .../cwe-022-ZipSlip/ZipSlip.expected | 64 +- .../cwe-176/UnicodeBypassValidation.expected | 60 +- .../ManuallyCheckHttpVerb.expected | 24 +- .../weak-params/WeakParams.expected | 8 +- .../MissingFullAnchor.expected | 6 +- .../security/cwe-022/PathInjection.expected | 134 +- .../CommandInjection.expected | 44 +- .../cwe-078/KernelOpen/KernelOpen.expected | 26 +- .../UnsafeShellCommandConstruction.expected | 34 +- .../security/cwe-079/ReflectedXSS.expected | 84 +- .../security/cwe-079/StoredXSS.expected | 48 +- .../cwe-079/UnsafeHtmlConstruction.expected | 6 +- .../security/cwe-089/SqlInjection.expected | 158 +- .../CodeInjection/CodeInjection.expected | 92 +- .../UnsafeCodeConstruction.expected | 44 +- .../security/cwe-117/LogInjection.expected | 48 +- .../PolynomialReDoS.expected | 94 +- .../RegExpInjection.expected | 42 +- .../cwe-134/TaintedFormatString.expected | 38 +- .../cwe-209/StackTraceExposure.expected | 4 +- .../cwe-312/CleartextLogging.expected | 78 +- .../cwe-312/CleartextStorage.expected | 60 +- .../UnsafeDeserialization.expected | 6 +- .../UnsafeDeserialization.expected | 6 +- .../UnsafeDeserialization.expected | 102 +- .../HardcodedDataInterpretedAsCode.expected | 22 +- .../security/cwe-601/UrlRedirect.expected | 26 +- .../cwe-611/libxml-backend/Xxe.expected | 12 +- .../security/cwe-611/xxe/Xxe.expected | 54 +- .../cwe-732/WeakFilePermissions.expected | 14 +- .../cwe-798/HardcodedCredentials.expected | 32 +- .../ConditionalBypass.expected | 16 +- .../cwe-829/InsecureDownload.expected | 10 +- .../cwe-912/HttpToFileAccess.expected | 10 +- .../cwe-918/ServerSideRequestForgery.expected | 10 +- .../DecompressionApi.expected | 8 +- 57 files changed, 6185 insertions(+), 6185 deletions(-) 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 f36cf514b89..046f19b454e 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 98330dcaa23..7e55fbf8995 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 1ca2216a559..b78f3c19246 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 13366c8733c..7f40375e963 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 bd8ad749d7d..b09124590bb 100644 --- a/ruby/ql/test/library-tests/dataflow/global/Flow.expected +++ b/ruby/ql/test/library-tests/dataflow/global/Flow.expected @@ -1,258 +1,258 @@ 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 | | +| 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 | 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 00372d87e00..df37ffac47a 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 0efa1cd8b5a..a8722b1fb50 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 7ed1f758682..629c9993984 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 c7a8595c464..4fc620f6850 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 ec483b6fc8e..48b62cc592d 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 b8194f74f42..693832e5577 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/params-flow.expected b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected index a0349ec9ee3..69946539384 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 43d26266352..e69e4a8ebfd 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_support/ActiveSupportDataFlow.expected b/ruby/ql/test/library-tests/frameworks/active_support/ActiveSupportDataFlow.expected index b4178c9bac5..4eadde7fa54 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 1a8eab7e84f..c2242a7e7d9 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 b4ba9ce7374..a12400cf123 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 1a3665a31c1..baad7a63b8d 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/query-tests/experimental/ImproperLdapAuth/ImproperLdapAuth.expected b/ruby/ql/test/query-tests/experimental/ImproperLdapAuth/ImproperLdapAuth.expected index 17c9a009cbd..1b0e8d4fbb3 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 2c2aa193d77..9eddf82c15c 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 103dc82bda4..bf51b434062 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 789eef9f4fc..d6c6f0b34bc 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 0c8be5c2463..b7cfcdc42a3 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 b79057a8479..da4709abe45 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 1f066c979b4..e0e85b75ebb 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 d84d761c17a..4f72a24cee7 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 f9b1241ea06..4032d044fd8 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 a93fdd9f008..fe9751e6585 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 24ae9c62320..be4473409b7 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 506ea30d53c..67e618a3a1f 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 a8ded2881ed..ae05501bfa7 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 284cd463d02..650168f7bce 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 2cf4aff6400..8ae455760c1 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 064d5a2e1dc..b9019c8f1d0 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 266da5b21fe..1f9b8483f3b 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 8b9e7e3abed..b3f6dfcd5e5 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 716cf5591f9..8af3ed306de 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 e3ea62b535d..e0d5101f150 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 ec079020695..79d6c72fa3f 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 3857229d278..dff126abec1 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 de044832e23..a84a886c778 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 59dc2e070ee..00e0b4317de 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 a35aef72936..cb29945fbee 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 9ec7e50e460..f740990bced 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 27bfc08947f..44f54744e4b 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 e96275a95ad..4fa7c85df05 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 8a17c569e33..bf0376f3959 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 57918d9da20..84a46276371 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 8d09e79a571..3dfe8be90bf 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 f4af8eaf7c0..d819e92c930 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 9474c258561..44acc636b60 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 a4e8218f8c1..fe2f0f98422 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 3492e9b41ae..662b6c9575f 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 c591f922334..897e8276049 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 82fbafcfc89..c025499f2e8 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 19b955a9a8d..792b17303b1 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 0145d9bddf5..7ca144f69ed 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 dbcca414cf1..20be59524bf 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 | From 7eb5e1833d5c243d54a38598acee74ce058736d3 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Feb 2024 12:57:24 +0100 Subject: [PATCH 079/113] C++: Add empty provenance column to expected files. --- .../CWE/CWE-078/WordexpTainted.expected | 2 +- .../AllocMultiplicationOverflow.expected | 6 +- .../ArrayAccessProductFlow.expected | 78 +- .../ConstantSizeArrayOffByOne.expected | 140 +- .../tests/PrivateCleartextWrite.expected | 20 +- .../dataflow/fields/ir-path-flow.expected | 1498 ++++++++--------- .../dataflow/fields/path-flow.expected | 1494 ++++++++-------- .../Critical/MemoryFreed/DoubleFree.expected | 24 +- .../MemoryFreed/UseAfterFree.expected | 46 +- .../CastArrayPointerArithmetic.expected | 42 +- .../SAMATE/TaintedPath/TaintedPath.expected | 2 +- .../CWE-022/semmle/tests/TaintedPath.expected | 10 +- .../SAMATE/ExecTainted/ExecTainted.expected | 10 +- .../semmle/ExecTainted/ExecTainted.expected | 132 +- .../CWE/CWE-079/semmle/CgiXss/CgiXss.expected | 18 +- .../CWE-089/SqlTainted/SqlTainted.expected | 16 +- .../UncontrolledProcessOperation.expected | 6 +- .../UncontrolledProcessOperation.expected | 24 +- .../SAMATE/OverrunWriteProductFlow.expected | 116 +- .../semmle/tests/OverflowDestination.expected | 20 +- .../semmle/tests/UnboundedWrite.expected | 26 +- .../semmle/tests/UnboundedWrite.expected | 6 +- .../ImproperArrayIndexValidation.expected | 2 +- .../ImproperArrayIndexValidation.expected | 18 +- .../SAMATE/UncontrolledFormatString.expected | 6 +- .../CWE-134/semmle/argv/argvLocal.expected | 48 +- .../CWE-134/semmle/funcs/funcsLocal.expected | 16 +- .../UncontrolledFormatString.expected | 22 +- .../CWE/CWE-134/semmle/ifs/ifs.expected | 22 +- .../CWE-190/SAMATE/ArithmeticTainted.expected | 2 +- .../SAMATE/ArithmeticUncontrolled.expected | 24 +- .../ArithmeticUncontrolled.expected | 64 +- .../TaintedAllocationSize.expected | 48 +- .../semmle/tainted/ArithmeticTainted.expected | 30 +- .../CWE/CWE-193/InvalidPointerDeref.expected | 204 +-- .../AuthenticationBypass.expected | 12 +- .../tests/CleartextBufferWrite.expected | 2 +- .../semmle/tests/CleartextFileWrite.expected | 12 +- .../tests/CleartextTransmission.expected | 64 +- .../CWE/CWE-319/UseOfHttp/UseOfHttp.expected | 26 +- .../tests/UseAfterFree/UseAfterFree.expected | 24 +- .../PotentiallyExposedSystemData.expected | 2 +- .../semmle/tests/ExposedSystemData.expected | 32 +- .../PotentiallyExposedSystemData.expected | 28 +- .../Security/CWE/CWE-611/XXE.expected | 96 +- .../TaintedCondition.expected | 2 +- 46 files changed, 2271 insertions(+), 2271 deletions(-) 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 20bab064242..f35b2230f15 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 fe7246092b6..94d399f6195 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 eab5aabce63..bb062dac218 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 07fbd84e4af..fee771d8f70 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 78f724f788c..ae24fbb77c4 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/fields/ir-path-flow.expected b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected index b000ff9d089..770a70f2a1d 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 78b3832ea92..3eebd355b14 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/query-tests/Critical/MemoryFreed/DoubleFree.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected index f30092f0626..b9ac7f0a2d5 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 bf2ba1ad092..ceed007f683 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 c65f76cec0f..3f66b2c20b3 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 5cc2f9cf507..dc8bb31748a 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 dd587dd64ed..3b34718d954 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 4c6c158fb7a..8833a015609 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 0b53a53adf6..d50edce5f2f 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 48d6c47181e..6a28ffc96ec 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 ee375465396..2300fddefd7 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 86ecf2ea37c..d49af567a73 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 9e10928ecda..3f94fe17319 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 499d34d0d40..21e6445c8fd 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 f911d3b3da1..fa6e1c36b53 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 ac4b606898d..c5cfefdbff0 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 49c6a7799e7..0ebcbb8cde4 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 35d6e58f458..10286da7a38 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 f766aabda57..141d1351540 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 49b39709080..a977543a8ec 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 2c2db139baf..8f09b2ee7f5 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 d8ccacc88cd..20ae8a4b9ba 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 683d57b5b75..087a0a88662 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 4bcbb79bf7b..6e860511fb2 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 d266afbe445..a2221ec2fd3 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 49766a8f25d..7a6244f1d46 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 8d456343b87..ef46be9659a 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 56699b308cc..cfcb159b3f1 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 5c7755d3bd1..80123131652 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 2a94ba30908..43e865d894b 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 800e2d06c44..f5fa846e7a8 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 6864309a63e..edd3a273cc6 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 c2ff01e3e0c..ddeb3fed32f 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 364da5b663b..8be2ec60f4a 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 49620af742f..fa12a3030f1 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 07758344bf3..22cb3f2fe81 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 6746c557288..3fc58925ff7 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 9c5a5a9f270..82fd2be33f8 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 5178a401939..32e7895b794 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 4efc0e59620..70386662fe8 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 f587e772b65..9b02e597ba2 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 | ! ... | From 0eaf117f370f88f7dc1cfcd5df6c6b334df08fb2 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Feb 2024 12:59:11 +0100 Subject: [PATCH 080/113] Kotlin: Add empty provenance column to expected files. --- .../kotlin_java_static_fields/test.expected | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 9f16308bdfc..68f05e908f6 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 | From 817aa7655fee36ed93aab75256518d3f9c78b904 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Feb 2024 13:02:20 +0100 Subject: [PATCH 081/113] Python: Remove redundant IncludePostUpdateFlow and PhaseDependentFlow application. --- .../semmle/python/dataflow/new/internal/DataFlowPrivate.qll | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) 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 c9fb086ea49..55252e22c32 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 From 088a0a54baab1e2af295c74ca790404729b14605 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Feb 2024 15:01:19 +0100 Subject: [PATCH 082/113] Python: Add empty provenance column to expected files. --- .../dataflow/summaries/summaries.expected | 80 +++--- .../Security/CWE-022-TarSlip/TarSlip.expected | 170 ++++++------ .../Security/CWE-022-TarSlip/ZipSlip.expected | 30 +-- .../UnsafeUnpack.expected | 164 ++++++------ .../TemplateInjection.expected | 84 +++--- .../CWE-074-paramiko/paramiko.expected | 8 +- .../Security/CWE-079/EmailXss.expected | 72 +++--- .../XsltInjection.expected | 102 ++++---- .../Security/CWE-113/HeaderInjection.expected | 34 +-- .../Security/CWE-1236/CsvInjection.expected | 24 +- .../CWE-176/UnicodeBypassValidation.expected | 26 +- .../PossibleTimingAttackAgainstHash.expected | 6 +- ...eTimingAttackAgainstSensitiveInfo.expected | 2 +- .../ConstantSecretKey.expected | 30 +-- ...sageOfClientSideEncryptionVersion.expected | 82 +++--- ...ientSuppliedIpUsedInSecurityCheck.expected | 12 +- .../CWE-522/LdapInsecureAuth.expected | 20 +- .../Security/CWE-614/CookieInjection.expected | 24 +- .../django-orm/ReflectedXss.expected | 98 +++---- .../modeling-example/NaiveModel.expected | 30 +-- .../modeling-example/ProperModel.expected | 78 +++--- ...odificationOfParameterWithDefault.expected | 82 +++--- .../UntrustedDataToExternalAPI.expected | 64 ++--- .../PathInjection.expected | 244 +++++++++--------- .../Security/CWE-022-TarSlip/TarSlip.expected | 44 ++-- .../CommandInjection.expected | 28 +- .../CommandInjection.expected | 92 +++---- .../UnsafeShellCommandConstruction.expected | 22 +- .../ReflectedXss.expected | 24 +- .../SqlInjection.expected | 32 +-- .../LdapInjection.expected | 108 ++++---- .../CodeInjection.expected | 28 +- .../LogInjection.expected | 42 +-- .../StackTraceExposure.expected | 18 +- .../PamAuthorization.expected | 18 +- .../CleartextLogging.expected | 20 +- .../CleartextStorage.expected | 8 +- .../CleartextStorage.expected | 16 +- .../WeakSensitiveDataHashing.expected | 56 ++-- .../UnsafeDeserialization.expected | 20 +- .../CWE-601-UrlRedirect/UrlRedirect.expected | 136 +++++----- .../Security/CWE-611-Xxe/Xxe.expected | 14 +- .../XpathInjection.expected | 56 ++-- .../PolynomialReDoS.expected | 24 +- .../RegexInjection.expected | 20 +- .../Security/CWE-776-XmlBomb/XmlBomb.expected | 8 +- .../HardcodedCredentials.expected | 8 +- .../FullServerSideRequestForgery.expected | 104 ++++---- .../PartialServerSideRequestForgery.expected | 204 +++++++-------- .../NoSqlInjection.expected | 234 ++++++++--------- 50 files changed, 1475 insertions(+), 1475 deletions(-) diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.expected b/python/ql/test/experimental/dataflow/summaries/summaries.expected index d7b64ceaf1f..a1f354a654f 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 d785d0e5460..b96f44e358b 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 e99928a05b8..6b618335d81 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 742eecdb92e..f5af1aac647 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 0bfa6affc39..2754b5b8c06 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 b31006425a6..d7793ad996d 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 00172d78319..8581fcda227 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 fba2ae1acdc..5f899a4d1a1 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 55a7c5de999..67144ed1199 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 2fb925fb664..170dda187e9 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 24f62f1a107..aabdf46044e 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 c0fbf3b7eab..8846e908798 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 724913de062..80b07434896 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 eebb4f2cf1f..d339e0adc21 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 0bed45a110f..d97d5510dfa 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 5bfe6e64917..1d529f3b3ea 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 a4c97c8ead7..6ca5069e476 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 afc8302354e..36e0074c784 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 2c888521d47..b93c133cd5a 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 77d13352758..b1347bde3fb 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 004af2780c0..1d3e3343113 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/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected index b33afdac80d..2bed4495c43 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 0f63973da06..1f820cfa5e1 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 2099e5e9d85..4fe7b60580c 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 2fb4890c82e..6f98ea1aae2 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 021f917ec0b..469559c0258 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 b968144d763..3031876928f 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 88015c57ebf..e53508f61a5 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 a779dea257f..26ac3070184 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 46379fcbbc4..9ff8b1d718c 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 3461b853756..295e2e88955 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 2de776c3b28..ff55d168906 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 1d8c78d35b7..d0e05dd2421 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 20857567c49..b1023db5e62 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 8f69b8c32e3..132383876f6 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 f579afece00..f4b5ef93204 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 03ff729bf7d..6b252ea7833 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 0afd9a578b0..eac0bd37b1b 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 dd3a65bc8fa..ac27f304de8 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 2980b6fbb1b..44fb2a8e961 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 cff78889b88..d77c850b2a4 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 6d1b03c5c37..9f37afb885e 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 0e8e826b7a7..efd2576dd71 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 d26a768c1a6..6a8e36aef70 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 12913198622..48bbda48416 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 59a175e8ae6..944856ca0db 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 78ebc9bd049..5f494e9ba7a 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 c6b1c77d40e..cc0a986aedb 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 1960ec4b80d..33f6bc363e4 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 e10f3312dd2..9604e8b92c6 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 | From 4fcb90298d7a27225577f6c4fdd507e5639f1921 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Feb 2024 15:18:07 +0100 Subject: [PATCH 083/113] Dataflow: Add change note. --- shared/dataflow/change-notes/2024-02-08-edges-provenance.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 shared/dataflow/change-notes/2024-02-08-edges-provenance.md 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 00000000000..4cf0fd39d4b --- /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. From 9785ce49364355bec17f37029621c18a344a0d35 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 9 Feb 2024 12:29:56 +0100 Subject: [PATCH 084/113] C#: Actually cache module `Cached` --- .../semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll | 1 + 1 file changed, 1 insertion(+) 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 e9782315711..3616a6cbce6 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. From 1b91695934f7f9af4ca9827b9297100f2c96d407 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 9 Feb 2024 11:57:23 +0000 Subject: [PATCH 085/113] Kotlin 2: Accept some location changes in library-tests/methods --- java/ql/test-kotlin2/library-tests/methods/methods.expected | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/methods/methods.expected b/java/ql/test-kotlin2/library-tests/methods/methods.expected index b1550468e0a..36fb999e4ae 100644 --- a/java/ql/test-kotlin2/library-tests/methods/methods.expected +++ b/java/ql/test-kotlin2/library-tests/methods/methods.expected @@ -12,9 +12,9 @@ methods | 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 | | From b836260b9a8da6a8d8f0bc2b9ece323a1985b975 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 9 Feb 2024 13:15:02 +0000 Subject: [PATCH 086/113] Kotlin 2: Accept some test changes I'm not sure these are an improvement, but they bring Kotlin 2 back in line with Kotlin 1. --- .../test-kotlin2/library-tests/methods/methods.expected | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/methods/methods.expected b/java/ql/test-kotlin2/library-tests/methods/methods.expected index 36fb999e4ae..330c5b2f919 100644 --- a/java/ql/test-kotlin2/library-tests/methods/methods.expected +++ b/java/ql/test-kotlin2/library-tests/methods/methods.expected @@ -2,14 +2,14 @@ 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:21:6:5 | getLazyProp | getLazyProp() | final, public | Compiler generated | From be4413ffc894af6ff8fe32695681980bdd2438e7 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 9 Feb 2024 13:19:26 +0000 Subject: [PATCH 087/113] Kotlin 2: Accept changes in library-tests/methods/parameters.expected These mostly make things consistent with Kotlin 1. --- .../library-tests/methods/parameters.expected | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/methods/parameters.expected b/java/ql/test-kotlin2/library-tests/methods/parameters.expected index f4c60ab6ac4..76538cae775 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 | From 0547c877c2d02a2abaffc42cbef2fc8b02c933bc Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 9 Feb 2024 13:34:56 +0000 Subject: [PATCH 088/113] Kotlin 2: Accept some location changes in library-tests/methods/exprs.expected --- .../library-tests/methods/exprs.expected | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/methods/exprs.expected b/java/ql/test-kotlin2/library-tests/methods/exprs.expected index 7c494f6e392..83068826c19 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 | From 0c43ad45b4ab610af401ec1314da699f0021fd73 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 7 Feb 2024 13:51:22 +0100 Subject: [PATCH 089/113] Ruby: Add another captured variable data flow test --- .../dataflow/global/Flow.expected | 12 ++++++++++ .../dataflow/global/captured_variables.rb | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/ruby/ql/test/library-tests/dataflow/global/Flow.expected b/ruby/ql/test/library-tests/dataflow/global/Flow.expected index b09124590bb..bf06c6d591d 100644 --- a/ruby/ql/test/library-tests/dataflow/global/Flow.expected +++ b/ruby/ql/test/library-tests/dataflow/global/Flow.expected @@ -1,4 +1,5 @@ testFailures +| captured_variables.rb:212:14:212:14 | x | Unexpected result: hasValueFlow=17 | edges | 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 | | @@ -114,6 +115,9 @@ edges | 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 | | +| captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:212:14:212: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 | | @@ -368,6 +372,11 @@ 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 | +| captured_variables.rb:212:14:212: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 +584,9 @@ 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 | +| captured_variables.rb:212:14:212:14 | x | captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:212:14:212: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 e0ecc1da2c5..63e2188fcee 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 @@ end 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 From 1ea7717714e8984b4d9f16db8b797765459d9a1a Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 7 Feb 2024 14:06:08 +0100 Subject: [PATCH 090/113] Capture flow: Take overwrites in nested scopes into account --- .../code/java/dataflow/internal/DataFlowPrivate.qll | 6 ++++++ .../python/dataflow/new/internal/DataFlowPrivate.qll | 2 ++ .../python/dataflow/new/internal/VariableCapture.qll | 4 ++++ .../codeql/ruby/dataflow/internal/DataFlowPrivate.qll | 6 ++++++ .../test/library-tests/dataflow/global/Flow.expected | 4 ---- shared/dataflow/codeql/dataflow/VariableCapture.qll | 10 ++++++++++ 6 files changed, 28 insertions(+), 4 deletions(-) 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 2442671ac52..b14bbb0ab9b 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/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 55252e22c32..c11e0cde64d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -979,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 dd4d3f03867..f1ba86344a4 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/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index ded1ba91246..dca2a310c9f 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/test/library-tests/dataflow/global/Flow.expected b/ruby/ql/test/library-tests/dataflow/global/Flow.expected index bf06c6d591d..5f019f306d3 100644 --- a/ruby/ql/test/library-tests/dataflow/global/Flow.expected +++ b/ruby/ql/test/library-tests/dataflow/global/Flow.expected @@ -1,5 +1,4 @@ testFailures -| captured_variables.rb:212:14:212:14 | x | Unexpected result: hasValueFlow=17 | edges | 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 | | @@ -117,7 +116,6 @@ edges | 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 | | -| captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:212:14:212: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 | | @@ -376,7 +374,6 @@ nodes | 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 | -| captured_variables.rb:212:14:212: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 | @@ -586,7 +583,6 @@ subpaths | 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 | -| captured_variables.rb:212:14:212:14 | x | captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:212:14:212: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/shared/dataflow/codeql/dataflow/VariableCapture.qll b/shared/dataflow/codeql/dataflow/VariableCapture.qll index 6e1ae6bf104..e90bf481442 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) + ) + } } From 37d774176b9b80bf75744766769152edbd019bb9 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 7 Feb 2024 19:52:36 +0100 Subject: [PATCH 091/113] Ruby: Fix SSA inconsistency --- .../codeql/ruby/dataflow/internal/SsaImpl.qll | 41 +++++++++++-------- .../test/library-tests/variables/ssa.expected | 1 - 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll index e1a3607a43e..8839c30b949 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/test/library-tests/variables/ssa.expected b/ruby/ql/test/library-tests/variables/ssa.expected index 91ea3085ec8..a729af328ce 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 | From ab758d5f1edf6cf30c1ac470f37645bf45f81ea8 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Fri, 9 Feb 2024 13:53:05 +0000 Subject: [PATCH 092/113] Kotlin 2: Accept loc changes in library-tests/parameter-defaults/defaults.expected --- .../library-tests/parameter-defaults/defaults.expected | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 5648ac7cf00..2e7d2920d78 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 | From 16aed188210f3a48a999e2e8112b9056f43eefeb Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 9 Feb 2024 13:53:36 +0000 Subject: [PATCH 093/113] Address reviews - Elaborate on docs and update severity --- .../lib/semmle/code/java/security/AndroidLocalAuthQuery.qll | 2 +- .../CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp | 5 +++-- .../CWE/CWE-287/AndroidInsecureLocalAuthentication.ql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll index 46b391559f1..ca725a041d5 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidLocalAuthQuery.qll @@ -21,7 +21,7 @@ class AuthenticationSuccessCallback extends Method { this.hasName("onAuthenticationSucceeded") } - /** Gets the parameter containing the `authenticationResult` */ + /** 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. */ diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp index b54a2add853..e65f00826bf 100644 --- a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp @@ -6,7 +6,8 @@

    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 make use of a KeyStore-backed key, it is able to be bypassed by a privileged malicious application or an attacker with physical access. +However, if this authentication does not make use of a KeyStore-backed key, it is able to be bypassed by a privileged malicious application or an attacker with physical access, +using application hooking tools such as Frida.

    @@ -20,7 +21,7 @@ in a way that is required for the sensitive parts of the application to function

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

    -

    In he following (good) case, a secret key is generated in the Android KeyStore that is required for the application to grant access.

    +

    In the following (good) case, a secret key is generated in the Android KeyStore that is required for the application to grant access by decrypting data.

    diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql index 57f256bb40d..92256a2b779 100644 --- a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.ql @@ -3,7 +3,7 @@ * @description Local authentication that does not make use of a `CryptoObject` can be bypassed. * @kind problem * @problem.severity warning - * @security-severity 9.3 + * @security-severity 4.4 * @precision high * @id java/android/insecure-local-authentication * @tags security From 3cba1764e2aefd9f87a8170c448517bcabd5f32d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 00:16:45 +0000 Subject: [PATCH 094/113] Add changed framework coverage reports --- .../library-coverage/coverage.csv | 18 +++++++++--------- .../library-coverage/coverage.rst | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 05fc3c67ada..5b3af5e9040 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 78130e9d9c2..3e0edb7dfac 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 From 3212f80bea6ce77ae5a6cee00339f8e2a8256769 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 03:38:19 +0000 Subject: [PATCH 095/113] Bump chrono from 0.4.33 to 0.4.34 in /ql Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.33 to 0.4.34. - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](https://github.com/chronotope/chrono/compare/v0.4.33...v0.4.34) --- updated-dependencies: - dependency-name: chrono dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- ql/Cargo.lock | Bin 34042 -> 34042 bytes ql/buramu/Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/Cargo.lock b/ql/Cargo.lock index 211cfe14d7a7e56cec62f4fefc999f2abaed3da5..6ea3f99faf5a892ffe3c3edc328b7047b4f8f366 100644 GIT binary patch delta 82 zcmey>$@Hs}X~QAj$rn=t>`jxB4Gc}qOiYq2jZ#c4EDh2Ulgv#lEK^M^Q;ZDLEX*xa mOp`4w4Gb;JER4)kOpH>KO$`k#4J}O!Owx=kHV5*pECT>+cNqr& delta 83 zcmV~$u@QhE37fchw0yi`)jnb|t783} Date: Mon, 12 Feb 2024 09:44:23 +0100 Subject: [PATCH 096/113] Add change note --- java/ql/src/change-notes/2024-02-12-relative-exec-severity.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/src/change-notes/2024-02-12-relative-exec-severity.md 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 00000000000..ce54d7fc645 --- /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. From 933a8e648db8f5f918baafbf8b4effa83e904b3a Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Mon, 12 Feb 2024 10:27:05 +0100 Subject: [PATCH 097/113] Add integration test for missing nuget package sources --- .../Assemblies.expected | 0 .../Assemblies.ql | 14 ++++++++++++++ .../nuget.config | 7 +++++++ .../proj/Program.cs | 6 ++++++ .../proj/global.json | 5 +++++ .../proj/packages.config | 4 ++++ .../proj/test.csproj | 4 ++++ .../skip-on-platform-osx-arm | 1 + .../test.py | 3 +++ 9 files changed, 44 insertions(+) create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/nuget.config create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/Program.cs create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/global.json create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/packages.config create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/proj/test.csproj create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/skip-on-platform-osx-arm create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/test.py 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 00000000000..e69de29bb2d 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 00000000000..e07e7c55e7d --- /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 00000000000..7cf2791d738 --- /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 00000000000..39a9e95bb6e --- /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 00000000000..5c3fd64fbd1 --- /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 00000000000..90071d0ca8c --- /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 00000000000..f7600103d99 --- /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 00000000000..6ebb8d63fcc --- /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 00000000000..4916763ec62 --- /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", "--extractor-option=cil=false"]) From 26cea33cc654fed10b90c07e53db6fe2ef8e12de Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Fri, 9 Feb 2024 23:01:00 +0100 Subject: [PATCH 098/113] C# - Add default nuget feed if there's none --- .../DependencyManager.cs | 14 ++- .../NugetPackages.cs | 118 +++++++++++++++++- .../Assemblies.expected | 1 + 3 files changed, 122 insertions(+), 11 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index cd071c307bf..01c3a022432 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -169,13 +169,15 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { 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 db0f20bc8cb..015e1c4b1f8 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 @@ namespace Semmle.Extraction.CSharp.DependencyFetching 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 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { 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 @@ namespace Semmle.Extraction.CSharp.DependencyFetching */ 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,75 @@ namespace Semmle.Extraction.CSharp.DependencyFetching { 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 + { + File.Delete(nugetConfigPath); + + if (backupNugetConfig is not null) + { + File.Move(backupNugetConfig, nugetConfigPath); + } + } + catch (Exception exc) + { + logger.LogError($"Failed to restore original nuget.config file: {exc}"); + } + } } } 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 index e69de29bb2d..720c83eff16 100644 --- 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 @@ -0,0 +1 @@ +| /Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll | From 5be3993405a88607b0b2aab2da0bd792ad9914d6 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Mon, 12 Feb 2024 09:46:52 +0100 Subject: [PATCH 099/113] Preserve nuget.config file casing after cleanup --- .../NugetPackages.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs index 015e1c4b1f8..a4bc3e4bf60 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs @@ -255,12 +255,24 @@ namespace Semmle.Extraction.CSharp.DependencyFetching try { - File.Delete(nugetConfigPath); - - if (backupNugetConfig is not null) + if (backupNugetConfig is null) { - File.Move(backupNugetConfig, nugetConfigPath); + 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); + backup.CopyTo(current); + } + + logger.LogInfo("Deleting backup nuget.config file"); + File.Delete(backupNugetConfig); } catch (Exception exc) { From d3fea4044ed0ad4d3e44b2c49c9b8f5f1782732a Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Mon, 12 Feb 2024 10:27:56 +0000 Subject: [PATCH 100/113] Apply suggestions from documentation review Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- .../CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp index e65f00826bf..672e1a1a1ab 100644 --- a/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp +++ b/java/ql/src/Security/CWE/CWE-287/AndroidInsecureLocalAuthentication.qhelp @@ -6,14 +6,13 @@

    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 make use of a KeyStore-backed key, it is able to be bypassed by a privileged malicious application or an attacker with physical access, -using application hooking tools such as Frida. +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 and ensure that the onAuthenticaionSuccess callback for a biometric prompt uses it +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.

    @@ -21,7 +20,7 @@ in a way that is required for the sensitive parts of the application to function

    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 that is required for the application to grant access by decrypting data.

    +

    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.

    From 70b6ae6876b8104965660963fdebd674c044c3c6 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Mon, 12 Feb 2024 11:59:19 +0100 Subject: [PATCH 101/113] Add comments to nuget.config file restore --- .../NugetPackages.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs index a4bc3e4bf60..2183daf09cc 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackages.cs @@ -267,8 +267,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching using (var backup = File.OpenRead(backupNugetConfig)) using (var current = File.OpenWrite(nugetConfigPath)) { - current.SetLength(0); - backup.CopyTo(current); + current.SetLength(0); // Truncate file + backup.CopyTo(current); // Restore original content } logger.LogInfo("Deleting backup nuget.config file"); From 888f47c6c88a5376764c4036d8c5bc4d329be7e0 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Mon, 12 Feb 2024 12:02:41 +0100 Subject: [PATCH 102/113] Remove `cil=false` extractor option from integration tests --- csharp/ql/integration-tests/all-platforms/autobuild/test.py | 2 +- csharp/ql/integration-tests/all-platforms/cshtml/test.py | 2 +- .../integration-tests/all-platforms/cshtml_standalone/test.py | 2 +- .../all-platforms/cshtml_standalone_disabled/test.py | 2 +- .../all-platforms/cshtml_standalone_flowsteps/test.py | 2 +- .../all-platforms/cshtml_standalone_net6/test.py | 2 +- .../all-platforms/diag_recursive_generics/test.py | 2 +- csharp/ql/integration-tests/all-platforms/standalone/test.py | 2 +- .../all-platforms/standalone_dependencies_net48/test.py | 2 +- csharp/ql/integration-tests/linux-only/compiler_args/test.py | 2 +- .../standalone_dependencies_non_utf8_filename/test.py | 2 +- .../posix-only/standalone_dependencies/test.py | 2 +- .../posix-only/standalone_dependencies_multi_target/test.py | 2 +- .../posix-only/standalone_dependencies_nuget/test.py | 2 +- .../standalone_dependencies_nuget_config_error/test.py | 2 +- .../posix-only/standalone_dependencies_nuget_no_sources/test.py | 2 +- csharp/ql/integration-tests/posix-only/warn_as_error/test.py | 2 +- .../windows-only/standalone_dependencies/test.py | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/csharp/ql/integration-tests/all-platforms/autobuild/test.py b/csharp/ql/integration-tests/all-platforms/autobuild/test.py index 6a1f8864145..89c7dbf7113 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 24cc83b4f2d..b9be34f1efb 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 c0647f00385..b1f535c1727 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 dfce788f220..c00c6f6e2e8 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 @@ import os 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 c0647f00385..b1f535c1727 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 c0647f00385..b1f535c1727 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 24cc83b4f2d..b9be34f1efb 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 58074b430b2..72f47e38d22 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 58074b430b2..72f47e38d22 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 6a1f8864145..89c7dbf7113 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 2a7f375abba..7173ed4c6c2 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 @@ path = b'\xd2abcd.cs' 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 58074b430b2..72f47e38d22 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 58074b430b2..72f47e38d22 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 58074b430b2..72f47e38d22 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 58074b430b2..72f47e38d22 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/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/test.py index 4916763ec62..9142835c65f 100644 --- 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 @@ -1,3 +1,3 @@ from create_database_utils import * -run_codeql_database_create([], source="proj", lang="csharp", extra_args=["--extractor-option=buildless=true", "--extractor-option=cil=false"]) +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 a0a7904259a..60f5c6422b7 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 @@ import os 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 58074b430b2..72f47e38d22 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"]) From 27ebebc24bd72370ed4c8b4f3a140fb04c14f066 Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider Date: Mon, 12 Feb 2024 17:10:35 +0100 Subject: [PATCH 103/113] Python: Update BUILD.bazel files. This allows us to (later) build the whole python language pack with bazel. --- python/BUILD.bazel | 19 +++++++++++++++++++ python/downgrades/BUILD.bazel | 12 ++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 python/downgrades/BUILD.bazel diff --git a/python/BUILD.bazel b/python/BUILD.bazel index 7905f5b4927..e6d1387e4c2 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 00000000000..924ff12ff30 --- /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__"], +) From 8635b5d31662a2a959b3b2036284538719f1c514 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 12 Feb 2024 16:44:38 +0000 Subject: [PATCH 104/113] C++: Add test with missing flow. --- cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) 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 8dcefb20b95..da2176ece8e 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); // $ MISSING: ast ir } \ No newline at end of file From 70c7c1a5e7e911d7ff40ea868bbf8054483843f2 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 12 Feb 2024 16:51:16 +0000 Subject: [PATCH 105/113] C++: Add flow from the fill character to the output pointer. --- .../code/cpp/models/implementations/Memset.qll | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 a540c0a88b6..965ac8daf3b 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) { From a7993996394ab0306f1b45d3cd4493deacb53e15 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 12 Feb 2024 16:51:25 +0000 Subject: [PATCH 106/113] C++: Accept test changes. --- .../dataflow/dataflow-tests/dataflow-consistency.expected | 1 + .../dataflow/dataflow-tests/dataflow-ir-consistency.expected | 1 + .../dataflow/dataflow-tests/test-source-sink.expected | 1 + cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) 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 af91d22d4bf..8b2b371a4e2 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 93792f406aa..cc0903c1efb 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 6c56bee2699..2d33f47ba60 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 da2176ece8e..e29619a6800 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -1043,5 +1043,5 @@ void* memset(void*, int, size_t); void memset_test(char* buf) { // $ ast-def=buf memset(buf, source(), 10); - sink(*buf); // $ MISSING: ast ir + sink(*buf); // $ ir MISSING: ast } \ No newline at end of file From a12816174675ade71ebfc1fab5fde235249d3d53 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Mon, 12 Feb 2024 16:59:42 -0500 Subject: [PATCH 107/113] Use `!cancelled` in qhelp-pr-preview workflow --- .github/workflows/qhelp-pr-preview.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/qhelp-pr-preview.yml b/.github/workflows/qhelp-pr-preview.yml index 8b20fbe00c9..db267175d4e 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 From a3008083ea0664b1889d36f135a62051a08a5b97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 03:58:21 +0000 Subject: [PATCH 108/113] Bump the extractor-dependencies group in /go/extractor with 1 update Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/tools](https://github.com/golang/tools). Updates `golang.org/x/tools` from 0.17.0 to 0.18.0 - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.17.0...v0.18.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies ... Signed-off-by: dependabot[bot] --- go/extractor/go.mod | 2 +- go/extractor/go.sum | 4 +- .../golang.org/x/tools/go/packages/doc.go | 40 ++++++---- .../x/tools/go/packages/external.go | 77 ++++++++++++++----- .../golang.org/x/tools/go/packages/golist.go | 35 ++++----- .../x/tools/go/packages/packages.go | 46 ++--------- .../x/tools/internal/gcimporter/iimport.go | 7 ++ go/extractor/vendor/modules.txt | 2 +- 8 files changed, 117 insertions(+), 96 deletions(-) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index d4a00dcd158..c1aa66b49b3 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 f3a7decbd45..dab099e92a0 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/vendor/golang.org/x/tools/go/packages/doc.go b/go/extractor/vendor/golang.org/x/tools/go/packages/doc.go index b2a0b7c6a67..a8d7b06ac09 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 7db1d1293ab..4335c1eb14c 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 cd375fbc3c2..22305d9c90a 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 81e9e6a727d..f33b0afc22c 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 9bde15e3bc6..9fffa9ad05c 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 fa3a89a509d..5687615f62c 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 From b509645e02c1417c2745b5a6a2e7260a0f32f51a Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 13 Feb 2024 10:18:31 +0100 Subject: [PATCH 109/113] C++: Bump language version in IR tests to C++20 --- cpp/ql/test/library-tests/ir/ir/ir.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index ce03076f0c3..74f7f931146 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2120,4 +2120,4 @@ void call_as_child_of_ConditionDeclExpr() { if(HasOperatorBool b = HasOperatorBool()) {} } -// semmle-extractor-options: -std=c++17 --clang +// semmle-extractor-options: -std=c++20 --clang From 8aeb75675a57b43be73461d1a5405c9c937dbaff Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 13 Feb 2024 10:35:12 +0100 Subject: [PATCH 110/113] C++: Add constructor and destructor for `vector` to IR test --- .../library-tests/ir/ir/PrintAST.expected | 11524 ++++++++-------- .../library-tests/ir/ir/aliased_ir.expected | 10310 +++++++------- cpp/ql/test/library-tests/ir/ir/ir.cpp | 2 + .../ir/ir/operand_locations.expected | 9052 ++++++------ .../ir/ir/raw_consistency.expected | 2 +- .../test/library-tests/ir/ir/raw_ir.expected | 9282 ++++++------- 6 files changed, 20090 insertions(+), 20082 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 41fb6a467b0..2ffe94e2b84 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -9386,10 +9386,10 @@ ir.cpp: # 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 & # 1060| [CopyAssignmentOperator] vector::iterator& vector::iterator::operator=(vector::iterator const public&) # 1060| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) @@ -9414,1208 +9414,1178 @@ ir.cpp: # 1065| : # 1065| getParameter(0): [Parameter] right # 1065| Type = [NestedStruct] iterator -# 1068| [ConstMemberFunction] vector::iterator vector::begin() const +# 1068| [Constructor] void vector::vector(T) # 1068| : -# 1068| [ConstMemberFunction] vector::iterator vector::begin() const -# 1068| : -# 1069| [ConstMemberFunction] vector::iterator vector::end() const +# 1068| getParameter(0): [Parameter] (unnamed parameter 0) +# 1068| Type = [TemplateParameter] T +# 1069| [Destructor] void vector::~vector() # 1069| : -# 1069| [ConstMemberFunction] vector::iterator vector::end() const -# 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| : +# 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| getBeginEndDeclaration(): [DeclStmt] declaration +# 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| 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| getBeginEndDeclaration(): [DeclStmt] declaration +# 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| 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| getStmt(1): [DeclStmt] declaration +# 1127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1127| Type = [IntType] int -# 1127| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of w -# 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 +# 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 = lvalue +# 1166| getArrayOffset(): [VariableAccess] i +# 1166| Type = [IntType] int # 1166| ValueCategory = prvalue(load) -# 1166| getChild(1): [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| 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 +# 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| 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) -# 1167| getRightOperand(): [VariableAccess] vi4_shuffle -# 1167| Type = [SpecifiedType] __attribute((vector_size(16UL))) 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| getParameter(0): [Parameter] destination # 1251| Type = [CharPointerType] char * -# 1251| getParameter(1): [Parameter] s2 -# 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| Value = [Literal] 1 +# 1281| ValueCategory = prvalue(load) +# 1281| getRightOperand(): [Literal] 2 +# 1281| Type = [IntType] int +# 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 +10595,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 +10611,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 +10629,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 +10641,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 +10651,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 +10665,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 +10701,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| 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] 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| [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 +11010,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| getArgument(0): [ConstructorCall] call to String +# 1374| Type = [VoidType] void +# 1374| ValueCategory = prvalue +# 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 = 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 +# 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 -# 1376| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1376| Type = [Struct] String -# 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 +# 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 -# 1388| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1388| Type = [Class] destructor_only -# 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 +11519,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 +11564,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 +11589,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 +11699,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 +11718,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 -#-----| 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 -#-----| 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 * -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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| getExpr(): [ValueFieldAccess] d # 1505| Type = [DoubleType] double # 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 +# 1505| getDeclarationEntry(3): [VariableDeclarationEntry] definition of b +# 1505| Type = [IntType] unsigned int +#-----| getVariable().getInitializer(): [Initializer] initializer for b +# 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 +# 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 +# 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 +# 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 +# 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 +# 1505| getExpr(): [ValueFieldAccess] m +# 1505| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1505| ValueCategory = lvalue +# 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) -# 1522| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1522| Type = [LValueReferenceType] double & -# 1522| ValueCategory = prvalue -# 1522| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1522| Type = [DoubleType] double +# 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 -# 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] ... = ... +# 1522| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1522| Type = [LValueReferenceType] int *& +# 1522| ValueCategory = prvalue +# 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 & -#-----| 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 & -#-----| 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| 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 +# 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 -# 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(2): [VariableDeclarationEntry] definition of d +# 1585| Type = [LValueReferenceType] type & +#-----| getVariable().getInitializer(): [Initializer] initializer for d +# 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(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(): [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 +# 1601| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1601| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1601| ValueCategory = prvalue(load) +# 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 +13029,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 +13188,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 +13204,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) +# 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(x): [VariableAccess] x +# 1690| Type = [IntType] int +# 1690| ValueCategory = prvalue(load) +# 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) -# 1690| getAFieldExpr(y).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1690| Type = [IntType] int -# 1690| ValueCategory = prvalue(load) -# 1690| getAFieldExpr(z).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 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| : +# 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) +# 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 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 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 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 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 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 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 ... -# 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| : -#-----| 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| : -#-----| 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| : -#-----| 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| : -#-----| 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| : -#-----| 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| : -#-----| 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([...](...){...}) +# 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 +13558,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 +# 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 = lvalue -# 1788| getRValue(): [AddExpr] ... + ... -# 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 +# 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 = lvalue -# 1804| getRValue(): [AddExpr] ... + ... -# 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 +14307,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 +14371,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 +15080,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 +15105,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 +15230,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 +15333,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| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = lvalue -# 2010| getRValue(): [ConditionalExpr] ... ? ... : ... +# 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 = 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 +15450,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 +15487,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 +15504,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| 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| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 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| getArgument(0): [ConstructorCall] call to TernaryNonPodObj -# 2021| Type = [VoidType] void -# 2021| ValueCategory = prvalue -# 2021| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 2021| getQualifier(): [VariableAccess] z # 2021| Type = [Struct] TernaryNonPodObj # 2021| ValueCategory = lvalue -# 2021| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2021| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2021| Type = [Struct] TernaryNonPodObj +# 2021| ValueCategory = prvalue +# 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| 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| 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 +15555,614 @@ 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| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const Base2 & -# 2041| [MemberFunction] void Base2::operator delete(void*) +# 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| : -# 2041| getParameter(0): [Parameter] p -# 2041| Type = [VoidPointerType] void * +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const Base2 & +# 2041| [Constructor] void Base2::Base2() +# 2041| : +# 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 ... 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 f21ffad9dbb..ebb6e63062f 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 1144| Block 11 +# 1144| v1144_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] : +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 -#-----| 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] : +# 1210| Block 2 +# 1210| v1210_1(void) = NoOp : +# 1211| r1211_1(int) = Constant[3] : # 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 : +# 1211| m1211_3(int) = Store[y] : &:r1211_2, r1211_1 +#-----| Goto -> Block 3 -# 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 +#-----| Goto -> Block 4 + +# 1223| Block 2 # 1223| v1223_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1225| Block 3 +# 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 : +# 1228| m1228_3(int) = Store[y] : &:r1228_2, r1228_1 +#-----| Goto -> Block 4 -# 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 -#-----| False -> Block 1 -#-----| True -> Block 2 +# 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 : -# 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 -#-----| 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| int staticLocalInit(int) # 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 +# 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 -# 1241| Block 1 -# 1241| r1241_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 -#-----| 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 +# 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 -# 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 +# 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 + +# 1243| Block 1 +# 1243| r1243_4(glval) = VariableAddress[a] : +#-----| r0_1(glval) = FunctionAddress[String] : +#-----| 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 +# 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 + +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 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 : -# 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 - -# 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 : +# 1295| Block 3 +# 1295| r1295_1(glval) = VariableAddress[#return] : +# 1295| m1295_2(int) = Uninitialized[#return] : &:r1295_1 +#-----| Goto -> Block 1 -# 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 +# 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| Goto -> Block 13 - -# 1306| Block 16 -# 1306| m1306_6(long) = Phi : from 17:m1306_13, from 18:m1306_17 +# 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 -# 1308| r1308_1(glval) = VariableAddress[x] : -# 1308| r1308_2(int) = Load[x] : &:r1308_1, m1299_8 -# 1308| r1308_3(int) = Constant[0] : +# 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 + +# 1306| Block 11 +# 1306| r1306_12(glval) = VariableAddress[#temp1306:9] : +# 1306| m1306_13(long) = Store[#temp1306:9] : &:r1306_12, r1306_2 +#-----| Goto -> Block 10 + +# 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 + +# 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 + +# 1307| Block 14 +# 1307| r1307_12(glval) = VariableAddress[#temp1307:9] : +# 1307| m1307_13(long) = Store[#temp1307:9] : &:r1307_12, r1307_2 +#-----| Goto -> Block 13 + +# 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 + +# 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 : +# 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 : -# 1308| Block 20 -# 1308| r1308_11(glval) = VariableAddress[#temp1308:9] : -# 1308| m1308_12(int) = Store[#temp1308:9] : &:r1308_11, r1308_18 +# 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 : +# 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 : -# 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 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 1488| v1488_75(void) = ReturnVoid : +# 1488| v1488_76(void) = AliasedUse : m1488_3 +# 1488| v1488_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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 1541| v1541_35(void) = ReturnVoid : +# 1541| v1541_36(void) = AliasedUse : m1541_3 +# 1541| v1541_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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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] : +# 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 : +#-----| 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 1738| v1738_24(void) = ReturnVoid : +# 1738| v1738_25(void) = AliasedUse : ~m1738_18 +# 1738| v1738_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 : +# 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 : -# 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 +# 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 : +# 1745| v1745_24(void) = ReturnVoid : +# 1745| v1745_25(void) = AliasedUse : ~m1745_21 +# 1745| v1745_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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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| Block 12 +# 1785| v1785_1(void) = NoOp : +# 1759| v1759_7(void) = ReturnVoid : +# 1759| v1759_8(void) = AliasedUse : m1759_3 +# 1759| v1759_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 +# 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 +# 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, m1796_7 +# 1799| r1799_3(glval) = VariableAddress[w] : +# 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 -# 1798| Block 3 -# 1798| v1798_1(void) = NoOp : -# 1799| r1799_1(glval) = VariableAddress[x] : -# 1799| r1799_2(int) = Load[x] : &:r1799_1, m1794_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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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| int global_6 +# 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 : +# 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 : -# 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 +# 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,1787 @@ 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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() +# 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 : +# 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 : -# 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| 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 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 : -# 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 : +# 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 : -# 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 +# 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 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| Goto -> Block 4 - -# 1999| Block 7 -# 1999| m1999_4(int) = Phi : from 8:m1999_11, from 9:m1999_14 +# 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(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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 : +# 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 : -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 : +# 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 : -# 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 : +# 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 : -# 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| 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 : +# 2015| v2015_11(void) = ReturnVoid : +# 2015| v2015_12(void) = AliasedUse : m2015_3 +# 2015| v2015_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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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*) +# 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 : +# 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::~Base2() +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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::operator delete(void*) +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 2095| Block 1 +# 2095| r2095_1(glval) = FunctionAddress[CallsNonExit] : +# 2095| v2095_2(void) = Call[CallsNonExit] : func:r2095_1 +# 2092| v2092_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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : perf-regression.cpp: # 6| void Big::Big() diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 74f7f931146..1fa9337f29b 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; }; 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 2af9a3488e0..88c62cd70b3 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -794,12 +794,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 | @@ -829,18 +829,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 | @@ -860,10 +860,10 @@ | 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 +873,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 +5525,4568 @@ | 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:1084:5 | Address | &:r1080_1 | +| ir.cpp:1080:5:1084:5 | Address | &:r1080_7 | +| ir.cpp:1080:5:1084:5 | Address | &:r1080_15 | +| ir.cpp:1080:5:1084:5 | 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:1090:5 | Address | &:r1086_1 | +| ir.cpp:1086:5:1090:5 | Address | &:r1086_7 | +| ir.cpp:1086:5:1090:5 | Address | &:r1086_15 | +| ir.cpp:1086:5:1090:5 | 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 | | 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 d2a11541fd1..aefdbf9d134 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -20,7 +20,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) | 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 53361dd907a..ee73d4520ed 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 1199| mu1199_3(int) = Store[y] : &:r1199_2, r1199_1 +#-----| Goto -> Block 3 -# 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 +# 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 -# 1212| v1212_1(void) = NoOp : -# 1202| v1202_6(void) = ReturnVoid : -# 1202| v1202_7(void) = AliasedUse : ~m? -# 1202| v1202_8(void) = ExitFunction : +# 1211| mu1211_3(int) = Store[y] : &:r1211_2, r1211_1 +#-----| Goto -> Block 3 -# 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 +# 1212| Block 3 +# 1212| v1212_1(void) = NoOp : +# 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 +#-----| Goto -> Block 4 + +# 1223| Block 2 # 1223| v1223_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1225| Block 3 +# 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 : +# 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 : -# 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 -#-----| 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 -#-----| 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| int staticLocalInit(int) # 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 +# 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 -# 1241| Block 1 -# 1241| r1241_4(glval) = VariableAddress[a] : -#-----| r0_1(glval) = FunctionAddress[String] : -#-----| v0_2(void) = Call[String] : func:r0_1, this:r1241_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 +# 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 -# 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 +# 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 + +# 1243| Block 1 +# 1243| r1243_4(glval) = VariableAddress[a] : +#-----| r0_1(glval) = FunctionAddress[String] : +#-----| v0_2(void) = Call[String] : func:r0_1, this:r1243_4 +#-----| mu0_3(unknown) = ^CallSideEffect : ~m? +#-----| 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 + +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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? +# 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 : +# 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 : -# 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 +# 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 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 : -# 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 - -# 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 : +# 1295| Block 3 +# 1295| r1295_1(glval) = VariableAddress[#return] : +# 1295| mu1295_2(int) = Uninitialized[#return] : &:r1295_1 +#-----| Goto -> Block 1 -# 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 +# 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| Goto -> Block 13 - -# 1306| Block 16 +# 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 -# 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 -#-----| False -> Block 25 -#-----| True -> Block 24 +# 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 -# 1306| Block 17 +# 1306| Block 11 # 1306| r1306_11(glval) = VariableAddress[#temp1306:9] : # 1306| mu1306_12(long) = Store[#temp1306:9] : &:r1306_11, r1306_2 -#-----| Goto -> Block 16 +#-----| Goto -> Block 10 -# 1306| Block 18 +# 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 + +# 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 + +# 1307| Block 14 +# 1307| r1307_11(glval) = VariableAddress[#temp1307:9] : +# 1307| mu1307_12(long) = Store[#temp1307:9] : &:r1307_11, r1307_2 +#-----| Goto -> Block 13 + +# 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 + +# 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 + +# 1308| Block 17 +# 1308| r1308_11(glval) = VariableAddress[#temp1308:9] : +# 1308| mu1308_12(long) = Store[#temp1308:9] : &:r1308_11, r1308_2 #-----| 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 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 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 : +# 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 : -# 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 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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] : +# 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] : -#-----| 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 -#-----| 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] : -#-----| r0_8(glval) = VariableAddress[#temp0:0] : +#-----| 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[#temp0:0] : &:r0_8, r1447_3 +# 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] : +# 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 +# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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| 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 : +# 1488| v1488_66(void) = ReturnVoid : +# 1488| v1488_67(void) = AliasedUse : ~m? +# 1488| v1488_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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 1541| v1541_31(void) = ReturnVoid : +# 1541| v1541_32(void) = AliasedUse : ~m? +# 1541| v1541_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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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] : +# 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 : +#-----| 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 1738| v1738_21(void) = ReturnVoid : +# 1738| v1738_22(void) = AliasedUse : ~m? +# 1738| v1738_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 : +# 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 : -# 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 +# 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 : +# 1745| v1745_21(void) = ReturnVoid : +# 1745| v1745_22(void) = AliasedUse : ~m? +# 1745| v1745_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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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| Block 12 +# 1785| v1785_1(void) = NoOp : +# 1759| v1759_6(void) = ReturnVoid : +# 1759| v1759_7(void) = AliasedUse : ~m? +# 1759| v1759_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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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| int global_6 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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] : +# 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 : +# 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 : -# 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 : +# 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 : -# 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() +# 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 : +# 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 : -# 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| 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 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 : -# 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 +# 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 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 +# 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| Goto -> Block 4 - -# 1999| Block 7 +# 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(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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 -#-----| 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 -# 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 : +# 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 : -# 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 +# 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 -# 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 +# 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 -# 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 +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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 + +# 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,742 @@ 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 : +# 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 : -# 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 : +# 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 : -# 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| 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 : +# 2015| v2015_10(void) = ReturnVoid : +# 2015| v2015_11(void) = AliasedUse : ~m? +# 2015| v2015_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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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*) +# 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 : +# 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::~Base2() +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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::operator delete(void*) +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 : +# 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 : -# 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| Block 1 +# 2090| v2090_1(void) = NoOp : +# 2087| v2087_5(void) = ReturnVoid : +# 2087| v2087_6(void) = AliasedUse : ~m? +# 2087| v2087_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 +# 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 : +# 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 : -# 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 +# 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 : +# 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 : -# 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 : +# 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 : -# 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 +# 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 : perf-regression.cpp: # 6| void Big::Big() From fb072a5156d2e1526c21ba4be6e654f596ce84d8 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 13 Feb 2024 10:44:24 +0100 Subject: [PATCH 111/113] C++: Add additional IR tests for init statements --- .../library-tests/ir/ir/PrintAST.expected | 283 ++++++++++++++++++ .../library-tests/ir/ir/aliased_ir.expected | 154 ++++++++++ .../ir/ir/aliased_ssa_consistency.expected | 1 + .../aliased_ssa_consistency_unsound.expected | 1 + cpp/ql/test/library-tests/ir/ir/ir.cpp | 32 ++ .../ir/ir/operand_locations.expected | 122 ++++++++ .../ir/ir/raw_consistency.expected | 5 + .../test/library-tests/ir/ir/raw_ir.expected | 276 +++++++++++++++++ .../ir/ir/unaliased_ssa_consistency.expected | 1 + ...unaliased_ssa_consistency_unsound.expected | 1 + 10 files changed, 876 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 2ffe94e2b84..e7768ce6999 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| [CopyConstructor] void vector::vector(vector const&) +# 1059| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| 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,16 +9438,24 @@ ir.cpp: # 1065| : # 1065| getParameter(0): [Parameter] right # 1065| Type = [NestedStruct] iterator +# 1068| [Constructor] void vector::vector(ClassWithDestructor) +# 1068| : +# 1068| getParameter(0): [Parameter] (unnamed parameter 0) +# 1068| Type = [Class] ClassWithDestructor # 1068| [Constructor] void vector::vector(T) # 1068| : # 1068| getParameter(0): [Parameter] (unnamed parameter 0) # 1068| Type = [TemplateParameter] T # 1069| [Destructor] void vector::~vector() # 1069| : +# 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 @@ -16163,6 +16195,257 @@ ir.cpp: # 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 +# 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| getBeginEndDeclaration(): [DeclStmt] declaration +# 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 +# 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 ebb6e63062f..458ab279ff2 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -12473,6 +12473,160 @@ ir.cpp: # 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() # 6| Block 0 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 b93c7d2649f..b027437d48a 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 b93c7d2649f..b027437d48a 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 1fa9337f29b..cd702fcb265 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2122,4 +2122,36 @@ void call_as_child_of_ConditionDeclExpr() { if(HasOperatorBool b = HasOperatorBool()) {} } +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 88c62cd70b3..b460df9ea59 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 | @@ -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 | @@ -859,6 +864,7 @@ | 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 | m1080_23 | | file://:0:0:0:0 | SideEffect | m1080_23 | @@ -10087,6 +10093,122 @@ | 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 aefdbf9d134..c7c7ad6f53a 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 @@ -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 ee73d4520ed..6ef4a69e0db 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -11676,6 +11676,282 @@ ir.cpp: # 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() # 6| Block 0 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 b93c7d2649f..bdc0ef3463e 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 b93c7d2649f..bdc0ef3463e 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 From cb7fe16ced1e5f9cd849ecfc1fedffe624f641cc Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 9 Feb 2024 09:06:02 +0000 Subject: [PATCH 112/113] Revert "Merge pull request #15537 from MathiasVP/swap-also-clears-first-argument" This reverts commit 23677b23c2bd960fba29f7f8db8c31ae36c470bb, reversing changes made to c5dc88345da959875365ca24801787e589c8ee79. --- cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll | 2 +- cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 cb757800d65..325fd6f58b2 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Swap.qll @@ -20,7 +20,7 @@ private class Swap extends DataFlowFunction, FlowOutBarrierFunction { output.isParameterDeref(0) } - override predicate isFlowOutBarrier(FunctionInput input) { input.isParameterDeref([0, 1]) } + override predicate isFlowOutBarrier(FunctionInput input) { input.isParameterDeref(1) } } /** 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 1ca4957b529..eeefa6dd427 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 } From fb4bd53ec59538c1459128833589cfc8743c7742 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Fri, 9 Feb 2024 09:06:25 +0000 Subject: [PATCH 113/113] Revert "Merge pull request #15528 from MathiasVP/flow-barrier-interface" This reverts commit c5dc88345da959875365ca24801787e589c8ee79, reversing changes made to 781486172e46e677c2f2594dbadc35e0a94a1c9c. --- .../2024-02-06-flow-out-barrier-function.md | 4 --- .../cpp/ir/dataflow/internal/SsaInternals.qll | 25 +----------------- .../code/cpp/models/implementations/Swap.qll | 13 ++-------- .../cpp/models/interfaces/FlowOutBarrier.qll | 26 ------------------- .../dataflow/taint-tests/map.cpp | 16 ++++++------ .../dataflow/taint-tests/set.cpp | 8 +++--- .../dataflow/taint-tests/string.cpp | 4 +-- .../dataflow/taint-tests/stringstream.cpp | 4 +-- .../dataflow/taint-tests/vector.cpp | 4 +-- 9 files changed, 21 insertions(+), 83 deletions(-) delete mode 100644 cpp/ql/lib/change-notes/2024-02-06-flow-out-barrier-function.md delete mode 100644 cpp/ql/lib/semmle/code/cpp/models/interfaces/FlowOutBarrier.qll 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 70accc67d4c..00000000000 --- 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/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 7c2d92fee99..bd63da2ab98 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 @@ -797,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 ) 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 325fd6f58b2..446e659fac5 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(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 d25e4381dcc..00000000000 --- 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/library-tests/dataflow/taint-tests/map.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/map.cpp index 555f39779bf..8eeb80a0f83 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 7c906fb72d2..c6c19d90089 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 4f2c4afd6b0..e2b99945724 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 57310dfef6f..a84b3606f92 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/vector.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/vector.cpp index 14834e2a5e9..a26ac8f0513 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() {